Mitchell Hashimoto , người sáng tạo đằng sau HashiCorp và trình mô phỏng terminal siêu nhanh Ghostty , đã công bố thành phần đầu tiên của dự án đầy tham vọng libghostty của mình. Thư viện libghostty-vt nhằm giải quyết một vấn đề lan rộng mà hầu hết các nhà phát triển thậm chí không nhận ra sự tồn tại của nó: thế giới lộn xộn và không hoàn chỉnh của mô phỏng terminal trên hàng trăm ứng dụng.
Vấn đề ẩn giấu trong mô phỏng Terminal
Mô phỏng terminal không chỉ dành cho các ứng dụng terminal chuyên dụng như Ghostty hay iTerm2 . Nó có mặt ở khắp mọi nơi. Các trình soạn thảo code phổ biến như VS Code sử dụng Xterm.js , trong khi các sản phẩm JetBrains dựa vào jediterm . Các terminal multiplexer như tmux và zellij thực chất là những trình mô phỏng terminal đầy đủ. Thậm chí các dịch vụ web như GitHub Actions , Vercel , và Render cũng triển khai các phiên bản riêng để hiển thị build log và command output có màu sắc.
Vấn đề là hầu hết các triển khai này đều là những giải pháp một lần được xây dựng từ đầu. Chúng thường không hoàn chỉnh, có lỗi và chậm vì mô phỏng terminal trông đơn giản trên bề mặt nhưng ẩn chứa độ phức tạp không ngờ. Nhiều nhà phát triển cuối cùng lãng phí thời gian để phát minh lại bánh xe thay vì tập trung vào các sản phẩm cốt lõi của họ.
Các ứng dụng sử dụng mô phỏng terminal:
- Trình mô phỏng Terminal: Ghostty , Kitty , iTerm2
- Trình soạn thảo mã: VS Code ( Xterm.js ), JetBrains ( jediterm ), Zed ( Alacritty )
- Trình ghép kênh Terminal: tmux , zellij
- Dịch vụ Web: GitHub Actions , Vercel , Render (nhật ký xây dựng)
- Các thành phần libghostty tương lai: Xử lý đầu vào, kết xuất GPU , widget GTK , framework Swift
Điều gì làm cho libghostty-vt đặc biệt
Thư viện libghostty-vt trích xuất phần cốt lõi đã được chứng minh từ engine phân tích terminal thực tế của Ghostty . Điều làm cho nó đáng chú ý là không có dependency nào - nó thậm chí không cần libc . Điều này làm cho nó cực kỳ di động và dễ dàng nhúng vào bất kỳ ứng dụng hoặc ngôn ngữ lập trình nào.
Thư viện kế thừa các tính năng đã được thử nghiệm thực chiến của Ghostty : phân tích được tối ưu hóa SIMD cho tốc độ, hỗ trợ Unicode xuất sắc, thiết kế tiết kiệm bộ nhớ, và khả năng tương thích với các giao thức tiên tiến như Kitty Graphics Protocol và Tmux Control Mode . Tất cả điều này đã được kiểm tra kỹ lưỡng với fuzzing và Valgrind để đảm bảo độ tin cậy.
Các cuộc thảo luận cộng đồng cho thấy sự phấn khích về các ứng dụng tiềm năng. Dự án Neovim đã đang xem xét chuyển từ libvterm sang libghostty-vt khi nó sẵn sàng, đặc biệt cho các tính năng như scrollback và text reflow khi thay đổi kích thước hiện đang thiếu trong các giải pháp hiện có.
Các tính năng chính của libghostty-vt:
- Không phụ thuộc vào thư viện nào (không yêu cầu libc)
- Phân tích cú pháp được tối ưu hóa SIMD để tăng hiệu suất
- Hỗ trợ Unicode xuất sắc
- Thiết kế tiết kiệm bộ nhớ
- Đã được kiểm thử bằng Fuzzing và Valgrind
- Hỗ trợ Kitty Graphics Protocol và Tmux Control Mode
- API C đa nền tảng để tích hợp ngôn ngữ dễ dàng
Tình trạng hiện tại và kế hoạch tương lai
Hiện tại, libghostty-vt có sẵn như một Zig module để thử nghiệm sớm, mặc dù C API chưa hoàn toàn sẵn sàng. Hashimoto nhấn mạnh rằng mặc dù bản thân API ở chất lượng alpha, logic cơ bản rất vững chắc vì nó cung cấp sức mạnh cho Ghostty trong production.
Tầm nhìn dài hạn mở rộng xa hơn việc chỉ phân tích. Các thành phần libghostty trong tương lai sẽ xử lý input processing, GPU rendering, và thậm chí cung cấp các widget sẵn sàng cho các framework như GTK và Swift . Cách tiếp cận modular có nghĩa là các nhà phát triển có thể chọn chỉ những gì họ cần mà không làm phình to ứng dụng của họ.
Hỗ trợ platform ban đầu nhắm đến macOS và Linux trên cả kiến trúc x86_64 và aarch64 , với kế hoạch mở rộng sang Windows , thiết bị nhúng, và trình duyệt web thông qua WebAssembly .
Hỗ trợ nền tảng ban đầu:
- macOS (x86_64 và aarch64)
- Linux (x86_64 và aarch64)
- Dự kiến: Windows , thiết bị nhúng, WebAssembly
Tình trạng hiện tại:
- Zig API : Có sẵn để thử nghiệm
- C API : Sắp ra mắt
- Chất lượng: Alpha (API có thể thay đổi, logic cốt lõi ổn định)
- Mục tiêu phát hành: Trong vòng 6 tháng
Phản hồi cộng đồng và tác động thực tế
Cộng đồng nhà phát triển đã phản hồi nhiệt tình với thông báo này. Nhiều người nhận ra tiềm năng của libghostty trong việc loại bỏ những trải nghiệm terminal không nhất quán và có lỗi đang gây khó khăn cho nhiều ứng dụng ngày nay. Một số người dùng chia sẻ sự thất vọng của họ với các triển khai hiện có, như các trình soạn thảo JetBrains xử lý không đúng cursor shape sequences do lỗi phân tích.
Những người đam mê công nghệ sẽ làm tốt hơn rất nhiều cho chính chúng ta nếu chúng ta có thể xây dựng động lực đằng sau những bình luận như thế này. Tìm kiếm sự đồng cảm có tính cơ chế (& lập trình) có ý nghĩa rất lớn!
Hashimoto đang tích cực tìm kiếm phản hồi từ những người dùng tiềm năng để giúp định hình thiết kế API . Anh ấy khuyến khích các nhà phát triển tham gia Ghostty Discord hoặc liên hệ trực tiếp để hợp tác trên phần cơ sở hạ tầng quan trọng này.
Dự án libghostty đại diện cho nhiều hơn chỉ một thư viện khác - đó là một nỗ lực để chuẩn hóa và cải thiện mô phỏng terminal trên toàn bộ hệ sinh thái phần mềm. Nếu thành công, nó có thể loại bỏ vô số giờ nỗ lực trùng lặp trong khi cung cấp cho người dùng những trải nghiệm terminal nhất quán, chất lượng cao ở mọi nơi họ gặp phải chúng.
Tham khảo: Libghostty Is Coming