OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 24 Апрель, 2019 13:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 01 Октябрь, 2010 18:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Написал прототип компонента для вызова процедур посредством динамической загрузки модулей - в некотором роде аналог привычных многим исполняемых файлов C/C++, у которых есть процедура main с параметрами командной строки argc, argv.

Это своего рода аналог майкрософтовского RunDll32, который умеет вызывать процедуры из библиотек. Для вызова процедур не требуется наличие BlackBox, нужен лишь загрузчик этих модулей. А далее за работу отвечает загруженный компонент, как типичная исполняемая программа.

В исполняемом модуле (например, TestExeModule) мы объявляем для экспорта процедуру main, в которую извне будут передаваться аргументы для программы.

В состав загрузчика входит компонент, скомпонованный в библиотеку bbldr[.dll/.so]. Для его работы необходима подсистема System (подсистема Host уже скомпонована внутри библиотеки) и подсистемы для вызова исполняемого модуля (допустим, TestExeModule), то есть файлы .ocf и .osf.

Код:
DEFINITION LibsModLoader ["bbldr"];

   IMPORT Dynamics;

   TYPE
      TLoaderError = POINTER TO RECORD
         n-: INTEGER;
         msg-, par0-, par1-: Dynamics.String
      END;

   PROCEDURE GetLoaderError (OUT e: TLoaderError);
   PROCEDURE InitLoaderError (p: TLoaderError);
   PROCEDURE Run (_module, _proc: Dynamics.String; argc: INTEGER; argv: Dynamics.ArgList);

END LibsModLoader.


Эту библиотеку подгружает вспомогательная программа, которая принимает параметры командной строки и передаёт их исполняемому модулю.

В командной строке запуск производится командой:
Код:
loader_program <Module_Name> <Procedure_Name> [arguments]

На данный момент вспомогательная программа написана на Free Pascal (FPC). Планирую написать её на Обероне-2 посредством какого-нибудь из межплатформных компиляторов.
Здесь нужны ваши советы насчёт выбора. Требование: создание исполняемых файлов для платформы x86, OS Windows, Linux. Взять ли XDS или есть варианты лучше?
Текущим ограничением в запуске модулей является поддержка одной платформы x86, ОС Windows (NT/2000/XP) с форматами EXE/DLL и Linux с форматом библиотеки so (открытой поддержки исполняемых ELF пока нет). Считаю, что интеграция КП-модулей в родные ОС важна. Иначе общего признания не добиться.

Я вижу данный инстумент как частичную замену среды BlackBox для динамического запуска модулей.
В итоге хотелось бы иметь компактный и расширяемый framework, подобный .NET, на основе Компонентного Паскаля с набором подсистем универсального назначения, включая работу с БД, сетью и пользовательским интерфейсом (GUI/TUI). Также хотелось бы добиться распространения на разных аппаратных платформах, и, возможно, с упором на встраиваемые системы...

Каковы, на ваш взгляд, перспективы такого средства в Linux? В Windows? Вообще?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Пятница, 05 Ноябрь, 2010 20:49 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2297
Рома, мне нравиться твоя идея. Начать с динамической загрузки модулей а там и до каркаса добраться понемногу можно.

Для линукса нужно будет сделать репозиторий с пакетами deb на сайте oberoncore.ru и просто скачивать их менеджером пакетов, как это сделано для питона и php. Там и контроль версий хороший для пакетов deb сделан уже!!!

Я пробовал использовать Оксфордский компилятор для Linux, он работает точно и в нем есть поддержка DLL и SO, вроде, тоже была. Получаются бинарники .ELF, то есть полноценные Linux приложения. Так что можешь на нем попробовать собрать компилятор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Суббота, 06 Ноябрь, 2010 11:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8057
Откуда: Троицк, Москва
Не понял, почему нельзя просто так модули грузить, безо всякого main.
ТРАП показывает $$ про раздел инициализации или что-то в этом роде.
То есть некое внутреннее имя как бы уже есть.
Вы хотите, в сущности, его заменить на main?
Мне не нравится слово main, какие-то ненужные ассоциации.
------
Что значит, без Блэкбокса. Без графики? Так это и так можно.

(Четто не понимаю. Наверное, мозг расслабился на праздниках.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 13:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
divan, спасибо за ссылку. Но речь не о сборке компилятора, а о сборке программы для выполнения команд модулей (так будет точнее по понятиям Оберона).
Исполняемость нужна для того, чтобы эта программа могла запускаться в родной ОС (так же, как запускается blackbox.exe) и выполнять команды из указанных модулей (так же, как запускает их blackbox.exe). Но не подгружая для этого OS-native GUI.
Loader (frontend) пишу на XDS, а библиотека libBBox (backend) уже скомпонована с помощью BlackBox.

Вложение:
libBBox.png
libBBox.png [ 38.47 КБ | Просмотров: 6311 ]


Info21 писал(а):
Не понял, почему нельзя просто так модули грузить, безо всякого main.
ТРАП показывает $$ про раздел инициализации или что-то в этом роде.
То есть некое внутреннее имя как бы уже есть.
Вы хотите, в сущности, его заменить на main?
Мне не нравится слово main, какие-то ненужные ассоциации.
------
Что значит, без Блэкбокса. Без графики? Так это и так можно.

(Четто не понимаю. Наверное, мозг расслабился на праздниках.)

Да, без графики. См. выше диаграмму вызова.
Слово main можно поменять на Run или Do.

P.S.
Я и не сразу заметил то, что проявили интерес к моей теме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Воскресенье, 07 Ноябрь, 2010 14:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8057
Откуда: Троицк, Москва
Признаюсь, запутался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Среда, 10 Ноябрь, 2010 18:03 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Разместил в SVN код Fwk (Lite BlackBox Framework) проекта CP-Dev (который Component Pascal compiler, консольный). Налаживаю передачу параметров argc, argv, а с загрузкой без них уже всё завершено. На Linux/Win32.
В дальнейшем Fwk послужит для обеих целей: для динамического вызова команд с консоли и для использования каркаса консольным компилятором на поддерживаемых платформах.

Приветствуется помощь в доработке Fwk:
  1. Требуется перенести Hosts на Linux. Для этого нужно написать заглушки в реализации (implementation) абстрактных модулей каркаса.
  2. Требуется помощь в доработке бэк-энда (CDev) & фронт-энда (CPcc). Пока прогресс остановлен по причине зависимости от поддерживаемых платформ каркаса (то есть для Линукса только начато).
  3. Тестировать консольный компилятор и оставлять свои отзывы о нём, чтобы улучшить его работу.

Кто хочет помочь - обращайтесь ко мне (через страничку Support на CP-Dev). Так дело пойдёт быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Понедельник, 29 Ноябрь, 2010 13:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Наконец-то наладил передачу параметров через вызов команд. Уже работает в Win32!

С помощью вызова в консоли "testldr.exe TestExeModule Do 123" запустился модуль TestExeModule с заданным параметром "123".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Суббота, 03 Март, 2012 08:47 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 661
Откуда: СССР
Уважаемый Роман.

В каком состоянии сейчас этот Ваш проект?
Есть ли возможность в Линуксе консольно запускать не включенные в .so
модули?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: libBBox и расширяемый framework
СообщениеДобавлено: Суббота, 03 Март, 2012 19:32 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Kubanych писал(а):
Уважаемый Роман.

В каком состоянии сейчас этот Ваш проект?
Есть ли возможность в Линуксе консольно запускать не включенные в .so
модули?
Проектом я его не назову. Так, маленький инструмент - консольный пускач команд, аналогичный вызову команд мышкой из среды BlackBox по значку !.

Если в среде ББ запускаем так:
Код:
!MyModule.Run

то с помощью консольного пускача
Код:
testldr MyModule Run <параметры>


Разработка находится в замороженном состоянии со времени предыдущего сообщения. С тех пор прошло уже более года. Насколько я помню, достиг стабильного запуска команд пускача с передачей параметров через командную строку в ОС Windows. Что вышло с Linux не могу вспомнить. Была, наверно, какая-то заморочка и зависимость от чего-то другого.
Чтобы сказать поточнее, нужно заново покопаться. Так что постараюсь дать ответ в ближайшие дни.

По крайней мере, этот экспериментальный интсрумент точно не подойдёт на этом этапе для запуска в режиме полной нагрузки - его ещё нужно отладить и "отшлифовать". Тем более, ещё потребуется наладить корректную инициализацию модуля Kernel, без которой сборщик мусора рушится. Хотя, это уже технический нюанс.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB