[ANN] Clojure 1.8.0-alpha5

Skip to first unread message

Alex Miller

Sep 11, 2015, 9:41:34 AM9/11/15
to Clojure
Clojure 1.8.0-alpha5 is now available.

Try it via
The 1.8.0-alpha5 release reverts the change made for CLJ-1250 in 1.8.0-alpha3 due to issues covered in CLJ-1793

String Functions

Several new string functions were added to increase portability with ClojureScript and reduce the need for Java interop calls:

  • clojure.string/index-of - search for the index of a char or string in a string
  • clojure.string/last-index-of - search for the index of a char or string backwards in a string
  • clojure.string/starts-with? - true if string starts with a substring
  • clojure.string/ends-with? - true if string ends with a substring
  • clojure.string/includes? - true if string includes a substring
For more info:
Server Socket and REPL 

This feature is a work in progress, and feedback is appreciated!

The Clojure runtime now has the ability to start a socket server at initialization based on system properties. One expected use for this is serving a socket-based REPL, but it also has many other  potential uses for dynamically adding server capability to existing programs without code changes.

A socket server will be started for each JVM system property like "clojure.server.<server-name>". The value for this property is an edn map representing the configuration of the socket server with the following properties:
  • server-daemon - defaults to true, socket server thread doesn't block exit
  • address - host or address, defaults to loopback
  • port - positive integer, required
  • accept - namespaced symbol of function to invoke on socket accept, required
  • args - sequential collection of args to pass to accept
  • bind-err - defaults to true, binds `*err*` to socket out stream
  • client-daemon - defaults to true, socket client thread doesn't block exit
Additionally, there is a repl function provided that is slightly customized for use with the socket server in clojure.core.server/repl.

Following is an example of starting a socket server with a repl listener. This can be added to any existing Clojure program to allow it to accept external REPL clients via a local connection to port 5555.

    -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"

An example client you can use to connect to this socket repl is telnet:

    $ telnet 5555
    Connected to localhost.
    Escape character is '^]'.
    user=> (println "hello")

* CLJ-1671
* Socket REPL design page

Other changes

Below is a list of the other changes included in alpha5. See the full change log here: https://github.com/clojure/clojure/blob/master/changes.md.

  • CLJ-1319 array-map fails lazily if passed an odd number of arguments
  • CLJ-1766 Serializing+deserializing lists breaks their hash
  • CLJ-1609 Edge case in Reflector's search for a public method declaration
  • CLJ-1586 Compiler doesn't preserve metadata for LazySeq literals
  • CLJ-1232 Functions with non-qualified return type hints will now work without import from other namespace
  • Records and types without fields eval to empty map
  • CLJ-1812 Recently-added test fails on Windows
  • CLJ-1778 let-bound namespace-qualified bindings should throw (if not map destructuring)

Tom Marble

Sep 15, 2015, 11:19:01 AM9/15/15
to Clojure
On Friday, September 11, 2015 at 8:41:34 AM UTC-5, Alex Miller wrote:
Clojure 1.8.0-alpha5 is now available.
 I am pleased to report that this version of Clojure builds fine with the early access version of JDK 9 (w/jigsaw):

tmarble@ficelle 141 :) mvn -version
Apache Maven 3.3.3
Maven home: /usr/share/maven
Java version: 1.9.0-ea, vendor: Oracle Corporation
Java home: /home/tmarble/src/oracle/jdk1.9.0
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.1.0-2-amd64", arch: "amd64", family: "unix"
tmarble@ficelle 142 :) time mvn package > build-14.log 2>&1 &
[1] 7124
tmarble@ficelle 143 :) tail -7 build-14.log
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:49 min
[INFO] Finished at: 2015-09-15T10:09:43-05:00
[INFO] Final Memory: 17M/128M
[INFO] ------------------------------------------------------------------------
tmarble@ficelle 144 :)



Alex Miller

Sep 15, 2015, 11:58:20 AM9/15/15
to clo...@googlegroups.com
Glad to hear it! 

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
For more options, visit this group at
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/xZ2YpiKg2FU/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.

Reply all
Reply to author
0 new messages