Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Jun 26, 2019 1:18 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 124 posts ]  Go to page 1 2 3 4 59 Next
Author Message
 Post subject: Python для KolibriOS
PostPosted: Fri Jan 21, 2011 10:02 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Портировано.

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


Attachments:
tinypy-1.1.tar.gz [39.68 KiB]
Downloaded 386 times


Last edited by XVilka on Sat Apr 09, 2011 7:22 pm, edited 1 time in total.
Top
   
PostPosted: Fri Jan 21, 2011 3:38 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
Не вижу больших сложностей в переносе оригинальной ветки, CPython. Но зачем?

..bw


Top
   
PostPosted: Fri Jan 21, 2011 10:37 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
по-моему как раз с основной веткой будут большие сложности - там очень много кода. Здесь весь код на си можно даже переписать используя замену вызовов libc и вывод команды gcc -masm=intel -S


Top
   
PostPosted: Sun Mar 13, 2011 1:06 am 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
Появились первые успехи в портировании TinyPy:
Из ввода-вывода пока только печать на консоль через console.obj (код подключения библиотеки скопирован из shell).

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

if __name__=="__main__":
my_func("Hello")


При запуске спрашивает имя .py-файла с программой. Из-за проблем с передачей параметров в libc напрямую передавать имя программы пока нельзя.
Всех интересующихся прошу потестировать.

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


Attachments:
tinypy.7z [38.39 KiB]
Downloaded 263 times
Top
   
PostPosted: Sun Mar 13, 2011 9:50 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Хорошая работа! HelloKolibri запустился :) Желаю успехов в продолжении разработки!
7z действительно только увеличивает размер файла, но на форуме запрещено размещение файлов с некоторыми расширениями, а 1 кб разницы в размере - не так уж и важно, я считаю.


Top
   
PostPosted: Tue Mar 15, 2011 10:45 pm 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
Спасибо на добром слове :)

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

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

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


Top
   
PostPosted: Sat Mar 19, 2011 12:09 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Я думаю золотая середина - самое то - "тяжелые" функции для оптимизации писать на си - а "легкие" на питоне


Top
   
PostPosted: Thu Mar 31, 2011 1:14 pm 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
Залил исходники на svn://kolibrios.org/programs/develop/tinypy.
Пример модуля расширения на C в комплекте, на FASM будет чуть позже.


Top
   
PostPosted: Thu Mar 31, 2011 8:29 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
А как с модулями дела обстоят? Возможно ли собрать sys, zipfile и xml.dom.minidom? Тогда можно будет смотреть odt из Колибри с помощью odt2txt.py (можно затем перегонять markdown txt в html).


Top
   
PostPosted: Thu Mar 31, 2011 9:39 pm 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
С модулями дела обстоят, можно сказать, никак. :( Для sys нужна системно-зависимая подложка, которую нужно писать отдельно на C или FASM. TinyPy не поддерживает многие возможности языка, так что даже модули, написанные только на Python, сходу не заработают.
В первоочередных планах - поддержка работы с файлами и модуль ctypes для использования имеющихся dll.


Top
   
PostPosted: Thu Mar 31, 2011 11:18 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Понимаю. Похожая история с lua (может быть, немного получше) - текущая сборка не поддерживает библиотеки, кроме стандартных. Все сторонние библиотеки, которые хочется использовать, нужно линковать статически с базовой.
И всё же, удачи ;)


Top
   
PostPosted: Sat Apr 09, 2011 2:10 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Для добавления работы с XML - см. сюда viewtopic.php?f=24&t=1701

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


Top
   
PostPosted: Sun Apr 10, 2011 10:51 pm 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
Почти разобрался, как писать к TinyPy модули на FASM. Уже есть пустой модуль, который только регистрируется, теперь учусь экспортировать функции. Процесс небыстрый, бо уж очень много хитростей в генераторе кода GCC.
Эх, вот бы ещё хоть одного питониста в проект...

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


Top
   
PostPosted: Sun Apr 17, 2011 1:09 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Что-то не сообразил как собирать из сырцов, выложенных на свн. Кстати там файл mymain.c лишний


Top
   
PostPosted: Sun Apr 17, 2011 10:10 pm 
Offline
User avatar

Joined: Wed Aug 18, 2010 5:38 pm
Posts: 102
Нужно собрать menuetlibc и в Makefile в MENUETDEV записать путь к ней. После этого сказать "make", получится бинарник tpmain. В общем, всё как в руководстве diamond'а. Единственно - нужно использовать libc из svn-а, а не из архива, в архиве нет функции vsnprintf().
Файл mymain.c действительно лишний.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 124 posts ]  Go to page 1 2 3 4 59 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited