rbs 3.7.0 → 3.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +3 -3
- data/.github/workflows/ruby.yml +7 -7
- data/CHANGELOG.md +68 -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 +1 -1
- data/core/dir.rbs +1 -17
- data/core/encoding.rbs +12 -32
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +0 -2
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +6 -2
- data/core/exception.rbs +235 -169
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +26 -75
- data/core/float.rbs +125 -72
- data/core/gc.rbs +156 -40
- data/core/hash.rbs +122 -143
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +99 -146
- data/core/kernel.rbs +292 -202
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/module.rbs +28 -23
- data/core/nil_class.rbs +2 -2
- data/core/numeric.rbs +101 -104
- data/core/object.rbs +0 -4
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +80 -12
- data/core/process.rbs +109 -57
- data/core/ractor.rbs +54 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +234 -33
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +6 -54
- 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 +6 -6
- data/core/set.rbs +3 -15
- data/core/string.rbs +256 -260
- 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/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +1 -1
- data/ext/rbs_extension/location.c +29 -19
- data/ext/rbs_extension/parser.c +268 -293
- data/ext/rbs_extension/parserstate.c +56 -22
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +1 -1
- data/lib/rbs/cli.rb +13 -13
- data/lib/rbs/collection/config.rb +3 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +3 -3
- data/lib/rbs/environment_loader.rb +1 -1
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +2 -2
- data/lib/rbs/prototype/rb.rb +11 -8
- data/lib/rbs/prototype/rbi.rb +9 -5
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +4 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/types.rb +2 -1
- data/lib/rbs/unit_test/type_assertions.rb +2 -2
- data/lib/rbs/validator.rb +3 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +4 -0
- data/sig/ancestor_graph.rbs +4 -4
- data/sig/namespace.rbs +2 -3
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/type_alias_regularity.rbs +5 -5
- data/sig/typename.rbs +8 -5
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +2 -2
- 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 +47 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/date/0/date.rbs +27 -42
- data/stdlib/did_you_mean/0/did_you_mean.rbs +0 -5
- 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 +8 -4
- data/stdlib/json/0/json.rbs +56 -71
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/net-http/0/net-http.rbs +39 -106
- 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/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/openssl.rbs +136 -69
- 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/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 +13 -4
- 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 +0 -1
- 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/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 +11 -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 +3 -6
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
|
#
|
@@ -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
|
|
@@ -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
|