Skip to content

Releases: projectsyn/reclass-rs

v0.10.1

18 Dec 14:25
v0.10.1
02c36ac

Choose a tag to compare

Summary

This release fixes the Python release process to ensure that maturin includes all relevant metadata in the Python package (README, License, authors, etc.).

There's no functional changes between v0.10.0 and this patch release.

Changes

1 changes since v0.10.0

🐛 Fixes

  • Update pyproject.toml dynamic entries to ensure full Python package metadata (#200)

v0.10.0

18 Dec 12:54
v0.10.0
b94e6e0

Choose a tag to compare

Summary

We're pleased to announce reclass-rs v0.10.0. This release introduces the first bigger feature that's incompatible with kapicorp-reclass: reclass-rs now supports default values for parameter references.

The gist of the feature is that users can specify default values for parameter references by providing the default value after a :: separator, for example ${foo::default} will fall back to value "default" when key foo is missing for the node. We chose :: as the separator because it can't currently appear in valid kapicorp-reclass inventories.

A more comprehensive documentation of reference default values is available in the Git repository.

Please note that the usage of :: as the separator for reference default values is a breaking change for existing reclass-rs inventories which reference a parameter that contains the empty string as a key segment.

Additionally, we've implemented the ignore_overwritten_missing_references kapicorp-reclass config option, and have updated reclass-rs to have the same default behavior (ignoring overwritten missing references) as kapicorp-reclass.

Apart from these user-facing new features, we've introduced Python type stubs for the reclass_rs Python module, updated the dependencies of the Rust implementation, and switched to Rust's 2024 Edition.

Changes

18 changes since v0.9.0

🔎 Breaking Changes

  • Implement default values for references (#194)

🚀 Features

  • Implement ignore_overwritten_missing_references kapicorp-reclass config option (#185)
  • Implement default values for references (#194)
  • Setup Python type stubs for reclass_rs (#199)

🪛 Internal Changes

  • Add explicit inferred lifetimes for Rust 1.89 (#178)
  • Remove usage of actions-rs/toolchain in GitHub actions (#179)
  • Fix flaky buildinfo test (#183)
  • Switch macOS CI to macOS 15 runners (#193)
  • Replace deprecated PyO3 downcast* calls with equivalent cast* calls (#191)
  • Switch to Rust 2024 Edition (#192)

🔗 Dependency Updates

  • Update actions/attest-build-provenance action to v3 (#180)
  • Update actions/setup-python action to v6 (#182)
  • Update actions/checkout action to v6 (#190)
  • Update mikepenz/release-changelog-builder-action action to v6 (#189)
  • Update Rust crate nom to v8 (#151)
  • Update Rust crate criterion to 0.8.0 (#195)
  • Update Rust crate pyo3 to v0.27.2 (#196)
  • Update GitHub Artifact Actions (major) (#197)
  • Update Rust crate fancy-regex to 0.17.0 (#198)

v0.9.0

08 Jul 08:29
v0.9.0
4420323

Choose a tag to compare

Summary

We're pleased to announce reclass-rs v0.9.0. Apart from some dependency updates, this release provides a new Python method buildinfo() that allows users of the Python module to query the Rust compiler version used to build the library in an architecture-independent fashion.

Changes

4 changes since v0.8.0

🚀 Features

  • Add buildinfo() Python method (#172)

🔗 Dependency Updates

  • Update Rust crate criterion to 0.6.0 (#167)
  • Update Rust crate pyo3 to v0.25.1 (#169)
  • Update Rust crate fancy-regex to 0.15.0 (#170)

v0.8.0

24 Apr 09:15
v0.8.0
23af649

Choose a tag to compare

Summary

We're pleased to announce reclass-rs v0.8.0.

Apart from some bug fixes and dependency updates, this release introduces support for the Reclass config options class_mappings and class_mappings_match_path.

These options allow users to include classes in nodes by matching nodes using glob or regex patterns. See the reclass documentation for more details.

Changes

6 changes since v0.7.0

🚀 Features

  • Add support for reclass's class_mappings configuration option (#160)

🪛 Internal Changes

  • Add Python tests which compare against kapicorp-reclass (#165)

🐛 Fixes

  • Add missing classes in NodeInfo::as_dict() (#161)
  • Fix initialization for ignore_class_notfound_regexp in Config::from_dict() (#162)

📄 Documentation

  • Update bug report and missing feature issue templates (#164)

🔗 Dependency Updates

  • Update Rust crate pyo3 to v0.24.2 (#163)

v0.7.0

04 Apr 11:05
v0.7.0
a052f7a

Choose a tag to compare

Summary

We're pleased to announce reclass-rs v0.7.0.

Apart from some dependency and documentation updates, this release improves the error messages that are emitted when merging the content of a parameters field.

Previously, users would get an error without any context regarding for which field value the error occured:

Error rendering node <node>: While resolving references: Can't merge Value::Mapping over Value::Literal

With the improved error message, the same error is signaled as follows:

Error rendering node <node>: While resolving references: In <path.to.field>: Can't merge Value::Mapping over Value::Literal

Finally, the release updates the GitHub actions workflow to create build attestations for the Python wheels.

Changes

8 changes since v0.6.0

🚀 Features

  • Generate GitHub actions attestations for Python wheels (#159)

🪛 Internal Changes

  • Address new clippy lints for Rust 1.86 (#158)

🐛 Fixes

  • Add missing context to errors that occur while flattening values (#157)

📄 Documentation

  • Remove Kapitan patch (#114)
  • Properly align code blocks with list items in README (#115)

🔗 Dependency Updates

  • Update Rust crate yaml-merge-keys to 0.8.1 (#154)
  • Update Rust crate pyo3 to v0.24.1 (#155)
  • Update uraimo/run-on-arch-action action to v3 (#153)

v0.6.0

16 Jan 09:41
v0.6.0
201e465

Choose a tag to compare

Summary

We're pleased to announce reclass-rs v0.6.0.

Apart from dependency updates, this release fixes a mismatch between Python reclass and reclass-rs for inventories which have node definitions in subdirectories of inventory/nodes when compose-node-name is disabled.

Additionally, please note that this release removes support for Python 3.8 which has been EOL since October 2024.

Changes

4 changes since v0.5.0

🔎 Breaking Changes

  • Drop support for Python 3.8 which is EOL (#143)

🪛 Internal Changes

  • Update Python GH workflow (#150)

🐛 Fixes

  • Fix node discovery when compose-node-name is disabled (#149)

🔗 Dependency Updates

  • Update Rust crate pyo3 to v0.23.4 (#147)

v0.5.0

15 Oct 09:14
v0.5.0
30eb5e7

Choose a tag to compare

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

26 Feb 12:47
v0.4.0
ffb0d96

Choose a tag to compare

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

23 Feb 13:31
v0.3.0
3276ef0

Choose a tag to compare

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

  • Refactor Reclass configuration options (#80)
  • Treat foo/init.yml as content for class foo (#82)

🚀 Features

  • Add support for loading config from a file (#92)
  • Add support for config option compose-node-name (#84)
  • Implement getters for Reclass.nodes and Reclass.classes (#88)
  • Add support for reclass option ignore_class_notfound_regexp (#101)

🐛 Fixes

  • Treat foo/init.yml as content for class foo (#82)

🔗 Dependency Updates

  • Update Rust crate rayon to 1.8.1 (#81)
  • Update Rust crate chrono to 0.4.34 (#93)
  • Update Rust crate indexmap to 2.2.3 (#94)
  • Update Rust crate anyhow to 1.0.80 (#97)
  • Update Rust crate serde_yaml to 0.9.32 (#98)
  • Update Rust crate serde to 1.0.197 (#99)
  • Update Rust crate serde_json to 1.0.114 (#100)

v0.2.0

11 Jan 13:02
v0.2.0
c221bb2

Choose a tag to compare

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

  • Update Rust crate rayon to 1.8.0 (#46)
  • Update Rust crate indexmap to 2.1.0 (#56)
  • Update Rust crate anyhow to 1.0.79 (#65)
  • Update Rust crate serde_yaml to 0.9.30 (#64)
  • Update Rust crate serde_json to 1.0.111 (#70)
  • Update Rust crate pyo3 to 0.20.2 (#71)
  • Update Rust crate serde to 1.0.195 (#73)