@@ -7,70 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10- ## [ 0.1.203] - 2026-01-30
11-
12- ### Native OpenAPI 3.1 - Zero External Dependencies 🎯
13-
14- This release marks a ** major architectural shift** : RustAPI now generates OpenAPI specifications natively, removing the ` utoipa ` dependency entirely.
15-
16- #### Breaking Changes ⚠️
17-
18- - ** Removed ` utoipa ` dependency** : Types no longer need to implement ` utoipa::ToSchema ` . Instead, implement ` RustApiSchema ` trait.
19- - ** OpenAPI version upgraded** : Specifications now generate as ** OpenAPI 3.1.0** (previously 3.0.3) with full JSON Schema 2020-12 support.
20- - ** Schema trait rename** : ` Schema ` derive macro now generates ` impl RustApiSchema ` instead of ` impl ToSchema ` .
21-
22- #### Migration Guide
23-
24- ``` rust
25- // Before (utoipa-based)
26- use utoipa :: ToSchema ;
27- #[derive(ToSchema )]
28- struct User { ... }
29-
30- // After (native)
31- use rustapi_rs :: prelude :: * ;
32- #[derive(Schema )] // Now generates RustApiSchema impl
33- struct User { ... }
34- ```
35-
36- ### Added
37-
38- - ** ` RustApiSchema ` trait** : New trait in ` rustapi-openapi ` for native JSON Schema generation
39- - ** ` #[derive(Schema)] ` macro** : Generate ` RustApiSchema ` implementations at compile-time
40- - ** ` JsonSchema2020 ` struct** : Full JSON Schema 2020-12 compatible schema representation
41- - ** ` SchemaCtx ` ** : Context for managing component deduplication and $ref generation
42- - ** Deterministic output** : All maps use ` BTreeMap ` for stable, sorted JSON output
43- - ** Comprehensive primitive support** : i8-i128, u8-u128, f32/f64, bool, String with proper format annotations
44- - ** Generic type support** : ` Vec<T> ` , ` Option<T> ` , ` HashMap<String, T> ` with proper schema composition
45- - ** Nullable types** : OpenAPI 3.1 native ` type: ["string", "null"] ` syntax for ` Option<T> `
46-
47- ### Changed
48-
49- - ** OpenAPI version** : ` 3.0.3 ` → ` 3.1.0 `
50- - ** Swagger UI** : Now served from CDN (unpkg) instead of bundled assets, reducing binary size
51- - ** ` OpenApiSpec ` ** : Refactored to use ` BTreeMap ` throughout for deterministic serialization
52- - ** Extractor schemas** : ` Json<T> ` , ` ValidatedJson<T> ` , ` Query<T> ` now use ` RustApiSchema ` bound
53- - ** Component registration** : ` spec.register::<T>() ` now uses ` RustApiSchema ` trait
54-
55- ### Removed
56-
57- - ** ` utoipa ` crate dependency** : ~ 500 fewer transitive dependencies
58- - ** ` rustapi-openapi/src/v31/ ` module** : Experimental v31 code replaced by unified implementation
59- - ** Bundled Swagger UI assets** : ` swagger-ui-bundle.js ` , ` swagger-ui-standalone-preset.js ` , ` swagger-ui.css ` removed
60- - ** Benchmark servers** : Removed temporary benchmark-related server implementations
61-
62- ### Fixed
63-
64- - ** Compile-time schema generation** : Schemas are now generated at compile-time via proc macros
65- - ** Circular reference handling** : ` SchemaCtx ` properly handles recursive types with $ref
66- - ** Field optionality** : ` Option<T> ` fields correctly marked as non-required in struct schemas
67-
68- ### Documentation
69-
70- - Updated [ native_openapi.md] ( docs/native_openapi.md ) with implementation status
71- - Added migration examples in cookbook
72- - Updated crate-level documentation
73-
7410## [ 0.1.202] - 2026-01-26
7511
7612### Performance - 12x Improvement 🚀
0 commit comments