ts-rust: Bản chuyển TypeScript Compiler sang Rust do AI thực hiện với chi phí hơn 24.000 USD

Công nghệ08 tháng 10, 2026·5 phút đọc

Một lập trình viên đã dùng các mô hình ngôn ngữ lớn (LLM) để chuyển toàn bộ TypeScript compiler, checker và LSP sang Rust, tạo ra dự án ts-rust (tsc-rs). Quá trình này tiêu tốn khoảng 24.047 USD tiền token API trong hai tuần, nhưng cho ra kết quả nhanh gấp đôi so với bản TypeScript viết bằng Go của Microsoft.

ts-rust: Bản chuyển TypeScript Compiler sang Rust do AI thực hiện với chi phí hơn 24.000 USD

ts-rust: Khi AI tự tay chuyển TypeScript Compiler sang Rust chỉ trong hai tuần

Một thử nghiệm táo bạo đã chứng minh rằng các mô hình ngôn ngữ lớn (LLM) hoàn toàn có thể đảm nhận những dự án chuyển đổi mã nguồn quy mô lớn. Dự án ts-rust (hay còn gọi là tsc-rs) là bản chuyển trực tiếp TypeScript compiler từ Go sang Rust, được thực hiện gần như hoàn toàn bởi AI.

Điều đáng chú ý là tác giả dự án thừa nhận: "Tôi chưa từng đọc một dòng code nào trong đó." Toàn bộ quá trình viết code được giao cho các mô hình như Claude Opus 5.5 và GPT-6 Astra.

Động lực đằng sau dự án

Tác giả của ts-rust đưa ra bốn lý do chính để bắt đầu dự án này:

  • Kiểm tra năng lực của mô hình AI: Xem liệu LLM có thể đảm nhận việc chuyển đổi một hệ thống phức tạp như TypeScript compiler hay không.
  • Tạo ra trình kiểm tra kiểu (type checker) nhanh hơn: Tận dụng hiệu năng của Rust.
  • Xây dựng tsc chạy được trên WASM: Hướng tới hiệu năng cao trong môi trường trình duyệt.
  • Yếu tố "meme": Đơn giản vì điều này nghe có vẻ thú vị.

Hành trình tốn kém: từ 400.000 USD đến 24.000 USD

Câu chuyện về chi phí của dự án gây ấn tượng mạnh. Ban đầu, tác giả sử dụng nhiều mô hình OpenAI khác nhau, bao gồm GPT-5.6 Sol và GPT-6 Astra, tiêu tốn hơn 400.000 USD tiền token API. Các mô hình này đã viết hơn 1,3 triệu dòng Rust qua nhiều tháng, nhưng không bao giờ vượt qua được mức tương thích khoảng 84%.

Bước ngoặt đến khi tác giả thử dùng Claude Opus 5.5:

Opus 5.5 bắt đầu lại từ đầu. Nó đạt được tiến độ xa hơn Astra chỉ trong 1/10 thời gian.

Kết quả là một phiên bản chạy được (v0) chỉ sau 10 giờ. Tổng chi phí token cho toàn bộ quá trình này là khoảng 24.047 USD trong hai tuần, tương đương khoảng 925% đến 983% giới hạn hàng tuần của gói 200 USD mà tác giả đang dùng.

ts-rust thực chất là gì?

ts-rust là bản chuyển trực tiếp trình biên dịch TypeScript gốc của Microsoft, vốn được viết bằng Go. Dự án giữ nguyên thuật toán và hành vi của Go, đồng thời cung cấp cùng giao diện dòng lệnh (tsc), language server và API.

Cách cài đặt và sử dụng rất đơn giản:

  • Cài đặt qua npm: npm install -D tsc-rs
  • Chạy kiểm tra: npx tsc-rs -p tsconfig.json

Gói npm được đặt tên là tsc-rs để tránh xung đột với gói typescript chính thức. Hiện tại dự án hỗ trợ Linux x64 và macOS arm64. Windows và Linux arm64 chưa được hỗ trợ.

Hiệu năng vượt trội so với bản gốc

Điểm gây ấn tượng nhất của ts-rust là tốc độ. Trên 60 dự án mã nguồn mở, thời gian kiểm tra kiểu chỉ bằng khoảng một nửa so với bản Go.

Bảng benchmark trên các ứng dụng thực tế (thời gian càng thấp càng tốt):

Ứng dụngSố dòngtsc 6tsc 7 (Go)tsc-rs
VS Code3,75 triệu54,56s6,84s4,20s
Sentry (frontend)2,11 triệu58,76s7,90s4,46s
Playwright585k4,48s0,66s0,34s
Excalidraw449k5,32s0,80s0,70s
TypeORM386k3,86s0,55s0,36s
tRPC (server)209k1,10s0,16s0,09s

Theo trung bình nhân (geometric mean), tsc-rs nhanh hơn tsc 6 khoảng 11,4 lần và nhanh hơn tsc 7 (bản Go) khoảng 1,61 lần.

Tương thích gần như hoàn hảo

ts-rust cam kết tương thích tương đương với bản Go. Cụ thể:

  • Kết quả giống nhau: Các dự án như TanStack Query core và Hono cho ra chẩn đoán (diagnostics) trùng khớp với bản Go.
  • Kiểm thử đầy đủ: Tất cả 181.711 bài kiểm thử được chuyển từ Go đều vượt qua.
  • Ứng dụng thực tế: Trên 120 repo mã nguồn mở, kết quả dòng lệnh chỉ khác biệt ở những vấn đề đã biết.

Dự án còn tích hợp sẵn chẩn đoán Effect language service (mã 377xxx), giúp các dự án dùng Effect không cần trình biên dịch thứ hai.

Những vấn đề đã biết

Dù ấn tượng, ts-rust vẫn còn một số hạn chế cần lưu ý:

  • Vấn đề monorepo: Trong một số monorepo, các tệp nguồn có thể được truy cập qua cả node_modules lẫn import trực tiếp, khiến tsc-rs báo lỗi TS6059 (tệp không nằm trong rootDir).
  • Chế độ tsc -b: Khi một dự án import đầu ra của dự án khác mà không có project reference, tsc-rs có thể đọc nhầm đầu ra cũ hoặc thiếu.
  • Bộ nhớ trong editor: Bộ nhớ tăng dần trong các phiên chỉnh sửa dài (khoảng 20 MiB mỗi 1.000 lần chỉnh sửa).

Tác giả cũng đưa ra cảnh báo thẳng thắn:

Đây là bản phát hành sớm. Tôi không chắc nó có thực sự hoạt động hay không.

Ý nghĩa đối với cộng đồng lập trình viên

Dự án này mở ra một cuộc tranh luận thú vị về tương lai của phát triển phần mềm. Nếu một LLM có thể chuyển đổi thành công một hệ thống phức tạp như TypeScript compiler với chi phí chỉ vài chục nghìn USD, điều đó đặt ra câu hỏi về vai trò của lập trình viên trong tương lai.

Đối với các nhà phát triển Việt Nam, ts-rust có thể là một công cụ đáng thử nếu bạn đang tìm kiếm tốc độ kiểm tra kiểu nhanh hơn cho các dự án TypeScript lớn. Tuy nhiên, do đây là bản phát hành sớm và chưa được kiểm chứng rộng rãi, việc sử dụng trong môi trường sản xuất cần được cân nhắc kỹ lưỡng.

Dự án được phát hành theo giấy phép MIT, kế thừa các giấy phép của mã nguồn gốc bao gồm TypeScript (Apache-2.0) và các phần của thư viện chuẩn Go (BSD-3-Clause).

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗