Skip to content

QLISP v2.7.2 — Tablet: детерминированный DataFrame-аналог pandas

Choose a tag to compare

@FQingLars FQingLars released this 23 Sep 18:15
· 5 commits to main since this release

QLISP 2.7.2 — Release Notes

Тег: v2.7.2 · Платформы: Linux x86_64, Windows x86_64
Бинарники — сборка CI (Linux: GCC/Ninja/OpenBLAS/OpenMP; Windows: MSYS2 MinGW64), коммит 9fd8d66 ветки main компиляторного репозитория (CI run 35897601582, зелёный). Состав: qlisp (REPL/интерпретатор + JIT), 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 — контрольные суммы всех файлов. Рантайм без LLVM: ldd qlisp — только OpenBLAS/GOMP/libstdc++.

Что нового

Tablet — детерминированный DataFrame-аналог pandas (T0–T9 закрыты)

  • Новый вшитый модуль stdlib/tablet.qlsp (~1300 строк чистого QLisp): tablet/tablet-from-rows, tcol/tcols-pick/trow/tloc/tiloc/twhere, thead/ttail, tdtypes, tastype, tcategorical, tstr-*, tiso-format.
  • Стабильные сортировки (tsort, NA всегда в конец), tunique/tvalue-counts (тайбрейки по первому появлению), NA-дисциплина (tisna/tfillna/tdropna).
  • Группировки и соединения: tgroupby/tgroup-agg (sum/mean/count/min/max/first/last), tmerge (inner/left/right/outer с зафиксированным порядком), tappend.
  • Статистика и окна: tsum/tcol-mean/tcov/tcorr, tcumsum/tcummax/tcummin, trank (average-tie), tshift/tdiff, trolling/texpanding.
  • I/O: tcsv-read (сам типизирует колонки; RFC-4180 с кавычками и переводами строк в полях), tcsv-write, tjson-rows/tfrom-json-rows, tcol->tensor (числовая колонка без NA → Tensor F32).
  • Контракт детерминизма: вывод побитово воспроизводим — порядок вставки, стабильные сортировки, отсортированные ключи groupby, зафиксированный порядок merge; tests/tablet.qlsp — 156 проверок, включая батарею детерминизма (двойной прогон, immutability chain).
  • MultiIndex — явно вне области видимости модуля.

Ядро

  • Строгий if: ровно 2–3 аргумента; четвёртая форма — ошибка программы («if: too many forms (use cond or progn for branches)»), JIT-обход зеркалит проверку (TEMP_ISSUES #36).
  • io: read-csv разворачивает переводы строк внутри кавычек (RFC-4180).
  • datetime: гражданский календарь epoch→ISO для tiso-format.

Инструменты

  • tools/qlsp-check.py — pre-commit проверка stdlib через диагностики qlisp-lsp и defun-outline; AGENTS.md фиксирует обязательный прогон.

Тесты: 64 сюита зелёные (Release, Linux), включая tablet.qlsp.