Bagikan melalui


Peta Jalan Konsol Windows dan Ekosistem Terminal

Dokumen ini adalah peta jalan tingkat tinggi dari Konsol Windows dan produk Terminal Windows. Ini mencakup:

  • Bagaimana Konsol Windows dan Terminal Windows cocok dengan ekosistem aplikasi baris perintah di seluruh Windows dan sistem operasi lainnya.

  • Sejarah dan peta jalan masa depan dari produk, fitur, dan strategi yang merupakan bagian dari membangun platform, serta membangun untuk platform ini.

Fokus era konsol/terminal saat ini di Microsoft adalah menghadirkan pengalaman terminal kelas satu langsung kepada pengembang di platform Windows dan untuk mengeluarkan API Konsol Windows klasik, menggantinya dengan urutan terminal virtual yang menggunakan pseudoconsole. Terminal Windows menampilkan transisi ini ke pengalaman kelas satu, mengundang kolaborasi sumber terbuka dari komunitas pengembang, mendukung spektrum penuh pencampuran dan pencocokan baris perintah klien dan aplikasi hosting terminal, dan menyatukan ekosistem Windows dengan semua platform lainnya.

Definisi

Disarankan untuk membiasakan diri dengan definisi terminologi umum yang digunakan dalam ruang ini sebelum melanjutkan. Terminologi umum meliputi: Aplikasi Baris Perintah (atau Konsol), handel standar (STDIN, , STDOUTSTDERR), perangkat TTY dan PTY, klien dan server, subsistem konsol, host konsol, pseudoconsole, dan terminal.

Arsitektur

Arsitektur umum sistem berada dalam empat bagian: klien, perangkat, server, dan terminal.

Command Line Communication flow chart source to destination running from client to device to server to terminal

Klien

Klien adalah aplikasi baris perintah yang menggunakan antarmuka berbasis teks untuk memungkinkan pengguna memasukkan perintah (bukan antarmuka pengguna berbasis mouse), mengembalikan representasi teks dari hasilnya. Di Windows, API Konsol menyediakan lapisan komunikasi antara klien dan perangkat. (Ini juga dapat menjadi handel konsol standar dengan API kontrol perangkat).

Perangkat

Perangkat ini adalah lapisan komunikasi penanganan pesan perantara antara dua proses, klien dan server. Pada Windows, ini adalah driver konsol. Pada platform lain, ini adalah perangkat TTY atau PTY. Perangkat lain seperti file, pipa, dan soket dapat digunakan sebagai saluran komunikasi ini jika seluruh transaksi dalam teks biasa atau berisi urutan terminal virtual, tetapi tidak dengan API Konsol Windows.

Server

Server menginterpretasikan panggilan atau pesan API yang diminta dari klien. Pada Windows dalam mode operasi klasik, server juga membuat antarmuka pengguna untuk menyajikan output ke layar. Server juga mengumpulkan input untuk mengirim kembali pesan respons ke klien, melalui driver, seperti terminal yang dibundel dalam modul yang sama. Menggunakan mode pseudoconsole , sebagai gantinya hanya penerjemah untuk menyajikan informasi ini dalam urutan terminal virtual ke terminal yang terpasang.

Terminal

Terminal adalah lapisan akhir yang menyediakan tampilan grafis dan layanan interaktivitas kepada pengguna. Ini bertanggung jawab untuk menangkap input dan mengodekannya sebagai urutan terminal virtual, yang akhirnya mencapai klien STDIN. Ini juga akan menerima dan mendekode urutan terminal virtual yang diterimanya kembali dari klien STDOUT untuk presentasi di layar.

Koneksi lebih lanjut

Sebagai addendum, koneksi lebih lanjut dapat dilakukan dengan merantai aplikasi yang melayani beberapa peran ke dalam salah satu titik akhir. Misalnya, sesi SSH memiliki dua peran: ini adalah terminal untuk aplikasi baris perintah yang berjalan di satu perangkat, tetapi meneruskan semua informasi yang diterima ke peran klien di perangkat lain. Penautan ini dapat terjadi tanpa batas waktu di seluruh perangkat dan konteks yang menawarkan fleksibilitas skenario yang luas.

Pada platform non-Windows, peran server dan terminal adalah satu unit karena tidak perlu lapisan kompatibilitas terjemahan antara set API dan urutan terminal virtual.

Produk Microsoft

Semua produk baris perintah Microsoft Windows sekarang tersedia di GitHub di repositori sumber terbuka, microsoft/terminal.

Host Konsol Windows

Ini adalah antarmuka pengguna Windows tradisional untuk aplikasi baris perintah. Ini menangani semua layanan API konsol yang dipanggil dari aplikasi baris perintah yang terpasang. Konsol Windows juga menangani representasi antarmuka pengguna grafis (GUI) atas nama semua aplikasi tersebut. Ini ditemukan di direktori sistem sebagai conhost.exe, atau openconsole.exe dalam bentuk sumber terbuka. Muncul dengan sistem operasi Windows. Ini juga dapat ditemukan di produk Microsoft lainnya yang dibangun dari repositori sumber terbuka untuk implementasi infrastruktur pseudoconsole yang lebih terbaru. Sesuai definisi di atas, ia beroperasi dalam peran server-dan-terminal gabungan secara tradisional atau peran khusus server melalui infrastruktur pseudoconsole pilihan.

Windows Terminal

Ini adalah antarmuka Windows baru untuk aplikasi baris perintah. Terminal Windows berfungsi sebagai contoh pihak pertama dalam menggunakan pseudoconsole untuk memisahkan kekhawatiran antara layanan API dan interfacing aplikasi berbasis teks, sama seperti semua platform non-Windows.

Terminal Windows adalah antarmuka pengguna mode teks unggulan untuk Windows. Ini menunjukkan kemampuan ekosistem dan mendorong pengembangan Windows menuju pemersatu dengan platform lain. Terminal Windows juga merupakan contoh cara membangun aplikasi modern yang kuat dan kompleks yang mencakup riwayat dan gamut API dan kerangka kerja Windows. Sesuai definisi di atas, produk ini beroperasi dalam peran terminal.

Tonggak sejarah utama

Tonggak sejarah utama untuk subsistem konsol dipecah menjadi implementasi sebelum 2014 dan kemudian beralih ke gambaran umum pekerjaan yang dilakukan sejak 2014, ketika fokus yang diperbarui pada baris perintah terbentuk di era Windows 10.

Implementasi Awal

[1989-1990-an] Sistem host konsol awal diimplementasikan sebagai emulasi lingkungan DOS dalam sistem operasi Windows. Kodenya terjerat dan kooperatif dengan Command Prompt, cmd.exe, yang merupakan representasi dari lingkungan DOS tersebut. Kode sistem host konsol berbagi tanggung jawab dan hak istimewa dengan penerjemah/shell Prompt Perintah. Ini juga menyediakan tingkat dasar layanan untuk utilitas baris perintah lainnya untuk melakukan layanan dengan cara seperti CMD.

DBCS untuk CJK

[1997-1999] Sekitar waktu ini, dukungan DBCS ("Set karakter double-byte") diperkenalkan untuk mendukung pasar CJK (Cina, Jepang, dan Korea). Upaya ini menghasilkan bifurcation dari banyak metode penulisan dan membaca di dalam konsol untuk menyediakan versi "barat" untuk menangani karakter byte tunggal serta representasi alternatif untuk versi "timur" di mana dua byte diperlukan untuk mewakili array karakter yang luas. Bifurasi ini mencakup representasi sel yang diperluas di lingkungan konsol menjadi lebar 1 atau 2 sel, di mana 1 sel sempit (lebih tinggi dari lebar) dan 2 sel lebar, lebar penuh, atau jika tidak, persegi di mana ideograf khas Tionghoa, Jepang, dan Korea dapat ditulis.

Keamanan/Isolasi

[2005-2009] Dengan pengalaman subsistem konsol yang berjalan di dalam proses sistem penting, csrss.exe, menghubungkan berbagai aplikasi klien, pada berbagai tingkat akses, ke satu proses yang sangat penting dan istimewa diperhatikan sebagai sangat berbahaya. Di era ini, subsistem konsol dibagi menjadi aplikasi klien, driver, dan server. Setiap aplikasi dapat berjalan dalam konteks mereka sendiri, mengurangi tanggung jawab dan hak istimewa di masing-masing aplikasi. Isolasi ini meningkatkan ketahanan umum sistem, karena kegagalan apa pun di subsistem konsol tidak lagi memengaruhi fungsionalitas proses penting lainnya.

Peningkatan Pengalaman Pengguna

[2014-2016] Setelah lama pemeliharaan subsistem konsol yang tersebar secara umum oleh berbagai tim di seluruh organisasi, tim baru yang berfokus pada pengembang dibentuk untuk memiliki dan mendorong peningkatan di konsol. Peningkatan selama waktu ini termasuk: pemilihan baris, mengubah ukuran jendela halus, teks reflowing, salin dan tempel, dukungan DPI tinggi, dan fokus pada Unicode, termasuk konvergensi pemisahan antara penyimpanan "barat" dan "timur" dan algoritma manipulasi aliran.

Klien Terminal Virtual

[2015-2017] Dengan kedatangan Subsistem Windows untuk Linux, Upaya Microsoft untuk meningkatkan pengalaman Docker di Windows, dan adopsi OpenSSH sebagai teknologi eksekusi jarak jauh baris perintah utama, implementasi awal urutan terminal virtual diperkenalkan ke dalam host konsol. Ini memungkinkan konsol yang ada untuk bertindak sebagai terminal, dilampirkan langsung ke aplikasi asli Linux tersebut di lingkungan masing-masing, merender atribut grafis dan teks ke tampilan dan mengembalikan input pengguna dalam dialek yang sesuai.

Server Terminal Virtual

[2018] Selama dua puluh tahun terakhir, alternatif pihak ketiga untuk host konsol kotak masuk dibuat untuk menawarkan produktivitas pengembang tambahan, yang terpusat dalam penyesuaian yang kaya dan antarmuka bertab. Aplikasi ini masih diperlukan untuk menjalankan dan menyembunyikan jendela host konsol. Mereka melampirkan sebagai aplikasi "klien" sekunder untuk mengikis informasi buffer dalam perulangan polling saat aplikasi klien baris perintah utama dioperasikan. Tujuan mereka adalah untuk menjadi terminal, seperti pada platform lain, tetapi di dunia Windows di mana terminal tidak dapat diganti.

Dalam periode waktu ini, infrastruktur pseudoconsole diperkenalkan. Pseudoconsole mengizinkan aplikasi apa pun untuk meluncurkan host konsol dalam mode non-interaktif dan menjadi antarmuka terminal akhir untuk pengguna. Batasan utama dalam upaya ini adalah janji kompatibilitas Windows yang berkelanjutan dalam melayani semua API Konsol Windows yang diterbitkan untuk masa depan yang tidak terbatas, sambil menyediakan antarmuka hosting server pengganti yang cocok dengan apa yang diharapkan pada semua platform lain: urutan terminal virtual. Dengan demikian, upaya ini melakukan gambar cermin fase klien: pseudoconsole memproyeksikan apa yang akan ditampilkan ke layar sebagai urutan terminal virtual untuk host yang didelegasikan dan menafsirkan balasan ke dalam urutan input format Windows untuk konsumsi aplikasi klien.

Peta strategi untuk masa depan

Aplikasi terminal

[2019-Sekarang] Ini adalah era sumber terbuka untuk subsistem konsol, berfokus pada Terminal Windows baru. Diumumkan selama konferensi Microsoft Build pada Mei 2019, Terminal Windows sepenuhnya ada di GitHub di microsoft/terminal. Membangun aplikasi Terminal Windows di atas platform halus untuk pseudoconsole akan menjadi fokus era ini, menghadirkan pengalaman terminal kelas satu langsung kepada pengembang di platform Windows.

Terminal Windows bermaksud tidak hanya menampilkan platform — termasuk teknologi antarmuka WinUI, model kemasan MSIX, dan arsitektur komponen C++/WinRT — tetapi juga sebagai validasi platform itu sendiri. Terminal Windows mendorong organisasi Windows untuk membuka dan mengembangkan platform aplikasi seperlunya untuk terus meningkatkan produktivitas pengembang. Kumpulan persyaratan pengguna dan pengembang daya yang unik Terminal Windows mendorong persyaratan platform Windows modern untuk apa yang benar-benar dibutuhkan pasar tersebut dari Windows.

Di dalam sistem operasi Windows, ini termasuk menghentikan antarmuka pengguna host konsol klasik dari posisi defaultnya demi urutan Terminal Windows, ConPTY, dan terminal virtual.

Terakhir, era ini berniat untuk menawarkan pilihan penuh atas pengalaman default, baik itu produk Terminal Windows atau terminal alternatif apa pun.

Pustaka dukungan klien

[Masa Depan] Dengan dukungan dan dokumentasi urutan terminal virtual di sisi klien, kami sangat mendorong pengembang utilitas baris perintah Windows untuk menggunakan urutan terminal virtual terlebih dahulu melalui API Windows klasik untuk mendapatkan manfaat ekosistem terpadu dengan semua platform. Namun, satu bagian yang hilang secara signifikan adalah bahwa platform lain memiliki berbagai pustaka pembantu sisi klien untuk menangani input seperti readline dan tampilan grafis seperti ncurses. Elemen peta jalan masa depan khusus ini mewakili eksplorasi apa yang ditawarkan ekosistem dan bagaimana kita dapat mempercepat adopsi urutan terminal virtual dalam aplikasi baris perintah Windows melalui API Konsol klasik.

Urutan Passthrough

[Masa Depan] Kombinasi klien terminal virtual dan implementasi server memungkinkan pencampuran penuh dan pencocokan baris perintah klien dan aplikasi hosting terminal. Kombinasi ini dapat berbicara dengan API Konsol Windows klasik atau urutan terminal virtual, namun, ada biaya overhead untuk menerjemahkan ini ke dalam metode Windows klasik yang kompatibel dan kemudian kembali ke metode terminal virtual yang lebih universal.

Setelah pasar cukup mengadopsi urutan terminal virtual dan UTF-8 di Windows, pekerjaan konversi/interpretasi host konsol dapat dinonaktifkan secara opsional. Host konsol kemudian akan menjadi layanan panggilan API sederhana dan relai dari panggilan perangkat ke aplikasi hosting melalui pseudoconsole. Perubahan ini akan meningkatkan performa dan memaksimalkan dialek urutan yang dapat diucapkan antara aplikasi klien dan terminal. Melalui perubahan ini skenario interaktivitas tambahan akan diaktifkan dan (akhirnya) membuat dunia Windows selaras dengan keluarga semua platform lain di ruang aplikasi baris perintah.