- libghostty एक embedded terminal emulator library है, जिसे किसी भी application में इस्तेमाल किया जा सके, और इसका विकास जारी है
- इसका पहला component libghostty-vt एक dependency-free API है, जिसे parsing और state maintenance के लिए optimize किया गया है
- यह terminal emulation की जटिलता और बार-बार होने वाले implementation की समस्या को हल करने के लिए सामने आया है, और cross-platform व high portability को लक्ष्य बनाता है
- आगे चलकर keyboard input handling, GPU rendering, विभिन्न framework integration जैसी अतिरिक्त library expansion की योजना है
- फिलहाल Zig API test किया जा सकता है, और C API भी जल्द जारी होने वाली है; user feedback सक्रिय रूप से आमंत्रित है
परिचय और libghostty के विकास की पृष्ठभूमि
- libghostty एक library project है, जिसे इस तरह डिज़ाइन किया गया है कि हर application में आधुनिक, तेज़ और पूर्ण terminal emulator functionality embed की जा सके
- फिलहाल बहुत-से programs अपने-अपने तरीके से terminal emulator खुद implement करते हैं, या terminal functionality का बहुत सीमित रूप अलग से बनाते हैं
- इस तरह अलग-अलग विकसित किए गए terminal emulation implementations अक्सर ad-hoc और one-off codebase होते हैं, और exception handling व जटिलता को पर्याप्त रूप से संभाल नहीं पाते, जिससे अपूर्णता, bugs और performance degradation जैसी समस्याएँ बार-बार सामने आती हैं
- ज़्यादातर developers के लिए terminal emulation implementation उनका core business नहीं होता, इसलिए common और highly reusable solution की ज़रूरत मौजूद है
- libghostty minimal dependency के साथ डिज़ाइन किया गया cross-platform C API देता है, जिससे अलग-अलग applications स्थिर और तेज़ terminal emulation functionality का उपयोग कर सकती हैं
libghostty-vt: पहली library की शुरुआत
libghostty-vt एक पूरी तरह dependency-free library है (यहाँ तक कि libc भी आवश्यक नहीं), जो terminal sequence parsing और cursor position, style, line wrapping जैसी terminal state को बनाए रखने के लिए API प्रदान करती है
- इस तरह की terminal sequence parsing, terminal emulator की core functionality होने के साथ-साथ, उन sites के लिए भी आवश्यक है जहाँ simple styled output चाहिए होता है, जैसे GitHub Actions और Vercel build logs
- terminal protocol parsing ऊपर से सरल दिख सकती है, लेकिन इसे implement करना बहुत कठिन है; वास्तव में Jediterm जैसी कई implementations कुछ sequence handling में समस्या दिखाती हैं
- कुछ developers केवल ANSI sequence को सरल रूप में parse करने तक सीमित रहते हैं, लेकिन complex style handling (जैसे विभिन्न RGB notation) और पूर्ण compatibility की ज़रूरत के कारण sophisticated parser अनिवार्य है
- libghostty-vt को Ghostty के validated core से निकाला गया है, और इसमें SIMD-optimized parsing, बेहतरीन Unicode support, advanced memory structure, व्यापक protocol compatibility (Kitty Graphics, Tmux Control Mode आदि) शामिल हैं
- इसे single-file zero-dependency C API के रूप में दिया जाएगा, ताकि इसे हर सामान्य-purpose language और environment में आसानी से embed किया जा सके; पहले macOS और Linux(x86_64, aarch64) को support किया जाएगा और धीरे-धीरे Windows, embedded, WASM आदि तक विस्तार होगा
- यह Ghostty GUI से भी अधिक व्यापक target support दे सकता है
लंबी अवधि में विस्तार पाता libghostty
- libghostty-vt के बाद input handling (जैसे keyboard encoding), GPU rendering(OpenGL, Metal), GTK widget और Swift framework जैसी अतिरिक्त क्षमताएँ देने वाली libraries क्रमशः जारी की जाएँगी
- इन functional expansions को module-आधारित ढाँचे में रखा जाएगा, ताकि dependency, code size और maintenance complexity को न्यूनतम रखा जा सके
libghostty-vt की विकास स्थिति
libghostty-vt को बाहरी रूप से expose करने वाला PR(pull request) हाल ही में Zig module के रूप में merge किया गया है, इसलिए Zig developers इसे तुरंत इस्तेमाल कर सकते हैं
- C API की definition पर काम चल रहा है, और इसे जल्द testing के लिए उपलब्ध कराया जाएगा (core logic पहले ही कई वर्षों से Ghostty में इस्तेमाल हुआ verified source है)
- Ghostty macOS app भी internal use के लिए C API का उपयोग करती है, लेकिन मौजूदा internal header बाहरी release और सामान्य उपयोग के लिए उपयुक्त नहीं है, इसलिए एक पूरी तरह नया C API डिज़ाइन किया जा रहा है
- libghostty का version management Ghostty application से अलग किया जाएगा, और अभी alpha stage में होने के कारण तेज़ adoption तथा language binding developers की भागीदारी की उम्मीद है
- लक्ष्य है कि 6 महीनों के भीतर tags के साथ पहला release जारी किया जाए
user feedback का अनुरोध
- चूँकि अभी API design phase चल रहा है, इसलिए वास्तविक users की राय और feedback इस समय बहुत महत्वपूर्ण है
- Ghostty के अलावा भी अलग-अलग community members libghostty-आधारित projects विकसित कर रहे हैं, और उम्मीद है कि अधिक users इसमें भाग लेंगे
- अगर project के उपयोग को लेकर ideas या requirements हों, तो Ghostty Discord या email के ज़रिए developers से सीधे संपर्क किया जा सकता है
- libghostty अभी alpha version में है, इसलिए API अभी स्थिर नहीं है, लेकिन core logic production में verified high stability प्रदान करता है
भविष्य की दिशा और प्रभाव
- Ghostty application में stability हासिल करने के आधार पर अब libghostty जैसे बड़े लक्ष्य की ओर बढ़ना संभव हो गया है
- अगर libghostty अलग-अलग applications में व्यापक रूप से इस्तेमाल होता है, तो Ghostty एक single app से आगे बढ़कर अधिक बड़े ecosystem impact और influence का आधार बना सकता है
- libghostty का उपयोग बढ़ने पर Ghostty itself भी और अधिक समृद्ध functionality और stability हासिल कर सकेगा
- Ghostty और libghostty एक-दूसरे के पूरक रूप में विकसित होंगे और developers व users दोनों को लाभ पहुँचाएँगे
3 टिप्पणियां
मैं 1.0 से इसका इस्तेमाल कर रहा हूँ, और स्क्रॉल व सर्च न होने के अलावा बाकी सब से संतुष्ट हूँ, हाहा। पहले iTerm इस्तेमाल कर रहा था, लेकिन अब इसी पर टिक गया हूँ।
Ghostty 1.0 रिलीज़ - हाई-स्पीड, क्रॉस-प्लेटफ़ॉर्म टर्मिनल एम्युलेटर
Hacker News राय
इस इंसान का कंपनी शुरू करना, IPO तक ले जाना, अरबों में बेच देना, और उसके बाद भी फिर से coding की दुनिया में लौट आना सच में दंतकथा जैसा लगता है
मेरा मानना है कि Hashimoto सिर्फ़ जीनियस ही नहीं हैं, बल्कि systems और interfaces को बेहद modular बनाकर coupling को न्यूनतम रखने की उनकी असाधारण abstraction क्षमता सबसे ज़्यादा प्रभावित करती है। Rich Hickey की Simple Made Easy फ़िलॉसफ़ी को व्यवहार में उतारने वाले व्यक्ति जैसे लगते हैं। उनके software ऐसे डिज़ाइन किए गए लगते हैं कि उनका सही तरह काम करना लगभग तय हो। और मैंने अभी पहली बार Ghostty इस्तेमाल किया; iTerm2 और Zsh/Powerlevel10k theme में हमेशा थोड़ा rendering delay रहता था, लेकिन ghostty में प्रतिक्रिया लगभग तुरंत मिलती है
सच कहूँ तो ईर्ष्या भी होती है, और साथ ही यह किसी सपने जैसी ज़िंदगी लगती है। धन अर्जित करने के बाद भी सिर्फ़ project के लिए सृजन करते रहना, और पैसे के लिए quality पर समझौता न करना—यह बहुत खास स्थिति है। इससे Knuth की एक पुरानी उक्ति याद आती है
यह साफ़ दिख रहा है कि प्रेम से बनाए गए projects लगातार बड़ी सफलता पा रहे हैं। यह दिखाता है कि पैसे के प्रति आसक्ति कम हो तो बेहतर परिणाम निकल सकते हैं। दूसरी ओर, यह हमें हमारी सामाजिक संरचना और व्यापक अर्थव्यवस्था पर भी सोचने को मजबूर करता है, क्योंकि ऐसी ज़िंदगी जीने के लिए कुछ पूंजी पहले से होना लगभग ज़रूरी लगता है। Knuth की बात की तरह, अगर लोगों को थोड़ा और समय मिले, तो शायद हर कोई बेहतर नतीजे दे सके; लेकिन हमेशा जल्दबाज़ी में बहुत कुछ कुर्बान करना पड़ता है। और उनकी एक और उक्ति की तरह
इस बिंदु पर सवाल उठता है: क्या हम सच में उन लोगों को उचित पुरस्कार दे रहे हैं जो समस्याएँ हल करते हैं और जीवन को आसान बनाते हैं, या हम सिर्फ़ किसी अर्थहीन खेल का score बढ़ा रहे हैं? ज़्यादा दंतकथाएँ कैसे बनेंगी? ऐसा समाज कैसे बने जहाँ Mitchell जैसे लोग board को quality का मूल्य समझाने के दबाव के बिना अपने जुनून का पीछा कर सकें?
मैं इन्हें असल में मिल चुका हूँ, और वे सच में बेहद गर्मजोशी वाले और अच्छे इंसान थे। Hashicorp शुरू करने से पहले जब वे Kiip में थे, तब एक conference में मैंने उनके साथ lunch किया था। Mitchell सच में एक hacker थे। साफ़ महसूस होता था कि उन्हें computing से जुड़ी हर चीज़ से सच्चा प्रेम है। खासकर distributed systems conference में वे बहुत गहराई से डूबे हुए दिखे। जो भी करेंगे, उसमें सफल होंगे—ऐसा पक्का भरोसा हुआ था। Ghostty मिलने और इस्तेमाल करने के बाद से मैं संतुष्टि के साथ इसे लगातार उपयोग कर रहा हूँ
और यह व्यक्ति tty software development जैसी चीज़ में भी पूरी तरह डूबा हुआ है, जो Unix tech stack के सबसे nerdy इलाकों में से एक है
मैं ghostty रोज़ इस्तेमाल कर रहा था, लेकिन यह अभी पता चला कि इसे Mitchell Hashimoto ने बनाया है। सच में बहुत शानदार अनुभव है
Ghostty सच में कमाल है। यह उम्मीद जगाता है कि एक सच्चा omni-platform terminal emulator mobile तक फैल सकता है। Ghostty का Zig में लिखा होना भी दिलचस्प है। यह पहला Zig-based program है जिसे मैं नियमित रूप से इस्तेमाल कर रहा हूँ, और repository structure का Golang style जैसा होना मुझे मज़ेदार लगा https://github.com/ghostty-org/ghostty
मैं Ghostty को बहुत पसंद करना चाहता हूँ, लेकिन कुछ कमी महसूस होती है
font-thicken-strengthसे adjust करके देखा, लेकिन 100% वैसा नहीं बनता। लगता है Metal rendering की प्रकृति के कारण यह असंभव या बहुत कठिन है। जो लोग पूरा दिन सिर्फ़ text देखते हैं, उनके लिए यह बहुत महत्वपूर्ण हिस्सा हैdeveloper experience के प्रति Mitchell का जुनून और बारीकी पर ध्यान वाकई शानदार है। 2011 में Santa Monica में पहली बार Vagrant इस्तेमाल करने की खुशी अब भी याद है। मैंने कभी नहीं सोचा था कि iTerm2 को replace करूँगा, लेकिन Ghostty देखते ही तुरंत पसंद आ गया
मैं इन दिनों ghostty रोज़ इस्तेमाल कर रहा हूँ। हाल ही में switch किया है। macOS में caps lock को cmd पर map कर देने के बाद cmd+c भी ठीक चलता है। default settings काफ़ी समझदारी से चुनी गई हैं, और customization आसान न होने को छोड़कर बाकी सब से संतुष्ट हूँ। Gruvbox light theme भी बहुत अच्छा दिखता है। इसका Zig में लिखा होना ही इतना शानदार है कि अगर कोई पूछे कि Zig real-world use के लिए तैयार भाषा है या नहीं, तो ghostty उसका जवाब हो सकता है। अब किसी और terminal पर लौटने की संभावना नहीं लगती। अनुभव सच में बहुत संतोषजनक है। संदर्भ: ghostty के साथ aerospace जोड़ दें तो Mac पर लगभग परफ़ेक्ट keyboard-only environment बन जाता है
मैं अपने AirMac पर ghostty इस्तेमाल कर रहा हूँ, यह Mac मेरे बड़े भाई ने coding करते-करते मुझे दिया था। ghostty इतना अच्छा है कि मैं दिल से आभारी हूँ। शायद छोटी बात लगे, लेकिन libc dependency न होना किसी कारण से मुझे काफ़ी कीमती लगता है
visidata का frequency analysis histogram ठीक से render नहीं हुआ; कुछ हिस्से square के रूप में सही दिखे, लेकिन बाकी diamond question marks की तरह आए। इस समस्या की वजह से मैं अभी तक iTerm नहीं छोड़ पाया हूँ। किस keyword से search करूँ, यह भी समझ नहीं आया, इसलिए हल निकालना मुश्किल था
मैं Ghostty के text reflow, खासकर scrollback सहित, पर नज़र बनाए हुए हूँ कि क्या यह Neovim-based terminal में भी हल हो सकता है। यह देखकर बहुत अच्छा लगता है कि Ghostty terminal environment में नई innovation ला रहा है https://github.com/neovim/neovim/issues/33155
मैं ghostty सच में इस्तेमाल करना चाहता हूँ, लेकिन cmd+f support न होने के कारण अभी तक कोशिश नहीं की। फिर भी इस project की प्रगति को लेकर बहुत उत्साहित हूँ
https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
https://github.com/ghostty-org/ghostty/issues/189