dry-validation-rust 0.1.0.pre5 → 0.1.0.pre6

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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +13 -0
  3. data/.markdownlint.yml +9 -0
  4. data/.rubocop.yml +124 -0
  5. data/.ruby-version +1 -0
  6. data/.tool-versions +1 -0
  7. data/.yardopts +4 -0
  8. data/AGENTS.md +376 -0
  9. data/CHANGELOG.md +71 -0
  10. data/CODE_OF_CONDUCT.md +42 -0
  11. data/CONTRIBUTING.md +159 -0
  12. data/Cargo.lock +809 -0
  13. data/Cargo.toml +10 -0
  14. data/GOVERNANCE.md +68 -0
  15. data/Gemfile +15 -0
  16. data/Gemfile.lock +132 -0
  17. data/NOTICE.md +5 -5
  18. data/README.md +206 -181
  19. data/Rakefile +350 -0
  20. data/SECURITY.md +98 -0
  21. data/SECURITY_AUDIT.md +33 -0
  22. data/SUMMARY.md +30 -0
  23. data/SUPPORT.md +67 -0
  24. data/book.toml +9 -0
  25. data/codecov.yml +11 -0
  26. data/compatibility.yml +453 -0
  27. data/deny.toml +7 -0
  28. data/dry-validation-rust.gemspec +21 -23
  29. data/ext/dry_validation_rust/Cargo.toml +7 -7
  30. data/ext/dry_validation_rust/build.rs +5 -0
  31. data/ext/dry_validation_rust/extconf.rb +12 -0
  32. data/ext/dry_validation_rust/fuzz/.gitignore +5 -0
  33. data/ext/dry_validation_rust/fuzz/Cargo.toml +19 -0
  34. data/ext/dry_validation_rust/fuzz/corpus/parse_plan/basic_params.json +1 -0
  35. data/ext/dry_validation_rust/fuzz/fuzz_targets/parse_plan.rs +9 -0
  36. data/lib/dry/validation/rust/path_trie.rb +15 -8
  37. data/lib/dry/validation/rust/schema/dsl.rb +8 -0
  38. data/lib/dry/validation/rust/schema/field_definition.rb +3 -1
  39. data/lib/dry/validation/rust/schema/predicate_block.rb +2 -1
  40. data/lib/dry/validation/rust/schema/ruby_type_processor.rb +38 -23
  41. data/lib/dry/validation/rust/version.rb +1 -1
  42. data/supply-chain/audits.toml +4 -0
  43. data/supply-chain/config.toml +368 -0
  44. data/supply-chain/imports.lock +4 -0
  45. data/support_matrix.yml +9 -0
  46. metadata +64 -25
  47. data/docs/ARCHITECTURE.md +0 -256
  48. data/docs/COMPATIBILITY.md +0 -198
  49. data/docs/FEASIBILITY.md +0 -207
  50. data/docs/SUPPORT_MATRIX.md +0 -66
  51. data/docs/VERIFICATION.md +0 -128
data/Cargo.toml ADDED
@@ -0,0 +1,10 @@
1
+ [workspace]
2
+ members = [
3
+ "ext/dry_validation_rust"
4
+ ]
5
+ resolver = "2"
6
+
7
+ [profile.release]
8
+ codegen-units = 1
9
+ lto = "thin"
10
+ strip = "debuginfo"
data/GOVERNANCE.md ADDED
@@ -0,0 +1,68 @@
1
+ # Governance
2
+
3
+ ## Project status and maintainer
4
+
5
+ `dry-validation-rust` is an independent, single-maintainer project. Alexey
6
+ Tomilov is the current maintainer and has final responsibility for technical
7
+ direction, merges, releases, security advisories, and repository
8
+ administration.
9
+
10
+ This governance model describes the current project; it does not imply a
11
+ foundation, steering committee, or multi-maintainer organization.
12
+
13
+ ## Decision making
14
+
15
+ Routine changes are decided through issue and pull-request discussion. The
16
+ maintainer considers correctness, compatibility evidence, FFI safety,
17
+ maintenance cost, performance evidence, and alignment with the documented
18
+ product scope.
19
+
20
+ When consensus is not reached, the maintainer makes the final decision and
21
+ records material tradeoffs in the issue, pull request, architecture
22
+ documentation, or changelog as appropriate.
23
+
24
+ ## Compatibility philosophy
25
+
26
+ `Dry::Validation::Rust::Contract` is the primary supported API. Familiar
27
+ dry-validation-style behavior is supported only where it is documented and
28
+ tested against pinned upstream releases. Exact compatibility mode remains
29
+ experimental and process-isolated from upstream gems.
30
+
31
+ Unsupported behavior must fail loudly. Compatibility claims require executable
32
+ evidence; performance claims require reproducible measurements. The project
33
+ will not silently widen its supported DSL or weaken tests to hide a mismatch.
34
+
35
+ ## Breaking changes
36
+
37
+ Breaking changes should start with a public issue describing the affected
38
+ surface, migration path, compatibility evidence, and release impact. During
39
+ the alpha period, breaking changes may occur in prereleases, but they must be
40
+ intentional and documented.
41
+
42
+ Once a stable line exists, its deprecation and support policy will be defined
43
+ before release. This file does not create a stability promise beyond the
44
+ current support matrix.
45
+
46
+ ## Branches and releases
47
+
48
+ `main` is the default and release branch. `develop` is currently the active
49
+ integration branch, with short-lived feature branches merged through pull
50
+ requests. Tested changes are promoted from `develop` to `main`.
51
+
52
+ Only the maintainer may authorize a gem publication, release tag, GitHub
53
+ release, or security advisory. Passing CI does not itself authorize a release.
54
+
55
+ ## Adding maintainers
56
+
57
+ Additional maintainers may be invited after sustained, trustworthy
58
+ contributions across code review, compatibility work, security-sensitive
59
+ changes, documentation, and support. Access should be granted incrementally
60
+ and follow least privilege. Any change to release or security authority will
61
+ be documented publicly.
62
+
63
+ ## Relationship to dry-rb
64
+
65
+ This project is independent from dry-rb and its maintainers. It is not an
66
+ official dry-rb project, and its compatibility and support statements apply
67
+ only to `dry-validation-rust`. Upstream project names are used to describe the
68
+ API reference and comparison target.
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+ gemspec
5
+ gem 'benchmark', '>= 0.3', '< 1.0'
6
+ gem 'benchmark-ips', '~> 2.14'
7
+ gem 'bundler-audit', require: false
8
+ gem 'dry-validation', '1.11.1'
9
+ gem 'memory_profiler', '~> 1.1'
10
+ gem 'rubocop', '>= 1.88.2'
11
+ gem 'rubocop-minitest', require: false
12
+ gem 'rubocop-performance', require: false
13
+ gem 'simplecov', require: false, group: :test
14
+ gem 'simplecov-lcov', require: false, group: :test
15
+ gem 'yard', '~> 0.9', require: false
data/Gemfile.lock ADDED
@@ -0,0 +1,132 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ dry-validation-rust (0.1.0.pre6)
5
+ bigdecimal (>= 3.1, < 5.0)
6
+ rb_sys (>= 0.9.100, < 0.10)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ ast (2.4.3)
12
+ benchmark (0.5.0)
13
+ benchmark-ips (2.15.1)
14
+ bigdecimal (4.1.2)
15
+ bundler-audit (0.9.3)
16
+ bundler (>= 1.2.0)
17
+ thor (~> 1.0)
18
+ concurrent-ruby (1.3.7)
19
+ drb (2.2.3)
20
+ dry-configurable (1.4.0)
21
+ dry-core (~> 1.0)
22
+ zeitwerk (~> 2.6)
23
+ dry-core (1.2.0)
24
+ concurrent-ruby (~> 1.0)
25
+ logger
26
+ zeitwerk (~> 2.6)
27
+ dry-inflector (1.3.1)
28
+ dry-initializer (3.2.0)
29
+ dry-logic (1.6.0)
30
+ bigdecimal
31
+ concurrent-ruby (~> 1.0)
32
+ dry-core (~> 1.1)
33
+ zeitwerk (~> 2.6)
34
+ dry-schema (1.16.0)
35
+ concurrent-ruby (~> 1.0)
36
+ dry-configurable (~> 1.0, >= 1.0.1)
37
+ dry-core (~> 1.1)
38
+ dry-initializer (~> 3.2)
39
+ dry-logic (~> 1.6)
40
+ dry-types (~> 1.9, >= 1.9.1)
41
+ zeitwerk (~> 2.6)
42
+ dry-types (1.9.1)
43
+ bigdecimal (>= 3.0)
44
+ concurrent-ruby (~> 1.0)
45
+ dry-core (~> 1.0)
46
+ dry-inflector (~> 1.0)
47
+ dry-logic (~> 1.4)
48
+ zeitwerk (~> 2.6)
49
+ dry-validation (1.11.1)
50
+ concurrent-ruby (~> 1.0)
51
+ dry-core (~> 1.1)
52
+ dry-initializer (~> 3.2)
53
+ dry-schema (~> 1.14)
54
+ zeitwerk (~> 2.6)
55
+ json (2.21.2)
56
+ language_server-protocol (3.17.0.6)
57
+ lint_roller (1.1.0)
58
+ logger (1.7.0)
59
+ memory_profiler (1.1.0)
60
+ minitest (6.0.6)
61
+ drb (~> 2.0)
62
+ prism (~> 1.5)
63
+ parallel (2.1.0)
64
+ parser (3.3.12.0)
65
+ ast (~> 2.4.1)
66
+ racc
67
+ prism (1.9.0)
68
+ racc (1.8.1)
69
+ rainbow (3.1.1)
70
+ rake (13.4.2)
71
+ rake-compiler (1.3.1)
72
+ rake
73
+ rake-compiler-dock (1.12.0)
74
+ rb_sys (0.9.128)
75
+ rake-compiler-dock (= 1.12.0)
76
+ regexp_parser (2.12.0)
77
+ rubocop (1.89.0)
78
+ json (~> 2.3)
79
+ language_server-protocol (~> 3.17.0.2)
80
+ lint_roller (~> 1.1.0)
81
+ parallel (>= 1.10)
82
+ parser (>= 3.3.0.2)
83
+ rainbow (>= 2.2.2, < 4.0)
84
+ regexp_parser (>= 2.9.3, < 3.0)
85
+ rubocop-ast (>= 1.49.0, < 2.0)
86
+ ruby-progressbar (~> 1.7)
87
+ unicode-display_width (>= 2.4.0, < 4.0)
88
+ rubocop-ast (1.50.0)
89
+ parser (>= 3.3.7.2)
90
+ prism (~> 1.7)
91
+ rubocop-minitest (0.40.0)
92
+ lint_roller (~> 1.1)
93
+ rubocop (>= 1.75.0, < 2.0)
94
+ rubocop-ast (>= 1.38.0, < 2.0)
95
+ rubocop-performance (1.27.0)
96
+ lint_roller (~> 1.1)
97
+ rubocop (>= 1.89.0, < 2.0)
98
+ rubocop-ast (>= 1.47.1, < 2.0)
99
+ ruby-progressbar (1.13.0)
100
+ simplecov (1.1.1)
101
+ simplecov-lcov (0.9.0)
102
+ thor (1.5.0)
103
+ unicode-display_width (3.2.0)
104
+ unicode-emoji (~> 4.1)
105
+ unicode-emoji (4.2.0)
106
+ yard (0.9.45)
107
+ zeitwerk (2.8.2)
108
+
109
+ PLATFORMS
110
+ ruby
111
+ x86_64-linux
112
+
113
+ DEPENDENCIES
114
+ benchmark (>= 0.3, < 1.0)
115
+ benchmark-ips (~> 2.14)
116
+ bundler-audit
117
+ dry-validation (= 1.11.1)
118
+ dry-validation-rust!
119
+ memory_profiler (~> 1.1)
120
+ minitest (~> 6.0)
121
+ rake (~> 13.1)
122
+ rake-compiler (~> 1.3)
123
+ rake-compiler-dock (~> 1.12)
124
+ rubocop (>= 1.88.2)
125
+ rubocop-minitest
126
+ rubocop-performance
127
+ simplecov
128
+ simplecov-lcov
129
+ yard (~> 0.9)
130
+
131
+ BUNDLED WITH
132
+ 2.5.22
data/NOTICE.md CHANGED
@@ -8,11 +8,11 @@ The public interfaces, documentation, tests, dependency metadata, and
8
8
  architecture of these MIT-licensed projects were studied:
9
9
 
10
10
  - dry-validation, copyright 2015–2026 Hanakai team:
11
- https://github.com/dry-rb/dry-validation
11
+ <https://github.com/dry-rb/dry-validation>
12
12
  - dry-schema, copyright its contributors:
13
- https://github.com/dry-rb/dry-schema
13
+ <https://github.com/dry-rb/dry-schema>
14
14
  - dry-logic and dry-types:
15
- https://github.com/dry-rb
15
+ <https://github.com/dry-rb>
16
16
 
17
17
  No upstream implementation source is copied into this project. The compatible
18
18
  surface was independently implemented. If future development incorporates
@@ -21,8 +21,8 @@ must be preserved.
21
21
 
22
22
  The native extension uses:
23
23
 
24
- - Magnus (MIT): https://github.com/matsadler/magnus
25
- - rb-sys (MIT OR Apache-2.0): https://github.com/oxidize-rb/rb-sys
24
+ - Magnus (MIT): <https://github.com/matsadler/magnus>
25
+ - rb-sys (MIT OR Apache-2.0): <https://github.com/oxidize-rb/rb-sys>
26
26
  - serde and serde_json (MIT OR Apache-2.0)
27
27
 
28
28
  Their complete license texts are distributed by their respective packages.