<?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.us-east-2.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>Update on Zen — we now have a package ecosystem</title>
      <dc:creator>Jishith Mp</dc:creator>
      <pubDate>Sun, 28 Jun 2026 03:12:42 +0000</pubDate>
      <link>https://dev.to/jishith_mp_82b1b8f25ca17e/update-on-zen-we-now-have-a-package-ecosystem-68</link>
      <guid>https://dev.to/jishith_mp_82b1b8f25ca17e/update-on-zen-we-now-have-a-package-ecosystem-68</guid>
      <description>&lt;p&gt;A few weeks back I shared some early Zen code examples. Since then, a lot has changed. We're now at v1.1.1 and the language actually has real tooling.&lt;/p&gt;

&lt;p&gt;What's new:&lt;/p&gt;

&lt;p&gt;Full CLI with package management&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;zen publish&lt;/code&gt; - publish packages directly from CLI&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zen install&lt;/code&gt; -  install packages from the registry&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zen list&lt;/code&gt; - browse all published packages with pagination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Language improvements&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Struct support with literals and returns&lt;/li&gt;
&lt;li&gt;Regex with POSIX ERE (&lt;code&gt;matchRegex&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;File I/O with binary support&lt;/li&gt;
&lt;li&gt;FFI bindings to C functions&lt;/li&gt;
&lt;li&gt;162 stdlib functions across math, strings, fs, os, http, crypto, path utilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Package Registry (v1.0.0)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT-based authentication&lt;/li&gt;
&lt;li&gt;GitHub-hosted packages&lt;/li&gt;
&lt;li&gt;Support for both runnable apps and libraries&lt;/li&gt;
&lt;li&gt;Semantic versioning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reactive variables concept from the first post is still there (that was my favorite feature), and now you can actually write real programs and share them with the community.&lt;/p&gt;

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

&lt;p&gt;Install: &lt;code&gt;curl -fsSL https://raw.githubusercontent.com/jishith-dev/Zen/main/install.sh | bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next up: HTTP server APIs, better imports, and whatever the community asks for.&lt;/p&gt;

&lt;p&gt;Open to feedback and collaborators 💻 &lt;/p&gt;

&lt;p&gt;✨ &lt;/p&gt;

&lt;h1&gt;
  
  
  zen #programming #compiler #llvm #packagemanager #opensource #programminglanguage
&lt;/h1&gt;

</description>
      <category>cli</category>
      <category>programming</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I made a programming language called Zen, wanted to share some examples</title>
      <dc:creator>Jishith Mp</dc:creator>
      <pubDate>Sat, 13 Jun 2026 16:37:51 +0000</pubDate>
      <link>https://dev.to/jishith_mp_82b1b8f25ca17e/i-made-a-programming-language-called-zen-wanted-to-share-some-examples-3pim</link>
      <guid>https://dev.to/jishith_mp_82b1b8f25ca17e/i-made-a-programming-language-called-zen-wanted-to-share-some-examples-3pim</guid>
      <description>&lt;p&gt;Hey, I've been working on this for a while now and finally feel okay sharing some code examples.&lt;/p&gt;

&lt;p&gt;Zen is a statically typed language that compiles to native binaries through LLVM. Still a work in progress but the core stuff works.&lt;/p&gt;

&lt;p&gt;One thing I'm kind of proud of is reactive variables. It's a first class feature where a variable automatically recomputes when something it depends on changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int cartItems = 3
int pricePerItem = 50
reactive int total = cartItems * pricePerItem

screen(`Total: $${total}`)   # 150

cartItems = 5
screen(`Total: $${total}`)   # 250, updates automatically

pricePerItem = 60
screen(`Total: $${total}`)   # 300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;no event listeners or anything, it just stays in sync. got the idea from how spreadsheet cells work honestly&lt;/p&gt;

&lt;p&gt;also has a standard library with time, fs, sys etc. here's a small example using both:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fn greet() {
    string t = time.time()
    List&amp;lt;string&amp;gt; parts = split(t, ":")
    int hour = Int(parts[0])

    string greeting = ""

    if (hour &amp;lt; 12) {
        greeting = "Good Morning"
    } else if (hour &amp;lt; 17) {
        greeting = "Good Afternoon"
    } else {
        greeting = "Good Evening"
    }

    screen(greeting + ", Welcome to Zen!")
}

greet()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and file I/O:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string path = "notes.txt"
string content = "Zen is minimal, fast, and fun to write."

fs.writeFile(path, content)

string data = fs.readFile(path)
screen(`File content: ${data}`)

fs.appendFile(path, " — written in Zen.")

string updated = fs.readFile(path)
screen(`Updated: ${updated}`)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;anyway the full pipeline works, lexer parser AST LLVM IR native binary and a CLI. still lots to do but it's at a point where I can actually write real programs in it.&lt;/p&gt;

&lt;p&gt;docs if anyone wants to look: &lt;a href="https://jishith-dev.github.io/zen-doc/site/" rel="noopener noreferrer"&gt;https://jishith-dev.github.io/zen-doc/site/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;open to feedback, especially on the syntax.&lt;/p&gt;

</description>
      <category>zen</category>
      <category>programming</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
    <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>
