Pada tanggal 6 Mei, diumumkan bahwa rilis berikutnya setelah
.NET Core 3.0 adalah .NET 5. Ini akan menjadi rilis besar berikutnya dalam keluarga .NET.
Di masa depan hanya akan ada satu .NET, dan Anda dapat menggunakannya untuk pengembangan di bawah Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly dan platform lainnya.
Kami akan memperkenalkan .NET API, kapabilitas runtime, dan fitur bahasa baru sebagai bagian dari .NET 5.

Sejak peluncuran proyek .NET Core, kami telah menambahkan sekitar 50 ribu API .NET Framework ke platform. Sejauh mungkin, .NET Core 3.0 mendekati .NET Framework 4.8, berkat itu Windows Forms, WPF dan Entity Framework 6 menjadi tersedia. itu ternyata menjadi platform tunggal yang dapat digunakan untuk semua kode .NET modern Anda.
Kami bermaksud untuk merilis .NET 5 pada November 2020, dan versi pratinjau pertama akan tersedia pada paruh pertama tahun 2020. Platform ini akan tersedia bersama dengan pembaruan mendatang untuk Visual Studio 2019, Visual Studio untuk Mac, dan Visual Studio Code.
.NET 5 = .NET Core vNext
.NET 5 adalah langkah selanjutnya dalam .NET Core. Proyek ini bertujuan untuk meningkatkan .NET dalam beberapa aspek utama:
- Buat satu runtime dan kerangka kerja yang dapat digunakan di mana saja, dengan perilaku runtime dan pengalaman pengembangan yang sama.
- Perpanjang .NET dengan yang terbaik dari .NET Core, .NET Framework, Xamarin dan Mono.
- Bangun produk dari basis kode tunggal tempat pengembang (dari Microsoft dan komunitas) dapat bekerja sama dan mengembangkannya, yang akan meningkatkan semua skenario yang mungkin.
Proyek dan arah baru ini akan sepenuhnya mengubah situasi dengan .NET. Berkat. NET 5, kode dan file proyek Anda akan terlihat konsisten, terlepas dari jenis aplikasi yang Anda buat. Dari setiap aplikasi, Anda akan memiliki akses ke runtime yang sama, API dan fitur bahasa yang sama, termasuk
peningkatan kinerja baru yang diimplementasikan di corefx hampir setiap hari.
Semua yang Anda sukai tentang .NET Core telah dipertahankan:
- Sumber terbuka dan fokus komunitas pada GitHub.
- Implementasi lintas platform.
- Dukungan untuk penggunaan fitur spesifik platform spesifik, seperti Windows Forms dan WPF untuk Windows, serta binding asli untuk setiap platform asli dari Xamarin.
- Performa tinggi.
- Instalasi berdampingan.
- Ukuran file proyek kecil (gaya SDK).
- Antarmuka baris perintah (CLI) yang kuat.
- Integrasi dengan Visual Studio, Visual Studio untuk Mac, dan Kode Visual Studio.
Inovasi:
- Anda akan memiliki lebih banyak kemampuan runtime (lebih lanjut tentang ini di bawah).
- Kemampuan untuk memanggil kode Java dari .NET 5 akan tersedia di semua platform.
- Doa kode Objective-C dan Swift dari .NET 5 akan didukung pada beberapa sistem operasi.
- CoreFX akan diperluas untuk mendukung kompilasi .NET (terdepan waktu - AOT) statis, untuk mengurangi jejak kaki dan mendukung lebih banyak sistem operasi.
.NET Core 3.0 akan tersedia pada bulan September tahun ini, dan .NET 5 akan tersedia pada bulan November 2020. Setelah itu, kami akan merilis versi utama .NET setahun sekali, setiap November:

Kami melewati versi keempat, karena pengguna mungkin mengalami kebingungan dengan .NET Framework, yang telah lama dirilis di versi 4.x. Selain itu, kami ingin menjelaskan bahwa .NET 5 adalah masa depan platform .NET.
Kami juga memutuskan untuk mengambil kesempatan ini dan menyederhanakan urutan nama. Kami percaya bahwa jika hanya satu .NET yang berkembang, maka kami tidak akan memerlukan istilah penjelas βCoreβ. Nama pendeknya lebih sederhana, artinya fitur dan perilaku .NET 5 disatukan. Jika mau, Anda bisa terus menggunakan nama .NET Core.
Lingkungan runtime
Mono adalah implementasi lintas platform asli dari .NET. Ini dimulai sebagai alternatif open-source untuk .NET Framework, dan kemudian, dengan semakin populernya perangkat iOS dan Android, kami mengarahkannya kembali ke segmen seluler. Mono adalah lingkungan runtime yang digunakan sebagai bagian dari Xamarin.
CoreCLR adalah lingkungan runtime yang digunakan sebagai bagian dari .NET Core. Awalnya berfokus pada mendukung aplikasi cloud, termasuk layanan terbesar di Microsoft, hari ini juga digunakan untuk aplikasi desktop Windows, IoT, dan pembelajaran mesin.
.NET Core dan Mono runtimes memiliki banyak kesamaan (namun demikian, keduanya. NET runtimes), tetapi masing-masing memiliki kemampuan uniknya sendiri. Karena itu, masuk akal untuk memberi Anda kesempatan untuk memilih pengalaman penggunaan yang Anda butuhkan. Kami saat ini sedang bekerja untuk membuat penggantian plug-in CoreCLR dan Mono satu sama lain. Prosesnya akan sesederhana mengganti majelis untuk memilih antara opsi runtime yang berbeda.
Dalam bab-bab berikut, saya akan menjelaskan rencana kunci kami untuk .NET 5. Mereka akan membantu Anda memahami bagaimana kami akan mengembangkan dua runtime pada waktu yang sama dan pada waktu yang sama secara terpisah.
Produktivitas dan produktivitas tinggi
Sejak awal, .NET mengandalkan
kompiler JIT untuk mengubah kode Bahasa
Menengah menjadi kode mesin yang dioptimalkan. Kami telah menciptakan lingkungan runtime terbaik di industri dengan JIT, dengan kinerja sangat tinggi, sementara memungkinkan pengembang untuk menulis kode dengan cepat dan mudah.
Kompiler JIT sangat cocok untuk cloud dan skrip klien yang berjalan lama. Mereka dapat menghasilkan kode yang memperhitungkan fitur-fitur konfigurasi perangkat keras, termasuk instruksi prosesor tertentu. JIT
juga dapat
menghasilkan metode saat runtime lagi , teknik ini memungkinkan Anda untuk mengkompilasi dengan kecepatan tinggi, sementara pada saat yang sama membuat versi kode yang disetel dengan baik jika beberapa metode sering digunakan.
Upaya kami untuk mempercepat kinerja ASP.NET Core, seperti yang
terlihat dalam hasil tolok ukur
TechEmpower , adalah contoh yang baik dari kemampuan JIT dan merupakan kontribusi kami terhadap CoreCLR. Kami mencoba menyiapkan
.NET Core untuk penggunaan wadah , ini menunjukkan kemampuan runtime untuk beradaptasi secara dinamis dengan lingkungan terbatas.
Alat pengembang adalah area lain di mana JIT telah membuktikan dirinya, misalnya, dotnet watch atau mode "edit dan lanjutkan". Alat seringkali memerlukan kompilasi dan pengunduhan kode dalam proses yang sama berkali-kali tanpa memulai ulang, dan Anda perlu melakukannya dengan sangat cepat.
Pengembang yang menggunakan .NET Core atau .NET Framework terutama mengandalkan JIT. Jadi seharusnya sudah tidak asing lagi bagi mereka.
Pendekatan standar untuk sebagian besar beban kerja .NET 5 adalah menggunakan runtime CoreCLR dengan JIT. Dua pengecualian penting adalah iOS dan klien Blazor (WebAssembly), mereka memerlukan kompilasi awal (sebelumnya).
Startup cepat, tapak rendah, dan tapak memori berkurang
Sebagai bagian dari proyek Mono, sebagian besar upaya ditujukan untuk segmen seluler dan konsol game. Peluang dan hasil utama dari proyek ini adalah kompiler AOT untuk .NET, yang dikembangkan berdasarkan pada kompiler
LLVM . Kompiler Mono AOT memungkinkan Anda mengkompilasi kode .NET ke dalam kode tunggal asli yang dapat dijalankan yang dapat dijalankan pada mesin apa pun, seperti kode C ++. Aplikasi pra-kompilasi (AOT) dapat dijalankan secara efisien dengan sumber daya terbatas (tempat-tempat kecil) dan, jika perlu, mengorbankan kinerja untuk peluncurannya.
Proyek
Blazor sudah menggunakan Mono AOT dan merupakan salah satu yang pertama beralih ke .NET 5. Kami menggunakannya sebagai salah satu cara untuk membuktikan rencana kami.
Ada dua jenis solusi AOT:
- Membutuhkan kompilasi AOT penuh.
- Solusi, sebagian besar kode yang dikompilasi AOT, tetapi masih memungkinkan Anda untuk menggunakan JIT atau juru bahasa untuk pola kode seperti itu yang tidak berteman dengan AOT (misalnya, generik).
Mono AOT mendukung kedua jenis ini. AOT tipe pertama diperlukan untuk iOS dan beberapa konsol game, ini terutama karena persyaratan keamanan. Solusi tipe kedua lebih disukai karena mereka memiliki semua kelebihan AOT tanpa kekurangannya.
.NET Native adalah kompiler AOT yang kami gunakan untuk aplikasi Windows UWP. Itu milik tipe pertama dari solusi AOT. Dalam implementasi khusus ini, kami telah membatasi .NET API dan opsi yang tersedia untuk Anda. Ini membantu kami memahami bahwa solusi AOT harus mencakup rangkaian lengkap .NET API dan pola.
Kompilasi AOT akan tetap diperlukan untuk iOS, WebAssembly dan beberapa konsol game. Kami akan menjadikannya opsional untuk aplikasi yang tertanam dalam peralatan (seperti alat), yang membutuhkan permulaan yang cepat dan / atau konsumsi CPU yang rendah.
Dasar-dasar dan persyaratan terkait
Sangat penting bagi kami untuk terus berkembang sebagai platform dengan kontrol untuk peluncuran, kinerja, konsumsi memori, keandalan, dan diagnostik. Pada saat yang sama, disarankan untuk memfokuskan upaya kami. Kami akan bekerja lebih banyak untuk meningkatkan kinerja dan keandalan di CoreCLR, serta untuk meningkatkan peluncuran dan pengurangan ukuran file dari kompiler Mono AOT. Bagi kami, ini adalah kombinasi yang baik. Kinerja dan keandalan berjalan beriringan, seperti halnya kecepatan startup dengan ukuran file yang dikurangi.
Disarankan untuk menginvestasikan sumber daya yang berbeda untuk meningkatkan beberapa karakteristik, tetapi tidak dalam meningkatkan yang lain.
Kemampuan diagnostik harus sama di seluruh .NET 5, ini berlaku untuk fungsionalitas dan kinerja. Penting juga untuk mendukung prosesor dan OS yang sama (dengan pengecualian iOS dan WebAssembly).
Kami akan terus mengoptimalkan .NET 5 untuk semua jenis beban kerja dan skrip yang masuk akal. Penekanan terbesar akan ditempatkan pada optimasi, terutama dalam kasus di mana beban yang berbeda memberlakukan persyaratan yang sama.
Semua aplikasi .NET 5 akan menggunakan kerangka kerja
CoreFX . Kami akan memastikan bahwa CoreFX berfungsi dengan baik di tempat yang tidak digunakan hari ini, terutama tugas klien Xamarin Blazor.
Semua aplikasi .NET 5 dapat dibangun menggunakan
.NET CLI , sehingga di semua proyek Anda akan memiliki satu toolkit berdasarkan pada baris perintah.
C # akan berkembang dengan .NET 5. Pengembang yang menulis aplikasi .NET 5 akan memiliki akses ke versi C # terbaru dan propertinya.
Kelahiran proyek
Sebagai tim teknis, kami berkumpul pada bulan Desember 2018 di Boston untuk memulai proyek ini. Arsitek terkemuka dari tim .NET (Mono / Xamarin dan .NET Core) dan
Unity berbicara tentang berbagai kemampuan teknis dan arah pengembangan arsitektur.
Sekarang kami sedang memindahkan proyek sebagai sebuah tim. Sejak Desember, kami telah membuat kemajuan besar dalam beberapa proyek:
- Kami menentukan level minimum yang menentukan interaksi runtime dan lapisan kode terkelola untuk menjadikan> 99% CoreFX kode umum.
- MonoVM sekarang dapat menggunakan CoreFX dan perpustakaan kelasnya.
- Kami menjalankan semua tes CoreFX di MonoVM menggunakan implementasinya.
- Meluncurkan aplikasi ASP.NET Core 3.0 di MonoVM.
- Meluncurkan MonoDevelop dan Visual Studio untuk Mac di CoreCLR.
Mengejar implementasi .NET tunggal menimbulkan pertanyaan penting. Apa yang akan menjadi kerangka final? Akankah Aturan Kompatibilitas Paket NuGet Tetap? Apa beban yang akan didukung oleh .NET 5 SDK di luar kotak? Bagaimana cara menulis kode untuk arsitektur tertentu? Apakah kita memerlukan .NET Standard? Sekarang kami sedang mengerjakan semua ini dan akan segera dapat berbagi dengan Anda dokumentasi proyek sehingga Anda dapat membacanya dan memberikan umpan balik.
Kesimpulan
Proyek .NET 5 adalah arah baru yang penting dan menginspirasi untuk .NET. Anda akan melihat bahwa .NET akan menjadi lebih mudah, tetapi pada saat yang sama akan digunakan lebih luas, itu akan mendapatkan lebih banyak peluang. Semua fitur pengembangan baru akan menjadi bagian dari .NET 5, termasuk versi baru dari C #.
Kami memiliki masa depan yang cerah di mana Anda dapat menggunakan .NET API dan bahasa yang sama untuk beragam aplikasi, sistem operasi, dan arsitektur prosesor. Anda dapat dengan mudah mengubah konfigurasi build dengan merakit aplikasi sesuka Anda - di Visual Studio, Visual Studio untuk Mac, Visual Studio Code, Azure DevOps atau dari baris perintah.