From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 23 Sep 2025 14:51:05 +0300 From: Michael Shigorin To: community@lists.altlinux.org Message-ID: <20250923115104.GL19218@imap.altlinux.org> References: <02997b7a-ea96-498b-8bf4-510004c158a5@yandex.ru> <20250923060638.GJ19218@imap.altlinux.org> <5054225.31r3eYUQgx@zerg.malta.altlinux.ru> <3e6a9e45-0790-4e3d-b7a8-04035f7643c0@yandex.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3e6a9e45-0790-4e3d-b7a8-04035f7643c0@yandex.ru> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Comm] =?koi8-r?b?79TMwcTP3s7PxSDMz8fJ0s/Xwc7JxSDNz8TVzMXKIGFs?= =?koi8-r?b?dGVyYXRvcg==?= X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Community general discussions List-Id: ALT Linux Community general discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Sep 2025 11:51:05 -0000 Archived-At: List-Archive: List-Post: On Tue, Sep 23, 2025 at 11:18:11AM +0300, Alexander Lubyagin wrote: > Вопрос немного в сторону. А почему для определения обработчиков > событий (/ui//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