Python для KolibriOS

...
  • Не вижу больших сложностей в переносе оригинальной ветки, CPython. Но зачем?

    ..bw
  • по-моему как раз с основной веткой будут большие сложности - там очень много кода. Здесь весь код на си можно даже переписать используя замену вызовов libc и вывод команды gcc -masm=intel -S
  • Появились первые успехи в портировании TinyPy:
    Из ввода-вывода пока только печать на консоль через console.obj (код подключения библиотеки скопирован из shell).

    Пример программы:
    Spoiler:def my_func(greeting):
    print(greeting, ", KolibriOS!")

    if __name__=="__main__":
    my_func("Hello")
    При запуске спрашивает имя .py-файла с программой. Из-за проблем с передачей параметров в libc напрямую передавать имя программы пока нельзя.
    Всех интересующихся прошу потестировать.

    : Нужно ли упаковывать 7zip-ом исполняемый файл, если он уже упакован kpack-ом, и 7zip делает его только больше?
    Attachments
    tinypy.7z (38.39 KiB)
    Downloaded 755 times
  • Хорошая работа! HelloKolibri запустился :) Желаю успехов в продолжении разработки!
    7z действительно только увеличивает размер файла, но на форуме запрещено размещение файлов с некоторыми расширениями, а 1 кб разницы в размере - не так уж и важно, я считаю.
  • Спасибо на добром слове :)

    Насчёт продолжения разработки - надо определиться с направлением. Хочется реализовать хотя бы часть стандартной библиотеки, и тут есть 2 варианта:

    а) сделать доступным из программы на TinyPy вызов системных функций Колибри, и всю обвязку делать на питоне.
    Достоинства: сохраняется малый размер интерпретатора, легче добавлять новые библиотеки.
    Недостатки: программы на питоне становятся небезопасными; "тяжёлые" приложения будут тормозить.

    б) всю стандартную библиотеку писать на C (или даже FASM).
    Достоинства: меньший объём на диске (скомпилированные TinyPy-модули много занимают); скорость работы приложений.
    Недостатки: всё это будет компилиться внутрь интерпретатора, и он будет расти в размере, что не согласуется с названием tiny.
  • Я думаю золотая середина - самое то - "тяжелые" функции для оптимизации писать на си - а "легкие" на питоне
  • Залил исходники на svn://kolibrios.org/programs/develop/tinypy.
    Пример модуля расширения на C в комплекте, на FASM будет чуть позже.
  • А как с модулями дела обстоят? Возможно ли собрать sys, zipfile и xml.dom.minidom? Тогда можно будет смотреть odt из Колибри с помощью odt2txt.py (можно затем перегонять markdown txt в html).
  • С модулями дела обстоят, можно сказать, никак. :( Для sys нужна системно-зависимая подложка, которую нужно писать отдельно на C или FASM. TinyPy не поддерживает многие возможности языка, так что даже модули, написанные только на Python, сходу не заработают.
    В первоочередных планах - поддержка работы с файлами и модуль ctypes для использования имеющихся dll.
  • Понимаю. Похожая история с lua (может быть, немного получше) - текущая сборка не поддерживает библиотеки, кроме стандартных. Все сторонние библиотеки, которые хочется использовать, нужно линковать статически с базовой.
    И всё же, удачи ;)
  • Для добавления работы с XML - см. сюда viewtopic.php?f=24&t=1701

    Для добавления работы с регулярными выражениями - см. сюда viewtopic.php?f=24&t=1700
  • Почти разобрался, как писать к TinyPy модули на FASM. Уже есть пустой модуль, который только регистрируется, теперь учусь экспортировать функции. Процесс небыстрый, бо уж очень много хитростей в генераторе кода GCC.
    Эх, вот бы ещё хоть одного питониста в проект...

    XVilka, спасибо! Модуль re понадобится одним из первых, xml тоже будет нужен. Только их лучше бы сделать в виде dll-ек, чтоб использовать не только в питоне.
  • Что-то не сообразил как собирать из сырцов, выложенных на свн. Кстати там файл mymain.c лишний
  • Нужно собрать menuetlibc и в Makefile в MENUETDEV записать путь к ней. После этого сказать "make", получится бинарник tpmain. В общем, всё как в руководстве diamond'а. Единственно - нужно использовать libc из svn-а, а не из архива, в архиве нет функции vsnprintf().
    Файл mymain.c действительно лишний.
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 2 guests