Skip to content

Latest commit

 

History

History
2292 lines (1618 loc) · 116 KB

File metadata and controls

2292 lines (1618 loc) · 116 KB

CHANGELOG

4.0.2 (2026-03-25)

Library changes

rbs collection

  • Fix: pathname not written to lockfile. (#2889)

Miscellaneous

  • Fix test failure on Windows in ruby/ruby (#2900)
  • Fix test for Ruby 4.1 (#2899)

4.0.1 (2026-03-23)

This is a minor release to fix Ruby CI failure, which was caused by symlinks included in the rust directory.

Library changes

  • Fix () -> (void) being rejected as SyntaxError (#2884)

Miscellaneous

4.0.0 (2026-03-16)

RBS 4.0 ships with experimental RBS inline syntax support, allowing you to write type annotations directly in Ruby source files. See docs/inline.md for the syntax details.

class Calculator
  # @rbs (Integer, Integer) -> Integer
  def add(a, b) = a + b
end

Note: RBS inline is still experimental and may change in future releases.

This release also introduces two language changes: type argument support for singleton types (singleton(T)[S]) mainly for Sorbet integration, and generic type parameter lower bounds (T < S).

Signature updates

Updated classes/modules/methods: Addrinfo, Array, BasicObject, BigDecimal, Binding, CGI, Comparable, Complex, Digest::SHA2, Encoding::Converter, Enumerable, Enumerator, Enumerator::ArithmeticSequence, Enumerator::Lazy, Fiber, File, FileUtils, Float, Hash, IO, IO::TimeoutError, Integer, JSON, Kernel, Kconv, Math, Method, Minitest, Module, Numeric, ObjectSpace, Open3, OpenURI, OptionParser, PStore, Pathname, Proc, Process::Status, Psych, Ractor, Random, Random::Formatter, Range, Rational, RBS::Unnamed::TopLevelSelfClass, Ripper::Lexer::Elem, Ruby, RubyVM, SecureRandom, Set, Socket, String, StringScanner, TCPSocket, Thread, URI, URI::Generic, Zlib::GzipReader, Zlib::GzipWriter

  • Remove deprecated types (#2880)
  • Add type RBS::Unnamed::TopLevelSelfClass to core (#2362)
  • Graduate bundled gems from Ruby v4.0 (#2852)
  • stdlib: Add missing Psych methods and exception classes (#2850)
  • Add variants with positional argument to Hash#transform_keys (#2848)
  • add extra kwarg options for File#initialize and derivatives (#2798)
  • pstore: fixes types, treat it as a collection (#2806)
  • Add signatures for {Module,Proc}#ruby2_keywords (#2805)
  • Make Zlib::GzipWriter.new level and strategy parameters optional (#2810)
  • URI.(s) does string coercion (#2825)
  • Fix String#append_as_bytes to accept Integer (#2817)
  • [Comparable] Add in Comparable::_CompareToZero (#2697)
  • [Kernel] Add Kernel.trace_var and Kernel.untrace_var (#2682)
  • Add signature for Module#method_undefined (#2804)
  • Fix Zlib::GzipWriter signatures (#2803)
  • GzipWriter#initialize only takes 1 required positional arg (#2799)
  • Fix accessibility of method in Module (#2802)
  • Graduate kconv (#2794)
  • Fix test related to pathname (#2789)
  • Split pathname to core and stdlib (#2777)
  • [Kernel] Narrow caller_locations (#2745)
  • Ruby 4.1 changed source_location type (#2784)
  • Remove ObjectSpace.count_nodes (#2779)
  • Support selector for String#strip family. (#2775)
  • Add Ruby, Array#find, and Array#rfind (#2767)
  • Update minitest (#2761)
  • Support BigDecimal v4 (#2758)
  • Update rdoc and comments (#2733)
  • Update cgi and cgi/escape type definitions (#2728)
  • Update RBS files for Ruby 4 (#2731)
  • Update existing docs (#2724)
  • Remove reference to JSON.deep_const_get (#2701)
  • Remove deprecated methods in JSON (#2366)
  • Update FileUtils to v1.8.0 (#2700)
  • Avoid overloading where arguments are identical (#2559)
  • Move Pathname to core from stdlib (#2705)
  • Remove undocumented #nonzero? (#2543)
  • Add signature for OptionParser#raise_unknown (#2735)
  • Add signature for Open3.popen2 (#2734)
  • Add RFC2396_PARSER to URI module (#2727)
  • Add signature for Open3.capture3 (#2714)
  • Remove sig for IO#{ready?,nread} (#2710)
  • Accept nil state parameter in to_json type signatures (#2691)
  • Add type of Open3.popen3 (#2699)
  • unsetenv_others and close_others only allows bool. (#2698)
  • Add deprecated annotation to attr with bool args (#2693)
  • Update open3 (#2692)
  • Add signature for SecureRandom.bytes (#2690)
  • Set %a{deprecated} to deprecated core methods (#2664)
  • Migrate usages of ::_ToPath to use ::path instead (#2677)
  • Add missing signatures for Random::Formatter (#2680)
  • Split Random::Formatter to core and stdlib (#2661)
  • Skip test cases of developing methods for Pathname (#2648)
  • Add signature Random.seed (#2649)
  • Update string.rbs to avoid deprecation warning in Steep (#2655)
  • Add sig IO#pread and IO#pwrite (#2647)
  • Refine signature of Numeric#step and add type of Enumerator::ArithmeticSequence (#2600)
  • Remove undocumented override methods (#2622)
  • Add docs (#2625)
  • Remove undocumented methods for imaginary (#2620)
  • Update securerandom (#2619)
  • Drop undocumented #eql? (#2618)
  • Just use Numeric#+@ and return self (#2597)
  • Drop undocumented #dup (#2598)
  • Add signature for Digest::SHA2 (#2573)
  • Add signatures for OpenURI (#2574)
  • Add signature for IO::TimeoutError (#2571)
  • Add signatures for Set (#2570)
  • Add signature for Enumerator#+ (#2567)
  • Add signature for Enumerator::Lazy#eager (#2568)
  • Add signature for Fiber#blocking (#2566)
  • Support BasicObject to avoid NoMethodError for RBS::Test::TypeCheck (#2565)
  • Add documentation for Range#{minmax,count,to_a,entries} (#2562)
  • Delegate to Enumerable from Range#{min,max} (#2540)
  • Add URI::Generic#+ (#2535)
  • Make IO.binread, IO.binwrite, IO.read and IO.write accept _ToPath (#2378)
  • Support pattern argument for Enumerable#{all,any,none,one}? (#2368)
  • fixing sig for addrinfo (#2464)

Language updates

  • Add type arguments support to singleton types (#2502)
  • Move the note about lower bound (#2517)
  • Add support for lower bounds in type parameters (#2490)

Library changes

  • Add #type_fingerprint methods (#2879)
  • top for membership predicates of collection types (#2878)
  • Add block parameter (&block) type declaration (#2875)
  • Add splat (*a) and double-splat (**a) parameter support (#2873)
  • Add parameter type inline annotation (#2443)
  • Reduce compile warnings (#2871)
  • Specify input range by byte offsets (#2863)
  • add extern "C" wrapping to rbs.h when using C++ (#2855)
  • Automatically inherits super method type if unannotated (#2858)
  • Add ... syntax to method type inline annotation syntax (#2856)
  • Fix for string reference corruption issue (#2836)
  • Use unreleased steep for rake typecheck_test (#2842)
  • Fix breaking references after GC.compact (#2822)
  • Fix special methods accessibility. (#2546)
  • Fix allocation alignment (#2788)
  • Skip set and pathname from manifest.yaml (#2773)
  • Fix C++ compiler warnings (#2755)
  • Better encoding (#2675)
  • Move require_eof handling to C API (#2678)
  • Delete debug print (#2753)
  • Make assertions macro (#2729)
  • Remove deprecated method Kernel#Namespace. Also remove Kernel#TypeName. (#2480)
  • Update rdoc to 6.13.1 (#2355)
  • Allow self for inline @rbs @ivar: self (#2633)
  • Normalize modules during type name resolution (#2670)
  • Only load extconf_compile_commands_json when compiling through Rake (#2498)
  • Use malloc based allocator (#2666)
  • Add another parser benchmark script (#2668)
  • Reuse empty array and hash (#2667)
  • Faster lexical analyzer (#2665)
  • Introduce type_fingerprint (#2644)
  • Add module-class alias declaration (#2636)
  • Inline constant declaration (#2635)
  • self type is rejected depending on the context (#2627)
  • Add instance variable declaration annotation (#2632)
  • Module-self allow void once (#2626)
  • Support inheritance in Inline RBS declaration (#2630)
  • Inline attribute/method definitions have comments (#2624)
  • Inline RBS declaration for attributes (attr_***) (#2623)
  • Fix bad scaling in rbs_comment_t tokens (#2578)
  • Update parser so that void type is rejected depending on the context (#2590)
  • Implement mixin in inline RBS declarations (#2614)
  • Validate type args given to non-generic ancestor (#2615)
  • Add name locations to AST (#2595)
  • Move exit calls to exe/rbs (#2591)
  • Fix locator (#2588)
  • Introduce standalone C parser for RBS with arena allocation (#2398)
  • Fix subtraction of civar (#2369)
  • Buffer with empty string (#2551)
  • Fix unavailable MAP_ANONYMOUS (#2470)
  • Inline minor fix (#2514)
  • Enable -Wc++-compat (#2463)
  • Expose a method to parse type parameters (#2457)
  • Expose and fix Block#location (#2456)
  • Restore RBS::Environment#declarations for backwards-compatibility (#2393)
  • Implement @rbs return: T annotation (#2406)
  • Add @rbs skip annotation (#2405)
  • Inline annotations (#2403)
  • Inline def support (#2392)
  • Suppress to GCC warning with multi-line comment (#2383)
  • Add inline class/module declaration (#2390)
  • Add RBS::Source::RBS (#2380)

rbs prototype

  • [prototype runtime] Find redefined methods (#2542)

rbs collection

Miscellaneous

  • bundle update (2026-01-20) (#2818)
  • Ruby 4.0.1 (#2823)
  • [rbs/test] Check type arguments size (#2809)
  • Add tsort to testing dependencies (#2795)
  • Update ruby to 4.0 (#2776)
  • Ruby 4.0.0 preview3 (#2764)
  • Remove test code for bundled gems (#2760)
  • Fix nil size Enumerator test (#2749)
  • Fix tests for rbs_skip_tests in ruby repo (#2725)
  • Update rdoc to v6.16 (#2721)
  • Run CI with "4.0.0-preview2" (#2718)
  • Minor typo fix (#2676)
  • Add -j option to make (#2658)
  • Allows the use of a path list as RBS_SKIP_TESTS (#2612)
  • Fix clang-format (#2589)
  • Restrict the execution of the valgrind task to when the C code has been modified. (#2552)
  • Set force_ruby_platform for bundler when head (#2555)
  • More skip paths with valgrind (#2557)
  • Run the Encoding::Converter test (#2550)
  • Fix CI (#2527)
  • Replace reference with official documentation (#2453)
  • Add clangd integration for improved C extension development (#2481)
  • Setup clang format for C code (#2437)
  • Add super calls in setup (#2484)
  • Suppress warnings during testing (#2370)
  • Update rubocop-on-rbs and use plugins (#2345)
  • Fix error at Ruby CI (#2445)
  • Use erb instead of set for load path testing (#2439)
  • Skip loading ruby_memcheck (#2349)
  • Forcibly uninstall gems even if there is a dependency problem. (#2346)

3.10.4 (2026-03-25)

Library changes

rbs collection

  • [Backport] [3.10] Fix: pathname not written to lockfile. (#2896)

3.10.3 (2026-01-30)

This is a minor fix around the dependency to tsort.

Pull Requests

  • Merge pull request #2601 from ima1zumi/add-tsort-dep (#2834)

3.10.2 (2026-01-07)

This is a minor fix on arena allocator alignment.

Pull Requests

  • Merge pull request #2788 from ruby/fix-alloc-alignment (#2790)

3.10.1 (2026-01-07)

This is a follow-up release for Ruby 4.0.0 with documentation update based on Ruby 4.0.0, and bugfixes related to set/pathname library loading.

Pull Requests

  • Merge pull request #2777 from ksss/pathname-ext (#2786)
  • Ruby 4.0.0 backports (#2785)
  • [Backport] Fix subtraction of civar (#2783)
  • [Backport] Update ruby to 4.0 (#2778)

3.10.0 (2025-12-23)

RBS 3.10.0 ships with a pure C parser implementation, signature updates for Ruby 4.0, and various bug fixes.

Pure C parser implementation

The new parser implementation was announced at RubyKaigi 2025 and is finally shipped as a RubyGem!

The new parser is faster than the one in 3.9 and is portable — it is independent of the Ruby runtime and is used to implement Sorbet’s RBS support.

Type definition of bundled gems

The type definitions of cgi have been moved to gem_rbs_collection, as it has been migrated to a bundled gem in Ruby 4.0

cgi-escape has been added to stdlib. You may need to declare a dependency on cgi-escape in your manifest.yaml, add -r cgi-escape to your command line, or update your type checker configuration.

dependencies:
  - name: cgi-escape

The type definitions for pathname have also been moved from stdlib to core, as it is now implemented as part of the core library.

Pull Requests

  • [Backport] Support rdoc v7 (#2770)
  • [Backport] Check tuple type length (#2766)
  • Backport update to 4.0.0-preview3 (#2768)
  • [Backport] Remove test code for bundled gems (#2762)
  • Merge pull request #2761 from ruby/update-minitest (#2763)
  • [Backport] Support BigDecimal v4 (#2759)
  • Parser/lexer backports (#2756)
  • Merge pull request #2753 from ruby/delete-printf (#2754)
  • Backports (#2751)
  • Merge pull request #2728 from ruby/cgi (#2747)
  • Merge pull request #2729 from ruby/rbs-assert (#2748)
  • Merge pull request #2749 from ruby/fix-test (#2750)
  • Backport RBS file updates (#2742)
  • Backport JSON PRs (#2740)
  • Merge pull request #2718 from ruby/ruby-4 (#2741)
  • [Backport] Move Pathname to core from stdlib (#2730)
  • Backport rdoc 6.16 (#2722)
  • Backport rdoc support (#2719)
  • Backport "Remove sig for IO#{ready?,nread}" (#2720)
  • Backport more pure C parsers (#2679)
  • Backport module name normalization (#2673)
  • Backport pure-C parser (#2671)
  • Fix test failure (#2672)

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

  • Backport test/CI fixes to 3.9 (#2487)
  • Use erb instead of set for load path testing (#2468)

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

  • did_you_mean is a default gem (#2348)
  • Skip loading ruby_memcheck (#2347)

3.9.0 (2025-03-18)

Miscellaneous

3.9.0.pre.2 (2025-03-14)

Signature updates

  • Hash.new type (#2323)
  • Module#define_method (#2325)
  • Object#define_singleton_method (#2324)

Language updates

  • Fix define_method method 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: false magic 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 rubygems and set (#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

  • Ractor.store_if_absent (#2206)
  • Time#iso860t1 (#2207)
  • Time#xmlschema (#2207)

Miscellaneous

  • Update rubocop-on-rbs (#2200)
  • Update docs based on Ruby 3.4.1 (#2208)
  • Ruby 3.4.1 (#2206)

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

  • Adjust capacity of location children (#2197)
  • Should validate self-type on Proc (#2192)

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 initializer warning (#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 instance usage example (#2139)
  • Indent parser_test code 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 as static (#2103)
  • Add templating mechanism to automatically generate .c/.h files (#2098)
  • Remove unused rbs_unescape_string declaration (#2058)
  • Fix UntypedFunction does not provide #map_type_name (#2054)
  • Better instance_eval/instance_exec detection (#2052)
  • Overload annotations (#2049)

rbs prototype

  • prototype rb: Fix crashed by self::CONST (#2079)

rbs collection

  • mutex_m support (#2115)

Miscellaneous

  • Use File.open with block (#2119)
  • Compile without activesupport (#2105)
  • docs: Add singleton attribute members to syntax.md (#2090)
  • Bundle update rubocop-on-rbs (#2094)
  • bundle exec on windows (#2101)
  • Fix typos (#2097)
  • Bundle update json 2.8.2 (#2095)
  • Skip rbs gem validation (#2084)
  • Skip PTY_test with Windows platform (#2055)
  • Randomize stdlib test order to uncover hidden assumptions (#2043)
  • Suppress inline is not at beginning of declaration for melt_array (#2050)
  • Skip mkpath test with 3.4 (#2053)

3.6.1 (2024-10-03)

Library changes

  • Mark as ractor-safe (#2041)

Miscellaneous

  • Omit IOConsoleTest with Windows platform (#2044)
  • Recover $stdout after test (#2042)

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/class types in modules (#2020)

Language updates

  • Optional type param restriction (#2030)
  • Prohibit self type as a generics default (#2022)
  • Allow self types 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

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_compact compatible (#1971)
  • Make FileFinder faster 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 AbstractSyntaxTree test with ruby-3.4 (#2005)
  • Fix test (#1972)
  • Use File.open instead of IO.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.open instead of IO.sysopen (#1913)

3.5.1 (2024-06-07)

Library changes

  • Add explicit dependency on the logger gem (#1865)
  • Make c99, c23 compatible (#1870)

Miscellaneous

  • Don't try to sign git commits when running tests (#1867)

3.5.0 (2024-06-06)

Signature updates

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 RBS v1 (#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 RBS from 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 rb failure (#1713)
  • Add Numeric Node's check for parse rbs (#1711)

rbs collection

  • Fix RBS loading precedence (#1720)
  • Refactor Git source by using git? method (#1701)

Miscellaneous

  • Introduce RaaP for testing of signature (#1810)
  • Revise .gemspec to remove Gemfile and Gemfile.lock (#1856)
  • Add link to gem_rbs_collection to README (#1827)
  • Remove Gemfile.lock from the gem package (#1823)
  • Modify template to use TestHelper (#1776)
  • Should focus on String.new not String#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

  • minitest's lifecycle hooks (#1694)
  • IO.popen, IO#read (#1693)

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

Library changes

  • Add more details error message for UnresolvedOverloadingError (#1688)
  • Add with_*** helpers (#1687)
  • Fix lexer (#1685)
  • Support Delegator object (#1682)
  • Should raise ParsingError instead of NoMethodError (#1675)
  • Implement multiple validate (#1648)
  • Add RBS::UnitTest modules (#1660)
  • Not cached as it may be replaced (#1656)
  • Should raise ParsingError instead of ArgumentError (#1652)
  • Added WithEnum#but and with_range (#1649)
  • Bugfix; .respond_to is no longer used in Rbs::Test::Errors#inspect_ (#1650)
  • Add --detail option 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 bundler explicitly for ruby/ruby CI (#1629)

3.3.1 (2023-11-21)

Library changes

  • Allow to use RBS in symlinked tree (#1624)
  • Should escape if param name include not simple-word (#1618)

rbs collection

  • Load Bundler lazily (#1612)

Miscellaneous

  • Stop using bundle command (#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

  • Fixup validation (#1596)
  • Print type syntax errors instead of raising error (#1594)

rbs prototype

  • Fix error when MASGN (#1593)
  • Support cases where Module#constants has been redefined (#1591)
  • [prototype runtime] Fix error if direct inherited (#1590)

3.3.0.pre.1 (2023-10-31)

Signature updates

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 Abbrev to 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 Struct or Data by 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 Object constants (#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 sources section 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_type assertion to confirm if the value has a type (#1532)
  • Add #assert_const_type and 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

Library changes

  • Fix error when undefined interface or alias (Backport #1465)

Miscellaneous

  • Improve skip test message (Backport #1476)
  • Fix CI failure (Backport #1464)

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, and NIL constants (#1432)
  • Updated builtin.rbs's interfaces (#1429)
  • Convert | nil to ? 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 --outline option to prototype runtime to 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.yaml declares 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 rbs syntax 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 TypeNameResolver more 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

  • Handle connection error with Resolv_test.rb (Backport #1356)
  • Fix broken CI (Backport #1353)

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_name location (#1307)
  • Fix InvalidOverloadMethodError on overloading extended method (#1294)
  • Fix super class of NoTypeFoundError from BaseError to DefinitionError (#1290)
  • Support #detailed_message for NonregularTypeAliasError, CyclicTypeParameterBound, InconsistentClassModuleAliasError and CyclicClassAliasDefinitionError (#1289)
  • Implement rbs subtract command (#1287)
  • Support #detailed_message for InvalidVarianceAnnotationError, RecursiveAliasDefinitionError, MixinClassError and RecursiveTypeAliasError (#1285)
  • Support #detailed_message for NoTypeError, InheritModuleError, NoSelfTypeFoundError and NoMixinFoundError (#1280)
  • Validate duplicate type aliases (#1279)
  • Add -e, --type, and --method-type options to rbs parse (#1252)

rbs prototype

  • Convert include in class << self to extend by prototype rb (#1255)

rbs collection

  • Skip loading #gemspec gems via RBS collection (#1319)

Miscellaneous

  • Run bundle install automatically in bin/steep (#1308)
  • Fix warnings (#1314)

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::AbstractSyntaxTree stub type definition (#1259)

3.0.1 (2023-02-27)

Library changes

  • Ignore set library on loading (#1251)

3.0.0 (2023-02-22)

Read the release note for the overview of the changes.

Signature updates

Language updates

Class/module alias declaration

use directives

Per-overload annotations

Library changes

  • Environment cleanup (#1209, #1236, #1247)
  • Add "Expected one argument." to rbs ancestors command (#1245)
  • Implement #detailed_message for ParsingError (#1166)
  • Support interface in class/module for Sorter (#1191)
  • Use -std=gnu99 instead of -std=c99 (#973)
  • Add rbs_ prefix to skip function (#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_revision return the last fetched commit (#1215)

Miscellaneous

  • Update syntax.md (#1243)
  • Add link to RBS by Example to README.md #1225
  • Make rake stdlib_test run with single process (#1207, #1211, #1231)
  • Remove steep/* files from .gem (#1214, #1216)

2.8.4 (2023-01-20)

Miscellaneous

  • Make rake stdlib_test run with single process (Backport #1207, #1211)
  • Remove steep/* files from .gem (Backport #1214, #1216)

2.8.3 (2023-01-06)

Library changes

  • Use -std=gnu99 instead of -std=c99 (Backport #973)
  • Add rbs_ prefix to skip function (Backport #1186)

2.8.2 (2022-12-21)

Signature updates

Library changes

  • Add the methods of the prepended module itself (#1182)

Miscellaneous

  • Add TestSkip module 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 Gemfile for unbundled environments (#1161)

Miscellaneous

2.8.0 (2022-11-24)

Signature updates

Library changes

  • Fix SEGV when give invalid object to variables: (#1153)

Miscellaneous

  • Fix some typos (#1155)
  • Fix a formatting some YAML files (#1154)

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

  • Support to call collection command in child dir (#1025, #1135)

Miscellaneous

  • Remove rubygems from rbs’s manifest (#1150)
  • Use untyped instead of any in syntax.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 ... in syntax.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_cflags for 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

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 -r option also (#1013)
  • Fix DefinitionBuilder for methods aliased from module self constraints (#1099)
  • Fix RBS type definitions (#1098)
  • Give aliases of .new methods correct type (#1097)
  • nil versions are discouraged and will be deprecated in Rubygems 4 (#1091)
  • Fixes towards Rubygems 4.0 (#1090)
  • Remove redundant add for Repository.default (#1062)
  • Refactor: Use Repository in stdlib source (#1063)
  • Move bin/sort implementation to under lib/ (#1051)

rbs prototype

  • Fix some error on prototype runtime (#1055)
  • Skip existing RBS files from batch prototype (#1060)

Miscellaneous

  • Discard outputs from test code (#1093)
  • Skip testing visibility methods with Ruby 3.2 (#1082)

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

Library changes

  • Add visibility columns in {AttrReader,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.rb that is not included in this release)
  • Fix Regexp.new argument (#1034)
  • Fix errors with OpenSSL 3 (#1029)
  • Fix OpenSSL::PKey::PKeyError: EVP_PKEY_keygen: bad ffc parameters with 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-rb command with --out-dir option generates multiple RBS files in the directory

Signature updates

Language updates

  • Fix empty tuple type syntax and allow empty record type (#1001)

Library changes

  • Add name attribute in MethodDefinition#to_json (#997)

rbs prototype

  • Fix (ArgumentError) invalid byte sequence in UTF-8 (#995)
  • Fix broken args after parsed decls from 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

  • did_you_mean (#980)
  • Pattern-matching exceptions (#979)
  • Singleton::SingletonClassMethods (#978)

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.new for mutable buffer tests (#989)
  • Update steep (#990)

2.3.2 (2022-04-06)

Library changes

  • Let modules have constants under ::Object (#972)

Miscellaneous

  • Delete -Wold-style-definition (#971)
  • \e is not defined in C90 (#970)

2.3.1 (2022-04-05)

Library changes

  • Fix mswin build, use append_cflags, add Windows 'compile only' CI (#964)
  • Raise RBS::SyntaxError from parse_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

Library changes

  • Add Resolver::ConstantResolver and Resolver::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

  • Better typing for known self-returning method calls (#932)
  • Let constants have literal types (#937)

rbs collection

  • Fix error message to tell gem name when source is not found (#927)

Miscellaneous

  • Fix bin/sort for 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_alias run 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

  • Add public/private per member modifier (#911)
  • Let self?. be equivalent to module_function (#910)

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 Writer preserve format (#900)
  • Reduce memory usage of RBS::Buffer (#907)
  • Do not call #class from #hash to improve performance (#906)
  • Skip type variable validation if unchcked (#909)

Miscellaneous

  • Add Thread::Backtrace and Thread::Backtrace::Location test (#896)
  • Test annotations (#902)
  • Remove goodcheck rule for arglists section (#901)
  • Remove CharScanner due 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 annotate command (#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

  • Bounded generics (#844)
  • Resolve super type names in outer context (#856)

Library changes

  • Add manifest.yaml for collection to specify stdlib dependencies (#808)
  • Remove experimental warning of rbs collection (#855)
  • Add the utility #map_type methods (#841)

1.8.1 (2021-12-13)

Library changes

  • Validate extend arguments (#840)
  • Allow a relative path as git remote in collection (#839)

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

  • Date#+, Date#- (#830)
  • #include?, #member?, #delete, #count (#835)

Language updates

  • Generic type alias (#823)

1.7.1 (2021-11-18)

Signature updates

  • Thread#value (#824)

Library changes

  • Unquote parameter name (#827)
  • Remove ruby/signature.rb (#825)

Miscellaneous

  • Use untyped as an expectation of return value of IO#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. 🚀

  • There are some incompatibilities to drop obsolete syntax rules: super keyword and any type 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 ::ENVClass class, 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 CollectionNotAvailable without gems from git source (#795)
  • Print deprecation warning (#801)
  • Make Parser::KEYWORDS a hash (#804)
  • Use partial clone for rbs collection installer (#805)
  • Respect logger level for test/setup logger (#819, #822)

Miscellaneous

  • Avoid a mixture of Array#filter and Array#select (#820)
  • Remove leftover documentation about super (#807)

1.6.2 (2021-09-09)

Signature updates

  • Enumerator::Lazy#force (#782)
  • IO.readlines (#780)

Miscellaneous

  • Set $XDG_CACHE_HOME during test (#781)

1.6.1 (2021-09-05)

This is a minor release including test fixes.

Miscellaneous

  • Fix stdlib test for Resolv::Hosts by removing /etc/hosts dependency (#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

Library changes

Miscellaneous

  • Let bin/annotate-with-rdoc process 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

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-rb error 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

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

Library changes

  • Interface names starting with lower case characters are now syntax error (#678, #720)
  • Mixins of classes are rejected (#681)
  • Generate prototype of initialize method with return type void (#685)
  • Let prototype runtime generate 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

Language updates

  • Module self type syntax update (#653)

Library changes

  • Token locations (#666)
  • Add RBS::Locator (#667)
  • Fix runtime type checker (#644)

Miscellaneous

  • Update documentation for overloading (#658)
  • Update target ruby version (#633)

1.1.1 (2021-03-12)

Signature updates

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 instance types on #build_singleton (#619)

Miscellaneous

  • Make racc name customizable by RACC environment variable (#602)
  • Suppress warnings (#624)
  • Remove needless Gem::Version polyfill (#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_type check that method call doesn't match with types in RBS (#588)

1.0.4 (2021-01-31)

  • Unbundle rr to run test in ruby/ruby repo (#585)

1.0.3 (2021-01-28)

  • Set up #ancestors and #location of RecursiveAncestorError (#583)

1.0.2 (2021-01-28)

  • Signature Updates

1.0.1 (2021-01-27)

  • Signature Updates
  • Renew test sample code (#581)
  • Add description to generate:stdlib_test Rake 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, and Time (#529, #521, #520, #511, #517, #542, #546, #540, #538)
  • rbs prototype runtime generates extends (#535)
  • rbs prototype runtime stability improvements (#533, #526)
  • rbs prototype rb compatibility improvements (#545)
  • Implement method names escape in RBS::Writer (#537)
  • Improve runtime type checker compatibility (#532, #528, #547)
  • Fix ruby2_keywords for Proc in Ruby <2.7 (#513)
  • Better compatibility for record type attribute names (#525, #524)
  • Let module self-types be classes (#523)
  • Delete extension syntax (#543)
  • Method resolution improvements about alias and .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, and Hash (#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)

  • Signature updates for Monitor and File (#485, #495)

0.18.1 (2020-12-01)

  • Fix EnvironmentWalker#each_type_name (#494)

0.18.0 (2020-12-01)

  • Signature updates for YAML, ObjectSpace, and Singleton (#408, #477, #482)
  • prototype rb improvements (#492, #487, #486, #481)
  • Runtime type checker improvements (#488, #489, #490)
  • Update DependencyWalker API to receive Node objects instead of TypeName (#484)
  • Assume encoding of RBS files to be UTF-8 (#493)

0.17.0 (2020-11-14)

  • Signature updates for Enumerable, Hash, and TSort (#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)

  • Signature update for DBM (#441)
  • RBS repository (#405)
  • Support alias in rbs prototype rb (#457)

0.15.0 (2020-11-02)

  • Signature updates for Kernel, PStore, Enumerable, and Array (#450, #443, #438, #437, #433, #432)
  • Add helper interfaces (#434, #428)
  • Change bool type 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)

  • Allow keyword names ending with ? and ! (#417)
  • Make Range[T] covariant (#418)

0.13.1 (2020-10-09)

  • Fix test for CI of ruby/ruby (#412)

0.13.0 (2020-10-09)

  • Signature updates for URI classes.
  • Fix tests (#410)
  • Add --silent option for rbs validate (#411)

0.12.2 (2020-09-17)

  • Minor signature update for pty
  • Fix PTY stdlib 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, and BigDecimal.
  • Define .new methods from initialize included 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 test command 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)

  • Ensure using Module#name #354
  • Fix runtime test setup #353

0.9.0 (2020-08-03)

  • Fix signature validation #351, #352
  • Parsing performance improvement #350

0.8.0 (2020-08-01)

  • Signature updates for Enumerator and PTY
  • 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_ancestors and DefinitionBuilder#one_singleton_ancestors #341
  • Bug fix in ConstantTable #340
  • Make rbs validate faster #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, and Enumerable.
  • 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, and Enumerator.
  • 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-relative option in rbs 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 rbs gem and it is different software from RBS.