rbs 3.6.1 → 3.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +34 -10
- data/.github/workflows/windows.yml +20 -3
- data/.gitignore +1 -0
- data/.rubocop.yml +26 -1
- data/CHANGELOG.md +241 -0
- data/Rakefile +54 -4
- data/config.yml +317 -0
- data/core/array.rbs +1756 -1591
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +166 -94
- data/core/data.rbs +2 -2
- data/core/dir.rbs +2 -18
- data/core/encoding.rbs +12 -32
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +14 -4
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +6 -2
- data/core/exception.rbs +342 -167
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +26 -75
- data/core/float.rbs +125 -72
- data/core/gc.rbs +158 -42
- data/core/hash.rbs +122 -143
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +108 -151
- data/core/kernel.rbs +341 -209
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/method.rbs +2 -2
- data/core/module.rbs +32 -27
- data/core/nil_class.rbs +2 -2
- data/core/numeric.rbs +101 -104
- data/core/object.rbs +1 -5
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +82 -14
- data/core/process.rbs +110 -58
- data/core/ractor.rbs +57 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +237 -36
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +10 -56
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +3 -6
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +3 -6
- data/core/rubygems/version.rbs +8 -8
- data/core/set.rbs +4 -16
- data/core/string.rbs +271 -264
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +131 -50
- data/core/trace_point.rbs +124 -113
- data/core/true_class.rbs +0 -1
- data/core/unbound_method.rbs +1 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +17 -10
- data/ext/rbs_extension/extconf.rb +11 -0
- data/ext/rbs_extension/location.c +61 -29
- data/ext/rbs_extension/location.h +4 -3
- data/ext/rbs_extension/main.c +23 -1
- data/ext/rbs_extension/parser.c +506 -517
- data/ext/rbs_extension/parserstate.c +109 -30
- data/ext/rbs_extension/parserstate.h +6 -4
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/ast/declarations.rb +9 -4
- data/lib/rbs/ast/directives.rb +10 -0
- data/lib/rbs/ast/members.rb +2 -0
- data/lib/rbs/ast/type_param.rb +2 -12
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +2 -1
- data/lib/rbs/cli.rb +16 -16
- data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
- data/lib/rbs/collection/config.rb +5 -3
- data/lib/rbs/collection/sources/rubygems.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/definition.rb +51 -34
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
- data/lib/rbs/definition_builder.rb +83 -24
- data/lib/rbs/environment.rb +33 -18
- data/lib/rbs/environment_loader.rb +6 -1
- data/lib/rbs/errors.rb +24 -0
- data/lib/rbs/locator.rb +2 -0
- data/lib/rbs/method_type.rb +2 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +40 -3
- data/lib/rbs/prototype/rb.rb +20 -12
- data/lib/rbs/prototype/rbi.rb +11 -6
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +7 -5
- data/lib/rbs/subtractor.rb +3 -3
- data/lib/rbs/test/hook.rb +47 -42
- data/lib/rbs/test/type_check.rb +7 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/types.rb +63 -14
- data/lib/rbs/unit_test/spy.rb +4 -2
- data/lib/rbs/unit_test/type_assertions.rb +19 -13
- data/lib/rbs/unit_test/with_aliases.rb +3 -1
- data/lib/rbs/validator.rb +7 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +10 -5
- data/lib/rbs.rb +1 -0
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +6 -2
- data/sig/ancestor_graph.rbs +5 -5
- data/sig/annotate/rdoc_source.rbs +2 -0
- data/sig/cli.rbs +2 -0
- data/sig/collection/config/lockfile_generator.rbs +9 -1
- data/sig/declarations.rbs +10 -3
- data/sig/definition.rbs +80 -12
- data/sig/definition_builder.rbs +18 -4
- data/sig/directives.rbs +17 -1
- data/sig/environment.rbs +3 -1
- data/sig/errors.rbs +19 -0
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +5 -1
- data/sig/prototype/rb.rbs +1 -1
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/subtractor.rbs +1 -1
- data/sig/test/type_check.rbs +2 -2
- data/sig/type_alias_dependency.rbs +2 -2
- data/sig/type_alias_regularity.rbs +6 -6
- data/sig/type_param.rbs +4 -4
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +1 -1
- data/sig/unit_test/spy.rbs +2 -0
- data/sig/unit_test/type_assertions.rbs +2 -0
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +6 -2
- data/sig/vendorer.rbs +1 -1
- data/sig/writer.rbs +1 -1
- data/{ext/rbs_extension → src}/constants.c +35 -36
- data/src/ruby_objs.c +799 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +60 -3
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +27 -42
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
- data/stdlib/json/0/json.rbs +107 -120
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/minitest/0/kernel.rbs +2 -2
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
- data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
- data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/mock.rbs +9 -5
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
- data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
- data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
- data/stdlib/minitest/0/minitest/spec.rbs +1 -1
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
- data/stdlib/minitest/0/minitest/test.rbs +7 -14
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit.rbs +1 -2
- data/stdlib/minitest/0/minitest.rbs +41 -892
- data/stdlib/monitor/0/monitor.rbs +13 -4
- data/stdlib/net-http/0/net-http.rbs +42 -109
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/manifest.yaml +1 -0
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/manifest.yaml +1 -0
- data/stdlib/openssl/0/openssl.rbs +235 -143
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +13 -8
- data/stdlib/resolv/0/resolv.rbs +21 -12
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +1 -2
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +32 -27
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/socket/0/unix_socket.rbs +4 -2
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +28 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +17 -13
- data/ext/rbs_extension/ruby_objs.c +0 -602
- data/ext/rbs_extension/ruby_objs.h +0 -51
- data/stdlib/minitest/0/manifest.yaml +0 -2
data/core/gc.rbs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# <!-- rdoc-file=gc.rb -->
|
2
|
-
# The GC module provides an interface to Ruby's mark
|
2
|
+
# The GC module provides an interface to Ruby's mark-and-sweep garbage
|
3
3
|
# collection mechanism.
|
4
4
|
#
|
5
5
|
# Some of the underlying methods are also available via the ObjectSpace module.
|
@@ -81,14 +81,19 @@ module GC
|
|
81
81
|
#
|
82
82
|
# `:GC_TIME`
|
83
83
|
# : Time elapsed in seconds for this GC run
|
84
|
+
#
|
84
85
|
# `:GC_INVOKE_TIME`
|
85
86
|
# : Time elapsed in seconds from startup to when the GC was invoked
|
87
|
+
#
|
86
88
|
# `:HEAP_USE_SIZE`
|
87
89
|
# : Total bytes of heap used
|
90
|
+
#
|
88
91
|
# `:HEAP_TOTAL_SIZE`
|
89
92
|
# : Total size of heap in bytes
|
93
|
+
#
|
90
94
|
# `:HEAP_TOTAL_OBJECTS`
|
91
95
|
# : Total number of objects
|
96
|
+
#
|
92
97
|
# `:GC_IS_MARKED`
|
93
98
|
# : Returns `true` if the GC is in mark phase
|
94
99
|
#
|
@@ -106,7 +111,7 @@ module GC
|
|
106
111
|
# `:HAVE_FINALIZE`
|
107
112
|
# :
|
108
113
|
#
|
109
|
-
def self.raw_data: () -> Array[Hash[Symbol, untyped]]
|
114
|
+
def self.raw_data: () -> Array[Hash[Symbol, untyped]]?
|
110
115
|
|
111
116
|
# <!--
|
112
117
|
# rdoc-file=gc.c
|
@@ -154,17 +159,88 @@ module GC
|
|
154
159
|
|
155
160
|
# <!--
|
156
161
|
# rdoc-file=gc.rb
|
157
|
-
# - GC.
|
162
|
+
# - GC.config -> hash
|
163
|
+
# - GC.config(hash) -> hash
|
158
164
|
# -->
|
159
|
-
#
|
165
|
+
# Sets or gets information about the current GC config.
|
166
|
+
#
|
167
|
+
# Configuration parameters are GC implementation-specific and may change without
|
168
|
+
# notice.
|
169
|
+
#
|
170
|
+
# This method can be called without parameters to retrieve the current config as
|
171
|
+
# a `Hash` with `Symbol` keys.
|
172
|
+
#
|
173
|
+
# This method can also be called with a `Hash` argument to assign values to
|
174
|
+
# valid config keys. Config keys missing from the passed `Hash` will be left
|
175
|
+
# unmodified.
|
176
|
+
#
|
177
|
+
# If a key/value pair is passed to this function that does not correspond to a
|
178
|
+
# valid config key for the GC implementation being used, no config will be
|
179
|
+
# updated, the key will be present in the returned Hash, and its value will be
|
180
|
+
# `nil`. This is to facilitate easy migration between GC implementations.
|
181
|
+
#
|
182
|
+
# In both call-seqs, the return value of `GC.config` will be a `Hash` containing
|
183
|
+
# the most recent full configuration, i.e., all keys and values defined by the
|
184
|
+
# specific GC implementation being used. In the case of a config update, the
|
185
|
+
# return value will include the new values being updated.
|
186
|
+
#
|
187
|
+
# This method is only expected to work on CRuby.
|
188
|
+
#
|
189
|
+
# ### GC Implementation independent values
|
190
|
+
#
|
191
|
+
# The `GC.config` hash can also contain keys that are global and read-only.
|
192
|
+
# These keys are not specific to any one GC library implementation and
|
193
|
+
# attempting to write to them will raise `ArgumentError`.
|
194
|
+
#
|
195
|
+
# There is currently only one global, read-only key:
|
196
|
+
#
|
197
|
+
# implementation
|
198
|
+
# : Returns a `String` containing the name of the currently loaded GC library,
|
199
|
+
# if one has been loaded using `RUBY_GC_LIBRARY`, and "default" in all other
|
200
|
+
# cases
|
201
|
+
#
|
160
202
|
#
|
161
|
-
#
|
203
|
+
# ### GC Implementation specific values
|
204
|
+
#
|
205
|
+
# GC libraries are expected to document their own configuration. Valid keys for
|
206
|
+
# Ruby's default GC implementation are:
|
207
|
+
#
|
208
|
+
# rgengc_allow_full_mark
|
209
|
+
# : Controls whether the GC is allowed to run a full mark (young & old
|
210
|
+
# objects).
|
211
|
+
#
|
212
|
+
# When `true`, GC interleaves major and minor collections. This is the
|
213
|
+
# default. GC will function as intended.
|
214
|
+
#
|
215
|
+
# When `false`, the GC will never trigger a full marking cycle unless
|
216
|
+
# explicitly requested by user code. Instead, only a minor mark will
|
217
|
+
# run—only young objects will be marked. When the heap space is exhausted,
|
218
|
+
# new pages will be allocated immediately instead of running a full mark.
|
219
|
+
#
|
220
|
+
# A flag will be set to notify that a full mark has been requested. This
|
221
|
+
# flag is accessible using `GC.latest_gc_info(:needs_major_by)`
|
222
|
+
#
|
223
|
+
# The user can trigger a major collection at any time using
|
224
|
+
# `GC.start(full_mark: true)`
|
225
|
+
#
|
226
|
+
# When `false`, Young to Old object promotion is disabled. For performance
|
227
|
+
# reasons, it is recommended to warm up an application using
|
228
|
+
# `Process.warmup` before setting this parameter to `false`.
|
229
|
+
#
|
230
|
+
def self.config: () -> Hash[Symbol, untyped]
|
231
|
+
| (Hash[Symbol, untyped]) -> Hash[Symbol, untyped]
|
232
|
+
|
233
|
+
# <!--
|
234
|
+
# rdoc-file=gc.rb
|
235
|
+
# - GC.count -> Integer
|
236
|
+
# -->
|
237
|
+
# Returns the number of times GC has occurred since the process started.
|
162
238
|
#
|
163
239
|
def self.count: () -> Integer
|
164
240
|
|
165
241
|
# <!--
|
166
242
|
# rdoc-file=gc.rb
|
167
|
-
# - GC.disable
|
243
|
+
# - GC.disable -> true or false
|
168
244
|
# -->
|
169
245
|
# Disables garbage collection, returning `true` if garbage collection was
|
170
246
|
# already disabled.
|
@@ -176,7 +252,7 @@ module GC
|
|
176
252
|
|
177
253
|
# <!--
|
178
254
|
# rdoc-file=gc.rb
|
179
|
-
# - GC.enable
|
255
|
+
# - GC.enable -> true or false
|
180
256
|
# -->
|
181
257
|
# Enables garbage collection, returning `true` if garbage collection was
|
182
258
|
# previously disabled.
|
@@ -195,24 +271,24 @@ module GC
|
|
195
271
|
#
|
196
272
|
# The `full_mark` keyword argument determines whether or not to perform a major
|
197
273
|
# garbage collection cycle. When set to `true`, a major garbage collection cycle
|
198
|
-
# is
|
199
|
-
# collection cycle is
|
274
|
+
# is run, meaning all objects are marked. When set to `false`, a minor garbage
|
275
|
+
# collection cycle is run, meaning only young objects are marked.
|
200
276
|
#
|
201
277
|
# The `immediate_mark` keyword argument determines whether or not to perform
|
202
278
|
# incremental marking. When set to `true`, marking is completed during the call
|
203
|
-
# to this method. When set to `false`, marking is performed in steps that
|
279
|
+
# to this method. When set to `false`, marking is performed in steps that are
|
204
280
|
# interleaved with future Ruby code execution, so marking might not be completed
|
205
|
-
# during this method call. Note that if `full_mark` is `false
|
206
|
-
# always be immediate, regardless of the value of `immediate_mark`.
|
281
|
+
# during this method call. Note that if `full_mark` is `false`, then marking
|
282
|
+
# will always be immediate, regardless of the value of `immediate_mark`.
|
207
283
|
#
|
208
|
-
# The `
|
209
|
-
# sweeping (using lazy sweep). When set to `
|
210
|
-
# steps that
|
211
|
-
# not be completed during this method call. When set to `
|
284
|
+
# The `immediate_sweep` keyword argument determines whether or not to defer
|
285
|
+
# sweeping (using lazy sweep). When set to `false`, sweeping is performed in
|
286
|
+
# steps that are interleaved with future Ruby code execution, so sweeping might
|
287
|
+
# not be completed during this method call. When set to `true`, sweeping is
|
212
288
|
# completed during the call to this method.
|
213
289
|
#
|
214
|
-
# Note: These keyword arguments are implementation and version
|
215
|
-
# are not guaranteed to be future-compatible
|
290
|
+
# Note: These keyword arguments are implementation and version-dependent. They
|
291
|
+
# are not guaranteed to be future-compatible and may be ignored if the
|
216
292
|
# underlying implementation does not support them.
|
217
293
|
#
|
218
294
|
def self.start: (?immediate_sweep: boolish, ?immediate_mark: boolish, ?full_mark: boolish) -> nil
|
@@ -225,79 +301,106 @@ module GC
|
|
225
301
|
# -->
|
226
302
|
# Returns a Hash containing information about the GC.
|
227
303
|
#
|
228
|
-
# The contents of the hash are implementation
|
304
|
+
# The contents of the hash are implementation-specific and may change in the
|
229
305
|
# future without notice.
|
230
306
|
#
|
231
|
-
# The hash includes
|
307
|
+
# The hash includes internal statistics about GC such as:
|
232
308
|
#
|
233
309
|
# count
|
234
|
-
# : The total number of garbage collections
|
310
|
+
# : The total number of garbage collections run since application start (count
|
235
311
|
# includes both minor and major garbage collections)
|
312
|
+
#
|
236
313
|
# time
|
237
314
|
# : The total time spent in garbage collections (in milliseconds)
|
315
|
+
#
|
238
316
|
# heap_allocated_pages
|
239
317
|
# : The total number of `:heap_eden_pages` + `:heap_tomb_pages`
|
318
|
+
#
|
240
319
|
# heap_sorted_length
|
241
320
|
# : The number of pages that can fit into the buffer that holds references to
|
242
321
|
# all pages
|
322
|
+
#
|
243
323
|
# heap_allocatable_pages
|
244
324
|
# : The total number of pages the application could allocate without
|
245
325
|
# additional GC
|
326
|
+
#
|
246
327
|
# heap_available_slots
|
247
328
|
# : The total number of slots in all `:heap_allocated_pages`
|
329
|
+
#
|
248
330
|
# heap_live_slots
|
249
331
|
# : The total number of slots which contain live objects
|
332
|
+
#
|
250
333
|
# heap_free_slots
|
251
334
|
# : The total number of slots which do not contain live objects
|
335
|
+
#
|
252
336
|
# heap_final_slots
|
253
337
|
# : The total number of slots with pending finalizers to be run
|
338
|
+
#
|
254
339
|
# heap_marked_slots
|
255
340
|
# : The total number of objects marked in the last GC
|
341
|
+
#
|
256
342
|
# heap_eden_pages
|
257
343
|
# : The total number of pages which contain at least one live slot
|
344
|
+
#
|
258
345
|
# heap_tomb_pages
|
259
346
|
# : The total number of pages which do not contain any live slots
|
347
|
+
#
|
260
348
|
# total_allocated_pages
|
261
349
|
# : The cumulative number of pages allocated since application start
|
350
|
+
#
|
262
351
|
# total_freed_pages
|
263
352
|
# : The cumulative number of pages freed since application start
|
353
|
+
#
|
264
354
|
# total_allocated_objects
|
265
355
|
# : The cumulative number of objects allocated since application start
|
356
|
+
#
|
266
357
|
# total_freed_objects
|
267
358
|
# : The cumulative number of objects freed since application start
|
359
|
+
#
|
268
360
|
# malloc_increase_bytes
|
269
361
|
# : Amount of memory allocated on the heap for objects. Decreased by any GC
|
362
|
+
#
|
270
363
|
# malloc_increase_bytes_limit
|
271
364
|
# : When `:malloc_increase_bytes` crosses this limit, GC is triggered
|
365
|
+
#
|
272
366
|
# minor_gc_count
|
273
367
|
# : The total number of minor garbage collections run since process start
|
368
|
+
#
|
274
369
|
# major_gc_count
|
275
370
|
# : The total number of major garbage collections run since process start
|
371
|
+
#
|
276
372
|
# compact_count
|
277
373
|
# : The total number of compactions run since process start
|
374
|
+
#
|
278
375
|
# read_barrier_faults
|
279
376
|
# : The total number of times the read barrier was triggered during compaction
|
377
|
+
#
|
280
378
|
# total_moved_objects
|
281
379
|
# : The total number of objects compaction has moved
|
380
|
+
#
|
282
381
|
# remembered_wb_unprotected_objects
|
283
382
|
# : The total number of objects without write barriers
|
383
|
+
#
|
284
384
|
# remembered_wb_unprotected_objects_limit
|
285
385
|
# : When `:remembered_wb_unprotected_objects` crosses this limit, major GC is
|
286
386
|
# triggered
|
387
|
+
#
|
287
388
|
# old_objects
|
288
389
|
# : Number of live, old objects which have survived at least 3 garbage
|
289
390
|
# collections
|
391
|
+
#
|
290
392
|
# old_objects_limit
|
291
393
|
# : When `:old_objects` crosses this limit, major GC is triggered
|
394
|
+
#
|
292
395
|
# oldmalloc_increase_bytes
|
293
396
|
# : Amount of memory allocated on the heap for objects. Decreased by major GC
|
397
|
+
#
|
294
398
|
# oldmalloc_increase_bytes_limit
|
295
|
-
# : When `:
|
296
|
-
# triggered
|
399
|
+
# : When `:oldmalloc_increase_bytes` crosses this limit, major GC is triggered
|
297
400
|
#
|
298
401
|
#
|
299
402
|
# If the optional argument, hash, is given, it is overwritten and returned. This
|
300
|
-
# is intended to avoid probe effect.
|
403
|
+
# is intended to avoid the probe effect.
|
301
404
|
#
|
302
405
|
# This method is only expected to work on CRuby.
|
303
406
|
#
|
@@ -308,7 +411,7 @@ module GC
|
|
308
411
|
# rdoc-file=gc.rb
|
309
412
|
# - GC.measure_total_time = true/false
|
310
413
|
# -->
|
311
|
-
#
|
414
|
+
# Enables measuring GC time. You can get the result with `GC.stat(:time)`. Note
|
312
415
|
# that GC time measurement can cause some performance overhead.
|
313
416
|
#
|
314
417
|
def self.measure_total_time=: [T] (T enable) -> T
|
@@ -317,8 +420,8 @@ module GC
|
|
317
420
|
# rdoc-file=gc.rb
|
318
421
|
# - GC.measure_total_time -> true/false
|
319
422
|
# -->
|
320
|
-
#
|
321
|
-
# affect the application performance.
|
423
|
+
# Returns the measure_total_time flag (default: `true`). Note that measurement
|
424
|
+
# can affect the application's performance.
|
322
425
|
#
|
323
426
|
def self.measure_total_time: () -> bool
|
324
427
|
|
@@ -357,16 +460,16 @@ module GC
|
|
357
460
|
# it will return a `Hash` with heap names as keys and a `Hash` containing
|
358
461
|
# information about the heap as values.
|
359
462
|
#
|
360
|
-
# If the second optional argument, `hash_or_key`, is given as `Hash`, it will
|
361
|
-
# overwritten and returned. This is intended to avoid the probe effect.
|
463
|
+
# If the second optional argument, `hash_or_key`, is given as a `Hash`, it will
|
464
|
+
# be overwritten and returned. This is intended to avoid the probe effect.
|
362
465
|
#
|
363
466
|
# If both optional arguments are passed in and the second optional argument is a
|
364
|
-
# symbol, it will return a `Numeric`
|
467
|
+
# symbol, it will return a `Numeric` value for the particular heap.
|
365
468
|
#
|
366
469
|
# On CRuby, `heap_name` is of the type `Integer` but may be of type `String` on
|
367
470
|
# other implementations.
|
368
471
|
#
|
369
|
-
# The contents of the hash are implementation
|
472
|
+
# The contents of the hash are implementation-specific and may change in the
|
370
473
|
# future without notice.
|
371
474
|
#
|
372
475
|
# If the optional argument, hash, is given, it is overwritten and returned.
|
@@ -377,26 +480,35 @@ module GC
|
|
377
480
|
#
|
378
481
|
# slot_size
|
379
482
|
# : The slot size of the heap in bytes.
|
483
|
+
#
|
380
484
|
# heap_allocatable_pages
|
381
485
|
# : The number of pages that can be allocated without triggering a new garbage
|
382
486
|
# collection cycle.
|
487
|
+
#
|
383
488
|
# heap_eden_pages
|
384
489
|
# : The number of pages in the eden heap.
|
490
|
+
#
|
385
491
|
# heap_eden_slots
|
386
492
|
# : The total number of slots in all of the pages in the eden heap.
|
493
|
+
#
|
387
494
|
# heap_tomb_pages
|
388
495
|
# : The number of pages in the tomb heap. The tomb heap only contains pages
|
389
496
|
# that do not have any live objects.
|
497
|
+
#
|
390
498
|
# heap_tomb_slots
|
391
499
|
# : The total number of slots in all of the pages in the tomb heap.
|
500
|
+
#
|
392
501
|
# total_allocated_pages
|
393
502
|
# : The total number of pages that have been allocated in the heap.
|
503
|
+
#
|
394
504
|
# total_freed_pages
|
395
505
|
# : The total number of pages that have been freed and released back to the
|
396
506
|
# system in the heap.
|
507
|
+
#
|
397
508
|
# force_major_gc_count
|
398
|
-
# : The number of times major garbage collection cycles
|
509
|
+
# : The number of times this heap has forced major garbage collection cycles
|
399
510
|
# to start due to running out of free slots.
|
511
|
+
#
|
400
512
|
# force_incremental_marking_finish_count
|
401
513
|
# : The number of times this heap has forced incremental marking to complete
|
402
514
|
# due to running out of pooled slots.
|
@@ -420,24 +532,25 @@ module GC
|
|
420
532
|
|
421
533
|
# <!--
|
422
534
|
# rdoc-file=gc.rb
|
423
|
-
# - GC.stress
|
535
|
+
# - GC.stress -> integer, true, or false
|
424
536
|
# -->
|
425
|
-
# Returns current status of GC stress mode.
|
537
|
+
# Returns the current status of GC stress mode.
|
426
538
|
#
|
427
539
|
def self.stress: () -> (Integer | bool)
|
428
540
|
|
429
541
|
# <!--
|
430
542
|
# rdoc-file=gc.rb
|
431
|
-
# - GC.stress = flag
|
543
|
+
# - GC.stress = flag -> flag
|
432
544
|
# -->
|
433
545
|
# Updates the GC stress mode.
|
434
546
|
#
|
435
547
|
# When stress mode is enabled, the GC is invoked at every GC opportunity: all
|
436
548
|
# memory and object allocations.
|
437
549
|
#
|
438
|
-
# Enabling stress mode will degrade performance
|
550
|
+
# Enabling stress mode will degrade performance; it is only for debugging.
|
439
551
|
#
|
440
|
-
# flag can be true, false, or an integer
|
552
|
+
# The flag can be true, false, or an integer bitwise-ORed with the following
|
553
|
+
# flags:
|
441
554
|
# 0x01:: no major GC
|
442
555
|
# 0x02:: no immediate sweep
|
443
556
|
# 0x04:: full mark after malloc/calloc/realloc
|
@@ -449,7 +562,7 @@ module GC
|
|
449
562
|
# rdoc-file=gc.rb
|
450
563
|
# - GC.total_time -> int
|
451
564
|
# -->
|
452
|
-
#
|
565
|
+
# Returns the measured GC total time in nanoseconds.
|
453
566
|
#
|
454
567
|
def self.total_time: () -> Integer
|
455
568
|
|
@@ -474,7 +587,7 @@ module GC
|
|
474
587
|
|
475
588
|
# The type that `GC.compact` and related functions can return.
|
476
589
|
#
|
477
|
-
type compact_info = Hash[:considered | :moved
|
590
|
+
type compact_info = Hash[:considered | :moved | :moved_up | :moved_down, Hash[Symbol, Integer]]
|
478
591
|
|
479
592
|
# <!--
|
480
593
|
# rdoc-file=gc.rb
|
@@ -508,12 +621,15 @@ module GC
|
|
508
621
|
# rdoc-file=gc.rb
|
509
622
|
# - GC.latest_gc_info -> hash
|
510
623
|
# - GC.latest_gc_info(hash) -> hash
|
511
|
-
# - GC.latest_gc_info(
|
624
|
+
# - GC.latest_gc_info(key) -> value
|
512
625
|
# -->
|
513
626
|
# Returns information about the most recent garbage collection.
|
514
627
|
#
|
515
|
-
# If the
|
516
|
-
# is intended to avoid probe effect.
|
628
|
+
# If the argument `hash` is given and is a Hash object, it is overwritten and
|
629
|
+
# returned. This is intended to avoid the probe effect.
|
630
|
+
#
|
631
|
+
# If the argument `key` is given and is a Symbol object, it returns the value
|
632
|
+
# associated with the key. This is equivalent to `GC.latest_gc_info[key]`.
|
517
633
|
#
|
518
634
|
def self.latest_gc_info: (?Hash[Symbol, untyped]? hash) -> Hash[Symbol, untyped]
|
519
635
|
| (Symbol key) -> untyped
|