Fork me on GitHub
Alex Miller (Clojure team)00:03:32

Usually it take about 5-10 minutes

Alex Miller (Clojure team)00:03:16

Sometimes it’s available for download before it shows up in the web apis - I think some of that is updated in batch


The JAR is showing up now. Right on time 11 hours later. 🙂

Alex Miller (Clojure team)01:03:05

where are you looking for it?

Alex Miller (Clojure team)01:03:36

I release Maven jars almost every week for something or other and I almost never see a lag like that


Downloading: org/clojure/clojurescript/1.10.238/clojurescript-1.10.238.pom from 


The timestamp in their web UI looks like reflects an older stamp of when the JAR was actually created

1.10.238/                                         2018-03-25 14:09         -  


But that directory wasn't there earlier today (say, several hours after David triggered the build, and I went fishing in there.)


pulled 238!🍻

Alex Miller (Clojure team)01:03:46

which web ui are you looking at?

Alex Miller (Clojure team)01:03:01

those are updated in batch so often don’t reflect the availability of the jar

Alex Miller (Clojure team)01:03:42

typically I see stuff show up in there after about 10 minutes, but often the jar is available before that even. If you’re using mvn or lein to check you also need to use -U to force it to re-update


I’m using clj and that is coming from /usr/local/Cellar/clojure/


for the ws repl implementation, I tried storing all the outs and response state in browser-state and server-state atoms within the IJavasScriptEnv object, but it ended up not making sense. The bindings need to be globally referenced.

Alex Miller (Clojure team)01:03:22

clj actually doesn’t have an equivalent of the -U so you have to wait for the maven cache to time out, so in this case, clj may be hurting your ability to see latest


Ahh, OK. That would make sense.


Maybe the default is around half a day


But. I swear the file wasn’t showing up in their web UI


@john are you also useing clj to pull?


at 7:20 EST it wasn't pulling for me


via the mvn version coord

Alex Miller (Clojure team)01:03:39

actually, now I’m not sure what clj does or what controls that in the api… looking

Alex Miller (Clojure team)01:03:37

the default policy is “daily” and I see where it can be set, might be a good thing to expose in clj

Alex Miller (Clojure team)01:03:56

it’s also settable on a per-repo basis


FWIW, I also blew away my .m2 directory entirely several times today (because I would build 1.10.238 locally, but want to clear it all out again to see if it was available from maven)


Presumably that would clear out any way for it to know when the last attempt was, right? Or does that state get stored outside of ~/.m2?


yes, deleting something from .m2 is enough far as I know


I also think last time this happened that I also tried lein, but I’m not completely sure. I want to say that Maven doing slow batched updates is a likely explanation.

Alex Miller (Clojure team)01:03:34

lein and maven will definitely not re-update a failed download without -U - they use the default daily policy otherwise


The strongest piece of evidence is that the web UI wasn’t showing the JAR.

Alex Miller (Clojure team)02:03:26

yeah, the state is stored in the .m2 meta files so blowing that away does mean it’s external

Alex Miller (Clojure team)02:03:50

sometimes maven central does get backed up, so that is possible, just been a while since I saw that

Garrett Hopper02:03:41

I'm curious; what is the rationale behind routing patches through Jira instead of pull requests? Is it just a case of tracking code changes with Jira tickets?


@ghopper it’s just how Clojure development is currently done

Garrett Hopper02:03:43

@dnolen That's cool. I'm just curious what kind of benefits it has.


I will say though after seeing how Closure Compiler works - the advantages of seeing CA and CI when people submit something really seems like a better process


@ghopper 7 years ago GitHub wasn’t that fancy?

Garrett Hopper02:03:42

CI/CD? I'm not familiar with CA.


Also GH used to have serious moderation issues


CA = Contributor Agreement

Garrett Hopper02:03:07

That makes sense. Just a holdover from the past I guess?

Garrett Hopper02:03:10

:thumbsup: Thanks

Garrett Hopper02:03:47

Heh, I hadn't actually read the CA until now. I guess that's just one of those BDFL things I haven't run into before. 😛


@mfikes feel free to publish those posts


OK, will merge the main and the command line one, but not the AOT news post


I’ll do the mailing list announce and point to that once it’s up


The posts are showing up now


@dnolen If you'd like me to work on a fix I have some free time now


^ is now fixed and is showing the browser image


That was a pretty smooth launch—it is nice that we had everything prepared and just had to make it so.


Is canary working? * Errored task chromex * clojure.lang.ExceptionInfo: Travis build request was rejected. Your travis account might be banned. * {"message" "Abuse detected",


One of Metosin libs broke due to MapEntry changes so I'll look adding it to canary at some point


@juhoteperi yes, my travis account was blocked, but @mfikes’s travis builds should still run, I’m going to investigate why they appear as “disabled” on the overview


it is probably a bug I introduced yesterday


@juhoteperi fixed:, next run should properly report everything except my libs, in other words nothing should stop you adding your lib and trying it 🙂


ok, canary should be fully working by now, my travis account just got unbanned - btw. the ban wasn’t related to canary. turned out I did a pull request into a bitcoin-related project and that triggered a ban from their bitcoin mining abuse prevention subsystem, it was a false-positive @mfikes @juhoteperi

Alex Miller (Clojure team)15:03:41

@dnolen fyi, I am getting close on the windows clj. I actually had my first successful run with it yesterday. Still a lot of cleanup and testing.

🎉 36

@mfikes re you were quicker 😉 but I think the error message could be much better


considering you get a hint in clojure:


$ clj
Clojure 1.9.0
user=> (require 'foo-bar)
FileNotFoundException Could not locate foo_bar__init.class or foo_bar.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.  clojure.lang.RT.load (
user=> (require 'foobar)
FileNotFoundException Could not locate foobar__init.class or foobar.clj on classpath.  clojure.lang.RT.load (


Seems like we could port that logic to ClojureScript. I'd file an enhancement JIRA.


will do later


I apologize to contributors missed in the first version of the news this morning. This has hopefully been corrected now. If your name is missing, please let me know.


@mfikes I fixed up the transit-cljs issues that seemed problematic to me - let me know if you see anything else around Transit that seems critical if you have time


@dnolen I think the ability to write the 3 kinds of map entries might be useful if not yet addressed, so that transit-cljs has parity with transit-clj (perhaps it writes them as 2-element vectors, but I can't recall) (


More insight into ^ is in the duplicate ticket I wrote


@mfikes I think need a issue with complete description it’s too hard to piece together right now


Also are red black nodes always terminal?


So does that even make sense?


OK. In 42 it shows examples of what fails. But to be honest, it is not clear if transit-clj just succeeds by accident


Definitely, I agree it doesn't seem like a trivial thing to just throw in without understanding fully


I'll see if I can solidify the transit-clj behavior (try to suss out if it works only by accident, for example)


Based on an interesting comment in #clojure about [1 2] not wasting 30 slots of memory, does ClojureScript?

(count (.-tail [1 2]))  ;=> 2
(count (.-arr (.-root [1 2])))  ;=> 32


Is that ^ the same as the immutable (shared) EMPTY_NODE in Clojure? Hrm.


Yeah, I'm guessing it is (.-EMPTY_NODE cljs.core/PersistentVector). I need to read some more of that code. 🙂