jsonschema_rs 0.52.1 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +41 -1
- data/Cargo.toml +2 -2
- data/ext/jsonschema/Cargo.lock +14 -13
- data/ext/jsonschema/Cargo.toml +3 -3
- data/lib/jsonschema/version.rb +1 -1
- data/src/canonical.rs +3 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 27bec9b13d70e7366f6d93d9c710655874400eccca61a6df4c3cdd1bae323cfc
|
|
4
|
+
data.tar.gz: 01fc5d410731c6173a6d801aca87259f237bc2254722a08257c5440c82b2d5e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0feb5dba5d11e450093f4060864d4bf173e1e70b951f58758c7a294a3e4e6af31430618c293b77ab977f7fd1563326f9eacdb6dd2f917a39f5884f6b7a70ee19
|
|
7
|
+
data.tar.gz: 112818ddf3adf09e39b40d6a92fe38cf059cfbc914ff3e6fef6c6f609d20a0c7451f49ccbeb9522129f0bc4866296fa2b6d68b8b683838cac48c4fa3eeee00fe
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.54.0] - 2026-09-06
|
|
6
|
+
|
|
7
|
+
### Performance
|
|
8
|
+
|
|
9
|
+
- `validate` and `iter_errors` check each assertion keyword with the `is_valid` path and build an error only for a failing one.
|
|
10
|
+
- `evaluate` holds its output tree in one allocation instead of one per node.
|
|
11
|
+
- A `pattern` of `^\S*$` scans bytes instead of decoding every character.
|
|
12
|
+
- `validate` on `properties` beside a two-name `required` confirms both names in the pass that checks the properties, instead of looking each up first.
|
|
13
|
+
- A string `enum` compares an option's length and first and last eight bytes before its full text.
|
|
14
|
+
- A JSON Pointer segment is scanned for `~` and `/` eight bytes at a time before it is copied.
|
|
15
|
+
- Canonicalization cloning leaves per intersection and the definition map per settled target.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Canonicalization of `unevaluated*` beside `dependentSchemas` or `if`/`then`/`else`, which kept the document `Raw`.
|
|
20
|
+
- Canonicalization of `not` over `patternProperties`, which kept the document `Raw`.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Canonicalization of `not` over an object with `properties`, `patternProperties` and `additionalProperties`, which applied `additionalProperties` to the keys listed in `properties`.
|
|
25
|
+
|
|
26
|
+
## [0.53.0] - 2026-09-02
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
|
|
30
|
+
- Draft 4 `type: integer` matching a `Float` or not depending on its formatting; a `Float` is never a draft 4 integer.
|
|
31
|
+
- `uniqueItems` accepting `0` alongside `-0.0` in arrays of more than 15 items.
|
|
32
|
+
|
|
33
|
+
### Performance
|
|
34
|
+
|
|
35
|
+
- Canonicalizing an `allOf` of object schemas walks their property maps once instead of looking every key up.
|
|
36
|
+
- `properties` and `required` compare short names without `memcmp`.
|
|
37
|
+
- Draft 4 `type: integer` is up to 6x faster on float-heavy instances.
|
|
38
|
+
- `evaluate` renders each node's locations once instead of rebuilding them.
|
|
39
|
+
- Building a schema resolves each `$ref` target once instead of per reference site.
|
|
40
|
+
- Building a schema with an `$id` encodes each absolute location once instead of re-validating it.
|
|
41
|
+
- `enum` listing strings or integers, with or without `null`, matches against a set instead of comparing each candidate.
|
|
42
|
+
|
|
5
43
|
## [0.52.1] - 2026-08-30
|
|
6
44
|
|
|
7
45
|
### Performance
|
|
@@ -487,7 +525,9 @@
|
|
|
487
525
|
|
|
488
526
|
- Initial public release
|
|
489
527
|
|
|
490
|
-
[Unreleased]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.
|
|
528
|
+
[Unreleased]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.54.0...HEAD
|
|
529
|
+
[0.54.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.53.0...ruby-v0.54.0
|
|
530
|
+
[0.53.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.52.1...ruby-v0.53.0
|
|
491
531
|
[0.52.1]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.52.0...ruby-v0.52.1
|
|
492
532
|
[0.52.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.51.0...ruby-v0.52.0
|
|
493
533
|
[0.51.0]: https://github.com/Stranger6667/jsonschema/compare/ruby-v0.50.1...ruby-v0.51.0
|
data/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "jsonschema-rb"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.54.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
authors = ["Dmitry Dygalo <dmitry@dygalo.dev>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -14,7 +14,7 @@ crate-type = ["cdylib"]
|
|
|
14
14
|
|
|
15
15
|
[dependencies]
|
|
16
16
|
strum = "0.28.0"
|
|
17
|
-
jsonschema = { version = "0.
|
|
17
|
+
jsonschema = { version = "0.54.0", default-features = false, features = ["magnus", "arbitrary-precision", "resolve-http", "resolve-file", "tls-ring", "macros", "idna"] }
|
|
18
18
|
magnus = { version = "0.8", features = ["rb-sys"] }
|
|
19
19
|
rb-sys = "0.9"
|
|
20
20
|
serde = { workspace = true }
|
data/ext/jsonschema/Cargo.lock
CHANGED
|
@@ -693,9 +693,9 @@ dependencies = [
|
|
|
693
693
|
|
|
694
694
|
[[package]]
|
|
695
695
|
name = "jsonschema"
|
|
696
|
-
version = "0.
|
|
696
|
+
version = "0.54.0"
|
|
697
697
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
698
|
-
checksum = "
|
|
698
|
+
checksum = "7070bf0681439ff992bb94947cb3a361f57c880561c1e9e90ddb5941c7ec2d04"
|
|
699
699
|
dependencies = [
|
|
700
700
|
"ahash",
|
|
701
701
|
"bytecount",
|
|
@@ -726,9 +726,9 @@ dependencies = [
|
|
|
726
726
|
|
|
727
727
|
[[package]]
|
|
728
728
|
name = "jsonschema-macros"
|
|
729
|
-
version = "0.
|
|
729
|
+
version = "0.54.0"
|
|
730
730
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
731
|
-
checksum = "
|
|
731
|
+
checksum = "09bf2cff6a323e13ecc331d319d8062dc07992c12e6db20b3d6284730f3efd23"
|
|
732
732
|
dependencies = [
|
|
733
733
|
"jsonschema-macros-core",
|
|
734
734
|
"proc-macro2",
|
|
@@ -736,9 +736,9 @@ dependencies = [
|
|
|
736
736
|
|
|
737
737
|
[[package]]
|
|
738
738
|
name = "jsonschema-macros-core"
|
|
739
|
-
version = "0.
|
|
739
|
+
version = "0.54.0"
|
|
740
740
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
741
|
-
checksum = "
|
|
741
|
+
checksum = "d7d537fa1bbdc3aa5be9343fecad25202c73e501535d9a0f9879d0c2c9c3a328"
|
|
742
742
|
dependencies = [
|
|
743
743
|
"fancy-regex",
|
|
744
744
|
"indexmap",
|
|
@@ -755,7 +755,7 @@ dependencies = [
|
|
|
755
755
|
|
|
756
756
|
[[package]]
|
|
757
757
|
name = "jsonschema-rb-ext"
|
|
758
|
-
version = "0.
|
|
758
|
+
version = "0.54.0"
|
|
759
759
|
dependencies = [
|
|
760
760
|
"jsonschema",
|
|
761
761
|
"magnus",
|
|
@@ -769,22 +769,23 @@ dependencies = [
|
|
|
769
769
|
|
|
770
770
|
[[package]]
|
|
771
771
|
name = "jsonschema-regex"
|
|
772
|
-
version = "0.
|
|
772
|
+
version = "0.54.0"
|
|
773
773
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
774
|
-
checksum = "
|
|
774
|
+
checksum = "b6525f2f72c37c1a09f59a6d0d33f60ecf8beabd00be92fe8d49555cae15289c"
|
|
775
775
|
dependencies = [
|
|
776
776
|
"regex-syntax",
|
|
777
777
|
]
|
|
778
778
|
|
|
779
779
|
[[package]]
|
|
780
780
|
name = "jsonschema-value"
|
|
781
|
-
version = "0.
|
|
781
|
+
version = "0.54.0"
|
|
782
782
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
783
|
-
checksum = "
|
|
783
|
+
checksum = "4309c6b52390b1ebdd2053e513e9f23d4bb18d0c3c2df8142eded3eb188a85bf"
|
|
784
784
|
dependencies = [
|
|
785
785
|
"ahash",
|
|
786
786
|
"bytecount",
|
|
787
787
|
"fraction",
|
|
788
|
+
"getrandom 0.3.4",
|
|
788
789
|
"magnus",
|
|
789
790
|
"num-bigint",
|
|
790
791
|
"num-cmp",
|
|
@@ -1134,9 +1135,9 @@ dependencies = [
|
|
|
1134
1135
|
|
|
1135
1136
|
[[package]]
|
|
1136
1137
|
name = "referencing"
|
|
1137
|
-
version = "0.
|
|
1138
|
+
version = "0.54.0"
|
|
1138
1139
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1139
|
-
checksum = "
|
|
1140
|
+
checksum = "0304d4734d208eaf24528093715e2cb5260c977b1be1eb81cd487f601e3ff35d"
|
|
1140
1141
|
dependencies = [
|
|
1141
1142
|
"ahash",
|
|
1142
1143
|
"fluent-uri",
|
data/ext/jsonschema/Cargo.toml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "jsonschema-rb-ext"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.54.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
publish = false
|
|
6
6
|
|
|
@@ -10,10 +10,10 @@ name = "jsonschema_rb"
|
|
|
10
10
|
path = "../../src/lib.rs"
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
|
-
jsonschema = { version = "0.
|
|
13
|
+
jsonschema = { version = "0.54.0", default-features = false, features = ["magnus", "arbitrary-precision", "resolve-http", "resolve-file", "tls-ring", "macros", "idna"] }
|
|
14
14
|
magnus = { version = "0.8", features = ["rb-sys"] }
|
|
15
15
|
rb-sys = "0.9"
|
|
16
|
-
referencing = "0.
|
|
16
|
+
referencing = "0.54.0"
|
|
17
17
|
serde = { version = "1", features = ["derive"] }
|
|
18
18
|
serde_json = { version = "1", features = ["arbitrary_precision"] }
|
|
19
19
|
strum = "0.28.0"
|
data/lib/jsonschema/version.rb
CHANGED
data/src/canonical.rs
CHANGED
|
@@ -1004,9 +1004,9 @@ impl ObjectView {
|
|
|
1004
1004
|
|
|
1005
1005
|
fn additional_properties(ruby: &Ruby, rb_self: &Self) -> Value {
|
|
1006
1006
|
match &rb_self.additional_properties {
|
|
1007
|
-
Some(
|
|
1007
|
+
Some(additional) => ruby
|
|
1008
1008
|
.obj_wrap(RbCanonicalSchema {
|
|
1009
|
-
inner:
|
|
1009
|
+
inner: additional.clone(),
|
|
1010
1010
|
})
|
|
1011
1011
|
.as_value(),
|
|
1012
1012
|
None => ruby.qnil().as_value(),
|
|
@@ -1185,7 +1185,7 @@ impl AllOfView {
|
|
|
1185
1185
|
}
|
|
1186
1186
|
}
|
|
1187
1187
|
|
|
1188
|
-
/// The
|
|
1188
|
+
/// The negation of `schema`, preserving a symbolic ref under `not`, conditionals, and `oneOf`.
|
|
1189
1189
|
#[derive(magnus::TypedData)]
|
|
1190
1190
|
#[magnus(class = "JSONSchema::Canonical::NotView", free_immediately)]
|
|
1191
1191
|
pub struct NotView {
|