ruby/test
Peter Zhu 87bc5da60a Don't immediately promote children of old objects
[Feature #19678]

References from an old object to a write barrier protected young object
will not immediately promote the young object. Instead, the young object
will age just like any other object, meaning that it has to survive
three collections before being promoted to the old generation.
References from an old object to a write barrier unprotected object will
place the parent object in the remember set for marking during minor
collections. This allows the child object to be reclaimed in minor
collections at the cost of increased time for minor collections.

On one of [Shopify's highest traffic Ruby apps, Storefront
Renderer](https://shopify.engineering/how-shopify-reduced-storefront-response-times-rewrite),
we saw significant improvements after deploying this feature in
production. We compare the GC time and response time of web workers that
have the original behaviour (non-experimental group) and this new
behaviour (experimental group). We see that with this feature we spend
significantly less time in the GC, 0.81x on average, 0.88x on p99, and
0.45x on p99.9.

This translates to improvements in average response time (0.96x) and p99
response time (0.92x).
2023-10-31 20:36:18 -07:00
..
-ext- Remove `require 'io/wait'` where it's no longer necessary. (#6932) 2022-12-15 11:37:01 +13:00
base64
benchmark
bigdecimal
cgi
coverage merge revision(s) 2c93c554019ebdc394d3c51c6d925620d3005f84,f5ea43a2e61789357e9c4b374b4bc6756abeae17: [Backport #19360] 2023-01-25 16:34:24 +09:00
csv
date [ruby/date] Implement Date#deconstruct_keys and DateTime#deconstruct_keys 2022-12-13 19:52:06 +00:00
did_you_mean
digest
drb
dtrace
erb
error_highlight
etc
excludes
fiber merge revision(s) 0402193723647b8c4f57b1453fe2192ad2788d12: [Backport #19709] 2023-07-22 13:08:16 +09:00
fiddle
fileutils
fixtures/fake_sorted_set_gem
io Remove `require 'io/wait'` where it's no longer necessary. (#6932) 2022-12-15 11:37:01 +13:00
irb [ruby/irb] PTY module is platform dependent 2022-12-19 17:49:59 +09:00
json
lib MJIT: Compile methods in batches (#6900) 2022-12-10 22:21:06 -08:00
logger
mkmf merge revision(s) 3a7367ccc319499127ead147e5a08f769e44208e: [Backport #19403] 2023-02-07 15:15:17 +09:00
monitor
net
nkf
objspace merge revision(s) e1bd45624c85e8a80991bda20801f50967ac77a1: [Backport #19482] 2023-07-16 12:58:21 +09:00
open-uri
openssl [ruby/openssl] Relax error message check for OpenSSL 3.1 2023-06-13 14:01:57 +09:00
optparse [ruby/optparse] The encoding argument of `Regexp.new` has been ignored since 1.9 2022-12-21 14:09:12 +09:00
ostruct
pathname
psych Always issue deprecation warning when calling Regexp.new with 3rd positional argument 2022-12-22 11:50:26 -08:00
racc
rdoc [ruby/rdoc] Fix fragile tests 2022-12-23 20:31:25 +09:00
readline test_readline#test_without_tty: Use EnvUtil.rubybin 2022-12-21 09:40:09 +09:00
reline [ruby/reline] Fix a misparameter of RubyLex#set_input in 2022-12-14 00:00:39 +00:00
resolv
rinda
ripper merge revision(s) fad48fefe19cc282a5b209944244a3713359b47f: [Backport #19399] 2023-02-07 13:46:36 +09:00
ruby Don't immediately promote children of old objects 2023-10-31 20:36:18 -07:00
rubygems Skip failing test on MSWin 2023-03-28 22:47:23 +09:00
socket test/socket/test_addrinfo.rb: Suppress Errno::EACCES on Windows 2022-12-21 15:18:34 +09:00
stringio merge revision(s) 21dced8b01823a991829b66ffdc8ffc635965c76: [Backport #19389] 2023-01-31 11:08:50 +09:00
strscan
syslog
uri Merge URI-0.12.2 2023-07-01 13:46:09 +09:00
win32ole
yaml
zlib
runner.rb
test_abbrev.rb
test_delegate.rb
test_extlibs.rb
test_find.rb
test_forwardable.rb
test_getoptlong.rb
test_ipaddr.rb
test_mutex_m.rb
test_observer.rb
test_open3.rb
test_pp.rb
test_prettyprint.rb
test_pstore.rb
test_pty.rb
test_rbconfig.rb merge revision(s) 3a7367ccc319499127ead147e5a08f769e44208e: [Backport #19403] 2023-02-07 15:15:17 +09:00
test_securerandom.rb
test_set.rb
test_shellwords.rb
test_singleton.rb
test_sorted_set.rb
test_syslog.rb
test_tempfile.rb
test_time.rb Merge Time-0.2.2 (#7623) 2023-03-30 10:54:12 +00:00
test_timeout.rb
test_tmpdir.rb
test_trick.rb test/test_trick.rb: Add tests for TRICK 2022 entries 2022-12-24 03:19:45 +09:00
test_tsort.rb
test_unicode_normalize.rb
test_weakref.rb