OberonCore
https://forum.oberoncore.ru/

#048 Предложение: убрать Kernel.Hook. Совсем.
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6717
Страница 1 из 2

Автор:  Борис Рюмшин [ Вторник, 26 Январь, 2021 23:03 ]
Заголовок сообщения:  #048 Предложение: убрать Kernel.Hook. Совсем.

Ну разработчики ББ в курсе, зачем оно надо. Этот хук представяляет собой хак, который прикрывает наследников от просмотровщика интерфейсов. Для ранней истории ББ с закрытыми исходниками, это, наверно, имело смысл. Сейчас это создаёт только лишнюю зависимость от Kernel там, где она не нужна.

Предлагаю выпилить из Kernel этот тип и, соответственно, по всему ББ выпилить зависимости от него. Потерь -- никаких. Совместимость не нарушается никак.

Автор:  Илья Ермаков [ Вторник, 26 Январь, 2021 23:09 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Вообще да. Никакой потребности в нём нет!

Кроме той косметической.

Автор:  Евгений Темиргалеев [ Среда, 27 Январь, 2021 00:35 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Согласен, для открытой разработки от этой фичи скорее не польза, а вред. Кому надо, тот в исходнике все равно интерфейс посмотрит, фича лишь заставляет лезть в исходник.

Автор:  Иван Денисов [ Среда, 27 Январь, 2021 08:01 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Возражений нет.

Автор:  adimetrius [ Среда, 27 Январь, 2021 14:15 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Ну, вступать в борьбу за сохранение этой фичи я бы не стал; однако на прощание выскажусь, что мне она нравится своей простотой, и скрывает лишнюю информацию от глаз прикладных программистов, упрощая им жизнь. Кроме того, использование Kernel.Hook как базового типа явно сигнализировало (читателю) о применении шаблона "Крюк" (или как там он называется) - т.е. "ищи реализацию где-то в другом модуле; реализация должна себя "повесить" на крюк где-то в переменных этого модуля; реализация, скорее всего, использует интерфейсы, которые объявляются в модулях, импортирующих данный (т.е. это обход запрета циклического импорта)". Выходит, и для системного программиста была польза от Kernel.Hook.

Ну и потом, это как тайный знак: позволяет отличить гуру от негуру 8)

Автор:  Иван Денисов [ Вторник, 06 Апрель, 2021 05:49 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Чаще всего название типа сигнализирует о применении шаблона Hook так или иначе.

Может кто-то ещё выскажется за сохранение данной особенности? Если нет, то уберём в скором времени.

Автор:  Иван Денисов [ Четверг, 08 Апрель, 2021 10:21 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Сделал предложенное измерение.

Есть предложение подправить DevBrowser, чтобы он смотрел по окончанию имени типа, если заканчивается на Hook, то и считать хуком, и скрывать в браузере интерфейса.

Автор:  Борис Рюмшин [ Четверг, 08 Апрель, 2021 11:33 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Иван Денисов писал(а):
Сделал предложенное измерение.

Есть предложение подправить DevBrowser, чтобы он смотрел по окончанию имени типа, если заканчивается на Hook, то и считать хуком, и скрывать в браузере интерфейса.

А вот это уже спорный вопрос.

Автор:  Илья Ермаков [ Четверг, 08 Апрель, 2021 15:12 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Не надо ничего скрывать! Зачем?

Это эксперименты Оминк, в свете разных идеализаций 90-х на тему бинарной компонентости и проч. (даём пользователям чёрные ящики без исходников, половину системы объявляем недокументированной и т.п.)

Неявщина противоречит "главному курсу".

Автор:  Иван Денисов [ Четверг, 08 Апрель, 2021 16:17 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Понял, будем поддерживать курс на свободное программное обеспечение.

Автор:  adimetrius [ Пятница, 14 Май, 2021 10:51 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Мы с Иваном Денисовым сейчас делаем две большие вещи: интегрируем плиточный менеджер оконный в ББ, и одновременно перестраиваем сруктуру репозитория кроссплатформенной сборки. И я скучаю по Kernel.Hook. Пришлось перетряхивать порядок загрузки модулей при загрузке ББ, и половина реализаций по шаблону "крюк" вылетела. То есть Host-модули не включены нигде в список импорта и не загружаются динамически - и все, крюк остается пустым. При этом ББ благополучно загружается. А затем, если повезет, произойдет авост NIL dereferencing.

Если есть базовый тип Kernel.Hook, то есть и возможность сделать верификатор: ему передается множество модулей, он выявляет все крюки и проверяет, что хотя бы одна реализация где-то в наборе модулей имеется. По крайней мере отчитывается: вот, в наборе такие-то абстрактные крюки, и к ним такие-то конкретные реализации. Это повышает надежность и управляемость системы в целом.

По крайней мере, пока нет этого чудесного верификатора, можно ручками сделать текстовый поиск Kernel.Hook и найти все абстрактные крюки, а потом уж ручками найти к каждому его реализацию и включить нужный модуль в набор.

Если изначальная мотивация у Бориса была уменьшить число зависимостей от Kernel, то предлагаю вернуть Hook в модуль Services

MODULE Services;
TYPE Hook* = POINTER TO ABSTRACT RECORD (Kernel.Hook) END

Борис Рюмшин писал(а):
Ну разработчики ББ в курсе, зачем оно надо. Этот хук представяляет собой хак, который прикрывает наследников от просмотровщика интерфейсов. Для ранней истории ББ с закрытыми исходниками, это, наверно, имело смысл. Сейчас это создаёт только лишнюю зависимость от Kernel там, где она не нужна.

Предлагаю выпилить из Kernel этот тип и, соответственно, по всему ББ выпилить зависимости от него. Потерь -- никаких. Совместимость не нарушается никак.

Автор:  Иван Денисов [ Пятница, 14 Май, 2021 11:28 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Может быть в Config проверять перечень важных системных хуков?

Автор:  Борис Рюмшин [ Пятница, 14 Май, 2021 15:48 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Честно не понял смысла проблемы.

Ну вот без изменений весь список зависимых от Kernel.Hook:
Вложение:
Снимок экрана в 2021-05-14 15-47-45.png
Снимок экрана в 2021-05-14 15-47-45.png [ 9.39 КБ | Просмотров: 11132 ]

И?

Автор:  Борис Рюмшин [ Пятница, 14 Май, 2021 15:52 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Можно перечислить где-то и проверить на NIL. Временно поставить хоть в Config, как Иван предлагает.
Хуки, которые ставит подсистема Host не зависят от Kernel.Hook.

Автор:  Борис Рюмшин [ Пятница, 14 Май, 2021 15:55 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Kernel.Hook делался для того, чтобы прикрыть от внешних программистов внутреннюю кухню, чтобы не возникало желания подменить реализацию там.

Автор:  adimetrius [ Пятница, 14 Май, 2021 16:27 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Борис, вы льете мельницу на мою воду: ваш снимок - это потому, что у вас версия модулей, в которой до сих пор есть Kernel.Hook. Если Kernel.Hook нет как базового типа всех крюков - то вы этот список не построите одной командой.

И поправлю вас: по крайней мере один платформенный модуль, другие не проверял:

HostMechanisms.Hook = POINTER TO RECORD (Mechanisms.Hook(Kernel.Hook))

Автор:  Борис Рюмшин [ Пятница, 14 Май, 2021 16:34 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Про Механизмы я вспомнил, но исправлять не стал.
Список да есть. Пока. Но он не нужен. Я объяснил почему. Вы предлагаете не только вернуть всё в эти модули, но и в другие расставить? Это не имеет большого смысла, кроме сиюминутного удобства.

Автор:  Иван Денисов [ Пятница, 14 Май, 2021 18:13 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Думаю, что был бы полезен такой инструмент в виде расширения, который даёт анализ всех абстрактных записей и их расширений. И если слово Hook встречается в названии, то подкрашивает как-то, чтобы особо на эти расширения обращать вниманиние.
Никто не делал постоитель графов такого рода на основе баз исходных текстов программ?

Автор:  Александр Ильин [ Пятница, 14 Май, 2021 18:51 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Борис Рюмшин писал(а):
Kernel.Hook делался для того, чтобы прикрыть от внешних программистов внутреннюю кухню
*хукню.

Автор:  Борис Рюмшин [ Суббота, 26 Июнь, 2021 15:48 ]
Заголовок сообщения:  Re: #048 Предложение: убрать Kernel.Hook. Совсем.

Борис Рюмшин писал(а):
Честно не понял смысла проблемы.

Но посмотрев на забитый хуками Dialog призадумался...

Нет, возвращать не предлагаю, конечно.
DevBrowser, кстати, по опции включает показ хуков, зависящих от Kernel.Hook.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/