OberonCore https://forum.oberoncore.ru/ |
|
Перевод BlackBox под Linux https://forum.oberoncore.ru/viewtopic.php?f=34&t=1280 |
Страница 12 из 15 |
Автор: | Сергей Оборотов [ Понедельник, 02 Ноябрь, 2009 00:14 ] |
Заголовок сообщения: | Re: Компиляция в Linux |
Info21 писал(а): Евгений Темиргалеев писал(а): Дружно кидаем скалу в огород макросов. Много мелких камней лучше, чем один большой |
Автор: | Димыч [ Вторник, 03 Ноябрь, 2009 19:04 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Описание компиляции текстовых файлов в ББ под Linux доступно в списке рассылки. |
Автор: | Димыч [ Четверг, 19 Ноябрь, 2009 18:45 ] | ||
Заголовок сообщения: | wxWidgets | ||
Мне удалось запустить приложение, написанное на Oberon-2 (XDS) в связке с wxWidgets. Вот код: Код: <* +MAIN *> <* +O2EXTENSIONS *> MODULE Test; IMPORT wx := wxc, T := wxTypes; VAR cl: wx.wxClosure; buffer: T.StrBuffer; PROCEDURE ["C"] AppInit(fun, data, evt: T.VoidPTR); VAR wnd: wx.wxFrame; z: ARRAY 20 OF CHAR; i: INTEGER; BEGIN (* suppress warnings *) IF fun = NIL THEN END; IF data = NIL THEN END; IF evt = NIL THEN END; (* suppress warnings *) (* заголовок - строка в Юникоде *) z := 'Hello, world!'; NEW(buffer, LEN(z)); i := 0; WHILE i < LEN(z) DO buffer^[i] := ORD(z[i]); INC(i); END; (* Создние фрейма *) wnd := wx.wxFrame_Create(NIL, -1, wx.wxString_Create(buffer), -1, -1, -1, -1, wx.wxDEFAULT_FRAME_STYLE); (* Демонстрация фрейма*) wx.ELJApp_SetTopWindow(wnd); wx.wxWindow_Show(wnd); END AppInit; BEGIN (* Инициализация приложения *) cl := wx.wxClosure_Create(AppInit, NIL); wx.ELJApp_InitializeC(cl, 0, NIL); END Test. Оно еще не красиво, нет объектной обвязки, но оно работает! На Линукс еще не проверял, но абсолютно уверен, что это будет работать и там. Подробности в списке рассылки.
|
Автор: | Роман М. [ Пятница, 22 Январь, 2010 19:35 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Мне кажется, что нужен промежуточный этап: создание кроссплатформенного дистрибутива BlackBox. Если не отвязаться от WinAPI, то BlackBox для Linux на свет не появится. Даже подсистема Dev зависима от подсистемы Win. Вывод: абстракция компонентов ББ недостатоточна для отвязки от платформы Windows. Мне кажется, что если целиться на будущее, то стоит выбирать платформу .NET/Mono. Есть даже порт wxWidgets для .NET (правда, документации мало). Таким образом, можно будет запускать программу на любой ОС с платформой .NET/Mono без перекомпиляции BlackBox. |
Автор: | Сергей Губанов [ Суббота, 23 Январь, 2010 00:58 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Роман М. писал(а): Мне кажется, что если целиться на будущее, то стоит выбирать платформу .NET/Mono. Рантайм система Оберонов (и Блэкбокса в частности) не может быть эфективно реализована на платформе .Net, поскольку в платформе .Net в отличие от оберонов структуры нерасширяемы, массивы не являются value-type, сборки невыгружаемы. Ещё проверка типов в .Net не очень эффективная (в 5-6 раз медленнее чем в оберонах), то есть паттерн generic-message-bus там несколько кривоватым будет. |
Автор: | Роман М. [ Четверг, 25 Февраль, 2010 16:13 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
http://forum.oberoncore.ru/viewtopic.php?f=28&p=43498#p43498 Иван Горячев писал(а): Цитата: 1. Так получилось, что я занимаюсь как раз консольным компилятором, с прицелом на использование в Линуксе (да и, вообще, систем, понимающих ELF). Конкретно: переписываю DevElfLinker, чтобы "отучился" от StdLog, подсистемы Text и других зависимостей, пытаясь абстрагировать от операций вывода. По большому счёту, для консольного компилятора в Win32 всё готово - осталось только соединить компилятор и компоновщик в один связующий модуль. О, ещё направление забыл. Линукс и 64 бита до кучи. А зачем линкер от подсистемы Text отучать? Если уж получится линкер, то остальной (неграфический) ББ перетащить под линуха труда не составит. Тем более что оно и так уже есть вроде. Вся фишка в том, что подсистема Text тянет за собой весь каркас, который пока не спортирован в Линукс. На данный момент ElfLinker работает из под Win32. |
Автор: | Иван Горячев [ Четверг, 25 Февраль, 2010 16:22 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Text тянет за собой абстрактный каркас. При этом реализации требуют только Files, Ports и Fonts. И только для Files нужна полноценная реализация (которая у Димыча есть кажись), для остальных вполне подойдут примитивные заглушки, благо в консоли отрисовывать ничего не надо. |
Автор: | Роман М. [ Четверг, 25 Февраль, 2010 16:32 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Иван Горячев писал(а): Text тянет за собой абстрактный каркас. При этом реализации требуют только Files, Ports и Fonts. И только для Files нужна полноценная реализация (которая у Димыча есть кажись), для остальных вполне подойдут примитивные заглушки, благо в консоли отрисовывать ничего не надо. А при компоновке в .so разве не понадобится реализация тех абстракций? Хотя бы тот же HostPorts. |
Автор: | Иван Горячев [ Четверг, 25 Февраль, 2010 17:22 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
А вы посмотрите что из Ports используется - цвета да миллиметры. Из Fonts - создание шрифтов и их метрика. Вполне можно обойтись заглушкой, возвращающей некоторые стандартно-усреднённые значения. Поскольку львиная доля этой информации используется при отображении текстов, которого в консоли нету. |
Автор: | Роман М. [ Вторник, 13 Апрель, 2010 12:50 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Я тут подумал намедни и у меня возникла такая мысль (возможно, дикая ): изменить Hosts так, чтобы он пользовался библиотекой Wine. И потихоньку поменять все составные части Hosts на родные для Линукса. Вот такой изврат. |
Автор: | Иван Горячев [ Вторник, 13 Апрель, 2010 13:42 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
А что это даст и чем оно проще непосредственного перевода под Линукс? |
Автор: | Роман М. [ Вторник, 13 Апрель, 2010 14:17 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
"Лучше" - понятие относительное, конечно. Однако, из плюсов основы на Wine:
|
Автор: | Info21 [ Вторник, 13 Апрель, 2010 17:41 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Звучит неплохо. |
Автор: | Димыч [ Вторник, 13 Апрель, 2010 17:48 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Я может чего-то не понимаю? Чего хотим сделать? ББ, работающий в Линукс и производных. Чего не хватает на текущий момент? ГУИ. Какие есть варианты ГУИ в Линукс? Родные: X Window, GTK, построенный поверх X Window. Производные: wxWidgets, Qt (это all-in-one) FLTK, FOX и еще с десяток разной степени живучести и проработки. Я перепробовал X, GTK, wxWidgets. Остановился на последней. Потому что это фреймворк, позволяющий на высоком уровне управлять окнами и виджетами. И этого достаточно, чтобы заложить основу для каркаса ББ в Линукс. Очевидно, что надо заходить с подсистемы Hosts, но гораздо важнее произвести запуск GUI-программ в консольном варианте. Сегодня буквально наткнулся на wxLua. Там для консольного lua.exe сделано так, что можно запустить программму (*.lua) и получить работающую ГУИ-программу. Мне кажется, что надо делать именно так - для консольного ББ (уже имеющегося) сделать достаточную (если уж не получится сделать полную) привязку к какой-то среде из перечисленных выше, что почти автоматом приведет к возможности построения каркаса ББ. Благо модели фреймворков позволяют это сделать относительно несложно. |
Автор: | Иван Кузьмицкий [ Вторник, 13 Апрель, 2010 18:00 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
[грызёт край стола от невозможности оставить текучку и броситься на помощь Димычу перетаскивать ББ на линукс] Димыч, а Qt сразу отпадает или Вы его ещё не пробовали? (ничего из вышеперечисленного я не пробовал, спрашиваю лишь из желания угадать единственный, но самый верный вектор приложения усилий) |
Автор: | kemiisto [ Вторник, 13 Апрель, 2010 18:04 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Димыч писал(а): Я перепробовал X, GTK, wxWidgets. Qt зря не попробывали. Сейчас вспоминаю wxWidgets и Swing как страшный сон. |
Автор: | Илья Ермаков [ Вторник, 13 Апрель, 2010 20:22 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Qt, вроде, не применим за пределами С++. Qt - это система препроцессинга на основе С++. К тому же, слишком много соединений, насколько я помню, делаются статически. |
Автор: | kemiisto [ Вторник, 13 Апрель, 2010 21:00 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Илья Ермаков писал(а): Qt, вроде, не применим за пределами С++. Qt - это система препроцессинга на основе С++. К тому же, слишком много соединений, насколько я помню, делаются статически. Лично трогал привязки к Ada, Ruby, Python, Free Pascal. Вполне работоспособно. Списко "привязок" в Вики. Или Вы не про то? Насчёт статических соединений - не понял. |
Автор: | Илья Ермаков [ Вторник, 13 Апрель, 2010 21:10 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Хы, у меня воспоминания про Qt в С++ - там расширен язык был специально - и надстроен препроцессор. Видимо, в других языках они обошлись без этого. Про статику: ну, например, я соединяю компоненты А и Б, чтобы от А к Б шли какие-то сообщения. Нужно понимать, делается ли это на этапе компиляции, или можно это свободно делать и при выполнении. Из-за всех этих негибких препроцессоров и наследований Qt производил впечатление мощной, но не динамичной штуки. Насколько помню... 3 года назад крутился немного среди людей, его применявших. |
Автор: | Иван Кузьмицкий [ Вторник, 13 Апрель, 2010 21:50 ] |
Заголовок сообщения: | Re: Перевод BlackBox под Linux |
Гм. Если даже для FPC есть привязка, то пуркуа бы и не па? То есть, Qt? |
Страница 12 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |