rbs-merge 1.0.0 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6663c56407e80f943f7a4d81401282eba5e75f723b4a51aa8d75181b8a18e28
4
- data.tar.gz: 6bb1ac1eea8db04cdf9b4b11a35dc4af334165f47365716e98447efced40de87
3
+ metadata.gz: 7e4057790a0643cd6c0fd1821ec4a0ad52ad6160ec3d87ae2c787e80598dd604
4
+ data.tar.gz: 2c601503144989b9790853fd5a6bcbaccd6664c16a15c817faeec2bff4933a4f
5
5
  SHA512:
6
- metadata.gz: 68979ca2216a931d849b6cfe779dbb813c7188d1ac75e3dbf091a71a46e11975543781d719443e5b840156b66ca9f9348d654635a0435d587ec9537a90ac2028
7
- data.tar.gz: 2adaa78ffaa12fe749918f8bcf0b1f0e5e871954ffe45fa382bb829c967df0b99b7198dcf14adb5234da0d34a9ab8842ec5fd306741966d80b01bc7f23707155
6
+ metadata.gz: 7ea82d18877258e1ef05d9481b01027c40eafff471a6b31dc578d7b19f5a05a6bd642b7f2155271b611782c017d302b16b6804435d9e403e578d1966f6ca5761
7
+ data.tar.gz: c19d630681e6595da1f4a1cbd51e70b4981b280c635cc650ce69781bf759d5dce36a2b1c88ca844fe89955718a598a796a5e83570296ad476dec83f4bded882a
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,125 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [2.0.0] - 2026-02-19
34
+
35
+ - TAG: [v2.0.0][2.0.0t]
36
+ - COVERAGE: 72.31% -- 713/986 lines in 12 files
37
+ - BRANCH COVERAGE: 39.77% -- 208/523 branches in 12 files
38
+ - 98.63% documented
39
+
40
+ ### Added
41
+
42
+ - AGENTS.md
43
+ - **Dependency Tags Support**: Added `spec/support/dependency_tags.rb` to load shared
44
+ dependency tags from tree_haver and ast-merge. This enables automatic exclusion of
45
+ tests when required backends or dependencies are not available.
46
+ - Tests tagged with `:ffi_backend`, `:java_backend`, `:rust_backend` are now properly
47
+ excluded when those backends aren't available
48
+ - Tests tagged with `:rbs_grammar` are excluded when tree-sitter-rbs isn't available
49
+ - Tests tagged with `:rbs_parsing` work with any available RBS parsing backend
50
+ - FFI backend isolation for test suite
51
+ - Added `bin/rspec-ffi` script to run FFI specs in isolation (before MRI backend loads)
52
+ - Added `spec/spec_ffi_helper.rb` for FFI-specific test configuration
53
+ - Updated Rakefile with `ffi_specs` and `remaining_specs` tasks
54
+ - The `:test` task now runs FFI specs first, then remaining specs
55
+ - **BackendRegistry Integration**: RbsBackend now registers its availability checker with `TreeHaver::BackendRegistry`
56
+ - Enables `TreeHaver::RSpec::DependencyTags` to detect RBS backend availability without hardcoded checks
57
+ - Called automatically when backend is loaded: `TreeHaver::BackendRegistry.register_availability_checker(:rbs)`
58
+ - **TreeHaver backend integration** - rbs-merge now uses TreeHaver for all parsing,
59
+ enabling cross-platform RBS parsing:
60
+ - **`Rbs::Merge::Backends::RbsBackend`** - New TreeHaver-compatible backend module
61
+ that wraps the RBS gem. Registered with TreeHaver via `register_language(:rbs, ...)`.
62
+ - On MRI: Uses RBS gem backend (richer AST, comment association)
63
+ - On JRuby: Uses tree-sitter-rbs via TreeHaver's Java backend
64
+ - Backend selection respects `TreeHaver.with_backend()` and `TREE_HAVER_BACKEND` env var
65
+ - **`NodeWrapper#comment`** - Delegates to underlying RBS gem node's comment for
66
+ leading comment association (RBS gem backend only)
67
+ - **`FileAnalysis#compute_tree_sitter_signature`** - Generates signatures for raw
68
+ TreeHaver::Node objects from tree-sitter backend
69
+ - **`FileAnalysis#extract_tree_sitter_node_name`** - Extracts declaration names from
70
+ tree-sitter nodes by traversing child nodes
71
+ - `node_typing` parameter for per-node-type merge preferences
72
+ - Enables `preference: { default: :destination, special_type: :template }` pattern
73
+ - Works with custom merge_types assigned via node_typing lambdas
74
+ - `match_refiner` parameter for fuzzy matching support
75
+ - `regions` and `region_placeholder` parameters for nested content merging
76
+
77
+ ### Changed
78
+
79
+ - appraisal2 v3.0.6
80
+ - kettle-test v1.0.10
81
+ - stone_checksums v1.0.3
82
+ - [ast-merge v4.0.6](https://github.com/kettle-rb/ast-merge/releases/tag/v4.0.6)
83
+ - [tree_haver v5.0.5](https://github.com/kettle-rb/tree_haver/releases/tag/v5.0.5)
84
+ - tree_stump v0.2.0
85
+ - fork no longer required, updates all applied upstream
86
+ - Updated documentation on hostile takeover of RubyGems
87
+ - https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo
88
+ - **RbsBackend refactored to use TreeHaver::Base classes**
89
+ - `RbsBackend::Language` now inherits from `TreeHaver::Base::Language`
90
+ - `RbsBackend::Parser` now inherits from `TreeHaver::Base::Parser`
91
+ - `RbsBackend::Tree` now inherits from `TreeHaver::Base::Tree`
92
+ - `RbsBackend::Node` now inherits from `TreeHaver::Base::Node`
93
+ - Consistent API across all merge gem backends
94
+ - **Tree-sitter grammar registration** - `register_backend!` now registers both:
95
+ - The RBS gem backend (Ruby-based parser, MRI only)
96
+ - The tree-sitter-rbs grammar path (for native tree-sitter backends)
97
+ - This enables `TreeHaver.parser_for(:rbs)` to use tree-sitter when available
98
+ - **FileAnalysis now uses TreeHaver exclusively** - Removed separate backend selection
99
+ logic. `parse_rbs` now calls `TreeHaver.parser_for(:rbs)` which handles all backend
100
+ selection automatically.
101
+ - **`node_start_line`/`node_end_line` helpers** - Now check for `start_line`/`end_line`
102
+ methods first (TreeHaver::Node has these), falling back to `location` or `start_point`.
103
+ - **`ConflictResolver#declarations_identical?`** - Now compares text content instead of
104
+ relying on object equality, enabling cross-backend comparison.
105
+ - **`ConflictResolver#canonical_type`** - Now handles TreeHaver::Node objects in addition
106
+ to NodeWrapper and RBS gem nodes.
107
+ - **`ConflictResolver#has_members?`** - Now checks for `members` child nodes in
108
+ TreeHaver::Node objects for tree-sitter backend support.
109
+ - **`ConflictResolver#resolve`** - Now checks for template freeze blocks first, ensuring
110
+ frozen content from templates is preserved during merge.
111
+ - **`FileAligner#build_signature_map`** - FreezeNodes are now indexed by both their own
112
+ signature AND the signatures of their contained nodes. This allows freeze blocks to
113
+ match against the non-frozen version of the same declaration in the other file.
114
+ - **`MergeResult#add_freeze_block`** - Now uses the freeze_node's own analysis for line
115
+ extraction, ensuring template freeze blocks use template lines (not destination lines).
116
+ - **`SmartMerger#process_match`** - Now handles template FreezeNodes correctly, adding
117
+ them via `add_freeze_block` when the template side wins.
118
+ - **`SmartMerger#process_template_only`** - FreezeNodes from template are now always
119
+ added (they represent protected content that must be preserved).
120
+ - **SmartMerger**: Added `**options` for forward compatibility
121
+ - Accepts additional options that may be added to base class in future
122
+ - Passes all options through to `SmartMergerBase`
123
+ - **ConflictResolver**: Added `**options` for forward compatibility
124
+ - **MergeResult**: Added `**options` for forward compatibility
125
+ - **BREAKING**: `SmartMerger` now inherits from `Ast::Merge::SmartMergerBase`
126
+ - Provides standardized options API consistent with all other `*-merge` gems
127
+ - Gains automatic support for new SmartMergerBase features
128
+ - `max_recursion_depth` parameter is still supported
129
+ - `preference` now accepts Hash for per-type preferences
130
+
131
+ ### Removed
132
+
133
+ - **`FileAnalysis#rbs_gem_available?`** - Removed; TreeHaver handles backend availability
134
+ - **`FileAnalysis#parse_with_rbs_gem`** - Removed; replaced by `process_rbs_gem_result`
135
+ - **`FileAnalysis#parse_with_tree_sitter`** - Removed; replaced by `process_tree_sitter_result`
136
+ - **`backend:` parameter from `FileAnalysis#initialize`** - Removed; use
137
+ `TreeHaver.with_backend()` to control backend selection
138
+
139
+ ### Fixed
140
+
141
+ - ConflictResolver now applies Hash-based per-node-type preferences via `node_typing`.
142
+ - **Freeze blocks from template now preserved correctly** - Previously, freeze blocks
143
+ from the template would not match destination declarations because their signatures
144
+ differed. Now FreezeNodes are indexed by contained node signatures.
145
+ - **FreezeNode name extraction** - `extract_node_name` now handles TreeHaver::Node
146
+ objects and extracts meaningful names for error messages.
147
+ - **`FreezeNode#get_start_line`/`get_end_line`** - Now properly handle nodes with
148
+ direct `start_line`/`end_line` methods (TreeHaver::Node).
149
+ - **`SmartMerger#get_start_line`/`get_end_line`** - Added helper methods to support
150
+ both NodeWrapper and RBS gem nodes in `reconstruct_declaration_with_merged_members`.
151
+
33
152
  ## [1.0.0] - 2025-12-12
34
153
 
35
154
  - TAG: [v1.0.0][1.0.0t]
@@ -41,6 +160,8 @@ Please file a bug if you notice a violation of semantic versioning.
41
160
 
42
161
  - Initial release
43
162
 
44
- [Unreleased]: https://github.com/kettle-rb/rbs-merge/compare/v1.0.0...HEAD
163
+ [Unreleased]: https://github.com/kettle-rb/rbs-merge/compare/v2.0.0...HEAD
164
+ [2.0.0]: https://github.com/kettle-rb/rbs-merge/compare/v1.0.0...v2.0.0
165
+ [2.0.0t]: https://github.com/kettle-rb/rbs-merge/releases/tag/v2.0.0
45
166
  [1.0.0]: https://github.com/kettle-rb/rbs-merge/compare/7ae936a6ae844aee513264eecc39215eed53c313...v1.0.0
46
167
  [1.0.0t]: https://github.com/kettle-rb/rbs-merge/tags/v1.0.0