From b8ea361b19ba54bcd13fc1ab2682aa7b0d0ba660 Mon Sep 17 00:00:00 2001 From: Alex Miller Date: Sat, 21 Oct 2023 13:59:38 -0500 Subject: [PATCH] 1.12.0-alpha5 release --- content/news/2023/10/20/clojure-1-12-alpha5.doc | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 content/news/2023/10/20/clojure-1-12-alpha5.doc diff --git a/content/news/2023/10/20/clojure-1-12-alpha5.doc b/content/news/2023/10/20/clojure-1-12-alpha5.doc new file mode 100644 index 00000000..593a46ff --- /dev/null +++ b/content/news/2023/10/20/clojure-1-12-alpha5.doc @@ -0,0 +1,13 @@ += Clojure 1.12.0-alpha5 +Alex Miller +2023-10-20 +:jbake-type: post + +Clojure 1.12.0-alpha5 is now available and we encourage you to try it and give us your feedback! + +== Avoid user code with I/O under synchronized blocks + +Java 21 LTS introduced virtual threads (aka Project Loom). Virtual threads may be paused and resumed and cooperate with many blocking operations in the JDK - I/O, ReentrantLock, etc. However, Java 21 does not allow pausing of synchronization on object monitors (synchronized) and will thus "pin" the virtual thread to a carrier thread if blocking while synchronized. + +This release modifies `lazy-seq` and `delay` to use ReentrantLock instead of synchronized to avoid this issue. +