Nguồn: Tailscale Engineering
Tóm tắt
Tailscale công bố tailscale-rs, một thư viện Rust reimplementing core của Tailscale dành cho các ngôn ngữ lập trình không phải Go. Dự án này ra đời do nhu cầu nhúng Tailscale vào ứng dụng của bên thứ ba — điều mà thư viện Go tsnet đã làm tốt cho Go developers, nhưng giải pháp trước đó là libtailscale (C wrapper của Go runtime) gặp vấn đề xung đột runtime khi tích hợp với Python, Ruby hay C# VM.
Lý do chọn Rust thay vì C là vì Rust đáp ứng cả ba yêu cầu then chốt: không có opinionated runtime (tránh xung đột với host language runtime), tương thích C FFI (mọi ngôn ngữ đều có thể gọi), và đảm bảo memory safety. Đây không phải là quyết định ý thức hệ mà là lựa chọn kỹ thuật thực dụng. Tailscale cũng muốn đạt throughput hàng chục Gbps, điều mà Rust hoàn toàn đáp ứng được.
Ở giai đoạn preview, tailscale-rs hỗ trợ TCP/UDP networking trong tailnet, FFI bindings cho Python, Elixir và C, cùng các utility crate cho axum. Những tính năng chưa có bao gồm peer-to-peer NAT traversal (tất cả traffic hiện đi qua DERP relay), DNS resolution, và các tính năng nâng cao như exit nodes hay Tailscale SSH. Tailscale rõ ràng sẽ duy trì song song hai implementation Go và Rust trong thời gian tới, thay vì in-place incremental rewrite.
Đây là tín hiệu quan trọng về xu hướng viết lại core networking components bằng Rust để phục vụ multi-language embedding. Với LM Studio đã tích hợp thành công, tailscale-rs mở ra khả năng nhúng Tailscale vào game engine (Godot), web framework (Django), và các ứng dụng standalone khác mà không cần người dùng cài đặt Tailscale client.