Skip to content

nightly-20260630

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jun 23:11
c2b2914

Changed

  • decompilation reference: show the pb3.6 source next to its decompilation, and broaden coverage of features and optimizations + gen-decompilation.sh now prints the pb3.6 source as a visible block right above the decompilation (was hidden in a collapsed
    ), so each lowering is readable at a glance + 13 new feature examples closing every uncovered pb36 gate + key sub-variants: XMS/EMS arrays, DEFER, wide integers (INT128+), tuple return+destructure, tuple parallel swap, FOR EACH over a range, capturing lambda, bit-field members, TYPE ALIGN, TYPE explicit-AT overlay, TYPE constructor, generic procedure, manual coroutine driver - 43 feature + 3 optimization examples now + pure-function folding (O25) made source-visible: --emit-basic --optimize consults OptPureFold.Analyze, so a pure constant-argument call folds to its literal in the decompilation (PRINT Cube&(4) -> PRINT 64) - the third optimization example, alongside dead-code (O2) and DEF SEG (O10), which are the only optimizer passes whose effect reaches the source level (the rest rewrite machine code below emit-basic) * back-emitter lowerings so the new features round-trip with identical output (42/46 now): * a UDT/tuple-returning FUNCTION (sret) emits as a SUB with the result buffer as a trailing BYREF parameter and the result-via-name assignments remapped to it (was FUNCTION ... AS NONE with a 3-vs-2 argument mismatch that did not recompile) * a layout-transformed TYPE (bit-fields, ALIGN, SIZE, explicit AT) emits its RESOLVED layout - packed $bits words and STRING*n padding reproducing the byte offsets - so member access binds and LEN() agrees; overlapping AT offsets (a union view) fall back to the surface form * a constant-amount logical shift lowers to multiply / integer-divide by 2^k (SHL/SHR have no pb35 operator usable in an assignment RHS), exact for the masked bit-field values * the 4 genuinely pb35-inexpressible cases stay honestly marked (output diverges): arithmetic shift-right + rotates, far-pointer offset arithmetic, capturing closures (no pb35 closure env), and an AT-overlay union view + 2 back-emitter tests (pure-fold visibility, sret-as-SUB); all 2179 unit tests green, 246/246 corpus compile-clean, output-equivalence 42/46 (c2b2914)