This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-03-04
Channels
- # aleph (8)
- # aws (14)
- # babashka (37)
- # beginners (30)
- # calva (5)
- # cider (4)
- # clj-kondo (21)
- # cljsrn (4)
- # clojure (234)
- # clojure-denmark (1)
- # clojure-europe (10)
- # clojure-france (10)
- # clojure-italy (4)
- # clojure-nl (17)
- # clojure-sanfrancisco (1)
- # clojure-spec (8)
- # clojure-uk (44)
- # clojurescript (20)
- # cursive (9)
- # datascript (2)
- # datomic (5)
- # emacs (9)
- # fulcro (50)
- # graalvm (32)
- # jackdaw (18)
- # leiningen (1)
- # malli (10)
- # meander (10)
- # nrepl (10)
- # off-topic (15)
- # pathom (20)
- # re-frame (14)
- # reagent (37)
- # reitit (7)
- # ring (1)
- # shadow-cljs (102)
- # test-check (6)
- # tree-sitter (15)
- # vim (4)
- # xtdb (2)
- # yada (1)
> MethodHandles are currently not supported in native-image. This has been documented in https://github.com/oracle/graal/blob/master/substratevm/LIMITATIONS.md#invokedynamic-bytecode-and-method-handles. We are however looking to address this issue in the future From https://github.com/oracle/graal/issues/2214
@borkdude it can't see through the isJava8() predicate and determine which MH is chosen in Reflector.java
I'm no longer convinced that code in Reflector is accurate enough. There are some warnings it fails to catch.
public class in the module system is only public if its package is exported by the module
scenario: public class Impl in a non-exported package, with a method foo() that it implements from public exported interface IFoo
if the Reflector selects Impl.foo() it is wrong, it needs to walk up the class hierarchy to find the IFoo.foo() method
which is more correct IMHO, but they also dynamically load the class containing that method
For sci I've made a slight variation of clojure.lang.Reflector packaged as a library (for internal use). I've made two releases of this library: one for jdk8 and one for jdk11 so they can both work with GraalVM. That could be one approach of dealing with JVM-specific things.
there's a long history of issues they wrestled with https://issues.apache.org/jira/browse/GROOVY-9103 https://issues.apache.org/jira/browse/GROOVY-9081 https://issues.apache.org/jira/browse/GROOVY-8339
if i were to make something up, I'd guess that they do Java8 baseline and don't depend on anything above that