CHANGELOG
3.9.5 (2025-09-08)
Signature updates
- Merge pull request #2655 from ruby/silence-string-deprecation (#2656)
Miscellaneous
- Allows the use of a path list as RBS_SKIP_TESTS (#2641)
- Suppress to GCC warning with multi-line comment (#2646)
- Backport to 3.9 (#2487)
- Use erb instead of set for load path testing (#2468)
3.9.4 (2025-05-15)
Miscellaneous
3.9.3 (2025-05-09)
Miscellaneous
- Use erb instead of set for load path testing (#2468)
3.9.2 (2025-03-31)
Library changes
- Change
{}to{ 0 }(#2354)
3.9.1 (2025-03-24)
Miscellaneous
3.9.0 (2025-03-18)
Miscellaneous
- Update steep (#2328)
3.9.0.pre.2 (2025-03-14)
Signature updates
Language updates
- Fix
define_methodmethod block self type (#2325)
3.9.0.pre.1 (2025-03-11)
Signature updates
CGI.escape/unescape_uri_component(#2299)Enumerator::Chain(#2220)IO.read(#2216)IPAddr#netmask(#2311)Kernel#gets,Kernel#readline,Kernel#readlines(#2212)Net::HTTP.start(#2225)OpenSSL::BN(#2267)OpenSSL::PKey::{RSA,DSA,DH#params} (#2255)UNIXSocket#send_io,UNIXSocket#recv_io(#2264)URI.encode/decode_uri_component(#2299)- Rename to reduce top-level interface and type alias (#2250)
Language updates
- Let class/module alias decls, global decls, and constant decls be annotated (#2302)
- Add
resolve-type-names: falsemagic comment (#2234)
Library changes
- Remove unused root variable (#2307)
- Run Valgrind on CI and fix memory leaks (#2309)
- Add information for VariableDuplicationError (#2310)
- Reduce Array object allocation during parsing (#2304)
- No class variable duplication validation (#2305)
- Keep annotations during type name resolution (#2303)
- Fix method annotations (#2301)
- Fix class variable (#2300)
- Add bundled gems to alumnus (#2288)
- Exclude
attr_*methods from duplicate checks. (#2294) - Validate superclass and module-self-type (#2289)
- Remove case when
rubygemsandset(#2279) - Check variable duplication (#2241)
- Validate variable types (#2237)
- Remove call to
TypeParam#unchecked!from C parser (#2256) - Remove call to
Any#todo!from C parser (#2249) - [rbs/unit_test] Treat nil as a return value (#2257)
Miscellaneous
- Apply rubocop style to
RBS(#2292) - Eliminate external HTTP requests on test (#2253)
- Prevent a warning: the block passed to 'map_type_name' .. may be ignored (#2248)
- Update ruby version for rubocop (#2251)
- Drop templates from package (#2214)
3.8.1 (2024-12-27)
Signature updates
Miscellaneous
3.8.0 (2024-12-24)
Signature updates
Dir.mktmpdir(#2158)File.join(#2158)IO#each_line(#2151)Kernel#readlines(#2151)Ractor.store_if_absent(#2198)- Update docs as of 2024-12-24, 16:13 JST (#2193)
Library changes
3.8.0.pre.1 (2024-12-19)
Signature updates
RubyVM::AbstractSyntaxTree::Location(#2189)_JsonWrite#flush(#2134)Array#fetch_values(#2189)Array#to_csv(#2099)Exception#set_backtrace(#2189)Fiber#raise(#2189)GC.config(#2189)Hash.new(#2189)Kernel#raise(#2189)MatchData#bytebegin(#2189)MatchData#byteend(#2189)Pathname#mkpath(#2048)Pathname#rmtree(#2048)Ractor._require(#2189)Ractor.[](#2189)Ractor.[]=(#2189)Ractor.main?(#2189)Range#step(#1958)RubyVM::AbstractSyntaxTree::Node#locations(#2189)String#append_as_bytes(#2189)String#parse_csv(#2099)String#scan(#2146)Tempfile.create(#2189)Thread#raise(#2189)Time#iso8601(#2189)Time#xmlschema(#2189)Warning.categories(#2189)ZStream#finish(#2136)- Generate docs based on ruby 3.4.0-rc1 (#2183)
Library changes
- Deprecate Kernel#Namespace (#2123)
- Fix
missing braces around initializerwarning (#2180) - Avoid double name resolution (#2127)
- Remove forward declarations of local variables (#2132)
- Designated initializers (#2131)
Miscellaneous
- Update docs with rdoc-6.10.0 (#2182)
- Update rdoc (#2160)
- Prepare for ruby 3.4.0 (#2181)
- Fix typo in
instanceusage example (#2139) - Indent
parser_testcode snippets properly (#2137) - Bump rbs and steep in /steep (#2129)
- Un-hardcode repo name in test suite (#2128)
3.7.0 (2024-12-05)
Miscellaneous
- bundle update mutex_m (#2122)
3.7.0.pre.1 (2024-12-05)
Signature updates
CGI.accept_charset(#2045)IO#readline,IO#readlines(#2059)Kernel#proc(#2036)Kernel#system(#2075)Object#to_yaml(#2107)OpenSSL::Digest(#2108)OpenSSL.base64digest(#2078)Process.detach(#2083)
Library changes
- Reduce object allocation for record type (#2118)
- Milestone to graduate stringio from core. (#2114)
- Mark all internal
parse_methods asstatic(#2103) - Add templating mechanism to automatically generate
.c/.hfiles (#2098) - Remove unused
rbs_unescape_stringdeclaration (#2058) - Fix UntypedFunction does not provide #map_type_name (#2054)
- Better
instance_eval/instance_execdetection (#2052) - Overload annotations (#2049)
rbs prototype
- prototype rb: Fix crashed by self::CONST (#2079)
rbs collection
- mutex_m support (#2115)
Miscellaneous
- Use
File.openwith block (#2119) - Compile without activesupport (#2105)
- docs: Add singleton attribute members to syntax.md (#2090)
- Bundle update rubocop-on-rbs (#2094)
bundle execon windows (#2101)- Fix typos (#2097)
- Bundle update json 2.8.2 (#2095)
- Skip
rbsgem validation (#2084) - Skip PTY_test with Windows platform (#2055)
- Randomize stdlib test order to uncover hidden assumptions (#2043)
- Suppress
inlineis not at beginning of declaration for melt_array (#2050) - Skip
mkpathtest with 3.4 (#2053)
3.6.1 (2024-10-03)
Library changes
- Mark as ractor-safe (#2041)
Miscellaneous
3.6.0 (2024-09-30)
Nothing changed since 3.6.0.pre.3.
3.6.0.pre.3 (2024-09-30)
Signature updates
JSON.load_file,.load_file!(#2031)Module#class_eval,Module#module_eval(#2029)Open3(#2014)RubyVM::InstructionSequence(#2027)- Fixup RBS type definitions with rbs-on-rubocop (#2023)
- Avoid using
instance/classtypes in modules (#2020)
Language updates
- Optional type param restriction (#2030)
- Prohibit
selftype as a generics default (#2022) - Allow
selftypes in generics default type (#2021)
Library changes
- Add
TypeParamDefaultReferenceError#type_param(#2032)
3.6.0.pre.2 (2024-09-18)
Signature updates
Miscellaneous
- Fix type definition and type errors (#2016)
3.6.0.pre.1 (2024-09-17)
Signature updates
- csv (#2012, #1864, #2002, #2003, #1903)
- digest (#1880)
- kconv (#1857)
- zlib (#1911)
_Each(#2006)Array(#1921)Enumerable(#1921)Enumerator::_Each(#2006, #1915)Enumerator(#2004)Kernel(#1945)Method(#1939)Module(#1921)Net::HTTPHeader(#1932)Proc(#1937)Queue(#2004)Range(#1921)Refinement(#1931)Symbol(#1930)TracePoint(#1943)#rand(#2007)- Use untyped blocks (#1935)
- Update docs for ruby-3.3.4 (#1923)
- Update docs for ruby-3.3.3 (#1889)
Language updates
- Fix position for default_type (#1997)
- Update
syntax.md(#1995) - Improve generics (#1994)
- Allow alias to module-self-type from module (#1948)
- Make it a syntax error when the keys of keyword and record are duplicated. (#1883)
Library changes
- Omit unnecessary field from location range (#1788)
- Handle ISEQs compiled by Prism (#1983)
- Add AST Visitor (#1975)
- Make the extension
GC.auto_compactcompatible (#1971) - Make
FileFinderfaster by globbing all possible files (#1965) - Fix #1905: Fix typo in
UntypedFunction(#1906)
rbs prototype
- [prototype] Remove redundant access modifier (#1914)
Miscellaneous
- Allow RBS/Style/InitializeReturnType (#2008)
- docs: An interface can include interfaces only and not modules (#1996)
- Fix the portability of an external command (#2001)
- Skip
AbstractSyntaxTreetest with ruby-3.4 (#2005) - Fix test (#1972)
- Use
File.openinstead ofIO.sysopen(#1912)
3.5.3 (2024-08-23)
Library changes
- Backport GC fix PR (#1977)
3.5.2 (2024-07-10)
Library changes
- Update docs for ruby-3.3.4 (#1923, Backported in #1925)
- Update docs for ruby-3.3.3 (#1889, Backported in #1925)
- Fix #1905: Fix typo in
UntypedFunction(#1906, Backported in #1925)
Miscellaneous
- Use
File.openinstead ofIO.sysopen(#1913)
3.5.1 (2024-06-07)
Library changes
Miscellaneous
- Don't try to sign git commits when running tests (#1867)
3.5.0 (2024-06-06)
Signature updates
net-httpheaders (#1750)CSV.foreach(#1738)Enumerator#initialize(#1801)Float#divmod,Rational#divmod(#1868)GC(#1530)Integer#pow(#1706)Kernel.rand(#1783)Kernel#extend(#1769)Module#include,Module#prepend(#1769)Proc#parameters(#1819)Range#step(#1709)Regexp.union(#1809)RubyVM::YJIT.enable(#1812)RubyVM::YJIT,RubyVM::RJIT(#1746)String#bytesplice(#1793)String#gsub!(#1768)Symbol#=~(#1704)Time#initialize(#1771)Time#zone(#1770)Timeout::ExitException(#1803)URI::MailTo(#1858)- Update docs (#1811, #1699)
Language updates
- Fix proc type syntax (#1807)
- Function types with untyped parameter (#1806)
- Fix record type (#1732)
- parser: enable record types with optional fields (#1717)
Library changes
- Drop dependency on
abbrev(#1866) - Fix source display (#1832)
- Include trivia tokens to lex result (#1831)
- Implement token list API (#1829)
- Fix memory leak when ParsingError (#1830)
- [rbs diff] Fix error when empty manifest.yaml (#1762)
- Remove deprecated API since
RBSv1 (#1805) - Use array instead of linked list for rbs location's child (#1786)
- Fix SEGV with parse negative position (#1790)
- Add location for attribute (#1787)
- Always be private (#1774)
- Prevent resource leak with type/method-type parser when reaching EOF. (#1742)
- Allow loading
RBSfrom different version of a gem (#1731) - Fix method name tag on assertion (#1705)
- Improve interface check by method parameters (#1698)
rbs prototype
- Fix prototype for ruby-3.4 (#1760)
- Fix 3.4
prototype rbfailure (#1713) - Add Numeric Node's check for parse rbs (#1711)
rbs collection
Miscellaneous
- Introduce RaaP for testing of signature (#1810)
- Revise .gemspec to remove
GemfileandGemfile.lock(#1856) - Add link to gem_rbs_collection to README (#1827)
- Remove
Gemfile.lockfrom the gem package (#1823) - Modify template to use TestHelper (#1776)
- Should focus on
String.newnotString#initialize. (#1789) - Make the test suite compatible with
--enable-frozen-string-literal(#1767) - Stop reusing
fd(#1752) - Fix test failures on Ruby 3.4 (#1734)
- Stop trace object allocations during test (#1724)
- Fix head test fails (#1719)
3.4.4 (2024-02-08)
Miscellaneous
3.4.3 (2024-01-25)
Library changes
rbs collection
3.4.2 (2024-01-19)
Miscellaneous
3.4.1 (2023-12-26)
Signature updates
- Update embedded RDoc based on ruby-3.3.0 (Backport #1699) (#1700)
3.4.0 (2023-12-21)
Signature updates
Library changes
- Fix klass name if klass is singleton_class (#1695)
Miscellaneous
- Suppress warnings on testing (#1691)
3.4.0.pre.1 (2023-12-19)
Signature updates
- Changes in ruby-3.3 (#1684, #1674)
- Embedded docs update (#1689, #1676)
- delegate (#1677)
MatchData(#1651)String(#1672, #1641)Struct(#1621)Warningcategories (#1576)ConditionVariable#wait(#1670)Date.parse(#1653)IO#gets(#1620)Kernel.Pathname(#1681)Resolv::DNS::Resource::Generic.create(#1655)Thread#raise(#1668)- Builtin types (#1680, #1644)
Library changes
- Add more details error message for
UnresolvedOverloadingError(#1688) - Add
with_***helpers (#1687) - Fix lexer (#1685)
- Support
Delegatorobject (#1682) - Should raise
ParsingErrorinstead of NoMethodError (#1675) - Implement multiple validate (#1648)
- Add
::RBS::UnitTestmodules (#1660) - Not cached as it may be replaced (#1656)
- Should raise
ParsingErrorinstead of ArgumentError (#1652) - Added
WithEnum#butandwith_range(#1649) - Bugfix;
.respond_tois no longer used inRbs::Test::Errors#inspect_(#1650) - Add
--detailoption to rbs diff (#1623) - Fix parse error when quoted required keywords (#1627)
rbs collection
- Fix order for collection sources (#1659)
- [collection] Ignore directory starting with
_as version from git source (#1657)
Miscellaneous
- Fix token names in comments (#1658)
- Small bugfix to have guaranteed print out instance variables (#1642)
- Fix flaky test (#1616)
- Update syntax.md (#1634)
- Add steep typecheck workflow (#1632)
- Add doc for Generating RBS (#1617)
- updated test harness utils (#1600)
3.3.2 (2023-11-21)
Miscellaneous
- Require
bundlerexplicitly for ruby/ruby CI (#1629)
3.3.1 (2023-11-21)
Library changes
- Allow to use
RBSin symlinked tree (#1624) - Should escape if param name include not simple-word (#1618)
rbs collection
- Load Bundler lazily (#1612)
Miscellaneous
- Stop using
bundlecommand (#1619)
3.3.0 (2023-11-09)
Library changes
- Stop exiting with error when syntax error detected during validation (#1603)
- [rbs diff] Load dependencies from manifest.yaml (#1602)
- [rbs diff] Resolve constants name (#1601)
3.3.0.pre.2 (2023-11-02)
Signature updates
Library changes
rbs prototype
- Fix error when MASGN (#1593)
- Support cases where
Module#constantshas been redefined (#1591) - [prototype runtime] Fix error if direct inherited (#1590)
3.3.0.pre.1 (2023-10-31)
Signature updates
- json (#1575)
- net-protocol (#1559)
- pp (#1545)
- psych (#1527)
BasicObject(#1506)ConditionVariable(#1468)Encoding(#1510)Exception(#1529)FalseClass(#1478, #1487)Fiber(#1463)FileTest(#1500)Kernel(#1567, #1518, #1504, #1487)Marshal(#1524)Math(#1533)Mutex(#1468)NilClass(#1478, #1487)Object(#1504)Queue(#1468)RbConfig(#1534)Signal(#1512)SizedQueue(#1468)ThreadGroup(#1509)TrueClass(#1478, #1487)Warning(#1477)Enumerator.produce(#1516)Module.define_method(#1557)URI.join(#1580)YAML.unsafe_load(#1528)builtin.rbs(#1455, #1469)constants.rbs(#1531)::interned(#1499, #1488)
Language updates
- Add
__todo__type (#1520)
Library changes
- Colored diff (#1589)
- Fix the issue where ::array[T] would be interpreted as ::array, and type mismatch (#1491)
- Add
Abbrevto runtime dependency (#1573) - Avoid an error when parsing files including SyntaxError (#1574)
- Implement rbs diff command (#1459)
- Add another type syntax validation (#1566)
- Mark global variables (#1551)
- Show location of type by method command (#1537)
- Make alias and interface names absolute (#1502)
- Better record type format (#1501)
- Should keep escape of alias and attr family (#1486)
- Fix error when undefined interface or alias (#1465)
rbs prototype
- [prototype runtime --todo] Consider accessibility mismatch (#1539)
- Better support for inherited class of
StructorDataby prototype runtime (#1571) - prototype rb: Ignore ITER (method call with block) (#1562)
- [prototype runtime] Add --autoload option (#1561)
- Implement todo option (#1470)
- [prototype runtime] Fix error when constant is a BasicObject instance. (#1485)
- [prototype runtime] Const name should be absolute (#1490)
- [prototype runtime] Optimize performance (#1495)
- [prototype runtime] Fix error when output
Objectconstants (#1472) - [prototype runtime] Support prepend mixin (#1460)
- [prototype runtime] Avoid alias for methods defined in another module (#1457)
rbs collection
- [Collection] Simple colorize collection text like Bundler (#1558)
- Delete
sourcessection from lockfile (#1544)
Miscellaneous
- Add in with_XXX methods (#1492)
- Updated binding to use modern kernel tests (#1507)
- Remove all non-required methods from testing types (#1541)
- Add
assert_typeassertion to confirm if the value has a type (#1532) - Add
#assert_const_typeand guide to use type assertions (#1514) - Improve skip test message (#1476)
- Type check (#1467)
- Type check RDoc related Ruby code (#1466)
- Fix CI failure (#1464)
3.2.2 (2023-09-28)
Library changes
3.2.1 (2023-08-29)
Signature updates
Fiber(Backport #1463)
Library changes
- Fix error when undefined interface or alias (Backport #1465)
Miscellaneous
3.2.0 (2023-08-22)
Signature updates
Library changes
rbs collection
- Fix LockfileGenerator crashes if failed to get deps for locked source (#1413)
3.2.0.pre.1 (2023-08-18)
Signature updates
- observable (#1424)
- uri (#1371)
- zlib (#1389)
IO(#1399)::DATA(#1395)$DEBUG(#1427)ConditionVariable#wait(#1397)Kernel::exit!(#1396)Kernel#exec(#1368)Kernel#p,Kernel#pp(#1342)Logger.new(#1423)Module(#1321)Object#define_singleton_method(#1431)Object#enum_for(#1327)StringIO#truncate(#1425)Thread#raise(#1426)Time#round,Time#floor,Time#ceil(#1337)- Remove
TRUE,FALSE, andNILconstants (#1432) - Updated builtin.rbs's interfaces (#1429)
- Convert
| nilto?in global_variables.rbs (#1430) - Remove references to the transient heap (#1374)
Library changes
- subtract: Remove RBS file if the subtracted definition is empty (#1385)
- subtract: Filter redundant access modifiers (#1384)
- Fix module alias normalizations (#1393)
- Reduce memory allocation on TypeName#initialize (#1363)
- Fix a type error in FileFinder (#1326)
- Add signatures about DetailedMessage (#1323)
- Make TypeNameResolver more compatible with Ruby (#1373)
- Drop support of Ruby 2.x (#1364)
- Print detailed_message on parse command (#1329)
- Relax rdoc version requirement (#1333)
- Support keyword argument to #detailed_message (#1328)
rbs prototype
- Avoid to generate anonymous or internal module (#1421)
- Fix type name for prototype rbi (#1386)
- Support type params for known signatures (#1408)
- Super class should be absolute paths. (#1415)
- prototype rb: Fix a crash by "include foo" (#1419)
- Add
--outlineoption toprototype runtimeto skip generating method definition (#1404) - [rbs prototype] Follow up ivar/cvar feature (#1361)
- prototype rb: Extract instance variables and class variables (#1343)
rbs collection
- Print warning when specified gem not found (#1367)
- Generate gem specific sources in lockfile (#1402)
- Spec may be missing when
rbs_collection.yamldeclares dependency (#1378)
Miscellaneous
- Remove ruby-lsp && bundle update --bundler (#1420)
- Delete all remaining set-related descriptions. (#1324)
- Add customized test runner to accept minitest options (#1392)
- Specify
rbssyntax to code snippets in Markdown files (#1366) - Fix typo in parser.rbs (#1352)
- Fix broken CI (#1353)
- Handle connection error with Resolv_test.rb (#1356)
- Removed Prime signature and tests (#1355)
3.1.3 (2023-07-31)
Library changes
rbs collection
- Generate gem specific sources in lockfile (Backport #1402)
3.1.2 (2023-07-27)
⚠️ Note that this patch level release may report additional validation errors that is caused by fix of type name resolution (#1373).
Library changes
- Make
TypeNameResolvermore compatible with Ruby (Backport #1373) - Fix module alias normalizations (Backport #1393)
3.1.1 (2023-07-18)
Signature updates
- Removed
GC.verify_transient_heap_internal_consistency(Backport #1374)
Library changes
- Relax rdoc version requirement in RDoc plugin (Backport #1333)
rbs collection
- Spec may be missing when rbs_collection.yaml declares dependency (Backport #1378)
Miscellaneous
3.1.0 (2023-04-26)
Signature updates
Module#attr_*methods (#1300)Object#define_singleton_method(#1299)String#scan(#1297)- Removed
Gem.datadir(#1273)
Language updates
Library changes
- Use fenced code block instead of indented one in .rbs files (#1312)
- Fix single use clause
:type_namelocation (#1307) - Fix
InvalidOverloadMethodErroron overloading extended method (#1294) - Fix super class of
NoTypeFoundErrorfromBaseErrortoDefinitionError(#1290) - Support
#detailed_messageforNonregularTypeAliasError,CyclicTypeParameterBound,InconsistentClassModuleAliasErrorandCyclicClassAliasDefinitionError(#1289) - Implement
rbs subtractcommand (#1287) - Support
#detailed_messageforInvalidVarianceAnnotationError,RecursiveAliasDefinitionError,MixinClassErrorandRecursiveTypeAliasError(#1285) - Support
#detailed_messageforNoTypeError,InheritModuleError,NoSelfTypeFoundErrorandNoMixinFoundError(#1280) - Validate duplicate type aliases (#1279)
- Add
-e,--type, and--method-typeoptions torbs parse(#1252)
rbs prototype
- Convert
includeinclass << selftoextendbyprototype rb(#1255)
rbs collection
Miscellaneous
3.0.4 (2023-03-13)
Library changes
- Add missing implementation to support class/module alias (#1271)
3.0.3 (2023-03-07)
Library changes
- Fix
DefinitionBuilder(#1268)
rbs collection
- Skip dependencies not included in
Gemfile.lock(#1266)
Miscellaneous
3.0.2 (2023-03-01)
Library changes
- Delete
RubyVM::AbstractSyntaxTreestub type definition (#1259)
3.0.1 (2023-02-27)
Library changes
- Ignore
setlibrary on loading (#1251)
3.0.0 (2023-02-22)
Read the release note for the overview of the changes.
Signature updates
- Ruby 3.2 core updates (#1238, #1246, #1242)
- Ruby 3.2 stdlib updates (#1240)
- Ruby 3.2 incompatibilities (#1241)
- ripper (#1193)
RubyVM::AbstractSyntaxTree(#1189)Array#zip(#1232)Enumerable#zip(#1232)Module#attr_*(#1218, #1229)Regexp.new(#1237)Regexp#=~(#1195)Socket.new(#1185)Object::name(#1204)_ToProc#to_proc(#1223)- Add
implicitly-returns-nilannotations (#1226)
Language updates
Class/module alias declaration
- Spec: https://hackmd.io/SAE7AGD6SMSJFnYiR2M5-Q?view
- Pull requests: #1219, #1220
use directives
- Spec: https://hackmd.io/pQehT1u1RfSj6lBcdgW8hg
- Pull requests: #1224, #1234, #1235
Per-overload annotations
- Pull requests: #1174
Library changes
Environmentcleanup (#1209, #1236, #1247)- Add "Expected one argument." to
rbs ancestorscommand (#1245) - Implement
#detailed_messageforParsingError(#1166) - Support interface in class/module for
Sorter(#1191) - Use
-std=gnu99instead of-std=c99(#973) - Add
rbs_prefix toskipfunction (#1186) - Better method definition resolution for overload/mixin combination (#1199)
- Escaping for keywords is no longer necessary (#1178)
- Fix super-class location (#1172)
rbs prototype
- Introduce new heuristics for block types (#1180)
rbs collection
- Install only library dependencies (#1222, #1228)
- Add local source (#854)
- Refactor collection (#1149)
- Let
#resolved_revisionreturn the last fetched commit (#1215)
Miscellaneous
- Update
syntax.md(#1243) - Add link to
RBS by ExampletoREADME.md#1225 - Make
rake stdlib_testrun with single process (#1207, #1211, #1231) - Remove
steep/*files from.gem(#1214, #1216)
2.8.4 (2023-01-20)
Miscellaneous
- Make
rake stdlib_testrun with single process (Backport #1207, #1211) - Remove
steep/*files from.gem(Backport #1214, #1216)
2.8.3 (2023-01-06)
Library changes
- Use
-std=gnu99instead of-std=c99(Backport #973) - Add
rbs_prefix toskipfunction (Backport #1186)
2.8.2 (2022-12-21)
Signature updates
YAML.load(#1170)
Library changes
- Add the methods of the
prepended module itself (#1182)
Miscellaneous
- Add
TestSkipmodule to skip tests that fails in ruby CI (#1167)
2.8.1 (2022-11-28)
Signature updates
- Update documents based on ruby-3.1.3 (#1160)
Library changes
rbs collection
- Delay loading
Gemfilefor unbundled environments (#1161)
Miscellaneous
2.8.0 (2022-11-24)
Signature updates
- random (#1144)
Library changes
- Fix SEGV when give invalid object to
variables:(#1153)
Miscellaneous
2.8.0.pre.1 (2022-11-17)
Signature updates
Library changes
- Make type/method-type parser more flexible about input position (#1140)
- Raise an error if a class definition inherits a module (#1152)
- Fix SEGV when parse with invalid content (#1146)
rbs collection
Miscellaneous
- Remove
rubygemsfromrbs’s manifest (#1150) - Use
untypedinstead ofanyinsyntax.md(#1147) - Fix typo and grammatical mistakes in "Generics" section of
syntax.md(#1127) - Add a doc that describes tools related to
RBS(#1125) - Add self-type-bindings to
syntax.md(#1123) - Add documentation for
...insyntax.md(#1120)
2.7.0 (2022-10-07)
Signature updates
2.7.0.pre.3 (2022-10-06)
Signature updates
2.7.0.pre.2 (2022-09-20)
Signature updates
Library changes
- Always skip CR explicitly (#1112)
Miscellaneous
- Use
append_cflagsfor other than GCC (#1106)
2.7.0.pre.1 (2022-09-02)
See Release Note 2.7 for the highlights of this release.
Signature updates
- fiber (#1071)
BigDecimal(#1053)ERB::Util,ERB::DefMethod(#1074)Float::Infinity(#1095)Logger(#1046)IO.pipe,IO.foreach(#1057)Module#refine(#1064)Regexp.new(#1059)StringIO#write(#1065)Warning.#warn,Kernel.#warn(#1056)
Language updates
Library changes
- RDoc plugin (#1048)
- Dedupe method comments (#1103)
- Reduce object allocations for GC (#1102)
- Add
frozen_string_literal: true(#1100) - Load dependencies on
-roption also (#1013) - Fix DefinitionBuilder for methods aliased from module self constraints (#1099)
- Fix RBS type definitions (#1098)
- Give aliases of
.newmethods correct type (#1097) nilversions are discouraged and will be deprecated in Rubygems 4 (#1091)- Fixes towards Rubygems 4.0 (#1090)
- Remove redundant
addforRepository.default(#1062) - Refactor: Use Repository in stdlib source (#1063)
- Move
bin/sortimplementation to underlib/(#1051)
rbs prototype
Miscellaneous
2.6.0 (2022-06-22)
RBS 2.6 ships with rbs prototype commands improvements and signature updates.
New minitest RBS definitions will help you to type check your tests.
Signature updates
- etc (#1006)
- minitest (#1009)
- date (#1033)
ENV.ARGF,Random::Base(#1041)Hash#dig(#1011)Hash#reject(#1016)Kernel?.fail(#1026, #1028)Rational#*(#1012)Regexp.new(#1040)
Library changes
- Add
visibilitycolumns inAttrReader,AttrAccessor,AttrWriter#to_json (#1014) - Add support for RSpec's verifying doubles in test setup helper (#1015)
- Fix lexer to analyze escape characters (#1043)
rbs prototype
- [rb] Support the case where the return value is
self(#1003) - [rb] Lean to the optional side (#1021)
- [rb] Fix method commenting (#1027)
- [runtime] Fix decls of output from
Prototype::Runtime(#1030) - [runtime] Fix class name resolution of prototype runtime (#1032)
- [rbi] Improve
Prototype::RBI(#1018)
Miscellaneous
- Fix typo in
CONTRIBUTING.md(#1004) - Use manifest.yaml instead of manually for validate task (#1010)
- Update re2c (#1017)
- Type check
Prototype::RB(#1019) - Minor cleanup & fix (#1020)
- Fix type errors (#1023)
- Clarify GHA step name for rake annotate (#1024)
- Silence parser warning (#1039)
- Fix warnings (#1035)
2.5.1 (2022-06-19)
This is a maintenance release mainly to fix errors detected in CI of ruby/ruby.
Nothing changed related to the users of RBS gem.
Miscellaneous
- Skip failing tests on ruby/ruby CI (#1036)
- Fix warnings (#1035 except changes on
test/tools/sort_test.rbthat is not included in this release) - Fix
Regexp.newargument (#1034) - Fix errors with OpenSSL 3 (#1029)
- Fix
OpenSSL::PKey::PKeyError: EVP_PKEY_keygen: bad ffc parameterswith OpenSSL 3 (#1005)
2.5.0 (2022-05-20)
This is a minor release with tuple type/record type syntax updates and rbs prototype improvements.
- You can write empty tuple type as
[], instead of[ ] - You can write empty record type as
{} prototype-rbcommand with--out-diroption generates multipleRBSfiles in the directory
Signature updates
Time(#994)
Language updates
- Fix empty tuple type syntax and allow empty record type (#1001)
Library changes
- Add
nameattribute inMethodDefinition#to_json(#997)
rbs prototype
- Fix (
ArgumentError) invalid byte sequence in UTF-8 (#995) - Fix broken args after parsed
declsfrom::RBS::Prototype::RB(#998) - Add batch mode to
rbs prototype(#1000)
2.4.0 (2022-05-08)
This is a minor release with some signature updates, prototype rb improvement, and test fixes.
Signature updates
rbs prototype
- Omit unnecessary param name on keyword arg from
prototype rb(#974)
Miscellaneous
- Fix git unsafe repository error on ci test (#985)
- Prefer
IO::Buffer.newfor mutable buffer tests (#989) - Update steep (#990)
2.3.2 (2022-04-06)
Library changes
- Let modules have constants under
::Object(#972)
Miscellaneous
2.3.1 (2022-04-05)
Library changes
- Fix mswin build, use
append_cflags, add Windows 'compile only' CI (#964) - Raise
RBS::SyntaxErrorfromparse_record_attributes(#966) - Toplevel constant must have the lowest precedence (#967)
rbs prototype
- Use default value also for
literal_to_type(#962)
2.3.0 (2022-04-01)
Signature updates
Enumerator(#931)FalseClass(#931)Integer(#914)Module(#931)NilClass(#931)Object(#931)Prime(#934)TracePoint(#941)TrueClass(#931)#to_d(#936)IO#wait_writable(#943)
Library changes
- Add
Resolver::ConstantResolverandResolver::TypeNameResolver(#938) - Fix RBS::Locator (#930)
- Trying to preserve more locations (#915)
- Add visibility modifier to method definition json (#923, #928)
- Add manifest.yaml for rbs gem (#921)
- Fix Environment type checking (#929)
- Fix memory violation in C extension (#952)
- Fix warnings in C extension (#954)
rbs prototype
rbs collection
- Fix error message to tell gem name when source is not found (#927)
Miscellaneous
- Fix
bin/sortfor constants (#919) - Use actions/checkout@v3 (#944)
- Added actions ecosystem for dependabot (#946)
- Confirm RDoc is up to date (#945)
2.2.2 (2022-02-22)
Signature updates
2.2.1 (2022-02-22)
Library changes
- Let
validate_type_aliasrun without an error on unknown type (#912)
2.2.0 (2022-02-22)
RBS 2.2 ships with a new syntax to specify the visibility of a method per definition bases.
class Foo
private def hello: () -> void
private attr_accessor world: String
end
It also changes the semantics of self? method.
It defines both public singleton method and private instance method, which is equivalent to module_function.
Signature updates
Language updates
Library changes
- Add c99 flag for compiling on Ruby 2 (#895)
- Fix incorrect URI reference in
schema/typeParam.json(#891) - Allow scaffolding below namespace (#894)
- Let
Writerpreserve format (#900) - Reduce memory usage of
::RBS::Buffer(#907) - Do not call
#classfrom#hashto improve performance (#906) - Skip type variable validation if
unchcked(#909)
Miscellaneous
- Add
Thread::BacktraceandThread::Backtrace::Locationtest (#896) - Test annotations (#902)
- Remove goodcheck rule for arglists section (#901)
- Remove
CharScannerdue to no longer used (#905)
2.1.0 (2022-02-02)
RBS 2.1 is a release to deliver the types and documents of the new and updated methods of Ruby 3.1.
Signature updates
- Documents imported from Ruby 3.1 (#881)
- Methods/classes updated in Ruby 3.1 (#886)
- io/wait (#865)
- json (#863)
- nkf (#873)
- openssl (#866)
Dir.exists?,FileTest#exists?(#884)FileTest(#880)Gem::Version#<=>(#869)Process.clock_gettime(#858)
Library changes
- Introduce
rbs annotatecommand (#881) - Make prototype rb to be aware of prepend (#861)
- Fixes incorrect "Invalid Variance" error when method type variable shadows outer type variable (#889)
2.0.0 (2021-12-24)
Bounded Generics
RBS 2.0 ships with bounded generics, which improves the expressiveness of the language by adding a new syntax to define constraints on type parameters.
class PrettyPrint[T < _Output]
interface _Output
def <<: (String) -> void
end
attr_reader output: T
def initialize: (T output) -> void
end
This is the motivating example I found in the prettyprint library.
The #initialize receives a object of type T and it must have #<< method.
This is defined with < _Output syntax in the example.
It means T has to be compatible with _Output interface.
PrettyPrint[String] is okay, but PrettyPrint[Integer] is a type error.
See the PR for details.
RBS Collection manager
RBS Collection feature is generally available on RBS 2.0. In short, it is Bundler for RBS. You can manage RBSs of standard libraries and third party gems with rbs collection subcommand.
$ rbs collection init
created: rbs_collection.yaml
# The `install` command set up RBS files and creates `rbs_collection.lock.yaml` file
$ rbs collection install
Installing actionpack:6.0 (actionpack@ce6664cec73)
(...snip...)
Using tsort:0 (/path/to/rbs-2.0.0/stdlib/tsort/0)
It's done! 21 gems' RBSs now installed.
# Now you can use `rbs`, `typeprof` and `steep` commands with the dependencies out of the box!
$ rbs validate
$ typeprof app.rb
$ steep check
RBS 2.0 also introduces manifest.yaml to declare the dependencies from your gems to standard libraries explicitly.
See [the documentation]) for more information.
Breaking changes
This version contains a bug fix, which potentially breaks the compatibility with older versions. The super class names in class definitions are now resolved in outer context. It was an incompatibility with Ruby and this PR fixed the problem.
Signature updates
Language updates
Library changes
- Add
manifest.yamlfor collection to specify stdlib dependencies (#808) - Remove experimental warning of
rbs collection(#855) - Add the utility
#map_typemethods (#841)
1.8.1 (2021-12-13)
Library changes
1.8.0 (2021-12-02)
RBS 1.8.0 ships with a language feature enhancement, generic type alias. You can define a type alias with type parameters now.
type list[T] = [T, list[T]] | nil # Defines a list of type T
type int_list = list[Integer] # List of Integer
type string_list = list[String] # List of String
You can find the detail in the PR.
Signature updates
Language updates
- Generic type alias (#823)
1.7.1 (2021-11-18)
Signature updates
Thread#value(#824)
Library changes
Miscellaneous
- Use
untypedas an expectation of return value ofIO#ready?in test (#828)
1.7.0 (2021-11-11)
This version replaces ::RBS::Parser implementation from pure Ruby code based on Racc to C extension.
It improves the RBS file parsing performance up to 5 times faster. :rocket:
- There are some incompatibilities to drop obsolete syntax rules:
superkeyword andanytype are no longer supported. - re2c is used to generate lexical generator.
When you want to change the parser/lexer, change the files under ext/rbs_extension directory and run rake compile to compile the extension.
Signature updates
- io/console (#783)
ENV-- Note that it introduces a dummy::ENVClassclass, which is not defined in Ruby. (#812)Net::HTTPRequest(#784)#clone(#811, #813)Kernel#BigDecimal(#817)Tempfile.new,Tempfile.create(#792, #791)
Library changes
- Replace
::RBS::Parser(#788, #789) - Fix unexpected
CollectionNotAvailablewithoutgemsfrom git source (#795) - Print deprecation warning (#801)
- Make
Parser::KEYWORDSa hash (#804) - Use partial clone for
rbs collectioninstaller (#805) - Respect logger level for test/setup logger (#819, #822)
Miscellaneous
- Avoid a mixture of
Array#filterandArray#select(#820) - Remove leftover documentation about
super(#807)
1.6.2 (2021-09-09)
Signature updates
Miscellaneous
- Set
$XDG_CACHE_HOMEduring test (#781)
1.6.1 (2021-09-05)
This is a minor release including test fixes.
Miscellaneous
- Fix stdlib test for
Resolv::Hostsby removing/etc/hostsdependency (#779) - Fix bundler related test for test-bundled-gems (#778)
1.6.0 (2021-09-05)
This release includes a preview of rbs collection commands, which is bundler for RBS.
The command helps you manage RBS files from gem_rbs_collection or other repositories.
This feature is a preview, and any feedback is welcome!
Signature updates
- objspace (#763, #776)
- tempfile (#767, #775)
IO#set_encoding_by_bom(#106)OpenSSL::PKey::EC#dh_compute_key(#775)
Library changes
Miscellaneous
- Let
bin/annotate-with-rdocprocess nested constants/classes (#766, #768) - Stop printing version mismatch message in CI (#777)
- Update Steep and fix type errors (#770, #774)
- Add dependabot configuration (#771)
1.5.1 (2021-08-22)
Miscellaneous
- Fix Net_HTTP_test (#759)
1.5.0 (2021-08-22)
This release includes stdlib signature updates.
Signature updates
- digest (#744, #757)
- io-wait (#756, #758)
Ractor(#755)File::Stat#size?(#754)$-i,$0,$PROGRAM_NAME(#753)
1.4.0 (2021-08-19)
This release includes feature enhancements including recursive type definition validation, improved compatibility of global variable names, and various method type updates.
Signature updates
- openssl (#743)
Array,Enumerator,Enumerable,Hash,FalseClass,Float,Hash,Integer,Object,Range,TrueClass(#728)Array#[](#732)Exception#set_backtrace(#738)Kernel#Array(#733)Kernel#spawn(#748)Kernel#String(#745, #751)URI::Generic#fragment(#752)URI::Generic#merge(#746)
Language updates
- Add global variables signature (#749)
Library changes
- Add Recursive type alias definition validation (#719)
- Generate included modules with complete name (#731)
- Fix
rbs-prototype-rberror when multi assign with const (#740)
1.3.3 (2021-07-28)
This release includes a minor update of resolv library RBS and a fix of test for ruby/ruby CI.
Signature updates
- resolv (#726)
1.3.2 (2021-07-23)
This release is to fix a bug introduced by parser update in 1.3.0.
- Fix parser to accept alias names starting with
_(#723)
1.3.1 (2021-07-21)
This release is to fix a bug introduced by parser update in 1.3.0.
- Fix parser to accept param names starting with
_(#721)
1.3.0 (2021-07-20)
Summary
RBS 1.3.0 includes bug fixes of the parser and class/module definition validations.
Signature updates
- dbm (#718)
- net-http (#686)
- optparse (#693)
- resolv (#697)
- socket (#699)
IO(#698)Marshal(#684)Mutex(#683)Array#shift(#707)BasicObject#method_missing(#707, #710)Kernel#caller(#705)
Library changes
- Interface names starting with lower case characters are now syntax error (#678, #720)
- Mixins of classes are rejected (#681)
- Generate prototype of
initializemethod with return typevoid(#685) - Let
prototype runtimegenerate class/module declarations in nested syntax (#700) - Fix race condition for multi-thread support (#702)
Miscellaneous
- Add new doc
docs/rbs_by_example.md(#694)
1.2.1 (2021-05-27)
This release includes the following minor changes:
- Fix test to run the tests in ruby repository. (#679)
- Remove unnecessary files from the gem package. (#675)
- Suppress unused variable warning (#674)
- Update documents (#672)
1.2.0 (2021-04-21)
Summary
RBS 1.2 ships with better support for AST/token locations and Locator utility class. The AST objects now keep the locations of tokens. The Locator class is to translate the text position (line and column) to semantic object at the location. The class allows to find if a text position is on the class name of a class declaration.
Signature updates
- Hash (#631, #632, #637, #638, #639, )
- Module (#645)
- Enumerable (#647)
- Array (#648)
- Proc (#649)
- Struct (#650, #668)
- Thread (#651)
- Random (#669)
- Shellwords (#665)
- IO (#659)
Language updates
- Module self type syntax update (#653)
Library changes
Miscellaneous
1.1.1 (2021-03-12)
Signature updates
- rubygem (#630)
1.1.0 (2021-03-08)
Summary
Errors are now organized by ::RBS::BaseError, ::RBS::ParsingError, ::RBS::LoadingError, and ::RBS::DefinitionError.
The library users can rescue RBS related errors with ::RBS::BaseError, parsing errors with ::RBS::ParsingError, and other errors with ::RBS::LoadingError and RBS::DefinitionErrors.
Updating a part of environments are supported. Library users can remove declarations read from a set of files, adding new declarations, running name resolution related to the new decls, and deleting DefinitionBuilder caches related to the changes.
See RBS::Environment#reject, RBS::Environment#resolve_type_names, ::RBS::AncestorGraph, and RBS::DefinitionBuilder#update.
RBS::DefinitionBuilder#build_singleton now returns definitions containing instance type, which had returned resolved class instance types. This is a breaking change, but we consider it a bug fix because RBS::DefinitionBuilder#build_instance has returned instance types and #build_singleton has returned class type.
Signature updates
Language updates
- Allow trailing comma for Record and Tuple types (#606)
Library changes
- Allow partial update of RBS declarations (#608, #621)
- Let errors have
TypeName(#611) - Add
Parser::LexerError(#615) - Performance improvement (#617, #620)
- No substitute
instancetypes on#build_singleton(#619)
Miscellaneous
- Make racc name customizable by
RACCenvironment variable (#602) - Suppress warnings (#624)
- Remove needless
Gem::Versionpolyfill (#622)
1.0.6 (2021-02-17)
1.0.5 (2021-02-13)
- Signature Updates
- Rename generic class parameters on re-open (#594)
- Make
refute_send_typecheck that method call doesn't match with types in RBS (#588)
1.0.4 (2021-01-31)
- Unbundle
rrto run test inruby/rubyrepo (#585)
1.0.3 (2021-01-28)
- Set up
#ancestorsand#locationofRecursiveAncestorError(#583)
1.0.2 (2021-01-28)
- Signature Updates
- Kernel(#582)
1.0.1 (2021-01-27)
- Signature Updates
- Renew test sample code (#581)
- Add description to
generate:stdlib_testRake task (#578) - Declare supported ruby version >= 2.6 (#548)
- Fix module self-type override (#577)
- Fix parser to support all operator symbols (#550)
- Migrate from Minitest to Test::Unit (#556)
- Fix type alias parsing (#565)
- Support end-less method definition in
prototype rb(#561) - Support method argument forwarding in
prototype rb(#560)
1.0.0 (2020-12-24)
- Signature updates for
URI,IO,File,Pathname,Module, andTime(#529, #521, #520, #511, #517, #542, #546, #540, #538) rbs prototype runtimegeneratesextends (#535)rbs prototype runtimestability improvements (#533, #526)rbs prototype rbcompatibility improvements (#545)- Implement method names escape in
::RBS::Writer(#537) - Improve runtime type checker compatibility (#532, #528, #547)
- Fix
ruby2_keywordsforProcin Ruby <2.7 (#513) - Better compatibility for record type attribute names (#525, #524)
- Let module self-types be classes (#523)
- Delete
extensionsyntax (#543) - Method resolution improvements about
aliasand.new(#522, #519, #516) - Better message for
DuplicatedMethodDefinitionError(#539)
0.20.1 (2020-12-06)
- Make the order of RBS load reproducible (#508)
0.20.0 (2020-12-06)
- Signature updates for
TSort,DBM,Time, andHash(#496, #497, #499, #507) - Add singleton attribute syntax (#502, #506, #505)
- Proc types with blocks (#503)
- Add support for escape sequences in string literal types (#501)
- Fix runtime type checking of blocks with keyword args (#500)
0.19.0 (2020-12-02)
0.18.1 (2020-12-01)
- Fix
EnvironmentWalker#each_type_name(#494)
0.18.0 (2020-12-01)
- Signature updates for
YAML,ObjectSpace, andSingleton(#408, #477, #482) prototype rbimprovements (#492, #487, #486, #481)- Runtime type checker improvements (#488, #489, #490)
- Update
DependencyWalkerAPI to receive Node objects instead ofTypeName(#484) - Assume encoding of RBS files to be UTF-8 (#493)
0.17.0 (2020-11-14)
- Signature updates for
Enumerable,Hash, andTSort(#462, #468, #471, #472, #473, #474) - Parser error handling improvement (#463, #475)
- Hash spread syntax handling improvement with
prototype rb(#465)
0.16.0 (2020-11-05)
0.15.0 (2020-11-02)
- Signature updates for
Kernel,PStore,Enumerable, andArray(#450, #443, #438, #437, #433, #432) - Add helper interfaces (#434, #428)
- Change
booltype semantics (#456) - Support alias in
rbs prototype rb(#457) - Runtime testing improvements (#455, #447, #444, #431)
- Fix proc type parsing (#451)
- Fix type variable parsing (#442)
0.14.0 (2020-10-17)
0.13.1 (2020-10-09)
- Fix test for CI of ruby/ruby (#412)
0.13.0 (2020-10-09)
0.12.2 (2020-09-17)
- Minor signature update for
pty - Fix
PTYstdlib test
0.12.1 (2020-09-16)
This version is to improve Ruby 3 testing compatibility. Nothing changed for users.
0.12.0 (2020-09-15)
- Signature updates for
forwardable,struct,set,URI::Generic,URI::File, andBigDecimal. - Define
.newmethods frominitializeincluded from modules #390
0.11.0 (2020-08-31)
- Signature update for
date/datetime#367 - Add test double support for runtime type checker #380
- Add
rbs testcommand for runtime type checking #366 - Fix runtime type checking for record types #365
- Improve EnvironmentLoader API #370
- Allow overloading from super methods #364
0.10.0 (2020-08-10)
- Signature update for
Zlib - Make "no type checker installed" message a debug print #363
- Print
...for overloading method definitions #362 - Allow missing method implementation in Ruby code #359
- Runtime testing improvements #356
0.9.1 (2020-08-04)
0.9.0 (2020-08-03)
0.8.0 (2020-08-01)
- Signature updates for
EnumeratorandPTY - Fix prototype rb/rbi error handling #349
- Runtime test improvements #344, #343
- Add
...syntax #342
0.7.0 (2020-07-20)
- Add
DefinitionBuilder#one_instance_ancestorsandDefinitionBuilder#one_singleton_ancestors#341 - Bug fix in ConstantTable #340
- Make
rbs validatefaster #338 - Dedup methods generated by
rbs prototype rb#334
0.6.0 (2020-07-12)
- Signature update for
Logger. - Clean
Environment#inspect. #331 - Module self type syntax update. #329
- Better validation. #328
- Parser performance improvement. #327
- Runtime type checking performance improvements with sampling #323
0.5.0 (2020-07-04)
- Signature updates for
Mutex_m,IO, andEnumerable. - Syntax update. #307
- AST command prints absolute type names with file name filtering. #312
- Improve CLI message. #309
0.4.0 (2020-06-15)
- Signature update for
Fiber,Encoding, andEnumerator. - Fix syntax error for underscore and
!?#304 - Improved return type inference in
rbs prototype rb#303 - Skip anonymous modules/classes in
rbs prototype runtime#302 - Fix
--require-relativeoption inrbs prototype runtime#299 - Add JSON schema for
rbs ast#295
0.3.1 (2020-05-22)
- Fix constant resolution again #289
0.3.0 (2020-05-20)
- Fix constant resolution #288
0.2.0
- The first release of RBS gem.
0.1.0
- Version 0.1.0 is the original
rbsgem and it is different software from RBS.