MMTk 0.15.0
Pre-release
Pre-release
GC Plans
- Generational plans now support bounded nursery size and fixed nursery size.
- Immix can be used in a non-moving variant (with no defragmentation) to facilitate early porting stages
where a non-moving GC is expected by the VM. Enable the featureimmix_no_defragto use the variant.
Note that this variant performs poorly, compared to normal immix.
API
- Add
mod build_infofor bindings to get information about the current build. - Add
trait Edge. A binding can implement its own edge type if they need more sophisiticated edges than a simple address slot,
e.g. to support compressed pointers, base pointers with offsets, or tagged pointers. - Add APIs for implementing write barriers. MMTk provides subusming barriers
object_reference_write()and pre/post write barriersobject_reference_write_pre/post(). - Add APIs for implementing barriers for memory copying such as
array_copyin Java. MMTk providesmemory_region_copy()(subsuming) andmemory_region_copy_pre/post(). - The
ignore_system_g_coption is renamed toignore_system_gcto be consistent with our naming convention. - The
max/min_nurseryoption is replaced bynursery. Bindings can usenursery=Fixed:<size>orBounded:<size>to config the nursery size. - Metadata access methods now requires a type parameter for the metadata value.
- Metadata compare-exchange methods now return a
Resultrather than a boolean, which is more consistent with Rust atomic types. - Metadata now supports
fetch_and,fetch_orandfetch_update. - Header metadata access methods in
ObjectModelnow have default implementations.
Misc
- Remove all stdout printing in MMTk.
- Fix a bug that
CopySpaceshould not try zeroing alloc bit if there is no allocation in the space. - Fix a few issues in documentation.