mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 05:29:10 +02:00

[Feature #20205] As a path toward enabling frozen string literals by default in the future, this commit introduce "chilled strings". From a user perspective chilled strings pretend to be frozen, but on the first attempt to mutate them, they lose their frozen status and emit a warning rather than to raise a `FrozenError`. Implementation wise, `rb_compile_option_struct.frozen_string_literal` is no longer a boolean but a tri-state of `enabled/disabled/unset`. When code is compiled with frozen string literals neither explictly enabled or disabled, string literals are compiled with a new `putchilledstring` instruction. This instruction is identical to `putstring` except it marks the String with the `STR_CHILLED (FL_USER3)` and `FL_FREEZE` flags. Chilled strings have the `FL_FREEZE` flag as to minimize the need to check for chilled strings across the codebase, and to improve compatibility with C extensions. Notes: - `String#freeze`: clears the chilled flag. - `String#-@`: acts as if the string was mutable. - `String#+@`: acts as if the string was mutable. - `String#clone`: copies the chilled flag. Co-authored-by: Jean Boussier <byroot@ruby-lang.org>
39 lines
2.1 KiB
Text
39 lines
2.1 KiB
Text
# gem-name version repository-url [revision]
|
|
#
|
|
# - gem-name: gem name to bundle
|
|
# - version: released version to bundle
|
|
# - repository-url: URL from where clone for test
|
|
# - revision: revision in repository-url to test
|
|
# if `revision` is not given, "v"+`version` or `version` will be used.
|
|
|
|
# Waiting for https://github.com/minitest/minitest/pull/991
|
|
minitest 5.22.3 https://github.com/Shopify/minitest b5f5202575894796e00109a8f8a5041b778991ee
|
|
|
|
# Waiting for https://github.com/ruby/power_assert/pull/48
|
|
power_assert 2.0.3 https://github.com/ruby/power_assert 78dd2ab3ccd93796d83c0b35b978c39bfabb938c
|
|
rake 13.1.0 https://github.com/ruby/rake
|
|
test-unit 3.6.2 https://github.com/test-unit/test-unit
|
|
rexml 3.2.6 https://github.com/ruby/rexml
|
|
rss 0.3.0 https://github.com/ruby/rss
|
|
net-ftp 0.3.4 https://github.com/ruby/net-ftp
|
|
net-imap 0.4.10 https://github.com/ruby/net-imap
|
|
net-pop 0.1.2 https://github.com/ruby/net-pop
|
|
net-smtp 0.4.0.1 https://github.com/ruby/net-smtp
|
|
matrix 0.4.2 https://github.com/ruby/matrix
|
|
prime 0.1.2 https://github.com/ruby/prime
|
|
rbs 3.4.4 https://github.com/ruby/rbs ba7872795d5de04adb8ff500c0e6afdc81a041dd
|
|
typeprof 0.21.11 https://github.com/ruby/typeprof b19a6416da3a05d57fadd6ffdadb382b6d236ca5
|
|
debug 1.9.1 https://github.com/ruby/debug 2d602636d99114d55a32fedd652c9c704446a749
|
|
racc 1.7.3 https://github.com/ruby/racc
|
|
mutex_m 0.2.0 https://github.com/ruby/mutex_m
|
|
getoptlong 0.2.1 https://github.com/ruby/getoptlong
|
|
base64 0.2.0 https://github.com/ruby/base64
|
|
bigdecimal 3.1.7 https://github.com/ruby/bigdecimal
|
|
observer 0.1.2 https://github.com/ruby/observer
|
|
abbrev 0.1.2 https://github.com/ruby/abbrev
|
|
resolv-replace 0.1.1 https://github.com/ruby/resolv-replace
|
|
rinda 0.2.0 https://github.com/ruby/rinda
|
|
drb 2.2.1 https://github.com/ruby/drb
|
|
nkf 0.2.0 https://github.com/ruby/nkf
|
|
syslog 0.1.2 https://github.com/ruby/syslog
|
|
csv 3.2.8 https://github.com/ruby/csv
|