Sakinisha

Swa ina njia moja ya kujenga: mnyororo safi wa Swa — njia ya uzalishaji, bila gcc, ld, clang, libc, Rust wala LLVM. Dereva wa zamani wa Rust/LLVM umehamishiwa hazina ya kumbukumbu lugha-swa/swa-dereva (2026-09-05).

Njia ya 1 — Mnyororo safi wa Swa

Hii ndiyo njia ya uzalishaji. Mahitaji: x86-64 Linux na bash pamoja na zana za kawaida za mfumo (cat, cmp, chmod, mktemp, timeout, grep, md5sum). Hakuna Rust, hakuna LLVM, hakuna clang, hakuna libc popote kwenye mnyororo huu.

Kuanza — mzizi wa uaminifu

Mnyororo unaanza na Kwanza, program ya baiti 393 za mkono iliyoandikwa bila lugha nyingine yoyote. Inajijenga yenyewe na kuzalisha mbegu.bin kutoka mbegu.hex — bila NASM wala kiunganishi. Skripti moja inathibitisha mzizi mzima:

bash
git clone https://github.com/lugha-swa/swa.git
cd swa
bash gharama/jenga-kwanza.sh
$ bash gharama/jenga-kwanza.sh kwanza inajijenga sawa mbegu.bin inazalika kutoka baiti za mkono

Mkusanyaji wa kwanza wa Swa

Unganisha maktaba 10 za mkusanyaji kwa cat — ndivyo viungo vya ndani vinavyofanya kazi kwenye mnyororo huu — kisha mbegu inakusanya mkusanyaji kamili wa Swa moja kwa moja hadi ET_EXEC tuli (bendera --exe), bila kiunganishi:

bash
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

Thibitisha fixpoint

stage1-exe inajikusanya yenyewe kuwa stage2, na stage2 inajikusanya kuwa stage3. Ikiwa stage2 na stage3 ni sawa kwa baiti, mnyororo umejithibitisha kikamilifu — mkusanyaji hutoa mkusanyaji ule ule:

bash
./stage1-exe --exe zima.swa > stage2
chmod +x stage2
./stage2 --exe zima.swa > stage3
cmp stage2 stage3

Programu yako ya kwanza

Programu hukusanywa kwa mbegu au stage1-exe. Maktaba ya msingi huunganishwa kwa cat kabla ya kukusanya. Andika program hii kwenye faili salamu.swa:

salamu.swa
N32 main() {
    andika("Habari, Swa!\n");
    rudisha 0;
}
bash
cat msingi/kumbukumbu.swa salamu.swa > salamu_zima.swa
./msingi/mbegu.bin --exe salamu_zima.swa > salamu.bin
chmod +x salamu.bin
./salamu.bin
$ ./salamu.bin Habari, Swa!

Majaribio kamili ya mnyororo

Skripti moja inaendesha majaribio yote ya mnyororo: program za majaribio kwenye minyororo yote miwili (mbegu na stage1), fixpoint, mkazo wa RELA wa wito 1,000 wa mbele, desimali, semantiki ya endelea, mzunguko mfupi, na kujijenga kwa kipanga umbaji. Hakuna Rust, hakuna LLVM, hakuna clang:

bash
bash gharama/jaribu-mnyororo.sh
$ bash gharama/jaribu-mnyororo.sh ===== Matokeo ya mnyororo: 104 yamefaulu, 0 yameshindwa =====

Dereva wa Rust/LLVM — hazina ya kumbukumbu

Dereva wa Rust/LLVM (kande) ulikuwa njia ya majaribio ya kukusanya kupitia LLVM. Tarehe 2026-09-05 umehamishiwa hazina ya kumbukumbu iliyohifadhiwa: lugha-swa/swa-dereva. Hazina kuu ya Swa sasa ina lugha moja tu: Swa.

Jukwaa linaloungwa mkono