OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 14:18

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 33  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Среда, 08 Март, 2023 13:28 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
сделал идею из этой темы. надо бы в language report ещё вбить, когда обкатаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Среда, 08 Март, 2023 18:49 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
из той же темы сделал обязательный UPSCOPE. конечно, поправил весь код среды. флаг совместимости с CP не делал специально, ибо нефиг: когда такой флаг есть — всегда хочется его включить и поправить всё «когда-нибудь потом». как известно из опыта, это самое «потом» наступает примерно никогда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 09 Март, 2023 02:16 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
сделал `UP` ключевым словом (`UPSCOPE` слишком длинное), и заодно количество `UP.` теперь реально контролирует, из какого скопа брать переменную. с одной стороны это удобно: можно получить доступ к локалам любого родителя, и делать штуки типа `i := UP.i`. а с другой — меня не покидает ощущение, что я, воля моя, что-то нескладное придумал.

по чистой логике `UP` должен работать именно так, всё логично. но гложет, гложет червячок сомнения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 09 Март, 2023 14:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
расширил StdInterpreter и DevCommanders. в интерпретаторе разрешил использовать одинарные и обратные кавычки для закавычивания команд; также добавил в коммандеры интерфейс команд (гыг), чтобы использовать из меню. потому что — а почему я не могу исполнить коммандер по хоткею, почему мне надо к мыши каждый раз тянуться?! ужасно неудобно.

я уже не раз говорил, что оберон-среды почему-то ненавидят людей, которые ненавидят мышь (и BBCB тоже): даже простейшие действия типа «исполнить коммандер» или «свернуть/развернуть фолд» с клавиатуры сделать нельзя. ужасно неудобно: с одной стороны у нас «текст как интерфейс», а с другой надо постоянно бросать устройство ввода текста и тянуться к мыши. у Plan 9 та же фигня, кстати.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Четверг, 09 Март, 2023 22:30 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
ну и раз уж я так топлю за AAtree, то заменил в компиляторе деревья символов с просто двоичных на balanced. выигрыш — примерно пол-секунды на полной пересборке вин-версии: я полагаю, это из-за дурного размера винапи-импорта.

к сожалению, список полей записей трогать нельзя: там адово абузится поле `.link`. то есть, парзер предполагает, что оно не меняется при добавлении полей, и линкует оные поля сам, руками. а нам так нельзя, нам надо это поле менять, потому что дерево балансированое же, и корень постоянно ездит.

в принципе, особого значения это не имеет, потому что записи с огромным количеством полей — редкость. но хочется везде кросивое. надо, видимо, добавить поле `.root`, где и хранить корень дерева. а с `.link` пусть компилятор и дальше играется, не жалко. но тут надо аккуратно проверить, чтобы нигде больше кривых игр не было, а то случится бадабум.

p.s.: отвязал, привинтил. ссылок на коммиты не даю, потому что там дофига переколбашено, особо смысла смотреть нет. основной затык был в том, что bounded procs везде выводятся как раз в алфавитном порядке, а я запилил отдельное поле для корня дерева, и link больше не указывает на корень. после починки этого в нескольких местах всё вроде как заработало. кажется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 11:30 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
кстати, забавная мысль пришла. сборка с нуля версии под лин более чем в два раза быстрее сборки версии под вин (понятно, одним и тем же dev-компилятором). а виноват во всём, похоже, модуль с винапи, который так или иначе, через host или ещё как-нибудь — но подтягивается чуть ли не в каждый модуль среды, и имеет совершенно неприличные размеры. и это с учётом того, что подтягивается через sym-файл, а не парзингом с нуля каждый раз, и этот sym, по сути, читается из кэша в RAM.

огромные модули в базовых подсистемах — это плохо, п'нятненько?

вообще, забавно, что модули импорта из dll/so на самом деле нечто типа макросов: компилятор вставляет нужные импорты в конкретный модуль, который их использует. но делать импорты сразу по месту почему-то нельзя. в смысле — просто оформить секцию импорта полутора внешних функций в обычном модуле. интересно, почему так? технически для этого никаких препятствий нет. видимо, омики хотели, чтобы код на CP и интерфейс с внешним миром были чётко разделены.

это я к тому, что если бы можно было импортить dll «по месту», то виндокод собирался бы значительно быстрее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 12:38 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
У меня весь ББ вместе с Ctl (среди которых особо крупный модуль есть) собирается за 10,5 с. Win, Win MDI и Lin сразу. С линковкой. Имеет ли смысл ускорять компиляцию?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 19:08 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
Борис Рюмшин писал(а):
Имеет ли смысл ускорять компиляцию?
совершенно не имеет. у меня лин+вин, но без Ctl — семь-восемь секунд, с Ctl, думаю, как раз до десяти натянет. это так, была просто мысль вслух.

но с другой стороны: невозможность включать в модули-импорты код иногда неудобна: приходится уносить всякие утилиты в отдельный модуль. те же `FD_ZERO()` и компания для лин-сокетов, например. в общем-то не большая проблема, и я не уверен, что ради неё стоит всё ломать, но всё-таки немножко неудобно.

p.s.: а если вы про использование balanced trees — то это я сделал чисто чтобы мои слова в ветке про AAtree не расходились с делом: раз я там утверждаю, что нет больше никакого повода НЕ делать двоичные деревья балансироваными — то и сделал в компиляторе. заодно отвязал от поля `.link` в `Struct` двойное назначение: голова сортированых полей (и методов) теперь хранится в другом поле. так более понятно, мне кажется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 19:17 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
починил non-blocking sockets для Lin.

заодно закинул в репу O3, адаптированый под GNU/Linux. виндоверсия тоже собирается, но там (как минимум под вайном) баг с блокированием не починен. ещё она гадит логами в консоль через LamentdevLog, потому что я забыл это убрать перед коммитом, гыг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 19:31 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Было какое-то уточнение или исправление на эту тему: http://zinnamturm.eu/downloadsAC.htm#CommTCPAsync


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 10 Март, 2023 19:40 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
там они — судя по описанию — `connect()` правили. а как минимум в лин-версии ошибка в том, что HostTCP вообще не переводит сокет в неблокирующий режим никогда, потому что написана неправильно.

ну и да: connect там тоже реализован неверно: при нон-блоке и EINPROGRESS его надо проверять отдельным кодом, а не так, как в `IsConnected()` сделано.

а про винду я не очень в курсе, потому что… не очень в курсе. это пусть кто-нибудь другой в маинлайне починит, а я украду.

надо, кстати, `connect()` в линусах дочинить, да, спасибо за напоминание.

p.s.: тащемта, там вообще довольно странная логика работы с сокетами. не то чтобы неправильная, но… странная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 11 Март, 2023 04:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
вместо чтобы спать — занимался бесполезным: экспериментами с `getaddrinfo_a()`. потому что DNS resolving должен быть асинхронным! добился того, что оно работает, утром буду впиливать в HostTCP/Lin. ну да, жестокая привязка к glibc, муслевцы — я полагаю — дружным строем идут сосать леденец. не мои проблемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 11 Март, 2023 14:23 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
ввинтил асинк-днс для линтцп. но не закоммитил ещё: надо теперь тестировать, а ужасно лень. ;-) для страдальцев с мюслями и прочим — сделал флажок условной компиляции, который эту фичу отключает. ну, константу, в смысле: хорошо, что CP2 при `IF FALSE` ненужный код просто выкидывает, как раз условная компиляция и получается.

надо будет потом портировать это же в O3. блин, ну зачем они в O3 чуть ли не половину ящика продублировали, включая сетевые потоки?!

p.s.: какого чёрта в CommStreams нет `IsOpen()`? если асинк-днс или асинк-коннект сломались, то… то как мне это выяснить? технически поток ещё не коннектед. но надо возвращать, что коннектед, потому что логика такая. и пинать `ReadBytes()`/`WriteBytes()` пока не надоест. странная логика, странная. и `IsConnected()` тогда должен называться `IsActive()`. воля ваша, что-то омики в этих потоках не очень продумали.

p.p.s.: ладно, я, кажется, понял логику за этим. `IsConnected()` обозначает, что поток присоединён к какому-то каналу передачи, а не то, что канал полностью готов к работе. это и есть `IsOpen()`, по сути. а непосредственно проверка того, можно ли передать или принять данные делается через `WriteBytes()` и `ReadBytes()`, которые возвращают нули, если поток пока не готов. довольно неожиданный минимализм, но… окей, это вполне работоспособно. похоже, что я неправ, и омики как раз продумали в традиционном обероновском стиле: «обходимся минимальным достаточным интерфейсом».


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 11 Март, 2023 18:20 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
зопелил. потестировал. асинхронный резолвинг работает, асинхронный коннект — вроде бы — тоже. минималистичная логика оказалась на удивление удобной, снимаю свои претензии к непродуманности: это я не подумал, а не омики.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Суббота, 11 Март, 2023 19:17 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
заодно добавил в CommStreams методы `WriteSChars()` и `ReadSChars()`. их реализовывать не надо, они просто вызывают соответствующие байтовые, делая магический каст. потому что иногда удобней работать с массивом SHORTCHAR, а таскать за собой везде SYSTEM и магически кастовать в высокоуровневом коде — моветон. конечно, всегда можно сделать обёртку над стандартным потоком, но мне откровенно лень каждый раз оборачивать. не вижу, почему бы не добавить эти методы прямо в Comm: они ничего не ломают, и не заставляют менять уже существующие реализации.

то же самое, кстати, надо бы добавить в Files.Reader и Files.Writer, наверное; по тем же самым причинам. ну да, в Stores есть более продвинутые читалки и писалки, но пусть будут, почему нет. чистые утилиты-касты, есть не просят, в дальнейшем сопровождении не нуждаются.

p.s.: нет, `SYSTEM.THISARRAY` нигде не описано: это Тайное Знание Секты Компиляторщиков. есть ещё `SYSTEM.CC`, например, но вот это вам точно совсем не надо. ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Воскресенье, 12 Март, 2023 01:39 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
быстровпилил клиентскую поддержку SSL/TLS через GnuTLS. поскольку я об этой технологии мнения очень невысокого, то в режиме «я труба шатал ваши сертификаты и режимы, мне любое подходит!» это, если что, то, как я всегда запиливаю «поддержку TLS».

надо ещё серверную часть сделать, и поддержку отправки сертификата клиентом для авторизации. к сожалению, это потребует изменения API. я так думаю, его можно всунуть прямо в CommStreams. поскольку у нас система однопоточная (ура!), то просто устанавливать сертификаты глобально. да, своё мнение о TLS я уже говорил, поэтому меня вполне устраивает, что они будут лежать в памяти процесса открытым текстом.

пока что ещё не закоммитил, если чо.

а, трансляцию заголовков GnuTLS я сделал как обычно: руками, и только то, что мне надо.

запиливание заняло десять минут — без учёта трансляции заголовков. потому что GnuTLS API реально очень простой. на винду мне традиционно плевать, но если туда собрать как-то GnuTLS с cdecl-вызовами, то можно и там запилить, добавив после успешного коннекта хэндшейк, и заменив читалку/писалку на вызовы аналогичных функций из GnuTLS. но мне лень, я не буду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Воскресенье, 12 Март, 2023 04:02 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
сделал драйвер CommTLS. поскольку я ленивый афедрон, то сертификаты тупо суются в глобалы. естественно, никаких проверок на «валидные сертификаты» никто не делает, потому что нафиг надо. боевая задача — ходить на идиотские серверы, где нет нормального HTTP, и делать наипримитивнейшие TLS-серваки. задача в этом объёме решена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Воскресенье, 12 Март, 2023 12:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
вообще, поняш мне тут напомнил, что я собирался сделать обязательные `VAR` и `OUT` в вызове процедур. то есть — `CallIt(VAR a, OUT b)`, если там соответствующие параметры. с одной стороны — это правильно, потому что сразу видно, что может измениться при вызове. а сдругой — дофига кода править, и не очень удобно.

обычно я во все свои язычки, где есть механизм передачи по ссылке, такое добавляю — но опционально. но есть нюанс: «опциональная фича повышения читаемости кода» — это полный эквивавалент фичи, которую никто никогда не будет использовать добровольно. хумансы, хумансы никогда не меняются: если компилятор насильно не заставит — то не будут.

конечно, можно просто собачку впилить, типа `(@a, @b)` — но тогда теряется важный кусок информации, и всё равно надо смотреть определение процедуры, чтобы понять, что `VAR`, а что `OUT`. в принципе, унарная префиксная крышка тоже свободна, можно `(@a, ^b)` (по логике, OUT — это для возврата значений, крышка на это намекает). но немного пугает перспектива превратиться в си какой-нибудь, где вместо читаемого текста line noise.

вы всё равно тут читаете: скажите, сильно line noise с собаками и крышками? мне такой короткий вариант нравится больше ключевых слов всё-таки, потому что ключевые слова, мне кажется, больше визуального мусора добавляют: сразу мнится, что там какой-то оператор или что-то такое. а закорюки похожи на закорюки экспорта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 13 Март, 2023 10:47 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1163
эх. не хотите меня отговаривать — и не надо. значит, будут стрёмные значки: да здравствует line noise!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Понедельник, 13 Март, 2023 15:55 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
arisu писал(а):
эх. не хотите меня отговаривать — и не надо. значит, будут стрёмные значки: да здравствует line noise!

я видел, что в коде люди ставят комменты (* OUT *) и всё
это ведь скорее для оформления кода, а создавать препоны во время программирования - так себя идея


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

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


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

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


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

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