Skip to content

QLISP v2.8.1 — якорение plist, enc-спайн, production-тесты

Choose a tag to compare

@FQingLars FQingLars released this 02 Oct 06:03
· 4 commits to main since this release

QLISP 2.8.1 — Release Notes

Тег: v2.8.1 · Платформы: Linux x86_64, Windows x86_64
Бинарники — сборка CI, коммит 3fe9148 ветки main компиляторного репозитория (CI run 36874257672, зелёный). Состав: qlisp, qlisp-lsp, qvalent.

Файл Платформа Состав
qlisp-linux-x86_64 Linux x86_64 REPL/интерпретатор + JIT
qlisp-lsp-linux-x86_64 Linux x86_64 Language Server
qvalent-linux-x86_64 Linux x86_64 пакетный менеджер
qlisp-windows-x86_64.zip Windows x86_64 qlisp.exe, qlisp-lsp.exe, qvalent.exe

SHA256SUMS — контрольные суммы всех файлов.

Что нового — якорение plist + enc-спайн + production-тесты

enc-спайн сериализатора (закрыт предсказанный UB). RuntimeEnc::enc больше не рекурсирует по cdr-спайну: спайн проходится итеративно, каждый узел регистрируется в memo (паритет с декодером), общий/циклический хвост — tag-12 back-ref. Байт-формат не менялся. Зеркальная половина: RuntimeDec::dec (dec_spine_cell) — спайн итеративно, ячейки сшиваются снизу вверх, порядок memo-регистрации побайтно совпадает с энкодером. image.qlsp под -O2+ASan: exit 0 (не проходил с 2.8.0). Добавлен энкодерный детектор циклов через non-cons контейнеры (closure/jitprog/hloprog) — падает сразу с kind'ом объекта.

Якорение plist (щель put закрыта). Слоты property lists — stable-слоты леса: (put sym prop v) переписывает ключ plist:<sym>:<prop> по порядку take → anchor нового клона → release старого; (remprop sym prop) — досрочная смерть по явной просьбе; plists_install при LOAD-IMAGE сперва выпускает старые якоря, потом ставит образ-значения. Скалярный fast-path put (fixnum/flonum/symbol) — без якорей.

Тесты. tests/plist_anchor.qlsp (8): overwrite 7×512×512 держит RSS в 1024 КБ, remprop освобождает долю слота при живом имени, registry-drain, plist переживает SAVE/LOAD-IMAGE. tests/production_mem.qlsp — реальные задачи: тренировка 120 эпох (45.6 → 0.014) с per-epoch чекпоинтами, наклон 8 КБ; своп моделей через plist; image-циклы; compile-churn с возвратом реестра к базлайну. Корпус 81/81 по exit-code.