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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>