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:
git clone https://github.com/lugha-swa/swa.git
cd swa
bash gharama/jenga-kwanza.sh
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:
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:
./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:
N32 main() {
andika("Habari, Swa!\n");
rudisha 0;
}
cat msingi/kumbukumbu.swa salamu.swa > salamu_zima.swa
./msingi/mbegu.bin --exe salamu_zima.swa > salamu.bin
chmod +x salamu.bin
./salamu.bin
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 gharama/jaribu-mnyororo.sh
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
- x86-64 Linux ndilo jukwaa pekee la uzalishaji.
- ARM64 na RISC-V hazijaungwa mkono bado. Kila usanifu ni mradi wake: unahitaji baiti mpya za mkono za Kwanza, kizalishe kipya cha mbegu, na ABI ya jukwaa.
- Windows haijaungwa mkono — kizuizi cha BSS bado hakijatatuliwa.
- Zana ambazo bado hazipo: LSP, debugger, na kidhibiti cha vifurushi. Kipanga umbaji kipo (zana/umbizaji.swa).