Page 1 of 9

Python для KolibriOS

Posted: Fri Jan 21, 2011 10:02 am
by XVilka
Портировано.

См - svn://kolibrios.org/programs/develop/tinypy

Re: Python для KolibriOS

Posted: Fri Jan 21, 2011 3:38 pm
by bw
Не вижу больших сложностей в переносе оригинальной ветки, CPython. Но зачем?

..bw

Re: Python для KolibriOS

Posted: Fri Jan 21, 2011 10:37 pm
by XVilka
по-моему как раз с основной веткой будут большие сложности - там очень много кода. Здесь весь код на си можно даже переписать используя замену вызовов libc и вывод команды gcc -masm=intel -S

Re: Python для KolibriOS

Posted: Sun Mar 13, 2011 1:06 am
by Jaeger
Появились первые успехи в портировании TinyPy:
Из ввода-вывода пока только печать на консоль через console.obj (код подключения библиотеки скопирован из shell).

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

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

: Нужно ли упаковывать 7zip-ом исполняемый файл, если он уже упакован kpack-ом, и 7zip делает его только больше?

Re: Python для KolibriOS

Posted: Sun Mar 13, 2011 9:50 am
by SoUrcerer
Хорошая работа! HelloKolibri запустился :) Желаю успехов в продолжении разработки!
7z действительно только увеличивает размер файла, но на форуме запрещено размещение файлов с некоторыми расширениями, а 1 кб разницы в размере - не так уж и важно, я считаю.

Re: Python для KolibriOS

Posted: Tue Mar 15, 2011 10:45 pm
by Jaeger
Спасибо на добром слове :)

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

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

б) всю стандартную библиотеку писать на C (или даже FASM).
Достоинства: меньший объём на диске (скомпилированные TinyPy-модули много занимают); скорость работы приложений.
Недостатки: всё это будет компилиться внутрь интерпретатора, и он будет расти в размере, что не согласуется с названием tiny.

Re: Python для KolibriOS

Posted: Sat Mar 19, 2011 12:09 am
by XVilka
Я думаю золотая середина - самое то - "тяжелые" функции для оптимизации писать на си - а "легкие" на питоне

Re: Python для KolibriOS

Posted: Thu Mar 31, 2011 1:14 pm
by Jaeger
Залил исходники на svn://kolibrios.org/programs/develop/tinypy.
Пример модуля расширения на C в комплекте, на FASM будет чуть позже.

Re: Python для KolibriOS

Posted: Thu Mar 31, 2011 8:29 pm
by SoUrcerer
А как с модулями дела обстоят? Возможно ли собрать sys, zipfile и xml.dom.minidom? Тогда можно будет смотреть odt из Колибри с помощью odt2txt.py (можно затем перегонять markdown txt в html).

Re: Python для KolibriOS

Posted: Thu Mar 31, 2011 9:39 pm
by Jaeger
С модулями дела обстоят, можно сказать, никак. :( Для sys нужна системно-зависимая подложка, которую нужно писать отдельно на C или FASM. TinyPy не поддерживает многие возможности языка, так что даже модули, написанные только на Python, сходу не заработают.
В первоочередных планах - поддержка работы с файлами и модуль ctypes для использования имеющихся dll.

Re: Python для KolibriOS

Posted: Thu Mar 31, 2011 11:18 pm
by SoUrcerer
Понимаю. Похожая история с lua (может быть, немного получше) - текущая сборка не поддерживает библиотеки, кроме стандартных. Все сторонние библиотеки, которые хочется использовать, нужно линковать статически с базовой.
И всё же, удачи ;)

Re: Python для KolibriOS

Posted: Sat Apr 09, 2011 2:10 pm
by XVilka
Для добавления работы с XML - см. сюда viewtopic.php?f=24&t=1701

Для добавления работы с регулярными выражениями - см. сюда viewtopic.php?f=24&t=1700

Re: Python для KolibriOS

Posted: Sun Apr 10, 2011 10:51 pm
by Jaeger
Почти разобрался, как писать к TinyPy модули на FASM. Уже есть пустой модуль, который только регистрируется, теперь учусь экспортировать функции. Процесс небыстрый, бо уж очень много хитростей в генераторе кода GCC.
Эх, вот бы ещё хоть одного питониста в проект...

XVilka, спасибо! Модуль re понадобится одним из первых, xml тоже будет нужен. Только их лучше бы сделать в виде dll-ек, чтоб использовать не только в питоне.

Re: Python для KolibriOS

Posted: Sun Apr 17, 2011 1:09 pm
by XVilka
Что-то не сообразил как собирать из сырцов, выложенных на свн. Кстати там файл mymain.c лишний

Re: Python для KolibriOS

Posted: Sun Apr 17, 2011 10:10 pm
by Jaeger
Нужно собрать menuetlibc и в Makefile в MENUETDEV записать путь к ней. После этого сказать "make", получится бинарник tpmain. В общем, всё как в руководстве diamond'а. Единственно - нужно использовать libc из svn-а, а не из архива, в архиве нет функции vsnprintf().
Файл mymain.c действительно лишний.