Swift na Mac OS 9
Měl jsem prvního dubna pocit, že obvyklých IT vtípků se letos nějak nedostává. Jistě, situace je vážná, ale kdy nebyla? Proto mě v RSS čtečce zaujal přišedší článek nazvaný Swift on Mac OS 9, žel i tady se už po pár odstavcích ukázalo, že se nejedná o vtip - autor skutečně zvládl spustit aplikaci k tomu účelu speciálně napsanou v jazyce Swift pod více než dvacet let starým operačním systémem Mac OS 9. Proč je to zvláštní?
Těm, kteří se vytrvale pohybují ve světě PC-kompatibilních strojů nejlépe na platformě Windows, asi nepřijde dvacetiletá zpětná kompatibilita jako nic fenomenálního. Před dvaceti lety byly novinkou Windows 2000 a dnes slušně napsaná 32bitová aplikace v nich pravděpodobně nemá problém fungovat, konec pohádky. Jenže u Apple se toho za tu dobu změnilo hodně.
Mac OS 9 běžel na 32bitových procesorech PowerPC a to počínaje jejich úplně první generací, tj. PowerPC 601 s taktem od 60 MHz výše. Neměl ochranu paměti ani preemptivní multitasking, technicky se tak jedná zhruba o ekvivalent Windows 3.x na PC a to, že vydržel až do konce století nebylo ani tak jeho kladnými vlastnostmi, jako čirou zoufalostí Apple v oblasti vývoje lepšího operačního systému, která se táhla prakticky po celou druhou polovinu devadesátých let.
Jen o pár let později Apple přešel na Mac OS X (později přejmenovaný na OS X a ještě později na macOS), tj. unixový operační systém s plným multitaskingem, ochranou paměti a víceuživatelským provozem. S Mac OS X se jablečné počítače vydaly nejdříve vstřích 64 bitům na PowerPC (pátá generace - PowerPC 970, 970fx, 970MP), následně 32 bitům na Intelu (Core Duo) a konečně současným 64 bitům tamtéž.
Jestliže se pro původní Mac OS psaly programy nejčastěji v C či C++, pak v Mac OS X se rychle programátoři přeučili na Objective-C a pár lety pak na Swift. A to je ve stručnosti celá ta propast mezi oběma světy…
…kterou ovšem autor - Jordan Rose - nakonec překonal. Najdříve přesvědčil Clang/LLVM, aby vytvářel ty správné binárky, což bylo usnadněno tím, že už umí kompilovat pro IBM AIX, který má s Mac OS 9 stejné konvence volání procedur, plnění registrů a používání zásobníku. Následně do Swiftu doplnil použití stringů z Pascalu, protože ten je v Mac OS výchozí, ostatně systém (tehdy pod názvem Macintosh System Software) přišel na svět v době, kdy se v Pascalu seriózně programovalo a většina software na jeho počátku byla v Pascalu. Dílo završil vlastní a notně ořezanou implementací stdlibu a po několika dalších týdnech bugfixingu se výsledek dostavil.
Celý projekt je i dle autorových slov naprostou zbytečností, navíc má i dost nedodělků a více či méně drobných chyb - cílem bylo stihnout zveřejnění 1. dubna 2020. Přesto je to zajímavý počin a rozhodně doporučuju přečíst celý původní článek. A jen tiše čekám, kdy někoho napadne spouštět .NET pod Windows 3.11. Aha, tak nic - už napadlo…