Skip to content

Commit 4aa6437

Browse files
authored
Bump version to v0.16 (#709)
1 parent 6fe9bbc commit 4aa6437

File tree

3 files changed

+65
-3
lines changed

3 files changed

+65
-3
lines changed

CHANGELOG.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,65 @@
1+
0.16.0 (2022-12-006)
2+
===
3+
4+
Plan
5+
---
6+
7+
* Refactor `MarkSweep` to work with both our native mark sweep policy and the malloc mark sweep policy backed by malloc libraries.
8+
9+
Allocators
10+
---
11+
12+
* Add `FreeListAllocator` which is implemented as a `MiMalloc` allocator.
13+
* Fix a bug in `ImmixAllocator` that alignment is properly taken into consideration when deciding whether to do overflow allocation.
14+
15+
Policies
16+
---
17+
18+
* Add `MarkSweepSpace`:
19+
* It uses our native MiMalloc implementation in MMTk core.
20+
* When the feature `malloc_mark_sweep` is enabled, it uses the selected malloc library to back up its allocation.
21+
* Malloc mark sweep now accounts for memory based on page usage, and each malloc library may use a different page size.
22+
* The immix space now uses the newly added `BlockPageResource`.
23+
* Changes to Space Function Table (SFT) to improve our boot time and reduce the memory footprint:
24+
* Rename the current SFT map to `SFTSparseChunkMap`, and only use it for 32 bits architectures.
25+
* Add `SFTSpaceMap` and by default use it for 64 bits architectures.
26+
* Add `SFTDenseChunkMap` and use it when we have no control of the virtual address range for a MMTk space on 64 bits architectures.
27+
28+
API
29+
---
30+
31+
* Add an option `thread_affinity` to set processor affinity for MMTk GC threads.
32+
* Add `AllocationSemantics::NonMoving` to allocate objects that are known to be non-moving at allocation time.
33+
* Add `ReferenceGlue::is_referent_cleared` to allow some bindings to use a special value rather than a normal null reference for a cleared referent.
34+
* Add `pin`, `unpin`, and `is_pinned` for object pinning. Note that some spaces do not support object pinning, and using these methods may
35+
cause panic if the space does not support object pinning.
36+
* Refactor `ObjectReference`:
37+
* MMTk core now pervasively uses `ObjectModel::ref_to_address` to get an address from an object reference for setting per-object side metadata.
38+
* Add `ObjectModel::address_to_ref` that does the opposite of `ref_to_address`: getting an object reference from an address that is returned by `ref_to_address`.
39+
* Add `ObjectModel::ref_to_header` for the binding to tell us the base header address from an object reference.
40+
* Rename `ObjectModel::object_start_ref` to `ObjectModel::ref_to_object_start` (to be consistent with other methods).
41+
* Remove `ObjectModel::OBJECT_REF_OFFSET_BEYOND_CELL`, as we no longer use the raw address of an object reference.
42+
* Add `ObjectModel::UNIFIED_OBJECT_REFERENCE_ADDRESS`. If a binding uses the same address for `ObjectReference`, `ref_to_address` and `ref_to_object_start`,
43+
they should set this to `true`. MMTk can utilize this information for optimization.
44+
* Add `ObjectModel::OBJECT_REF_OFFSET_LOWER_BOUND` to specify the minimam value of the possible offsets between an allocation result and object reference's raw address.
45+
* `destroy_mutator()` no longer requires a boxed mutator as its argument. Instead, a mutable reference to the mutator is required. It is made clear that the binding should
46+
manage the lifetime of the boxed mutator from a `bind_mutator()` call.
47+
* Remove `VMBinding::LOG_MIN_ALIGNMENT` and `VMBinding::MAX_ALIGNMENT_SHIFT` (so we only keep `VMBinding::MIN_ALIGNMENT` and `VMBinding::MAX_ALIGNMENT`).
48+
49+
Misc
50+
---
51+
52+
* Add a lock-free `BlockPageResource` that can be used for policies that always allocate memory at the granularity of a fixed sized block.
53+
This page resource facilitates block allocation and reclamation, and uses lock-free operations where possible.
54+
* Fix a race condition in `FreeListPageResource` when multiple threads release pages.
55+
* Fix a bug in `fetch_and/or` in our metadata implementation.
56+
* Fix a bug in side metadata bulk zeroing that may zero unrelated bits if the zeroed region cannot be mapped to whole metadata bytes.
57+
* Remove unused `meta_data_pages_per_region` in page resource implementations.
58+
* Remove the use of `MaybeUninit::uninit().assume_init()` in `FreeListPageResource` which has undefined behaviors
59+
and causes the illegal instruction error with newer Rust toolchains.
60+
* Remove the trait bound `From<Address>` and `Into<Address>` for `Region`, as we cannot guarantee safe conversion between those two types.
61+
* Extract `Chunk` and `ChunkMap` from the immix policy, and make it available for all the policies.
62+
163
0.15.0 (2022-09-20)
264
===
365

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mmtk"
3-
version = "0.15.0"
3+
version = "0.16.0"
44
authors = ["The MMTk Developers <>"]
55
edition = "2021"
66
license = "MIT OR Apache-2.0"
@@ -20,7 +20,7 @@ doctest = false
2020

2121
[dependencies]
2222
# MMTk macros
23-
mmtk-macros = { version = "0.15.0", path = "macros/" }
23+
mmtk-macros = { version = "0.16.0", path = "macros/" }
2424

2525
libc = "0.2"
2626
jemalloc-sys = { version = "0.3.2", features = ["disable_initial_exec_tls"], optional = true }

macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "mmtk-macros"
33
# the macro crate uses the same version as mmtk-core
4-
version = "0.15.0"
4+
version = "0.16.0"
55
edition = "2021"
66
license = "MIT OR Apache-2.0"
77
description = "MMTk macros provides procedural macros used by mmtk-core."

0 commit comments

Comments
 (0)