Skip to content

Turtles v0.5.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 12:26
· 2 commits to main since this release

ARM strings now use UTF-8 storage and Unicode code-point operations. len counts code points; byteLen reports storage bytes; charAt, string @ and indexOf use code-point positions. charCode constructs a full Unicode scalar, replacing invalid scalar values with U+FFFD. The JavaScript host retains its existing UTF-16 code-unit behavior.

Parser streams use byte cursors on ARM, decoding the next code point directly. This keeps sequential parsing efficient without storing a second length in every string. The 64 KiB input buffer is allocated at boot instead of embedded in the image.

The raw image is 58,935 bytes, down from 159,270 bytes. Runtime code grew slightly; the reduction comes from string data and the removed static buffer.

Validated in native QEMU with upstream T0 assertions, parser/SOM fixtures, Unicode and malformed-byte cases, numeric parsing/formatting checks, and input overflow/reset checks. The shared readers were also checked on the unchanged JavaScript T0 host.

One image includes T0, JS-like and SOM readers. Run instructions and browser REPL: https://adamvy.github.io/TURTLES/