4 ms·
Idk ... it feels Clojure stalled since Nubank bought Hickeys company. Worst thing: spec is still in alpha !! I put so much on this ... but nothing really happen
by ampunix1337 2y ago
Idk ... it feels Clojure stalled since Nubank bought Hickeys company. Worst thing: spec is still in alpha !! I put so much on this ... but nothing really happened since ... idk 8 years?
- ekzy 2y agoCall it “stalled” if you like, it’s stable and it’s pure joy. I can just get stuff done with Clojure. And things that may seem inactive, like that lib that you need that hasn’t had a commit in 8 years, turns out that it just works and doesn’t need to change. This is commonplace in Clojure. Spec is still alpha and I’m not sure it will evolve more or if it’ll be something completely different. At least they’re not pushing you down the wrong path. Use/look at Malli instead of spec.
- tombert 2y agoThere are things in the core language that are still kind of bullshit. The thing that gives me the most headaches is how annoying it is to use Java libraries that have the lambda syntax. You can't just pass in a Clojure `fn` into a Java lambda function. You have to `reify` the interface and implement the single method. It's annoying and verbose and frustratingly the equivalent code is considerably cleaner in Java as a result. I know that this is a product of how Java implemented lambdas by having interfaces with a single method, and I'm not saying that it would be trivial to add into Clojure, but I don't think it's impossible and I think people have been complaining about this for more than a decade now. So while I love Clojure, it's probably my favorite language, I do get a little annoyed when people act like it's "stable" because there's nothing to fix.
- mattmein 2y agoI think that particular issue was addressed in the recent Clojure release [https://clojure.org/news/2024/09/05/clojure-1-12-0 https://clojure.org/news/2024/09/05/clojure-1-12-0] ("Clojure developers can now invoke Java methods taking functional interfaces by passing functions with matching arity.")
- tombert 2y agoLooks like you're right! I stand corrected, it's admittedly been a few months since I've touched Clojure.
- newlisp 2y agoYou were not wrong though, Java 8 was released in 2014, so it only took them ~10 years ;)
- tombert 2y agoYeah, and most of my professional Clojure experience was from 2018 to 2021, and a few personal projects in 2022 and 2023, and that lack of support for the functional APIs really annoyed me; I was writing a Kafka Streams application, which uses lots of lambdas, and it annoyed me enough to rewrite it with vanilla Java. I'm sure it's a difficult thing to implement, so I'm a little forgiving, but considering that Java interop is one of the biggest selling points for Clojure I do think it's fair to criticize a bad experience with it. I need to play with the newer stuff though; the linked changes seem cool as hell.
- KingMob 2y ago> At least they’re not pushing you down the wrong path No, but the release of spec single-handedly killed Schema, a more mature contract lib. Then spec stagnated, because the core team didn't want to work on it, but as a core team library, nobody else can work on it, either. Thus was born Malli, because people got tired of waiting.
- yogthos 2y agoSpec isn't really essential to Clojure, and most people use Malli nowadays which is very actively developed https://github.com/metosin/malli https://github.com/metosin/malli I see the fact that there isn't much happening with the language as a positive myself. I want the core language to be small and stable. The big difference with Clojure and most languages is that it makes it far easier to implement new semantics in user space. It has a powerful macro system and new ideas can be expressed using libraries instead of having to be baked into the core language itself. Most language grow through accretion as usage patterns change over time. New end up features end up getting bolted on to facilitate that, and the language keeps growing. The problem here is that the scope of things people have to know keeps growing as a result. Meanwhile, Clojure managed to stay small and focused, while different kinds of ideas are expressed using libraries. When a new idea comes along people can just use a new library, and they don't have to learn about all the previous libraries that worked differently. I think this is a huge benefit from user perspective.
- slowmovintarget 2y agoBut have you seen flow? I don't think it's stalled at all, and Nubank seems to have become an enabler to the ecosystem. I mean, Datomic is free to use! [core.async.flow]: https://github.com/clojure/core.async/commit/03b97e0b3e0ec329629bcbf76106658dce4a5d61 https://github.com/clojure/core.async/commit/03b97e0b3e0ec32...
- masijo 2y agoI really don't understand what flow is and what problem it solves. I've read the commit comments and some posts but I still don't get it.
- slowmovintarget 2y agoHere's Rich Hickey's explanation if it helps: https://www.reddit.com/r/Clojure/comments/1i27n1k/rich_introduces_new_namespace_in_coreasync_flow/ https://www.reddit.com/r/Clojure/comments/1i27n1k/rich_intro... His comment walks you through what it's for. The basics: configure your flow of data from producer to queue to consumer and so on as data, in one place.
- 392 2y agoI've poked around three of those links and still not found an accessible good reason. But I am excited to try this, having never used this language before. It rolls into the language a perfect abstraction for deterministically simulating software. See Antithesis's big promises for more. I'm curious to see if this model of flows can be ported to other languages.
- lukev 2y agoI don't know what you're talking about, 2 new versions of Clojure have come out since then, both of which have more substantive changes than the previous couple versions.