- Unreleased changes (release date TBD)
- 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)
-
Mark newtype wrappers as
#[serde(transparent)]
(#724) -
impl
Default
for 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
ToString
tostd::fmt::Display
(#663) -
fully qualify types and traits (#647)
-
Add support for
patternProperties
in particular circumstances (#637) -
Fully qualify
serde::Deserialize`
andserde::Serialize
in outputs (#634) -
Fix panic in
all_mutually_exclusive
and 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-type
extension (#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
allOf
constructions by merging schemas (#405) -
Support for more
not
subschemas (#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
ToString
impl for untagged enums with trivial variants (#145) -
Allow conversion overrides by specifying a schema (#155)
-
Handle untyped enums that contain nulls (#167)
-
Handle
not
schemas 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)
-
ToString
implementations 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
format
set toip
,ipv4
, oripv6
(#76) -
Be more accommodating in the face of a missing
type
field #(79) -
The order of derives on types has stabilized (and therefore has changed) (#81)
-
Specific
From
andDeserialize
implementations for constrained string types (#81) -
Specific
From
implementation for untagged enums with constrained string variants (#81) -
FromStr
implementation for simple-variant-only `enum`s (#81) -
Ignore unknown
format
values (#81) -
Added
regress
dependency for ECMA 262 style regexes (#81) -
Dropshot produces a complex
Null
type (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-xid
tounicode-ident
(#60) -
Elevate
TypeDetail::String
rather thanTypeDetail::BuiltIn("String")
(#72)
-
Support for integer schemas with
enum_values
populated (breaking change) (#57) -
Deeper inspection of
oneOf
constructions to make better `enum`s (#59) -
Simple handling for "constraint"
allOf
constructions (#59) -
Improved handling of non-required unit struct members (#59)
-
Update to
uuid
v1.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::Ipv6Addr
type (#38) -
Add
Copy
to simple enums (#40) -
Box
trivial 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)