Clojure/Closure: I mean, seriously... Common. And it's somehow an accident: Clojure predates ClojureScript and Google Closure was not used by Clojure.
It's both weird and cool and highly confusing.
21–30 of 45 posts
Clojure/Closure: I mean, seriously... Common. And it's somehow an accident: Clojure predates ClojureScript and Google Closure was not used by Clojure.
It's both weird and cool and highly confusing.
One of my favorite things about the JVM ecosystem is how stable it is. A 5-year-old library will almost certainly Just Work. And Clojure very much follows the same spirit. There's a lot of great, useful libraries that haven't been updated in years... not because they've been abandoned but because they're _done_ and just don't require active maintenance. Immutability as a cultural value, not just a data structure.
I run a solo-founder business and this approach means that I don't get the cost of constant churn that many other ecosystems suffer from. This is a really important factor.
While the level of commitment to backwards compatibility is commendable, I had hoped this would trigger dropping GCL instead of forking it. My surface level understanding is that GCL is a big reason why 3rd party libraries are a huge pain to use in Clojurescript. Of course this would have went completely against the project’s goals, so it was never going to happen.
This isn't true.
What you might have heard is that the Google Closure Compiler with :advanced optimizations makes external libraries harder to use. This also isn't true if you use good tooling (shadow-cljs makes using npm libraries transparent and totally painless).
It is worth observing that :advanced optimizations result in a significant speed increase, but are considered too difficult to use in the JavaScript world. ClojureScript was designed from the start to be compiled in :advanced mode, so you get the benefits of an impressive whole-program optimizing compiler for free.
While the level of commitment to backwards compatibility is commendable, I had hoped this would trigger dropping GCL instead of forking it. My surface level understanding is that GCL is a big reason why 3rd party libraries are a huge pain to use in Clojurescript. Of course this would have went completely against the project’s goals, so it was never going to happen.
> My surface level understanding is that GCL is a big reason why 3rd party libraries are a huge pain to use in Clojurescript. This isn't true. What you might have heard is that the Google Closure Compiler with :advanced optimizations makes external libraries harder to use. This also isn't true if you use good tooling (shadow-cljs makes using npm libraries transparent and totally painless). It is worth observing that…
Earlier quoted context omitted.
From the outside (I haven't tried it), committing to ClojureScript for an application looks very similar to committing to a framework - it's a heavy influence in how you will write code.
I'm curious as to how you think this is different from say, committing to JavaScript/BundlerX/NPM or TypeScript/BundlerX/NPM? Surely those have an equally heavy influence on how you write code?
> We are working on restoring that original stability. With this release, you’ll find that quite a few old ClojureScript libraries work again today as well as they did 14 years ago. > ClojureScript is and never was only just for rich web applications. Even in the post React-world, a large portion of the web is (sensibly) still using jQuery. If you need robust DOM manipulation, internationalization, date/time handling…
On side projects, I don't see the issue with keeping using jQuery for as little JavaScript as possible, especially since it is still much more ergonomic to use than the browser APIs that got added later.
Earlier quoted context omitted.
From the outside (I haven't tried it), committing to ClojureScript for an application looks very similar to committing to a framework - it's a heavy influence in how you will write code.
I'm curious as to how you think this is different from say, committing to JavaScript/BundlerX/NPM or TypeScript/BundlerX/NPM? Surely those have an equally heavy influence on how you write code?
One of my favorite things about the JVM ecosystem is how stable it is. A 5-year-old library will almost certainly Just Work. And Clojure very much follows the same spirit. There's a lot of great, useful libraries that haven't been updated in years... not because they've been abandoned but because they're _done_ and just don't require active maintenance. Immutability as a cultural value, not just a data structure.
The core design goal is how to add value type semantics, including existing classes like Optional, while not breaking existing libraries, those JARs should work as much as possible on values aware JVM.
This is how do we add Perl 6 like features to Perl 5, without requiring people to migrate to Roku, as example.