[Comm] Отладочное логирование модулей alterator

Michael Shigorin mike на altlinux.org
Вт Сен 23 14:51:05 MSK 2025


On Tue, Sep 23, 2025 at 11:18:11AM +0300, Alexander Lubyagin wrote:
> Вопрос немного в сторону. А почему для определения обработчиков
> событий (<module>/ui/<name>/ajax.scm) выбрано задание списочной
> структуры на Scheme (Guile)?

Scheme выбрали как встраиваемый вариант LISP, поскольку
изначально альтератор был проектом на C++ со скриптовыми
привязками -- насколько помню, как раз из-за того, что на
лиспе единообразны код и базовые структуры данных, то есть
сериализация и метапрограммирование естественны для языка
(с этим, правда, вылезли и неожиданные побочные эффекты,
когда sbolshakov@ перебирал движок через глушитель,
пока нужные ему правки добиралсь в очередной выпуск;
в итоге inger@ запретил обычные присваивания и сделал
API с геттерами/сеттерами).

> Ведь древовидную структуру можно определить на любом скриптовом
> языке, поддерживающем ООП (к примеру). Да и просто в текстовом
> файле. А бэкенд нынче модно писать на Python.

Ну вон модные и пишут -- на python с dbus.  Не понимая и того,
что отдельная шина управления -- это тоже фича, а не бага
(сравнивать тут стоит с IPMI, причём dedicated).

> Правда, я не знаю, насколько он безопаснее Scheme, т.к. под
> трассировщиком "сыплет" много лишнего мусора при вызове своих
> библиотек. Возможно, Scheme в этом смысле "чище" работает.

За всё это время в альтераторе при стороннем аудите
была найдена ровно одна уязвимость (алгоритмическая);
тогда же исправлена (уже очень давно).

> А вместо Питона для бэкенда (если выбирать его) я бы брал
> какую-то его минимализированную версию, из которой выкинуты
> "опасные" функции.  Основная кодовая база, как я вижу,
> компилируется в бинарники
> /usr/lib/alterator/interfaces/guile/*.go

Да; с портированием байткодовой машинки в виде guile 1.8
на эльбрус возникли нетривиальные проблемы в 2017 году,
но с тех пор и сам guile переехал на libgc, и апстрим
libgc принял поддержку e2k (более того, заинтересовался).

> Рассуждая таким образом, я пришёл к мысли, что Scheme как раз
> не позволяет делать "опасные" вещи типа os.system(), а
> обращается "с миром" только через прописанные в interfaces/
> интерфейсы.  Из книжек по нему я нашёл:

Гляньте http://altlinux.org/scheme :)

> - SICP (1996);

Есть и на русском:
http://r-5.org/files/books/computers/languages/lisp/Harold_Abelson_Gerald_Sussman_Julie_Sussman-SICP-RU.pdf

> P. S.
> Было бы также интересно поглядеть на версии alterator <= 1.0.1, на
> которые ссылается alterator/changelog.old
> Хорошо, что есть alterator/doc/internals/*.html (там есть даже todo.html
> и evolution.html)

Это надо смотреть альтовые дистрибутивы ~2001 года,
хотя если мне не изменяет склероз -- то из них
первая итерация альтератора входила в ИВК Кольчугу
и имела весьма ограниченное хождение.

-- 
Michael Shigorin
http://altlinux.org/elbrus


Подробная информация о списке рассылки community