Пользователь
57,4
рейтинг
3 июня 2014 в 21:21

Разработка → Micro Python — эффективная реализация Python 3 для микроконтроллеров



Английский разработчик Дэмьен Джордж (Damien George) сегодня официально объявил о выпуске Micro Python — эффективной реализация Python 3 для встроенных систем с малым объёмом оперативной памяти. Разработка этой версии началась в декабре, после удачной кампании по сбору средств на выпуск Pyboard — контроллера, работающего на Питоне.

«Хотя у Python много привлекательных функций, но его текущие реализации (читай, CPython) не подходят для встроенных систем, таких как микроконтроллеры и маленькие системы на кристалле, — пишет Дэмьен Джордж. — Причина в том, что CPython использует ужасно много оперативной памяти — и для стека, и для кучи — даже в простых операциях вроде сложения целых чисел».

Micro Python — новая реализация языка программирования Python 3, которая должна быть правильно совместима с CPython, в то же время используя минимальное количество ОЗУ, компактный компилятор и высокую производительность в среде выполнения.

Джордж объясняет, что добиться этого удалось за счёт нескольких трюков с указателями и оптимизацией кода. В результате, Micro Python поддерживает почти весь синтаксис Python 3.4 (работа ещё продолжается), а большинство скриптов занимают гораздо меньше ОЗУ и выполняются заметно быстрее, по сравнению с CPython.

Минимальный билд под ARM умещается в 80k, а со всеми функциями под Linux — в 200k. Базовая REPL-среда требует всего 2 килобайта ОЗУ.

Дополнительно, в Micro Python встроены два режима AOT-компиляции в нативный код, есть встроенный ассемблер для написания критичных ко времени приложений на микроконтроллере.

Реализация написана на C99 ANSI C и нормально компилируется под Unix (POSIX), Mac OS X, Windows и некоторых ARM-микроконтроллерах.
Анатолий Ализар @alizar
карма
751,5
рейтинг 57,4
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (33)

  • +1
    Интересно, а появятся ли когда-нибудь чипы с железной поддержкой пайтона? Вот мечта ведь, а? :)

    И, ведь уже создан чип под язык, верно? Только не помню, под какой. Недавно было сообщение.
    • 0
      Предположу, что речь идёт о tessel.
      • 0
        Tessel is programmed in JavaScript, which automatically compiles to Lua when you run code on Tessel.

        Так что никакой «железной» поддержки JS.
        • +8
          JavaScript, which automatically compiles to Lua when you run code on Tessel.

          Простите, не удержался
          image
      • 0
        Не, другой.
    • +4
      Под lisp. =)
    • +2
      Эльбрус заточен под языки высокого уровня.
    • +1
      Из популярных — Forth-процессоры (один я даже щупал лет 20 назад) и Java-процессоры…
    • +2
      Из близкого вспоминается Jazelle для Java.
    • +3
      Для Brainfuck есть, и далеко даже не один.
      Скрытый текст
      image


      Тьфу, из-за исчезновения подчёркивания у ссылок стало неудобно приводить несколько ссылок пачкой, пришлось для понятности впихнуть слово «даже». Дизайнеры, зачем вы?
  • 0
    Интересно, это всё ещё виртуальная машина, или уже комплятор в нативный код?
    • +2
      Автор пишет, что при помощи декоратора функции можно выбирать, будет ли она скомпилирована в машинный код или в байт код.
      • –2
        Чисто технически интересно, как такая куча из компилированных и интерпретируемых кусков поведет себя в рантайме.
        • +1
          Ничего интересного. Для CPython уже давно есть такие декораторы (к примеру, pylibgit), да и значительная (но не бо́льшая) часть популярных библиотек (к примеру, numpy) полностью или частично написаны на компилируемом C или предоставляют доступ (к примеру, PySide/PyQt) к библиотекам на C/C++.
  • –4
    >>>Python 3
    Господи, судя по всему, даже на микроконтроллере придётся работать с Юникодом вместо ASCII-строк =(
    • 0
      No unicode support is actually implemented.
  • +4
    выполняются заметно быстрее, по сравнению с CPython

    Интересно, речь только про работу в весьма ограниченных условиях Pyboard, или же на других платформах есть аналогичное увеличение производительности?
  • –10
    Ужас-то какой! Вы еще жабку запихайте в микроконтроллеры, а потом «удивляйтесь», с чего это автомобиль полчаса думает, прежде чем какое-нибудь действие совершить, да и не разгоняется выше 10км/ч…

    И да, уж хрюникод русскому человеку точно не нужен! И на микроконтроллерах этой азиатской кодировке нет места!!!
  • 0
    Ребят, подскажите пожалуйста, что это за плата на main рисунке?
  • +5
    Мне кажется, что легкий Питон был бы актуален и для персоналок с серверами. А то уж очень много жрет.
  • 0
    Был же проект по созданию embedded-python под названием p14p, только, похоже, протух. По-крайней мере, крайние новости на сайте проекта p14p датируются 2001 годом.
    • +1
      В GPS\GSM модулях Telit есть встроенный питон.
  • 0
    Не знаю, взлетит ли проект именно на микроконтроллерах, но это точно очень неплохой задел для оптимизации «большого» питона.
    • 0
      Так именно как проект он уже взлетел, денег собрали с лихвой, уже рассылают платы вовсю. Я вот свою жду пока
  • 0
    Минимальный билд под ARM умещается в 80k

    Ого! MRuby требует в 3 раза больше! Неплохо.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.