- libghostty sedang dikembangkan sebagai library emulator terminal tersemat yang dapat digunakan di aplikasi apa pun
- Komponen pertamanya, libghostty-vt, adalah API tanpa dependensi yang dioptimalkan untuk parsing dan pemeliharaan state
- Hadir untuk mengatasi kompleksitas emulasi terminal dan masalah implementasi berulang, dengan target lintas platform serta portabilitas tinggi
- Ke depannya direncanakan perluasan library tambahan seperti pemrosesan input keyboard, rendering GPU, integrasi dengan berbagai framework, dan lainnya
- Saat ini API Zig sudah bisa diuji, dan API C juga akan segera dirilis sambil aktif mengumpulkan umpan balik pengguna
Pengenalan dan latar belakang pengembangan libghostty
- libghostty adalah proyek library yang dirancang agar semua aplikasi dapat menanamkan kemampuan emulator terminal modern yang cepat dan lengkap
- Saat ini banyak program yang mengimplementasikan emulator terminal dengan caranya sendiri, atau hanya membuat fungsi terminal yang sangat terbatas secara terpisah
- Implementasi emulasi terminal yang dikembangkan secara terpisah seperti ini sering berupa codebase ad-hoc dan sekali pakai, serta kerap tidak menangani pengecualian dan kompleksitas dengan memadai sehingga sering mengalami masalah ketidaklengkapan, bug, dan penurunan performa
- Bagi sebagian besar developer, implementasi emulasi terminal bukanlah bisnis inti, sehingga ada kebutuhan akan solusi umum yang dapat digunakan ulang
- libghostty menyediakan API C lintas platform yang dirancang dengan dependensi minimal, sehingga berbagai aplikasi dapat memanfaatkan fungsi emulasi terminal yang stabil dan cepat
libghostty-vt: awal dari library pertama
libghostty-vt adalah library tanpa dependensi sama sekali (bahkan libc tidak diperlukan) yang menyediakan API untuk parsing urutan terminal dan pemeliharaan state terminal seperti posisi kursor, gaya, dan line wrap
- Parsing urutan terminal seperti ini bukan hanya fungsi inti emulator terminal, tetapi juga berperan penting untuk situs yang membutuhkan output bergaya sederhana (seperti GitHub Actions, log build Vercel, dan lain-lain)
- Parsing protokol terminal tampak sederhana di permukaan, tetapi tingkat kesulitan implementasinya sangat tinggi; dalam praktiknya ada contoh seperti Jediterm dan implementasi lain yang menunjukkan masalah dalam menangani sebagian urutan
- Sebagian developer hanya berhenti pada parsing sederhana untuk urutan ANSI, tetapi karena kebutuhan akan pemrosesan gaya yang kompleks (seperti berbagai notasi RGB) dan kompatibilitas penuh, parser yang canggih menjadi hal yang wajib
- libghostty-vt diekstrak dari core Ghostty yang sudah teruji, dan memiliki parsing yang dioptimalkan dengan SIMD, dukungan Unicode yang sangat baik, struktur memori yang canggih, serta kompatibilitas protokol yang luas (Kitty Graphics, Tmux Control Mode, dan lain-lain)
- Disediakan sebagai API C zero-dependency dalam satu file sehingga mudah ditanamkan ke semua bahasa dan lingkungan umum, dengan dukungan awal untuk macOS, Linux (x86_64, aarch64), lalu direncanakan meluas ke Windows, embedded, WASM, dan lainnya
- Dukungan targetnya dapat lebih luas daripada Ghostty GUI
libghostty yang akan terus diperluas dalam jangka panjang
- Setelah libghostty-vt, akan dirilis rangkaian library tambahan yang menyediakan fungsi seperti pemrosesan input (misalnya encoding keyboard), rendering GPU (OpenGL, Metal), widget GTK, dan framework Swift
- Perluasan fungsional ini akan disusun per modul untuk meminimalkan dependensi, ukuran kode, dan kompleksitas pemeliharaan
Status pengembangan libghostty-vt
- PR (pull request) untuk mengekspos
libghostty-vt ke luar sebagai modul Zig baru-baru ini telah di-merge, sehingga developer Zig sudah dapat langsung menggunakannya
- API C saat ini sedang dalam tahap definisi dan akan segera disediakan untuk pengujian (logika core-nya sendiri sudah merupakan sumber yang teruji dan digunakan bertahun-tahun di Ghostty)
- Aplikasi Ghostty untuk macOS juga menggunakan API C internal, tetapi header internal saat ini tidak cocok untuk dipublikasikan atau digunakan secara umum, sehingga API C yang sepenuhnya baru sedang dirancang
- libghostty dikelola versinya secara terpisah dari aplikasi Ghostty, saat ini berada pada tahap alpha, dan diharapkan dapat mendorong adopsi cepat serta partisipasi developer binding bahasa
- Targetnya adalah rilis pertama bertag dalam 6 bulan ke depan
Permintaan umpan balik pengguna
- Karena saat ini masih berada pada tahap desain API, opini dan umpan balik dari pengguna nyata menjadi sangat penting
- Selain Ghostty, berbagai anggota komunitas juga sedang mengembangkan proyek berbasis libghostty, dan diharapkan lebih banyak pengguna ikut berpartisipasi
- Jika ada ide pemanfaatan proyek atau kebutuhan tertentu, pengguna dapat berkomunikasi langsung dengan developer melalui Discord Ghostty atau email
- libghostty saat ini adalah versi alpha, sehingga API-nya belum stabil, tetapi logika core-nya menjamin stabilitas tinggi yang telah teruji di lingkungan nyata
Prospek dan dampak ke depan
- Berdasarkan tercapainya stabilitas aplikasi Ghostty, kini proyek ini dapat melangkah menuju sasaran yang lebih besar bernama libghostty
- Jika libghostty digunakan secara luas di berbagai aplikasi, proyek ini berpotensi menciptakan dampak dan pengaruh ekosistem yang melampaui aplikasi Ghostty saja
- Jika pemanfaatan libghostty meningkat, inti Ghostty juga akan memperoleh fitur yang lebih kaya dan stabilitas yang lebih baik
- Ghostty dan libghostty akan berkembang secara saling melengkapi, dan diperkirakan memberi manfaat bagi developer maupun pengguna
3 komentar
Saya sudah memakainya sejak 1.0, dan selain tidak adanya scroll dan pencarian, saya puas sih haha. Tadinya saya pakai iTerm, tapi sekarang sudah menetap di sini.
Ghostty 1.0 dirilis - emulator terminal lintas platform berkecepatan tinggi
Opini Hacker News
Sosok ini benar-benar terasa legendaris, bahkan setelah mendirikan perusahaan, membawanya IPO, dan menjualnya dengan nilai miliaran, dia tetap kembali ke dunia coding
Menurut saya, Hashimoto bukan cuma jenius, tapi yang paling mengagumkan adalah kemampuan abstraksinya yang luar biasa dalam memodularisasi sistem dan antarmuka secara ekstrem sambil meminimalkan keterikatan. Rasanya dia benar-benar mempraktikkan filosofi Simple Made Easy yang dikemukakan Rich Hickey. Perangkat lunaknya terasa dirancang dengan struktur yang nyaris pasti bekerja dengan benar. Dan setelah pertama kali mencoba Ghostty, saya merasa sangat terkesan karena di iTerm2 dengan tema Zsh/Powerlevel10k selalu ada sedikit delay rendering, sementara di ghostty responsnya nyaris seketika
Benar-benar bikin iri, sekaligus terasa seperti hidup impian. Setelah memperoleh kekayaan, tetap berkarya demi proyek itu sendiri, berada dalam situasi di mana tidak perlu berkompromi soal kualitas demi uang. Ini mengingatkan saya pada kutipan lama dari Knuth
Jelas proyek-proyek yang dibuat dengan cinta mulai meraih kesuksesan yang semakin besar. Ini menunjukkan bahwa ketika tidak terobsesi pada uang, kita bisa menghasilkan hasil yang lebih baik. Di sisi lain, ini juga membuat saya merenungkan struktur sosial dan kondisi ekonomi kita secara umum, karena untuk menikmati kehidupan seperti ini tetap dibutuhkan modal tertentu lebih dahulu. Seperti kata Knuth, kalau semua orang diberi sedikit lebih banyak waktu, mereka mungkin bisa menghasilkan hasil yang lebih baik, tetapi karena semuanya selalu dikerjakan terburu-buru, banyak hal akhirnya dikorbankan. Dan seperti kutipannya yang lain
Pada titik ini saya jadi bertanya: apakah kita benar-benar memberi imbalan yang layak kepada orang-orang yang pandai menyelesaikan masalah dan mempermudah hidup, atau kita hanya terus menaikkan skor dalam permainan yang tidak berarti? Bagaimana caranya menciptakan lebih banyak sosok legendaris? Saya juga berpikir bagaimana membangun masyarakat di mana orang bisa hidup mengikuti passion seperti Mitchell tanpa harus menanggung beban menjelaskan nilai kualitas kepada dewan direksi
Saya pernah bertemu langsung dengannya, dan dia benar-benar orang yang hangat dan baik. Sebelum mendirikan Hashicorp, saat masih di Kiip, saya makan siang bersamanya di sebuah konferensi, dan Mitchell benar-benar seorang hacker sejati. Sangat terasa bahwa dia sungguh mencintai segala hal tentang komputasi. Dia terutama sangat tenggelam dalam konferensi sistem terdistribusi. Saya yakin apa pun yang dia kerjakan pasti akan berhasil. Sejak menemukan Ghostty dan memakainya, saya terus menggunakannya dengan puas
Dan sekarang orang ini bahkan tenggelam dalam pengembangan perangkat lunak tty, salah satu area paling nerd di seluruh stack teknologi Unix
Saya sudah memakai ghostty setiap hari, dan baru sekarang tahu bahwa pembuatnya adalah Mitchell Hashimoto, pengalaman yang benar-benar keren
Ghostty benar-benar keren, saya antusias dengan kemungkinan terminal emulator omni-platform sejati ini bisa meluas sampai ke mobile. Fakta bahwa Ghostty dibuat dengan Zig juga menarik. Ini adalah program berbasis Zig pertama yang saya pakai sehari-hari, dan struktur repositorinya terasa persis seperti gaya Golang, yang menurut saya cukup menarik https://github.com/ghostty-org/ghostty
Saya sangat ingin menyukai Ghostty, tetapi ada beberapa hal yang masih mengecewakan
font-thicken-strength, tetapi tetap tidak 100% sama. Sepertinya ini mustahil atau sangat sulit karena sifat rendering Metal. Buat orang yang menatap teks sepanjang hari, ini bagian yang sangat pentingPassion Mitchell terhadap pengalaman pengembang dan detail-detail kecil benar-benar luar biasa. Saya masih ingat jelas betapa terkesannya saya saat pertama kali memakai Vagrant di Santa Monica pada 2011. Saya sama sekali tidak berniat mengganti iTerm2, tetapi setelah mencoba Ghostty saya langsung jatuh hati
Saya sudah memakai ghostty setiap hari akhir-akhir ini. Saya baru saja pindah ke sana. Di macOS, setelah memetakan caps lock ke cmd, cmd+c juga berfungsi dengan baik. Konfigurasi default-nya cerdas dan secara umum saya puas dengan semuanya, kecuali kustomisasinya yang tidak terlalu mudah. Tema Gruvbox light juga enak sekali dilihat. Fakta bahwa ini ditulis dalam Zig juga sangat keren, jadi kalau ada yang bertanya apakah Zig sudah cukup siap untuk penggunaan nyata, ghostty bisa menjadi jawabannya. Sepertinya saya tidak akan kembali ke terminal lain, benar-benar pengalaman yang sangat memuaskan. Catatan: jika ghostty dipadukan dengan aerospace, lingkungan yang hampir sempurna berbasis keyboard di Mac bisa tercapai
Saya memakai ghostty di AirMac saya, Mac warisan dari kakak yang dulu dipakai untuk ngoding. Saya benar-benar berterima kasih karena ghostty sangat bagus. Mungkin terdengar sepele, tapi entah kenapa saya sangat menghargai bahwa ia tidak bergantung pada libc
Histogram analisis frekuensi di visidata tidak dirender dengan benar; sebagian tampil sebagai kotak, tetapi sisanya muncul sebagai diamond question mark. Karena masalah ini saya masih belum bisa meninggalkan iTerm. Saya bahkan tidak tahu harus mencari dengan kata kunci apa, jadi sulit menyelesaikannya
Saya terus mengikuti Ghostty dengan harapan text reflow-nya, terutama yang mencakup scrollback, nantinya bisa juga menyelesaikan masalah di terminal berbasis Neovim. Senang sekali melihat Ghostty membawa inovasi baru ke lingkungan terminal https://github.com/neovim/neovim/issues/33155
Saya benar-benar ingin memakai ghostty, tetapi karena belum ada dukungan cmd+f saya belum bisa mulai mencobanya. Meski begitu, saya sangat menantikan perkembangan proyek ini
https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
https://github.com/ghostty-org/ghostty/issues/189