Vývojář má možnost nahrát do App Store bitcode (LLVM), pak se aplikace přeloží celá automaticky. Rosetta 2 je pro aplikace, pro které není k dispozici bitcode. I pro iOS se může nahrát bitcode, který se pak přeloží pro nové instrukce, které Apple přidává do svých CPU řady Ax. Problém bývá s různými knihovnami (Flutter, Google Ads), které se distribuují jen binárně a bez bitcodu. Na M1 je problém třeba s AVX nebo OpenCL.
Tim, ze je to stejny OS (stejna sada .so a API), tak lze tu sdilenou cast (shared libs) vykonavat v nativnim kodu, a emulovat jen ciste tu cast s custom aplikaci.
A apple si celkem doslapne na tvurce aplikaci (skrze pravidla appstore), aby vyuzivali co v nejvetsi mire jejich libky - takze kodu v aplikacich moc neni, resp. je to spis glue logic.
To, kde je aplikace "fat" a ve stylu ze si to taha sebou veskere zavislosti staticky (napr. dnesni zpravicka o Chrome), tak takova aplikace bezi samozrejme 2x pomaleji, ne rychleji.
Holt nekdo si na kulture programovani zaklada.. kdezto pro Win se delaj veci jako electron, ze si nejaka mala utilitka taha sebou cely prohlizec a ma to pak pul giga :)
Na macOS je celý POSIX a Foundation a GCD v jednom souboru — libSystem.dylib. S tím App Store, ano, určitě brzy sdělí datum, do kdy musí aplikace podporovat M1. Většinou ale stačí kompilace novým Xcode, například Handbreak už takto pro M1 je. A MacPorts si vše překládá ze zdrojaků (ovšem teď nefunguje ani na Intelu, protože Big Sur v souborovém systému nezobrazuje dynamické knihovny, test na existenci se musí dělat nově přes dlopen, což ale skoro nikdo nedělá). Ono si to všechno sedne. Třeba Java taky časem bude.