The incredible stability of Google Closure Library started declining around| clojurescript.org
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. This is primarily a bugfix release. For a complete list of fixes, changes, and enhancements to ClojureScript see here Google Closure Compiler & Java 8 This will probably be the last ClojureScript release to support Java 8 as Google Closure Compiler now requires Java 11. Google Closure Library Maintenance Mode & ClojureScript Google has...| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. Clojure 1.11 parity This release includes support for :as-alias. It adds update-vals and update-keys. It introduces the cljs.math namespace, providing portability for code using clojure.math. iteration,NaN?, parse-long, parse-double, parse-boolean, and parse-uuid have also been added. This release also ports CLJ-2608, which adds suppor...| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. Noteworthy Changes Handle Node.js package.json exports (fixes Firebase 9.X.X usage) Fix regression around requiring goog Fix regression around the Node.js REPL related to goog.module changes Fix Windows platform issues Change List For a complete list of updates in ClojureScript 1.10.914 see here as well as here| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. Noteworthy Changes Closure Compiler has been updated to v20210808 Google Closure has been updated to 0.0-20211011-0726fdeb Google Closure Library, goog.module & global access You should no longer assume that Google Closure Library namespaces can be reached globally because some dependency may have already loaded it. For proper usage of...| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. Noteworthy Changes Closure Compiler has been updated to v20210505 New Core Features and / or Optimization as Compiler Pass ClojureScript generates efficient JavaScript for and / or, employing && / || when applied to Boolean values. Previously these optimizations were implemented directly by the and / or macros. With this release they a...| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully. Noteworthy & Breaking Changes Closure Compiler has been updated to v20210302 Closure Library has been updated to 0.0-20201211-3e6c510d Note that the latest Closure Library release includes breaking changes that may impact your code: goog.debug.Logger.Level has been renamed to goog.Logger.Level and the goog.log.Level/getLogger function ...| ClojureScript News
We’re happy to announce a new release of ClojureScript. If you’re an existing user of ClojureScript please read over the following release notes carefully, there are two very significant changes. First, ClojureScript now ships with greatly enhanced support for integration with popular JavaScript bundling tools such as Webpack and Metro. Second, due to continuing changes to Google Closure Compiler and Library, we’ve decided to drop support for the Rhino and Nashorn REPLs to lower the mai...| ClojureScript News
Embracing JavaScript Tools| clojurescript.org
Noteworthy Changes The behavior of set/union and into is now aligned with Clojure. subvec argument checking is now aligned with Clojure. applyvector on an array now properly clones the array. Google Closure Namespace Analysis The compiler now produces analysis metadata for Google Closure namespaces. This means that for these namespaces: REPL facilities like doc, dir, apropos, etc., will now work. Argument lists are available, thus enabling arity checking. Return types are available, enhancing...| ClojureScript News
Noteworthy Changes Spec instrumentation (cljs.spec.test.alpha/instrument and related functionality) no longer requires test.check. If you use cljs.spec.test.alpha/check, the data generation functionality of test.check is needed; in that case you need to require the clojure.test.check and clojure.test.check.properties namespaces. Keywords used in the cljs.spec.test.alpha/check API pertaining to Spec’s use of test.check are now qualified with clojure.spec.test.check, thus aligning with Clojur...| ClojureScript News
Noteworthy Changes Closure Compiler has been upgraded to v20180805. The :npm-deps compiler option now defaults to false. Previously, :npm-deps defaulted to true. Improved Compiler Performance The compiler is now much faster when compared with the 1.10.339 release for both regular builds and when :parallel-build is set to true. Warnings on Private Var Use ClojureScript will now warn on private var use. Let’s say you have a function intended for private use in a namespace: (ns foo.core) (defn...| ClojureScript News
Improved Externs Inference Externs inference has been significantly improved in this release. See ClojureScript with Webpack for details on what this improved support enables. Closure Upgrades Closure Compiler has been upgraded to v20180610. Additionally, changes have been made so that it is possible to upgrade to the latest Google Closure Library. (The revised code is simultaneously compatible with the latest Closure Library and the version that ClojureScript 1.10.238 depends on.) Optimized ...| ClojureScript News
When you compile ClojureScript code, several artifacts are produced, including JavaScript, analysis metadata, and source maps. These are cached locally, in an output subdirectory (typically “out” or “target”). Since these artifacts are expensive to produce, it is tempting to include them in shipping library JARs. But, the artifacts vary, depending on the compiler version used as well as the build-affecting compiler options in effect (such as :target, :elide-asserts, or :static-fns), s...| ClojureScript News
ClojureScript 1.10 is finally out! Many enhancements have been made, including support for Java 9 and Java 10. Below, we’ll take you through a quick tour of some of the major new features. cljs.main ClojureScript now includes cljs.main, which brings many of the capabilities of clojure.main (and popularized via the new Clojure CLI tools) to ClojureScript, along with special support for the additional considerations and capabilities of the ClojureScript environment, allowing you to compile ...| ClojureScript News
Table of Contents Set up ClojureScriptmacOS or Linux: clj Windows Starting a Browser REPL Creating a Browser App Creating a Node App Running Tests in Nashorn Other Affordances ClojureScript now has an exciting new command line capability called cljs.main which dramatically simplifies using ClojureScript for many common use cases. In this post, we’ll take you through a quick tour of the capabilities being introduced. Set up ClojureScript In order to run these examples, you need to set up Clo...| ClojureScript News
This release contains many bug fixes and addresses feedback from the 1.9.908 release. Important changes include parity with Clojure 1.9.0-beta1 and an updated Google Closure Compiler dependency. The later one in particular now means that ClojureScript has a dependency on JDK 8. For a full list of enhancements, fixes, and changes look here.| ClojureScript News
This release contains many bug fixes and addresses feedback from the 1.9.854 release candidate. Simpler Module Loading Besides several important fixes, a small bit of automatic configuration from the new module loading feature has been removed. Any module that will be loaded via cljs.loader must require it and must invoke cljs.loader/set-loaded! manually as the final statement. All existing documentation and examples from previous posts have been updated. This simplification now means downstr...| ClojureScript News
Integration with the npm ecosystem promises to greatly reduce the friction around Closure-unaware JavaScript dependencies. However, this work is very much in progress and in no way precludes improving existing solutions to the problem of "foreign" dependencies. ClojureScript’s :foreign-libs option has long provided a way to include JavaScript libraries which cannot be expected to pass through Closure advanced compilation. Through community efforts like CLJSJS, ClojureScript developers can r...| ClojureScript News
Rather than delay further, we’ve decided to push out a release candidate containing all of the features we have announced so far and a number of features we simply haven’t had time to cover in depth. To summarize the highlights: Comprehensive Node Modules Support Whether you prefer npm or yarn, ClojureScript can now consume dependencies from node_modules directly. There will be cases that don’t work, but there will be many cases that do. We’re particularly interested in feedback aroun...| ClojureScript News
This is the fourth post in the Sneak Preview series. Closure compiler can process AMD, CommonJS and ES6 modules giving wide support for the Node ecosystem. Even so, there are popular cases which Closure doesn’t support directly, such as React’sJSX. [1] Maria Geller’s Google Summer of Code work also addressed this based on a design outlined by David Nolen and a preprocessing hook has been present since version 1.7.48. However, the original design makes integration with other build tools ...| ClojureScript News
This is the third post in the Sneak Preview series. Much of the history of the ClojureScript compiler can be characterized by the themes of pragmatic expediency, followed by successive refinement. This is nicely illustrated by the history of aget. The first minimum viable implementation of aget was a simple function. Six years ago it looked like this: (defn aget [array i] (js* "return ~{array}[~{i}]")) This employs the internal js* special form to directly emit JavaScript which uses subscript...| ClojureScript News
ClojureScript’s sixth birthday is fast approaching and will land on the second| clojurescript.org
Welcome to the new ClojureScript news area! We’ll have posts available here about important releases, features, and news.| clojurescript.org
ClojureScript is not an Island: Integrating Node Modules| clojurescript.org
Faster Compilation/Runtime and Spec Caching Fixes| clojurescript.org
Enhanced Code Splitting & Loading| clojurescript.org