clr

dangercoder 2025-09-01T13:00:37.689579Z

Is it now possible to create a truly standalone executable from Clojure CLR code that can be run with just dotnet my-app.dll?

dangercoder 2025-09-01T13:05:56.501929Z

I made some tries yesterday and it seems like the DLLs that are produced from Clojure.Compile still need source files ~

dangercoder 2025-09-01T13:13:23.093959Z

(They're not "Uberjars" in the jvm sense)

dmiller 2025-09-01T15:39:08.712659Z

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.

dmiller 2025-09-01T15:48:18.881089Z

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?

dmiller 2025-09-01T15:45:11.967499Z

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?

👀 1
dmiller 2025-09-09T19:38:10.992079Z

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.