<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jishith Mp</title>
    <description>The latest articles on DEV Community by Jishith Mp (@jishith_mp_82b1b8f25ca17e).</description>
    <link>https://dev.to/jishith_mp_82b1b8f25ca17e</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2911021%2Fa3cdf8a5-7a7b-4b70-82a0-28546ceec3fd.png</url>
      <title>DEV Community: Jishith Mp</title>
      <link>https://dev.to/jishith_mp_82b1b8f25ca17e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jishith_mp_82b1b8f25ca17e"/>
    <language>en</language>
    <item>
      <title>How I Built My Own Programming Language from Scratch</title>
      <dc:creator>Jishith Mp</dc:creator>
      <pubDate>Thu, 11 Jun 2026 18:41:10 +0000</pubDate>
      <link>https://dev.to/jishith_mp_82b1b8f25ca17e/how-i-built-my-own-programming-language-from-scratch-9m1</link>
      <guid>https://dev.to/jishith_mp_82b1b8f25ca17e/how-i-built-my-own-programming-language-from-scratch-9m1</guid>
      <description>&lt;p&gt;I Built a Programming Language Called &lt;strong&gt;Zen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building a programming language had been something I wanted to do for a long time.&lt;/p&gt;

&lt;p&gt;What I didn't realize when I started was how much work exists beyond parsing a few tokens and generating some code. A language is not just a parser or a compiler backend. It is tooling, developer experience, documentation, installation, error handling, runtime support, and countless design decisions.&lt;/p&gt;

&lt;p&gt;After multiple attempts and many lessons learned, I'm excited to share Zen.&lt;/p&gt;

&lt;p&gt;Why a Third Attempt?&lt;/p&gt;

&lt;p&gt;Zen is not the first language project I started.&lt;/p&gt;

&lt;p&gt;My first attempts taught me a lot, but they never reached a stage where I felt comfortable sharing them publicly. The architecture was incomplete, important components were missing, and the overall developer experience wasn't where I wanted it to be.&lt;/p&gt;

&lt;p&gt;Instead of abandoning the idea, I kept iterating.&lt;/p&gt;

&lt;p&gt;Each attempt helped me better understand:&lt;/p&gt;

&lt;p&gt;Compiler architecture&lt;/p&gt;

&lt;p&gt;Language design&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLVM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Runtime integration&lt;/p&gt;

&lt;p&gt;Tooling and usability&lt;/p&gt;

&lt;p&gt;Error handling&lt;/p&gt;

&lt;p&gt;Project structure&lt;/p&gt;

&lt;p&gt;Zen is the result of those lessons.&lt;/p&gt;

&lt;p&gt;What Is Zen?&lt;/p&gt;

&lt;p&gt;Zen is a programming language with its own compiler pipeline and LLVM-based backend.&lt;/p&gt;

&lt;p&gt;The goal was not just to generate code, but to create a complete language ecosystem that developers can actually install and use.&lt;/p&gt;

&lt;p&gt;Zen currently includes:&lt;/p&gt;

&lt;p&gt;Lexer&lt;/p&gt;

&lt;p&gt;Parser&lt;/p&gt;

&lt;p&gt;AST generation&lt;/p&gt;

&lt;p&gt;LLVM IR generation&lt;/p&gt;

&lt;p&gt;Native executable generation through LLVM&lt;/p&gt;

&lt;p&gt;Runtime integration&lt;/p&gt;

&lt;p&gt;Standard library integration&lt;/p&gt;

&lt;p&gt;Command-line tooling&lt;/p&gt;

&lt;p&gt;Installation system&lt;/p&gt;

&lt;p&gt;Documentation website&lt;/p&gt;

&lt;p&gt;Compiler Pipeline&lt;/p&gt;

&lt;p&gt;The compilation process follows a traditional compiler architecture:&lt;/p&gt;

&lt;p&gt;Source Code&lt;br&gt;
    ↓&lt;br&gt;
Lexer&lt;br&gt;
    ↓&lt;br&gt;
Parser&lt;br&gt;
    ↓&lt;br&gt;
AST&lt;br&gt;
    ↓&lt;br&gt;
LLVM IR Generation&lt;br&gt;
    ↓&lt;br&gt;
LLVM Optimization&lt;br&gt;
    ↓&lt;br&gt;
Object Files&lt;br&gt;
    ↓&lt;br&gt;
Native Executable&lt;/p&gt;

&lt;p&gt;LLVM handles optimization and machine code generation, allowing Zen to produce native binaries.&lt;/p&gt;

&lt;p&gt;Command Line Interface&lt;/p&gt;

&lt;p&gt;Zen provides several commands for development and inspection:&lt;/p&gt;

&lt;p&gt;zen run &lt;br&gt;
zen build &lt;br&gt;
zen ir &lt;br&gt;
zen ast &lt;br&gt;
zen tokens &lt;br&gt;
zen clean &lt;/p&gt;

&lt;p&gt;This allows users to inspect different stages of compilation while also supporting normal build and execution workflows.&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;One of my goals was making the language easy to install.&lt;/p&gt;

&lt;p&gt;Zen can be installed with a single command:&lt;/p&gt;

&lt;p&gt;curl -fsSL &lt;a href="https://raw.githubusercontent.com/Jishith-dev/Zen/main/install.sh" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/Jishith-dev/Zen/main/install.sh&lt;/a&gt; | bash&lt;/p&gt;

&lt;p&gt;The installer:&lt;/p&gt;

&lt;p&gt;Checks required dependencies&lt;/p&gt;

&lt;p&gt;Downloads Zen&lt;/p&gt;

&lt;p&gt;Builds runtime components&lt;/p&gt;

&lt;p&gt;Builds standard library objects&lt;/p&gt;

&lt;p&gt;Sets up the CLI&lt;/p&gt;

&lt;p&gt;Documentation&lt;/p&gt;

&lt;p&gt;A language is only as useful as its documentation.&lt;/p&gt;

&lt;p&gt;I spent significant time building documentation and a dedicated website so that users can quickly understand the language and get started.&lt;/p&gt;

&lt;p&gt;Documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jishith-dev.github.io/zen-doc/site/" rel="noopener noreferrer"&gt;Zen Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jishith-dev.github.io/zen-doc/" rel="noopener noreferrer"&gt;Zen website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Challenges&lt;/p&gt;

&lt;p&gt;Building Zen involved solving many problems that are easy to underestimate:&lt;/p&gt;

&lt;p&gt;Designing compiler architecture&lt;/p&gt;

&lt;p&gt;Managing LLVM integration&lt;/p&gt;

&lt;p&gt;Runtime linking&lt;/p&gt;

&lt;p&gt;Module handling&lt;/p&gt;

&lt;p&gt;Error reporting&lt;/p&gt;

&lt;p&gt;Cross-platform installation&lt;/p&gt;

&lt;p&gt;Documentation structure&lt;/p&gt;

&lt;p&gt;Developer experience&lt;/p&gt;

&lt;p&gt;Many of these challenges were not obvious when I started.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;The biggest lesson was that building a programming language is much more than code generation.&lt;/p&gt;

&lt;p&gt;A usable language requires:&lt;/p&gt;

&lt;p&gt;Consistent design decisions&lt;/p&gt;

&lt;p&gt;Good tooling&lt;/p&gt;

&lt;p&gt;Clear documentation&lt;/p&gt;

&lt;p&gt;Reliable installation&lt;/p&gt;

&lt;p&gt;Helpful diagnostics&lt;/p&gt;

&lt;p&gt;Iteration and patience&lt;/p&gt;

&lt;p&gt;The compiler itself is only one piece of the overall system.&lt;/p&gt;

&lt;p&gt;What's Next?&lt;/p&gt;

&lt;p&gt;Zen is stable, but there is still plenty to improve.&lt;/p&gt;

&lt;p&gt;Planned future work includes:&lt;/p&gt;

&lt;p&gt;Testing framework support (zen test)&lt;/p&gt;

&lt;p&gt;Built-in examples (zen example)&lt;/p&gt;

&lt;p&gt;Better diagnostics&lt;/p&gt;

&lt;p&gt;Additional language features&lt;/p&gt;

&lt;p&gt;Tooling improvements&lt;/p&gt;

&lt;p&gt;Performance enhancements&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;This project started as an experiment and evolved through multiple iterations before becoming a complete system.&lt;/p&gt;

&lt;p&gt;Creating Zen taught me more about compilers, tooling, architecture, and software engineering than I expected when I began.&lt;/p&gt;

&lt;p&gt;If you're interested in programming languages, compiler development, or LLVM-based systems, I'd love to hear your feedback.&lt;/p&gt;

&lt;p&gt;Links&lt;/p&gt;

&lt;p&gt;Documentation: &lt;a href="https://jishith-dev.github.io/zen-doc/site/" rel="noopener noreferrer"&gt;Zen Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://jishith-dev.github.io/zen-doc/" rel="noopener noreferrer"&gt;Zen website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Jishith-dev/Zen" rel="noopener noreferrer"&gt;github&lt;/a&gt; &lt;/p&gt;

&lt;h1&gt;
  
  
  programming #opensource #compilers #llvm #javascript
&lt;/h1&gt;

</description>
      <category>compiling</category>
      <category>programming</category>
      <category>zen</category>
    </item>
  </channel>
</rss>
