Swift 6, prossima versione del linguaggio di programmazione sviluppato da Apple, includerà anche una nuova modalità di compilazione appositamente pensata per superare i limiti dei dispositivi embedded. Si tratta di Embedded Swift, un subset in cui sono comprese diverse funzionalità del linguaggio tra cui la gestione degli errori, i generics e le closure. Tale soluzione è stata concepita per la programmazione di basso livello. Coinvolgendo anche i limiti che potrebbero essere legati al kernel.
Le caratteristiche di Embedded Swift
Embedded Swift funziona in modo molto simile ad un comune compilatore C. Esso infatti genera un file oggetto, con estensione .o
, che può essere collegato al codice già disponibile. Il principale vantaggio di questo modello di compilazione risiede nel fatto che non sono necessaria dipendenze. Né librerie né delle runtime.
I just got Embedded Swift working on a ESP32-C6 Things Plus. One blinking light means I’ll be able to control a lot more?
And … It’s got Matter support for HomeKit accessories.@sparkfun @Apple @SwiftLang #iosdev #swift #esp32 #embedded pic.twitter.com/of9OPWimzb
— Paul Solt (@PaulSolt) July 18, 2024
A livello tecnico esso non fa altro che disattivare le funzionalità del linguaggio che per funzionare richiederebbero delle runtime. È per esempio il caso del tipo any
o delle reflection. A livello pratico, invece, si ha il beneficio di eseguire applicazioni basate su Swift senza dover distribuire alcuna runtime. Parliamo quindi di una differenza importante rispetto a quanto dovrebbe avvenire nello sviluppo di progetti per macOS e iOS.
Grazie a Embedded Swift si possono quindi generare dei binari pronti per l'esecuzione sui dispositivi embedded, per far questo si sfrutta ad esempio lo static linking che è una pratica per la copia delle librerie ideale quando si lavora per ambienti di esecuzione specifici.
Ambiti di utilizzo
Come sottolineato dai portavoce della Casa di Cupertino, Embedded Swift è stato utilizzato internamente all'azienda per alcuni componenti del suo comparto hardware. Il fatto che alcune funzionalità vengano disattivate non porrebbe inoltre particolari limiti in sede di scrittura del codice. Parliamo in ogni caso di una feature sperimentale che deve essere abilitata tramite flag.
Sono supportati i chipset ARM e RISC-V sia nelle architetture a 32 bit che in quelle a 64 bit.