Skip to content

Commit 0fb520a

Browse files
authored
Bump version to 0.17 (#760)
1 parent 9824cee commit 0fb520a

File tree

3 files changed

+58
-4
lines changed

3 files changed

+58
-4
lines changed

CHANGELOG.md

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,58 @@
1-
0.16.0 (2022-12-006)
1+
0.17.0 (2023-02-17)
2+
===
3+
4+
Plan
5+
---
6+
* Fix a bug where `SemiSpace::get_available_pages` returned unused pages as 'available pages'. It should return half of the unused pages as 'available'.
7+
* Fix a bug where generational plans may make full-heap GC decision before all the releasing work is done. Now plans have a `Plan::end_of_gc()` method
8+
that is executed after all the GC work is done.
9+
* Fix a bug where generational plans tended to trigger full heap GCs when heap is full. Now we properly use Appel-style nursery and allow
10+
the nursery to extend to the heap size.
11+
* Add a feature `immix_zero_on_release` as a debug feature for Immix to eagerly zero any reclaimed memory.
12+
* Fix a bug where the alloc bits for dead objects were still set after the objects were reclaimed. Now Immix eagerly clears the alloc bits
13+
once the memory is reclaimed.
14+
* Fix a bug where Immix uses forwarding bits and forwarding pointers but did not declare it.
15+
16+
17+
Allocator
18+
---
19+
* Fix a bug about the maximum object size in `FreeListAllocator`. The allowed maximum object size depends on both the block size and the largest bin size.
20+
21+
22+
Scheduler
23+
---
24+
* Add a 'sentinel' mechanism to execute a specified 'sentinel' work packet when a bucket is drained, and prevent the GC from entering the next stage depending
25+
on the sentinel packet. This makes it possible to expand the transitive closure multiple times. It replaces `GCWorkScheduler::closure_end()`.
26+
27+
28+
API
29+
---
30+
* Add a new set of APIs to support binding-specific weak reference processing:
31+
* Add `Scanning::process_weak_refs()` and `Scanning::forward_weak_refs()`. They both supply an `ObjectTracerContext` argument for retaining and
32+
updating weak references. `Scanning::process_weak_refs()` allows a boolean return value to indicate if the method should be called again
33+
by MMTk after finishing transitive closures for the weak references, which can be used to implement ephemeron.
34+
* Add `Collection::post_forwarding()` which is called by MMTk after all weak reference related work is done. A binding can use this call
35+
for any post processing for weak references, such as enqueue cleared weak references to a queue (Java).
36+
* These replace old methods for the same purpose, like `Collection::process_weak_refs()`, `Collection::vm_release()`, and `memory_manager::on_closure_end`.
37+
38+
39+
Misc
40+
---
41+
* Upgrade the Rust toolchain we use to 1.66.1 and upgrade MSRV to 1.61.0.
42+
* Improve the boot time significantly for MMTk:
43+
* Space descriptor map is created as an zeroed vector.
44+
* Mmapper coalesces the mmap requests for adjancent chunks, and reduces our `mmap` system calls at boot time.
45+
* Add `GCTrigger` to allow different heuristics to trigger a GC:
46+
* Implement `FixedHeapSizeTrigger` that triggers the GC when the maximum heap size is reached (the current approach).
47+
* Implement `MemBalancerTrigger` (https://dl.acm.org/doi/pdf/10.1145/3563323) as the dynamic heap resize heuristic.
48+
* Refactor `SFTMap` so it is dynamically created now.
49+
* Fix a bug where `Address::store` dropped the value after store.
50+
* Fix a bug about an incorrect pointer cast in unsafe code in `CommonFreeListPageResource`.
51+
* Remove all inline directives from our code base. We rely on Rust compiler and PGO for inlining decisions.
52+
* Remove `SynchronizedCounter`.
53+
54+
55+
0.16.0 (2022-12-06)
256
===
357

458
Plan

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.16.0"
3+
version = "0.17.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.16.0", path = "macros/" }
23+
mmtk-macros = { version = "0.17.0", path = "macros/" }
2424

2525
libc = "0.2"
2626
jemalloc-sys = { version = "0.5.3", 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.16.0"
4+
version = "0.17.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)