- Menyajikan hasil evaluasi 2025 yang membandingkan emulator terminal utama berdasarkan akurasi dukungan Unicode dan kinerja
- Ghostty adalah terminal baru yang dikembangkan dari nol dengan Zig, mencatat skor tertinggi dan mewujudkan penanganan Unicode yang akurat
- Kitty memperoleh skor yang setara dengan Ghostty, serta mempublikasikan algoritme pemisahan teks yang berkontribusi pada standardisasi
- Banyak terminal menunjukkan masalah penurunan kinerja dan ketidakkonsistenan dukungan DEC Private Mode, khususnya terminal berbasis VTE yang tidak menunjukkan perbaikan
- Munculnya protokol teks lebar variabel membuka kemungkinan peningkatan keterbacaan untuk berbagai bahasa, melampaui batas sel lebar tunggal
- Errant Champions (Para Juara Pengembara): penantang seperti Ghostty dan Kitty yang tidak puas dengan spesifikasi klasik, melainkan mendesain ulang secara mendasar persoalan lebar karakter, rendering, dan Unicode di terminal
Alat ucs-detect dan gambaran pengujian
- Sebagai studi lanjutan dari eksperimen perbandingan dukungan Unicode yang dipublikasikan pada 2023, alat
ucs-detect menambahkan kemampuan deteksi DEC Private Modes, grafik sixel, ukuran piksel, dan versi perangkat lunak
- Alat ini mengirim urutan kendali posisi kursor, lalu mencatat ketidaksesuaian dengan membandingkan respons terminal terhadap hasil Python wcwidth
- Pengujian memverifikasi akurasi perhitungan lebar karakter tiap terminal, dan hasilnya mengkuantifikasi kualitas dukungan Unicode
Masalah lebar karakter (The Width Problem)
- Terminal memiliki keterbatasan struktural karena harus menampilkan berbagai karakter Unicode di dalam grid lebar tetap
- Karakter gabungan, urutan emoji, Zero-width joiner, dan lainnya membuat prediksi lebar karakter sering gagal
- Galat semacam ini menyebabkan kesalahan posisi kursor dan kerusakan output, bahkan mendistorsi posisi input
- Hasil pengujian mengidentifikasi terminal yang paling sedikit menimbulkan masalah tersebut
Ghostty: kekuatan baru
- Ghostty adalah terminal baru yang diperkenalkan pada 2025, dibangun dari nol dengan bahasa Zig
- Berkat implementasi dukungan Unicode yang sangat matang, akurasinya paling tinggi dan mencatat skor terbaik dalam pengujian
- Pengembang Mitchell Hashimoto telah meneliti prinsip dasarnya lewat tulisan 2023 Grapheme Clusters and Terminal Emulators
- libghostty yang baru diumumkan berpotensi menjadi alternatif pengganti libvte, dan dapat menyediakan fondasi Unicode yang kuat bagi ekosistem terminal ke depan
Kitty: juara lainnya
- Kitty mencatat skor yang nyaris identik dengan Ghostty, dan mempublikasikan algoritme pemisahan sel teks
- Algoritme ini selaras dengan spesifikasi Python wcwidth dan didasarkan pada interpretasi standar Unicode
- Hanya dua terminal ini yang mendukung Variation Selector 15 dengan benar
- Fitur ini memang kurang praktis saat ini, tetapi direncanakan akan masuk ke standar Python wcwidth di masa mendatang
Ringkasan perbandingan kinerja Unicode emulator terminal
- Peringkat 1 Ghostty, 2 Foot, 3 Kitty menempati posisi teratas
- Ketiga terminal sama-sama meraih skor tertinggi pada kategori akurasi pemrosesan Unicode (WIDE/LANG/ZJW/VS16)
- Ghostty meraih 100 di semua kategori dengan skor total 100, dan DEC Modes juga enabled
- Kitty sedikit lebih lambat dari sisi kinerja (Elapsed time 1748s), tetapi tingkat akurasinya sangat tinggi
- Terminal berbasis VTE (GNOME Terminal, Terminator, LXTerminal, dll.) tetap berada di papan bawah
- Semuanya mencatat Final Scaled Score 5 atau kurang, dengan waktu uji sangat lambat, sekitar 8000~18000 detik
- Tidak ada perbaikan dibanding 2023
- Dari sisi kinerja (Elapsed time), Foot, WezTerm, tmux, Konsole termasuk yang cepat (di bawah 100 detik)
- iTerm2 dan Extraterm sangat lambat karena penggunaan CPU yang tinggi (lebih dari 4000 detik)
- Dukungan grafik sixel bahkan di kelompok atas hanya tersedia pada sebagian terminal
- Ghostty, Kitty, Konsole, contour mendukungnya
- GNOME Terminal dan keluarga VTE sebagian besar tidak mendukung
- Terminal yang mendukung Variation Selector 15 (VS15) dengan benar hanya Ghostty dan Kitty
- Dari sisi kelengkapan pemrosesan Unicode, kedua proyek ini praktis berada di kelas tersendiri
Analisis kinerja (The Long Road)
- Banyak terminal menunjukkan kinerja yang sangat lambat, sehingga penyelesaian pengujian memakan waktu berjam-jam
- iTerm2 dan Extraterm memakai CPU secara berlebihan, sehingga waktu pengujian harus dipersingkat
- GNOME Terminal dan terminal berbasis VTE memiliki penggunaan CPU rendah, tetapi tetap membutuhkan lebih dari 5 jam
- Python wcwidth, meski merupakan bahasa tingkat tinggi, tetap mampu menyamai kecepatan sebagian besar terminal
- Untuk optimasi kinerja, telah diuji bit vector, Bloom filter, LRU cache, dan lainnya, namun kombinasi pencarian biner + LRU cache terbukti paling efisien
- LRU cache efektif saat menangani himpunan karakter yang berulang
- Penerapan modul C juga sempat dipertimbangkan, tetapi implementasi Python saat ini sudah memberikan kinerja yang memadai
Kasus khas dan masalah (Tilting at Edges)
- Terminology menghasilkan hasil berbeda pada setiap eksekusi, sehingga diduga ada kemungkinan kerusakan status internal
- iTerm2 melaporkan semua DEC Private Mode sebagai “didukung tetapi dinonaktifkan”
- Konsole tidak merespons kueri, tetapi beberapa mode didukung saat diaktifkan
- Contour merespons dengan nomor mode yang salah sehingga ditandai sebagai “tidak didukung”, dan pada rilis Desember 2024 terjadi kesalahan konfigurasi tombol ESC
- Terminal berbasis VTE/7600 tetap mempertahankan skor rendah yang sama seperti pada 2023
- Diskusi peningkatan Unicode pada proyek libvte menuai kritik, tetapi isu dukungan urutan emoji dinilai sebagai sinyal perbaikan menuju 2026
Tentang Mode 2027
- Mode 2027 hanya membedakan apakah dukungan Unicode terminal itu “didukung/tidak didukung”, tetapi tidak dapat menunjukkan tingkat detail fiturnya
- Dalam praktiknya, pendekatan seperti ucs-detect yang menguji langsung tiap fitur dan code point jauh lebih akurat
Melampaui lebar tetap (Beyond Fixed Widths)
- Struktur sel lebar tetap menyebabkan penurunan keterbacaan pada banyak bahasa
- Protokol pengaturan ukuran teks (text sizing protocol) menawarkan pendekatan baru untuk mengatasinya
- Kovid Goyal dari Kitty menjelaskannya dengan contoh, “saya ingin melihat judul file Markdown dengan ukuran lebih besar”
- Fitur ini membuka kemungkinan peningkatan aksesibilitas dan keterbacaan skrip karakter yang kompleks
- Sebagai contoh, pada perbandingan tampilan bahasa Khün di Contour dan editor Kate, rendering lebar variabel memberikan hasil yang lebih jelas
- Mode lebar variabel yang memungkinkan mesin font merender teks tanpa batasan per sel diajukan sebagai arah pengembangan ke depan
- Pengenalan protokol ukuran teks dinilai sebagai kemajuan dalam menyelesaikan persoalan ini
Belum ada komentar.