Léo NOEL
Léo NOEL
leonoel/missionary#59
why fake ?
At first glance I'd say the benefits of having it outweight the risks. BTW threads give you the same footgun, nothing prevents you to write `(locking x (Thread/sleep Long/MAX_VALUE))`
Actually, the fix doesn't work on latest runtimes, because `Unsafe/monitorEnter` and `Unsafe/monitorExit` have been [ditched](https://bugs.openjdk.java.net/browse/JDK-8054494). We can't rely on JVM opcodes monitorEnter/monitorExit because the JVM [spec](https://docs.oracle.com/javase/specs/jvms/se13/html/jvms-2.html#jvms-2.11.10) allows runtimes to throw...
Very interesting. Definitely the kind of project cloroutine was made for.
Keep in mind we need to support : * clojure compiler targeting clojure * clojure compiler targeting clojurescript * clojurescript compiler targeting clojurescript File extensions and reader conditionals are about...
`setval` emits a `def`, then `cr` wraps it in a `letfn`, and this combination seems to confuse the compiler. I filed an [issue](https://clojure.atlassian.net/browse/CLJS-3166) with a minimal repro.
compiler reflection errors : please file a separate issue with a minimal repro and compiler information. inferred await : I've not ever tried to do that before, but I can...
Your implementation changes the semantics of `async`. In an `async` block, a nested `async` will be immediately `deref`ed, blocking current thread until result is available, so it effectively becomes a...
```clojure @(async (+ (async (Thread/sleep 1000) 1) (async (Thread/sleep 1000) 2))) ``` I would definitely expect this to run in one second.