Скриптовый движок на Ruby — новая версия

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 05.06.2013 22:18:14

Старую тему см. тут — http://freepascal.ru/forum/viewtopic.php?f=10&t=6559

Поскольку совместимость с Ruby 1.9 требовала большой переработки, я решил переписать и вовсе все заново, API модулей полностью изменен и стал объектно-ориентированным :)
Свежая версия здесь — https://github.com/shikhalev/ppruby
Документация пока не написана, зато есть вменяемая демка.

Поддерживаются, как и раньше, published-свойства и вручную добавляемые public- свойства и методы, список которых будет пополняться. Совершенно новая возможность — задание в Ruby обработчиков событий Pascal-объетов. Пока только типа TNotifyEvent, но лиха беда начало — механизм легко расширяемый.

Старую версию можно найти здесь — https://github.com/shikhalev/ppruby/tree/v0.9
Активно поддерживать я ее не буду, но если кто-то будет присылать вменяемые патчи — могу и добавить. Хотя лучше переписать на новую версию.

Протестировано на Ruby 1.8.7 и 1.9.3 под x86-64. FPC 2.6.0, Lazarus 1.1 (trunk).

Добавлено спустя 4 минуты 26 секунд:
PS. Это по-прежнему крайне сырая версия, которая точно будет меняться.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение kipar » 13.09.2013 21:38:09

После убирания свойства StrikeOutPriority из файла формы и переименования msvcrt-ruby19.dll в msvcrt-ruby191.dll демопроект стал просто вылетать с SIGSEGV.
Система - Win7x64, Lazarus релиз 1.0.12 c оффсайта (х32 версия, т.к. х64 вообще не грузит ruby-библиотеку), Ruby 1.9.3. Счас еще на Ruby 2.0 попробую.
----
Да, с Ruby 2.0 та же фигня. Вылетает на строчке 916 Ruby.pas (rb_require('set'); )
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 29.09.2013 11:47:57

На 1.9.3 на той же строчке вылетает?
(на 2.0 пока и у меня не работает)
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение kipar » 30.09.2013 23:16:47

Да. Я проверил старую версию байндингов - тоже не заработали.
Видимо дело в фпц 2.6.0. Но с fpc из night build у меня не собирается лазарус, так что проверить не получилось.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 02.10.2013 07:35:03

Постараюсь на днях посмотреть... Пока со временем не очень.
А если попробовать заменить все cdecl на stdcall?..

Добавлено спустя 57 секунд:
ЗЫ. Еще вопрос: а что, Ruby для Win64 не установлен?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение kipar » 02.10.2013 22:52:52

Если заменить на stdcall (ну, две оставил cdecl, т.к. там varargs и он не совместим с stdcall) - вылетает раньше, на выходе из EvalString. Так что наверное cdecl.
Ruby x64... хм, попробую.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 09.10.2013 12:17:59

Так, на Win32 баг воспроизводится... Подозреваю, что дело в строках, буду проверять...

Добавлено спустя 17 часов 13 минут 27 секунд:
Хм. Чертовщина какая-то...
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 29.10.2013 20:50:50

Под Lin32 та же фигня... Буду копать.

Добавлено спустя 5 часов 39 минут 47 секунд:
Уфф... Нашел (и исправил) в трех местах забытый cdecl. Теперь работает 1.9 на Lin32. А вот на Win32 таки 1.9 падает на require... А 1.8 работает...

Добавлено спустя 2 часа 24 минуты 58 секунд:
Fixed!

Кратко:
а) в 1.9 инициализация требует дополнительных телодвижений.
б) они играют роль только под виндой.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение kipar » 03.12.2013 01:07:57

Класс, все работает, правдадемо-приложение в винде (win7x64, ruby 1.9.3 и 2.0 x86) при закрытии выдает бесконечный поток Access Violation, но мне это пока не критично, и на других машинах не проверял, может дело в моей версии fpc\lazarus.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54

Re: Скриптовый движок на Ruby — новая версия

Сообщение Иван Шихалев » 04.12.2013 04:09:43

При закрытии с предварительным отключением Ruby, или без?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Скриптовый движок на Ruby — новая версия

Сообщение kipar » 04.12.2013 12:57:45

И так и так.
Вот если совсем не открывать руби а сразу выйти - то все ок. Если закрывать программу кнопкой останова в lazarus - тоже ок. mayReset тоже пробовал закомментить - не влияет. Ну и да, на рабочем компе тоже самое. fpc 2.6.2, lazarus 1.1.99pre.
kipar
новенький
 
Сообщения: 78
Зарегистрирован: 04.03.2010 12:15:54


Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru