Skip to content

FlatNode: read-only columnar full-DOM reader (experimental, planned for v0.4.2) #82

Description

@mathieu17g

v0.5 will add a fourth reader alongside Node/LazyNode/Cursor: parse(FlatNode, str) — a read-only, full-document reader backed by a columnar store (zero-copy into the retained source). The validated prototype builds ~2× faster than Node, keeps GC cost near zero (~96× less on an 882k-node document), and puts full-DOM extraction on par with libxml2 — in pure Julia.

It targets read-heavy workloads: large documents parsed once and queried repeatedly (e.g. spreadsheet shared-string tables, RESQML/scientific metadata), and batch pipelines sensitive to GC pauses. Node remains the mutable DOM; existing code is unaffected.

Caveats by design: read-only, whole-store retention while any node handle lives, Int32 node indices. If your package would benefit — or a caveat matters for your use case — comments welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions