Портировано.
См - svn://kolibrios.org/programs/develop/tinypy
Python для KolibriOS
-
- Attachments
-
-
tinypy-1.1.tar.gz (39.68 KiB)Downloaded 884 times
-
Last edited by XVilka on Sat Apr 09, 2011 7:22 pm, edited 1 time in total.
Не вижу больших сложностей в переносе оригинальной ветки, CPython. Но зачем?
..bw
..bw
по-моему как раз с основной веткой будут большие сложности - там очень много кода. Здесь весь код на си можно даже переписать используя замену вызовов libc и вывод команды gcc -masm=intel -S
Появились первые успехи в портировании TinyPy:
Из ввода-вывода пока только печать на консоль через console.obj (код подключения библиотеки скопирован из shell).
Пример программы:
print(greeting, ", KolibriOS!")
if __name__=="__main__":
my_func("Hello")
При запуске спрашивает имя .py-файла с программой. Из-за проблем с передачей параметров в libc напрямую передавать имя программы пока нельзя.
Всех интересующихся прошу потестировать.
: Нужно ли упаковывать 7zip-ом исполняемый файл, если он уже упакован kpack-ом, и 7zip делает его только больше?
Из ввода-вывода пока только печать на консоль через console.obj (код подключения библиотеки скопирован из shell).
Пример программы:
Spoiler:
def my_func(greeting):print(greeting, ", KolibriOS!")
if __name__=="__main__":
my_func("Hello")
Всех интересующихся прошу потестировать.
: Нужно ли упаковывать 7zip-ом исполняемый файл, если он уже упакован kpack-ом, и 7zip делает его только больше?
- Attachments
-
-
tinypy.7z (38.39 KiB)Downloaded 762 times
-
Хорошая работа! HelloKolibri запустился Желаю успехов в продолжении разработки!
7z действительно только увеличивает размер файла, но на форуме запрещено размещение файлов с некоторыми расширениями, а 1 кб разницы в размере - не так уж и важно, я считаю.
7z действительно только увеличивает размер файла, но на форуме запрещено размещение файлов с некоторыми расширениями, а 1 кб разницы в размере - не так уж и важно, я считаю.
Спасибо на добром слове
Насчёт продолжения разработки - надо определиться с направлением. Хочется реализовать хотя бы часть стандартной библиотеки, и тут есть 2 варианта:
а) сделать доступным из программы на TinyPy вызов системных функций Колибри, и всю обвязку делать на питоне.
Достоинства: сохраняется малый размер интерпретатора, легче добавлять новые библиотеки.
Недостатки: программы на питоне становятся небезопасными; "тяжёлые" приложения будут тормозить.
б) всю стандартную библиотеку писать на C (или даже FASM).
Достоинства: меньший объём на диске (скомпилированные TinyPy-модули много занимают); скорость работы приложений.
Недостатки: всё это будет компилиться внутрь интерпретатора, и он будет расти в размере, что не согласуется с названием tiny.
Насчёт продолжения разработки - надо определиться с направлением. Хочется реализовать хотя бы часть стандартной библиотеки, и тут есть 2 варианта:
а) сделать доступным из программы на TinyPy вызов системных функций Колибри, и всю обвязку делать на питоне.
Достоинства: сохраняется малый размер интерпретатора, легче добавлять новые библиотеки.
Недостатки: программы на питоне становятся небезопасными; "тяжёлые" приложения будут тормозить.
б) всю стандартную библиотеку писать на C (или даже FASM).
Достоинства: меньший объём на диске (скомпилированные TinyPy-модули много занимают); скорость работы приложений.
Недостатки: всё это будет компилиться внутрь интерпретатора, и он будет расти в размере, что не согласуется с названием tiny.
Я думаю золотая середина - самое то - "тяжелые" функции для оптимизации писать на си - а "легкие" на питоне
Залил исходники на svn://kolibrios.org/programs/develop/tinypy.
Пример модуля расширения на C в комплекте, на FASM будет чуть позже.
Пример модуля расширения на C в комплекте, на FASM будет чуть позже.
А как с модулями дела обстоят? Возможно ли собрать sys, zipfile и xml.dom.minidom? Тогда можно будет смотреть odt из Колибри с помощью odt2txt.py (можно затем перегонять markdown txt в html).
С модулями дела обстоят, можно сказать, никак. Для sys нужна системно-зависимая подложка, которую нужно писать отдельно на C или FASM. TinyPy не поддерживает многие возможности языка, так что даже модули, написанные только на Python, сходу не заработают.
В первоочередных планах - поддержка работы с файлами и модуль ctypes для использования имеющихся dll.
В первоочередных планах - поддержка работы с файлами и модуль ctypes для использования имеющихся dll.
Понимаю. Похожая история с lua (может быть, немного получше) - текущая сборка не поддерживает библиотеки, кроме стандартных. Все сторонние библиотеки, которые хочется использовать, нужно линковать статически с базовой.
И всё же, удачи
И всё же, удачи
Для добавления работы с XML - см. сюда viewtopic.php?f=24&t=1701
Для добавления работы с регулярными выражениями - см. сюда viewtopic.php?f=24&t=1700
Для добавления работы с регулярными выражениями - см. сюда viewtopic.php?f=24&t=1700
Почти разобрался, как писать к TinyPy модули на FASM. Уже есть пустой модуль, который только регистрируется, теперь учусь экспортировать функции. Процесс небыстрый, бо уж очень много хитростей в генераторе кода GCC.
Эх, вот бы ещё хоть одного питониста в проект...
XVilka, спасибо! Модуль re понадобится одним из первых, xml тоже будет нужен. Только их лучше бы сделать в виде dll-ек, чтоб использовать не только в питоне.
Эх, вот бы ещё хоть одного питониста в проект...
XVilka, спасибо! Модуль re понадобится одним из первых, xml тоже будет нужен. Только их лучше бы сделать в виде dll-ек, чтоб использовать не только в питоне.
Что-то не сообразил как собирать из сырцов, выложенных на свн. Кстати там файл mymain.c лишний
Нужно собрать menuetlibc и в Makefile в MENUETDEV записать путь к ней. После этого сказать "make", получится бинарник tpmain. В общем, всё как в руководстве diamond'а. Единственно - нужно использовать libc из svn-а, а не из архива, в архиве нет функции vsnprintf().
Файл mymain.c действительно лишний.
Файл mymain.c действительно лишний.
Who is online
Users browsing this forum: No registered users and 1 guest