This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-09-23
Channels
- # babashka (2)
- # babashka-sci-dev (401)
- # beginners (10)
- # biff (6)
- # calva (6)
- # clj-on-windows (6)
- # cljfx (13)
- # clojure (91)
- # clojure-austin (1)
- # clojure-europe (6)
- # clojure-norway (11)
- # clojurescript (14)
- # clr (3)
- # docker (3)
- # emacs (2)
- # fulcro (21)
- # hyperfiddle (2)
- # membrane (30)
- # nbb (4)
- # pedestal (7)
- # polylith (16)
- # reitit (1)
- # sci (4)
- # xtdb (9)
Pretty much everything in ClojureJVM is supported. Interop with the underlying platform has some additional nuances due to things such as generics, value types, by-ref parameters, etc. Hints for those are found on the wiki page: https://github.com/clojure/clojure-clr/wiki And you can always come here for help on the arcane. The only thing of substance not implemented is AOT-compilation. It is supported when running under Framework 4.x, but not in .Net Core 3.1 or .Net 6 or later. However, that is really mostly for speeding up loading (including system startup). On .Net 7, startup without having AOT-compiled the clojure environment is about as fast as Framework 4.x WITH AOT-compilation. I haven't done timings yet, but I expect to see even more speedup on .Net 8.
@U45FQSBF1 Thanks for that quick reply! Regarding performance, what can we expect regarding Clojure CLR's performance versus Clojure on the JVM? Are they more or less similar? Not looking for precise benchmarks here, unless you already have them. :)
I have not done JVM vs CLR comparisons. I know there are a few places where performance is not as good, according to reports, but have not taken the time to dig into it further. Most of the basic data structures are one-to-one code equivalent. If you look at the bytecodes/MSIL generated by the compiler, they are pretty much the same. The biggest opportunity for improvement is probably with value types, and that's going to require a complete reworking of type analysis and code generation. (Which I hope to get back to when I get my current paid consulting gig out of the way.)