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-микроконтроллерах.
    Метки:
    Поделиться публикацией
    Комментарии 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 раза больше! Неплохо.

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