OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 23 Октябрь, 2018 15:13

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




Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу 1, 2, 3, 4, 5 ... 15  След.
Автор Сообщение
 Заголовок сообщения: Перевод BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 11:20 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
Для начала, хотелось бы проявить эти самые проблемы. Но сначала, наверное, стоит обозначить цели.

На мой взгляд, их две. Попробую сформулировать.

1. Нужно запускать BlackBox под линуксом напрямую, без участия эмуляторов винды.
2. Нужна более развитая поддержка оконного интерфейса (контроль над окнами, тулбары, не-MDI и пр.).

Для достижения 1-й цели необходимо переделать Host-часть. А вторая цель требует серьёзного перетряхивания абстрактной прослойки между хостом и документами ББ. Поправьте, если не так.

Ну и в результате обсуждения хотелось бы иметь как поэтапную раскладку продвижения, так и временные затраты. Некий план-график, что ли... Ориентировочно, плюс-минус трамвайная остановка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 12:09 

Зарегистрирован: Вторник, 18 Сентябрь, 2007 08:48
Сообщения: 108
Для пункта № 2.
На FreePascal есть хорошие гуевые библиотеки, могу привести одну из них - FPGUI http://opensoft.homeip.net/fpgui/
1. Сама отрисовывает себя.
2. Кроссплатформенна.
3. Есть дизайнер форм.
4. Читабельные исходники.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 18:11 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Мне очень понравилась библиотека Ultimate++, понравилась своей архитектурой.
В частности, в описании приводится такой текст:

Цитата:
Everything belongs somewhere

In Ultimate++, most objects are bound to some logical scope. As a result, you will not see many new operators in code using Ultimate++ and almost no delete operators outside the implementation of containers.

That of course does not mean you are not allowed to use pointers, but it is good practice to use pointers just to point to things, never to manage heap resources. This also avoids all confusion regarding ownership of the underlying object, time of its deletion etc. If you need to manage data sets of variable size or polymorphic type, you should prefer using one of Ultimate++ containers.

Speaking about it, there are no shared smart pointers (like boost::shared_ptr) in Ultimate++ used to manage heap resources at interface level. They are not needed and considered bad practice.

In C++, this approach proves to be equally good or better than garbage collected languages like Java or C#. While those languages are able to provide automatic management of heap resources, U++ approach provides very deterministic automatic management of all resources.

Представляется очень интересным, близко по духу к Оберонам.
Да и исходники (для конечного пользователя, правда) выглядят не страшно. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 18:26 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Ко всему прочему не хотелось бы видеть зацикленность только лишь на Линуксе. У меня дома FreeBSD. Было бы неплохо, чтобы и на ней всё работало. В неё встроена поддержка бинарников Линукса, но предупреждается: не факт, что всё линуксовое будет работать. Так что у меня есть пожелание не использовать что-то, что может хотя бы показаться редкоиспользуемым (и что, естественно, на других Юниксах может не заработать).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 18:59 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2524
Откуда: Россия, Ярославль
Димыч писал(а):
Мне очень понравилась библиотека Ultimate++, понравилась своей архитектурой.


и

Edward Ivanov писал(а):
На FreePascal есть хорошие гуевые библиотеки, могу привести одну из них - FPGUI http://opensoft.homeip.net/fpgui/

Ну а вот зачем это нужно?

Иван Кузьмицкий писал(а):
1. Нужно запускать BlackBox под линуксом напрямую, без участия эмуляторов винды.
Ну, то есть сделать ББ "*nix-приложением", для этого как я понимаю, и нужен OpenBugs, f конкретно - встроенный в него линкер. Ну а для этого хотелось бы понять, как запустить ядро ББ в линуксе, что из себя представляет линуксовый бинарник(формат ELF, если я не ошибаюсь).
Иван Кузьмицкий писал(а):
2. Нужна более развитая поддержка оконного интерфейса (контроль над окнами, тулбары, не-MDI и пр.).
Я думаю, это последняя, завершающая часть работы. Я думаю, никто не будет возражать против мнения, что функциональности модуля Windows недостаточно даже для повседневных нужд(пример: отлов закрытия окна и прочие уже обсуждались на форуме), поэтому довольно вероятно, что его интерфейс будет дополнен и расширен.

В добавление к переписыванию Host-части, как я понимаю, понадобится подсистема, аналогичная подсистеме Win. Ну а вот например, подсистема Comm не имеет Host-части, модули реализации протоколов используют напрямую WinAPI, придётся значит, писать по новой.

Valery Solovey писал(а):
Ко всему прочему не хотелось бы видеть зацикленность только лишь на Линуксе. У меня дома FreeBSD.
А мне вот на КПК хочется увидеть ББ. :) Если вы разбираетесь, подскажите, а как обеспечить такую "незацикленность"?
Создать набор взаимозаменяемых Host-подсистем, как вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 20:44 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Пётр Кушнир писал(а):
Ну а вот зачем это нужно?


Это нужно для того, чтобы посмотреть, как народ вообще решает вопросы кроссплатформенности и какие решения принимает, чтобы обеспечить единообразие кода в разных системах.

Пётр Кушнир писал(а):
А мне вот на КПК хочется увидеть ББ. :) Если вы разбираетесь, подскажите, а как обеспечить такую "незацикленность"?
Создать набор взаимозаменяемых Host-подсистем, как вариант.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 22:26 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
Valery Solovey писал(а):
Ко всему прочему не хотелось бы видеть зацикленность только лишь на Линуксе.

Линукс тут выступает как самый ближний. Насколько я понимаю, как минимум, надо перетащить Host. Если смотреть на другие аппаратные платформы, то и компилятор.

Что касается ifdef, то Илья Ермаков как-то высказывался по этому поводу, что в компонентной системе такие штуки просто не нужны. Вопрос решается перекоммутацией платформенно-зависимой части среды. Вот как быть с переключением на другую аппаратную платформу, я не до конца понимаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Пятница, 12 Декабрь, 2008 23:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Тут без перекомпиляции никак. + нужно типы данных собирать в отдельном модуле и некоторые системные операции объявлять там же, как inline-кодовые-процедуры (например, манипулирование с тегом типа у объекта).
+ IFDEF использовать. Обычный IF от булевых констант, работает как раз таким образом, как IFDEF.


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

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 567
Откуда: Россия, Санкт-Петербург
Если я себе правильно представляю модульную архитектуру приложений, то необходимо переписать платформенно зависимые модули (части системы) и среду (runtime). Все остальные модули должны работать без перекомпиляции или пересборки.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Да, но в случае одного оборудования.
Не забывайте, что в ББ модули компилируются в native-код.
И, увы, привязка к особенностям 32-бит раскидана по среде гораздо шире, чем привязка к ОС.
Предположения о том, что размер адреса 4 байт, например.
В начале 90-х казалось, что 32 - это надолго ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Понедельник, 15 Декабрь, 2008 10:51 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Отсюда следует, что рядом с Линуксом пристроилось ещё одно направление - кроссплатформенность. На начальном этапе - x86-64 (и возможно ARM). Нужно нарыть и вычистить все проблемные места, типа указанных Ильёй. Прикрутить к компилятору инфраструктуру для поддержки разных платформ. Ну и заполировать всё это slim-binaries :)


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

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 992
Valery Solovey писал(а):
У меня дома FreeBSD. Было бы неплохо, чтобы и на ней всё работало. В неё встроена поддержка бинарников Линукса, но предупреждается: не факт, что всё линуксовое будет работать.
Есть предложение высылать рабочие версии модулей Валерию Соловей для тестирования под FreeBSD.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Понедельник, 15 Декабрь, 2008 23:27 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1337
Иван Горячев писал(а):
Отсюда следует, что рядом с Линуксом пристроилось ещё одно направление - кроссплатформенность. На начальном этапе - x86-64 (и возможно ARM). Нужно нарыть и вычистить все проблемные места, типа указанных Ильёй. Прикрутить к компилятору инфраструктуру для поддержки разных платформ. Ну и заполировать всё это slim-binaries :)

Тогда, в качестве перенимания опыта, лучше консультироваться на счёт РЕАЛЬНОЙ кроссплатформенности по исходникам именно NetBSD!!!
Вот уж где архитектура и приёмы работы с кодом и структурами реально обкатаны на ТАКИХ, порой, РАЗНЯЩИХСЯ архитектурах, что - диву даёшься!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Понедельник, 15 Декабрь, 2008 23:28 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 231
Кстати, по-поводу кроссплатформенности: ведь была же версия ББ для Мак'a, как там решались проблемы с прослойкой между хостом и документами ББ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблемы перевода BlackBox под Linux
СообщениеДобавлено: Понедельник, 15 Декабрь, 2008 23:33 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9011
Откуда: Россия, Орёл
Да не нужно никакой прослойки. Достаточно, ещё раз повторяю, реализовать под целевую ОС все модули подсистемы Host (или какие угодно другие, которые втыкают те же разъёмы реализации, которые втыкает Host). Всё. Остальные подсистемы ничего не заметят.


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Запустил я ББ на Линукс. Это оказалось несколько сложнее, чем я ожидал, но все же не так страшно, как казалось. :)

Результат - во вложенном файле.
Чуть позже опишу подробно в блоге, пока же выкладываю полученный результат двухдневных экспериментов.

За основу были взяты модули из OpenBUGS.

Что сделано
Запущен модуль ElfLinker от ОМИНК
Создан стартовый файл для ББ на линукс
Создан минимальный набор модулей для запуска
Слинкован минимальный запускаемый набор

Что НЕ сделано
Не сделана динамическая загрузка.
Я так и не понял, как происходит инициализация ББ, поэтому попытка загрузки неслинкованного модуля у меня стабильно приводила к трапу.

Не произведена подмена модулей из System.
Это надо делать раскруткой, но только, как будет запущен ElfLinker на линукс (что, естественно, требует работы динамической загрузки).

Как это воспроизвести
Сборка осуществляется на Windows.
Откройте модуль Lin\Docu\build-tool.odc и выполните подряд обе команды.
Должен появиться файл libBB.so
Теперь скопируйте это все в Linux (путь не важен).
Если не запустится файл BlackBox, его можно пересобрать, файл BlackBox.c прилагается.

Если все сработает, при запуске BlackBox должны быть две строчки Hello world.


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Владимир Лось писал(а):
Вот уж где архитектура и приёмы работы с кодом и структурами реально обкатаны на ТАКИХ, порой, РАЗНЯЩИХСЯ архитектурах, что - диву даёшься!!!

Там можно поучиться механизмам кросс-компиляции, я думаю.


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

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 992
Димыч писал(а):
Я так и не понял, как происходит инициализация ББ, поэтому попытка загрузки неслинкованного модуля у меня стабильно приводила к трапу.
В модуле Kernel выделение памяти управляется функциями библиотеки calloc/free, а для динамической загрузки память должна отображаться mmap с флагом PROT_EXEC. Попробуйте добавить её и munmap в модуль Libc.


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

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 6
Я думаю, совсем нет резона раздувать интерфейс модуля Windows какими-то дополнительными возможностями.
1) сейчас в ББ эти доп. возможности предоставляет HostWindows
2) если нужны такие возможности, которые есть в операционке, но отсутствуют даже в HostWindows, то можно воспользоваться прямыми вызовами WinAPI

Такое "разделение труда" делает ББ в целом:
- более простым для понимания и использования (если приложению не нужно сильно погружаться в особенности работы с окнами - то остаешься на более абстрактном уровне)
- более переносимым и адаптируемым

Далеко не всем программам нужны изыски пользовательского интерфейса. Если нужно контролировать положение окна на экране, делайте это вызовами WinAPI, или помогите сообществу - напишите модуль-утилиту с парой процедур, который будет гонять окна типа HostWindows.Window. Кому надо - будут пользоваться, кому нет - не будут загружаться, и модуль Windows останется простым. На личном опыте: мне удалось сделать прогу, успешно манипулирующую окнами ББ (даже прячется строка заголовка, если надо!), изменяющую размер клиентской области ББ, а также сделать модуль, позволяющий произвольный View открыть в качестве тулбара вверху окна ББ. См. подсистему Amisc в коллекции Helmut'а Zinn'а.


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

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2524
Откуда: Россия, Ярославль
adimetrius писал(а):
Я думаю, совсем нет резона раздувать интерфейс модуля Windows какими-то дополнительными возможностями.
Очень не хочется поднимать этот субъективный вопрос, скажу только одно: отлов закрытия окна зачастую необходим. И отмена закрытия тоже. А нету (я кстати тоже сделал своё ;-)).
Но, в любом случае, решать все вместе будут, я лишь внёс предложение по улучшению.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу 1, 2, 3, 4, 5 ... 15  След.

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


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

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


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

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