std.target
API সারমর্ম (Beans source থেকে npm run coverage দিয়ে বানানো): 10টা package function।
std.target বলে দেয় যে target-এর জন্য compile করা হচ্ছে তার কথা। প্রতিটা value একটা compile-time constant, তাই compiler build করার সময়েই সেটা program-এ বসিয়ে দেয়। এটা একটা native module, আর এর function-গুলো checker-এ typed; একটাও কোনো argument নেয় না।
import std.targetএগুলো compile-time constant বলে, এরা বেছে নেওয়া target-এর কথা বলে, যে machine-এ কাজ করা হচ্ছে তার নয়। beansc run-এর নিচে বেছে নেওয়া target সবসময় host-ই, তাই ওখানে দুটো মিলে যায়।
String তথ্য
“String তথ্য” সেকশনtriple() -> stringarch() -> stringos() -> stringenv() -> stringobject_format() -> stringendian() -> stringtriple()হলো পুরো target triple।arch()হলো CPU architecture, যেমনx86_64বাaarch64।os()হলো operating system।env()হলো triple-এর environment/ABI অংশ।object_format()হলো object file-এর format।endian()হলো byte order,littleবাbig।
Number তথ্য
“Number তথ্য” সেকশনpointer_bits() -> intpointer_size() -> intstack_align() -> intmax_simd_bits() -> intpointer_bits()হলো bit-এ pointer-এর size, যেমন 64।pointer_size()হলো বাইটে pointer-এর size, যেমন 8।stack_align()হলো বাইটে stack alignment।max_simd_bits()হলো bit-এ সবচেয়ে চওড়া SIMD vector। এটা--cpuআর--featuresflag দিয়ে build করা মেনে চলে, কারণ ওগুলোই ঠিক করে কোন কোন vector width পাওয়া যাবে।
import std.ioimport std.target
fn main() { io.println(target.arch()) // e.g. aarch64 io.println(target.pointer_size()) // e.g. 8 io.println(target.endian()) // e.g. little}আরও দেখুন
“আরও দেখুন” সেকশন- Compile-time guide, build-এর সময় constant-গুলো কীভাবে fold হয়।
- std.encoding.binary, এর
nativebyte order এই module দিয়েই resolve হয়।