diff options
Diffstat (limited to 'NEWS.md')
| -rw-r--r-- | NEWS.md | 620 |
1 files changed, 226 insertions, 394 deletions
@@ -1,437 +1,269 @@ -# NEWS for Ruby 3.1.0 +# NEWS for Ruby 4.1.0 -This document is a list of user visible feature changes -since the **3.0.0** release, except for bug fixes. +This document is a list of user-visible feature changes +since the **4.0.0** release, except for bug fixes. Note that each entry is kept to a minimum, see links for details. ## Language changes -* Pin operator now takes an expression. [[Feature #17411]] - - ```ruby - Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a - #=> [[3, 5], [5, 7], [11, 13]] - ``` - -* Pin operator now supports instance, class, and global variables. - [[Feature #17724]] - - ```ruby - @n = 5 - Prime.each_cons(2).lazy.find{_1 in [n, ^@n]} - #=> [3, 5] - ``` - -* One-line pattern matching is no longer experimental. - -* Multiple assignment evaluation order has been made consistent with - single assignment evaluation order. With single assignment, Ruby - uses a left-to-right evaluation order. With this code: - - ```ruby - foo[0] = bar - ``` - - The following evaluation order is used: - - 1. `foo` - 2. `bar` - 3. `[]=` called on the result of `foo` - - In Ruby before 3.1.0, multiple assignment did not follow this - evaluation order. With this code: - - ```ruby - foo[0], bar.baz = a, b - ``` - - Versions of Ruby before 3.1.0 would evaluate in the following - order - - 1. `a` - 2. `b` - 3. `foo` - 4. `[]=` called on the result of `foo` - 5. `bar` - 6. `baz=` called on the result of `bar` - - Starting in Ruby 3.1.0, evaluation order is now consistent with - single assignment, with the left hand side being evaluated before - the right hand side: - - 1. `foo` - 2. `bar` - 3. `a` - 4. `b` - 5. `[]=` called on the result of `foo` - 6. `baz=` called on the result of `bar` - - [[Bug #4443]] - -* Values in Hash literals and keyword arguments can be omitted. - [[Feature #14579]] - - For example, - - * `{x:, y:}` is a syntax sugar of `{x: x, y: y}`. - * `foo(x:, y:)` is a syntax sugar of `foo(x: x, y: y)`. - - Constant names, local variable names, and method names are allowed as - key names. Note that a reserved word is considered as a local - variable or method name even if it's a pseudo variable name such as - `self`. - -* non main-Ractors can get instance variables (ivars) of classes/modules - if ivars refer to shareable objects. - [[Feature #17592]] - -## Command line options +* `Module#clone` and `Module#dup` no longer rewrite the lexical scope of + copied methods. Constants and class variables resolve through the + original class, consistent with inheritance and mixins. + [[Feature #21981]] ## Core classes updates -Outstanding ones only. +Note: We're only listing outstanding class updates. * Array - * Array#intersect? is added. [[Feature #15198]] + * `Array#pack` accepts a new format `R` and `r` for unpacking unsigned + and signed LEB128 encoded integers. [[Feature #21785]] + * `Array#pack` accepts a new format `^` that returns the current offset. + Useful when combined with variable width formats like LEB128. [[Feature #21796]] -* Class +* ENV - * Class#descendants, which returns an array of classes - directly or indirectly inheriting from the receiver, not - including the receiver or singleton classes. - [[Feature #14394]] + * `ENV.fetch_values` is added. It returns an array of values for the + given names, raising `KeyError` for missing names unless a block is + given. [[Feature #21781]] - ```ruby - class A; end - class B < A; end - class C < B; end - A.descendants #=> [B, C] - B.descendants #=> [C] - C.descendants #=> [] - ``` +* Kernel -* Enumerable - - * Enumerable#compact is added. [[Feature #17312]] - - * Enumerable#tally now accepts an optional hash to count. [[Feature #17744]] - - * Enumerable#each_cons and each_slice to return a receiver. [[GH-1509]] - - ```ruby - [1, 2, 3].each_cons(2){} - # 3.0 => nil - # 3.1 => [1, 2, 3] - - [1, 2, 3].each_slice(2){} - # 3.0 => nil - # 3.1 => [1, 2, 3] - ``` - -* Enumerator::Lazy - - * Enumerator::Lazy#compact is added. [[Feature #17312]] - -* File - - * File.dirname now accepts an optional argument for the level to - strip path components. [[Feature #12194]] - -* Integer - - * Integer.try_convert is added. [[Feature #15211]] + * `Kernel#autoload_relative` and `Module#autoload_relative` are added. + These methods work like `autoload`, but resolve the file path relative + to the file where the method is called, similar to `require_relative`. + This makes it easier to autoload constants from files in the same + directory without hardcoding absolute paths or manipulating `$LOAD_PATH`. + [[Feature #15330]] * MatchData - * MatchData#match is added [[Feature #18172]] - - * MatchData#match_length is added [[Feature #18172]] - -* Module - - * Module#prepend now modifies the ancestor chain if the receiver - already includes the argument. Module#prepend still does not - modify the ancestor chain if the receiver has already prepended - the argument. [[Bug #17423]] - -* Process - - * Process.\_fork is added. This is a core method for fork(2). - Do not call this method directly; it is called by existing - fork methods: Kernel.#fork, Process.fork, and IO.popen("-"). - Application monitoring libraries can overwride this method to - hook fork event. [[Feature #17795]] - -* Struct - - * Passing only keyword arguments to Struct#initialize is warned. - You need to use a Hash literal to set a Hash to a first member. - [[Feature #16806]] - - * StructClass#keyword_init? is added [[Feature #18008]] - -* String - - * Update Unicode version to 13.0.0 [[Feature #17750]] - and Emoji version to 13.0 [[Feature #18029]] + * `MatchData#integer_at` is added. It converts the matched substring to + integer and return the result. [[Feature #21932]] -* Queue +* Regexp - * Queue#initialize now accepts an Enumerable of initial values. - [[Feature #17327]] + * All instances of `Regexp` are now frozen, not just literals. + Subclasses of `Regexp` are not frozen for compatibility. + [[Feature #8948]] -* Thread +* Set - * Thread#native_thread_id is added. [[Feature #17853]] - -* Thread::Backtrace - - * Thread::Backtrace.limit, which returns the value to limit backtrace - length set by `--backtrace-limit` command line option, is added. - [[Feature #17479]] - -* $LOAD_PATH - - * $LOAD_PATH.resolve_feature_path does not raise. [[Feature #16043]] - -* Fiber Scheduler - - * Add support for `Addrinfo.getaddrinfo` using `address_resolve` hook. - [[Feature #17370]] - - * Introduce non-blocking `Timeout.timeout` using `timeout_after` hook. - [[Feature #17470]] - - * Introduce new scheduler hooks `io_read` and `io_write` along with a - low level `IO::Buffer` for zero-copy read/write. [[Feature #18020]] - - * IO hooks `io_wait`, `io_read`, `io_write`, receive the original IO object - where possible. [[Bug #18003]] - - * Make `Monitor` fiber-safe. [[Bug #17827]] - - * Replace copy coroutine with pthread implementation. [[Feature #18015]] - -* Refinement - - * New class which represents a module created by Module#refine. - `include` and `prepend` are deprecated, and `import_methods` is added - instead. [[Bug #17429]] + * A deprecated behavior, `Set#to_set`, `Range#to_set`, and + `Enumerable#to_set` accepting arguments, was removed. [[Feature #21390]] ## Stdlib updates -* The following default gem are updated. - * RubyGems - * Bundler - * RDoc 6.3.2 - * ReLine - * JSON 2.6.1 - * Psych 4.0.2 - * FileUtils 1.6.0 - * Fiddle 1.1.0 - * StringIO 3.0.1 - * IO::Console 0.5.9 - * IO::Wait 0.2.0 - * CSV 3.2.1 - * Etc 1.3.0 - * Date 3.2.0 - * Zlib 2.1.1 - * StringScanner 3.0.1 - * IpAddr 1.2.2 - * Logger 1.4.4 - * OStruct 0.5.0 - * Irb - * Racc 1.6.0 - * Delegate 0.2.0 - * Benchmark 0.2.0 - * CGI 0.3.0 - * Readline(C-ext) 0.1.3 - * Timeout 0.2.0 - * YAML 0.2.0 - * URI 0.11.0 - * OpenSSL - * DidYouMean - * Weakref 0.1.1 - * Tempfile 0.1.2 - * TmpDir 0.1.2 - * English 0.7.1 - * Net::Protocol 0.1.2 - * Net::Http 0.2.0 - * BigDecimal - * OptionParser 0.2.0 - * Set 1.0.1 - * Find 0.1.1 - * Rinda 0.1.1 - * Erb 2.2.3 - * NKF 0.1.1 - * Base64 0.1.1 - * OpenUri 0.2.0 - * SecureRandom 0.1.1 - * Resolv 0.2.1 - * Resolv::Replace 0.1.0 - * Time 0.2.0 - * PP 0.2.1 - * Prettyprint 0.1.1 - * Drb 2.1.0 - * Pathname 0.2.0 - * Digest 3.1.0.pre2 - * Un 0.2.0 -* The following bundled gems are updated. - * minitest 5.14.4 - * power_assert 2.0.1 - * rake 13.0.6 - * test-unit 3.5.0 - * rbs 1.6.2 - * typeprof 0.20.2 -* The following default gems are now bundled gems. - * net-ftp - * net-imap - * net-pop - * net-smtp - * matrix - * prime +### The following bundled gems are added. + + +We only list stdlib changes that are notable feature changes. + +Other changes are listed in the following sections. We also listed release +history from the previous bundled version that is Ruby 3.4.0 if it has GitHub +releases. + +### The following bundled gems are promoted from default gems. + +* tsort 0.2.0 +* win32-registry 0.1.2 + +### The following default gem is added. + +### The following default gems are updated. + +* RubyGems 4.1.0.dev + * 4.0.3 to [v4.0.4][RubyGems-v4.0.4], [v4.0.5][RubyGems-v4.0.5], [v4.0.6][RubyGems-v4.0.6], [v4.0.7][RubyGems-v4.0.7], [v4.0.8][RubyGems-v4.0.8], [v4.0.9][RubyGems-v4.0.9], [v4.0.10][RubyGems-v4.0.10], [v4.0.11][RubyGems-v4.0.11], [v4.0.12][RubyGems-v4.0.12], [v4.0.13][RubyGems-v4.0.13] +* bundler 4.1.0.dev + * 4.0.3 to [v4.0.4][bundler-v4.0.4], [v4.0.5][bundler-v4.0.5], [v4.0.6][bundler-v4.0.6], [v4.0.7][bundler-v4.0.7], [v4.0.8][bundler-v4.0.8], [v4.0.9][bundler-v4.0.9], [v4.0.10][bundler-v4.0.10], [v4.0.11][bundler-v4.0.11], [v4.0.12][bundler-v4.0.12], [v4.0.13][bundler-v4.0.13] +* erb 6.0.4 + * 6.0.1 to [v6.0.1.1][erb-v6.0.1.1], [v6.0.2][erb-v6.0.2], [v6.0.3][erb-v6.0.3], [v6.0.4][erb-v6.0.4] +* ipaddr 1.2.9 + * 1.2.8 to [v1.2.9][ipaddr-v1.2.9] +* json 2.19.8 + * 2.18.0 to [v2.18.1][json-v2.18.1], [v2.19.0][json-v2.19.0], [v2.19.1][json-v2.19.1], [v2.19.2][json-v2.19.2], [v2.19.3][json-v2.19.3], [v2.19.4][json-v2.19.4], [v2.19.5][json-v2.19.5], [v2.19.6][json-v2.19.6], [v2.19.7][json-v2.19.7] +* openssl 4.0.2 + * 4.0.0 to [v4.0.1][openssl-v4.0.1], [v4.0.2][openssl-v4.0.2] +* prism 1.9.0 + * 1.7.0 to [v1.8.0][prism-v1.8.0], [v1.8.1][prism-v1.8.1], [v1.9.0][prism-v1.9.0] +* psych 5.4.0 +* resolv 0.7.1 + * 0.7.0 to [v0.7.1][resolv-v0.7.1] +* stringio 3.2.1.dev +* strscan 3.1.9.dev + * 3.1.6 to [v3.1.7][strscan-v3.1.7], [v3.1.8][strscan-v3.1.8] +* syntax_suggest 3.0.0 +* timeout 0.6.1 + * 0.6.0 to [v0.6.1][timeout-v0.6.1] +* zlib 3.2.3 + * 3.2.2 to [v3.2.3][zlib-v3.2.3] + +### The following bundled gems are updated. + +* minitest 6.0.6 +* rake 13.4.2 + * 13.3.1 to [v13.4.0][rake-v13.4.0], [v13.4.1][rake-v13.4.1], [v13.4.2][rake-v13.4.2] +* test-unit 3.7.8 + * 3.7.5 to [3.7.6][test-unit-3.7.6], [3.7.7][test-unit-3.7.7], [3.7.8][test-unit-3.7.8] +* net-imap 0.6.4 + * 0.6.2 to [v0.6.3][net-imap-v0.6.3], [v0.6.4][net-imap-v0.6.4] +* rbs 4.0.2 + * 3.10.0 to [v3.10.1][rbs-v3.10.1], [v3.10.2][rbs-v3.10.2], [v3.10.3][rbs-v3.10.3], [v3.10.4][rbs-v3.10.4], [v4.0.0.dev.5][rbs-v4.0.0.dev.5], [v4.0.0][rbs-v4.0.0], [v4.0.2][rbs-v4.0.2] +* typeprof 0.32.0 +* mutex_m 0.3.0 +* bigdecimal 4.1.2 + * 4.0.1 to [v4.1.0][bigdecimal-v4.1.0], [v4.1.1][bigdecimal-v4.1.1], [v4.1.2][bigdecimal-v4.1.2] +* resolv-replace 0.2.0 + * 0.1.1 to [v0.2.0][resolv-replace-v0.2.0] +* syslog 0.4.0 + * 0.3.0 to [v0.4.0][syslog-v0.4.0] +* repl_type_completor 0.1.15 + * 0.1.12 to [v0.1.13][repl_type_completor-v0.1.13], [v0.1.14][repl_type_completor-v0.1.14], [v0.1.15][repl_type_completor-v0.1.15] +* pstore 0.2.1 + * 0.2.0 to [v0.2.1][pstore-v0.2.1] +* rdoc 7.2.0 + * 7.0.3 to [v7.0.4][rdoc-v7.0.4], [v7.1.0][rdoc-v7.1.0], [v7.2.0][rdoc-v7.2.0] +* win32ole 1.9.3 + * 1.9.2 to [v1.9.3][win32ole-v1.9.3] +* irb 1.18.0 + * 1.16.0 to [v1.17.0][irb-v1.17.0], [v1.18.0][irb-v1.18.0] + +### RubyGems and Bundler + +Ruby 4.0 bundled RubyGems and Bundler version 4. see the following links for details. + +## Supported platforms ## Compatibility issues -Excluding feature bug fixes. - -* `rb_io_wait_readable`, `rb_io_wait_writable` and `rb_wait_for_single_fd` are - deprecated in favour of `rb_io_maybe_wait_readable`, - `rb_io_maybe_wait_writable` and `rb_io_maybe_wait` respectively. - `rb_thread_wait_fd` and `rb_thread_fd_writable` are deprecated. [[Bug #18003]] - ## Stdlib compatibility issues -* `ERB#initialize` warns `safe_level` and later arguments even without -w. - [[Feature #14256]] - -* `lib/debug.rb` is replaced with `debug.gem` - ## C API updates -* Documented. [[GH-4815]] - -* `rb_gc_force_recycle` is deprecated and has been changed to a no-op. - [[Feature #18290]] - -## Implementation improvements - -### JIT +### Embedded TypedData -* The default `--jit-max-cache` is changed from 100 to 10000. +* The `RUBY_TYPED_EMBEDDABLE` flag is now public and documented and can be used by C extensions. + It allows allocating C structs directly into Ruby object slots, which reduces pointer chasing, + and in some case memory usage. + See the C extension documentation for details. [[Feature #21853]] -* JIT-ed code is no longer cancelled when a TracePoint for class events - is enabled. +* Added new C23 inspired allocator functions, that takes the previous memory size. + This allow the Ruby GC to better keep track of memory usage, improving its heuristics. + It also improves the performance of system allocators that support C23 `free_sized`. -* The JIT compiler no longer skips compilation of methods longer than - 1000 instructions. + However, it is important to note that passing an incorrect size to these function is undefined + behavior and may result in crashes or memory leaks. -* `--jit-verbose` and `--jit-warning` output "JIT cancel" when JIT-ed - code is disabled because TracePoint or GC.compact is used. + - `ruby_xfree_sized(void *ptr, size_t size)` + - `ruby_xrealloc_sized(void *ptr, size_t newsiz, size_t oldsiz)` + - `ruby_xrealloc2_sized(void *ptr, size_t newelems, size_t newsiz, size_t oldelems)` -* `RubyVM::MJIT` is renamed to `RubyVM::JIT`. [[Feature #17490]] + [[Feature #21861]] -### YJIT: New experimental in-process JIT compiler +### Removed APIs -New JIT compiler available as an experimental feature. [[Feature #18229]] +The following APIs, which have been deprecated for many years, are removed. +[[Feature #21768]] -See [this blog post](https://shopify.engineering/yjit-just-in-time-compiler-cruby -) introducing the project. +* old postponed job functions, +* untyped data object type/functions, +* old APIs to allocate a data object, +* taintedness/trustedness enums/macros, +* `rb_gc_force_recycle` function, +* `rb_iterate` function, +* and some functions and constants for internal use. -* Disabled by default, use `--yjit` command-line option to enable YJIT. - -* Performance improvements on most real-world software, up to 22% on railsbench, 39% on liquid-render. - -* Fast warm-up times. - -* Limited to macOS & Linux on x86-64 platforms for now. - -## Static analysis - -### RBS - -### TypeProf - -* [Experimental IDE support](https://github.com/ruby/typeprof/blob/master/doc/ide.md) has been implemented. -* Many bug fixes and performance improvements since Ruby 3.0.0. - -## Debugger - -* A new debugger [debug.gem](https://github.com/ruby/debug) is bundled. - debug.gem is fast debugger implementation and it provides many features - like remote debugging, colorful REPL, IDE (VSCode) integration and more. - It replaces `lib/debug.rb` standard library. - -* `rdbg` command is also installed into `bin/` directory to start and control - debugging execution. - -## error_highlight - -A built-in gem, error_highlight, has been introduced. -It includes fine-grained error location in backtrace: - -``` -$ ruby test.rb -test.rb:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError) - -1.time {} - ^^^^^ -Did you mean? times -``` - -This gem is enabled by default. -You can disable it by using a command-line option `--disable-error_highlight`. -See [the repository](https://github.com/ruby/error_highlight) in detail. - -## Miscellaneous changes - -* lib/objspace/trace.rb is added, which is a tool for tracing the object - allocation. Just by requiring this file, tracing is started *immediately*. - Just by `Kernel#p`, you can investigate where an object was created. - Note that just requiring this file brings a large performance overhead. - This is only for debugging purpose. Do not use this in production. - [[Feature #17762]] - -* Now exceptions raised in finalizers will be printed to `STDERR`, unless - `$VERBOSE` is `nil`. [[Feature #17798]] - -[Bug #4443]: https://bugs.ruby-lang.org/issues/4443 -[Feature #12194]: https://bugs.ruby-lang.org/issues/12194 -[Feature #14256]: https://bugs.ruby-lang.org/issues/14256 -[Feature #14394]: https://bugs.ruby-lang.org/issues/14394 -[Feature #14579]: https://bugs.ruby-lang.org/issues/14579 -[Feature #15198]: https://bugs.ruby-lang.org/issues/15198 -[Feature #15211]: https://bugs.ruby-lang.org/issues/15211 -[Feature #16043]: https://bugs.ruby-lang.org/issues/16043 -[Feature #16806]: https://bugs.ruby-lang.org/issues/16806 -[Feature #17312]: https://bugs.ruby-lang.org/issues/17312 -[Feature #17327]: https://bugs.ruby-lang.org/issues/17327 -[Feature #17370]: https://bugs.ruby-lang.org/issues/17370 -[Feature #17411]: https://bugs.ruby-lang.org/issues/17411 -[Bug #17423]: https://bugs.ruby-lang.org/issues/17423 -[Bug #17429]: https://bugs.ruby-lang.org/issues/17429 -[Feature #17470]: https://bugs.ruby-lang.org/issues/17470 -[Feature #17479]: https://bugs.ruby-lang.org/issues/17479 -[Feature #17490]: https://bugs.ruby-lang.org/issues/17490 -[Feature #17592]: https://bugs.ruby-lang.org/issues/17592 -[Feature #17724]: https://bugs.ruby-lang.org/issues/17724 -[Feature #17744]: https://bugs.ruby-lang.org/issues/17744 -[Feature #17750]: https://bugs.ruby-lang.org/issues/17750 -[Feature #17762]: https://bugs.ruby-lang.org/issues/17762 -[Feature #17795]: https://bugs.ruby-lang.org/issues/17795 -[Feature #17798]: https://bugs.ruby-lang.org/issues/17798 -[Bug #17827]: https://bugs.ruby-lang.org/issues/17827 -[Feature #17853]: https://bugs.ruby-lang.org/issues/17853 -[Bug #18003]: https://bugs.ruby-lang.org/issues/18003 -[Feature #18008]: https://bugs.ruby-lang.org/issues/18008 -[Feature #18015]: https://bugs.ruby-lang.org/issues/18015 -[Feature #18020]: https://bugs.ruby-lang.org/issues/18020 -[Feature #18029]: https://bugs.ruby-lang.org/issues/18029 -[Feature #18172]: https://bugs.ruby-lang.org/issues/18172 -[Feature #18229]: https://bugs.ruby-lang.org/issues/18229 -[Feature #18290]: https://bugs.ruby-lang.org/issues/18290 -[GH-1509]: https://github.com/ruby/ruby/pull/1509 -[GH-4815]: https://github.com/ruby/ruby/pull/4815 +## Implementation improvements +### Ractor + +A lot of work has gone into making Ractors more stable, performant, and usable. These improvements bring Ractor implementation closer to leaving experimental status. + +## JIT + +[Feature #8948]: https://bugs.ruby-lang.org/issues/8948 +[Feature #15330]: https://bugs.ruby-lang.org/issues/15330 +[Feature #21390]: https://bugs.ruby-lang.org/issues/21390 +[Feature #21768]: https://bugs.ruby-lang.org/issues/21768 +[Feature #21785]: https://bugs.ruby-lang.org/issues/21785 +[Feature #21796]: https://bugs.ruby-lang.org/issues/21796 +[Feature #21853]: https://bugs.ruby-lang.org/issues/21853 +[Feature #21861]: https://bugs.ruby-lang.org/issues/21861 +[Feature #21932]: https://bugs.ruby-lang.org/issues/21932 +[Feature #21981]: https://bugs.ruby-lang.org/issues/21981 +[RubyGems-v4.0.4]: https://github.com/rubygems/rubygems/releases/tag/v4.0.4 +[RubyGems-v4.0.5]: https://github.com/rubygems/rubygems/releases/tag/v4.0.5 +[RubyGems-v4.0.6]: https://github.com/rubygems/rubygems/releases/tag/v4.0.6 +[RubyGems-v4.0.7]: https://github.com/rubygems/rubygems/releases/tag/v4.0.7 +[RubyGems-v4.0.8]: https://github.com/rubygems/rubygems/releases/tag/v4.0.8 +[RubyGems-v4.0.9]: https://github.com/rubygems/rubygems/releases/tag/v4.0.9 +[RubyGems-v4.0.10]: https://github.com/rubygems/rubygems/releases/tag/v4.0.10 +[RubyGems-v4.0.11]: https://github.com/rubygems/rubygems/releases/tag/v4.0.11 +[RubyGems-v4.0.12]: https://github.com/rubygems/rubygems/releases/tag/v4.0.12 +[RubyGems-v4.0.13]: https://github.com/rubygems/rubygems/releases/tag/v4.0.13 +[bundler-v4.0.4]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.4 +[bundler-v4.0.5]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.5 +[bundler-v4.0.6]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.6 +[bundler-v4.0.7]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.7 +[bundler-v4.0.8]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.8 +[bundler-v4.0.9]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.9 +[bundler-v4.0.10]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.10 +[bundler-v4.0.11]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.11 +[bundler-v4.0.12]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.12 +[bundler-v4.0.13]: https://github.com/rubygems/rubygems/releases/tag/bundler-v4.0.13 +[erb-v6.0.1.1]: https://github.com/ruby/erb/releases/tag/v6.0.1.1 +[erb-v6.0.2]: https://github.com/ruby/erb/releases/tag/v6.0.2 +[erb-v6.0.3]: https://github.com/ruby/erb/releases/tag/v6.0.3 +[erb-v6.0.4]: https://github.com/ruby/erb/releases/tag/v6.0.4 +[ipaddr-v1.2.9]: https://github.com/ruby/ipaddr/releases/tag/v1.2.9 +[json-v2.18.1]: https://github.com/ruby/json/releases/tag/v2.18.1 +[json-v2.19.0]: https://github.com/ruby/json/releases/tag/v2.19.0 +[json-v2.19.1]: https://github.com/ruby/json/releases/tag/v2.19.1 +[json-v2.19.2]: https://github.com/ruby/json/releases/tag/v2.19.2 +[json-v2.19.3]: https://github.com/ruby/json/releases/tag/v2.19.3 +[json-v2.19.4]: https://github.com/ruby/json/releases/tag/v2.19.4 +[json-v2.19.5]: https://github.com/ruby/json/releases/tag/v2.19.5 +[json-v2.19.6]: https://github.com/ruby/json/releases/tag/v2.19.6 +[json-v2.19.7]: https://github.com/ruby/json/releases/tag/v2.19.7 +[openssl-v4.0.1]: https://github.com/ruby/openssl/releases/tag/v4.0.1 +[openssl-v4.0.2]: https://github.com/ruby/openssl/releases/tag/v4.0.2 +[prism-v1.8.0]: https://github.com/ruby/prism/releases/tag/v1.8.0 +[prism-v1.8.1]: https://github.com/ruby/prism/releases/tag/v1.8.1 +[prism-v1.9.0]: https://github.com/ruby/prism/releases/tag/v1.9.0 +[resolv-v0.7.1]: https://github.com/ruby/resolv/releases/tag/v0.7.1 +[strscan-v3.1.7]: https://github.com/ruby/strscan/releases/tag/v3.1.7 +[strscan-v3.1.8]: https://github.com/ruby/strscan/releases/tag/v3.1.8 +[timeout-v0.6.1]: https://github.com/ruby/timeout/releases/tag/v0.6.1 +[zlib-v3.2.3]: https://github.com/ruby/zlib/releases/tag/v3.2.3 +[rake-v13.4.0]: https://github.com/ruby/rake/releases/tag/v13.4.0 +[rake-v13.4.1]: https://github.com/ruby/rake/releases/tag/v13.4.1 +[rake-v13.4.2]: https://github.com/ruby/rake/releases/tag/v13.4.2 +[test-unit-3.7.6]: https://github.com/test-unit/test-unit/releases/tag/3.7.6 +[test-unit-3.7.7]: https://github.com/test-unit/test-unit/releases/tag/3.7.7 +[test-unit-3.7.8]: https://github.com/test-unit/test-unit/releases/tag/3.7.8 +[net-imap-v0.6.3]: https://github.com/ruby/net-imap/releases/tag/v0.6.3 +[net-imap-v0.6.4]: https://github.com/ruby/net-imap/releases/tag/v0.6.4 +[rbs-v3.10.1]: https://github.com/ruby/rbs/releases/tag/v3.10.1 +[rbs-v3.10.2]: https://github.com/ruby/rbs/releases/tag/v3.10.2 +[rbs-v3.10.3]: https://github.com/ruby/rbs/releases/tag/v3.10.3 +[rbs-v3.10.4]: https://github.com/ruby/rbs/releases/tag/v3.10.4 +[rbs-v4.0.0.dev.5]: https://github.com/ruby/rbs/releases/tag/v4.0.0.dev.5 +[rbs-v4.0.0]: https://github.com/ruby/rbs/releases/tag/v4.0.0 +[rbs-v4.0.2]: https://github.com/ruby/rbs/releases/tag/v4.0.2 +[bigdecimal-v4.1.0]: https://github.com/ruby/bigdecimal/releases/tag/v4.1.0 +[bigdecimal-v4.1.1]: https://github.com/ruby/bigdecimal/releases/tag/v4.1.1 +[bigdecimal-v4.1.2]: https://github.com/ruby/bigdecimal/releases/tag/v4.1.2 +[resolv-replace-v0.2.0]: https://github.com/ruby/resolv-replace/releases/tag/v0.2.0 +[syslog-v0.4.0]: https://github.com/ruby/syslog/releases/tag/v0.4.0 +[repl_type_completor-v0.1.13]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.13 +[repl_type_completor-v0.1.14]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.14 +[repl_type_completor-v0.1.15]: https://github.com/ruby/repl_type_completor/releases/tag/v0.1.15 +[pstore-v0.2.1]: https://github.com/ruby/pstore/releases/tag/v0.2.1 +[rdoc-v7.0.4]: https://github.com/ruby/rdoc/releases/tag/v7.0.4 +[rdoc-v7.1.0]: https://github.com/ruby/rdoc/releases/tag/v7.1.0 +[rdoc-v7.2.0]: https://github.com/ruby/rdoc/releases/tag/v7.2.0 +[win32ole-v1.9.3]: https://github.com/ruby/win32ole/releases/tag/v1.9.3 +[irb-v1.17.0]: https://github.com/ruby/irb/releases/tag/v1.17.0 +[irb-v1.18.0]: https://github.com/ruby/irb/releases/tag/v1.18.0 |
