Skip to main content

Wave + Whale የተቀናጀ የልማት ፍኖተ ካርታ v2

ይህ ሰነድ የWave ቋንቋ እና የ Whale ኮምፕሌተር የመሳሪያ ሰንሰለት ደረጃ በደረጃ የተቀናጀ የእድገት ሂደትን የሚያዘጋጅ ፍኖተ ካርታ ነው። Wave እና Whale መጀመሪያ ላይ እንደ ተለያዩ ክፍሎች ይጀምራሉ ነገር ግን በመጨረሻ ሙሉ በሙሉ ወደ አንድ ገለልተኛ የቋንቋ ስነ-ምህዳር ለመዋሃድ አላማ ያደርጋሉ።

አጠቃላይ የእድገት ደረጃው የሚከተለውን ፍሰት ይከተላል.

pre-alpha → pre-beta → alpha → beta → rc → release

እያንዳንዱ ደረጃ በቀድሞው ደረጃ ውጤቶች ላይ ይገነባል እና አንድ-መንገድ ልማትን ይወስዳል, አንድ ደረጃ ከተጠናቀቀ በኋላ ወደ ቀድሞው መዋቅር አይመለስም.


የቅድመ-ይሁንታ ደረጃ

የቅድመ-ቅድመ-ይሁንታ ደረጃ ግብ የWave ቋንቋን ፊት ለፊት ማጠናቀቅ እና የቋንቋውን ሙሉ ተግባር በLLVM ጀርባ ላይ በመመስረት መተግበር ነው። ይህ እርምጃ Whale አይጠቀምም; ማጠናቀር እና አፈፃፀም ሙሉ በሙሉ በLLVM በኩል ይከናወናል።

ሰዋሰውን ማራዘም ራሱ በዚህ ደረጃ ላይ አይደለም. ዋናው ግቡ ሁሉም የሰዋሰው ክፍሎች በትክክል በተገለጹ ዝርዝሮች ላይ ተመስርተው እንዲሰሩ ማድረግ ነው። የስህተት መልእክት ጥራት፣ አይነት ፍተሻ እና ተለዋዋጭ ወሰን ሂደትን ጨምሮ የፊት-መጨረሻ መዋቅርን በማረጋጋት ላይ እናተኩራለን።

የአተገባበሩ ወሰን ተለዋዋጭ መግለጫ እና ውፅዓት፣ መሰረታዊ ስራዎችን፣ የተግባር ፍቺን እና ጥሪን፣ ሁኔታዊ መግለጫዎች (if / else if / else) እና loop መግለጫዎች (while / break / continue) እንዲሁ በዚህ ደረጃ ይጠናቀቃሉ። እንዲሁም የተቀረጸ ውፅዓት፣ ግልጽ ትየባ፣ የጠቋሚ ንድፍ የptr<T> አይነት፣ የ array<T, N> ቅጽ የድርድር ንድፍ ያካትታል።

በዚህ ደረጃ፣ ሁሉም Wave አቀናባሪዎች Rust ተብለው ተጽፈዋል። LLVM IR ኢንክዌል እና lvm-sys ለፈጠራ እና AOT አፈፃፀም ይጠቀማል።


የአልፋ ደረጃ

የአልፋ ደረጃ ግብ የ Whale ጀርባን ማስተዋወቅ እና LLVM እና Whale በትይዩ የሚጠቀም መዋቅር መመስረት ነው። LLVM እንደ ነባሪው የጀርባ ማቀፊያ ሆኖ ይቀራል፣ እና Whale እንደ አማራጭ የጀርባ ማቀፊያ ይታከላል።

Wave ኮድን ሲያስኬዱ የ--backend አማራጭ የትኛውን የኋላ ቅረፅ LLVM ወይም Whale ለመጠቀም እንዲመርጡ ያስችልዎታል።

wavec run main.wave --backend=whale
wavec run main.wave --backend=llvm

በዚህ ደረጃ፣ የWhale ራሱ የIR መዋቅር ንድፍ እና እንገልፃለን። እንደ መመሪያ ፣ እሴት እና አግድ ያሉ ቁልፍ ክፍሎችን ያደራጁ ፣ Wave AST ወደ Whale IR የሚቀይር የIR ጀነሬተርን ይተገብራል።

እንዲሁም ለWhale ኮድ ጄኔሬተር እንተገብራለን፣ ይህም በመገጣጠም ወይም በሁለትዮሽ መልክ እንዲተገበር ያደርገዋል። በLLVM ውስጥ፣ ለመተግበር አስቸጋሪ ወይም ቀልጣፋ ያልሆኑ፣ እንደ በጣም ትልቅ የኢንቲጀር ዓይነቶች እንደ i1024፣ የላቁ የጠቋሚ አወቃቀሮች በዚህ ደረጃ እንደ Whale-ተኮር ባህሪያት አስተዋውቀዋል።

እንደ ፍተሻ ነጥብ፣ የሄሎ አለም ውፅዓት ከWhale ጀርባ መቻል አለበት። ተለዋዋጭ መግለጫ እና ምደባ፣ ጠቋሚ ማቀናበር እና IR ማረም መሳሪያዎች በመደበኛነት መስራት አለባቸው። ይህ የWave → Whale IR ልወጣ በሂደት ላይ ያለበት ደረጃ ነው።


የቅድመ-ይሁንታ ደረጃ

የቅድመ-ይሁንታ ደረጃ ግብ ሙሉ ለሙሉ ወደ Whale መሸጋገር እና የLLVM ጥገኞችን ማስወገድ ነው። ከዚህ እርምጃ ጀምሮ፣ የWave ማጠናቀር እና አፈፃፀም Whale ብቻ ነው የሚጠቀመው።

ሁሉም ከLLVM ጋር የተያያዙ ጥገኞች እና ሞጁሎች ተወግደዋል። ኮድ ማመንጨት እና ማስፈጸሚያ መንገድ በWhale ላይ ተመስርተው ተመቻችተዋል። ዋናው ተግባር ከ IR ፈጠራ ወደ አፈፃፀም ቀላል እና ፈጣን እንዲሆን ማድረግ ነው.

ለWhale IR የማመቻቻ ማለፊያ ይንደፉ፣ የኮድ ማመንጨት ፍጥነት እና የአፈፃፀም ቅልጥፍናን ያሻሽላል። ሁሉም የWave ሰዋሰው በዚህ ደረጃ በWhale ጀርባ ሙሉ በሙሉ መደገፍ አለባቸው።

በሙከራው በኩል ሁለቱንም የክፍል ፈተናዎች እና ሙሉ የሙከራ ስብስቦችን እናከናውናለን። የWSON እና መደበኛ የቤተ-መጽሐፍት ተኳኋኝነትን እና መድረክን አቋራጭ የWhale ግንባታን ያረጋግጣል።


RC (የመልቀቅ እጩ) ደረጃ

የRC ደረጃ ግብ Wave ማስነሳት መጀመር ነው። ከዚህ እርምጃ ቀስ በቀስ የ Wave ማጠናከሪያውን የ Rust ትግበራን እናስወግዳለን የWave ማጠናከሪያውን በራሱ በWave ቋንቋ እንደገና በመፃፍ እንጀምራለን ።

በWhale ላይ በመመስረት፣ Wave ን እንደገና እንጽፋለን። የአቀናባሪ ኮር ሎጂክ እና std/core ቤተ-መጻሕፍትን በWave ኮድ ይተካል። በዚህ ሂደት, Whale ወደ ራስ-ማስተናገጃ ደረጃ ይገባል.

ማስነሳት ከተሳካ፣ የመጀመሪያው Wave-ቤተኛ ማጠናከሪያ ይፈጠራል።


የመልቀቅ ደረጃ (v0.0.1)

የልቀት ደረጃ የWave የመጀመሪያ ይፋዊ ልቀትን ያመለክታል። በዚህ ነጥብ ላይ፣ Wave እና Whale ሙሉ በሙሉ የተቀናጀ ገለልተኛ የቋንቋ ሥነ-ምህዳር ይመሰርታሉ።

የመልቀቂያ ክፍሎች የ Wave ቋንቋ እና መደበኛ ቤተ-መጽሐፍትን ያካትታሉ; Whale የማጠናከሪያ መሣሪያ ሰንሰለት፣ Vex ጥቅል አስተዳዳሪ፣ እና የWSON የውሂብ ቅርጸትን ያካትታል።

Wave በዚህ ደረጃ ላይ ሙሉ በሙሉ በWave ኮድ የተጻፈ አጠናቃሪ አለው። የWhale ማመቻቸት ሙሉ መሆን አለበት። በ Vex በኩል ያለው የግንባታ እና ስርጭት ፍሰት ተመስርቷል ፣ እንደ vex build --windows ያለ የOS መስቀል እንዲሁ መቻል አለበት።


የልማት ሜታ ስትራቴጂ

Wave + Whale እድገት ቀላል የእርምጃዎች ግስጋሴ አይደለም ነገር ግን ግልጽ በሆነ ስልት ላይ የተመሰረተ ነው። Whale ን የማዳበር የባቡር+ባቡር ስትራቴጂን በመቀበል እና በተመሳሳይ ጊዜ የ Wave ጀርባን በማዋቀር ፣ የጀርባውን መዋቅር እና የቋንቋ ንድፍ በትይዩ እናዘጋጃለን.

በአልፋ ደረጃ፣ በ--backend አማራጭ በኩል ያለው የኋላ ቅርንጫፍ ስትራቴጂ ጠቃሚ ሚና ይጫወታል። LLVM እና Whaleን በቀጥታ ለማነጻጸር እና ለማረጋገጥ መሰረት ይሰጣል።

ከ RC በኋላ, አወቃቀሩ ተቀልብሷል, የመዋቅር ተገላቢጦሽ እቅዱ ሙሉ በሙሉ እየተንቀሳቀሰ ነው፣ በ Wave ኮድ እራሱ Wave በWhale በማጠናቀር ላይ ነው።