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) మరియు లూప్ స్టేట్‌మెంట్‌లు (while / break / continue) కూడా ఈ దశలో పూర్తవుతాయి. అలాగే ఫార్మాట్ చేయబడిన అవుట్‌పుట్, స్పష్టమైన టైపింగ్, ptr<T> రకం పాయింటర్ డిజైన్, ఇది array<T, N> ఫారమ్ యొక్క శ్రేణి రూపకల్పనను కలిగి ఉంటుంది.

ఈ దశలో, అన్ని Wave కంపైలర్‌లు Rust అని వ్రాయబడ్డాయి, LLVM IR సృష్టి మరియు AOT అమలు కోసం inkwell మరియు llvm-sys ఉపయోగిస్తుంది.


ఆల్ఫా దశ

ఆల్ఫా దశ యొక్క లక్ష్యం Whale బ్యాకెండ్‌ను పరిచయం చేయడం మరియు LLVM మరియు Whaleలను సమాంతరంగా ఉపయోగించే నిర్మాణాన్ని ఏర్పాటు చేయడం. LLVM డిఫాల్ట్ బ్యాకెండ్‌గా ఉంటుంది మరియు Whale ఐచ్ఛిక బ్యాకెండ్‌గా జోడించబడుతుంది.

Wave కోడ్‌ని అమలు చేస్తున్నప్పుడు, LLVM లేదా Whale ఏ బ్యాకెండ్ ఉపయోగించాలో ఎంచుకోవడానికి --backend ఎంపిక మిమ్మల్ని అనుమతిస్తుంది.

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 ద్వారా కంపైల్ చేయడంతో స్ట్రక్చర్ రివర్సల్ ప్లాన్ పూర్తి స్వింగ్‌లో ఉంది.