Ubuntu aarch64 mašīnā macOS versijas 7-Zip saspiež aptuveni 8000 failus jeb 240 megabaitus 118 sekundēs. Tā pati mašīna ar Linux versiju to pašu darbu paveic 22,5 sekundēs. Starpība ir 5,2 reizes. Tā ir samaksa par to, ka Darwin binārfails vispār palaižas uz Linux bez virtuālās mašīnas.
Mērījumu publicē Kakehashi, jauns atvērtā koda slānis ar Apache 2.0 licenci. Tas neemulē procesoru. ARM instrukcijas izpilda pati dzelzs, jo macOS un Linux uz aarch64 lieto vienu instrukciju kopu. Pārtulkot vajag visu apkārtējo: Mach-O izpildfaila formātu, atmiņas kartēšanu un BSD sistēmas izsaukumus.
Kur aiziet tās piecas reizes
Palēninājums visām slodzēm ir dažāds. Nelielai, uz saspiešanu balstītai slodzei atšķirība paliek 1,1 līdz 1,2 reizes. Tur procesors dara savu darbu, sistēmas izsaukumu ir maz. Astoņi tūkstoši failu ir cits stāsts. Katra faila atvēršana, katra ceļa pārstaigāšana un katrs statusa izsaukums iet caur robežu starp Darwin kodu un Linux kodolu.
Uz šīs robežas Kakehashi pārslēdz pavediena lokālo krātuvi, maina steku, saglabā NEON reģistrus un padod izsaukumu Rustā rakstītam dispečeram. Katrs solis atsevišķi maksā maz. Sareizināts ar simtiem tūkstošu izsaukumu, tas dod tās 118 sekundes. Autori paši norāda, ka algoritmi te nav vainīgi: abās pusēs strādā viens un tas pats lzma2 kods ar karogiem -t7z -m0=lzma2 -mx=5 -mmt=4.
Kas strādā un kas ne
Kā pārbaudītas projekts uzskaita trīs lietas. 7-Zip komandrindas versija 7zz strādā arī daudzpavedienu režīmā. curl strādā ar HTTPS un sertifikātu pārbaudi. Nostrādā arī clang zondes un testu piemēri. Binārfaili dzīvo atsevišķā kokā, ko projekts sauc par pudeli: ~/.local/share/kakehashi/bottle/. Tās iekšienē /Volumes/linux/ ved uz saimniekdatora failu sistēmas sakni, bet /etc/ssl/cert.pem ņem sertifikātus no saimnieka vai Mozilla saraksta.
Saraksts ar to, kas nestrādā, ir garāks: pilns curl funkciju komplekts, tostarp POST ķermeņi, starpniekserveri un HTTP/3, Apple Security.framework, git kopā ar pārējiem komandrindas rīkiem, grafiskās lietotnes, koda parakstīšana un notarizācija. Prasības ir Rust 1.88 vai jaunāks. Atmiņas lapas der gan 4, gan 16 kilobaitu lielas. Pēdējās lieto Asahi Linux uz Apple dzelžiem.
Uzstādīšana iet caur Rust pakotņu pārvaldnieku. Pēc cargo install kakehashi ar komandu kh bottle ensure tiek uzbūvēta pudele, pēc tam kh install 7zip un kh install curl ievelk pašus Darwin binārfailus. Pudeles atrašanās vietu var pārbīdīt ar mainīgo KAKEHASHI_DATA_DIR. Testu komplektā ir gan parastie Rust testi, gan Docker skripts, kas dzen 7zz un curl caur konteineru, gan atsevišķs skripts etalonu mērīšanai.
Pilna curl funkcionalitāte, īsti Apple ietvari, git, GUI un parakstīšana pagaidām nav produkta solījums.
Tā rakstīts projekta README failā. Nākamā atzīme ceļakartē ir git, ko plānots dabūt ar komandu kh install xcode-tools.
Kāpēc lēnāks binārfails var iznākt lētāks
Iemesls, kāpēc kādam vispār vajadzētu palaist macOS binārfailu piecas reizes lēnāk, ir rēķinā par CI. GitHub Actions cenrādī divkodolu Linux arm64 minūte maksā 0,005 dolārus, macOS minūte maksā 0,062 dolārus. Piecas Linux minūtes iznāk 0,025 dolāri. Viena macOS minūte iznāk 0,062 dolāri.
2026. gada 1. janvārī GitHub cenas nolaida: Linux x86 no 0,008 uz 0,006, Windows no 0,016 uz 0,010, macOS no 0,080 uz 0,062 dolāriem minūtē. Attiecība starp Linux un macOS palika ap desmitkārtīgu. Rēķins ar 5,2 reižu palēninājumu turas tikai tiem darbiem, kuriem nevajag Xcode, parakstīšanu vai saskarnes testus. Pagaidām tā ir šaura josla: arhivētāji, curl un pāris kompilatora zondes.
Otrs iemesls ir pieejamība. Apple licences noteikumi prasa, lai macOS darbotos uz Apple dzelžiem, tāpēc mākoņu piedāvājums šeit ir šaurs. Ja komandai jāpārbauda tikai tas, vai Darwin binārfails startē un izdod pareizo izvadi, to var izdarīt uz tās pašas Linux aarch64 mašīnas, kas jau būvē pārējos mērķus.
Ar ko tas atšķiras no Darling
Darling pie tās pašas problēmas strādā kopš 2012. gada un būvē pilnu Darwin vidi ar Mach, dyld un launchd. Pēdējais priekšlaidiens 0.1.20260222 iznāca 2026. gada 23. februārī. Grafiskās lietotnes tur joprojām lielākoties nestrādā, kaut arī vienkāršākajām ir eksperimentāls atbalsts.
Kakehashi autori README failā atsevišķi uzsver, ka viņu kods nav atvasināts no Darling un ka projekts sevī neievieto Apple slēgtos SDK vai binārfailus. Vietā, kur Darling atveido veselu Darwin sistēmu, Kakehashi kompilē pats savu brīvstāvošu libSystem.B.dylib mērķim aarch64-apple-darwin un iebūvē to izpildlaikā. Koda bāze sadalīta Rust kastēs: kh-loader lasa Mach-O un kartē atmiņu, kh-runtime tur slazdu apstrādi, sistēmas izsaukumu tulkošanu un pudeles vidi, kh-cli dod komandas kh run, kh trace un kh install.
Uzstādīt Kakehashi var arī uz macOS, tikai tur tas prot vienīgi ielādēt un apskatīt binārfailu. Izpildei vajadzīgs Linux aarch64.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.