PBXA32 V4 — Distribution V4 bundle
====================================

Release label: V4 (Distribution V4 bundle)
Packaged: 2026-09-12
Rebuilt: 2026-09-12 with the real-valued math precision fix
Previous bundle label: V3

WHAT HAS BEEN DONE SINCE THE V3 BUNDLE

- Rebuilt PBXA32.exe from the current project source and UPX-packed it.
- Refreshed PBXA32_Help.chm from the current Help sources, including the
  corrected instruction listings for the math commands.
- Carried over the V3 Includes and Samples corpora unchanged.
- Brought the bundle layout in line with the Distribution V4 release.

REAL-VALUED MATH PRECISION FIX

The real-valued math commands were routed to integer-typed runtime helpers, so
a real argument had its IEEE-754 bit pattern read as an integer and the result
was truncated back to 32 bits. These commands returned wrong values for
double/extended arguments:

  TAN    TAN(1.0) returned 1            (now 1.5574077)
  ATN    ATN(1.0) returned garbage      (now 0.7853982)
  EXP    EXP(1.0) returned garbage      (now 2.7182818)
  LOG    LOG(1.0) returned 16           (now 0.0)
  ACOS ASIN ATN2 HYPOT COSH SINH TANH EXP2 EXP10 LOG2 LOG10 FLOOR CEIL FRAC

Each of those now evaluates on the x87 stack in extended precision and returns
a correctly typed value in assignment, expression, and comparison contexts.
Integer arguments are widened rather than reinterpreted.

Three further defects in the same area were corrected:

- PRINT printed a SINGLE as its raw 32-bit pattern (3.5 became 1080033280) and
  read only the low eight bytes of a ten-byte EXTENDED value. Both now format
  correctly.
- ISFINITE / ISINFINITE / ISNAN / ISNORMAL / ISSUBNORMAL / ISZERO tested a
  garbage operand, because the operand was declared as a 32-bit integer where
  the runtime helper reads a binary64 argument.
- The --dump-asm-before-opt / --dump-asm-after-opt listings printed "op" for
  248 opcodes, including every x87 instruction. The listings now name them.

KNOWN LIMITATIONS

The string-unpack conversions remain 32-bit stubs and are not part of the
signed-off capability set: CVD / CVE / CVQ / CVDWD / CVBYT / CVCUR / CVCUX and
the numeric conversions CDOUBLE / CSINGLE / CQUAD (CDBL / CSNG / CQUD). Their
Help pages are marked IMPLEMENTED but the conversions are incomplete; they are
the next item on the PBXA32 completion ledger.

CURRENT COMPILER STATE

The compiler produces native Windows x86 executables without an external
compiler or runtime. The bundled executable is UPX-packed and awaits
Authenticode signing as the final Distribution V4 release step; SHA256.txt
must be refreshed after signing because the executable hash changes.

Qualification highlights (from the PBXA32 project, 2026-09-12):
- Complete PBXA32 test lane, standard tier: 205/205 passed
  (115 stage gates + 71 end-to-end + 16 smoke + 2 infrastructure, 0 failures).
- Release CTest suite: 76/76 passed.
- Stage N math lane: 168/168 passed, including 11 new assertions covering the
  extended-precision contract and the corrected PRINT widths.

SIGNATURE AND PACKAGE

Sign PBXA32.exe with the Certum code signing certificate and refresh
SHA256.txt afterwards. Until then the bundled SHA256.txt matches the
current, unsigned executable.

This V4 bundle folder contains the compiler, Help, Includes, Samples,
installation instructions, and this release note. The V3 folder remains as the
historical previous-bundle archive.
