Spindle: framework web type-safe cho OCaml 5 ra mắt

Công nghệ05 tháng 11, 2026·3 phút đọc

Hypha Technologies giới thiệu Spindle, framework web viết cho OCaml 5 với thiết kế đa nhân (multicore) và chạy trên Eio. Điểm cốt lõi là API hướng kiểu (type-driven): từ định nghĩa kiểu, framework tự sinh codec JSON, kiểm tra dữ liệu đầu vào, tài liệu OpenAPI và schema frontend (Zod, Melange). Theo tác giả, Spindle chạy nhanh gấp 2 lần NestJS và 5 lần FastAPI trên một nhân.

Spindle: framework web type-safe cho OCaml 5 ra mắt

Spindle, framework web mới cho OCaml 5 do Hypha Technologies phát triển, vừa được giới thiệu trên Hacker News. Điểm đáng chú ý không nằm ở tốc độ, mà ở cách framework biến hệ thống kiểu của OCaml thành "hợp đồng" duy nhất giữa server và client.

Trạng thái CI của SpindleTrạng thái CI của Spindle

Từ kiểu dữ liệu sinh ra mọi thứ

Ý tưởng trung tâm của Spindle là API biểu đạt, được dẫn dắt bởi kiểu, và framework tự suy ra phần còn lại: codec, kiểm tra yêu cầu (request validation), đặc tả OpenAPI và schema phía frontend dưới dạng Zod hoặc Melange. Nhờ vậy, hợp đồng giữa server và client luôn đồng bộ mà không phải duy trì hai bộ định nghĩa riêng.

Framework chạy native trên Eio — thư viện I/O hiệu ứng trực tiếp của OCaml 5 — và được thiết kế đa nhân ngay từ đầu, thay vì bổ sung sau. Handler viết theo kiểu tuần tự (straight-line), không cần mô hình async/await.

Những gì có sẵn trong hộp

  • Tuân thủ chặt RFC: Spindle dùng engine HTTP/1.1 riêng, với mỗi yêu cầu trong chuẩn đều có test tương ứng — RFC 9112 và 9110 cho HTTP, RFC 6455 cho WebSockets, RFC 7578 cho form và bộ test đã công bố của RFC 9651 cho Structured Fields.
  • Tài liệu tương tác: tài liệu OpenAPI sinh tự động từ route và hiển thị qua Scalar.
  • Đồng bộ frontend: schema Zod hoặc Melange suy ra từ kiểu OCaml.
  • Tích hợp sẵn: SQLite và Postgres, WebSockets, SSE (Server-Sent Events), session, logging, distributed tracing và metric tương thích OpenTelemetry.
  • Primitive cho MCP server: các thành phần cấp cao để xây server MCP (Model Context Protocol).

Cài đặt qua opam:

opam repo add hypha https://github.com/hyphatech/opam-repository.git
opam install spindle

Ví dụ tối giản

Định nghĩa một kiểu với các ràng buộc ngay trong annotation, rồi dùng nó cho cả validate lẫn tài liệu:

type bill = {
  total : float; [@min 0.]
  tip : int; [@min 0] [@max 100]  (** percent *)
  people : int; [@min 1] [@max 50]
}
[@@deriving wiretype]

Chỉ với vài dòng route, ứng dụng đã có endpoint /split trả JSON, tài liệu tại /docs liệt kê schema kèm giới hạn min/max lấy từ kiểu, và mọi lỗi có thể trả về.

Phiên bản phát hành trên GitHubPhiên bản phát hành trên GitHub

Về hiệu năng

Tác giả nói rõ tốc độ "chưa bao giờ là mục tiêu", nhưng benchmark cho thấy Spindle chạy nhanh gấp 2 lần NestJS và 5 lần FastAPI trên một nhân. Dự án phát hành theo giấy phép MIT, bản quyền thuộc Hypha Technologies Ltd, tài liệu đầy đủ tại hyphatech.github.io/spindle.

Giấy phép MITGiấy phép MIT

Góc nhìn

Với đội ngũ Việt Nam đang cân nhắc OCaml cho backend, Spindle giải quyết đúng điểm đau lớn nhất: trước đây muốn có validate, tài liệu API và schema frontend đồng bộ, bạn phải tự ghép nhiều thư viện và dễ sinh lệch hợp đồng. Việc suy ra tất cả từ một định nghĩa kiểu giúp giảm hẳn loại lỗi "server trả field này, client chờ field khác" — thứ thường chỉ lộ ra khi lên production. Tích hợp sẵn tracing, metric và log cũng có nghĩa là dự án nhỏ không phải tự dựng hạ tầng quan sát từ đầu.

Tuy vậy, OCaml vẫn là lựa chọn ngách so với Node.js hay Python, nên chi phí tuyển người và làm quen hệ sinh thái là bài toán thực tế. Với các nhóm đã quen ML/Haskell hoặc đang cần dịch vụ có kiểu chặt, benchmark nhanh hơn NestJS và FastAPI là điểm cộng đáng cân nhắc khi thử nghiệm.

Nguồn: github.com · Quy trình biên tập

Chia sẻ:FacebookX