About Bnlang
Bnlang is a multilingual programming language and runtime created primarily for Bangladesh. It lets developers think and learn in their mother tongue—বাংলা—collaborate, and ship in English without changing semantics, tooling, or production readiness.
People think and work across languages—learn in Bangla, search and ship in English. Traditional languages force one surface form; Bnlang adapts to you. Teach, learn, prototype, and run in production using the script you’re most comfortable with—without forking the ecosystem or sacrificing engineering rigor.
- Onboarding speed: the same example exists in three surface forms with identical behavior—English, বাংলা.
- Review clarity: diagnostics and formatting keep mixed-language code legible and consistent.
- No translation tax: learn core ideas in Bangla, ship to production in English if required.
Each section explains the rationale behind language design, runtime, interop, and community. It’s written for teachers, adopters, and contributors who need to assess Bnlang for real projects.
How it works (why these choices)
Bnlang is a native, tree-walking interpreter written in modern C++. It embeds libuv for async I/O and pairs with proven libraries — OpenSSL, llhttp, zlib, SQLite, libpq, mongo-c-driver — so schools and companies get one self-contained binary that just runs on Windows, Linux, and macOS.
- Bilingual tokens normalized (Bangla/English) into a single AST.
- Static checks for scope and arity; bilingual diagnostics.
- UTF-8 throughout — Bangla identifiers and keywords are first-class.
- Tree-walking evaluator implemented directly in C++ — no virtual machine, no transpilation.
- Values, closures, classes, and modules are native C++ types with `shared_ptr` lifetimes.
- libuv event loop drives async callbacks, timers, networking, and file I/O.
Execution model: Bnlang is a native tree-walking interpreter written in C++. No transpilation, no virtual machine — the runtime evaluates the AST directly and dispatches async I/O through libuv.
- Built-in modules (HTTP server/client, WebSocket, templates, three DB drivers, crypto, JSON, …) live in C++ for speed.
- Distributable as `bnl.exe` + `bnl_core.dll`/`.so`/`.dylib`, or a single static binary.
- FFI plugin loader — drop a `.dll`/`.so`/`.dylib` next to a `bnl.json` to extend the runtime without recompiling bnl.
Runtime Stack (under the hood)
Pragmatic, portable, and proven components for Bangladesh today.
Language design (why it feels right)
The parser accepts three surface forms; the compiler treats them equally. You teach and work in the language you think in—without a 'special mode' of code.
Accessibility for Bangladesh (why it’s a priority)
Interop & adoption (why not reinvent the world)
Governance, license & security (why you can trust it)
Roadmap (near-term priorities)
Community & Governance
Join discussions, propose RFCs, and help shape the roadmap. From documentation to core packages—every contribution matters.