CoreRT Microsoft mengubah C # menjadi C ++ lintas platform

Microsoft perlahan-lahan mengubah .Net toolchain untuk memungkinkan kompilasi aplikasi pada platform di mana tidak ada .Net toolchain.

Proyek CoreRT open source menghilangkan penggunaan Command Line Runtime (CLR) standar .Net untuk menjalankan aplikasi. Sebaliknya, ini menghasilkan kode C ++ dari kode aplikasi .Net C # yang diberikan, yang kemudian dapat dikompilasi dan ditautkan pada platform target apa pun yang mendukung C ++.

Dalam sebuah posting di blog pengembangan AlphaGeek Microsoft, Microsoft secara singkat menjabarkan rencananya tentang bagaimana CoreRT akan bekerja, bersama dengan alasannya untuk membuatnya.

"Jika saya benar-benar ingin menulis beberapa kode C # dan membuatnya 'berfungsi' pada perangkat IoT baru," tulis Microsoft, "Saya tidak memiliki opsi apa pun hingga RyuJIT mampu menghasilkan kode mesin yang bekerja dengan prosesor itu dan sistem operasi." Dengan mengkompilasi silang C # ke C ++, pengembang .Net kemudian dapat mengirimkan aplikasi mereka tanpa perlu menunggu .Net diterapkan pada platform tertentu, kata Microsoft.

Microsoft mencatat bahwa pihaknya telah membuat beberapa proses signifikan untuk mencapai tujuan ini sepanjang tahun, meskipun ia mengakui bahwa tugas tersebut lebih mudah diucapkan daripada dilakukan. Masalah yang paling menonjol umum terjadi pada proyek yang melibatkan pemindahan satu bahasa ke bahasa lain. C ++ dan .Net tidak memiliki korespondensi satu-ke-satu antara fiturnya - sintaksis, struktur data, logika bahasa, dan sebagainya. Oleh karena itu, CoreRT harus secara elegan memetakan fitur .Net tertentu ke dalam C ++.

Satu proyek besar lainnya yang mentransformasikan bahasa ke C ++ untuk mempercepat eksekusinya adalah Nuitka, yang mengubah program Python menjadi C ++. Nuitka adalah proyek berkelanjutan yang menghadapi banyak masalah yang sama dengan CoreRT dan mungkin memiliki waktu yang lebih sulit untuk menyelesaikannya. Sifat dinamis Python membuatnya sulit untuk diubah menjadi bahasa yang dikompilasi sebelumnya, karena setiap konstruksi dalam bahasa tersebut berpotensi menjadi objek dengan properti yang sangat bisa berubah. C # tidak terlalu bermasalah dari sudut pandang itu, karena C # menggunakan pengetikan statis untuk variabel, tetapi seperti disebutkan di atas, C # masih memiliki sejumlah kesulitan.

Ada banyak hal tentang CoreRT yang diturunkan langsung dari penyelarasan Microsoft yang sedang berlangsung seputar teknologi open source dan non-Microsoft yang populer. Tetapi Microsoft selalu pragmatis tentang mengapa melakukan ini, dan di sini pragmatisme adalah tentang melihat bagaimana aplikasi .Net dapat berjalan pada platform dan ekosistem yang sebelumnya tidak mendukungnya.

CoreRT secara teoritis dapat memperluas jangkauan ekosistem .Net tanpa Microsoft harus melakukan upaya yang tidak semestinya. Lebih mudah untuk menulis sistem transpilasi satu kali dari C # ke C ++ daripada membuat runtime untuk sejumlah platform target lainnya. Tentu, pihak ketiga dapat membuat runtime seperti itu berkat .Net sekarang menjadi perhatian open source. Tapi rencana Microsoft adalah menemukan satu cara untuk menyelamatkan mereka - dan dirinya sendiri - dari masalah tersebut.