Examples and recipes
Beans repo-র সাথে অনেকগুলো উদাহরণ প্রোগ্রাম আসে,
examples/ ফোল্ডারের ভেতরে।
প্রতিটাই আসল, চালানো যায় এমন .b ফাইল, আর একেকটা ভাষার একেকটা অংশ দেখায়।
এই পেজে দেখানো হলো এগুলো কীভাবে চালানো যায়, আর কোনগুলো পড়ে দেখা দরকার।
একটা উদাহরণ কীভাবে চালাবে
“একটা উদাহরণ কীভাবে চালাবে” সেকশনbeansc run-এর পরে একটা ফাইলের নাম দিন:
beansc run examples/hello.bবেশিরভাগ উদাহরণই দুইভাবে কাজ করে — beansc run (interpreter) দিয়েও, আর
beansc build (native binary) দিয়েও। দুইভাবেই একই output পাওয়া যায়।
multi-package উদাহরণটা একটা পুরো project, তাই সেটা তার main.b থেকে চালাতে হয়:
beansc run examples/shop/main.bকিছু উদাহরণ আবার target-gated — এগুলোর জন্য বিশেষ target বা CPU লাগে, সাধারণ desktop build-এ চলবে না। এমনগুলো নিচে আলাদা করে চিহ্নিত করা আছে।
ভাষার বেসিক
“ভাষার বেসিক” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| hello.b | Hello world আর string interpolation | হ্যাঁ |
| tour.b | এক ফাইলে ভাষার সব আইডিয়ার একটা ট্যুর | হ্যাঁ |
বিস্তারিত দেখুন Hello আর ট্যুর পেজে।
Object-oriented কোড আর value type
“Object-oriented কোড আর value type” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| oop_classes.b | priv method আর field, static field, abstract method, interface, আর একটা singleton | হ্যাঁ |
| generic_structs.b | Generic struct, default, read method, inout fn, আর static factory | হ্যাঁ |
বিস্তারিত দেখুন OOP class আর value type পেজে।
Concurrency
“Concurrency” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| threads.b | OS thread, generic, enum, Option/Result, decimal | হ্যাঁ |
| atomics.b | Typed Atomic<T>, সাথে explicit MemoryOrder | হ্যাঁ |
| wide_concurrency.b | channel-এর মধ্য দিয়ে struct আর enum value পাঠানো | হ্যাঁ |
| wide_sync.b | Mutex-এর মধ্য দিয়ে struct আর enum value | হ্যাঁ |
বিস্তারিত দেখুন Thread আর channel আর Atomics পেজে।
File আর storage
“File আর storage” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| files.b | File/Dir static, positional I/O, error | হ্যাঁ |
| reader.b | Buffered করে লাইন পড়া | হ্যাঁ |
| kv.b | Append-only key-value store, সাথে durable commit | হ্যাঁ |
| locks.b | Advisory file lock (flock), single-writer প্যাটার্ন | হ্যাঁ |
| mmap.b | পুরো ফাইলকে memory-তে map করা | হ্যাঁ |
| shared_memory.b | POSIX shared memory-কে MMap হিসেবে | হ্যাঁ |
বিস্তারিত দেখুন File আর একটা KV store পেজে।
Networking
“Networking” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| net.b | এক process-এই loopback-এর উপর TCP আর UDP | হ্যাঁ |
| poller.b | অনেক descriptor-এর জন্য একসাথে wait করা (epoll/kqueue) | হ্যাঁ |
| signals.b | poller দিয়ে signal-কে data হিসেবে ধরা | হ্যাঁ |
বিস্তারিত দেখুন Networking পেজে।
C interop আর low-level
“C interop আর low-level” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| ffi.b | libc-তে extern "C" call, unsafe-এর ভেতরে RawPtr | হ্যাঁ |
| c_layout_structs.b | extern "C" struct layout | হ্যাঁ |
| c_layout_unions.b | extern "C" union layout | হ্যাঁ |
| dynamic_library.b | চলতে চলতে একটা shared library load করা, একটা address-এ call করা | হ্যাঁ (load করার মতো একটা library লাগবে) |
| packed.b | packed আর align(N) | হ্যাঁ |
| layout.b | size_of / align_of / offset_of | হ্যাঁ |
| raw_slices.b | Slice<T> | হ্যাঁ |
| unsafe_raw.b | RawPtr null / alloc / offset / read / write | হ্যাঁ |
বিস্তারিত দেখুন C interop (FFI) পেজে।
Memory আর ownership
“Memory আর ownership” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| box.b | Generic move-only handle | হ্যাঁ |
| arena.b | Generic move-only handle | হ্যাঁ |
| shared_weak.b | Shared আর Weak | হ্যাঁ |
| ordered_map.b | OrderedMap | হ্যাঁ |
| cycles.b | collector যেভাবে reference cycle free করে | হ্যাঁ |
| ctors.b | init / deinit চুক্তি | হ্যাঁ |
| generic_deinit.b | deinit আর একটা closure factory সহ একটা generic class | হ্যাঁ |
Process, সময়, আর মেশিন
“Process, সময়, আর মেশিন” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| child_process.b | Command.start(), যেটা একটা Child ফেরত দেয় (async ব্যবহার করে) | হ্যাঁ |
| processes.b | Command.run() | হ্যাঁ |
| clocks_random.b | সময় আর random | হ্যাঁ |
| cpu_dispatch.b | cpu.has আর একটা feature-gated function | হ্যাঁ (feature-gated কোডের জন্য ওই CPU feature লাগবে) |
| intrinsics.b | std.intrinsic | হ্যাঁ |
| inline_asm.b | std.asm | হ্যাঁ |
| target_info.b | std.target | হ্যাঁ |
SIMD
“SIMD” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| simd.b | Simd4f32 fused multiply-add | হ্যাঁ (কিছু SIMD-এর জন্য CPU feature লাগে) |
| simd_families.b | SIMD family-র নামকরণ, width আর feature নিয়ম | হ্যাঁ (কিছু SIMD-এর জন্য CPU feature লাগে) |
Standard library-র ট্যুর
“Standard library-র ট্যুর” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| fmt.b | std.fmt | হ্যাঁ |
| strings.b | String নিয়ে কাজ | হ্যাঁ |
| bytes.b | Bytes নিয়ে কাজ | হ্যাঁ |
| containers.b | Collection | হ্যাঁ |
| stdlib_beans.b | stdlib-র একটা ট্যুর | হ্যাঁ |
এই ট্যুরগুলোর কিছু কিছু ইচ্ছা করেই একটা panic দিয়ে শেষ হয়। এটা এদের test হিসেবে কাজ করারই একটা অংশ, ভয়ের কিছু নেই।
Multi-package project
“Multi-package project” সেকশন| উদাহরণ | কী দেখায় | চালানো যায়? |
|---|---|---|
| shop/ | তিনটা package, package পেরিয়ে interface আর generic | হ্যাঁ, examples/shop/main.b দিয়ে |
বিস্তারিত দেখুন একটা local-package project পেজে।
Target-gated উদাহরণ
“Target-gated উদাহরণ” সেকশনএগুলোর জন্য নির্দিষ্ট target বা runtime লাগে, সাধারণ desktop build-এ চলবে না:
| উদাহরণ | কী লাগবে |
|---|---|
| embedded.b | একটা 32-bit no-OS target (সেখানে decimal চলবে না) |
| freestanding.b | --runtime freestanding |
language guide-এ সব feature একের পর এক আছে, আর builtin reference ও standard library reference রয়েছে — কিছু খুঁজতে চাইলে সেখানে দেখে নেওয়া যায়।