<story><title>I rewrote a Clojure tool in Rust</title><url>https://timofreiberg.github.io/clojure-vs-rust/</url></story><parent_chain><item><author>j-pb</author><text>I just moved a medium sized codebase from clojure transducers to JS, and after having used clojure for 7+ years, and done so professionally, I don&amp;#x27;t wanna go back, ever. The JS solution is shorter, faster, and easier to understand.
I&amp;#x27;m thankfull for the insights into reality and programming clojure has provided, but highly optimised clojure is neither idiomatic nor pretty, you end up with eductions everywhere.
Combine that with reaaaallllyy bad debuggability with all those nested inside out transducer calls (the stack traces have also gotten worse over the years, I don&amp;#x27;t know why, and a splintered ecosystem (lein, boot, clj-tools)) I&amp;#x27;d pick rust and deno&amp;#x2F;js any day for a greenfield project over clojure. sadly.</text></item><item><author>chrisulloa</author><text>While I definitely agree Rust is a much faster language than Clojure, I would be interested to see benchmarks on your code that show just how much faster your Rust code was on the same data.&lt;p&gt;I also noticed that you mentioned avoiding lazy sequences is not idiomatic in Clojure. I disagree with this since using transducers is still idiomatic. I wonder if you could&amp;#x27;ve noticed some speed improvements moving your filters&amp;#x2F;maps to transducers. Though I doubt this would get you to Rust speeds anyway, it might just be fast enough.</text></item></parent_chain><comment><author>divs1210</author><text>Yup, it&amp;#x27;s like the leadership is actively hostile towards community building.&lt;p&gt;* Prismatic Schema, immensely popular, was &amp;quot;replaced&amp;quot; by spec, which is not yet complete and still in the research phase&lt;p&gt;* leiningen (one of the best language tooling out there) was &amp;quot;replaced&amp;quot; by Clojure CLI that can&amp;#x27;t do half of what leiningen can&lt;p&gt;* transducers (a brilliant concept) are not easy (as in close at hand) because the code is quite different to normal lazy-sequence based code (I wrote a library [1] to address this)&lt;p&gt;I still prefer Clojure for all my side projects, but it is very clear that the community is tiny and fragmented.&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;divs1210&amp;#x2F;streamer&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;divs1210&amp;#x2F;streamer&lt;/a&gt;</text></comment>
<story><title>I rewrote a Clojure tool in Rust</title><url>https://timofreiberg.github.io/clojure-vs-rust/</url></story><parent_chain><item><author>j-pb</author><text>I just moved a medium sized codebase from clojure transducers to JS, and after having used clojure for 7+ years, and done so professionally, I don&amp;#x27;t wanna go back, ever. The JS solution is shorter, faster, and easier to understand.
I&amp;#x27;m thankfull for the insights into reality and programming clojure has provided, but highly optimised clojure is neither idiomatic nor pretty, you end up with eductions everywhere.
Combine that with reaaaallllyy bad debuggability with all those nested inside out transducer calls (the stack traces have also gotten worse over the years, I don&amp;#x27;t know why, and a splintered ecosystem (lein, boot, clj-tools)) I&amp;#x27;d pick rust and deno&amp;#x2F;js any day for a greenfield project over clojure. sadly.</text></item><item><author>chrisulloa</author><text>While I definitely agree Rust is a much faster language than Clojure, I would be interested to see benchmarks on your code that show just how much faster your Rust code was on the same data.&lt;p&gt;I also noticed that you mentioned avoiding lazy sequences is not idiomatic in Clojure. I disagree with this since using transducers is still idiomatic. I wonder if you could&amp;#x27;ve noticed some speed improvements moving your filters&amp;#x2F;maps to transducers. Though I doubt this would get you to Rust speeds anyway, it might just be fast enough.</text></item></parent_chain><comment><author>kostadin</author><text>I have limited exposure to Clojure transducers but I spend most of my time writing JS&amp;#x2F;TS and I&amp;#x27;ve found thi.ng&amp;#x2F;transducers[0] a pleasure to work with and super elegant for constructing data processing workflows.&lt;p&gt;[0] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;thi-ng&amp;#x2F;umbrella&amp;#x2F;tree&amp;#x2F;develop&amp;#x2F;packages&amp;#x2F;transducers&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;thi-ng&amp;#x2F;umbrella&amp;#x2F;tree&amp;#x2F;develop&amp;#x2F;packages&amp;#x2F;tra...&lt;/a&gt;</text></comment>