প্রকল্প সম্পর্কে
Hum হলো একটি সিস্টেমস প্রোগ্রামিং ভাষার প্রাথমিক পর্যায়ের (0.0.1 প্রি-আলফা) ডিজাইন ড্রাফট। এর ঘোষিত লক্ষ্য হলো নিম্ন-স্তরের Rust/C++-ধাঁচের ক্ষমতার সঙ্গে Python-সদৃশ পাঠযোগ্যতা, স্ট্যাটিক টাইপ, স্পষ্ট ইফেক্ট, ডিফল্টভাবে মেমরি সুরক্ষা এবং মানুষ ও কোডিং এজেন্ট উভয়ের জন্য কম্পাইলার-উৎপন্ন কনটেক্সট একত্র করা।
মূল ধারণা হলো সাধারণত কমেন্ট হিসেবে লেখা কন্ট্রাক্টগুলো চেকড প্রতিশ্রুতিতে পরিণত হয়। একটি টাস্ক `why`, `targets`, `uses`, `changes`, `needs`, `ensures`, `protects`, `trusts`, `fails when`, `watch for`, `cost`, `allocates`, `avoids`, `tradeoffs`, `optimizes`, `tests`, এবং `does`-এর মতো সেকশন ঘোষণা করতে পারে। রিপোজিটরিতে ইচ্ছাকৃতভাবে নষ্ট করা একটি ফিক্সচার রয়েছে যার `ensures: result == a + b` একটি `return a - b` বডি দ্বারা লঙ্ঘিত হয়; এটি চালালে এমন একটি ডায়াগনস্টিক তৈরি হয় যা কলারের বদলে টাস্ক ইমপ্লিমেন্টেশনকে দোষারোপ করে।
ওনারশিপ শব্দগুলো (`borrow`, `change`, `consume`)ও চেকড প্রতিশ্রুতি হিসেবে বিবেচিত হয়। লোকাল ভিউ সংকীর্ণ: একটি ফিল্ড বরো করলে সেই ফিল্ডে পরবর্তী লেখা দ্বারা তা বাতিল হয়, এবং একটি লিস্ট এলিমেন্ট বরো করলে পরবর্তী বৃদ্ধি দ্বারা তা বাতিল হয়। একটি রাইটেবল অ্যালিয়াস ফর্ম (`let alias = change record.field`) এর মধ্য দিয়ে লেখে এবং শুধুমাত্র তার শেষ স্ট্রেইট-লাইন সিনট্যাকটিক ব্যবহার পর্যন্ত সক্রিয় থাকে। ইউজ-আফটার-মুভ মুভ সাইটের নামসহ রিপোর্ট করা হয়। `old(...)` টাস্ক এন্ট্রিতে একটি প্যারামিটারের মান ধারণ করে, তাই যে swap কখনো swap করে না তা তার নিজের কন্ট্রাক্ট দ্বারা ধরা পড়ে।
README সীমাবদ্ধতা সম্পর্কে স্পষ্ট: `cost:`, `allocates:`, `protects:`, এবং `trusts:` লাইনগুলো আজ রেকর্ডকৃত ইন্টেন্ট, গ্রাফ ফ্যাক্ট এবং উৎপন্ন বাধ্যবাধকতা, প্রয়োগকৃত প্রমাণ নয়। চেকার রিপোর্ট একটি স্পষ্ট নন-ক্লেইম তালিকা প্রকাশ করে যাতে চেকড ও ঘোষিতের মধ্যে সীমানা দৃশ্যমান থাকে।
স্ট্যাটাস: একটি Milestone 0 Rust বুটস্ট্র্যাপ কম্পাইলার ফ্রন্ট-এন্ড, যেখানে Milestone 1 এক্সিকিউশন `hum run`-এর মাধ্যমে প্রথম Formal Core ফিক্সচার ইন্টারপ্রেট করে শুরু হয়েছে। প্রথম ক্যানোনিকাল নেটিভ স্লাইস হলো `programs/integer_sign.hum`, যা `hum run --native --allow stdout.write ... --args -7` দিয়ে চালানো হয়, যা সোর্স চেক করে, ব্যাকএন্ড ফ্যাক্ট যাচাই করে এবং সমর্থিত Windows ও Linux হোস্টে Cranelift-এর মাধ্যমে প্রিন্ট করে। README এটিকে একটি সীমাবদ্ধ প্রোগ্রাম আকৃতি হিসেবে বর্ণনা করে, সাধারণ নেটিভ কম্পাইলেশন নয়।
রিপোজিটরিটি ডকুমেন্টেশন-ভারী: আর্কিটেকচার, ল্যাঙ্গুয়েজ রেফারেন্স, গ্রামার, সিনট্যাক্স সারফেস, ক্যাপাবিলিটিজ, টার্গেট ফ্যাক্ট, এভিডেন্স রিপোর্ট, ম্যাথ অবলিগেশন, রিসোর্স রিপোর্ট, Core Hum contract/preview/lower/verify, type/effect/ownership/resource চেক, IR contract ও readiness, backend input/probe/contract, LSP capabilities, doctor, এছাড়া ডিসিশন রেকর্ড, সিকিউরিটি মডেল, unsafe পলিসি, ইন্টারঅপ ও পোর্টেবিলিটি, মেমরি সেফটি মডেল, কম্পাইল-টাইম স্ট্র্যাটেজি, stdlib স্ট্র্যাটেজি, রানটাইম প্রোফাইল, ব্যাকএন্ড স্ট্র্যাটেজি, রোডম্যাপ, গভর্নেন্স এবং রিসার্চ নোট। টুলিংয়ে রয়েছে একটি TextMate গ্রামার, একটি পরিকল্পিত ফরম্যাটার (`humfmt`), একটি প্যাকেজ ম্যানেজার পরিকল্পনা (Nectar), এবং CLI কমান্ড যেমন `check`, `version`, `explain`, `diagnostics`, `capabilities`, `target-facts`, `core-contract`, `core-preview`, `core-lower`, `core-verify`, এবং `full-type-check`, যার কয়েকটিতে JSON আউটপুট আছে।
বুটস্ট্র্যাপ কম্পাইলারটি Rust-এ লেখা এবং ডিফল্টভাবে unsafe কোড নিষিদ্ধ করে, একটি পর্যালোচিত, স্থানীয়ভাবে অনুমোদিত unsafe JIT ইনভোকেশন সীমানা এবং পাঁচটি পিন করা Cranelift ডিপেন্ডেন্সিসহ। Cargo হলো বর্তমান বিল্ড ও ইনস্টল পথ, যদিও README উল্লেখ করে যে দীর্ঘমেয়াদে Hum-কে "শুধু একটি Cargo ক্রেট" হিসেবে উপস্থাপন করা উচিত নয়।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.