Skip to content

Update README and changelog for the inline-value representation#44

Merged
Diggsey merged 1 commit into
masterfrom
docs/inline-values-readme
Jul 15, 2026
Merged

Update README and changelog for the inline-value representation#44
Diggsey merged 1 commit into
masterfrom
docs/inline-values-readme

Conversation

@Diggsey

@Diggsey Diggsey commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Documentation only — no code changes. Brings the README and changelog in line with the inline-value representation merged in #42/#43.

The docs still described the pre-inlining design, and in one place mis-stated the new one:

  • The README's technical sections documented the deleted 512-entry static integer array, a 2-bit tag with 4-byte alignment, and a "24-bit heap allocation" for small integers, and stated that arbitrary-precision numbers were not supported.
  • The README's INumber section and the changelog both described inline numbers as an exact decimal (mantissa * 10^exp). That is only true with arbitrary_precision; by default the inline slot is a base-2 binary float (mantissa * 2^exp), so every inline number is exactly an f64.

Changes

README

  • IValue technical section: 3-bit tag / 8-byte alignment; seven pointer tags plus the inline family (tag 0), rather than "4 heap types / 2 bits" and the 0x1/0x2/0x3 constant pointers.
  • INumber technical + usage sections: inline mantissa × base^exp numbers (base 2 by default → always exactly an f64; base 10 under arbitrary_precision → exact decimal), 56-bit mantissa (24-bit on 32-bit), 8-byte heap spill — replacing the static-array description and the "i8/u8 no-alloc, 24-bit 4-byte-alloc" claims.
  • IString: short strings are stored inline; longer strings are interned.

CHANGELOG (0.1.7)

  • Fixed the inline-number wording (base-2 binary float by default, not exact decimal).
  • Added the missing arbitrary_precision feature entry.

The docs still described the pre-inlining design and mis-stated the new one:

- README's technical sections described the deleted 512-entry static integer
  array, a 2-bit tag with 4-byte alignment, and "24-bit heap allocation" for
  small integers, and claimed arbitrary-precision numbers were not supported.
- The README's INumber section and the CHANGELOG both said inline numbers are
  an exact decimal (`mantissa * 10^exp`). That is only true with
  `arbitrary_precision`; by default the inline slot is a base-2 binary float
  (`mantissa * 2^exp`), so every inline number is exactly an `f64`.

Rewrite the README's IValue/INumber/IString technical and usage sections for the
3-bit tag / 8-byte alignment scheme, inline small values (`mantissa * base^exp`,
base 2 by default and base 10 under the feature), and inline short strings. Fix
the changelog's inline-number wording and add the missing `arbitrary_precision`
feature entry.

Docs only; no code changes.
@Diggsey
Diggsey merged commit c90cb64 into master Jul 15, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant