Rama 0.4: Hỗ trợ proxy hệ thống và PAC – Bước tiến mới cho framework mạng Rust
Rama 0.4 vừa được phát hành chỉ sau 6 tuần kể từ phiên bản 0.3, mang đến hàng loạt cải tiến đáng chú ý cho framework mạng viết bằng Rust. Điểm nhấn chính là hỗ trợ cấu hình proxy hệ thống (SystemProxyLayer) và giao thức PAC (Proxy Auto Configuration) thông qua trình chạy JavaScript trong môi trường WASM, cùng với các tính năng mới như ttRPC, gRPC macros và HAR WebSockets.
Rama 0.4: Hỗ trợ proxy hệ thống và PAC – framework mạng Rust tiếp tục bứt phá
Chỉ sau 6 tuần kể từ phiên bản 0.3, đội ngũ phát triển Rama đã chính thức phát hành phiên bản 0.4 với nhiều cải tiến vượt bậc. Bản phát hành này đánh dấu cột mốc quan trọng khi giải quyết được những hạng mục tồn đọng lâu nay trong backlog, đặc biệt là khả năng hỗ trợ proxy hệ thống và giao thức PAC – một yêu cầu thiết yếu cho các ứng dụng mạng hiện đại.
Hỗ trợ proxy hệ thống và biến môi trường
Trước đây, Rama đã hỗ trợ các loại proxy HTTP, HTTPS và SOCKS5 thông qua cấu hình trực tiếp bằng ProxyRoute. Tuy nhiên, việc tích hợp với cấu hình proxy của hệ điều hành vẫn còn hạn chế. Với phiên bản 0.4, Rama giới thiệu SystemProxyLayer – cho phép các ứng dụng xây dựng trên Rama tự động tôn trọng cấu hình proxy hệ thống một cách mặc định.
Ngoài ra, Rama cũng bổ sung hỗ trợ đầy đủ cho các biến môi trường phổ biến như HTTP_PROXY, HTTPS_PROXY, ALL_PROXY và NO_PROXY thông qua ProxyEnvLayer và NoProxyEnvLayer. Điều này đặc biệt hữu ích cho các nhà phát triển Việt Nam thường xuyên làm việc với môi trường có proxy doanh nghiệp hoặc cần tuân thủ chính sách mạng nội bộ.
PAC: Tự động cấu hình proxy linh hoạt
Điểm nhấn đáng chú ý nhất trong Rama 0.4 là hỗ trợ PAC (Proxy Auto Configuration) – một tính năng cho phép lựa chọn proxy động dựa trên các quy tắc JavaScript. Để thực hiện điều này, nhóm phát triển đã tạo ra crate rama-js, một trình chạy JavaScript trong môi trường WASM (sử dụng wasmtime). Cách tiếp cận này mang lại khả năng cô lập tốt, đảm bảo nếu JavaScript runtime gặp sự cố, nó sẽ không ảnh hưởng đến toàn bộ tiến trình chính.
Các ứng dụng như Google Chrome chạy JavaScript engine trong một tiến trình OS riêng biệt; trong Rama, chúng tôi chọn chạy trong môi trường WASM để đạt được sự cô lập tương tự mà không cần phải đóng gói và quản lý một tiến trình phụ.
Crate rama-pac cho phép tạo và đánh giá các script PAC một cách dễ dàng. Đặc biệt, CLI của Rama giờ đây có các lệnh con rama pac để tạo script PAC hoặc đánh giá chúng qua REPL – một công cụ hữu ích cho các nhà phát triển muốn thử nghiệm cấu hình proxy mà không cần đến các ứng dụng cũ kỹ.
ttRPC và gRPC: Mở rộng giao thức
Rama 0.4 bổ sung hỗ trợ ttRPC (lightweight alternative to gRPC) thông qua crate mới rama-ttrpc. Giao thức này chạy trực tiếp trên TCP nhưng vẫn sử dụng hợp đồng protobuf (proto). Ngoài ra, crate rama-grpc-macros ra đời giúp tạo mã client/server gRPC mà không cần viết một dòng proto nào, thay vào đó dựa trên codec tự định nghĩa, tùy chọn điều khiển bởi Serde.
HAR WebSockets và cải tiến khác
Một bất ngờ thú vị trong phiên bản này là hỗ trợ WebSocket trong HAR (HTTP Archive). Tính năng này tuy khá ít được biết đến nhưng đã có mặt trong Chrome vài năm trước. Rama 0.4 không chỉ hỗ trợ mà còn cải thiện cách xuất HAR bằng cách stream dữ liệu trực tiếp xuống đĩa, tránh phải lưu toàn bộ vào bộ nhớ – một cải tiến lớn về hiệu suất.
CLI send cũng được bổ sung tham số --har để xuất file HAR của các phiên HTTP/WS, rất hữu ích cho việc gỡ lỗi và phân tích.
Kết luận
Rama 0.4 là một bản phát hành đáng chú ý, cho thấy sự phát triển ổn định của framework mạng này. Với việc bổ sung hỗ trợ proxy hệ thống, PAC, ttRPC, gRPC macros và HAR WebSockets, Rama ngày càng trở nên hoàn thiện hơn như một giải pháp toàn diện cho các ứng dụng mạng và proxy trong hệ sinh thái Rust. Các nhà phát triển muốn tìm hiểu sâu hơn có thể tham khảo CHANGELOG đầy đủ hoặc khám phá các tính năng tại ramaproxy.org.