প্রকল্প সম্পর্কে

LAMINARIA (Rust Nim Unified Toolchain) হলো একটি গবেষণা এবং উন্নয়ন প্রকল্প যা Rust এবং Nim-এর জন্য একটি ইউনিফাইড কম্পিউটেশনাল মডেল এবং টুলচেইন অন্বেষণ করছে। Cargo, rustc, Nimble, Nim, LLVM, LTO, লিঙ্কার এবং WebAssembly টুলিং-কে বাইরের বিল্ড স্ক্রিপ্ট দ্বারা যুক্ত কিছু অস্পষ্ট কমান্ড হিসেবে বিবেচনা করার পরিবর্তে, এটি সোর্স থেকে এক্সিকিউটেবল পর্যন্ত পথটিকে একটি সুস্পষ্ট অ্যাকশন গ্রাফে বিভক্ত করে: Source Graph → Compiler Pipeline → Unified Program Graph → Variant / Artifact Graph → Backend Pipeline Graph → Action Graph → Nim Planning Kernel → Rust Runtime Scheduler এই প্রকল্পটি Rust কম্পাইলারের বিভিন্ন পর্যায় যেমন HIR, MIR, monomorphization, codegen units, rustc_codegen_ssa, LLVM, Cranelift এবং GCC ব্যাকএন্ড, LTO, অবজেক্ট জেনারেশন এবং লিঙ্কিং-এর পাশাপাশি Nim ফ্রন্টএন্ড, সেমান্টিক প্রসেসিং, ব্যাকএন্ড কোড জেনারেশন, নেটিভ কম্পাইলেশন এবং লিঙ্কিং নিয়ে অধ্যয়ন করে। LLVM-কে একটি নির্দিষ্ট ভিত্তি হিসেবে নয়, বরং বেশ কয়েকটি নির্বাচনযোগ্য কোড-জেনারেশন রুটের একটি হিসেবে বিবেচনা করা হয় এবং WebAssembly-কে একটি ব্যাকএন্ড ভ্যালুর পরিবর্তে একটি টার্গেট পাইপলাইন (কোড জেনারেশন, wasm-ld, পোস্ট-লিঙ্ক অপ্টিমাইজেশন, WIT/adapters, কম্পোনেন্টাইজেশন) হিসেবে মডেল করা হয়। কম্পাইলার ভার্সনকে একটি ফার্স্ট-ক্লাস গ্রাফ ডাইমেনশন হিসেবে পরিচালনা করা হয়। এই ডিজাইনের লক্ষ্য হলো একাধিক সঠিক Rust টুলচেইন এবং Nim 2 ও Nim 3/Nimony-কে সমর্থন করা, যেখানে প্যাকেজ এবং ওয়ার্কস্পেস কনস্ট্রেইন্টগুলোকে একটি নির্বাচিত টুলচেইনে রেজলভ করা হয় এবং রান, অ্যাকশন, আর্টিফ্যাক্ট, ক্যাশ এবং কম্প্যাটিবিলিটি সিদ্ধান্তে প্রোডিউসিং কম্পাইলার আইডেন্টিটি সংরক্ষণ করা হয়। যেহেতু ইন্টারনাল ভেরিয়েন্ট স্পেস অনেক বড় হতে পারে, তাই প্রকল্পটি প্রমাণ-ভিত্তিক Validated Toolchain Profiles-এর ওপর গুরুত্ব দেয়, যেমন recommended, latest-validated, long-term এবং preview; যেখানে প্রোফাইল এলিয়াসগুলো ইমিউটেবল এক্স্যাক্ট বান্ডেল রিভিশনে রেজলভ হয়, সাথে থাকে ইনটেন্ট প্রিসেট এবং এক্সপার্ট গ্রাফ কনস্ট্রেইন্টস। টুলের ব্যবহারযোগ্যতা নিজেই প্রকল্পের একটি উদ্দেশ্য হিসেবে উল্লেখ করা হয়েছে: এর পরিকল্পিত সাধারণ পথটি হলো প্রথমে কনস্ট্রেইন্ট রেজোলিউশন এবং প্রুনিং, তারপরে প্রমাণ-ভিত্তিক কার্যকর প্ল্যানগুলোর একটি ছোট র‍্যাঙ্কড সেট এবং সবশেষে এক্সিকিউশন; যেখানে পরিচিত ইনকম্প্যাটিবিলিটিগুলোকে স্ট্রাকচার্ড নেগেটিভ নলেজ হিসেবে রাখা হয় যাতে একই ব্যর্থতা বারবার পুনরাবৃত্তি করতে না হয়। ব্যাপক ব্রুট-ফোর্স এক্সপ্লোরেশন ডিফল্ট অভিজ্ঞতার পরিবর্তে একটি সুস্পষ্ট রিসার্চ মোড হিসেবে রাখা হয়েছে। আর্কিটেকচারালি এই বিভাজনটি ভাষার পরিবর্তে দায়িত্বের ভিত্তিতে করা হয়েছে: একটি Nim Planning Kernel গ্রাফ নরমালাইজেশন, কনস্ট্রেইন্ট সলভিং, কম্বিনেটোরিয়াল রেজোলিউশন, আর্টিফ্যাক্ট-ডিমান্ড প্রোপাগেশন, প্রুনিং এবং ক্রিটিক্যাল-পাথ অ্যানালাইসিস পরিচালনা করে, অন্যদিকে একটি Rust Runtime Scheduler CLI, টুলচেইন ডিসকভারি, OS ইন্টারঅ্যাকশন, প্রসেস এক্সিকিউশন, রিসোর্স অ্যাকাউন্টিং, ক্যাশ/CAS, ডেমোন সার্ভিসেস, মেজারমেন্ট এবং ট্রেসিং এবং শিডিউলিং পরিচালনা করে। বর্তমানে রিপোজিটরিতে এনভায়রনমেন্ট এবং টুলচেইন আইডেন্টিটি লেয়ার বিদ্যমান। একটি রিপোজিটরি-মালিকানাধীন মাল্টি-টুলচেইন লক (toolchains.lock.toml) একটি doctor কমান্ডের মাধ্যমে সঠিক EnvironmentFingerprint এবং ToolchainFingerprint রেকর্ডে রেজলভ হয়: scripts/bootstrap.sh লক ফাইলের বিপরীতে মিসিং টুলগুলোর রিপোর্ট করে; --install এর মাধ্যমে সেগুলো ইনস্টল করা হয় (macOS/Homebrew এবং rustup)। বুটস্ট্র্যাপ স্ক্রিপ্টটি যেখানে সম্ভব সিস্টেম-প্যাকেজ-ম্যানেজার সোর্সের পরিবর্তে সঠিক সোর্স পছন্দ করে (llvm-tools সহ rustup টুলচেইন, সঠিক Nim ভার্সনের জন্য choosenim, পিওর-Rust CLI টুলগুলোর জন্য cargo install --version), এবং শুধুমাত্র clang/llvm-config এবং Binaryen-এর wasm-opt-এর মতো বিকল্পহীন টুলগুলোর জন্য সিস্টেম প্যাকেজ ম্যানেজার ব্যবহার করে। cargo run -p laminaria-cli -- doctor একটি হিউম্যান-রিডেবল এনভায়রনমেন্ট রিপোর্ট প্রিন্ট করে এবং --json মেশিন-রিডেবল ফিঙ্গারপ্রিন্টগুলো প্রদান করে। একটি docker/bootstrap.Dockerfile রিপ্রোডিউসিবল বুটস্ট্র্যাপ চেকের জন্য কন্টেইনারে একই স্ট্যাক চালায়; মেজারমেন্ট ডকুমেন্টেশন অনুযায়ী এটি শুধুমাত্র কারেক্টনেস রিপ্রোডাকশনের জন্য, এবং doctor এনভায়রনমেন্ট_ক্লাস = "container" রেকর্ড করে যাতে কন্টেইনার রানগুলোকে নিঃশব্দে নেটিভ বেসলাইনের সাথে তুলনা করা না হয়। ডকুমেন্টেশন ইংরেজি এবং জাপানি উভয় ভাষায় প্রদান করা হয়েছে, যা এজেন্ট-ওরিয়েন্টেড টুলচেইন UX এবং বাউন্ডেড প্ল্যানিং, ভ্যালিডেটেড টুলচেইন প্রোফাইল এবং প্রগ্রেসিভ কনফিগারেশন, মাল্টি-ভার্সন Rust/Nim টুলচেইন পলিসি, মেজারমেন্ট ফাউন্ডেশন এবং এনভায়রনমেন্ট/ট্রেস স্ট্র্যাটেজি, ব্যাকএন্ড পাইপলাইন হোয়াইট-বক্সিং, রিসার্চ ফাউন্ডেশন, রিসার্চ প্রোগ্রাম এবং এভিডেন্স পলিসি, Rust–Nim নেটিভ লিঙ্কিং, মেট্রিক্স-ফার্স্ট রিসার্চ পলিসি, একটি ইস্যু প্ল্যান এবং একটি প্রজেক্ট প্রপোজাল কভার করে। লাইসেন্সিং দ্বৈত: ব্যবহারকারীর পছন্দ অনুযায়ী Apache License 2.0 অথবা MIT, তবে থার্ড-পার্টি কম্পোনেন্টগুলো তাদের নিজস্ব লাইসেন্সের অধীনে থাকে। README-তে এই কাজটিকে একটি রিসার্চ প্রোগ্রাম হিসেবে উপস্থাপন করা হয়েছে যা অপ্টিমাইজেশনের আগে একটি মেজারমেন্ট স্পাইন স্থাপন করে, তাই এখানে সক্ষমতার দাবিগুলো যাচাইকৃত বিল্ড পারফরম্যান্সের পরিবর্তে ডিজাইন ইনটেন্ট এবং বর্তমানে কমিটেড এনভায়রনমেন্ট-আইডেন্টিটি টুলিং-কে প্রতিফলিত করে।