Is it now possible to create a truly standalone executable from Clojure CLR code that can be run with just dotnet my-app.dll?
I made some tries yesterday and it seems like the DLLs that are produced from Clojure.Compile still need source files ~
(They're not "Uberjars" in the jvm sense)
Haven't gotten there yet. The general issue of build tooling is one I'm interested in pursuing. I had created a discussion for this - https://github.com/dmiller/clojure-clr-next/discussions/5 I'm thinking this is a focus for the next round of development. For your case, what would be the right notion of a an uberjar in the .NET/ClojureCLR context. I'd love to have some ideas and feedback.
I missed your statement "still need source files".
The output of Clojure.Compile (or the compile function inside of ClojureCLR) is not a standalone. It needs to be loaded into a running ClojureCLR (assembly-load or assembly-load-from, typically), but I don't know wny source files would be required. Can you elaborate on what you are running into?
Looking to the next round of development for ClojureCLR, I'm interested in hearing what needs people have. Two things on my list already: • As just mentioned here - https://clojurians.slack.com/archives/C060SFCPR/p1756741148712659?thread_ts=1756731637.689579&cid=C060SFCPR - I would like to take look at what additional tooling around building projects would be useful. • I would like to simplify the naming of types in the CLR. I had started a discussion a while back. I have just updated that significantly with a concrete proposal. Feedback requested. https://github.com/dmiller/clojure-clr-next/discussions/6 What would you like to see addressed?
Progress is being made:
(ns test.type) ; => nil
(alias-type GenList |System.Collections.Generic.List`1|) ; => System.Collections.Generic.List`1
|GenList[int]| ; => System.Collections.Generic.List`1[[System.Int32, ...]]
|GenList[String]| ; => System.Collections.Generic.List`1[[System.String, ...]]
(alias-type IntList |GenList[int]|) ; => System.Collections.Generic.List`1[[System.Int32, ...]]
(def v (IntList/new)) ; => #'test.type/v (using the new Qualified Method Expression syntax)
(class v) ; => System.Collections.Generic.List`1[[System.Int32, ...]]
(.Add v 7) ; => nil
(.Add v 8) ; => nil
v ; => (7 8)
I have a little work to do yet regarding nested classes and generics. Should have an alpha in the next day or so. Plus an exciting new feature. Stay tuned.