Releases: projectsyn/reclass-rs
v0.5.0
Summary
We're pleased to announce a new release of reclass-rs.
This release doesn't introduce new functionality, but updates a number of dependencies. Notably, the pyo3 dependency is updated to 0.22 and the reclass-rs code has been updated to use the new pyo3 Bound
type when creating Python objects from Rust.
Changes
12 changes since v0.4.0
🛠️ Minor Changes
- Update pyo3 to v0.22 and update code to use pyo3
Bound
types (#123)
🔗 Dependency Updates
- Update Rust crate walkdir to 2.5.0 (#110)
- Update Rust crate indexmap to 2.2.6 (#119)
- Update Rust crate regex to 1.10.4 (#120)
- Update Rust crate rayon to 1.10.0 (#121)
- Update Rust crate serde_yaml to 0.9.34 (#122)
- Update Rust crate yaml-merge-keys to 0.7.0 (#125)
- Update Rust crate anyhow to 1.0.82 (#127)
- Update Rust crate chrono to 0.4.38 (#129)
- Update Rust crate serde_json to 1.0.116 (#130)
- Update Rust crate serde to 1.0.200 (#134)
- Update Rust crate pyo3 to v0.22.4 (#137)
v0.4.0
Summary
We're pleased to announce reclass-rs v0.4.0.
This release adds better support for initializing Reclass instances from Python.
The release contains breaking changes for users that have already upgraded to v0.3.0. Please see the linked PRs for details.
Changes
3 changes since v0.3.0
🔎 Breaking Changes
- Refactor
Reclass
constructor classmethods (#104) - Allow disabling reclass-rs diagnostic messages for unknown config options (#106)
🚀 Features
- Add Python classmethod
Config.from_dict()
(#105)
v0.3.0
Summary
We're pleased to announce reclass-rs v0.3.0.
Apart from dependency updates, this release brings support for a number of additional Reclass features. Most notably, reclass-rs v0.3.0 supports the Reclass option compose-node-name
.
Existing users should note that this release contains a number of breaking changes.
Changes
13 changes since v0.2.0
🔎 Breaking Changes
🚀 Features
- Add support for loading config from a file (#92)
- Add support for config option
compose-node-name
(#84) - Implement getters for
Reclass.nodes
andReclass.classes
(#88) - Add support for reclass option
ignore_class_notfound_regexp
(#101)
🐛 Fixes
- Treat
foo/init.yml
as content for classfoo
(#82)
🔗 Dependency Updates
v0.2.0
Summary
We're pleased to announce the second minor release of reclass-rs. Apart from various dependency updates, this release introduces improved error messages for errors during reference resolution, and a number of CI improvements.
We've cleaned up the error messages for reference resolution to remove unnecessary context, while still informing the user which reference we failed to resolve. This should significantly improve readability of the reference resolution error messages for large inventories.
On the CI side, we've added a new CI job which runs a few simple benchmarks for Reclass::inventory()
. The CI job posts the results as PR comments, so that we get a rough idea how a PR affects the performance of reclass-rs. However, we still recommend that contributors run the benchmarks locally since the benchmark accuracy on GitHub actions runners isn't very good.
Additionally, we've improved the build and release CI jobs to set the package version of the Python package from the latest Git tag. This removes the need for manually preparing a release by bumping the version in the package metadata. Instead, we can now cut a new release just by pushing a tag.
Changes
13 changes since v0.1.1
🛠️ Minor Changes
- Improve error messages when reference resolution fails (#72)
🪛 Internal Changes
- Update ref parser to match on unit pattern where applicable (#51)
- Add benchmarks for
Reclass::render_inventory()
(#47) - Run benchmarks in CI and provide results in PR comment (#75)
- Automatically set package version from Git tag (#77)
📄 Documentation
- Update instructions to test reclass-rs with Kapitan (#58)
🔗 Dependency Updates
v0.1.1
v0.1.0
Summary
We're pleased to announce the first release of reclass-rs
: v0.1.0
.
Reclass-rs is a Rust implementation of Reclass which is based on the Reclass fork maintained by kapicorp. The Reclass implementation provided in this repository can be used both from other Rust programs and in Python programs. The reclass-rs Python module is implemented directly in Rust with PyO3.
Please note that this implementation doesn't yet support all the features and extensions which are availble in Kapitan Reclass. However, for features which are implemented, we aim to be compatbile with Kapitan Reclass.
The implementation currently supports the following features of Kapicorp Reclass:
- The Reclass options
nodes_path
andclasses_path
- The Reclass option
ignore_class_notfound
- Escaped parameter references
- Merging referenced lists and dictionaries
- Constant parameters
- Nested references
- References in class names
- Loading classes with relative names
See the README.md
for more information.
Changes
🚀 Features
- Implement Reclass reference parsing (#2)
- Add custom list types which are suitable for Reclass's classes and
applications
arrays (#5) - Add initial
Node
andNodeInfo
types and expose node info functionality in Python module (#6) - Implement custom
Mapping
andValue
types (#8) - Add support for constant keys in our Mapping type (#9)
- Implement
std::fmt::Display
forValue
andMapping
(#10) - Add support for extending values in
Mapping::insert()
(#11) - Add support for merging a
Mapping
into anotherMapping
(#13) - Implement
ValueList
flattening (#14) - Add
Node::render()
to load and merge classes into the target node (#15) - Add support for Reclass reference interpolation (#19)
- Implement
Reclass::inventory()
and associatedInventory
type (#22) - Add empty
exports
field inNodeInfo
(#24) - Parallelize inventory rendering (#28)
- Abort reference resolution when a reference loop is detected (#32)
- Create a pure Rust API for inventory and node rendering (#35)
- Add support for escaped inventory query opening symbol (#40)
🛠️ Minor Changes
- Add more nodes and classes in the test inventory (#27)
🐛 Fixes
v0.1.0-rc1
Summary
We're pleased to announce the first release candidate of reclass-rs
: v0.1.0-rc1
.
Reclass-rs is a Rust implementation of Reclass which is based on the Reclass fork maintained by kapicorp. The Reclass implementation provided in this repository can be used both from other Rust programs and in Python programs. The reclass-rs Python module is implemented directly in Rust with PyO3.
Please note that this implementation doesn't yet support all the features and extensions which are availble in Kapitan Reclass. However, for features which are implemented, we aim to be compatbile with Kapitan Reclass.
The implementation currently supports the following features of Kapicorp Reclass:
- The Reclass options
nodes_path
andclasses_path
- The Reclass option
ignore_class_notfound
- Escaped parameter references
- Merging referenced lists and dictionaries
- Constant parameters
- Nested references
- References in class names
- Loading classes with relative names
See the README.md
for more information.
Changes
- no changes