polyxml 0.23.2__tar.gz → 0.23.3__tar.gz

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.
Files changed (62) hide show
  1. {polyxml-0.23.2 → polyxml-0.23.3}/Cargo.lock +35 -40
  2. {polyxml-0.23.2 → polyxml-0.23.3}/Cargo.toml +1 -1
  3. {polyxml-0.23.2 → polyxml-0.23.3}/PKG-INFO +1 -1
  4. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/README.md +1 -1
  5. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/java/mod.rs +8 -8
  6. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_csharp_codegen.rs +8 -0
  7. {polyxml-0.23.2 → polyxml-0.23.3}/pyproject.toml +1 -1
  8. {polyxml-0.23.2 → polyxml-0.23.3}/README.md +0 -0
  9. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/Cargo.toml +0 -0
  10. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/benches/core_benchmarks.rs +0 -0
  11. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/benches/support/tag_dispatch_fixtures.rs +0 -0
  12. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/benches/tag_dispatch.rs +0 -0
  13. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/cpp/mod.rs +0 -0
  14. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/csharp/mod.rs +0 -0
  15. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/go/mod.rs +0 -0
  16. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/java/codec.rs +0 -0
  17. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/java/models.rs +0 -0
  18. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/mod.rs +0 -0
  19. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/python/mod.rs +0 -0
  20. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/rust/mod.rs +0 -0
  21. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/codegen/typescript/mod.rs +0 -0
  22. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/converters.rs +0 -0
  23. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/error.rs +0 -0
  24. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/ir/mod.rs +0 -0
  25. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/ir/tarjan.rs +0 -0
  26. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/json.rs +0 -0
  27. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/lib.rs +0 -0
  28. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/parser.rs +0 -0
  29. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/schema.rs +0 -0
  30. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/schema_parser/mod.rs +0 -0
  31. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/serializer.rs +0 -0
  32. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/transcoder.rs +0 -0
  33. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/src/value.rs +0 -0
  34. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_conformance.rs +0 -0
  35. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_core.rs +0 -0
  36. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_cpp_codegen.rs +0 -0
  37. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_go_codegen.rs +0 -0
  38. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_java_codegen.rs +0 -0
  39. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_json.rs +0 -0
  40. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_pattern_codegen.rs +0 -0
  41. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_python_codegen.rs +0 -0
  42. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_rust_codecs.rs +0 -0
  43. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_rust_codegen.rs +0 -0
  44. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_schema_audit.rs +0 -0
  45. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_schema_ir.rs +0 -0
  46. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_security.rs +0 -0
  47. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_transcoder.rs +0 -0
  48. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_ts_codegen.rs +0 -0
  49. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-core/tests/test_xsi_type.rs +0 -0
  50. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/Cargo.toml +0 -0
  51. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/README.md +0 -0
  52. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/src/lib.rs +0 -0
  53. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/tests/test_conformance.py +0 -0
  54. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/tests/test_generated_models.py +0 -0
  55. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/tests/test_json.py +0 -0
  56. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/tests/test_polyxml.py +0 -0
  57. {polyxml-0.23.2 → polyxml-0.23.3}/crates/polyxml-python/tests/test_xsi_type.py +0 -0
  58. {polyxml-0.23.2 → polyxml-0.23.3}/python/polyxml/AGENT_GUIDE.md +0 -0
  59. {polyxml-0.23.2 → polyxml-0.23.3}/python/polyxml/__init__.py +0 -0
  60. {polyxml-0.23.2 → polyxml-0.23.3}/python/polyxml/compat/__init__.py +0 -0
  61. {polyxml-0.23.2 → polyxml-0.23.3}/python/polyxml/compat/xsdata.py +0 -0
  62. {polyxml-0.23.2 → polyxml-0.23.3}/python/polyxml/py.typed +0 -0
@@ -145,9 +145,9 @@ dependencies = [
145
145
 
146
146
  [[package]]
147
147
  name = "clap"
148
- version = "4.6.6"
148
+ version = "4.6.7"
149
149
  source = "registry+https://github.com/rust-lang/crates.io-index"
150
- checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca"
150
+ checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946"
151
151
  dependencies = [
152
152
  "clap_builder",
153
153
  "clap_derive",
@@ -155,9 +155,9 @@ dependencies = [
155
155
 
156
156
  [[package]]
157
157
  name = "clap_builder"
158
- version = "4.6.6"
158
+ version = "4.6.7"
159
159
  source = "registry+https://github.com/rust-lang/crates.io-index"
160
- checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889"
160
+ checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d"
161
161
  dependencies = [
162
162
  "anstream",
163
163
  "anstyle",
@@ -167,9 +167,9 @@ dependencies = [
167
167
 
168
168
  [[package]]
169
169
  name = "clap_derive"
170
- version = "4.6.4"
170
+ version = "4.6.7"
171
171
  source = "registry+https://github.com/rust-lang/crates.io-index"
172
- checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061"
172
+ checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0"
173
173
  dependencies = [
174
174
  "heck",
175
175
  "proc-macro2",
@@ -474,9 +474,9 @@ dependencies = [
474
474
 
475
475
  [[package]]
476
476
  name = "napi-build"
477
- version = "2.4.2"
477
+ version = "2.5.0"
478
478
  source = "registry+https://github.com/rust-lang/crates.io-index"
479
- checksum = "860e7c40864f95cfb83cde99f9ebadd88ef3d9bdccd7dd2cee0cc96a2dd4ffa7"
479
+ checksum = "0941983559cd62bfa7f04646a16428967a847365adeef27711e4e3927046bbed"
480
480
 
481
481
  [[package]]
482
482
  name = "napi-derive"
@@ -608,7 +608,7 @@ dependencies = [
608
608
 
609
609
  [[package]]
610
610
  name = "polyxml"
611
- version = "0.23.2"
611
+ version = "0.23.3"
612
612
  dependencies = [
613
613
  "criterion",
614
614
  "heck",
@@ -628,14 +628,14 @@ dependencies = [
628
628
 
629
629
  [[package]]
630
630
  name = "polyxml-c"
631
- version = "0.23.2"
631
+ version = "0.23.3"
632
632
  dependencies = [
633
633
  "polyxml",
634
634
  ]
635
635
 
636
636
  [[package]]
637
637
  name = "polyxml-cli"
638
- version = "0.23.2"
638
+ version = "0.23.3"
639
639
  dependencies = [
640
640
  "clap",
641
641
  "glob",
@@ -649,7 +649,7 @@ dependencies = [
649
649
 
650
650
  [[package]]
651
651
  name = "polyxml-js"
652
- version = "0.23.2"
652
+ version = "0.23.3"
653
653
  dependencies = [
654
654
  "napi",
655
655
  "napi-build",
@@ -659,7 +659,7 @@ dependencies = [
659
659
 
660
660
  [[package]]
661
661
  name = "polyxml-python"
662
- version = "0.23.2"
662
+ version = "0.23.3"
663
663
  dependencies = [
664
664
  "lexical-core",
665
665
  "polyxml",
@@ -669,7 +669,7 @@ dependencies = [
669
669
 
670
670
  [[package]]
671
671
  name = "polyxml-wasm"
672
- version = "0.23.2"
672
+ version = "0.23.3"
673
673
  dependencies = [
674
674
  "polyxml",
675
675
  "quick-xml",
@@ -891,11 +891,11 @@ dependencies = [
891
891
 
892
892
  [[package]]
893
893
  name = "serde_spanned"
894
- version = "0.6.9"
894
+ version = "1.1.1"
895
895
  source = "registry+https://github.com/rust-lang/crates.io-index"
896
- checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
896
+ checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
897
897
  dependencies = [
898
- "serde",
898
+ "serde_core",
899
899
  ]
900
900
 
901
901
  [[package]]
@@ -995,44 +995,42 @@ dependencies = [
995
995
 
996
996
  [[package]]
997
997
  name = "toml"
998
- version = "0.8.23"
998
+ version = "1.1.6+spec-1.1.0"
999
999
  source = "registry+https://github.com/rust-lang/crates.io-index"
1000
- checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
1000
+ checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a"
1001
1001
  dependencies = [
1002
- "serde",
1002
+ "indexmap",
1003
+ "serde_core",
1003
1004
  "serde_spanned",
1004
1005
  "toml_datetime",
1005
- "toml_edit",
1006
+ "toml_parser",
1007
+ "toml_writer",
1008
+ "winnow",
1006
1009
  ]
1007
1010
 
1008
1011
  [[package]]
1009
1012
  name = "toml_datetime"
1010
- version = "0.6.11"
1013
+ version = "1.1.1+spec-1.1.0"
1011
1014
  source = "registry+https://github.com/rust-lang/crates.io-index"
1012
- checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
1015
+ checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
1013
1016
  dependencies = [
1014
- "serde",
1017
+ "serde_core",
1015
1018
  ]
1016
1019
 
1017
1020
  [[package]]
1018
- name = "toml_edit"
1019
- version = "0.22.27"
1021
+ name = "toml_parser"
1022
+ version = "1.1.3+spec-1.1.0"
1020
1023
  source = "registry+https://github.com/rust-lang/crates.io-index"
1021
- checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
1024
+ checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
1022
1025
  dependencies = [
1023
- "indexmap",
1024
- "serde",
1025
- "serde_spanned",
1026
- "toml_datetime",
1027
- "toml_write",
1028
1026
  "winnow",
1029
1027
  ]
1030
1028
 
1031
1029
  [[package]]
1032
- name = "toml_write"
1033
- version = "0.1.2"
1030
+ name = "toml_writer"
1031
+ version = "1.1.2+spec-1.1.0"
1034
1032
  source = "registry+https://github.com/rust-lang/crates.io-index"
1035
- checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
1033
+ checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
1036
1034
 
1037
1035
  [[package]]
1038
1036
  name = "unicode-ident"
@@ -1155,12 +1153,9 @@ dependencies = [
1155
1153
 
1156
1154
  [[package]]
1157
1155
  name = "winnow"
1158
- version = "0.7.15"
1156
+ version = "1.0.4"
1159
1157
  source = "registry+https://github.com/rust-lang/crates.io-index"
1160
- checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
1161
- dependencies = [
1162
- "memchr",
1163
- ]
1158
+ checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
1164
1159
 
1165
1160
  [[package]]
1166
1161
  name = "yansi"
@@ -3,7 +3,7 @@ resolver = "2"
3
3
  members = ["crates/polyxml-core", "crates/polyxml-python"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.23.2"
6
+ version = "0.23.3"
7
7
  edition = "2021"
8
8
  rust-version = "1.80"
9
9
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyxml
3
- Version: 0.23.2
3
+ Version: 0.23.3
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -14,7 +14,7 @@
14
14
  - **Pure-Rust XSD 1.0 & 1.1 Schema Parser**: Parses complex schemas with full support for includes, imports, redefines, choice groups, and restriction facets with zero C dependencies.
15
15
  - **Language-Agnostic Schema IR**: Normalizes XML Schema constructs into an actionable, unified Intermediate Representation (`SchemaIR`).
16
16
  - **Tarjan SCC Cycle Analysis**: Automatically breaks recursive and mutually cyclic type references with minimal cut points (`Box<T>`, pointers, `std::unique_ptr`, `z.lazy`).
17
- - **7-Target Code Generator**: Emits idiomatic models and streaming codecs for **Rust**, **Python** (dataclasses & Pydantic v2), **C++20**, **Java 21+**, **TypeScript 5+**, **Go 1.22+**, and **C# 12 / .NET 8+**.
17
+ - **7-Target Code Generator**: Emits idiomatic models and streaming codecs for **Rust**, **Python** (dataclasses & Pydantic v2), **C++20**, **Java 22+**, **TypeScript 5+**, **Go 1.22+**, and **C# 12 / .NET 8+**.
18
18
  - **Bidirectional Streaming Codecs**: Fast streaming deserialization and serialization with optional indentation formatting and namespace mapping.
19
19
  - **Security Hardened**: Built-in recursion depth limits protect against XML entity expansion and deeply nested denial-of-service (Billion Laughs) attacks.
20
20
  - **Zero Heavy Allocations**: Uses `smallvec` and slice lookups to minimize intermediate heap allocations.
@@ -18,7 +18,7 @@ use crate::ir::{
18
18
  /// Target backend for Java code emission.
19
19
  #[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
20
20
  pub enum JavaBackend {
21
- /// Zero-dependency Java 21+ records (default).
21
+ /// Zero-dependency Java 22+ records (default).
22
22
  #[default]
23
23
  Standard,
24
24
  /// Jackson-annotated records for Spring Boot / enterprise JSON+XML binding.
@@ -39,14 +39,14 @@ impl JavaBackend {
39
39
  }
40
40
  }
41
41
 
42
- /// Options configuring Java 21+ code generation.
42
+ /// Options configuring Java 22+ code generation.
43
43
  #[derive(Debug, Clone, Serialize, Deserialize)]
44
44
  pub struct JavaOptions {
45
45
  /// Java package declaration for generated types (default: "generated.models")
46
46
  pub package_name: String,
47
47
  /// Target serialization backend (default: Standard / zero-dependency).
48
48
  pub backend: JavaBackend,
49
- /// Use Java 21 `record` instead of traditional classes (default: true)
49
+ /// Use Java 22 `record` instead of traditional classes (default: true)
50
50
  pub use_records: bool,
51
51
  /// Emit fluent builders for model types.
52
52
  #[serde(default)]
@@ -77,7 +77,7 @@ impl Default for JavaOptions {
77
77
  }
78
78
  }
79
79
 
80
- /// Language context adapter for Java 21+.
80
+ /// Language context adapter for Java 22+.
81
81
  pub struct JavaLanguageContext;
82
82
 
83
83
  impl LanguageContext for JavaLanguageContext {
@@ -226,7 +226,7 @@ pub fn to_java_enum_constant(name: &str) -> String {
226
226
  sanitize_keyword(&sanitized, "java")
227
227
  }
228
228
 
229
- /// Code generator producing Java 21+ records or mutable classes, choices, and enums.
229
+ /// Code generator producing Java 22+ records or mutable classes, choices, and enums.
230
230
  pub struct JavaCodegen {
231
231
  pub options: JavaOptions,
232
232
  pub context: JavaLanguageContext,
@@ -325,11 +325,11 @@ impl JavaCodegen {
325
325
  }
326
326
  out.push_str("// @generated by PolyXML Compiler (https://github.com/polyxml/PolyXML)\n");
327
327
  if !self.options.use_records {
328
- out.push_str("// Target: Java 21+ (Mutable JavaBeans)\n\n");
328
+ out.push_str("// Target: Java 22+ (Mutable JavaBeans)\n\n");
329
329
  } else if self.options.backend.is_jackson() {
330
- out.push_str("// Target: Java 21+ (Records, Jackson XML/JSON Annotations)\n\n");
330
+ out.push_str("// Target: Java 22+ (Records, Jackson XML/JSON Annotations)\n\n");
331
331
  } else {
332
- out.push_str("// Target: Java 21+ (Records, Sealed Interfaces, Pattern Matching)\n\n");
332
+ out.push_str("// Target: Java 22+ (Records, Sealed Interfaces, Pattern Matching)\n\n");
333
333
  }
334
334
 
335
335
  if !self.options.package_name.is_empty() {
@@ -9,8 +9,11 @@ use polyxml::ir::{
9
9
  Cardinality, EnumDef, EnumValue, FieldDef, FieldKind, PrimitiveType, QName, RestrictionFacets,
10
10
  SchemaIR, StructDef, TypeDef, TypeRef, UnionBranch, UnionDef,
11
11
  };
12
+ use std::sync::Mutex;
12
13
  use tempfile::tempdir;
13
14
 
15
+ static DOTNET_LOCK: Mutex<()> = Mutex::new(());
16
+
14
17
  fn dotnet_command() -> Command {
15
18
  let mut cmd = Command::new("dotnet");
16
19
  cmd.env("DOTNET_NOLOGO", "1");
@@ -317,6 +320,7 @@ public class Program
317
320
  )
318
321
  .unwrap();
319
322
 
323
+ let _dotnet_lock = DOTNET_LOCK.lock().unwrap();
320
324
  let build_status = dotnet_command()
321
325
  .args(["build", "--warnaserror"])
322
326
  .current_dir(temp.path())
@@ -497,6 +501,7 @@ public class Program
497
501
  )
498
502
  .unwrap();
499
503
 
504
+ let _dotnet_lock = DOTNET_LOCK.lock().unwrap();
500
505
  let build_status = dotnet_command()
501
506
  .args(["build", "--warnaserror"])
502
507
  .current_dir(temp.path())
@@ -639,6 +644,7 @@ public class Program
639
644
  )
640
645
  .unwrap();
641
646
 
647
+ let _dotnet_lock = DOTNET_LOCK.lock().unwrap();
642
648
  let build_status = dotnet_command()
643
649
  .args(["build", "--warnaserror"])
644
650
  .current_dir(temp.path())
@@ -809,6 +815,7 @@ class Program {
809
815
  if (((Greeting)gs.Deserialize(new StringReader(gw.ToString()))!).Value != "hello") throw new Exception(gw.ToString());
810
816
  }
811
817
  }"#).unwrap();
818
+ let _dotnet_lock = DOTNET_LOCK.lock().unwrap();
812
819
  if Command::new("dotnet").arg("--version").output().is_err() {
813
820
  return;
814
821
  }
@@ -856,6 +863,7 @@ class Program { static void Main() {
856
863
  if(((Root)rx.Deserialize(new StringReader(rw.ToString()))!).Value is not Contact.Phone) throw new Exception(rw.ToString());
857
864
  } }
858
865
  "#).unwrap();
866
+ let _dotnet_lock = DOTNET_LOCK.lock().unwrap();
859
867
  if Command::new("dotnet").arg("--version").output().is_err() {
860
868
  return;
861
869
  }
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "polyxml"
7
- version = "0.23.2"
7
+ version = "0.23.3"
8
8
  description = "High-performance, polyglot XML data-binding engine built in Rust"
9
9
  authors = [
10
10
  { name = "Bailey Nguyen", email = "bailey.tan.nguyen@gmail.com" }
File without changes