<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>.NET 11 | The .NET Blog</title><link>https://thedotnetblog.com/id/tags/.net-11/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>id</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/id/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>.NET 11 Akhirnya Memperbaiki API Proses</title><link>https://thedotnetblog.com/id/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/id/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>System.Diagnostics.Process mendapatkan pembaruan terbesar dalam beberapa tahun. RunAndCaptureTextAsync, KillOnParentExit, API SafeProcessHandle, dan kontrol penuh atas pengalihan handle standar — tidak ada lagi boilerplate deadlock.</description><content:encoded>&lt;p&gt;Setiap pengembang .NET yang pernah perlu menjalankan proses dan menangkap outputnya telah menulis beberapa variasi dari boilerplate berbahaya yang sama: pembacaan async dari stdout, pembacaan async dari stderr, &lt;code&gt;WaitForExitAsync&lt;/code&gt;, jangan lupa menguras kedua stream atau akan terjadi deadlock. Ini adalah jebakan yang sudah dikenal bertahun-tahun.&lt;/p&gt;
&lt;p&gt;.NET 11 akhirnya memperbaiki ini dengan benar.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;Penambahan utama: satu metode statis yang memulai proses, menangkap stdout dan stderr, dan menunggu keluar tanpa deadlock.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Satu panggilan. Tanpa pengosongan stream manual. Tanpa &lt;code&gt;WaitForExit&lt;/code&gt; yang ditempatkan dengan hati-hati. Jika Anda hanya perlu menjalankan sesuatu dan mendapatkan outputnya, inilah API yang Anda inginkan.&lt;/p&gt;
&lt;p&gt;Ada juga &lt;code&gt;Process.RunAsync&lt;/code&gt; untuk kasus di mana Anda ingin menunggu keluar tanpa menangkap output.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;Masalah umum dengan proses yang dijalankan: jika proses induk crash atau dihentikan, proses anak terus berjalan sebagai yatim piatu. &lt;code&gt;KillOnParentExit&lt;/code&gt; memungkinkan Anda mendeklarasikan saat proses dimulai bahwa proses anak harus dihentikan ketika proses induk keluar.&lt;/p&gt;
&lt;p&gt;Ini adalah fitur yang ada dengan cara khusus platform (job objects di Windows, prctl di Linux) tetapi memerlukan p/invoke atau pustaka pihak ketiga untuk digunakan dari .NET. Sekarang ini adalah properti kelas satu pada &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="api-berbasis-safeprocesshandle"&gt;API Berbasis SafeProcessHandle&lt;/h2&gt;
&lt;p&gt;Permukaan API ringan baru dibangun di sekitar &lt;code&gt;SafeProcessHandle&lt;/code&gt; daripada kelas &lt;code&gt;Process&lt;/code&gt; lengkap. Kelas &lt;code&gt;Process&lt;/code&gt; lengkap membawa banyak status dan sulit untuk dipangkas — jalur &lt;code&gt;SafeProcessHandle&lt;/code&gt; lebih ramah trimmer untuk aplikasi yang perlu meminimalkan ukuran output (WASM, native AOT).&lt;/p&gt;
&lt;h2 id="kontrol-penuh-atas-pewarisan-handle"&gt;Kontrol Penuh atas Pewarisan Handle&lt;/h2&gt;
&lt;p&gt;Pembaruan ini juga menambahkan kontrol granular atas handle mana yang diwarisi proses anak dan bagaimana handle standar dialihkan. Sebelumnya Anda bisa mengalihkan stdin/stdout/stderr tetapi tidak bisa menentukan dengan tepat handle mana yang akan diwarisi di tingkat OS. API baru mengekspos kontrol tersebut.&lt;/p&gt;
&lt;h2 id="mengapa-ini-penting"&gt;Mengapa Ini Penting&lt;/h2&gt;
&lt;p&gt;Kelas &lt;code&gt;Process&lt;/code&gt; digunakan dalam tooling, sistem build, test runner, dan aplikasi apa pun yang memanggil executable lain. Permukaan API lama berasal dari .NET Framework dan mulai menunjukkan usianya. Ini bukan perubahan yang merusak — API lama masih berfungsi — tetapi kode baru harus lebih memilih permukaan baru.&lt;/p&gt;
&lt;p&gt;Untuk aplikasi yang dipangkas atau skenario kompilasi AOT, jalur &lt;code&gt;SafeProcessHandle&lt;/code&gt; sangat disambut. Kelas &lt;code&gt;Process&lt;/code&gt; lama membawa banyak kode yang berat refleksi yang mempersulit pemangkasan.&lt;/p&gt;
&lt;p&gt;Posting asli: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>.NET 11 Preview 4: Template Server MCP, Pustaka Runtime-Async, API Proses</title><link>https://thedotnetblog.com/id/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/id/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 telah hadir. Sorotan utama: template server MCP di SDK, pustaka runtime yang dikompilasi dengan runtime-async, dotnet watch untuk mobile, dan perluasan besar API Proses.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 telah tersedia. Setiap rilis preview utama .NET menambahkan daftar panjang item di seluruh runtime, SDK, pustaka, ASP.NET Core, MAUI, C#, dan Entity Framework. Daripada mengulang daftar lengkapnya, berikut hal-hal yang menarik perhatian saya.&lt;/p&gt;
&lt;h2 id="template-server-mcp-hadir-di-sdk-net"&gt;Template Server MCP Hadir di SDK .NET&lt;/h2&gt;
&lt;p&gt;Item yang paling menarik: template proyek server MCP kini disertakan dalam SDK. Ini berarti &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (atau apa pun nama akhir perintahnya) berfungsi langsung tanpa konfigurasi tambahan. Bagi siapa saja yang membangun tooling MCP di .NET, ini sangat mengurangi hambatan awal. Integrasi MCP di toolchain platform mengisyaratkan arah yang dituju ekosistem.&lt;/p&gt;
&lt;h2 id="pustaka-runtime-dikompilasi-dengan-runtime-async"&gt;Pustaka Runtime Dikompilasi dengan Runtime-Async&lt;/h2&gt;
&lt;p&gt;Runtime itu sendiri kini mengompilasi pustaka standarnya menggunakan fitur runtime-async. Ini adalah perubahan internal yang mempengaruhi performa — mesin state async dalam runtime menjadi lebih efisien. Pentingnya di sini bukan pada perubahan API yang terlihat pengguna; melainkan bahwa runtime-async sudah cukup matang untuk digunakan pada BCL itu sendiri, yang merupakan sinyal bermakna tentang kesiapan fitur ini.&lt;/p&gt;
&lt;h2 id="optimasi-jit-dan-intrinsik-hardware"&gt;Optimasi JIT dan Intrinsik Hardware&lt;/h2&gt;
&lt;p&gt;Preview 4 melanjutkan pekerjaan JIT. Peningkatan intrinsik hardware dan pembuatan kode hadir di sini — detailnya ada di catatan rilis runtime. Jenis perubahan ini biasanya meningkatkan throughput pada loop komputasi padat tanpa perubahan kode dari pihak Anda.&lt;/p&gt;
&lt;h2 id="perluasan-api-proses"&gt;Perluasan API Proses&lt;/h2&gt;
&lt;p&gt;Pembaruan besar untuk &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; hadir di Preview 4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — memulai proses, menangkap stdout/stderr, menunggu keluar, semuanya dalam satu panggilan tanpa risiko deadlock&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — penggabungan siklus hidup yang ringan antara proses induk dan anak&lt;/li&gt;
&lt;li&gt;API berbasis &lt;code&gt;SafeProcessHandle&lt;/code&gt; yang lebih ramah trimmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jika Anda pernah menulis kode boilerplate untuk menangkap output proses tanpa memicu deadlock (pembacaan async dari stdout &lt;em&gt;dan&lt;/em&gt; stderr secara bersamaan), &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; adalah API yang Anda butuhkan.&lt;/p&gt;
&lt;h2 id="dotnet-watch-untuk-android-dan-ios"&gt;dotnet watch untuk Android dan iOS&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dotnet watch&lt;/code&gt; kini mendukung pemilihan perangkat untuk proyek .NET MAUI Android dan iOS. Iterasi lebih cepat di mobile tanpa mengelola koneksi perangkat secara manual dalam loop build.&lt;/p&gt;
&lt;h2 id="api-kompresi-berbasis-span"&gt;API Kompresi Berbasis Span&lt;/h2&gt;
&lt;p&gt;API encoder/decoder Deflate, ZLib, dan GZip berbasis span baru hadir di pustaka. Alokasi lebih sedikit saat menangani data terkompresi — relevan jika Anda melakukan pemrosesan data throughput tinggi.&lt;/p&gt;
&lt;h2 id="coba-sekarang"&gt;Coba Sekarang&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;Unduh .NET 11 Preview 4&lt;/a&gt; — ini adalah preview, belum siap produksi, tetapi layak dijalankan pada proyek Anda untuk menemukan masalah lebih awal sebelum siklus RC.&lt;/p&gt;
&lt;p&gt;Posting asli: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/"&gt;.NET 11 Preview 4 is now available!&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>