Inherited from v1.0.0

ভূমিকা

Bnlang একটি দ্বিভাষিক প্রোগ্রামিং ভাষা ও রানটাইম। একই প্রোগ্রাম আপনি ইংরেজিতে বা বাংলায় লিখতে পারেন — পার্সার দু'টি কীওয়ার্ড সেটকেই একই সিনট্যাক্স ট্রিতে ম্যাপ করে, ফলে ভাষাটি নিজে একটি একক, পূর্বানুমানযোগ্য জিনিস।

Bnlang একটি নেটিভ ভাষা: আধুনিক C++ এ লেখা ট্রি-ওয়াকিং ইন্টারপ্রেটার, libuv ইভেন্ট লুপসহ। কোনো ট্রান্সপাইলেশন স্টেপ নেই, কোনো জাভাস্ক্রিপ্ট ইঞ্জিন নেই — bnl সরাসরি আপনার .bnl ফাইল চালায়।

ডিজাইন নীতি

  • পূর্বানুমানযোগ্য সেম্যান্টিক্স। ছোট, নিয়মিত সিনট্যাক্স। ফিক্সড-অ্যারিটি ফাংশন। কোনো বিভ্রান্তিকর ওভারলোড নেই।
  • একটাই পথ। let/const/var ত্রিভুজ নেই — শুধু var=== বনাম == বিতর্ক নেই — শুধু ==nullundefined ভাগ নেই — শুধু 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লিখুন-কে একই বিল্ট-ইনে ম্যাপ করে।

ইনস্টলেশন

  1. আপনার প্ল্যাটফর্মের জন্য সর্বশেষ বাইনারি ডাউনলোড করুন Releases পেজ থেকে — Windows (.exe / .zip), Linux (.tar.gz), macOS (.pkg / .tar.gz)।
  2. bnl যে PATH-এ আছে তা নিশ্চিত করুন।
  3. যাচাই করুন:
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/... — ইংরেজি ও বাংলা লোকালসহ।