ClojureScript 1.12.116 Release Notes
Table of Contents
1. Release Summary
| Field | Value |
|---|---|
| Version | 1.12.116 |
| Date | 2025-11-24 |
| ES Target | ES2016 (was ES3) |
| Contributors | Borkent, Gearon, Liutikov |
2. Key Features
2.1. ECMAScript 2016 Target
ClojureScript transitions from ES3 (1999) to ES2016. Major JS VMs now offer great performance across the spec, enabling Proxy, Reflect, and modern iteration protocols.
Brain teaser angle: Code that relied on ES3 polyfill behavior may break or behave differently under ES2016 semantics.
2.2. cljs.proxy Namespace (Experimental)
New namespace uses ES2016 Proxy to bridge ClojureScript maps and vectors
to JavaScript objects and array-likes, reducing clj->js marshalling:
(require '[cljs.proxy :refer [builder]]) (def proxy (builder)) (def proxied-map (proxy {:foo 1 :bar 2}))
Brain teaser angle: Proxied maps look like JS objects to JS code but are still persistent ClojureScript maps underneath. Mutations on the JS side don't propagate.
2.3. Clojure 1.12 Method Values
Supports method value syntax with ES2016 Reflect eliminating manual
:param-tags requirements:
(refer-global :only '[String]) (map String/.toUpperCase ["foo" "bar" "baz"]) ;; => ("FOO" "BAR" "BAZ")
2.4. refer-global / require-global
:refer-globaldeclares global definitions available withoutjs/prefix:require-globalenables using JS libraries via script tags without build configuration
2.5. Lite Mode (Experimental)
Two compiler flags for smaller artifacts:
:lite-mode– simpler 2011-era data structures, ~2/3 size reduction:elide-to-string– removestoStringimplementations for tree-shaking
Example: a functional composition program compiles to 6K Brotli compressed.
Brain teaser angle: Lite mode data structures may have different
performance characteristics and missing protocol implementations
compared to full ClojureScript. (= (type []) cljs.core/PersistentVector)
could return false in lite mode.
3. Dependencies
- Google Closure Compiler updated to v20250820
4. Teaser Candidates from This Release
| # | Title | Strength |
|---|---|---|
| 1 | Proxy map mutation transparency | Medium |
| 2 | refer-global shadowing (see T9) | Niche |
| 3 | Lite mode type identity | Medium |
| 4 | Method values + variadic functions | Medium |
These are documented but not yet implemented. See async-brain-teasers.org for the 1.12.145 candidates that are implemented.
