Ohjelmointi

Microsoftin CoreRT muuttaa C #: n cross-platform C ++: ksi

Microsoft muuttaa hitaasti .Net-työkaluketjua, jotta se voidaan koota etukäteen sovelluksille alustoilla, joissa ei ole .Net-työkaluketjua.

Avoimen lähdekoodin CoreRT-projekti poistaa sovellusten ajamisesta .Netin tavallisen komentorivin ajon (CLR). Sen sijaan se tuottaa C ++ -koodin tietystä .Net C # -sovelluksen koodista, joka voidaan sitten kääntää ja linkittää mihin tahansa kohdealustaan, joka tukee C ++: a.

Microsoftin AlphaGeek-kehitysblogia koskevassa viestissä Microsoft esitti lyhyesti suunnitelmansa CoreRT: n toiminnasta sekä perustelut sen luomiselle.

"Jos haluan todella kirjoittaa jonkin C # -koodin ja että se" vain toimii "uudella IoT-laitteella", kirjoitti Microsoft, "minulla ei ole vaihtoehtoja ennen kuin RyuJIT pystyy tuottamaan konekoodin, joka toimii kyseisen prosessorin kanssa. käyttöjärjestelmä." Keräämällä ristiin C #: n C ++: ksi .Net-kehittäjät voivat sitten toimittaa sovelluksensa tarvitsematta odottaa .Netin käyttöönottoa tietyllä alustalla, Microsoft sanoo.

Microsoft totesi, että se oli tehnyt merkittävän prosessin tämän tavoitteen saavuttamiseksi vuoden aikana, vaikka se myönsi, että tehtävä on helpommin sanottu kuin tehty. Merkittävin ongelma on yhteinen hankkeille, joissa kieli siirretään toiselle kielelle. C ++: lla ja .Netillä ei ole henkilökohtaisten vastaavuuksien ominaisuuksia - syntaksia, tietorakenteita, kielilogiikkaa ja niin edelleen. Siksi CoreRT: n on kartoitettava tietyt .Net-ominaisuudet tyylikkäästi C ++: ksi.

Toinen suuri projekti, joka siirtää kielen C ++: ksi nopeuttaakseen sen suorittamista, on Nuitka, joka muuntaa Python-ohjelmat C ++: ksi. Nuitka on jatkuva projekti, joka kohtaa monia samoja asioita kuin CoreRT ja jolla on ehkä vielä vaikeampaa aikaa sovittaa ne yhteen. Pythonin dynaamisen luonteen vuoksi on vaikea muuntaa aikaisemmin käännetyksi kieleksi, koska jokainen kielen rakenne on mahdollisesti kohde, jolla on erittäin muuttuvia ominaisuuksia. C # on vähemmän ongelmallinen tältä kannalta, koska se käyttää muuttujille staattista kirjoittamista, mutta kuten edellä todettiin, siihen liittyy silti joukko vaikeuksia.

CoreRT: stä löytyy paljon, joka on suoraan peräisin Microsoftin jatkuvasta uudelleenjärjestelystä avoimen lähdekoodin ja suosittujen muiden kuin Microsoftin tekniikoiden ympärillä. Mutta Microsoft on aina ollut käytännöllinen siitä, miksi se tekee tämän, ja tässä käytännöllisyys tarkoittaa sitä, kuinka .Net-sovellukset voivat toimia alustoilla ja ekosysteemeissä, jotka eivät aiemmin tue niitä.

CoreRT voi teoreettisesti laajentaa .Net-ekosysteemin ulottuvuutta ilman, että Microsoftin on tehtävä tarpeettomia ponnisteluja. On helpompaa kirjoittaa kertaluonteinen transpilaatiojärjestelmä C #: sta C ++: een kuin ajoaikojen luominen mille tahansa muulle kohdealustalle. Toki, kolmannet osapuolet voivat luoda tällaisia ​​ajonaikoja .Net-verkon ansiosta, joka on nyt avoimen lähdekoodin huolenaihe. Mutta Microsoftin suunnitelmana on löytää yksi tapa säästää heidät - ja itse - ongelmat.