Lugha ya kupanga ya Kiswahili
Swa ni lugha ya kupanga ya mifumo yenye sintaksia kamili ya Kiswahili — hakuna neno la Kiingereza katika sintaksia yake — inayojikusanya yenyewe moja kwa moja hadi msimbo wa mashine, bila lugha nyingine yoyote kwenye mnyororo wake wa uzalishaji.
W0 salamu(N8* jina) {
andika("Habari, %s!\n", jina);
}
N32 kadirifu(N32 x) {
kama (x > 0) {
rudisha 1;
}
sivyo {
kama (x < 0) {
rudisha -1;
}
}
rudisha 0;
}
N32 main() {
salamu("Dunia");
kama (kadirifu(5) != 1) { rudisha 1; }
kama (kadirifu(-5) != -1) { rudisha 2; }
kama (kadirifu(0) != 0) { rudisha 3; }
rudisha 0;
}
Kwa nini Swa?
Mkusanyaji wa mifumo unaojiandika wenyewe, kwa Kiswahili.
-
Kiswahili kamili
Maneno muhimu 12 — hakuna neno la Kiingereza katika sintaksia. Aina za nambari hutambuliwa kisintaksia kwa herufi kubwa, si kama maneno muhimu.
-
Uhuru kamili wa kujikusanya
Mnyororo wa uzalishaji hautegemei lugha nyingine: Kwanza (baiti 393 za mkono), mbegu, stage1-exe, na
stage2-exe == stage3-exe— sawa kwa baiti. Hakuna gcc, ld, clang, wala libc. -
Kizalishe asilia cha x86-64
Kizalishe asilia kinatoa ELF ya x86-64 moja kwa moja, hata ET_EXEC tuli kwa bendera
--exe. Njia ya LLVM ipo kwenye dereva wa Rust lakini ni ya majaribio tu. -
Familia 5 za aina
Nnamba,Aasili,Ddesimali,Bbuli,Wupana wa mashine — kila familia ikifuatiwa na upana wa tarakimu, kamaN32naD64. -
Kumbukumbu ya moja kwa moja
tengahutenga,achiliahuachilia — hakuna mkusanyaji wa takataka. Maktaba hutumia arena ya kumbukumbu (mmap). -
Imeandikwa kwa Swa
Msomaji, mchanganuzi, mkaguzi wa kisemantiki, kiteremshi, na kizalishe asilia — vyote ni faili za .swa, pamoja na maktaba ya kawaida.
Mnyororo wa kujikusanya
Kila hatua hutoa kizazi kinachofuata, hadi mkusanyaji unajithibitisha yenyewe.
Kwanzabaiti 393 za mkonombegukutoka hex, bila kiunganishistage1-exeET_EXEC tulistage2-exe ≡ stage3-exesawa kwa baiti
Hakuna gcc, ld, clang, wala libc popote kwenye mnyororo wa uzalishaji.
Anza kwa dakika tano
Jenga mkusanyaji wa kwanza wa Swa kutoka chanzo, kisha ukusanye program yako — mnyororo safi wa Swa, bila Rust, LLVM, clang, wala libc.
cat msingi/kumbukumbu.swa msingi/mfuatano.swa msingi/msomaji.swa \
msingi/msambazaji.swa msingi/mteremko.swa msingi/mkaguzi.swa \
msingi/uzalishaji.swa msingi/orodha.swa msingi/ramani.swa \
msingi/stage1.swa > zima.swa
./msingi/mbegu.bin --exe zima.swa > stage1-exe
chmod +x stage1-exe
./stage1-exe --exe programu.swa > programu.bin
chmod +x programu.bin && ./programu.bin
Habari za hivi karibuni
Mafanikio muhimu ya mradi, kwa tarehe — kila moja yanaweza kuthibitishwa kwenye historia ya git.
-
Mbegu imerekebishwa: hesabu za baiti 8
FPE ya N64 imetatuliwa; maneno muhimu yamepunguzwa hadi 13; halisi za N64 zinafanya kazi kwenye mnyororo wa .swa; majaribio yote 227/227 yanapita.
-
Toleo v1.0.0 limewasili
Lebo ya git v1.0.0 imewekwa na maktaba ya kawaida imekamilika — hesabu, mifuatano, na soma_mstari — zote kwa Swa yenyewe.