Hey folks! 👋

I wanted to share a project I’ve been quietly working on: a programming language called Lumen. It's still early days, but it's already compiling to native code and WebAssembly, and I thought some of you might find it interesting — or have feedback to help shape where it’s going.

For anyone fascinated by language design, compilers, or just pushing the boundaries of modern development, Lumen is my attempt to rethink what a lightweight, high-performance, cross-platform language can look like.

🛠️ What Is Lumen?

Lumen is a statically typed, compiled programming language designed with three core principles: performance, portability, and simplicity. Built on top of LLVM, it compiles directly to native machine code, while also offering first-class support for WebAssembly (WASM).

The vision? A language that’s as comfortable building low-level system tools as it is running seamlessly in the browser. Imagine writing core logic once and deploying it everywhere—from servers to embedded devices to web apps.

If Rust feels too heavy for small projects, or if JavaScript feels too dynamic and slow for critical code paths, Lumen aims to strike a balance.

⚙️ Why I Started Lumen

I’ve always been intrigued by languages that prioritize control and speed, but I kept running into two frustrations:

  1. Web as an Afterthought: Most systems languages treat WASM like a secondary target, requiring hacks or bloated toolchains.
  2. Over-Complexity: Modern languages often pile on features—sometimes at the cost of simplicity and developer experience.

So, I asked myself:

Lumen is my answer to those questions—a language where you can:

🚀 Features (So Far)

Unlike many languages, Lumen encourages understanding what your code compiles down to—bridging high-level productivity with low-level awareness.

📂 Project Structure & Design Philosophy

Currently, I'm focusing on keeping things transparent—no mysterious black boxes. Developers should feel empowered to peek under the hood.

🧪 Example Build Flow

Here’s how simple it is to go from source to execution:

Native Build (Linux/macOS):

clang -c stdlib/lumen_std.c -o lumen_std.o
llc main.ll -filetype=obj -o main.o
clang main.o lumen_std.o -o lumen_exec
./lumen_exec

WebAssembly Build:

emcc stdlib/lumen_std.c -O3 -s SIDE_MODULE=1 -o lumen_std.wasm
llc main.ll -march=wasm32 -filetype=obj -o main.o
wasm-ld main.o lumen_std.wasm -o lumen_combined.wasm --no-entry

No complicated pipelines—just clean, direct compilation.

🧭 Roadmap

Here’s what’s coming next:

🌐 Why Lumen Matters

In a world where languages are either too heavy or too limited, Lumen is about balance:

It’s not here to replace giants—it’s here for developers who want control without complexity.

📎 Check It Out

If this sounds interesting, you can explore the source here: 🔗 GitHub – makalin/Lumen

🙏 Feedback & Collaboration

I’m sharing Lumen early because I believe great tools grow with community input. Whether you’re passionate about compilers, curious about LLVM, or just want to discuss language design philosophies—I'd love to hear from you.

Questions I’m pondering:

Thanks for reading this far! 🌕— @makalin


Would love to hear your thoughts, ideas, or critiques. Let’s build something awesome together!