Programování

Microsoft CoreRT mění C # na multiplatformní C ++

Společnost Microsoft pomalu mění sadu nástrojů .Net, aby umožnila předběžnou kompilaci pro aplikace na platformách, kde neexistuje žádná sada nástrojů .Net.

Otevřený zdrojový projekt CoreRT se zbavuje používání standardního prostředí CLR (Command Line Runtime) .Net pro spouštění aplikací. Místo toho generuje kód C ++ z kódu dané aplikace .Net C #, který lze poté zkompilovat a propojit na jakékoli cílové platformě, která podporuje C ++.

V příspěvku na vývojovém blogu společnosti AlphaGeek společnosti Microsoft společnost Microsoft stručně představila své plány, jak bude CoreRT fungovat, spolu s důvody pro její vytvoření.

„Pokud opravdu chci napsat nějaký C # kód a nechat ho„ jen pracovat “na novém zařízení IoT,“ napsal Microsoft, „nemám žádné možnosti, dokud RyuJIT není schopen generovat strojový kód, který pracuje s tímto procesorem a operační systém." Díky křížové kompilaci C # na C ++ mohou vývojáři .Net poté doručovat své aplikace, aniž by museli čekat na nasazení .Net na dané platformě, říká Microsoft.

Microsoft poznamenal, že v průběhu roku provedl určitý významný proces k dosažení tohoto cíle, i když uznal, že úkol je snadnější říkat, než udělat. Nejvýznamnější problém je společný pro projekty, které zahrnují převod jednoho jazyka do druhého. C ++ a .Net nemají vzájemnou korespondenci mezi svými funkcemi - syntaxí, datovými strukturami, jazykovou logikou atd. CoreRT proto musí elegantně mapovat určité funkce .Net do C ++.

Dalším velkým projektem, který převádí jazyk do C ++, aby se urychlilo jeho provádění, je Nuitka, která převádí programy Pythonu do C ++. Nuitka je pokračující projekt, který čelí mnoha stejným problémům jako CoreRT a má možná ještě těžší čas na jejich sladění. Díky dynamické povaze Pythonu je obtížné převést jej na předem zkompilovaný jazyk, protože každá konstrukce v jazyce je potenciálně objekt s vysoce proměnlivými vlastnostmi. C # je z tohoto hlediska méně problematický, protože používá statické psaní pro proměnné, ale jak bylo uvedeno výše, stále přichází s řadou potíží.

Existuje spousta informací o CoreRT, které pocházejí přímo z probíhajícího přizpůsobení společnosti Microsoft kolem otevřeného zdroje a populárních technologií jiných než Microsoft. Microsoft však vždy byl pragmatický, proč to dělá, a tady je pragmatismus o tom, jak mohou aplikace .Net běžet na platformách a v ekosystémech, které je dříve nepodporovaly.

CoreRT může teoreticky rozšířit dosah ekosystému .Net, aniž by Microsoft musel vynaložit nepřiměřené úsilí. Je snazší napsat jednorázový transpilační systém z C # do C ++, než vytvořit runtime pro libovolný počet dalších cílových platforem. Jistě, třetí strany mohou vytvářet takové runtime díky tomu, že .Net je nyní problémem open source. Plán společnosti Microsoft je však najít jeden způsob, jak je zachránit - a sám - problémy.

$config[zx-auto] not found$config[zx-overlay] not found