From 1b2248b3d0e219fedbe854f96f570c9ec81564b5 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 30 Jan 2020 09:52:31 -0500 Subject: [PATCH] WIP release notes for 0.14 --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 271caee3..7bab0374 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## 0.14 - TBD +This release is focused on improving multi-threaded support for the garbage collector. + +In particular, we have fixed a long-standing issue where a mutation (via `set-car!`, `vector-set!`, `set!`, etc) could allow a heap object to reference an object on a thread's local stack. This is problematic because another thread could then try to use the object after the original thread has relocated it to the heap. + +NOTES: +The interesting case is in particular when you write to a global mutable object, adding a reference to a local object. +> Given two mutator threads M1 and M2, assume that M1 creates an object X on its stack and that M2 receives a reference to X (through some global object). Now my question is: How do you handle this in the minor garbage collection of M1? To me, it seems that M2 has to be stopped as well so that the (minor) garbage collector can track all reference to X (which may be in CPU registers of M2). +END NOTES + +Cyclone will now automatically relocate any such stack objects to prevent threading issues where an application thread can access an object on another thread's local stack. This prevent a whole range of possible race conditions that had previously been possible in application code. + ## 0.12 - January 17, 2020 Features