All notable changes to the facet project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.46.0 - 2026-04-15
- sync all companion crates to v0.46.0 in one version group
0.45.0 - 2026-04-14
- (core) add pop + swap list vtable entries
- (core) drop Result via typed drop_in_place to satisfy Stacked Borrows
0.44.5 - 2026-04-13
- updated the following local packages: facet-core, facet-macros, facet-reflect
0.44.4 - 2026-04-13
- updated the following local packages: facet-reflect
0.44.3 - 2026-03-16
- updated the following local packages: facet
0.44.2 - 2026-03-12
- (crates) address Copilot's review comments
- (crates) add support for
semver
- remove captain readme templates and README.md.in files
- drop duplicate crate title headings in reedme docs
- template shared readme footer with reedme
- migrate crate docs/readmes to cargo-reedme
0.44.1 - 2026-03-03
- Make postcard opaque passthrough API backwards compatible
- Add postcard opaque passthrough encoded-bytes path
0.44.0 - 2026-03-01
- add plan-agnostic opaque adapter MVP (#2068) (#2074)
- (facet-args) layered config with provenance tracking and beautiful config dump (#1907)
- (facet) add #[facet(cow)] attribute for cow-like enum semantics (#1898)
- (core) make ownership transfer explicit in list/slice push vtables (#2088)
- (core) print generic params in Shape display for Option/Result (#2038)
- (facet) make cow enums serialize/deserialize transparently (#1901)
- remove unnecessary
T: 'staticbound from Vec impl (#1894)
- Make OptionVTable callbacks extern "C" and FFI-safe (#2106)
- Allow borrowed #[facet(opaque)] fields safely (#2087)
- Make OxPtrConst/OxPtrMut constructor invariants explicit (#2080)
- Expose const generic parameters via Shape reflection (#2061)
- don't allocate ZSTs (#2013)
- use UserType::Enum always (#2006)
- Consolidate trame design (née facet-reflect2) (#1992)
- More ops, more fuzzing (+ a drive-by serialization fix) (#1984)
- Refactor TypePlan to 32-bit arena indices, eliminate Box::leak, add benchmark infrastructure (#1968)
- eliminate type_identifier usage (#1965)
- Re-enable specialization-based auto-detection as default (#1919)
- Add Facet implementations for jiff::civil::Date and jiff::civil::Time (#1911)
0.43.2 - 2026-01-23
- (facet-core) Add SmallVec support (#1884)
- (tests) consolidate integration test binaries (#1887)
0.43.1 - 2026-01-23
- add Facet implementation for tendril crate (#1870)
0.42.0 - 2026-01-06
- implement Facet for core::convert::Infallible
- mark function pointers as invariant to prevent lifetime UB
- (soundness) make OxRef::new and OxMut::new unsafe
- (bytestring) simplify ByteString impl with vtable_direct! macro
- Fix #1629: Preserve custom HTML elements during parse/serialize roundtrip
- Add facet-validate crate for field validation during deserialization
- Add rust_decimal::Decimal support + fix XML type inference
- Add rust_decimal::Decimal support to facet-core
- Add Facet implementation for smol_str::SmolStr
- Set up release-plz with synchronized versions and trusted publishing
- Add
facet_no_doccfg for global doc string stripping - Fix facet-pretty to respect skip_serializing_if and add HTML roundtrip tests
- Add html::text attribute for enum variants and comprehensive roundtrip test
- Fix inconsistent Shape hash (issue #1574)
- Fix soundness issue: Attr can contain non-Sync data
- Require 'static for Opaque Facet impl
- (facet-core) simplify Ox API by requiring T: Facet
- fix broken intra-doc link to Peek in facet-core
- Improve AGENTS.md, closes #1551