Wave + Whale ইন্টিগ্রেটেড ডেভেলপমেন্ট রোডম্যাপ v2
এই নথিটি ওয়েভ ভাষা এবং হোয়েল কম্পাইলার টুলচেইনের সমন্বিত উন্নয়ন প্রক্রিয়ার একটি ধাপে ধাপে বিশ্লেষণ দেওয়া রোডম্যাপ। ওয়েভ এবং হোয়েল প্রথমে বিচ্ছিন্ন অংশ হিসেবে শুরু করলেও, অবশেষে একটি স্বতন্ত্র ভাষা পরিবেশে পুরোপুরি একীভূত করার লক্ষ্য।
সম্পূর্ণ উন্নয়ন স্তর নিম্নলিখিত প্রবাহকে অনুসরণ করে।
pre-alpha → pre-beta → alpha → beta → rc → release
প্রতিটি স্তর পূর্ববর্তি স্তরের ফলাফলের উপর ভিত্তি করে অগ্রসর হয় এবং যখন একটি স্তর পূর্ণ হয় তখন আগের কাঠামোয় ফিরে না যাবার একমুখী উন্নয়নের উপর এটা নির্ভর করে।
পূর্ব-বেটা পর্যায়
Pre-Beta স্তরের লক্ষ্য ওয়েভ ফ্রন্টএন্ডকে সম্পূর্ণ করা এবং LLVM ব্যাকএন্ডের উপর ভিত্তি করে ভাষার সম্পূর্ণ ফিচার বাস্তবায়ন। এই স্তরে হোয়েল ব্যবহৃত হয় না এবং কম্পাইল ও এক্সিকিউশন সম্পূর্ণভাবে LLVM এর মাধ্যমে সম্পাদিত হয়।
ব্যাকরণের সম্প্রসারণের কাজ এই স্তরে পরিচালিত হয় না। পূর্বে নির্দিষ্ট সূত্রের ভিত্তিতে সকল ব্যাকরণ উপাদানি কার্যকর করার মূল লক্ষ্য। ত্রুটি বার্তা, টাইপ চেকিং, ভ্যারিয়েবল স্কোপ ইত্যাদি কেন্দ্রিক ফ্রন্ট স্থিতিশীলতা।
ইমপ্লিমেন্টেশনের মধ্যে অন্তর্ভুক্ত রয়েছে ভ্যারিয়েবল ডিক্লারেশন এবং আউটপুট, প্রাথমিক অপারেশন, ফাংশনের ডেফিনিশন এবং কল করা, কন্ডিশনাল স্টেটমেন্টস (if / else if / else), লুপ (while / break / continue) এই স্তরে পূর্ণ হয়।
এছাড়াও ফর্ম্যাট আউটপুট, স্পষ্ট টাইপ ডিক্লারেশন, ptr<T> ফর্মের পয়েন্টার ডিজাইন এবং array<T, N> ধরনের অ্যারে ডিজাইন অন্তর্ভুক্ত।
এই স্তরে ওয়েভ কম্পাইলার সম্ পূর্ণভাবে রাস্ট-এ লেখা হয় এবং LLVM IR তৈরি ও AOT এক্সিকিউশনের জন্য inkwell ও llvm-sys ব্যবহার করা হয়।
আলফা পর্যায়
আলফা স্তরের লক্ষ্য হোয়েল ব্যাকএন্ড প্রবর্তন করা এবং LLVM ও হোয়েল সমান্তরাল ব্যবহারের একটি কাঠামো প্রতিষ্ঠা করা। LLVM-কে এখনো প্রাথমিক ব্যাকএন্ড হিসেবে রাখা হয়েছে এবং হোয়েল অপশনাল ব্যাকএন্ড হিসেবে যোগ করা হবে।
ওয়েভ কোড চালানোর সময় --backend বিকল্প ব্যবহার করে LLVM এবং Whale এর মধ্যে কোন ব্যাকএন্ড ব্যবহার করা হবে তা বেছে নেওয়া যেতে পারে।
wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm
এই ধাপে, হোয়েল নিজেই একটি IR গঠন ডিজাইন এবং নির্ধারিত হয়। Instruction, Value, Block-এর মতো মূল উপাদানগুলি সংগঠিত করে, ওয়েভ AST-কে হোয়েল IR এ রূপান্তরকারী IR জেনারেটর বাস্তবায়িত হয়।
হোয়েল জন্য কোড জেনারেটর বাস্তবায়িত করে, যা অ্যাসেম্বলি বা বাইনারি ফর্মে চালানো সম্ভব করে।
LLVM-এ বাস্তবায়ন করা কঠিন বা অকার্যকর ধরনের, যেমন i1024 এর মতো খুব বড় পূর্ণসংখ্যা ধরন বা উন্নত পয়েন্টার কাঠামো, এই ধাপে হোয়েলের জন্য বিশেষ বৈশিষ্ট্য হিসাবে প্রবর্তিত হয়েছে।
চেকপয়েন্ট হিসেবে হোয়েল ব্যাকএন্ডে হ্যালো ওয়ার্ল্ড আউটপুট করা সম্ভব হওয়া উচিত এবং ভেরিয়েবল ডিক্লেয়ারেশন এবং অ্যাসাইনমেন্ট, পয়েন্টার প্রক্রিয়াকরণ, IR ডিবাগিং টুলগুলি সঠিকভাবে কাজ করতে হবে। ওয়েভ থেকে হোয়েল IR রূপান্তর মূলত পরিচালিত হওয়া ধাপ।
বেটা পর্যায়
বিটা ধাপের লক্ষ্য হল হোয়েলে পুরোপুরি পরিবর্তন করা এবং LLVM নির্ভরতা দূর করা। এই ধাপ থেকে শুরু করে ওয়েভ সংকলন এবং নির্বাহে শুধুমাত্র হোয়েল ব্যবহৃত হবে।
LLVM সম্পর্কিত নির্ভরতা এবং মডিউলগুলি সম্পূর্ণরূপে সরিয়ে দেওয়া হবে এবং কোড জেনারেশন এবং এক্সিকিউশন পাথ হোয়েলের ভিত্তিতে অপ্টিমাইজ করা হবে। IR উৎপাদন থেকে নির্বাহ পর্যন্ত প্রবাহকে সরল এবং দ্রুত করা মূল কাজ।
হোয়েল IR-এর জন্য একটি অপ্টিমাইজেশন পাস ডিজাইন করুন এবং কোড জ েনারেশন গতি এবং এক্সিকিউশন দক্ষতা উন্নত করুন। ওয়েভের সকল ব্যাকরণের এই ধাপে হোয়েল ব্যাকেন্ডের উপর ভিত্তি করে সম্পূর্ণ সমর্থিত হওয়া উচিত।
পরীক্ষার দিক থেকে, একক পরীক্ষা এবং সম্পূর্ণ পরীক্ষা স্যুট উভয়ই সম্পন্ন হয় এবং WSON এবং মান লাইব্রেরি সামঞ্জস্য, ক্রস প্ল্যাটফর্ম হোয়েল বিল্ড সক্ষমতা যাচাই করা হয়।
আরসি (রিকনেল প্রকাশ প্রার্থী) পর্যায়
RC ধাপের লক্ষ্য হল ওয়েভের বুটস্ট্র্যাপ শুরু করা। এই ধাপ থেকে, ওয়েভ কম্পাইলারের রাস্ট বাস্তবায়ন ধীরে ধীরে সরিয়ে ফেলা হবে এবং ওয়েভ ভাষার নিজস্ব ওয়েভ কম্পাইলার পুনরায় লেখা শুরু হবে ।
হোয়েল ভিত্তিক ওয়েভ IR জেনারেটর আবার লেখার কাজে এবং কম্পাইলারের মূল যুক্তি এবং std / core লাইব্রেরি ওয়েভ কোড দ্বারা প্রতিস্থাপিত হবে। এই প্রক্রিয়ার মাধ্যমে হোয়েল স্ব-হোস্টিং পর্যায়ে প্রবেশ করবে।
বুটস্ট্র্যাপ সফল হলে, প্রথম ওয়েভ-নেটিভ কম্পাইলার জন্ম নেবে।
মুক্তি পর্যায় (v0.0.1)
রিলিজ ধাপের অর্থ হলো ওয়েভের প্রথম সরকারী মুক্তি। এই সময়ে, ওয়েভ এবং হোয়েল একত্রে একটি সম্পূর্ণ স্বাধীন ভাষা পরিবেশ গঠন করে।
মুক্তি উপাদানগুলির মধ্যে রয়েছে ওয়েভ ভাষা এবং মান লাইব্রেরি, হোয়েল কম্পাইলার টুলচেইন, ভেক্স প্যাকেজ ম্যানেজার এবং WSON ডেটা ফরম্যাট।
এই ধাপের ওয়েভ সম্পূর্ণভাবে ওয়েভ কোডে লেখা কম্পাইলার যুক্ত এবং হোয়েলের অপ্টিমাইজেশন সম্পন্ন হওয়া উচিত।
ভেক্স-এর মাধ্যমে বিল্ড এবং ডিপ্লয়মেন্ট ফ্লো স্থাপন করা হয়েছে, এবং vex build --windows এর মতো ক্রস OS বিল্ডও সম্ভব হওয়া উচিত।
ডেভেলপমেন্ট মেটা কৌশল
ওয়েভ + হোয়েল উন্নয়ন পর্যায়ের একটি সহজ অগ্রগতির পরিবর্তে একটি সুস্পষ্ট কৌশল ভিত্তিক হয়। হোয়েলের উন্নয়নের উদ্যোগ নিয়ে, একই সময়ে ওয়েভ ব্যাকএন্ড গঠনের জন্য ট্রেন+রেল কৌশল গ্রহণ করা হয়, যা ব্যাকএন্ড স্ট্রাকচার এবং ভাষা ডিজাইনের সাথে একসঙ্গে উন্নত করা হয়।
আলফা ধাপে, --backend অপশন ভিত্তিক ব্যাকএন্ড ব্রাঞ্চ স্ট্রাটেজি একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, যা LLVM এবং হোয়েলর সরাসরি তুলনা এবং যাচাই করার ভিত্তি প্রদান করে।
RC-এর পরে গঠনটি উল্টে যাবে, এবং ওয়েভ কোড হোয়েলের মাধ্যমে ওয়েভ নিজেই কম্পাইল করার জন্য গঠন উল্টানোর পরিকল্পনা মূলত পরিচালিত হবে।
