All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-04-05
- Add pattern matching type inference (#103)
- Add Lambda/Proc type inference support (#104)
- Add compound assignment type inference (#105)
- Add
defined?type inference support (#106) - Add
yieldtype inference support (#107) - Add control flow keyword support (
break,next,retry,redo) (#108) - Add backtick string type inference (#109)
- Add predicate type propagation to pattern variables in
case...in(#110) - Add constant type inference support (#102)
- Add global variable (
$var) type tracking (#100) - Add class variable (
@@var) type tracking (#99)
- Fix uninitialized
@@varreads silently skipping downstream type checking (#101) - Fix release workflow not triggered after tag push (#88)
0.1.10 - 2026-03-24
- Add safe navigation operator (
&.) support (#65) - Add inheritance chain method resolution for user-defined classes (#66)
- Add extend support for module methods as class methods (#67)
- Add pull request template (#82)
- Migrate Rust integration tests to Ruby integration tests (#68, #69, #70, #71, #72, #73, #74, #75)
- Remove redundant Rust unit tests (#77, #78, #80, #83, #84, #85, #86)
- Simplify README to focus on core value proposition (#76)
0.1.9 - 2026-03-15
- Add linter CI workflow for Clippy and RuboCop (#61)
- Add unit tests for blocks and parameters analyzers (#60)
- Add super call type inference support (#59)
- Add for loop type inference support (#58)
- Add module include support for mixin method resolution (#57)
- Add complete multi-assignment type inference (#56)
- Add auto-tagging workflow for release PR merges (#53)
0.1.8 - 2026-03-09
- while/until loop support to type inference (#46)
- Not operator (!) support to type inference (#47)
- begin/rescue/ensure exception handling support to type inference (#48)
- Keyword argument support to type inference (#49)
- Multiple assignment support to type inference (#50)
- Resolve all Clippy warnings for cleaner, more idiomatic Rust (#51)
0.1.7 - 2026-03-07
- Kernel/Object methods loaded from RBS to reduce false positives (#39)
- Object/Kernel fallback chain for method resolution (#40)
- Constant namespace resolution for ConstantReadNode in nested scopes (#41)
- Cargo test added to CI workflow (#38)
- Extract
bytes_to_namehelper to consolidate 17 UTF-8 conversion sites (#42) - Refactor MethodCallBox by extracting helper methods (#43)
0.1.6 - 2026-02-23
- Embed
method_loader.rbat compile time withinclude_str!to eliminate runtime dependency on source directory (#35)
0.1.5 - 2026-02-23
- String interpolation type inference (
InterpolatedStringNode,InterpolatedSymbolNode,InterpolatedRegularExpressionNode) (#26) - Parentheses node type inference for parenthesized expressions (#27)
- Qualified name method registration to resolve namespace conflicts (#28)
- Return statement type inference with merge vertex pattern (#29)
- Ternary operator type inference tests (#30)
- Logical operator (
&&/||) type inference with union type approximation (#31) - Class method (
def self.foo) type registration and checking (#32)
- Removed stateless
Analyzerclass and simplified Ruby FFI surface to module functions (#33)
clear_cachecommand (#25)
0.1.4 - 2026-02-16
- Method return type inference for user-defined methods (#18)
- Parameter type propagation from call-site arguments to method parameters (#19)
- Receiver-less method call support (ImplicitSelfCall) (#20)
attr_reader/attr_writer/attr_accessorsupport for type inference (#21)if/unless/caseconditional type inference (#22)ConstantReadNode/ConstantPathNodesupport for type inference (#23)
- Split install.rs and integration tests into focused modules (#17)
0.1.3 - 2025-02-08
- Method parameter type inference support (#3)
- Block parameter type variable resolution (#4)
- Module scope support (#6)
- Fully qualified name support for nested classes/modules (#7)
- Float type support (#8)
- Regexp type support (#9)
- Range type support (#10)
- Generic type inference for Range, Hash, and nested Array (#11)
- Extract BinaryLocator class from Commands module (#5)
- Migrate Rust integration tests to Ruby CLI and Rust unit tests (#14)
- Remove unnecessary test files and logs (#1, #15)
0.1.2 - 2025-01-19
- Pre-built RBS cache bundled with gem (no initialization required)
MethodRay.setupfor cache generation (internal API)
- Separated
setuplogic frominfer_typesfor cleaner cache generation
0.1.1 - 2025-01-19
- aarch64-linux (ARM64 Linux) support
- macOS support (arm64-darwin)
0.1.0 - 2025-01-18
- Initial release
methodray check- Static type checking for Ruby files