Programmering

Microsofts CoreRT forvandler C # til C ++ på tværs af platforme

Microsoft ændrer langsomt .Net-værktøjskæden for at muliggøre kompilering på forhånd af applikationer på platforme, hvor der ikke er nogen. Net-værktøjskæde.

Det open source CoreRT-projekt fjerner brugen af ​​.Nets standard Command Line Runtime (CLR) til at køre applikationer. I stedet genererer den C ++ - kode fra en given .Net C # -apps kode, som derefter kan kompileres og linkes på enhver målplatform, der understøtter C ++.

I et indlæg på Microsofts AlphaGeek-udviklingsblog lagde Microsoft kort sine planer for, hvordan CoreRT vil fungere sammen med sin begrundelse for oprettelse af den.

"Hvis jeg virkelig vil skrive en C # -kode og få den 'bare til at arbejde' på en ny IoT-enhed," skrev Microsoft, "har jeg ingen muligheder, før RyuJIT er i stand til at generere maskinkode, der fungerer sammen med den processor og operativ system." Ved at krydskompilere C # til C ++ kan .Net-udviklere derefter levere deres applikationer uden at skulle vente på, at .Net bliver implementeret på en given platform, siger Microsoft.

Microsoft bemærkede, at det havde foretaget en betydelig proces mod dette mål i løbet af året, selvom det erkendte, at opgaven er lettere sagt end gjort. Det mest fremtrædende problem er fælles for projekter, der involverer transponering af et sprog til et andet. C ++ og .Net har ikke en en-til-en-korrespondance mellem deres funktioner - syntaksen, datastrukturer, sproglogikken osv. Derfor skal CoreRT elegant kortlægge bestemte .Net-funktioner i C ++.

Et andet stort projekt, der transporterer et sprog til C ++ for at fremskynde dets udførelse, er Nuitka, som konverterer Python-programmer til C ++. Nuitka er et igangværende projekt, der står over for mange af de samme problemer som CoreRT og måske har en endnu sværere tid at forene dem. Pythons dynamiske natur gør det vanskeligt at konvertere til et kompileret sprog, der forinden er kompileret, da enhver konstruktion på sproget potentielt er et objekt med meget mutable egenskaber. C # er mindre problematisk set fra dette synspunkt, da den bruger statisk typing til variabler, men som nævnt ovenfor kommer den stadig med en lang række vanskeligheder.

Der er meget om CoreRT, der stammer direkte fra Microsofts løbende tilpasning omkring open source og populære ikke-Microsoft-teknologier. Men Microsoft har altid været pragmatisk om, hvorfor det gør dette, og her handler pragmatismen om at se, hvordan. Net-applikationer kan køre på platforme og i økosystemer, der tidligere ikke understøtter dem.

CoreRT kan teoretisk udvide rækkevidden af ​​.Net-økosystemet uden at Microsoft behøver at gøre unødig indsats. Det er lettere at skrive et engangs transpilationssystem fra C # til C ++, end det er at oprette driftstider til et vilkårligt antal andre målplatforme. Sikker på, tredjeparter kan oprette sådanne driftstider takket være .Net, der nu er en open source-bekymring. Men Microsofts plan er at finde en måde at redde dem - og sig selv - besværet på.

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