summaryrefslogtreecommitdiff
path: root/NEWS.md
diff options
context:
space:
mode:
Diffstat (limited to 'NEWS.md')
-rw-r--r--NEWS.md438
1 files changed, 215 insertions, 223 deletions
diff --git a/NEWS.md b/NEWS.md
index b3d04feacf..9ff290ad75 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,277 +1,269 @@
-# NEWS for Ruby 3.5.0
+# NEWS for Ruby 4.1.0
This document is a list of user-visible feature changes
-since the **3.4.0** release, except for bug fixes.
+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
-* `*nil` no longer calls `nil.to_a`, similar to how `**nil` does
- not call `nil.to_hash`. [[Feature #21047]]
+* `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
Note: We're only listing outstanding class updates.
-* Kernel
-
- * `Kernel#inspect` now checks for the existence of a `#instance_variables_to_inspect` method,
- allowing control over which instance variables are displayed in the `#inspect` string:
-
- ```ruby
- class DatabaseConfig
- def initialize(host, user, password)
- @host = host
- @user = user
- @password = password
- end
-
- private def instance_variables_to_inspect = [:@host, :@user]
- end
-
- conf = DatabaseConfig.new("localhost", "root", "hunter2")
- conf.inspect #=> #<DatabaseConfig:0x0000000104def350 @host="localhost", @user="root">
- ```
-
- [[Feature #21219]]
-
-* Binding
-
- * `Binding#local_variables` does no longer include numbered parameters.
- Also, `Binding#local_variable_get` and `Binding#local_variable_set` reject
- to handle numbered parameters. [[Bug #21049]]
-
-* IO
+* Array
- * `IO.select` accepts +Float::INFINITY+ as a timeout argument.
- [[Feature #20610]]
+ * `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]]
-* Math
+* ENV
- * `Math.log1p` and `Math.expm1` are added. [[Feature #21527]]
+ * `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]]
-* Socket
-
- * `Socket.tcp` & `TCPSocket.new` accepts `open_timeout` as a keyword argument to specify
- the timeout for the initial connection. [[Feature #21347]]
-
-* Ractor
-
- * `Ractor::Port` class was added for a new synchronization mechanism
- to communicate between Ractors. [[Feature #21262]]
-
- ```ruby
- port1 = Ractor::Port.new
- port2 = Ractor::Port.new
- Ractor.new port1, port2 do |port1, port2|
- port1 << 1
- port2 << 11
- port1 << 2
- port2 << 12
- end
- 2.times{ p port1.receive } #=> 1, 2
- 2.times{ p port2.receive } #=> 11, 12
- ```
-
- `Ractor::Port` provides the following methods:
-
- * `Ractor::Port#receive`
- * `Ractor::Port#send` (or `Ractor::Port#<<`)
- * `Ractor::Port#close`
- * `Ractor::Port#closed?`
-
- As result, `Ractor.yield` and `Ractor#take` were removed.
+* Kernel
- * `Ractor#join` and `Ractor#value` were added to wait for the
- termination of a Ractor. These are similar to `Thread#join`
- and `Thread#value`.
+ * `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]]
- * `Ractor#monitor` and `Ractor#unmonitor` were added as low-level
- interfaces used internally to implement `Ractor#join`.
+* MatchData
- * `Ractor.select` now only accepts Ractors and Ports. If Ractors are given,
- it returns when a Ractor terminates.
+ * `MatchData#integer_at` is added. It converts the matched substring to
+ integer and return the result. [[Feature #21932]]
- * `Ractor#default_port` was added. Each `Ractor` has a default port,
- which is used by `Ractor.send`, `Ractor.receive`.
+* Regexp
- * `Ractor#close_incoming` and `Ractor#close_outgoing` were removed.
+ * All instances of `Regexp` are now frozen, not just literals.
+ Subclasses of `Regexp` are not frozen for compatibility.
+ [[Feature #8948]]
* Set
- * Set is now a core class, instead of an autoloaded stdlib class.
- [[Feature #21216]]
-
-* String
-
- * Update Unicode to Version 16.0.0 and Emoji Version 16.0.
- [[Feature #19908]][[Feature #20724]] (also applies to Regexp)
-
-* Thread
-
- * Introduce support for `Thread#raise(cause:)` argument similar to
- `Kernel#raise`. [[Feature #21360]]
-
-* Fiber
-
- * Introduce support for `Fiber#raise(cause:)` argument similar to
- `Kernel#raise`. [[Feature #21360]]
-
-* Fiber::Scheduler
-
- * Introduce `Fiber::Scheduler#fiber_interrupt` to interrupt a fiber with a
- given exception. The initial use case is to interrupt a fiber that is
- waiting on a blocking IO operation when the IO operation is closed.
- [[Feature #21166]]
-
-* Pathname
-
- * Pathname has been promoted from a default gem to a core class of Ruby.
- [[Feature #17473]]
+ * A deprecated behavior, `Set#to_set`, `Range#to_set`, and
+ `Enumerable#to_set` accepting arguments, was removed. [[Feature #21390]]
## Stdlib updates
-The following bundled gems are promoted from default gems.
+### The following bundled gems are added.
-* ostruct 0.6.3
-* pstore 0.2.0
-* benchmark 0.4.1
-* logger 1.7.0
-* rdoc 6.14.2
-* win32ole 1.9.2
-* irb 1.15.2
-* reline 0.6.2
-* readline 0.0.4
-* fiddle 1.1.8
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.3.0 if it has GitHub
+history from the previous bundled version that is Ruby 3.4.0 if it has GitHub
releases.
-The following default gem is added.
-
-* win32-registry 0.1.0
-
-The following default gems are updated.
-
-* RubyGems 3.8.0.dev
-* bundler 2.8.0.dev
-* erb 5.0.2
-* etc 1.4.6
-* io-console 0.8.1
-* io-nonblock 0.3.2
-* io-wait 0.3.2
-* json 2.13.2
-* optparse 0.7.0.dev.2
-* prism 1.4.0
-* psych 5.2.6
-* resolv 0.6.2
-* stringio 3.1.8.dev
-* strscan 3.1.6.dev
-* uri 1.0.3
-* weakref 0.1.4
-
-The following bundled gems are added.
-
-
-The following bundled gems are updated.
-
-* minitest 5.25.5
-* rake 13.3.0
-* test-unit 3.7.0
-* rexml 3.4.1
-* net-imap 0.5.9
-* net-smtp 0.5.1
-* matrix 0.4.3
-* prime 0.1.4
-* rbs 3.9.4
-* debug 1.11.0
-* base64 0.3.0
-* bigdecimal 3.2.2
-* drb 2.2.3
-* syslog 0.3.0
-* csv 3.3.5
-* repl_type_completor 0.1.11
+### 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
-* The following methods were removed from Ractor due because of `Ractor::Port`:
+## Stdlib compatibility issues
- * `Ractor.yield`
- * `Ractor#take`
- * `Ractor#close_incoming`
- * `Ractor#close_outgoging`
+## C API updates
- [[Feature #21262]]
+### Embedded TypedData
-## Stdlib compatibility issues
+* 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]]
-* CGI library is removed from the default gems. Now we only provide `cgi/escape` for
- the following methods:
+* 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`.
- * `CGI.escape` and `CGI.unescape`
- * `CGI.escapeHTML` and `CGI.unescapeHTML`
- * `CGI.escapeURIComponent` and `CGI.unescapeURIComponent`
- * `CGI.escapeElement` and `CGI.unescapeElement`
+ 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.
- [[Feature #21258]]
+ - `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)`
-* With the move of `Set` from stdlib to core class, `set/sorted_set.rb` has
- been removed, and `SortedSet` is no longer an autoloaded constant. Please
- install the `sorted_set` gem and `require 'sorted_set'` to use `SortedSet`.
- [[Feature #21287]]
+ [[Feature #21861]]
-## C API updates
+### Removed APIs
-* IO
+The following APIs, which have been deprecated for many years, are removed.
+[[Feature #21768]]
- * `rb_thread_fd_close` is deprecated and now a no-op. If you need to expose
- file descriptors from C extensions to Ruby code, create an `IO` instance
- using `RUBY_IO_MODE_EXTERNAL` and use `rb_io_close(io)` to close it (this
- also interrupts and waits for all pending operations on the `IO`
- instance). Directly closing file descriptors does not interrupt pending
- operations, and may lead to undefined behaviour. In other words, if two
- `IO` objects share the same file descriptor, closing one does not affect
- the other. [[Feature #18455]]
+* 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.
## 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
-* YJIT
- * YJIT stats
- * `ratio_in_yjit` no longer works in the default build.
- Use `--enable-yjit=stats` on `configure` to enable it on `--yjit-stats`.
- * Add `invalidate_everything` to default stats, which is
- incremented when every code is invalidated by TracePoint.
- * Add `mem_size:` and `call_threshold:` options to `RubyVM::YJIT.enable`.
-* ZJIT
- * Add an experimental method-based JIT compiler.
- Use `--enable-zjit` on `configure` to enable the `--zjit` support.
- * As of Ruby 3.5.0-preview2, ZJIT is not yet ready for speeding up most benchmarks.
- Please refrain from evaluating ZJIT just yet. Stay tuned for the Ruby 3.5 release.
-* RJIT
- * `--rjit` is removed. We will move the implementation of the third-party JIT API
- to the [ruby/rjit](https://github.com/ruby/rjit) repository.
-
-[Feature #17473]: https://bugs.ruby-lang.org/issues/17473
-[Feature #18455]: https://bugs.ruby-lang.org/issues/18455
-[Feature #19908]: https://bugs.ruby-lang.org/issues/19908
-[Feature #20610]: https://bugs.ruby-lang.org/issues/20610
-[Feature #20724]: https://bugs.ruby-lang.org/issues/20724
-[Feature #21047]: https://bugs.ruby-lang.org/issues/21047
-[Bug #21049]: https://bugs.ruby-lang.org/issues/21049
-[Feature #21166]: https://bugs.ruby-lang.org/issues/21166
-[Feature #21216]: https://bugs.ruby-lang.org/issues/21216
-[Feature #21219]: https://bugs.ruby-lang.org/issues/21219
-[Feature #21258]: https://bugs.ruby-lang.org/issues/21258
-[Feature #21262]: https://bugs.ruby-lang.org/issues/21262
-[Feature #21287]: https://bugs.ruby-lang.org/issues/21287
-[Feature #21347]: https://bugs.ruby-lang.org/issues/21347
-[Feature #21360]: https://bugs.ruby-lang.org/issues/21360
-[Feature #21527]: https://bugs.ruby-lang.org/issues/21527
+[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