দ্বিভাষিক নাম

Bnlang-এ আপনি যেকোনো প্রোগ্রাম ইংরেজি, বাংলা, বা দু'টোর মিশ্রণে লিখতে পারেন। ভাষার প্রতিটি সাধারণ identifier-এর — কীওয়ার্ড, built-in global, ও standard-library module — একটি ইংরেজি ও একটি বাংলা রূপ আছে; runtime তাদের অভিন্ন বিবেচনা করে।

আপনি যেটা স্বাভাবিক মনে হয় সেটাই ব্যবহার করুন। একই ফাইলে মিশ্রণ ঠিক আছে; এক লাইনে দু'টোই থাকতে পারে।

ফাংশন main() {
    লিখুন("নমস্কার বিশ্ব!");
}
main();

কীওয়ার্ড

বিস্তারিত Keywords পেজে। প্রতিটি কীওয়ার্ডের একটি বাংলা সমার্থক আছে (যেমন function / ফাংশন, if / যদি, wait / অপেক্ষা) — lexer-এ একই token-এ পার্স হয়।

গ্লোবাল ফাংশন

এই নামগুলো startup-এ গ্লোবাল স্কোপে bind হয়। দুই নাম একই callable-কে নির্দেশ করে।

ইংরেজিবাংলা
printলিখুন
inputইনপুট
strস্ট্রিং
to_numberসংখ্যা
chrঅক্ষর
typeধরণ
try_callনিরাপদ_কল
prettyসুন্দর
dumpবিস্তারিত
Futureভবিষ্যৎ
futurifyভবিষ্যৎকর

behavior-এর জন্য Globals পেজ।

মডিউল নাম

import "X" এবং import "Y" যদি একই মডিউলের alias হয় — তবে তারা একই Module instance ফেরত দেয়। == দিয়ে comparing-এ true

Native module

ইংরেজিবাংলা
_io_ফাইল
timersটাইমার
netনেট
jsonজেসন
sysসিস্টেম
timeসময়
pathপথ
mathগণিত
randomএলোমেলো
cryptoক্রিপ্টো
regexপ্যাটার্ন
httpএইচটিটিপি
tlsটিএলএস

Lib (embedded) module

ইংরেজিবাংলা
ioফাইল
requestঅনুরোধ
webওয়েব
urlইউআরএল
logলগ
testটেস্ট
zlibসংকোচন
sqliteএসকিউলাইট
pgপোস্টগ্রেস
mongoমঙ্গো
execচালান
dnsডিএনএস
templateটেমপ্লেট
wsওয়েবসকেট
cookieকুকি
sessionঅধিবেশন
multipartমাল্টিপার্ট
dotenvডটএনভ
cliকমান্ড
uuidইউইউআইডি
csvসিএসভি

যাচাই

দু'টি রূপ runtime-এ একই value-তে resolve হয় তা যাচাই করতে পারেন:

import "এলোমেলো" as rng_bn;
import "random"     as rng_en;
print(rng_bn == rng_en);   // true

print(Future == ভবিষ্যৎ);   // true

কেন এই ব্যবস্থা

Bnlang-এর লক্ষ্য — লেখক যে ভাষায় চিন্তা করেন সেই ভাষায়ই কাজ করতে পারবেন, ecosystem-এ fork তৈরি না করে। দুই রূপে লেখা প্রোগ্রাম পুরোপুরি equivalent; এক রূপে লেখা library অন্য রূপ থেকে ব্যবহারযোগ্য; কখনোই global ভাবে একটা বেছে নিতে হবে না।

পূর্ণ alias table থাকে src/runtime/bn_aliases.h-এ — এক ফাইল, এক source of truth। নতুন alias যোগ এক-লাইনের পরিবর্তন।