Project

General

Profile

Actions

Feature #4990

closed

Proposal: Internal GC/memory subsystem API

Added by kstephens (Kurt Stephens) over 13 years ago. Updated about 11 years ago.

Status:
Closed
Target version:
[ruby-core:37854]

Description

There is significant interest in improving/altering the performance, behavior and features of MRI's GC in 1.8 and 1.9 series.

Proposal: MRI should support an internal GC API -- to separate MRI core from its current GC implementation,
and provide hooks for additional features:

  1. Interfaces between MRI internals and any GC/allocator implementation:
  1. Support selecting GC implementations at run-time or compile time.

  2. Support malloc() replacements, at run-time and/or compile time, such as:

  • tcmalloc
  • jemalloc
  1. Support callback hooks in allocation and GC phases to orthogonally add features, such as:
  • performant/correct WeakReferences and ReferenceQueues (http://redmine.ruby-lang.org/issues/4168).
  • allocation tracing/debugging.
  • instance caching (e.g.: Floats)
  • computational caching.
  • cache invalidation.
  • metrics collection.
  1. Interfaces to common features of alternate GCs:
  • finalization
  • weak references
  • atomic allocations (e.g.: string or binary data)
  • mostly read-only/static allocations (e.g.: code, global bindings)

A prototype GC phase callback API for 1.8, REE and 1.9 is here:

https://github.com/kstephens/ref/tree/master-mri-gc_api/patch

This GC API should be supported on both 1.8 and 1.9 code lines.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #2471: want to choose a GC algorithmRejectedmatz (Yukihiro Matsumoto)12/10/2009Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0