This was one of those weeks where the changelog looks chaotic but the story underneath is simple: I went hard at making compiled NLP++ analyzers and knowledge bases actually run correctly, and I fixed the cloud/Linux/macOS build so it stops silently rotting. Fourteen engine releases in six days (v3.1.30 → v3.1.43) — that’s not scope creep, that’s a release train of one-bug-at-a-time fixes, each one verified against the cloud build before moving to the next.
Compiled mode: closing the gap with interpreted mode
If you’ve been compiling your analyzers to native code for speed, this week mattered a lot. I found and fixed a string of bugs that only show up once you’re running compiled KBs and passes instead of interpreting them live:
- Pass 16/17 crashes —
pnvartypeandArun::attrtypewere misbehaving in compiled mode (attrtype was always returning 0), which was silently blocking later passes from ever running correctly. - Comparison ops — added
Arun::vargt/varltfor compiled mode and resynced the function tables so var comparisons actually work. sem_to_strcrash on non-zeroRSLONG/RSFLOATvalues — fixed.- Null
cgerrSEGV inCG::popValwarnings — guarded. - KB loading — compiled KBs were getting double-loaded, and there was a linkage mismatch in the generated
kb_setup.h/cppwrapper that broke v3.1.24. Both fixed, plus a real wrapper generator so compiled-KB load is consistent. - File output —
SaveKB-produced files were coming out empty in compiled mode because writes to var-LHS<<weren’t being flushed;Arun::outwrites now flush immediately too, so you can actually watch diagnostic output as it happens instead of after the process exits. - A sneaky unspecified-evaluation-order bug in generated function-call args — hoisted args into temps so behavior doesn’t depend on compiler whim.
compile-analyzer.ps1now also buildsrund.dllfromrun/, andrun_analyzeris properly exported from the compiledrun.dllon Windows.
Net effect: compiled analyzers and KBs are noticeably more trustworthy this week than last week. If you hit a compiled-mode issue before, it’s worth re-testing against v3.1.43.
Cloud/Linux and macOS build fixes
Separately, I tracked down why the cloud Linux build kept breaking:
- Generated
St*.cppfiles weren’t includingprim/libprim.h, which triggered_TCHARerrors on Linux. - Generated headers (
ehead.h,rhead.h, per-pass headers) now emit forward-slash include paths instead of Windows-style ones. <tchar.h>and<streamClasses.h>are now gated behind#ifndef LINUXin the generatedanalyzer.h.StdAfx.his now emitted on Linux too, at all the emission sites (there were more than one — round 2 caught the rest).
On macOS, I dropped the -std=c++11 override in build-macos.yml so std::filesystem actually works instead of silently falling back.
VS Code extension
- Fixed the run-mode toggle getting stuck when compiled modes weren’t available — it now cycles freely instead of trying to be clever about gating.
- Fixed a colorizer bug where the “Update Colorizer” command wasn’t reading the template from the running extension.
- Cleaned up packaging so
.vscode/,.claude/, and log files don’t end up in the shipped.vsix. - Released v3.1.16 → v3.1.19 as these landed.
Next
With compiled mode in noticeably better shape, next up is stress-testing longer NLP++ pipelines end-to-end in compiled form and making sure the cloud build stays green as I keep pushing on this. If you’re compiling analyzers, give the latest release a spin and let me know what breaks.