This release is mostly to make docs.rs show the various feature flags in the docs, but I also went ahead and exposed all the ensure_v2
functions, since they didn't really need to be behind a feature flag, even if they're not that useful outside of v1 support.
- api: unflagged ensure_v2 fns, and docsrs improvements (99dec9fa)
This release updates kdl-rs
to support the latest KDL 2.0.0
spec.
Additionally, KDL 1.0.0 support has been retained behind v1
and v1-fallback
feature flags. This version of kdl-rs
is able to convert back and forth
between each.
- compliance: update to latest 2.0 spec (#103) (4734b060)
- api: update the KdlNode and KdlDocument APIs to be more Vec-like (#101) (683e87a1)
- v1: add rudimentary, optional, KDL v1 parsing (#104) (6a7248c4)
- v1: Add utility to auto-translate v1 to v2 (c486cda7)
- error: Rename KdlParseFailure back to KdlError (12b2fd2f)
- v1: add v2 -> v1 translation and fix translations to not autoformat (b332eed4)
- compliance: pull in final extra tests and change VT to newline (3e8b2f44)
- v1: remove v1 from default features (3e5d7a33)
- clippy: clippy fixes (4cbc3224)
- autoformat: fix autoformatting of v1 -> v2 (37255b0b)
- misc: other tiny clippy/fmt issues (ec73cdfa)
- v1: sigh. forgot to remove v1 from default features again (fef7c58b)
- clippy: clippy fixes (b097c7e2)
- fmt: cargo fmt (0c59b29a)
This version can now parse the "final" draft of 2.0.0, which is not quite released, but should represent what the final version will look like. Still, there might be last-minute changes based on major issues discovered in the next few days.
- fmt: Configurable autoformat with
FormatConfig
(#95) (014c7c57) - errors: error collection/recovery and reporting improvements (#94) (f31750a0)
- parser: Update parser to 2.0.0 (#100) (a1919a0e)
- draft: 2.0.0-draft.6 support (#92) (4d4ef759)
- parser: update to 2.0.0-draft.5 (#90) (2802578b)
- parser: refactor number parsing to support generic number types (fb7c92b5)
- license: fix format of license file (#87) (cc2995d7)
- value,entry: i128 for integers, autoformat safe KdlEntryFormat (#91) (05959558)
- parser: refactor try_parse to be lift more weight (a6419952)
- api: Fix
insert
andremove
behavior forKdlNode
(be0dc170)
- parser: v2 parser (#70) (c9898cdb)
- deps: bump miette and thiserror (db0a395f)
- api: Improve .get()/.entry() APIs to be more consistent with Rust conventions (3d8778a6)
- BREAKING CHANGE: KdlNode::get* are now KdlNode::entry*. Additionally, KdlDocument::get_dash_vals has been renamed to KdlDocument::get_dash_args.
- 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
- kql: implement KQL query engine (#61) (6d1a516e)
- parser: update to 2.0.0-draft.5 (#90) (2802578b)
- parser: refactor number parsing to support generic number types (fb7c92b5)
- value,entry: i128 for integers, autoformat safe KdlEntryFormat (#91) (05959558)
- license: fix format of license file (#87) (cc2995d7)
- parser: refactor try_parse to be lift more weight (a6419952)
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! �