All notable changes to this project are documented here. Versions follow Semantic Versioning. Format follows Keep a Changelog.
-
dom: Keep mixed content and read CDATA sections literally ⚠ BREAKING CHANGE
-
parser: Report malformed input and file errors through iostat/iomsg
-
parser: Keep the prolog and write it back in stringify
-
dom: Save the document to a file with xml_file%save
-
parser: Keep comments and PIs inside the document
-
parser: Optionally keep leading/trailing spaces of attribute values
-
index: Scan files and read tag content on demand
-
writer: Stream XML to a file, a unit or memory
-
writer: Flush the pending start tag for direct writes to the unit
-
values: Read attributes and contents as numbers and logicals
-
dom: Add tags under a parent with add_tag(parent=, id=)
-
tree: Resolve namespaces and find tags by namespace
-
dom: Share tree queries between DOM and index
-
parser: Drive the tokenizer through a resumable feed and a builder
-
tokenizer: Make the tokenizer and the builders pure
-
tag: Parse single tags and attribute streams with the tokenizer ⚠ BREAKING CHANGE
-
guide: Document the tokenizer, mixed content, CDATA and references
-
guide: Document error reporting, the prolog and xml_file%save
-
guide: Document xml_index, chunked parsing and tag accessors
-
guide: Document the streaming writer
-
guide: Document typed values for attributes and contents
-
guide: Document single-tag parsing and nested add_tag
-
guide: Document compiler support and the fobis fetch setup
-
guide: Document namespace resolution and queries
-
parser: Replace string-search parsing with a single-pass tokenizer
-
parser: Stop reading past the source end in xml_tag tag search
-
dom: Normalize literal blanks in attribute values on read
-
parser: Support sources larger than 2 GiB ⚠ BREAKING CHANGE
-
portability: Make FoXy work with ifx and nvfortran
- parser: Parse files in chunks instead of loading them whole
- dom: Decode character references in content and attribute values ⚠ BREAKING CHANGE
-
bench: Add parse/stringify/lookup benchmark with fobos modes
-
dom: Make parse, stringify and lookups linear in the tag count
- dom: Find tags by name, path or parent and read them by ID
-
docs: Untrack package-lock and pin esbuild for lock-free vite build
-
docs: Set vite build target to es2022 for version-robust doc builds
-
ci: Run install smoke test from the release workflow
-
build: Exclude third-party docs/ and scripts/ sources from builds
-
parser: Match nested same-name end tags in source order
-
parser: Stop self-closing tags inheriting the previous tag content
-
dom: Keep tag IDs consistent across delete_tag and add_tag
- install: Run FoBiS.py fetch after wget tarball extraction
- install: Derive extracted dir from tarball name to avoid broken pipe
- install: Add general-purpose install script
- Refactor README style and update install instructions
- Add VitePress site and overhaul project infrastructure
- Fix parse support of nested and repeated tags