Microsoftov CoreRT pretvara C # u C-platformu s više platformi

Microsoft polako mijenja .Net alatni lanac kako bi omogućio prevremenu kompilaciju aplikacija na platformama na kojima ne postoji .Net alatni lanac.

Otvoreni izvorni projekt CoreRT ukida upotrebu Netovog standardnog vremena izvođenja naredbenog retka (CLR) za pokretanje aplikacija. Umjesto toga, generira C ++ kôd iz zadanog koda .Net C # aplikacije, koji se zatim može kompajlirati i povezati na bilo kojoj ciljanoj platformi koja podržava C ++.

U postu na Microsoftovom razvojnom blogu AlphaGeek, Microsoft je ukratko izložio svoje planove kako će CoreRT raditi, zajedno sa svojim obrazloženjem za njegovo stvaranje.

"Ako stvarno želim napisati neki C # kôd i neka 'samo radi' na novom IoT uređaju", napisao je Microsoft, "nemam nikakve mogućnosti dok RyuJIT ne uspije generirati strojni kôd koji radi s tim procesorom i operacijski sustav." Unakrsnim kompajliranjem C # na C ++, programeri .Net tada mogu isporučiti svoje aplikacije bez potrebe da čekaju da se .Net rasporedi na određenoj platformi, kaže Microsoft.

Microsoft je primijetio da je tijekom godine napravio značajan proces prema tom cilju, iako je priznao da je zadatak lakše reći nego učiniti. Najistaknutiji je problem zajednički projektima koji uključuju prenošenje jednog jezika na drugi. C ++ i .Net nemaju međusobnu korespondenciju između svojih značajki - sintakse, struktura podataka, jezične logike itd. Stoga CoreRT mora elegantno mapirati određene .Net značajke u C ++.

Još jedan od glavnih projekata koji prevodi jezik u C ++ kako bi se ubrzalo njegovo izvršavanje je Nuitka, koji pretvara Python programe u C ++. Nuitka je tekući projekt koji se suočava s mnogim istim problemima kao i CoreRT i možda ih ima još teže vrijeme pomiriti. Pythonova dinamična priroda otežava pretvaranje u kompajlirani jezik prije vremena, jer je svaka konstrukcija u jeziku potencijalno objekt s vrlo promjenjivim svojstvima. C # je s tog stajališta manje problematičan, jer koristi statičko tipkanje za varijable, ali kao što je gore spomenuto, i dalje dolazi s mnoštvom poteškoća.

Puno je toga o CoreRT-u koji proizlazi izravno iz Microsoftove stalne prilagodbe oko otvorenog koda i popularnih ne-Microsoftovih tehnologija. No, Microsoft je uvijek bio pragmatičan oko toga zašto to čini, a ovdje se pragmatizam odnosi na to kako vidjeti .Net aplikacije mogu se izvoditi na platformama i u ekosustavima koji ih prethodno nisu podržavali.

CoreRT teoretski može proširiti doseg .Net ekosustava, a da se Microsoft ne mora pretjerano truditi. Jednostavnije je napisati jednokratni sustav transpilacije sa C # na C ++ nego stvoriti runtime za bilo koji broj drugih ciljnih platformi. Svakako, treće strane mogu stvoriti takav rad zahvaljujući tome što je .Net sada briga za otvoreni izvor. Ali Microsoftov je plan pronaći jedan način da ih spasi - i sam sebe - problema.