Il Macbook ARM

Lunedì Apple ha annunciato un Macbook dotato di processore ARM, anziché di un processore Intel x86, la piattaforma da loro usata negli ultimi quasi 15 anni.

Già da qualche tempo gli appassionati si aspettavano che sarebbe successo, e non sono rimasti troppo stupiti dalla notizia, però ogni decisione di Apple fa discutere molto anche chi non normalmente non si interessa di questo settore.

Il risultato è che a volte ci sono commenti, o addirittura articoli di siti più o meno specializzati imprecisi, se non fuorvianti. Altre volte invece sono gli hater di Apple a cambiare significato alle notizie. Ho deciso quindi di fare un paio di commenti anche io.

I propri processori/silicio

Apple progetta da diversi anni i processori dei suoi telefoni e tablet, ma non direi che “propri” sia la parola corretta.

Apple compra la proprietà intellettuale da ARM Holdings, una società che appunto vende proprietà intellettuale a chi è interessato. Hanno davvero tante linee: dai processori più economici da meno di 1€ per l’embedded (e.g. per i controller delle stampanti 3D), a CPU per supercomputer, passando praticamente per tutti gli smartphone e tablet.

Chi compra da ARM la proprietà intellettuale può comunque fare delle personalizzazioni, ed è il caso per esempio sia di Apple, che Qualcomm.

E non cito quest’ultima a caso, ma perché entrambe comprano i diritti da ARM, modificano, però poi non producono, in quanto non hanno fabbriche di semiconduttori, ma si rivolgono ad alcune delle più grandi fabbriche, come TSMC, quindi dire “il proprio silicio” è ancora più sbagliato, anche se il marchio che usano è effettivamente Apple Silicon.

Il Mac Mini (in prestito) da 500$

Una cosa di cui parla chi generalmente è contro Apple è lo “Universal App Quick Start Program”, riducendolo al “Developer Transition Kit”, il dispositivo che viene dato appunto in prestito per sviluppare e testare le applicazioni su una piattaforma nativa.

Oltre all’hardware in prestito, il programma ha anche in più un supporto (o meglio, “technical support incidents”, stando ai termini di servizio) e un forum privato.

Sinceramente non trovo così assurda questa politica, almeno quel prezzo copre un supporto che non è mai grauito, anche se sarebbero da valutare le modalità di erogazione e la durata del programma con più precisione.

Mi viene in mente è una somiglianza con il mondo delle console. Anche quelle prevedono/prevedevano dei kit di sviluppo, molto più costosi, che rimangono di proprietà del produttore, e vari portali di scambi di materiali e discussioni. Un esempio era PartnerNet per l’Xbox 360, ma ce ne sono anche altri, per esempio una volta avevo trovato nella documentazione di Bullet Physics un link ad un portale per sviluppatori PlayStation.

In altre parole, mi sembra perfettamente in linea con l’idea di ecosistema chiuso.

Da sostenitore del software Open Source e dello sviluppo aperto, non posso che essere contrario a questo approccio, e mi sembra ben più criticabile dell’obbligo di restituzione del dispositivo.

Quest’ultimo, oltre che un modo per difendere la proprietà intellettuale, potrebbe essere anche dovuto al fatto che, almeno per i prototipi, non è necessario creare determinate certificazioni FCC, però ne è vietata la vendita, tuttavia, non so se valga anche per questo tipo di dispositivo, questa è completamente una mia congettura.

Ancora più grave di questo modello di sviluppo chiuso sarebbe un modello di distribuzione dei programmi che passi esclusivamente per l’app store. Se già sono contrario a questo modello per i telefoni, lo sono ulteriormente per i computer. Con un hardware di sua proprietà l’utente deve avere il diritto di eseguire (e direi anche programmare) qualsiasi applicazione desideri.

Supporto di Rosetta alla virtualizzazione di x86

Rosetta 2 è un software che permette di eseguire programmi scritti originariamente per x86 su Arm.

In giro ho letto diversi articoli riportare che non sarà possibile far girare macchine virtuali tramite Rosetta e in questo modo sarebbe più difficile il cambiamento.

Le macchine virtuali sono una tecnologia molto vecchia, tanto è vero i requisiti per la virtualizzazione di Popek e Goldberg risalgono al 1974. Però si è cominciato ad avere una virtualizzazione con buone prestazioni in x86 solo verso il 2005-2006, quando Intel e AMD introdussero il supporto nei loro processori, rispettivamente con le estensioni VT-x e AMV-V.

ARM è un’architettura diversa, con istruzioni diverse rispetto a quelle di x86. L’unico modo per poter fare andare una VM x86 su ARM è dunque l’emulazione, che però non è assolutamente prestante.

La fonte della notizia è una pagina del supporto Apple, in cui appunto dicevano questa cosa, probabilmente per essere il più espliciti possibili fin da subito. Mi chiedo se gli articoli scritti al riguardo siano nati perché i loro autori ritenevano genuinamente interessante quest’informazione, o se siano solo dei clickbait.

Comunque anche ARM permette di creare macchine virtuali ARM, e infatti Apple ha parlato di macchine virtuali Linux, OS che ha già un supporto veramente maturo a queste architetture.

Probabilmente potrebbe andare anche la versione ARM di Winddows 10, che così matura che Microsoft qualche mese fa ha potuto lanciatare il Surface X. Su Internet si trovano articoli di qualcuno che è riuscito a farlo andare con QEMU. Invece, stando alle notizie di questi giorni, probabilmente non ci sarà un bootcamp ARM. E in ogni caso, nemmeno Windows ARM può far girare tutte le applicazioni Windows x86, e nessuna di x86_64.

Retrocompatibilità in generale

Apple si fa molti meno problemi di altri nel suppportare vecchi software e/o API. Nell’ultimo anno ha completamente rimosso il supporto alle vecchie app a 32 bit, l’anno prima ha deciso di togliere il supporto alle GPU Nvidia e penso che potrei continuare. Non so per quanto Rosetta 2 potrà andare avanti, ma non mi stupirei se in breve tagliassero supporto a qualsiasi cosa non venga aggiornata.

Da un punto di vista dello sviluppo potrebbe essere interessante come intendono proseguire con la transizione. Se le API saranno grosso modo le stesse usate finora, o comunque se quelle per x86 verranno aggiornate a pari passo, si potrà usare lo stesso codice sorgente sia per ARM e x86, eventualmente con pochi cambiamenti.

Però un possibile sviluppo potrebbe prevedere la fusione sempre maggiore di macOS, iOS e iPad OS. Solo il tempo ci dirà cosa sceglieranno.

Per fortuna o purtroppo Apple è una grossa influencer per quanto riguarda l’hardware consumer, e mi aspetto che diversi OEM facciano passi in più verso altre architetture. Sono anni che laptop ARM vengono progettati e venduti, ma non se ne parla mai, o addirittura nel mondo desktop (o più che altro workstation/server) IBM non ha mai smesso di investire nella piattaforma Power, ma anche questa è una super nicchia.

E in ogni caso, il consumatore ne ha sempre da guadagnare dalla varietà di scelta.