v0.3.0 — persistent SWI-Prolog engine, Unicode atoms
0.3.0
Persistent engine & performance
- Persistent SWI-Prolog engine: single long-lived
swiplprocess, JSON-lines pipe protocol, workspace reloaded per request instead of booting Prolog per call. Same API, identical solution ordering. - Streaming query results: solutions written straight to the engine output via
json_write/3— no double serialization, low memory on large result sets. - Benchmark:
benchmarks/persistent_engine_benchmark.py— ~3×–42× steady-state speedup (mean ~14×).
Language (Euclid-IR)
- Unicode atoms (
\p{L}): CJK, Cyrillic, Greek… names, arguments and rule IDs, e.g.父(张三),Бог(Иван). Case folding is ASCII-only. - Canonical rule-ID marker is now
# RULE:(parser stays case-insensitive).
Docs
- README "Scalability" section; IDEAS/CHANGELOG updates.
Requires SWI-Prolog system package (local / install server, not in-browser).