Skip to content

Explore table-driven tokenizer dispatch plus bulk fast-path scanning #38

Description

@isomorphisms

Sequencing status — 2026-08-27

This remains a future architecture/benchmark issue under isomorphisms/idric-arm-thumb#31. Draft PR #40 is a bounded JVM experiment and may remain evidence, but it does not settle IB's tokenizer semantics, Idriç byte/text representation, or ARM lowering. Do not extend or integrate it as the browser implementation while the language gates are open.

Follow-up to the tokenizer/parser branchiness work: investigate a tokenizer architecture that separates ordinary-byte scanning from exceptional-byte state-machine work.

Core idea:

  • classify the current byte/character into a small class;
  • use something conceptually like transition[state][class] -> {new state, action} instead of a pile of nested conditionals;
  • recognize that most document bytes are boring and scan whole runs until a small set of special bytes appears;
  • in ordinary text, examples include <, &, and possibly NUL/newline depending on the semantic boundary;
  • inside a tag, examples include whitespace, >, /, =, and quote characters;
  • use word-at-a-time or SIMD scanning where profitable, with the full tokenizer/state machine handling only the exceptional bytes.

For IB, prototype this against the HTML/XML/prepaint path and benchmark it on realistic documents. Keep the semantic oracle exact: chunk boundaries, quoted attributes, entities, malformed input, NUL handling, UTF-8 boundaries, and any HTML-vs-XML differences must not change merely because the hot path is widened.

The important architectural question is whether IB can expose this structure explicitly enough that Idriç and the ARM/Thumb backend can preserve it instead of lowering it back into branch forests.

Companion issues:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions