Board.KolibriOS.org

Official KolibriOS board
It is currently Tue May 21, 2019 1:54 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 88 posts ]  Go to page Previous 1 2 3 4 5 6 Next
Author Message
 Post subject: Re: Порт LUA
PostPosted: Tue May 10, 2011 8:54 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
думаю, достаточно реализовать всего лишь одну доступную для пользователя функцию - что-то вроде lib_load, на вход которой подаётся имя библиотеки, а возвращать она будет таблицу функций (которые на самом деле-то являются указателями на определённый код, так что ничего сложного не должно быть). но вот как из lua такие функции вызывать - вопрос, не знаю проверяет ли интерпретатор количество и тип параметров... и насчёт передачи параметров - думаю, lua использует stdcall, так что надо и это учесть.

насчёт кода импорта функций из динамических библиотек:
http://redmine.kolibrios.org/projects/k ... /kolibri.c
строки 235-285


Top
   
 Post subject: Re: Порт LUA
PostPosted: Tue May 10, 2011 10:38 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
У луа своя система вызовов.Я посмотрю на код разных библиотек и подумаю,что с ним делать.А еще посмотрю на код поддержки библиотек в самой луа.Но займусь этим не скоро.Еще много работы над шрифтами


Top
   
 Post subject: Re: Порт LUA
PostPosted: Tue May 10, 2011 12:52 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Eruman wrote:
Для новичков:
Пока вопросы копятся. Запустил Lua, пример с таблицей вылетает с символом #, только номер строки другой. Стал исключать строки для поиска ошибки.
Еще непонятно, скармливаю выражение :
i[1] = 1
Прога вылетает без сообщений об ошибке на доске. Так и должно быть?


1) Баг повторить не удается. Оба варианта у меня работают замечательно с рамдрайва на ядре 1739, и на том же ядре не работают нормально с жесткого диска (так и должно быть). С новым ядром работает отовсюду. Может, дело в какой-то ошибке файловой системы?

2) У меня выводится сообщение об ошибке на доску. В lua нужно инициализировать таблицы. Вот так:
Code:
i={}
i[1]=1


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Jul 20, 2011 11:37 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Есть какие-либо новости в работе над Lua?


Top
   
 Post subject: Re: Порт LUA
PostPosted: Wed Jul 20, 2011 11:52 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Возможно скоро сделаю луа 5.2b8 или какой там последний.Что делать с библиотеками-так и не придумал.Заявок на перенос функций системы в стандартную библиотеку не поступало.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Jul 21, 2011 10:40 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Jul 21, 2011 10:57 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
XVilka wrote:
может сделать модуль kolibri. ?
например kolibri.window_new(x, y, height, width) ?

Пробовал. Разницы никакой. Если посмотреть на разные расширения для lua, то добавление системных функций в основную библиотеку - обычная практика.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Thu Jul 21, 2011 11:16 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
А по поводу обертки - возможно загружать динамически функции в луа. см. C API - просто пропихивать в стек имена функции и указатели на них, а также параметры


Last edited by XVilka on Fri Jul 22, 2011 12:53 am, edited 1 time in total.

Top
   
 Post subject: Re: Порт LUA
PostPosted: Fri Jul 22, 2011 12:37 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Блин, точно ведь. Как сразу до меня не дошло :(
Сложновато будет с типами данных только.


Top
   
 Post subject: Re: Порт LUA
PostPosted: Sat Nov 19, 2011 1:55 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
по поводу динамической загрузки библиотек - советую посмотреть в сторону luaffi или libffi http://luajit.org/ext_ffi.html


Top
   
 Post subject: Re: Порт LUA
PostPosted: Mon Dec 19, 2011 10:30 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Lua 5.2.0
Теперь официально.

Добавлены команды ввода-вывода через консоль:
Code:
copen() - открыть окно консоли
cclose() - закрыть окно консоли
cprintf() - вывести на экран что-нибудь
cgets() - считать строку с клавиатуры


Пример программы:
Code:
copen()
cprintf("Hello! What is your name?\n")
name=cgets()
cprintf("Nice to meet you, ",name,"!\n")
a=3
b=2
c=a+b
cprintf("I know: a+b=",c,"\n")
cclose()


Attachments:
lua-5.2.0.7z [96.92 KiB]
Downloaded 271 times
Top
   
 Post subject: Re: Порт LUA (5.2.0)
PostPosted: Sun Apr 08, 2012 9:49 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Лучше перенести эти команды в в модуль "console" или "os" или подобное, так будет больше совместимости и идеологически правильнее.


Top
   
 Post subject: Re: Порт LUA (5.2.0)
PostPosted: Sun Apr 08, 2012 10:09 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Когда я это делал, я вообще не представлял, как модули делать. Сейчас чуть лучше представляю. Так что возможно вообще уберу эти функции и добавлю нормальный вызов библиотек и ассемблерных вставок (о_О, да!)


Top
   
 Post subject: Re: Порт LUA (5.2.0)
PostPosted: Thu Apr 12, 2012 8:49 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
Еще очень полезный модуль есть - lpreg (содержит также модуль re), для работы с паттернами и подобием регулярных выражений, написан на си, можно включить в сборку для колибри


Top
   
 Post subject: Re: Порт LUA (5.2.0)
PostPosted: Thu Dec 13, 2012 7:42 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Вроде я уже выкладывал - не нашел. В архиве исходники и скрипт для сборки compile.sh.


Attachments:
lua-5.2.0-src.7z [497.53 KiB]
Downloaded 203 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 88 posts ]  Go to page Previous 1 2 3 4 5 6 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


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:  
cron
Powered by phpBB® Forum Software © phpBB Limited