Actions
Bug #18779
closed`GC.compact` and other compaction related methods should be defined as rb_f_notimplement on non supported platforms.
Bug #18779:
`GC.compact` and other compaction related methods should be defined as rb_f_notimplement on non supported platforms.
Description
I received several bug report on native gems using GC.verify_compaction_references in their test suite.
Examples:
- https://github.com/msgpack/msgpack-ruby/pull/275/files
- https://github.com/Shopify/bootsnap/pull/414/files
I think that when !GC_COMPACTION_SUPPORTED, rather than raise NotImplementedError, we should instead define these methods as rb_f_notimplement like Process.fork on Windows.
This way GC.respond_to?(:compact) would be a proper way to test for compaction support.
Unfortunately, these methods are defined through .rb files with Primitive, and I don't know wether it's possible to check GC_COMPACTION_SUPPORTED from there, nor if it's possible to define a rb_f_notimplement method.
Actions