diff --git a/CHANGELOG.md b/CHANGELOG.md index 551bbdc3be..ecc1d287c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,83 @@ +0.19.0 (2023-08-18) +=== + +## What's Changed + +### Plan +* Remove a warning in sticky immix trace_object_nursery by @qinsoon in https://github.com/mmtk/mmtk-core/pull/815 +* Change default plan to GenImmix by @qinsoon in https://github.com/mmtk/mmtk-core/pull/819 + +### Policy +* Remove redundant clear_nursery() by @tianleq in https://github.com/mmtk/mmtk-core/pull/799 +* Introduce VMSpace, and allow VMSpace to be set lazily by @qinsoon in https://github.com/mmtk/mmtk-core/pull/802 +* Fix an issue that the aligned VM space may not match the original location by @qinsoon in https://github.com/mmtk/mmtk-core/pull/809 +* Remove some uses of mem::transmute in marksweep block by @qinsoon in https://github.com/mmtk/mmtk-core/pull/826 +* Fix `is_live` for ImmixSpace by @wks in https://github.com/mmtk/mmtk-core/pull/842 +* Sweep abandoned blocks in eager sweeping by @qinsoon in https://github.com/mmtk/mmtk-core/pull/830 +* Fix VO bits for Immix by @wks in https://github.com/mmtk/mmtk-core/pull/849 +* Fix unaligned access by @wks in https://github.com/mmtk/mmtk-core/pull/887 + +### Scheduler +* Let the coordinator thread open buckets by @wks in https://github.com/mmtk/mmtk-core/pull/782 +* No coordinator work by @wks in https://github.com/mmtk/mmtk-core/pull/794 + +### Misc +* Rename "alloc bit" to "valid-object bit" (VO bit), the second attempt. by @wks in https://github.com/mmtk/mmtk-core/pull/791 +* Add MarkState. Use MarkState for ImmortalSpace. by @qinsoon in https://github.com/mmtk/mmtk-core/pull/796 +* Change info logging to debug in ImmortalSpace by @qinsoon in https://github.com/mmtk/mmtk-core/pull/801 +* Reset nursery_index in finalizable processor if we remove objects from candidates by @qinsoon in https://github.com/mmtk/mmtk-core/pull/807 +* Allow bulk set side metadata by @qinsoon in https://github.com/mmtk/mmtk-core/pull/808 +* Some fixes for sanity GC by @qinsoon in https://github.com/mmtk/mmtk-core/pull/806 +* Use extreme assertion for metadata mapped assert by @wks in https://github.com/mmtk/mmtk-core/pull/812 +* Install the missing deps for i686 CI tests by @qinsoon in https://github.com/mmtk/mmtk-core/pull/816 +* Use min nursery as mem balancer's extra memory by @qinsoon in https://github.com/mmtk/mmtk-core/pull/820 +* Sort dependencies in alphabetical order by @k-sareen in https://github.com/mmtk/mmtk-core/pull/822 +* Use sysinfo instead of sys-info-rs by @k-sareen in https://github.com/mmtk/mmtk-core/pull/827 +* Let sysinfo only load memory-related info by @wks in https://github.com/mmtk/mmtk-core/pull/836 +* Add extreme assertion for barrier slow path calls by @ArberSephirotheca in https://github.com/mmtk/mmtk-core/pull/833 +* Refactor: Use `Atomic
` where appropriate by @ClSlaid in https://github.com/mmtk/mmtk-core/pull/843 +* Update porting guide by @k-sareen in https://github.com/mmtk/mmtk-core/pull/857 +* Fix typo in doc comment by @k-sareen in https://github.com/mmtk/mmtk-core/pull/859 +* Replace debug_assert in side_after with assert by @qinsoon in https://github.com/mmtk/mmtk-core/pull/873 +* Work around stack overflow in array_from_fn by @wks in https://github.com/mmtk/mmtk-core/pull/876 +* Let ObjectReference implement Ord by @wks in https://github.com/mmtk/mmtk-core/pull/870 +* Add USDT tracepoints for key GC activities by @caizixian in https://github.com/mmtk/mmtk-core/pull/883 +* Fix UB in SFTMap implementations by @playXE in https://github.com/mmtk/mmtk-core/pull/879 +* Run CI build/unit test with latest stable Rust toolchain by @qinsoon in https://github.com/mmtk/mmtk-core/pull/885 +* Document MSRV policy by @wks in https://github.com/mmtk/mmtk-core/pull/881 +* Fix performance regression test scripts by @qinsoon in https://github.com/mmtk/mmtk-core/pull/892 +* Run V8 binding tests on GitHub hosted runner by @caizixian in https://github.com/mmtk/mmtk-core/pull/900 +* Add tracing tools and documentation by @caizixian in https://github.com/mmtk/mmtk-core/pull/898 +* Run benchmarks for more plans on OpenJDK by @qinsoon in https://github.com/mmtk/mmtk-core/pull/901 +* Apply style check on auxiliary crates (macros and dummyvm) by @caizixian in https://github.com/mmtk/mmtk-core/pull/913 +* Call Collection::out_of_memory if the allocation size is larger than max heap size by @qinsoon in https://github.com/mmtk/mmtk-core/pull/896 +* Add a unit test for comma-separated bulk option parsing by @caizixian in https://github.com/mmtk/mmtk-core/pull/911 +* Merge tutorial and porting guide into user guide by @qinsoon in https://github.com/mmtk/mmtk-core/pull/907 +* Fix broken links in README and cargo doc warnings by @caizixian in https://github.com/mmtk/mmtk-core/pull/912 + +### API +* Add object() in MemorySlice by @qinsoon in https://github.com/mmtk/mmtk-core/pull/798 +* Remove Collection::COORDINATOR_ONLY_STW by @ArberSephirotheca in https://github.com/mmtk/mmtk-core/pull/814 +* Refactor: Change `ActivePlan::mutators()`'s return type by @ArberSephirotheca in https://github.com/mmtk/mmtk-core/pull/817 +* Replace alloc-related `offset` type to `usize` instead `isize` by @fepicture in https://github.com/mmtk/mmtk-core/pull/838 +* Rename ambiguous `scan_thread_root{,s}` functions by @k-sareen in https://github.com/mmtk/mmtk-core/pull/846 +* Update comments on bind_mutator by @qinsoon in https://github.com/mmtk/mmtk-core/pull/854 +* Counting VM-allocated pages into heap size. by @wks in https://github.com/mmtk/mmtk-core/pull/866 +* Expose Allocators type to public API by @playXE in https://github.com/mmtk/mmtk-core/pull/880 +* Collect live bytes during GC by @qinsoon in https://github.com/mmtk/mmtk-core/pull/768 +* Tidy up mutator scan API by @qinsoon in https://github.com/mmtk/mmtk-core/pull/875 +* Implement transparent hugepage support by @caizixian in https://github.com/mmtk/mmtk-core/pull/905 +* Implement AllocatorInfo by @playXE in https://github.com/mmtk/mmtk-core/pull/889 +* Add comma as an alternative options string separator by @wenyuzhao in https://github.com/mmtk/mmtk-core/pull/909 + +## New Contributors +* @ArberSephirotheca made their first contribution in https://github.com/mmtk/mmtk-core/pull/814 +* @fepicture made their first contribution in https://github.com/mmtk/mmtk-core/pull/838 +* @ClSlaid made their first contribution in https://github.com/mmtk/mmtk-core/pull/843 +* @playXE made their first contribution in https://github.com/mmtk/mmtk-core/pull/880 + +**Full Changelog**: https://github.com/mmtk/mmtk-core/compare/v0.18.0...v0.19.0 + 0.18.0 (2023-04-03) === diff --git a/Cargo.toml b/Cargo.toml index e15546021c..4abf95ebcf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mmtk" -version = "0.18.0" +version = "0.19.0" authors = ["The MMTk Developers <>"] edition = "2021" license = "MIT OR Apache-2.0" @@ -10,7 +10,7 @@ repository = "https://github.com/mmtk/mmtk-core" readme = "README.md" categories = ["memory-management"] keywords = ["gc", "garbage", "collection", "garbage-collection", "allocation"] -rust-version = "1.61.0" +rust-version = "1.66.0" build = "build.rs" [lib] @@ -28,9 +28,7 @@ delegate = "0.9.0" downcast-rs = "1.1.1" enum-map = "2.4.2" env_logger = "0.10.0" -# We do not use this crate, but env_logger uses it. env_logger uses is_terminal 0.4.0. However, since 0.4.8, is_terminal requires Rust 1.63. -# So we fix on 0.4.7 here. Once we bump our MSRV, we can remove this. -is-terminal = "=0.4.7" +is-terminal = "0.4.7" itertools = "0.10.5" jemalloc-sys = { version = "0.5.3", features = ["disable_initial_exec_tls"], optional = true } lazy_static = "1.1" @@ -39,19 +37,17 @@ log = { version = "0.4", features = ["max_level_trace", "release_max_level_off"] memoffset = "0.9" mimalloc-sys = { version = "0.1.6", optional = true } # MMTk macros -mmtk-macros = { version = "0.18.0", path = "macros/" } +mmtk-macros = { version = "0.19.0", path = "macros/" } num_cpus = "1.8" num-traits = "0.2" pfm = { version = "0.1.0-beta.3", optional = true } -# Pin to <0.4.0 until we have MSRV >= 1.66, then we can bump to 0.5 (0.4 forces lazy evaluation https://github.com/cuviper/probe-rs/issues/19) -probe = "0.3" +probe = "0.5" regex = "1.7.0" spin = "0.9.5" static_assertions = "1.1.0" strum = "0.24" strum_macros = "0.24" -# Fix on 0.29.5 so we have MSRV 1.61. Remove this when we update MSRV -sysinfo = "=0.29.5" +sysinfo = "0.29" [dev-dependencies] paste = "1.0.8" diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 76b7cc57d6..0600ded07d 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mmtk-macros" # the macro crate uses the same version as mmtk-core -version = "0.18.0" +version = "0.19.0" edition = "2021" license = "MIT OR Apache-2.0" description = "MMTk macros provides procedural macros used by mmtk-core." diff --git a/rust-toolchain b/rust-toolchain index 0403bed10c..68bc7ff2a8 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.66.1 +1.71.1 diff --git a/src/util/alloc/allocators.rs b/src/util/alloc/allocators.rs index a1bade505b..2c47ff1675 100644 --- a/src/util/alloc/allocators.rs +++ b/src/util/alloc/allocators.rs @@ -163,7 +163,7 @@ impl Allocators { // LargeObject, // } #[repr(C, u8)] -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Default)] pub enum AllocatorSelector { BumpPointer(u8), LargeObject(u8), @@ -171,32 +171,22 @@ pub enum AllocatorSelector { Immix(u8), MarkCompact(u8), FreeList(u8), + #[default] None, } -impl Default for AllocatorSelector { - fn default() -> Self { - AllocatorSelector::None - } -} - /// This type describes allocator information. It is used to /// generate fast paths for the GC. All offset fields are relative to [`Mutator`](crate::Mutator). #[repr(C, u8)] -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Default)] pub enum AllocatorInfo { BumpPointer { bump_pointer_offset: usize }, // FIXME: Add free-list fast-path Unimplemented, + #[default] None, } -impl Default for AllocatorInfo { - fn default() -> Self { - AllocatorInfo::None - } -} - impl AllocatorInfo { /// Return an AllocatorInfo for the given allocator selector. This method is provided /// so that VM compilers may generate allocator fast-path and load fields for the fast-path. diff --git a/src/util/copy/mod.rs b/src/util/copy/mod.rs index cf1a3ad45d..255fc47469 100644 --- a/src/util/copy/mod.rs +++ b/src/util/copy/mod.rs @@ -253,16 +253,11 @@ impl CopySemantics { } #[repr(C, u8)] -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, Default)] pub enum CopySelector { CopySpace(u8), Immix(u8), ImmixHybrid(u8), + #[default] Unused, } - -impl std::default::Default for CopySelector { - fn default() -> Self { - CopySelector::Unused - } -}