From: tenderlove@... Date: 2020-06-01T15:42:53+00:00 Subject: [ruby-core:98606] [Ruby master Feature#16929] Add GC.start(compact: true) Issue #16929 has been reported by tenderlovemaking (Aaron Patterson). ---------------------------------------- Feature #16929: Add GC.start(compact: true) https://bugs.ruby-lang.org/issues/16929 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Priority: Normal ---------------------------------------- I have been working on integrating compaction in to the normal GC process (in other words, making compaction automatic). I was thinking about adding `GC.start(compact: true)` (actually I put it in master without filing a ticket first, and I apologize for doing that). Right now we use `GC.compact`, but if compaction becomes part of the normal GC process, it probably makes more sense for the API to be `GC.start(compact: true)` since that is the API most people use for kicking off a GC. I am going to change the implementation of `GC.compact` like this: ``` diff diff --git a/gc.rb b/gc.rb index 881b8659ce..583122db45 100644 --- a/gc.rb +++ b/gc.rb @@ -165,7 +165,8 @@ def self.latest_gc_info hash_or_key = nil end def self.compact - __builtin_rb_gc_compact + # last option runs compact. + __builtin_gc_start_internal true, true, true, true end # call-seq: ``` But this could be executed from `GC.start` too. Should we add `GC.start(compact: true)` and deprecate `GC.compact`? I would still like to keep `GC.verify_compaction_references` for debugging compaction problems (but maybe change the method name), but I don't know if we need to keep `GC.compact`. Thanks. -- https://bugs.ruby-lang.org/ Unsubscribe: