OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 08:21

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




Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15  След.
Автор Сообщение
 Заголовок сообщения: Re: Компиляция в Linux
СообщениеДобавлено: Понедельник, 02 Ноябрь, 2009 00:14 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Info21 писал(а):
Евгений Темиргалеев писал(а):
Дружно кидаем скалу в огород макросов.
Много мелких камней лучше, чем один большой :)
Для случая Linux - систем как раз один большой configure решает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 03 Ноябрь, 2009 19:04 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Описание компиляции текстовых файлов в ББ под Linux доступно в списке рассылки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: wxWidgets
СообщениеДобавлено: Четверг, 19 Ноябрь, 2009 18:45 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Мне удалось запустить приложение, написанное на 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.

Оно еще не красиво, нет объектной обвязки, но оно работает!
На Линукс еще не проверял, но абсолютно уверен, что это будет работать и там.
Подробности в списке рассылки.


Вложения:
screenshot.PNG
screenshot.PNG [ 8.08 КБ | Просмотров: 8824 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 22 Январь, 2010 19:35 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Мне кажется, что нужен промежуточный этап: создание кроссплатформенного дистрибутива BlackBox. Если не отвязаться от WinAPI, то BlackBox для Linux на свет не появится. Даже подсистема Dev зависима от подсистемы Win.
Вывод: абстракция компонентов ББ недостатоточна для отвязки от платформы Windows.

Мне кажется, что если целиться на будущее, то стоит выбирать платформу .NET/Mono. Есть даже порт wxWidgets для .NET (правда, документации мало). Таким образом, можно будет запускать программу на любой ОС с платформой .NET/Mono без перекомпиляции BlackBox.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 23 Январь, 2010 00:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Роман М. писал(а):
Мне кажется, что если целиться на будущее, то стоит выбирать платформу .NET/Mono.
Рантайм система Оберонов (и Блэкбокса в частности) не может быть эфективно реализована на платформе .Net, поскольку в платформе .Net в отличие от оберонов структуры нерасширяемы, массивы не являются value-type, сборки невыгружаемы.

Ещё проверка типов в .Net не очень эффективная (в 5-6 раз медленнее чем в оберонах), то есть паттерн generic-message-bus там несколько кривоватым будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 25 Февраль, 2010 16:13 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
http://forum.oberoncore.ru/viewtopic.php?f=28&p=43498#p43498
Иван Горячев писал(а):
Цитата:
1. Так получилось, что я занимаюсь как раз консольным компилятором, с прицелом на использование в Линуксе (да и, вообще, систем, понимающих ELF). Конкретно: переписываю DevElfLinker, чтобы "отучился" от StdLog, подсистемы Text и других зависимостей, пытаясь абстрагировать от операций вывода. По большому счёту, для консольного компилятора в Win32 всё готово - осталось только соединить компилятор и компоновщик в один связующий модуль.

О, ещё направление забыл. Линукс и 64 бита до кучи. А зачем линкер от подсистемы Text отучать? Если уж получится линкер, то остальной (неграфический) ББ перетащить под линуха труда не составит. Тем более что оно и так уже есть вроде.

Вся фишка в том, что подсистема Text тянет за собой весь каркас, который пока не спортирован в Линукс. На данный момент ElfLinker работает из под Win32.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 25 Февраль, 2010 16:22 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Text тянет за собой абстрактный каркас. При этом реализации требуют только Files, Ports и Fonts. И только для Files нужна полноценная реализация (которая у Димыча есть кажись), для остальных вполне подойдут примитивные заглушки, благо в консоли отрисовывать ничего не надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 25 Февраль, 2010 16:32 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Иван Горячев писал(а):
Text тянет за собой абстрактный каркас. При этом реализации требуют только Files, Ports и Fonts. И только для Files нужна полноценная реализация (которая у Димыча есть кажись), для остальных вполне подойдут примитивные заглушки, благо в консоли отрисовывать ничего не надо.

А при компоновке в .so разве не понадобится реализация тех абстракций? Хотя бы тот же HostPorts.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 25 Февраль, 2010 17:22 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
А вы посмотрите что из Ports используется - цвета да миллиметры. Из Fonts - создание шрифтов и их метрика. Вполне можно обойтись заглушкой, возвращающей некоторые стандартно-усреднённые значения. Поскольку львиная доля этой информации используется при отображении текстов, которого в консоли нету.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 12:50 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Я тут подумал намедни и у меня возникла такая мысль (возможно, дикая :) ): изменить Hosts так, чтобы он пользовался библиотекой Wine. И потихоньку поменять все составные части Hosts на родные для Линукса.
Вот такой изврат. :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 13:42 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
А что это даст и чем оно проще непосредственного перевода под Линукс?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 14:17 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
"Лучше" - понятие относительное, конечно. Однако, из плюсов основы на Wine:
  1. простота постепенной интеграции с Linux/UNIX.
  2. возможность прямых вызовов Linux/UNIX API.
  3. статическая сборка с Wine(?) - тогда на целевой машине не нужно его устанавливать.
Можно поставить ББ на Wine и таким образом отлаживать работу новых частей прямо в Линуксе. Трудно охватить всё сразу. Можно ведь по чуть-чуть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 17:41 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 17:48 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Я может чего-то не понимаю?

Чего хотим сделать? ББ, работающий в Линукс и производных.
Чего не хватает на текущий момент? ГУИ.

Какие есть варианты ГУИ в Линукс?
Родные: X Window, GTK, построенный поверх X Window.
Производные: wxWidgets, Qt (это all-in-one)
FLTK, FOX и еще с десяток разной степени живучести и проработки.

Я перепробовал X, GTK, wxWidgets.
Остановился на последней. Потому что это фреймворк, позволяющий на высоком уровне управлять окнами и виджетами. И этого достаточно, чтобы заложить основу для каркаса ББ в Линукс.

Очевидно, что надо заходить с подсистемы Hosts, но гораздо важнее произвести запуск GUI-программ в консольном варианте. Сегодня буквально наткнулся на wxLua. Там для консольного lua.exe сделано так, что можно запустить программму (*.lua) и получить работающую ГУИ-программу.

Мне кажется, что надо делать именно так - для консольного ББ (уже имеющегося) сделать достаточную (если уж не получится сделать полную) привязку к какой-то среде из перечисленных выше, что почти автоматом приведет к возможности построения каркаса ББ. Благо модели фреймворков позволяют это сделать относительно несложно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 18:00 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
[грызёт край стола от невозможности оставить текучку и броситься на помощь Димычу перетаскивать ББ на линукс]

Димыч, а Qt сразу отпадает или Вы его ещё не пробовали? (ничего из вышеперечисленного я не пробовал, спрашиваю лишь из желания угадать единственный, но самый верный вектор приложения усилий)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 18:04 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 249
Димыч писал(а):
Я перепробовал X, GTK, wxWidgets.

Qt зря не попробывали. Сейчас вспоминаю wxWidgets и Swing как страшный сон.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 20:22 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Qt, вроде, не применим за пределами С++. Qt - это система препроцессинга на основе С++. К тому же, слишком много соединений, насколько я помню, делаются статически.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 21:00 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 249
Илья Ермаков писал(а):
Qt, вроде, не применим за пределами С++. Qt - это система препроцессинга на основе С++. К тому же, слишком много соединений, насколько я помню, делаются статически.

Лично трогал привязки к Ada, Ruby, Python, Free Pascal. Вполне работоспособно.
Списко "привязок" в Вики.
Или Вы не про то?

Насчёт статических соединений - не понял. :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 21:10 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Хы, у меня воспоминания про Qt в С++ - там расширен язык был специально - и надстроен препроцессор.
Видимо, в других языках они обошлись без этого.

Про статику: ну, например, я соединяю компоненты А и Б, чтобы от А к Б шли какие-то сообщения. Нужно понимать, делается ли это на этапе компиляции, или можно это свободно делать и при выполнении. Из-за всех этих негибких препроцессоров и наследований Qt производил впечатление мощной, но не динамичной штуки. Насколько помню... 3 года назад крутился немного среди людей, его применявших.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 13 Апрель, 2010 21:50 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Гм. Если даже для FPC есть привязка, то пуркуа бы и не па? То есть, Qt?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15  След.

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


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

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


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

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