- Unreleased changes (release date TBD)
- 0.6.2 (released 2026-04-24)
- 0.6.1 (released 2026-02-10)
- 0.6.0 (released 2026-02-03)
- 0.5.0 (released 2025-10-09)
- 0.4.3 (released 2025-08-15)
- 0.4.2 (released 2025-05-27)
- 0.4.1 (released 2025-04-30)
- 0.4.0 (released 2025-04-16)
- 0.3.0 (released 2024-12-27)
- 0.2.0 (released 2024-09-26)
- 0.1.0 (released 2024-05-13)
- 0.0.16 (released 2024-02-28)
- 0.0.15 (released 2023-12-15)
- 0.0.14 (released 2023-09-25)
- 0.0.13 (released 2023-05-14)
- 0.0.12 (released 2023-05-03)
- 0.0.11 (released 2023-03-18)
- 0.0.10 (released 2022-09-10)
- 0.0.9 (released 2022-06-20)
- 0.0.8 (released 2022-05-22)
- 0.0.7 (released 2022-05-18)
- 0.0.6 (released 2022-05-12)
- 0.0.5 (released 2021-11-06)
- 0.0.4 (released 2021-11-06)
-
Improve merging of strings and numbers (#998)
-
Avoid generation of unused default functions (#990)
-
Pass through f64 field descriptions (#974)
-
Add public
accept_as_identto determine if a string is a valid Rust identifier (#973)
-
remove non-idiomatic From<&String> trait impls (#946)
-
allow custom attributes to be applied to all generated types with
attrssetting (#949) -
remove non-idiomatic From<&T> for T trait impls (#945)
-
use inline format args in generated code (#934)
-
properly handle JSON pointer escape sequences (#940)
-
improve heuristics for enum variant naming (#894)
-
allow the map type to be specified by macro users (#835)
-
handle more flavors of the unsatisfiable schema (#842 and #869)
-
avoid warnings with Rust 1.89 lifetime checks (#827)
-
improve merging logic for "not" schemas (#831)
-
improve regex validation performance. (#825)
-
remove some dead code that displeases more recent rust versions (#826)
-
improve
nullrecognition (#817) -
improve identification of mutually incompatible
anyOfsubschemas (#817)
-
Doc fixes
-
Slightly more effort made to disambiguate enum variant identifiers (#762)
-
Fix for panic with non-zero integers, nullable types, and default values (#771)
-
Greater consistency wrt
additionalPropertiesinterpretation (#773) -
Fix for string length validation for non ascii strings (#776)
-
Improved handling of integer format with min/max values (#733)
-
Mark newtype wrappers as
#[serde(transparent)](#724) -
impl
Defaultfor structs where all properties have a default (#725) -
Add support specifying the map type to use (#708)
-
Fully qualify more type names e.g. from
std(#705)
These changes may break users of previous versions in particular if you were to
implement Default by hand for types for which the implementation is now
generated.
-
Migrate from
ToStringtostd::fmt::Display(#663) -
fully qualify types and traits (#647)
-
Add support for
patternPropertiesin particular circumstances (#637) -
Fully qualify
serde::Deserialize`andserde::Serializein outputs (#634) -
Fix panic in
all_mutually_exclusiveand allow multiple subschema types in a single schema (#627) -
handle default values for fields represented as
NonZeroU{8,16,32}`(#608)
-
Improvements and bug fixes around schema merging
-
Fixes for various bugs with defaults
-
Support for the
x-rust-typeextension (#584)
-
Introduce a proper Error type for various conversions (#475)
-
Add docs to generated mods (#476)
-
Various enum improvements
-
Improvements to array merging and mutual exclusivity checks (#412)
-
Support for 32-bit floating-point numbers (#440)
-
Better handling for unsatisfiable merged schemas (#447)
-
Show original JSON Schema in generated type docs (#454)
-
Handle arbitrary containment cycles (#300)
-
More permissive of valid (if useless) schema constructions (#306, #320)
-
Much better handling of
allOfconstructions by merging schemas (#405) -
Support for more
notsubschemas (#410)
-
Fixed-length, single-type arrays to
[T; N](#286) -
Support for reflexive schemas (#292)
-
Much improved support for multi-type schemas (#291)
-
Better error messages on failures
-
Improved enum generation (#270)
-
Improved integer type selection based on number criteria (#255)
-
TypeSpace::add_root_schema()(#236) -
… and many general improvements
This is a big update with many, many changes to code generation, and many more JSON schema structures well-handled. Among the many changes:
-
Generate a
ToStringimpl for untagged enums with trivial variants (#145) -
Allow conversion overrides by specifying a schema (#155)
-
Handle untyped enums that contain nulls (#167)
-
Handle
notschemas for enumerated values (#168) -
Improve generated code for FromStr and TryFrom impls (#174)
-
Handle format specifiers for enumerated strings (#188)
Previously all transitive consumers required the presence of rustfmt. In this
version we leave formatting to the consumer. See the formatting section of the README for details on formatting.
Consumers can now affect how code is generated in several ways: * adding derive macros to all generated types * modifying specific types by name to rename them or add derive macros * specifying a replacement type by name * specifying a replacement type by schema pattern
-
Allow per-type renames and derive macro applications (#131)
-
ToStringimplementations for untagged enums with trivial newtype variants (#145) -
Fixed an issue with generation of enum defaults (#137)
-
Allow conversion overrides by specifying a schema (#155)
-
Add support for string types with
formatset toip,ipv4, oripv6(#76) -
Be more accommodating in the face of a missing
typefield #(79) -
The order of derives on types has stabilized (and therefore has changed) (#81)
-
Specific
FromandDeserializeimplementations for constrained string types (#81) -
Specific
Fromimplementation for untagged enums with constrained string variants (#81) -
FromStrimplementation for simple-variant-only `enum`s (#81) -
Ignore unknown
formatvalues (#81) -
Added
regressdependency for ECMA 262 style regexes (#81) -
Dropshot produces a complex
Nulltype (by necessity); now rendered as()(#83) -
Fixed rendering of enums with a single variant (#87)
-
Updated public interface (breaking for consumers) (#98)
-
Optional builder interface for generated structs (#98)
-
Switched from
unicode-xidtounicode-ident(#60) -
Elevate
TypeDetail::Stringrather thanTypeDetail::BuiltIn("String")(#72)
-
Support for integer schemas with
enum_valuespopulated (breaking change) (#57) -
Deeper inspection of
oneOfconstructions to make better `enum`s (#59) -
Simple handling for "constraint"
allOfconstructions (#59) -
Improved handling of non-required unit struct members (#59)
-
Update to
uuidv1.0.0 for testing (non-breaking change)
-
Add an interface to allow consumers to specify additional derives for generated types (#35)
-
Handle all invalid identifier characters (#37)
-
Add support for
std::net::Ipv6Addrtype (#38) -
Add
Copyto simple enums (#40) -
Boxtrivial cyclic refs (#41) -
Move to heck for case conversion (#43)
-
Improve handling of default values for object properties (#44)
-
use include_str! so that our macro is re-run if the given file changes (#27)
-
Better handling of enums that look like the Result type (#26)
-
Pass through name for make_map (#25)