মূল লেখায় যান

Builtins

Builtin হলো এমন type বা function যেটা Beans compiler নিজেই চেনে। এটা import করতে হয় না, নিজে লিখতেও হয় না। সব সময় হাতের কাছে থাকে, চাইলেই ব্যবহার করা যায়। int type, string type, List, Option, আর panic function — এগুলো সবই builtin।

এই পেজে প্রতিটা builtin-এর নাম দেওয়া আছে, আর প্রতিটার পুরো ব্যাখ্যা যে পেজে আছে সেটার লিংক দেওয়া আছে।

Beans তার builtin গুলো দুই ভাবে তৈরি করে। কোড লেখার সময় এটা নিয়ে ভাবার দরকার নেই, তবে একবার জেনে রাখলে সুবিধা।

  • কিছু builtin C++ দিয়ে লেখা, আর একটা fixed runtime table দিয়ে ওগুলোতে পৌঁছানো হয় (এটাকে বলে “runtime ABI”)। এগুলো হলো string, Bytes, File, MMap, আর যেসব std.* module operating system-এর সাথে কথা বলে সেগুলো। টেবিলটা দেখা যাবে compiler/beans/expression.b-তে।
  • বাকিগুলো compiler-এর নিজের type checker-এ লেখা, আর code generator ওগুলোকে machine code বানিয়ে দেয়। এগুলো হলো generic type গুলো (List, Map, Box, Atomic, RawPtr, Slice, SIMD) আর compile-time-এর সাহায্যকারী যেমন size_of। checker দেখা যাবে compiler/beans/expression.b-তে।

এই compiler-এর runtime ABI version হলো 6। compiler নিজের version জানায় 0.1.18, আর language contract 1.0-তে আটকানো আছে।

Beans-এ null নেই, exception নেই। এর বদলে “হয়তো আছে” আর “ব্যর্থ হলো” — এই ধরনের উত্তরের জন্য তিনটা builtin type দেওয়া আছে। এই reference জুড়ে এগুলো বারবার চোখে পড়বে:

  • Option<T>: এমন একটা value যা হয়তো থাকে না।
  • Result<T, E>: একটা value, নয়তো একটা error।
  • Error: standard error class।

এগুলো, আর ListMap-এর মতো collection type গুলো — সবই builtin। পুরো গল্পটা Option, Result, আর Error-এ পড়ে নিন।

পেজকী নিয়ে
Primitive typeunit, bool, integer আর float type গুলো, byte, string
Numbers আর decimalnumber-এর নিয়ম, as দিয়ে cast, আর নিখুঁত decimal math
stringstring type আর তার প্রতিটা method
Bytesবাড়তে পারা byte buffer Bytes
CollectionsList, Map, আর OrderedMap
Option, Result, আর ErrorOption, Result, Error, some/none/ok/err, আর ? operator
Ownership handleBox, Arena, Shared, Weak, Mutex, Channel, Thread, AtomicInt
AtomicsAtomic<T> আর MemoryOrder
File আর mappingFile, Dir, MMap
SIMD, array, আর pointerSimd{N}{elem}, [T; N], Slice<T>, RawPtr<T>
Prelude functionpanic, size_of/align_of/offset_of, printing
  • language guide দেখাবে type, error, memory আর বাকি সব কীভাবে একসাথে খাপ খায়।
  • standard library reference-এ আছে সেই module গুলো যেগুলো import std.* দিয়ে import করা হয়।