Борис Рюмшин писал(а):
Целенаправленно завалить систему можно разными способами.
Подддерживаю. Концепция защиты компонентов, находящихся в одном адресном пространстве, от недобросовестного поведения - плохая. Если это возлагать на язык, это ведёт к такому разрастанию средств защиты... И к необходимости сложнейшим образом формально верифицировать, кто и чего может. Исключения - аппаратная поддержка аля Эльбрус - и то, по максимуму желательно разные уровни привилегий разносить на изолированные пространства памяти/объектов.
Борис Рюмшин писал(а):
Говорил уже много раз и повторю: Kernel - это вам не сервисный модуль, это рантайм языка. "Человеческое лицо" ядра это Meta и Services. Импортировать Kernel без дела (как и SYSTEM) никуда не нужно. Полагаться на его интерфейс также не нужно. И, более того, считаю, что поставить отдельной задачей надо снижение его импорта по ББ там, где он нафиг не нужен.
С одной стороны, да.
С другой стороны, я предлагал в докладе на конференции осенью осознать тот факт, что, кроме уровня языка, в Обероне - в большей степени в линейке ББ - сложилась ценная, компактная, проверенная на полноту для практики модель времени выполнения (в какие сущности транслируется, как представлено в рантайме вплоть до бинарного представления и т.п.). Эта модель имеет самостоятельную ценность (например, для трансляции с нескольких языков).
И её неплохо немного доскруглить и тоже зафиксировать.
У языков типа LISP, Smalltalk, Forth есть чёткая опора на то, как оно представлено в рантайме - и простые механизмы манипуляции в рантайме.
Для Оберона это такое же конкурентное преимущество.
Тот же Meta - одновременно и богат, и узок (например, он работает только по экспорту - а для системных расширений нужно уметь работать "сквозным образом" - на экспорт следует смотреть как на средство прикладного уровня, справочного. Любому механизму типа проекций в БД нужно иметь сквозной доступ в обход экспорта; кроме того, он с накладными расходами).