The engine says which compiler it needs
The engine has never built on Free Pascal 3.2.2 and cannot: CrossVision.Geometry
sorts points with an anonymous comparer, and function references arrived in
3.3.1. The parser next door does build with 3.2.2, which is where the confusion
came from.
The README now names the requirement. tests/build_linux.sh says so before it
starts, instead of stopping with a syntax error in the middle of a file you did
not write.
The engine also moves to the parser's new loop guard. ArmLoopGuard and
DisarmLoopGuard wrap a whole sweep in DoParse, and each single point in
ComputePolar and ComputeRectangular. A spent budget no longer outlives the
call that set it, and no longer refuses whatever runs next in the same thread.
The pascal-mathparser release for 1.0.7 has the detail.
Delphi 13 and Free Pascal 3.3.1. The component draws through the VCL on Delphi
and the LCL on Lazarus; the engine itself needs neither and builds headless.