<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2026-06-12T06:11:37+05:30</updated><id>/feed.xml</id><title type="html">Clofer Blogs</title><subtitle>This might go nowhere. Just curious to learn about programming languages. Hence am trying to port Clojure on top of Rust. Here, I will share my journey and learning about Clojure and Rust. My ignorance is immense, my laziness is legendary, hence there is a high chance of this project failing.</subtitle><entry><title type="html">Clofer is no more, long live clj.rs</title><link href="/2026/06/12/clofer-is-no-more-long-live-clj-rs.html" rel="alternate" type="text/html" title="Clofer is no more, long live clj.rs" /><published>2026-06-12T06:07:00+05:30</published><updated>2026-06-12T06:07:00+05:30</updated><id>/2026/06/12/clofer-is-no-more-long-live-clj-rs</id><content type="html" xml:base="/2026/06/12/clofer-is-no-more-long-live-clj-rs.html"><![CDATA[<p>I started Clofer, because <a href="https://github.com/clojure-rs/ClojureRS">ClojureRS</a> seems to be dead. But then, I discovered <a href="https://clj.rs/">clj.rs</a>. You can find my reasoning <a href="https://clojure-diary.gitlab.io/2026/06/07/clj-rs-clojure-implemented-on-rust.html">here</a>, where I say why I back clj.rs.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I started Clofer, because ClojureRS seems to be dead. But then, I discovered clj.rs. You can find my reasoning here, where I say why I back clj.rs.]]></summary></entry><entry><title type="html">Slowed Down</title><link href="/2026/06/05/slowed-down.html" rel="alternate" type="text/html" title="Slowed Down" /><published>2026-06-05T09:57:00+05:30</published><updated>2026-06-05T09:57:00+05:30</updated><id>/2026/06/05/slowed-down</id><content type="html" xml:base="/2026/06/05/slowed-down.html"><![CDATA[<p>I slowed down. I don’t know why — maybe I have a lot of work to do, maybe my brain browned out. Maybe it’s because I am leading a team of quants in India, and we are expanding our business. So maybe that slowed me down. Another reason is Rust is proving to be a bit difficult for me. I was reading and I have read till enums, and I couldn’t grasp the concepts as quickly as I thought I would.</p>

<p>I really miss this book, <em>PHP: The Complete Reference</em>. When I read it, I picked up PHP in a jiffy.</p>

<p><img src="https://m.media-amazon.com/images/I/71GrLKDeGRL._SL1100_.jpg" alt="" /></p>

<p>Everything had complete examples. Whatever code that was newly added was highlighted and called out, and it was really easy to follow. This was before LLMs, and I think even before Stack Overflow became really popular.</p>

<p>Compared to <em>PHP: The Complete Reference</em>, <a href="https://doc.rust-lang.org/book/">the Rust book</a> is no match. The Rust community doesn’t want beginners to learn Rust — it wants advanced programmers to learn Rust, which could even be fatal for the language in the long run.</p>

<p>So I am looking for new sources apart from the Rust book, and I have zeroed in on a freeCodeCamp video.</p>

<div class="video"><figure><iframe width="640" height="480" src="//www.youtube.com/embed/BpPEoZW5IiY" frameborder="0" allowfullscreen=""></iframe></figure></div>

<p>Maybe this video has a practical demonstration of how to code with Rust, and maybe, by watching the video and typing along side by side, I can learn Rust quicker.</p>

<p>So that’s about it for this week. Let me report back next week on what I’m up to. I also miss Clojure. Compared to Clojure, Rust is super difficult — you don’t have a REPL and all those things. I just really miss my Clojure projects, and I want to contribute to them because I love Clojure. Let’s see how things go, and let’s see if I forge ahead or give up. I don’t think I’ll give up before I write a Lisp interpreter in Rust. I really want to learn to write a compiler.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[I slowed down. I don’t know why — maybe I have a lot of work to do, maybe my brain browned out. Maybe it’s because I am leading a team of quants in India, and we are expanding our business. So maybe that slowed me down. Another reason is Rust is proving to be a bit difficult for me. I was reading and I have read till enums, and I couldn’t grasp the concepts as quickly as I thought I would.]]></summary></entry><entry><title type="html">Started Learning Rust</title><link href="/2026/05/28/started-learning-rust.html" rel="alternate" type="text/html" title="Started Learning Rust" /><published>2026-05-28T09:50:00+05:30</published><updated>2026-05-28T09:50:00+05:30</updated><id>/2026/05/28/started-learning-rust</id><content type="html" xml:base="/2026/05/28/started-learning-rust.html"><![CDATA[<h2 id="reading-the-book">Reading The Book</h2>

<p>I have started learning Rust from The Book, currently I am reading <a href="https://doc.rust-lang.org/book/ch04-03-slices.html">The Slice Type</a>. For some reason <a href="https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html#the-stack-and-the-heap">ownership</a> did not look confusing to me, but <a href="https://doc.rust-lang.org/book/ch04-02-references-and-borrowing.html">references &amp; borrowing</a> did.</p>

<p>I learn a programming language by doing a lot of exercises. I will soon put a <a href="https://codeberg.org/rust-learnings">repo in Codeberg</a>, where I will upload my Rust learnings. The Rust book seems to be a book written for people who already know other programming languages. I don’t think you should write a programming language book like that. It should be a book where anybody can pick it up — in plain natural language — and be able to understand it. If the Rust community doesn’t do it, I think a lot of people are going to avoid Rust. It’s the same with Clojure. Clojure has been dominated by people who are really experienced in the industry, and they don’t even bother about people who are starting with Clojure as their first programming language.</p>

<p>In fact, it’s the people who are already familiar with other programming languages that are the ones who are going to start with Clojure. I have never seen a total noob to programming pick up Clojure. Somehow the Clojure community seems to have turned a blind eye to this huge problem. They are happy the way they are.</p>

<p>Even though you have AI, you do need muscle memory to write good code. Or at least in today’s case, to check for improvements that could be made by A.I., and to find corrections in it without much effort. Mastery is very important.</p>

<p>Should I vlog or blog about Rust? I don’t know. I don’t have the bandwidth. I already have a channel called <a href="https://youtube.com/@clojurediary">Clojure Diary</a> where I vlog about Clojure. That was because I couldn’t find sufficient material that would help a beginner learn Clojure. I also write a <a href="https://clojure-book.gitlab.io/">book on Clojure</a>, for almost the same reason. There aren’t many libre books on Clojure. Maybe the community is very small, so there aren’t many who will talk and write about it. This could be the result of the community never trying to promote Clojure as a beginner-friendly first programming language that one can learn.</p>

<h2 id="dont-have-expectations">Don’t Have Expectations</h2>

<p>I want to tell the reader of this blog: please don’t have expectations. This is a highly ignorant guy, who is passionate, maybe foolhardy, and for some reason thinks he can host Clojure on top of Rust. It might never happen. At most, I think I can write a Lisp interpreter in Rust. Right now I have no idea how to create a compiler for Lisp using Rust. Compiling stuff to machine code, I feel is far difficult than interpreting stuff.</p>

<p>I do know that <a href="https://buildyourownlisp.com/">Build Your Own Lisp</a> might be helpful. Right now I want to learn Rust, then use this book to build Lisp with Rust.</p>

<p>I’m determined to put just another foot forward, and I am dedicated enough to tell the world what step I have taken — that’s about it for now.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Reading The Book]]></summary></entry><entry><title type="html">Learning Path to create Clofer</title><link href="/2026/05/23/learing-path-to-create-clofer.html" rel="alternate" type="text/html" title="Learning Path to create Clofer" /><published>2026-05-23T10:15:00+05:30</published><updated>2026-05-23T10:15:00+05:30</updated><id>/2026/05/23/learing-path-to-create-clofer</id><content type="html" xml:base="/2026/05/23/learing-path-to-create-clofer.html"><![CDATA[<p>This is the learning path that an LLM has drafted for me to learn Rust and build a Lisp interpreter, and maybe one day, <strong><a href="https://clofer.codeberg.page/">Clofer</a></strong>. I don’t know if I would succeed, but I’m determined to learn, and at least produce a Lisp interpreter in Rust, and share my learnings here.</p>

<p>The Learning Path:</p>

<p><strong>1. Rust (the big one)</strong></p>

<p>This is the unavoidable foundation. Specifically you’d need to go beyond basics and get comfortable with:</p>

<ul>
  <li><strong>Ownership &amp; borrowing</strong> deeply — not just the basics, but the tricky cases with recursive data structures (which a Lisp interpreter is full of)</li>
  <li><strong>Enums &amp; pattern matching</strong> — Clojure’s <code class="language-plaintext highlighter-rouge">Value</code> type is a big Rust enum, and you’ll live inside pattern matching</li>
  <li><strong><code class="language-plaintext highlighter-rouge">Rc&lt;T&gt;</code> / <code class="language-plaintext highlighter-rouge">Arc&lt;T&gt;</code></strong> — ClojureRS uses reference counting for its values; understanding when to use which matters</li>
  <li><strong>Traits</strong> — you’ll need these to implement Clojure’s protocols and interfaces in Rust</li>
  <li><strong>Macros</strong> — both Rust macros (for reducing boilerplate) and eventually implementing Clojure macros on top</li>
</ul>

<p><strong>2. Interpreter / compiler theory</strong></p>

<p>This is probably the second biggest gap. You’d need to understand:</p>

<ul>
  <li><strong>Parsing &amp; lexing</strong> — turning Clojure text into an AST (s-expressions make this simpler than most languages actually)</li>
  <li><strong>Evaluation models</strong> — how a tree-walking interpreter works, environments, scopes</li>
  <li><strong>Tail call optimization</strong> — one of ClojureRS’s stated goals; non-trivial to implement</li>
  <li><strong>Persistent data structures</strong> — Clojure’s immutable vectors, hashmaps, and lists are not trivial. Phil Bagwell’s Hash Array Mapped Trie (HAMT) is what real Clojure uses</li>
</ul>

<p><strong>3. Clojure internals</strong></p>

<p>You’d benefit from understanding how the JVM Clojure actually works:</p>

<ul>
  <li>How the reader/compiler pipeline works</li>
  <li>How namespaces, vars, and atoms are implemented</li>
  <li>How STM and concurrency primitives work under the hood</li>
  <li>Reading the original Java source of Clojure is actually enlightening</li>
</ul>

<p><strong>4. Lisp fundamentals</strong></p>

<p>Since ClojureRS is a Lisp at heart:</p>

<ul>
  <li>Understanding homoiconicity (code as data)</li>
  <li>How macroexpansion works</li>
  <li>How special forms differ from regular functions</li>
</ul>

<hr />

<p><strong>Honest learning path</strong></p>

<table>
  <thead>
    <tr>
      <th>Stage</th>
      <th>What to do</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Work through <strong>“<a href="https://doc.rust-lang.org/book/">The Rust Book</a>“</strong> (free at doc.rust-lang.org)</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Build a small interpreter in Rust — <strong>“<a href="https://craftinginterpreters.com/">Crafting Interpreters</a>“</strong> by Robert Nystrom is the bible for this</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Read <strong>“<a href="https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html">Structure and Interpretation of Computer Programs</a>“</strong> (SICP) for Lisp fundamentals</td>
    </tr>
    <tr>
      <td>4</td>
      <td>Read the <a href="https://github.com/clojure-rs/ClojureRS">ClojureRS</a> source carefully — it’s actually fairly readable</td>
    </tr>
    <tr>
      <td>5</td>
      <td>Start small — pick one open issue and try to fix it</td>
    </tr>
  </tbody>
</table>

<p>The Rust borrow checker will be the steepest wall. Budget real time for it — most developers need a few weeks before it <em>clicks</em>. But once it does, the rest becomes much more approachable.</p>

<p>Would you want to just experiment with it, or are you thinking of seriously reviving it?</p>

<h2 id="a-note-to-the-reader">A Note To The Reader</h2>

<p>Dear readers, I never thought I will one day get the desire to port Clojure on top of Rust. I am not a computer science graduate; my ignorance is huge. This syllabus was charted by an LLM. So if you, the humans, can recommend corrections and suggestions, it would be really great.</p>

<p>I would also commit to posting an update here every week, and share it across Clojure channels. Some weeks, or even many weeks, I might not work, and I will post that I have not worked on this project. This project has generated interest amongst some people, and I feel it’s my duty to keep them posted — not just about my successes, but about my failures, laziness, inability, lack of interest, and possibly abandoning this project (if that ever happens).</p>

<p>One thing I can assure you is, I don’t give up that easy.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[This is the learning path that an LLM has drafted for me to learn Rust and build a Lisp interpreter, and maybe one day, Clofer. I don’t know if I would succeed, but I’m determined to learn, and at least produce a Lisp interpreter in Rust, and share my learnings here.]]></summary></entry><entry><title type="html">Clofer: Clojure, Forged in Iron</title><link href="/2026/05/18/clofer.html" rel="alternate" type="text/html" title="Clofer: Clojure, Forged in Iron" /><published>2026-05-18T00:00:00+05:30</published><updated>2026-05-18T00:00:00+05:30</updated><id>/2026/05/18/clofer</id><content type="html" xml:base="/2026/05/18/clofer.html"><![CDATA[<table>
  <thead>
    <tr>
      <th style="text-align: center"><img src="/img/logo_small.png" alt="" /></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">Clofer: Clojure, Forged in Iron</td>
    </tr>
  </tbody>
</table>

<p><em>Clojure + Fe · KLOH-fer · A new host for an refeshing idea</em></p>

<blockquote>
  <p>⚠️ <strong>Honest warning from the author</strong></p>

  <p>This might go nowhere. I’m just curious to learn about programming languages — so I’m trying to port Clojure on top of Rust. Here, I’ll share my journey and learnings about Clojure and Rust. My ignorance is immense, my laziness is legendary, and hence there is a high chance of this project failing. You have been warned.</p>
</blockquote>

<p>What happens when you take one of the most elegant programming languages ever designed — one built around simplicity, immutability, and expressive power — and free it from the platform it was born on?</p>

<p>That’s the question behind <strong>Clofer</strong>: an experiment to port Clojure on top of Rust, giving Clojure a new home that is fast, lightweight, and owned by no corporation.</p>

<blockquote>
  <p><em>“Clojure is a beautiful language trapped in a political dependency. Clofer is Clojure finally free.”</em></p>
</blockquote>

<h2 id="what-is-clofer">What is Clofer?</h2>

<p>The name says it all: <strong>Clo</strong>jure + <strong>Fe</strong> — the chemical symbol for iron, which is what Rust is named after (rust = oxidised iron). Say it out loud: <em>KLOH-fer</em>. Sounds like Clojure’s sibling. That’s intentional.</p>

<p>Clofer is an attempt to implement the Clojure programming language on top of Rust, instead of on top of the Java Virtual Machine. You write Clojure. It runs natively — no JVM, no Oracle, no 2-second cold start.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>JVM Clojure  →  ClojureScript  →  Clofer
</code></pre></div></div>

<p>Rich Hickey designed Clojure as a <em>hosted</em> language — one that lives inside another platform and borrows its infrastructure. JVM Clojure lives on Java. ClojureScript lives on JavaScript. Clofer would be the n<sup>th</sup> landing: Clojure hosted on Rust, and for the first time, on a platform owned by no evil corporation and driven by no garbage collector.</p>

<div class="language-clojure highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">; You write ordinary Clojure...</span><span class="w">
</span><span class="p">(</span><span class="k">defn</span><span class="w"> </span><span class="n">greet</span><span class="w"> </span><span class="p">[</span><span class="nb">name</span><span class="p">]</span><span class="w">
  </span><span class="p">(</span><span class="nb">str</span><span class="w"> </span><span class="s">"Hello, "</span><span class="w"> </span><span class="nb">name</span><span class="w"> </span><span class="s">"!"</span><span class="p">))</span><span class="w">

</span><span class="p">(</span><span class="nf">greet</span><span class="w"> </span><span class="s">"Clofer"</span><span class="p">)</span><span class="w">  </span><span class="c1">; =&gt; "Hello, Clofer!"</span><span class="w">
</span></code></pre></div></div>

<h2 id="who-is-building-this">Who is building this?</h2>

<p>Clofer is being built by me, <strong><a href="https://mindaslab.github.io">Karthikeyan A K</a></strong>, a Ruby on Rails developer and Clojure evangelist based in Chennai. You might know me from <strong><a href="https://injee.codeberg.page">Injee</a></strong>—my project to automatically generate backends so developers can focus on frontend work.</p>

<p>The story of Clofer starts where many good side projects do: curiosity. A former employer asked me to learn ReactJS. That kicked off a journey into frontend development—and into wondering why building the backend side of things had to be so painful. That frustration became Injee, which I wrote in Clojure, the most elegant language I knew.</p>

<p>People in the Clojure community might know me from <a href="https://youtube.com/@clojurediary">Clojure Diary</a> and <a href="https://clojure-book.gitlab.io">Clojure Book</a>.</p>

<p>And somewhere along the way, the question of <em>programming languages themselves</em> took hold. What makes a language elegant? What makes it fast? Why is Clojure so beautiful, and why is it still chained to the JVM? What would it look like to free it?</p>

<p>Clofer is my attempt to find out — by building it myself.</p>

<h2 id="why-does-this-matter">Why does this matter?</h2>

<p>JVM Clojure is genuinely excellent. But hosting on the JVM comes with costs that aren’t always visible until you hit them.</p>

<p><strong>Cold start time.</strong> A JVM Clojure application can take 2–10 seconds to start. That kills it for CLI tools, serverless functions, and any short-lived process. Rust-based binaries start in milliseconds.</p>

<p><strong>Memory footprint.</strong> A JVM app typically needs 256MB+ just to breathe. Clofer could, in principle, run in a few megabytes — making it viable for IoT devices, edge computing, and environments where compute is expensive.</p>

<p><strong>True tail call optimisation.</strong> The JVM doesn’t support TCO natively, which is why Clojure requires the <code class="language-plaintext highlighter-rouge">recur</code> workaround. A Rust-based Clojure could have real TCO, making it a more complete and elegant Lisp.</p>

<p><strong>No GC pauses.</strong> Rust’s ownership model means no stop-the-world garbage collection. For latency-sensitive systems — real-time audio, trading, game engines — this matters enormously.</p>

<p><strong>Freedom from Oracle.</strong> This one doesn’t get talked about enough. Oracle’s stewardship of Java has cast a long shadow — licensing changes, the decade-long Google lawsuit, constant uncertainty. Even GraalVM (the community’s current answer to JVM cold start) is also an Oracle product. Hosting on Rust means hosting on a language governed by a nonprofit, with no licensing drama and no corporate owner to answer to.</p>

<h2 id="where-clofer-would-be-useful">Where Clofer would be useful</h2>

<table>
  <thead>
    <tr>
      <th>Use case</th>
      <th>Why Clofer fits</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>CLI tools</strong></td>
      <td>Fast startup, small binary, no JVM required on the target machine</td>
    </tr>
    <tr>
      <td><strong>Serverless functions</strong></td>
      <td>Cold start is death in serverless; millisecond boot changes the equation</td>
    </tr>
    <tr>
      <td><strong>WebAssembly</strong></td>
      <td>Clojure in the browser natively — not via ClojureScript transpilation</td>
    </tr>
    <tr>
      <td><strong>Embedded systems</strong></td>
      <td>Rust already runs on ARM Cortex-M, RISC-V, ESP32; Clofer could inherit that</td>
    </tr>
    <tr>
      <td><strong>Data science &amp; ML</strong></td>
      <td>Clojure’s data-oriented model + Rust’s GPU ecosystem is a compelling combination</td>
    </tr>
    <tr>
      <td><strong>Systems programming</strong></td>
      <td>Rust’s borrow checker eliminates whole classes of bugs at compile time</td>
    </tr>
    <tr>
      <td><strong>Learning &amp; research</strong></td>
      <td>Even if nothing ships, building this teaches you more than almost anything else</td>
    </tr>
    <tr>
      <td><strong>Where Clojure is used currently</strong></td>
      <td>Clojure is used in a wide range of industries, including finance, healthcare, and education</td>
    </tr>
  </tbody>
</table>

<h2 id="data-science-and-machine-learning">Data Science and Machine Learning</h2>

<p>Clojure has always had a natural affinity for data. Its core abstractions — immutable data structures, lazy sequences, the sequence abstraction — map beautifully onto the kind of data transformation pipelines that data science is built on. Libraries like <code class="language-plaintext highlighter-rouge">clojure.data</code> and the broader data-oriented programming philosophy make Clojure genuinely pleasant for exploratory data work.</p>

<p>The problem is the JVM. In data science, you often want to run models at the edge, inside a browser, on a small device, or as a lightweight CLI tool that processes a CSV and exits. The JVM’s memory and startup overhead make all of that awkward.</p>

<p>Clofer on Rust changes the equation. Rust has a growing and serious ML ecosystem: <strong><a href="https://github.com/huggingface/candle">Candle</a></strong> (HuggingFace’s ML framework written in pure Rust with GPU support) and <strong><a href="https://burn.dev/">Burn</a></strong> (a deep learning framework with multiple backends) are both gaining traction fast. Rust also has solid bindings to CUDA for NVIDIA GPUs, and <code class="language-plaintext highlighter-rouge">wgpu</code> for cross-platform GPU compute that works on Vulkan, Metal, DirectX, and even WebAssembly.</p>

<p>Imagine writing data pipelines in Clojure’s expressive, REPL-driven style — and having them run with Rust’s performance and memory efficiency, with access to GPU acceleration underneath. That’s not science fiction; it’s the direction Clofer points toward.</p>

<h2 id="webassembly">WebAssembly</h2>

<p>WebAssembly is one of the most exciting deployment targets in software right now — and one where Clojure is currently underserved.</p>

<p>ClojureScript gets you Clojure in the browser, but via transpilation to JavaScript. It works well, but it inherits JavaScript’s runtime, JavaScript’s performance characteristics, and the complexity of the JS toolchain.</p>

<p>Rust compiles to WebAssembly cleanly and natively. A Clofer that inherits Rust’s WASM story could give you Clojure running directly in the browser as a native binary — faster than ClojureScript, with a smaller footprint, and without any JavaScript dependency. The same Clofer code could run on your server, your CLI, and inside a browser tab.</p>

<p>This matters beyond the browser too. WASM is increasingly used as a sandboxed execution environment on the server side (Cloudflare Workers, Fastly Compute, and others use it). Clofer could make Clojure a first-class citizen in that world.</p>

<h2 id="embedded-systems">Embedded Systems</h2>

<p>This is perhaps the most dramatic frontier Clofer opens up.</p>

<p>Clojure has never been able to run on microcontrollers. The JVM is simply too heavy — it needs megabytes of RAM and a full operating system. Racket, despite its elegance, faces similar constraints. The Lisp family has largely been locked out of the embedded world.</p>

<p>Rust changed the story for systems programmers. It already runs on ARM Cortex-M, RISC-V, ESP32, and dozens of other embedded targets — without an operating system, with deterministic memory, and with a runtime measured in kilobytes. It has become the language of choice for serious embedded work precisely because it gives you C-level control with modern safety guarantees.</p>

<p>Clofer, built on Rust, could inherit all of that. A Clojure that compiles down to a tight native binary with no GC, no JVM, and no OS dependency could run on the same microcontrollers that Rust already targets. That would be genuinely unprecedented — a Lisp-family language with Clojure’s elegant data model running on an ESP32 or an ARM Cortex-M4.</p>

<p>The embedded world is crying out for higher-level, more expressive languages that don’t sacrifice performance or determinism<sup id="fnref:1"><a href="#fn:1" class="footnote" rel="footnote" role="doc-noteref">1</a></sup>. Rust is filling that gap for systems programmers. Clofer could fill it for the functional programming community.</p>

<h2 id="whats-being-built-and-what-itll-take">What’s being built, and what it’ll take</h2>

<p>Implementing a language is genuinely hard. Clojure’s dynamic nature is philosophically at odds with how Rust works — every step forward requires navigating that tension. The existing <a href="https://github.com/clojure-rs/ClojureRS">ClojureRS</a> project (the closest precedent) stalled partly because of this: Rust’s static, compile-time-verified nature resists the kind of runtime reflection Clojure relies on.</p>

<p>The roadmap, roughly:</p>

<ol>
  <li>Learn Rust deeply — ownership, enums, traits, the borrow checker</li>
  <li>Understand interpreter and compiler theory — parsing, evaluation, persistent data structures</li>
  <li>Study Clojure’s internals — how namespaces, vars, macros, and STM actually work</li>
  <li>Start small — a reader, an evaluator, a REPL</li>
</ol>

<p>It’s a multi-year undertaking, honestly. But that’s also what makes it interesting.</p>

<blockquote>
  <p><em>The biggest gift to the world might not be the runtime characteristics at all. It might be proving that a beautiful, expressive Lisp can exist without a managed runtime.</em></p>
</blockquote>

<h2 id="follow-along">Follow along</h2>

<p>I will be sharing the journey here—what I’m learning about Clojure, what I’m learning about Rust, where the project hits walls, and what it feels like to explore a problem this large with no guarantee of success.</p>

<p>The project is called <strong>Clofer</strong>. Say it like Clojure’s sibling. Because that’s what it’s trying to become.</p>

<p><strong>Foot Notes</strong></p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1">
      <p>https://ferret-lang.org/ <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Karthikeyan A K</name></author><summary type="html"><![CDATA[Clofer: Clojure, Forged in Iron]]></summary></entry></feed>