CXXI è un nuovo progetto di Mono che colma la mancanza d’interoperabilità per C Sharp e .NET con C++. È stato realizzato grazie a due anni consecutivi di finanziamento da parte della Google Summer of Code e, al momento, include dei binding e dei test per Qt. CXXI sostituisce gli espedienti utilizzati da Mono per il dialogo con C++.
Ad esempio, in passato i manutentori di Mono avevano realizzato un binding del PhyreEngine di Sony per dimostrare le potenzialità di C# coi sorgenti ad alto livello dei videogiochi per PlayStation 3. PhyreEngine# è stata una soluzione di compromesso, inadatta a supportare l’interoperabilità con C++. CXXI è il presente — e il futuro.
La tecnologia di CXXI, di per sé, riassume le funzionalità d’altre tre soluzioni temporanee di Mono per elaborare i sorgenti in C++. Rispettivamente, Platform Invoke, COM Interop e MarshalByRefObject di Microsoft. Tre complessi escamotage per tradurre e compilare il codice scritto per C++ con C# e .NET. Ormai – di fatto – superati.
Quanto alle funzionalità, CXXI propone una doppia compilazione dei sorgenti nella creazione di librerie dinamiche. Partendo dal codice in C++, CXXI utilizza GCC per compilare la libreria col metodo tradizionale e – in parallelo – il proprio generatore interno per realizzare le .dll
in C# o .NET. Questo è il meccanismo più semplice.
Quando i sorgenti prevedono il parsing di XML, la procedura è un po’ più complessa. GCC-XML genera il markup dai sorgenti in C++, quindi CXXI li traduce in Visual C#: perciò, sono integrate le ottimizzazioni proprie di C Sharp ed è generata la corrispondente libreria .dll
. Un meccanismo abbastanza complicato per le esigenze attuali.
Per quanto mi riguarda trovo che lo sviluppo di Mono sia costantemente più lontano dai trend della programmazione contemporanea. Il ricorso a tanti passaggi può essere giustificato in un numero molto ridotto di situazioni: soprattutto sui dispositivi portatili – il target di Xamarin – è preferibile la creazione di applicazioni web.
Via | Miguel De Icaza
Mono inaugura il supporto all’interoperabilità con C++ grazie a CXXI é stato pubblicato su Ossblog.it alle 10:00 di mercoledì 21 dicembre 2011.