PBXB64 0.50.0-V20 -- Distribution V4 bundle
============================================

Release label: 0.50.0-V20 (Distribution V4 bundle)
Packaged: 2026-09-12
Previous bundle label: 0.50.0-V19 (Distribution V3 bundle)

WHAT HAS BEEN DONE SINCE THE V19 BUNDLE

- Rebuilt PBXB64.exe from the current project source (2026-09-12 release
  build) and advanced the version label to 0.50.0-V20 per the distribution
  versioning policy.
- UPX-packed PBXB64.exe (19,797,513 -> 5,947,913 bytes, 30.0%).
- Refreshed all four reference help files (English, German, Spanish, French)
  from the current Help sources; these are newer than the V3 bundle copies.
- Refreshed the sample and include corpora:
  * `Includes/` replaced the V3 bundle's stale 354-file `.inc` subset with
    the current canonical 1228-file `.pbi` PowerBASIC include package
    (64-bit `QUAD` handle declarations; 155 of the old `.inc` copies carried
    outdated declarations). Five `api_smoke*.pb` test programs were removed
    from that folder; its two README files are retained.
  * `Examples/` gained the 164 samples that exist in the current release
    template but were absent from the V3 bundle (B64 language samples and
    container samples), for a total of 1,395 files.
  * `c17_headers/` was already the current set (includes `pbxb64/hlib.h`).
- Removed stale build byproducts from the carried-over sample corpus
  (compiler-generated `.exe`/`.obj`/`.asm`/`.ast`/`.tokens` outputs).
- The executable is unsigned and awaits Authenticode signing; SHA256.txt
  must be refreshed after signing because the executable hash changes.

----------------------------------------------------------------------------

PBXB64 V19 — Distribution V3 bundle
====================================

This is the V19 compiler packaged for the Distribution V3 editor bundle.

Highlights since V18:

- Assembler hardening: register names can no longer be used as data
  labels in memory operands.  `[rel ch]` and friends now raise a clear
  diagnostic ("register names ... cannot be used as data labels")
  instead of silently assembling to an unexpected address.
- Example set extended: the assembler examples now number 01-39 in
  ASM-Samples (plus an Optimized Samples series).  This release adds
  the 20 large textbook-style lessons: bubble sort, binary search,
  string instructions, hex dump, matrix multiply, linked-list walk,
  stack machine, bit tricks, CRC-32 from scratch, number conversion
  (itoa/atoi), string search, insertion sort, xorshift32/LCG random
  generators, bit reversal and Gray code, recursion, Euclid gcd/lcm and
  fraction reduction, Horner evaluation and square-and-multiply powers,
  statistics (sum/min/max/mean/variance), jump-table opcode dispatch,
  and palindromes.  Every lesson compiles and runs standalone; exit
  code 42 means all checks passed.
- All prior examples were re-verified end-to-end against the new
  compiler (assembler byte-faithfulness confirmed by disassembly and
  runtime memory dumps).

Bug fixes in this build (all verified):

- Assembler: `//` and `#` comments are no longer rewritten by the
  local-label expander, so tokens like `10100b` inside comments no
  longer produce a spurious "undefined local label reference" error;
  equate substitution also leaves comment text untouched.
- Assembler: R12 is now accepted as an index register (`[rsi+r12*4]`
  etc.); only RSP has no index encoding.  Encodings are byte-identical
  to GNU as output.
- PB: ON ERROR / RESUME NEXT, RESUME <label>, and RESUME RETRY no
  longer crash; the resume-id slot is emitted in the function entry
  block so the error-handler dispatch always sees a valid binding.
- Embedded C (#CCODE): diagnostics now report the real position inside
  the embedded block instead of a bogus host-file line/column.
- Standalone .asm inputs now link the PB runtime: emitted assembly from
  `-S` reassembles into a working image (roundtrip gate 7/7).
- Wide literals: `&H`/`&O`/`&B` constants wider than 64 bits now work
  for INT128/UINT128 (was "integer literal out of range").
- Hex/octal/binary literals containing the digit 0 were truncated
  (`&H40600000` parsed as `0x46`); every digit now shifts the limbs.
  This fixed a whole cluster of runtime failures (BRIDGE EXPORT float
  bit patterns, ROTATE width, typed POKE, EQV/IMP, HI/LO, OEMTOCHR$,
  TYPE SET, control styles, COM variant array, msgbox forms).
- ALIKE(a,b) is the case-insensitive wildcard matcher again (was
  wrongly wired to edit distance); the LIKE/ALIKE pattern test passes.
- VEX gather index/dest width tables fixed: vgatherqps/vgatherqpd/
  vpgatherqd accept the valid XMM/XMM forms and VEX.L now derives from
  the destination width; encodings match GNU as byte-for-byte.

Verification highlights (V19 build):

- assembly / asm help surface: 545/545 passed; after the assembler
  fixes the assembly lane re-ran 2265/2265, plus new regression tests
  w6_comment_literals and w6_neg_rsp_index.
- pb_linkrun_o2: 20/20 passed
- pb_linkrun: previously 1,606/1,614; after the fixes all 8 remaining
  failures pass (4 ON ERROR / RESUME tests, wide-BOM OPEN test,
  embedded-C MSVC test, 2 trace tests).  The two trace tests are
  load-sensitive flakes (~3s COM object creation vs. the 10s run
  timeout under 2-worker load), not compiler defects.
- Additional gates: asm roundtrip 7/7, i686 native backend 9/9,
  COBOL optimization-manifest contract, contract_tests.
- NOTE: the working tree is being actively refactored in parallel
  (C frontend, Logo bridge); embedded-Logo UINT64 read/write tests are
  part of the in-flight Logo bridge work and are not yet green.

Note: PBXB64.exe in this bundle is the release build (CMake release
preset, -O2, UPX-packed) but is NOT Authenticode-signed.  Sign it with
the Certum certificate and refresh SHA256.txt afterwards.

For product information and updates, visit https://smart-ai-robot.com
