Repository navigation
QLISP v2.8.1 — якорение plist, enc-спайн, production-тесты
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.