ভূমিকা
Bnlang একটি দ্বিভাষিক প্রোগ্রামিং ভাষা ও রানটাইম। একই প্রোগ্রাম আপনি ইংরেজিতে বা বাংলায় লিখতে পারেন — পার্সার দু'টি কীওয়ার্ড সেটকেই একই সিনট্যাক্স ট্রিতে ম্যাপ করে, ফলে ভাষাটি নিজে একটি একক, পূর্বানুমানযোগ্য জিনিস।
Bnlang একটি নেটিভ ভাষা: আধুনিক C++ এ লেখা ট্রি-ওয়াকিং ইন্টারপ্রেটার, libuv ইভেন্ট লুপসহ। কোনো ট্রান্সপাইলেশন স্টেপ নেই, কোনো জাভাস্ক্রিপ্ট ইঞ্জিন নেই — bnl সরাসরি আপনার .bnl ফাইল চালায়।
ডিজাইন নীতি
- পূর্বানুমানযোগ্য সেম্যান্টিক্স। ছোট, নিয়মিত সিনট্যাক্স। ফিক্সড-অ্যারিটি ফাংশন। কোনো বিভ্রান্তিকর ওভারলোড নেই।
- একটাই পথ।
let/const/varত্রিভুজ নেই — শুধুvar।===বনাম==বিতর্ক নেই — শুধু==।nullওundefinedভাগ নেই — শুধুnull। - ব্যাটারি ইনক্লুডেড। ফাইল I/O, HTTP/WebSocket সার্ভার ও ক্লায়েন্ট, টেমপ্লেটিং, SQLite/PostgreSQL/MongoDB, ক্রিপ্টো, টাইমার, JSON, regex — সবই স্ট্যান্ডার্ড লাইব্রেরিতে।
- এক্সটেনসিবল। একটি
bnl.json-এর পাশে.dll/.so/.dylibরেখে যেকোনো অন্য মডিউলের মতইimportকরুন। প্লাগইন একটি একক drop-in C হেডার ব্যবহার করে — এগুলো C, C++, Rust, Go, Zig, বা C ABI সমর্থিত যেকোনো ভাষায় লেখা যায়।
রানটাইম স্ট্যাক (অভ্যন্তরে)
- C++20 — ইন্টারপ্রেটার, ভ্যালু মডেল, এবং প্রতিটি বিল্ট-ইন মডিউল।
- libuv — ক্রস-প্ল্যাটফর্ম ইভেন্ট লুপ ও অ্যাসিঙ্ক I/O প্রিমিটিভ।
- OpenSSL — HTTPS / WebSocket-over-TLS এর জন্য TLS, এবং হ্যাশিং, HMAC, base64/hex কোডেক।
- llhttp — দ্রুত HTTP/1.1 পার্সার, বিল্ট-ইন ওয়েব সার্ভার ও ক্লায়েন্ট ব্যবহার করে।
- SQLite / libpq / mongo-c-driver — এমবেডেড SQLite এবং PostgreSQL, MongoDB এর জন্য প্রথম-শ্রেণির ক্লায়েন্ট।
- zlib — gzip/deflate।
হ্যালো, Bnlang (দু'ভাবে)
// ইংরেজি
print("Hello, Bnlang!");
// বাংলা
লিখুন("হ্যালো, Bnlang!");
দু'টোই একই আউটপুট দেয়। লেক্সার print ও লিখুন-কে একই বিল্ট-ইনে ম্যাপ করে।
ইনস্টলেশন
- আপনার প্ল্যাটফর্মের জন্য সর্বশেষ বাইনারি ডাউনলোড করুন Releases পেজ থেকে — Windows (
.exe/.zip), Linux (.tar.gz), macOS (.pkg/.tar.gz)। bnlযে PATH-এ আছে তা নিশ্চিত করুন।- যাচাই করুন:
bnl --version
# Bnlang (bnl) 1.0.0 (windows)
প্রজেক্ট কাঠামো
my-app/
├─ src/
│ └─ main.bnl
├─ bnl.json # প্রজেক্ট ম্যানিফেস্ট (bpm পরিচালিত)
├─ bnl.lock # লকফাইল (জেনারেটেড)
└─ deps/ # ইনস্টল করা প্যাকেজ
ভার্সনিং ও ডক্স
ভার্সন: vMAJOR.MINOR.PATCH। ডক্স ভার্সন-ভিত্তিক: /docs/v1.0.0/... — ইংরেজি ও বাংলা লোকালসহ।