Programmering

Microsofts CoreRT gjør C # til plattform C ++

Microsoft endrer sakte .Net-verktøykjeden for å tillate forhånds-kompilering for applikasjoner på plattformer der det ikke finnes .Net-verktøykjede.

Åpen kildekode CoreRT-prosjektet gjør unna bruk av .Nets standard Command Line Runtime (CLR) for å kjøre applikasjoner. I stedet genererer den C ++ - kode fra en gitt. Net C # app-kode, som deretter kan kompileres og kobles på hvilken som helst målplattform som støtter C ++.

I et innlegg på Microsofts AlphaGeek-utviklingsblogg la Microsoft kort opp planene for hvordan CoreRT vil fungere, sammen med begrunnelsen for å lage den.

"Hvis jeg virkelig vil skrive litt C # -kode og få den til å" bare fungere "på en ny IoT-enhet," skrev Microsoft, "har jeg ingen muligheter før RyuJIT er i stand til å generere maskinkode som fungerer med den prosessoren og operativsystem." Ved å krysskompilere C # til C ++ kan .Net-utviklere deretter levere applikasjonene sine uten å måtte vente på at .Net skal distribueres på en gitt plattform, sier Microsoft.

Microsoft bemerket at det hadde gjort en betydelig prosess mot dette målet i løpet av året, selv om det erkjente at oppgaven er lettere sagt enn gjort. Det mest fremtredende problemet er vanlig for prosjekter som innebærer å overføre ett språk til et annet. C ++ og .Net har ikke en-til-en-korrespondanse mellom funksjonene deres - syntaksen, datastrukturene, språklogikken og så videre. Derfor må CoreRT elegant kartlegge visse .Net-funksjoner i C ++.

Et annet stort prosjekt som transporterer et språk til C ++ for å få hurtigere utførelsen er Nuitka, som konverterer Python-programmer til C ++. Nuitka er et pågående prosjekt som står overfor mange av de samme problemene som CoreRT, og har kanskje en enda tøffere tid å forene dem. Pythons dynamiske natur gjør det vanskelig å konvertere til et på forhånd kompilert språk, siden hver konstruksjon i språket potensielt er et objekt med svært mutable egenskaper. C # er mindre problematisk sett fra dette synspunktet, siden det bruker statisk skriving for variabler, men som nevnt ovenfor kommer det fremdeles med en rekke vanskeligheter.

Det er mye om CoreRT som kommer direkte fra Microsofts pågående justering rundt åpen kildekode og populære ikke-Microsoft-teknologier. Men Microsoft har alltid vært pragmatisk om hvorfor det gjør dette, og her handler pragmatismen om å se hvordan. Net-applikasjoner kan kjøre på plattformer og i økosystemer som tidligere ikke støttet dem.

CoreRT kan teoretisk utvide rekkevidden til .Net-økosystemet uten at Microsoft trenger å gjøre unødig innsats. Det er lettere å skrive et engangs transpilasjonssystem fra C # til C ++ enn det er å lage kjøretider for et hvilket som helst antall andre målplattformer. Visst, tredjeparter kan opprette slike driftstider takket være .Net som nå er en åpen kildekode. Men Microsofts plan er å finne en måte å redde dem - og seg selv - problemer.

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