The long-awaited KDL v2 parser is upon us! This is a major rewrite of kdl-rs to make it comply with the KDL v2 spec).
It also comes with some shiny new features and some significant API changes:
- The parser can now handle multiple errors per parse operation, continuing the parse and moving on to the next error when something doesn't go quite right.
- Value types have been simplified. You'll need to rely on
KdlEntry.value_repr
to change how a value is actually rendered.
There's a big caveat with this release: There's some known bugs around autoformatting when comments or ;
terminators are present, and the error reporting on the parser is pretty bad right now (but will be fixed by release time).
This alpha is meant as an initial preview for folks who want to get an actual feel for KDL v2, and to make additional comments on the language before it's finalized.
- parser: v2 parser (#70) (c9898cdb)
- api: Fix
insert
andremove
behavior forKdlNode
(be0dc170)
This release upgrades miette and thiserror in lockstep, bringing in syn2, in order to avoid potential issues with the upgrade.
- deps: bump miette and thiserror (db0a395f)
This release makes some breaking API changes, but most notably, introduces support for the KDL Query Language.
- kql: implement KQL query engine (#61) (6d1a516e)
- api: Improve .get()/.entry() APIs to be more consistent with Rust conventions (3d8778a6)
- BREAKING CHANGE:
- spans: rework the span API to be strictly by-val (#60) (04471a53)
- BREAKING CHANGE: this removes all the
.span_mut()
methods and changes the signature for.span()
.
- BREAKING CHANGE: this removes all the
- errors: Add better diagnostics for errant plain identifiers in nodes (#59) (3ddbfec8)
- spans: add spans to most elements (#57) (b17ef8e2)
- deps: bump miette (8d0f36ce)
- formatting: Fix formatting when decoration is not present (#56) (2e9c0447)
- fmt: Add clear_fmt_recursive method (#45) (cd2d6e42)
- entry: Add accessors to entry type. (#43) (afccf012)
- compliance: pull in spec test suite and fix issues (#40) (58a40fdf)
- fmt: shiny new comment-preserving formatter! (#38) (12d373a1)
Hello again!
kdl-rs 4.0.0 is a complete rewrite, featuring a full-fledged "document-oriented" parser: that is, formatting, whitespace, comments, etc, are all preserved and can be programmatically manipulated. KDL documents are fully round-trippable, without losing any of that human-written content!
This crate will, for the time being, not include a serde-based parser, but
there's also crates like knuffel
and
kaydle
now that do probide serde (or
serde-like) functionality. You should definitely check those out if you're
looking for that kind of workflow!
Please give this version a whirl if you've been curious about using KDL for your own projects, and let me know what can be improved, or even what you love about it!
- api: complete rewrite into document-oriented parser (#29) (364ea617)
- BREAKING CHANGE: Completely new API and bumped MSRV to 1.56.0.
- tests: add test for kdl-schema.kdl (#30) (ad34cfd9)
- types: add type annotation support (#31) (16c82f1e)
- errors: improve parsing errors and fix some bugs (#33) (8ed6a5cd)
- clear_fmt: add methods to clear formatting and reset it to default (892bf06e)
- errors: overhauled error reporting a ton (d63f336d)
- len: add APIs to calculate component lengths (#36) (177c42ca)
- spec: update parser to handle KDL 1.0.0 (f811c5c8)
- BREAKING CHANGE: Various things have changed in the process of moving to KDL 1.0.0. Please test your stuff
- license: change license to Apache-2.0 (0dbf75c7)
- BREAKING CHANGE: This is a significant licensing change. Please review.
It's been a while! This release brings kdl-rs much closer in sync with the actual spec.
- deps: Remove nom dependency on
bitvec
andlexical
(#14) (9bc5363b) - numbers: Fix parsing of non-integer and non-decimal numbers (#13) (c1b7c25c)
- display: implemented Display for KdlNode (#6) (b8c8b527)
- docs: Add documentation for the entire crate (#16) (94190697)
- identifier: much larger character set for identifiers (not just alphanumeric), to match spec more closely (#7) (95a1ee3e)
Initial Release! �