Har bygget en native macOS‑beskedklient i Swift 6
Har bygget en native macOS‑beskedklient i Swift 6 og SwiftUI — 11.141 linjer fordelt på 53 filer — oven på C‑grænsefladen til en Rust‑kerne linket som et statisk arkiv fra en fastlåst revision.
Arbejdet udført: august 2026

Foto: StartupStockPhotos / Pixabay 
Foto: stux / Pixabay
11,141 linjers Swift oven på en Rust‑kerne
Situation. Beskedprotokollen havde en velafprøvet kerne skrevet i Rust og klienter på flere platforme, men skrivebordsoplevelsen på macOS var en platformsuafhængig skal — den så ikke ud som et Mac‑program, opførte sig ikke som et og slæbte rundt på et runtime‑miljø, som et native program ikke har brug for. Kernen stiller sine funktioner til rådighed gennem en C‑grænseflade, hvilket betyder, at ethvert sprog, der kan kalde C, kan bygge på den, og det kan Swift.
Opgave. En native klient skulle bygges direkte på den C‑grænseflade, i platformens nuværende sprog og nuværende UI‑framework, med kernen linket ind og ikke leveret ved siden af.
Handling. Programmet er 11.141 linjer Swift fordelt på treoghalvtreds filer i app‑målet, bygget på SwiftUI med kernen linket ind som et statisk arkiv, kompileret fra en fastlåst upstream‑revision. At fastlåse revisionen i stedet for at følge en gren er den beslutning, der gør buildet reproducerbart: C‑grænsefladen er kontrakten, og en kerne i bevægelse ændrer kontrakten uden at ændre en linje Swift. Lagdelingen holder den usikre overflade lille — en tynd indpakning ejer hver pointer og hver streng, der krydser grænsen, modellerne over den er almindelige Swift‑værdier, og grænsefladelaget ser aldrig en rå pointer. Alt, hvad C‑grænsefladen returnerer, har en ejerskabsregel, og en enkelt fejl i dem giver enten en lækage eller et nedbrud uden nogen advarsel fra oversætteren undervejs, så indpakningen er der, hvor hele projektets hukommelsesdisciplin bor. Buildet drives af en task runner med seksoghalvtreds mål, der dækker kompileringen af kernen, Swift‑buildet, testsuiterne, linterne og pakningen.
Resultat. En native klient, der starter som et Mac‑program, bruger platformens egne materialer og kontroller og ikke har nogen indlejret browser. Det, der ikke er gjort, bør siges: dette er ikke en udgivet version. Der er ingen notariseret distribution, ingen opdateringskanal og ét sprog i grænsefladen, så det er et fungerende program og ikke et produkt, som andre bruger.
Læs videre: En app, der åd 41 MB i sekundet, standset. Eller tag et kig på hele porteføljen.
Ét stykke af en længere fortegnelse — og det hele ligger her på sitet.
Hver post er skrevet på samme måde: situationen, opgaven, hvad vi gjorde, og hvad der ændrede sig.

