Fork me on GitHub
#tools-deps
<
2020-01-31
>
Alex Miller (Clojure team)04:01:18

tools.deps.alpha 0.8.661 and clj 1.10.1.507 are now available • New: concurrent downloads make things significantly faster when downloading lots of stuff • New: -Sthreads can be used to explicitly set the concurrency level, but you generally shouldn't need it • New: -- can be used in clj as a separator between clj dep args and clojure.main args. For example clj -A:tool -- -A:foo will activate the tool alias, which may specify a main class, then -A:foo will be passed to that program (thanks Dominic Monroe!) • Fix: regression in -Spom not populating <repositories> since tda 0.8.573 • Fix: manifest type lookup on resolved git dep coordinates (probably of interest to almost no one, but affected tools.deps.graph)

🎉 36
parrot 4
seancorfield05:01:35

Nice job! The concurrent downloads is very cool!

seancorfield05:01:08

brew doesn't known about 507 yet it seems... caching?

seancorfield05:01:16

Ah, interesting. It knows about it on macOS but not on Linux yet.

andy.fingerhut05:01:06

Not familiar enough with brew yet, but perhaps brew update will force it to get fresh version info for all packages.

seancorfield05:01:21

brew upgrade clojure causes brew to update all its formulae anyway I think... certainly looked like it did.

seancorfield05:01:57

I suspect the Linux archives lag behind the macOS archives.

seancorfield05:01:43

seanc@DESKTOP-QU2UJ1N:/var/www$ brew update
Already up-to-date.
seanc@DESKTOP-QU2UJ1N:/var/www$ brew upgrade clojure
Updating Homebrew...
Warning: clojure 1.10.1.502 already installed
seanc@DESKTOP-QU2UJ1N:/var/www$
Ubuntu on WSL1 on Windows 10.

andy.fingerhut05:01:33

Probably. I get same result on Linux vs. macOS right now.

vlaaad10:01:10

I haven't really used deps.clj, but I think it's great because it has good windows support — through cmd, not power-shell

vlaaad10:01:23

I wonder how probable it is for clojure/`clj` tools to start using graalvm for cross-platform support

borkdude10:01:41

if cognitects wants to adopt (parts of) deps.clj, it's free and I'm there if they need help

Alex Miller (Clojure team)13:01:33

I'm somewhat interested in exploring graal for the classpath construction phase of clj, however, I do not think it makes sense for the official clojure tool to run something other than the jvm on windows - this is how people start their actual Clojure apps, and Graal is not an officially supported platform for Clojure. clj is possibly a different story for interactive repl use, but even then I don't think it makes sense to be running a non-official Clojure interpreter as the repl.

Alex Miller (Clojure team)13:01:21

fortunately, there's no reason we can't have multiple options!

borkdude14:01:14

@alexmiller I think you're misunderstanding something. deps.clj is only a replacement for the bash part. it's compiled to native using the official clojure and doesn't use a non-official clojure interpreter.

borkdude14:01:34

like the bash script, it invokes a JVM

borkdude14:01:02

there also an option to execute the script (non-binary) with babashka, but you don't have to

Alex Miller (Clojure team)14:01:14

ah, so that is different than what I understood

Alex Miller (Clojure team)14:01:01

I still think it's unlikely Rich would ok using a separate interpreter in this stack, but I could be wrong

borkdude14:01:28

if you're using the natively compiled deps.exe you are *not* using a separate interpreter

borkdude14:01:17

deps.clj can run as native (compiled with GraalVM) *or* as an interpreted script (interpreted by babashka which is itself compiled with GraalVM)

Alex Miller (Clojure team)14:01:33

neither of those are supported Clojure things though

vlaaad14:01:37

Yeah, deps.clj is a native windows binary

vlaaad14:01:00

so deps.exe really

borkdude14:01:42

yeah, that's why I chose the name deps.exe to distinguish from the script deps.clj (which is really just a Clojure source file which you can run on the JVM, or with babashka, it's portable)

borkdude14:01:01

but I get the message and I'm not trying to sell it to you 😉

Alex Miller (Clojure team)14:01:24

gotcha, the Graal path is something that could potentially be added, I guess I didn't realize what you were doing there

vlaaad14:01:50

it's main value over powershell-based runner is that it can run on default windows command line. We explored moving Defold to tools-deps from lein, but other tooling depends on cmd and can't run in pwsh

borkdude14:01:16

the benefit of deps.exe (or deps.clj as source file) is that you don't have to maintain bash and/or PS

Alex Miller (Clojure team)14:01:34

so in the graal case, what exactly is compiled there?

borkdude14:01:35

but otherwise it's exactly the same thing behaviorally

Alex Miller (Clojure team)14:01:07

is it launching a jvm to do the classpath construction like clj?

borkdude14:01:02

@alexmiller clojure, AOT-ed to .class files which are then translated to a native binary by GraalVM. yes, it invokes a JVM: https://github.com/borkdude/deps.clj/blob/e6561ac7997bf1fc0f3ee8406e7af7bc09ca3adb/src/borkdude/deps.clj#L511

Alex Miller (Clojure team)14:01:10

well, that's cool, I didn't realize all that

borkdude14:01:19

@alexmiller to simplify it conceptually, think of it as invoking the .jar file here: https://github.com/borkdude/deps.clj/releases/tag/v0.0.8 but with faster startup

Alex Miller (Clojure team)14:01:51

well, I'll put it in the thinker then

👍 4
Alex Miller (Clojure team)14:01:11

need to spend some time working on clojure instead!

clj 12
Alex Miller (Clojure team)14:01:46

the potentially interesting variant here (much bigger lift) is to combine the deps.clj stuff with the classpath construction and graal all of that (but I'm sure there are a lot more challenges to do that)

vlaaad14:01:02

knowing @borkdude I would expect a release announcement tomorrow 😆

👍 4
borkdude14:01:30

@alexmiller I added some development instructions here now: https://github.com/borkdude/deps.clj#developing-depsclj In case you want to fiddle around 🙂

borkdude14:01:10

yeah, I tried to graal the tools jar as well, but got into some weird stuff which I didn't explore in much detail

borkdude14:01:34

I think it was related to the jgit library, but I only remember vaguely