Bitcode… nadchodzą nowe procesory od Apple?
Mogliście już zauważyć, że nie jestem fanem produktów Intela. Wychowałem się na Motoroli i PowerPC. Ostatnio marzą mi się procesory ARM od Apple w ich komputerach. Czyżbym coś „wykrakał”?
Strona 1 z 2
Wstyd się przyznać ale przegapiłem tego newsa w informacjach z WWDC 2015. Dopiero mail od czytelnika uświadomił mi jaką to rewolucję może szykować Apple. Chodzi o magiczny Bitcode generowany przez kompilator będący obecnie sercem Xcode: LLVM. Już zacząłem się cieszyć.
Apple wybrał LLVM
Jeszcze kilka lat temu głównym kompilatorem w Xcode był poczciwy i znany „Linuxowcom” oraz reszcie Świata GCC. Niestety zaczął być już przestarzały, a Apple przemyśliwało w tajemnicy nad nowym językiem programowania. Dlatego zdecydowało się zaangażować w program LLVM.
LLVM nie dość, że kompiluje nawet 3 razy szybciej niż GCC, generuje szybszy kod łatwiejszy w „odpluskwianiu”, to jeszcze dzięki modułowej budowie i podziałowi na „front end” i „back end” daje się szybko przystosowywać do nowych języków i nowych architektur procesorów. I teraz dodatkowo może generować Bitcode.
Niezależność od platformy sprzętowej?
Bitcode to „kod pośredni” jaki może być generowany przez LLVM z kodu źródłowego (programu pisanego w jakimś z obsługiwanych przez Xcode języków przez dewelopera). Jest on używany do późniejszego przekompilowania na inne konkretne architektury procesorów.
Teraz pisząc program na iOS czy OS X nie zawsze zdajemy sobie sprawę, że Xcode generuje kilka wersji kodu maszynowego. Kiedyś (podczas przejścia na architekturę x86) było to kod na procesory PowerPC i na Intela. Potem kod na Intela 32 i 64 bit. W iOS podobnie. Jeszcze niedawno Xcode generował aż trzy wersje kodu. Zgodną z ARMv6, ARMv7, i ARM64. Teraz pozostały dwie ostatnie. W znacznym uproszczeniu: pisząc jeden progam otrzymujemy jakby kilka jego wersji najlepiej dostosowanych do konkretnych procesorów.
Wszystko jest OK do czasu jak znamy architektury procesorów jakie są w urządzeniach na jakie piszemy programy. Ale jak już wiemy, Apple (inne firmy znacznie rzadziej) lubią sprawiać psikusy zmieniając architekturę stosowaną w swoich urządzeniach. Do tej pory trzeba było programy przynajmniej „skompilować” na nowo za pomocą narzędzi obsługujących tą nową architekturę. Czasem też trzeba było dokonać zmian w kodzie źródłowym. Tak czy siak bez ingerencji autora programu się nie obeszło, a leniwi programiści nie zawsze przystępowali do takich akcji z radością.
Apple dzięki Bitcode może ominąć ten problem. Kod pośredni pozwala na wygenerowanie z niego kodu maszynowego na praktycznie dowolną nawet teraz nieznaną architekturę gdy tylko zostanie ona zaimplementowana w LLVM! Oznacza o tyle, że programy znajdujące się w np. App Store do których dołączono Bitcode mogą zostać bez ingerencji autora dostosowane do nowych architektur procesora jakie Apple może zechcieć zastosować (opracować)!