3 पॉइंट द्वारा GN⁺ 2025-09-24 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
yshrust 2025-09-24

मैं 1.0 से इसका इस्तेमाल कर रहा हूँ, और स्क्रॉल व सर्च न होने के अलावा बाकी सब से संतुष्ट हूँ, हाहा। पहले iTerm इस्तेमाल कर रहा था, लेकिन अब इसी पर टिक गया हूँ।

 
GN⁺ 2025-09-24
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 की एक पुरानी उक्ति याद आती है

      हज़ारों computer scientists को वह करने की आज़ादी देना जो वे सच में करना चाहते हैं, ज्ञान की प्रगति को आगे बढ़ाता है

      यह साफ़ दिख रहा है कि प्रेम से बनाए गए projects लगातार बड़ी सफलता पा रहे हैं। यह दिखाता है कि पैसे के प्रति आसक्ति कम हो तो बेहतर परिणाम निकल सकते हैं। दूसरी ओर, यह हमें हमारी सामाजिक संरचना और व्यापक अर्थव्यवस्था पर भी सोचने को मजबूर करता है, क्योंकि ऐसी ज़िंदगी जीने के लिए कुछ पूंजी पहले से होना लगभग ज़रूरी लगता है। Knuth की बात की तरह, अगर लोगों को थोड़ा और समय मिले, तो शायद हर कोई बेहतर नतीजे दे सके; लेकिन हमेशा जल्दबाज़ी में बहुत कुछ कुर्बान करना पड़ता है। और उनकी एक और उक्ति की तरह

      अगर आप हर चीज़ को optimize करने में लगे रहेंगे, तो कभी खुश नहीं रह पाएँगे

      इस बिंदु पर सवाल उठता है: क्या हम सच में उन लोगों को उचित पुरस्कार दे रहे हैं जो समस्याएँ हल करते हैं और जीवन को आसान बनाते हैं, या हम सिर्फ़ किसी अर्थहीन खेल का 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

    • (यह Go layout जैसा नहीं है) बल्कि यही इसकी अच्छी बात है, क्योंकि go का pkg/ src/ जैसी directory structure कोई बहुत अच्छी संरचना नहीं है
  • मैं Ghostty को बहुत पसंद करना चाहता हूँ, लेकिन कुछ कमी महसूस होती है

    • ⌘F से find का support अभी नहीं है
    • पिछले output या किसी खास string को सिर्फ़ keyboard से select/copy करने का तरीका नहीं है
    • ⌘. key से CTRL-C भेजा नहीं जा सकता (Mac users यही उम्मीद करते हैं)
    • font rendering अभी भी Terminal.app जितनी smooth नहीं है। font-thicken-strength से adjust करके देखा, लेकिन 100% वैसा नहीं बनता। लगता है Metal rendering की प्रकृति के कारण यह असंभव या बहुत कठिन है। जो लोग पूरा दिन सिर्फ़ text देखते हैं, उनके लिए यह बहुत महत्वपूर्ण हिस्सा है
    • ⌘. दबाने पर CTRL-C भेजने वाली setting संभव है
      keybind = "cmd+.=text:\x03"
      
      संबंधित चर्चा : https://news.ycombinator.com/item?id=42889411
    • जल्द support आने वाला है : https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • scrollback search 1.3 version में आने की योजना है, लेकिन शायद अभी लगभग 6 महीने और लगेंगे। Ghostty भी हाल में तेज़ी से आगे बढ़ रहा है, इसलिए 1.2 release notes भी देखना उपयोगी हो सकता है
    • points ऊपर-नीचे होते देखकर लग रहा है कि मेरी पोस्ट से गलतफ़हमी हुई। असल में cross-platform पर हर vendor के लिए native GUI implement करने का विचार बहुत शानदार है। यह project वास्तव में मौजूद है, इससे मैं बेहद खुश हूँ, बस निजी तौर पर मुझे लगता है कि यह अभी पूरी तरह perfect नहीं है। फिर भी मैं उत्साह से इसे देख रहा हूँ
    • दूसरा मुद्दा (keyboard से पिछला output चुनना) ही मुख्य कारण है कि मैं अभी भी WezTerm इस्तेमाल करता हूँ
  • 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 बन जाता है

    • क्या आप बता सकते हैं कि ghostty क्यों इस्तेमाल करना चाहिए? (मैं Terminal.app को main के रूप में इस्तेमाल करता हूँ)
    • Clickhouse, Bun भी कमाल के projects हैं
  • मैं अपने AirMac पर ghostty इस्तेमाल कर रहा हूँ, यह Mac मेरे बड़े भाई ने coding करते-करते मुझे दिया था। ghostty इतना अच्छा है कि मैं दिल से आभारी हूँ। शायद छोटी बात लगे, लेकिन libc dependency न होना किसी कारण से मुझे काफ़ी कीमती लगता है

  • visidata का frequency analysis histogram ठीक से render नहीं हुआ; कुछ हिस्से square के रूप में सही दिखे, लेकिन बाकी diamond question marks की तरह आए। इस समस्या की वजह से मैं अभी तक iTerm नहीं छोड़ पाया हूँ। किस keyword से search करूँ, यह भी समझ नहीं आया, इसलिए हल निकालना मुश्किल था

    • हो सकता है main font और fallback font में वह codepoint ही न हो। अगर आप ghostty user हैं, तो iTerm2 में देखें कि वह glyph किस font में दिख रहा है, फिर ghostty में उसका सही setting है या नहीं, यह तलाशने की सलाह दूँगा
  • मैं Ghostty के text reflow, खासकर scrollback सहित, पर नज़र बनाए हुए हूँ कि क्या यह Neovim-based terminal में भी हल हो सकता है। यह देखकर बहुत अच्छा लगता है कि Ghostty terminal environment में नई innovation ला रहा है https://github.com/neovim/neovim/issues/33155

    • क्या आप खुद neovim terminal power user हैं? पहले मैंने workflow बदलने की कोशिश की थी ताकि tmux द्वारा neovim चलाने के बजाय neovim सीधे terminal को manage करे। लगा था कि file सिर्फ़ एक buffer में खुल सकेगी, इसलिए सुविधा होगी, क्योंकि अक्सर किसी pane में file खोलते समय पता चलता था कि वह किसी दूसरे neovim instance में पहले से खुली है। testing के दौरान libghostty में बदलने से ऐसी कोई खास reflow समस्या महसूस नहीं हुई जो इससे हल होती दिखे; उल्टा paradigm के अनुकूल होना ज़्यादा मुश्किल लगा। neovim built-in terminal के एक गहरे user के रूप में, मैं यह अनुभव सुनना चाहूँगा कि libghostty लागू होने से वास्तव में क्या सुधार हो सकता है
  • मैं ghostty सच में इस्तेमाल करना चाहता हूँ, लेकिन cmd+f support न होने के कारण अभी तक कोशिश नहीं की। फिर भी इस project की प्रगति को लेकर बहुत उत्साहित हूँ

    • roadmap में शामिल है
      https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
    • cmd+shift+f जैसी key के ज़रिए पूरे buffer को default text editor में खोलकर search करने का तरीका संभव है। बहुत से लोग इसी तरह काम चला पाए, और मैं भी। built-in scrollback search आने तक यह काफ़ी practical workaround है
    • सोचता हूँ यह feature शुरुआत में क्यों नहीं जोड़ा गया। terminal में history search तो बुनियादी चीज़ है—क्या कोई जटिल कारण था? दरअसल Mitchell ने खुद 2 साल पहले यह issue खोला था
      https://github.com/ghostty-org/ghostty/issues/189
    • बहुत से लोग cmd+f जैसी history search की कमी की शिकायत करते हैं, लेकिन मेरे लिए यह उपलब्ध होने पर भी ऐसा feature है जिसे मैंने कभी इस्तेमाल नहीं किया। अगर आप बता सकें कि आपका workflow क्या है, तो अच्छा होगा; शायद मैं कुछ बड़ा मिस कर रहा हूँ
    • अंदर tmux चलाकर cmd+f को copy-mode + / पर map करने का तरीका भी है