Has anyone been able to successfully generate native image using graalvm for a clojure app that uses postgres? I am using postgres -
[org.postgresql/postgresql "42.2.5"]
On running the agent for native image generation I get this huge list of error. Attaching a file.Perhaps, try this other postgres driver, I'd be curious to know if it compiles with native-client. https://github.com/impossibl/pgjdbc-ng
@mikeb I removed
[org.postgresql/postgresql "42.2.5"]
and added
[com.impossibl.pgjdbc-ng/pgjdbc-ng "0.8.3"]
But I get an exception
Execution error (ClassNotFoundException) at jdk.internal.loader.BuiltinClassLoader/loadClass (BuiltinClassLoader.java:583).
org.postgresql.ds.PGSimpleDataSource
@ashwinbhskr There is an issue in the postgres jdbc repo here: https://github.com/pgjdbc/pgjdbc/issues/1189
I know not entirely related to GraalVM, but the logo for Babashka is funny: it is written ba-bash-ka, and if you remove bash, it yields baka, which sounds like the Japanese word for βstupidβ xD
lol
So, just fyi (following up on the question above on Graalvm, native-image and the clj-http lib), it looks like I do need the bells and whistles of clj-http and clj-http-lite isn't enough. Client SSL certificate authentication seems to be either a bell or whistle. I still have a useful Clojure program that does what I want -- I was just hoping to make this util an easily distributable binary image. I'll try to find another util to try this out on.
Excited to see some activity at https://clojure.atlassian.net/browse/CLJ-1472!
I put it in my Clojure survey comments box, maybe I wasn't the only one π
I totally forgot mentioning GraalVM in the survey. I'll pay more attention next year
darn it i forgot too :(
(def o (Object.))
(def mut (int-array 1))
(defmacro do-parallel [n]
(let [fut-bindings
(for [i (range n)
sym [(symbol (str "fut_" i))
`(future (locking o (aset mut 0 (inc (long (aget mut 0))))))]]
sym)
fut-names (vec (take-nth 2 fut-bindings))]
`(let [~@fut-bindings] ;; start all futures
(doseq [f# ~fut-names] ;; wait for all futures
@f#))))
(time (dotimes [_ 10000] (do-parallel 100)))
;; (println (aget mut 0)) ;; for checking correctness
(removed f argument and fixed unquote-splice for fut-bindings)does this change anything I care about?
yeah, it was [@fut-bindings]
which wasn't correct
(in the issue)
it should be [~@fut-bindings]
ah, I think this is the jira editor messing with stuff
I had that
ok. yeah, I've had that before. one minor point is that do-parallel
had an f
arg which is now not used anymore, but that's just cosmetic
fixed, thx