Log message:
taplo-cli: update to 0.6.0.
One of the reasons why I always kept postponing patches and updates
in this project was the fact that it was pretty hard to maintain.
When I originally wrote most of it, I barely had time and just
wanted to get features out ASAP.
The Even Better TOML has recently passed the 100K installs mark,
I felt that some cleanup and care was long overdue.
This PR is pretty much a rewrite and/or a major refactor of Taplo
with the only exception of the parser, which I would love to rewrite
as well but I'm already pushing my time-limits.
Features
* Rewrite of the DOM, it now uses a reference-counted implementation
where each node is cheap to clone and to juggle around.
* Rewrite of the CLI as well, it is now a first-class citizen not
just something quickly thrown together.
* Integration of jsonschema, most (all?) JSON Schema features are
now supported and the limitations of the current implementation
are non-existent.
* Support of schema store catalog and schemas
* The shared code between the CLI and the language server is now
properly extracted into taplo-common, so the CLI and the LSP are
no longer out of sync.
* The external environment is now abstracted away into a trait, so
both the LSP and the CLI should run pretty much anywhere with
minimal plumbing
* tracing is used for all logging
* Refactor and workspace support in the LSP
* All toml-test tests now pass
* Proper benchmarks via criterion (the new DOM is slightly slower
initially due to allocations, but not too much)
* Completions and hover in the LSP (the building blocks are there,
but the cursor queries require some plumbing)
* The LSP is part of the CLI as well, and the VSCode extension
works with it, WASM bindings are yet to be reimplemented
* Flexible configuration options in the LSP
* Proper directives in TOML files (e.g. schema)
Breaking Changes
Probably a lot, but here are a few notable ones:
* The DOM API is completely different, although migration should
be rather easy.
* Chrono feature has been removed, it can be reintroduced later
though if needed.
* As with the DOM layout, error types have also changed.
* Date types are now separate syntax-kinds.
* Even though we had no MSRV policy, I clearly used 1.58 features
during the rewrite
* The Even Better Toml vscode extension also gets a facelift with
some configuration options changed
|