[ANN] Clojure 1.10.1-beta1

574 views
Skip to first unread message

Alex Miller

unread,
Mar 22, 2019, 12:35:32 AM3/22/19
to Clojure

1.10.1-beta1 is now available. You can try it with clj using:

      clj -Sdeps '{:deps {org.clojure/clojure {:mvn/version "1.10.1-beta1"}}}'


1.10.1-beta1 includes the following changes since 1.10.0:

  • CLJ-2484 - Fix Java performance regression loading user.clj
  • CLJ-2463 - clojure.main uncaught exception handling
  • CLJ-2491 - Fix fragile tests that fail under Java 12
The issue in CLJ-2484 was introduced in Java itself, specifically Java 1.8 u202, Java 11.0.2, and Java 12. It primarily affects loading of user.clj and can cause a significant load time difference for anything done in user.clj. CLJ-2463 affects how errors are reported from clojure.main. This includes many Clojure uses under tools like Leiningen, such as compile, test,  etc.  

We would greatly appreciate feedback if you could check out this release in your own project and give it a try!! 

David Neu

unread,
Mar 23, 2019, 7:21:59 PM3/23/19
to Clojure
Hi Alex,

I had been getting 

Error: Could not find or load main class clojure.main
Caused by: java.lang.ClassNotFoundException: clojure.main

when starting a socket repl with a custom repl function, e.g.

 :aliases
 {:socket {:jvm-opts ["-Dclojure.server.repl={:port,5555,:accept,somelib.repl/socket-repl}"]}}

This RC eliminates that issue.   Many, many thanks!

Cheers,
Dave

Alex Miller

unread,
Mar 23, 2019, 7:26:05 PM3/23/19
to clo...@googlegroups.com
That sounds like a different problem, don’t think Clojure 1.10.1-beta1 would affect anything there.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to a topic in the Google Groups "Clojure" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/clojure/0YFGUdzCZ5U/unsubscribe.
To unsubscribe from this group and all its topics, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rick Moynihan

unread,
Mar 26, 2019, 1:29:34 PM3/26/19
to Clojure
Hi Alex,

A small data point but I've tried clojure 1.10.1-beta1 with a 13kloc clojure app we have with a lot of clj dependencies and I haven't seen any issues with it.  I also tried it against a few smaller library deps and didn't see any issues.

R.

You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.

Sean Corfield

unread,
Mar 26, 2019, 1:53:21 PM3/26/19
to Clojure
Everything seems to be running fine on 1.10.1-beta1 here at World Singles Networks. We were not experiencing the user.clj loading problem so I can't speak to how it addresses that, nor are we looking at Java 12 yet :) 

The only piece of feedback I'll offer here -- and Alex already knows because I raised it on Zulip but want a broader audience as a sanity check:

The new clojure.main error handling definitely works well but on macOS the temporary folder path -- where the EDN report of the stack trace etc gets written -- is very long so the "Full report at:" line wraps, making it a bit fiddle to copy'n'paste the file path. It would be easier if the file path was on a separate line, by adding a newline after "at:", so selection of the file path is easier.

That might also make it easier for tooling that invokes Clojure apps via the command-line (instead of having to parse the file path out of a line that has other text in it).

Alan Thompson

unread,
Mar 26, 2019, 2:10:21 PM3/26/19
to clojure
Working fine for the Tupelo library:  https://github.com/cloojure/tupelo

-------------------------------------
   Clojure 1.10.1-beta1    Java 12
-------------------------------------
Ran 312 tests containing 2874 assertions.
0 failures, 0 errors.
lein test :all   61.60s user  1.22s system  299% cpu  20.996 total

Also for ClojureScript:

;; ======================================================================
;; Testing with Phantom:

doorunner - beginning
doorunner - end

Testing tst._bootstrap
----------------------------
   ClojureScript 1.10.439
----------------------------
Ran 145 tests containing 1698 assertions.
0 failures, 0 errors.
lein doo phantom test once  63.31s user 1.40s system 280% cpu 23.069 total




--

Rakhim Davletkaliyev

unread,
Mar 31, 2019, 11:05:17 AM3/31/19
to Clojure
Hi Alex,

With this beta + ClojureScript (v. 1.10.238), when trying to "refer all", like so:

(:require trybeta.something :refer :all)

I get the following error:

clojure.lang.ExceptionInfo: Only [lib.ns & options] and lib.ns specs supported in :require / :require-macros; offending spec: :refer at line 1 <cljs repl> {:file "<cljs repl>", :line 1, :column 1, :root-source-info {:source-type :fragment, :source-form (ns trybeta.core (:require trybeta.something :refer :all))}, :tag :cljs/analysis-error}

This is much better than "Don't know how to create ISeq from: clojure.lang.Keyword" error present in previous versions!

While I completely agree that "require all" is bad style and should not be used, I think the error message could be a bit more specific still, considering "refer all" is quite widespread in tutorials/examples, and beginners like myself tend to try to use it when transitioning from Clojure to ClojureScript.

Maybe, isolate and display the offending part?

I apologize if this suggestion is irrelevant, as I am out of my depth when it comes to core Clojure and spec.

Thank you!

Orestis Markou

unread,
Mar 31, 2019, 11:50:52 AM3/31/19
to clo...@googlegroups.com
I think the issue you are seeing is because you need to wrap the require form in a vector:

(:require [trybeta.foo :refer :all])

Thanks,
Orestis
--

Rakhim Davletkaliyev

unread,
Mar 31, 2019, 1:00:49 PM3/31/19
to Clojure
D'oh! Sorry, I messed up. With the correct vector present I'm getting this then:

Don't know how to create ISeq from: clojure.lang.Keyword

Seems like you can optionally enable spec so that you'd get:

:all - failed: coll?

which is better, at least pointing in the general direction of the problem.

For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clo...@googlegroups.com.

Ben Brinckerhoff

unread,
Mar 31, 2019, 9:58:30 PM3/31/19
to Clojure
I see that this handler uses `ex-str`, which is nice because `ex-str` in turn calls `*explain-out*` which is user-configurable. 

Is there a recommended way to configure `s/*explain-out*` such that this configuration will be run before other namespaces are loaded?

For instance, this code would set up Expound, but right now I'm not sure how to reliably run it before other namespaces load:

(require '[expound.alpha :as expound] '[clojure.spec.alpha :as s])
(alter-var-root #'s/*explain-out* (constantly (expound/custom-printer {:print-specs? false :show-valid-values? true :theme :figwheel-theme})))

Thanks,
Ben

Alex Miller

unread,
Mar 31, 2019, 10:10:39 PM3/31/19
to Clojure
You could put it in user.clj, but it would be reasonable to have a ticket for this.
Reply all
Reply to author
Forward
0 new messages