- Công cụ ghi terminal asciinema CLI 3.0 đã được viết lại hoàn toàn bằng Rust, đồng thời bổ sung nâng cấp định dạng tệp và tính năng live streaming terminal
- Việc chọn Rust giúp cung cấp binary tĩnh, thời gian khởi động nhanh, tích hợp AVT để xử lý đồng thời và system call dễ hơn, đồng thời tạo nền tảng cho việc triển khai các tính năng mới
- Định dạng mới asciicast v3 đưa vào cơ chế thời gian dựa trên khoảng cách giữa các sự kiện (interval/delta), cấu trúc hóa metadata con trong
term, sự kiện kết thúc "x", và chú thích dòng # để tăng khả năng chỉnh sửa và biểu đạt
- Live terminal streaming được cung cấp ở hai chế độ: server nhúng cục bộ và relay từ xa (tự host/server chính thức), cùng với adaptive buffering theo điều kiện mạng để mang lại trải nghiệm xem mượt mà
- Triết lý cốt lõi được điều chỉnh lại theo hướng Local-first:
rec yêu cầu tên tệp bắt buộc và tách riêng việc upload (upload <tệp>), đồng thời thêm prompt chọn server riêng để thân thiện hơn với self-hosting và tăng cường ngăn rò rỉ dữ liệu ngoài ý muốn
Phát hành 3.0: asciinema CLI được viết lại bằng Rust và các cải tiến chính
- asciinema CLI 3.0 đã chính thức được phát hành
- Ở phiên bản này, toàn bộ mã nguồn đã được viết lại bằng Rust đồng thời định dạng tệp ghi hình cũng được nâng cấp
- Nhiều tính năng đã được bổ sung/cải tiến, bao gồm live streaming phiên terminal
Viết lại bằng Rust và cải tiến tổng thể
- CLI được viết lại hoàn toàn bằng Rust để nâng cao trải nghiệm cho developer và khả năng bảo trì, đồng thời việc phân phối binary tĩnh giúp đơn giản hóa đường cài đặt, cải thiện tốc độ khởi động và mở rộng khả năng phát triển tính năng
- Theo kinh nghiệm của tác giả, Rust được chọn vì việc xử lý system call và đồng thời dễ hơn so với Python, đồng thời việc tích hợp asciinema virtual terminal (AVT) vào CLI đã mở ra khả năng hiện thực các tính năng mới
- Kết quả là về mặt hiệu năng, phân phối và kiến trúc, dự án đã xây dựng được nền tảng cho các tính năng bổ sung trong tương lai
Định dạng tệp asciicast v3
- Định dạng tệp asciicast v3 là bước tiến hóa tiếp theo, khắc phục nhiều nhược điểm từng bộc lộ ở v2
- Cơ chế timestamp tuyệt đối của v2 được thay bằng thời gian dựa trên khoảng cách (interval/delta), giúp giải quyết vấn đề phải điều chỉnh hàng loạt các timestamp phía sau khi chèn hoặc xóa sự kiện
- Header được tái cấu trúc để gom metadata liên quan đến terminal vào dưới khóa
term, đồng thời hỗ trợ sự kiện "x" (exit) để lưu trạng thái kết thúc phiên
- Cho phép chú thích dòng (
#) trong tệp để cải thiện tính dễ đọc và khả năng quản lý
- Bài viết cũng cung cấp snippet ví dụ để trình bày trực quan cấu trúc và cách tổ chức event stream
- Định dạng mới đã được hỗ trợ trong asciinema server và asciinema player
Live terminal streaming
- Chế độ cục bộ: cung cấp stream có thể xem trong cùng mạng thông qua HTTP server nhúng, là chế độ ưu tiên quyền riêng tư khi dữ liệu chỉ được truyền tới trình duyệt của người xem
- CLI được đóng gói sẵn asciinema player mới nhất để có thể phát ngay, dù có thể cần mở cổng trên firewall
- Chế độ từ xa: sử dụng asciinema server (chính thức hoặc tự host) làm relay để phân phối stream qua URL có thể chia sẻ
- Có thể sử dụng đồng thời cả hai chế độ để cấu hình phân phối phù hợp với từng tình huống
- Player sử dụng adaptive buffering dựa trên đo độ trễ mạng theo thời gian thực để cân bằng giữa độ trễ thấp và việc tránh buffer underrun
- Server hỗ trợ tự động ghi lại stream, nhưng server vận hành tại asciinema.org hiện đang tắt ghi hình và áp dụng chính sách chỉ 1 stream đồng thời
- Khi self-hosting, mặc định việc ghi hình được bật và không có giới hạn số stream đồng thời
Quay lại với Local-first
- Trước đây,
asciinema rec có hành vi upload nằm trong luồng mặc định, tạo ra rủi ro công khai ngoài ý muốn và rò rỉ thông tin
- Ở bản 2.4, một prompt lựa chọn trước khi upload đã được thêm vào để chuẩn bị cho thay đổi này; đến 3.0, hệ thống được tách hẳn bằng cách bắt buộc tên tệp, loại bỏ chức năng upload khỏi
rec và dùng lệnh upload <tệp> một cách tường minh
- Triết lý mặc định được xác định rõ là ưu tiên local, thiết kế lại luồng để người dùng chỉ công khai/chia sẻ khi có chủ đích
- Cách dùng chỉ-local được hỗ trợ đầy đủ, và chỉ publish một cách tường minh khi cần
Tăng cường thân thiện với self-hosting
- Khi lần đầu dùng
upload/stream/auth, hệ thống sẽ hiển thị prompt chọn URL server, đưa ra mặc định là asciinema.org nhưng lưu lại lựa chọn instance theo đúng ý định người dùng
- Trước đây việc chỉ định cũng đã có thể thực hiện qua file cấu hình hoặc biến môi trường, nhưng nay có thể thao tác dễ dàng hơn trong môi trường tương tác (VM mới, Dev container, v.v.)
- Điều này vừa nâng cao khả năng sử dụng self-hosting, vừa đóng vai trò như một lớp bảo vệ bổ sung để ngăn upload ra bên ngoài ngoài ý muốn
Phân phối và hướng dẫn sử dụng
- Việc cập nhật vào repository gói của từng bản phân phối có thể sẽ cần thêm thời gian
- Trong thời gian đó, có thể tải binary dựng sẵn cho GNU/Linux và macOS từ GitHub Releases, hoặc build từ source
- Release note và lịch sử thay đổi chi tiết có thể xem trong tài liệu release notes và CHANGELOG trên GitHub
Chưa có bình luận nào.