ক লাইটওয়েট, বজ্রপাতরিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য টাইপ-নিরাপদ এম্বেডযোগ্য ভাষা।
import print, error, Error from core
import abs, epsilon from math
// The return type of safe_divide is inferred to be `Error | number`
fn safe_divide(a: number, b: number)
if abs(b) < epsilon
return error("Cannot divide by zero!")
return a / b
match let result = safe_divide(10, 5)
is Error
// The type of result is narrowed in this branch!
print("Failed to divide:", result.what)
is number
print("The answer is", result)
- বজ্রপাত-দ্রুত পারফরম্যান্স, এর ক্লাসে অন্যান্য ভাষাগুলিকে ছাড়িয়ে যাওয়া
- কমপ্যাক্ট বাস্তবায়ন, ব্রাউজ করার জন্য যথেষ্ট পরিমাণে কনসেস থাকাকালীন বিল্ড আকারে একটি ন্যূনতম প্রভাব ফেলে।
- জ্বলজ্বলে দ্রুত সংকলন, 500 কিলোক/থ্রেড/সেকেন্ডেরও বেশি কোডের মাধ্যমে লাঙ্গল। এটি চোখের পলকে 50’000 লাইন।
- এম্বেডিংয়ের স্বাচ্ছন্দ্য, যেতে কেবল কয়েক মুঠো লাইন
- কোড চালানোর আগে ত্রুটিগুলি ধরতে সমৃদ্ধ টাইপ সিস্টেম, এটি দেশীয় কোড থেকে প্রসারিত করার জন্য প্রচুর সমর্থন সহ
- এম্বেড-প্রথম নকশা, আন্তঃ ভাষা কর্মক্ষমতা এবং তত্পরতা অগ্রাধিকার দেওয়া
বোল্ট কেবল সি স্ট্যান্ডার্ড লাইব্রেরির পাশাপাশি নির্ভর করে libm
ইউনিক্স-ভিত্তিক সিসিটেমগুলিতে। কিছু স্ট্যান্ডার্ড লাইব্রেরি মডিউলগুলিতে ফাইল এবং সিস্টেম আইওর মতো জিনিস অন্তর্ভুক্ত থাকে তবে এগুলি সহজেই অক্ষম করা যায়। ডিফল্টরূপে, বোল্ট এমন একটি পরিবেশ সেট আপ করে যা ব্যবহার করে malloc
/realloc
/free
তবে এটি কনফিগার করাও সহজ। বোল্ট রেজেক্স পার্সিংয়ের জন্য আমার অন্যান্য লাইব্রেরি পিকোম্যাচ এম্বেড করে
বোল্ট-সিএলআই প্রোগ্রামটি কীভাবে একটি অ্যাপ্লিকেশন এম্বেড করতে হয় তার একটি খুব কনসিসের উদাহরণ সরবরাহ করে, আরও তথ্যের জন্য বোল্ট এম্বেডিং গাইড দেখুন।
উদাহরণ ফোল্ডারে আদর্শিকভাবে লিখিত বোল্ট কোডের কয়েকটি সংক্ষিপ্ত উদাহরণ রয়েছে। আরও কিছু গভীর-ভাষার ওভারভিউয়ের জন্য ওয়েল হিসাবে পরীক্ষা এবং বেঞ্চমার্ক ফোল্ডারগুলি দেখুন।
বোল্ট বর্তমানে কেবল x64 এ তৈরি করে। 32-বিট আর্কিটেকচারগুলি স্পষ্টভাবে সমর্থিত নয়, এআরএম এবং আরআইএসসিভি অনির্ধারিত। চলমান cmake
প্রকল্পের মূল ডিরেক্টরিতে ভাষার জন্য একটি স্ট্যাটিক লাইব্রেরি, পাশাপাশি সিএলআই সরঞ্জাম তৈরি করবে। আপনার আবেদনে এম্বেডিং বোল্ট সম্পর্কিত আরও তথ্য এবং বিকল্পগুলির জন্য দেখুন bt_config.h
। প্রতিটি প্রাসঙ্গিক সংকলকটিতে বোল্টের স্থিতির জন্য নীচে দেখুন।
দয়া করে মনে রাখবেন যে বোল্ট হয় না তবুও স্থিতিশীল, সংকলক বাগ এবং ক্র্যাশগুলির মুখোমুখি হওয়ার প্রত্যাশা করুন। আপনি যদি তা করেন তবে প্রতিরূপযোগ্য বল্ট কোডের সাথে কোনও সমস্যা খোলার অনেক প্রশংসা করা হবে 😊
সংকলক | স্থিতি | কারণ |
---|---|---|
এমএসভিসি | ✅ | কোন সমস্যা নেই |
জিসিসি | ✅🟨 | সমস্ত কার্যকরী, কিছু সতর্কতা |
জঞ্জাল | ✅🟨 | সমস্ত কার্যকরী, কিছু সতর্কতা |
বোল্ট একটি খুব মতামতযুক্ত প্রকল্প, এবং যে কোনও অবদান দৃষ্টিভঙ্গি বিবেচনায় নেওয়া উচিত।
বাগফিক্সগুলি যতক্ষণ না তারা যুক্তির মধ্যে থাকে এবং কোনও প্রত্যাশিত আচরণ পরিবর্তন করে না ততক্ষণ গ্রহণযোগ্য হতে পারে। রিগ্রেশনের ক্ষেত্রে পরীক্ষা যুক্ত করাও খুব প্রশংসা করা হয়। একটি পরিষ্কার রান /tests/all
অবশ্যই প্রত্যাশিত।
অনুরূপ মানদণ্ডের অধীনে ছোটখাটো সংস্করণগুলির জন্যও অপ্টিমাইজেশন গ্রহণ করা যেতে পারে। একটি আগে/পরে রান /benchmarks/all
এর প্রভাবটি মূল্যায়ন করা এবং অন্য কোনও কিছুই পুনরায় প্রমাণিত হওয়ার বিষয়টি নিশ্চিত করা হবে বলে আশা করা হচ্ছে। যদি নির্দিষ্ট অপ্টিমাইজেশন কোনও বিদ্যমান বেঞ্চমার্কে ক্যাপচার না করা হয় তবে একটি যুক্ত করার প্রয়োজন হয়।
বৈশিষ্ট্য সংযোজনগুলির অনেক বিবেচনার প্রয়োজন হবে, বোল্ট তার ‘ডিজাইন এবং ফিচারসেটে খুব ইচ্ছাকৃতভাবে ন্যূনতম। আমি আপনাকে পর্যালোচনা করার জন্য কোনও বৈশিষ্ট্যটিতে কোনও উল্লেখযোগ্য কাজ শুরু করার আগে কোনও ধরণের প্রস্তাব বা পরিকল্পনা জমা দেওয়ার পরামর্শ দিচ্ছি। কেস, পারফরম্যান্স এবং বাস্তবায়ন ব্যয় সবই ন্যায়সঙ্গত হওয়ার আশা করা হবে।
বোল্ট এমআইটির অধীনে লাইসেন্সপ্রাপ্ত। আরও তথ্যের জন্য লাইসেন্স দেখুন।