- Limbo là một dự án thử nghiệm nhằm tái hiện thực SQLite bằng Rust, ngôn ngữ mang lại an toàn bộ nhớ
- Yêu thích đặc tính nhúng của SQLite, nhưng muốn một mô hình phát triển cởi mở hơn nên đã bắt đầu dự án libSQL
- Lý do fork SQLite: có thể dễ dàng tích hợp các tính năng mới và vẫn duy trì khả năng tương thích với mã hiện có
- Nhược điểm: bộ test của SQLite là độc quyền và được viết bằng C, khiến việc tiến hóa mã nguồn trở nên khó khăn
- Cách tiếp cận mới
- Đã trải nghiệm những giới hạn của SQLite trong quá trình bổ sung tính năng tìm kiếm vector
- Khám phá khả năng viết lại SQLite từ đầu để vừa giữ tương thích vừa có thể bổ sung tính năng một cách táo bạo hơn
- Bước tiếp theo
- Chuyển Limbo thành dự án chính thức của Turso
- Mục tiêu là xây dựng một kiến trúc mới mang lại an toàn bộ nhớ trong khi vẫn giữ được độ tin cậy như SQLite
- Thử thách độ tin cậy của SQLite
- Đảm bảo độ tin cậy cao thông qua kiểm thử mô phỏng xác định (DST)
- Hợp tác với Antithesis để sử dụng framework DST ở cấp độ hệ thống
- Trạng thái hiện tại
- I/O bất đồng bộ hoàn toàn: Limbo có thiết kế bất đồng bộ hoàn toàn, giải quyết vấn đề giao diện đồng bộ của SQLite
- Thiết kế cho WASM: được thiết kế có tính đến việc sử dụng trong môi trường WASM
- Hiệu năng: trong nhiều tác vụ, hiệu năng tương đương hoặc nhanh hơn SQLite
- Tính đơn giản: mang lại trải nghiệm người dùng tốt hơn bằng cách loại bỏ các tính năng ít quan trọng hơn trong môi trường hiện đại
- Thông tin thêm
- Limbo được cung cấp trên GitHub theo giấy phép MIT
- Mời những ai quan tâm đến việc xây dựng cơ sở dữ liệu nhúng muốn đưa lời hứa của SQLite lên một tầm cao mới tham gia
4 bình luận
Thật thú vị khi dự án mình từng đóng góp lại xuất hiện trên Hacker News haha
Ý kiến trên Hacker News
SQLite có vẻ là một dự án không cần phải viết lại nhờ chất lượng mã nguồn và quy trình kiểm thử nghiêm ngặt
Tranh luận rằng SQLite không "mở cho đóng góp" đã bỏ qua việc nhận đóng góp không phải lúc nào cũng đồng nghĩa với chấp nhận đóng góp
Có người từng có cái nhìn tiêu cực về thông báo ban đầu của nhánh fork từ SQLite3 sang LibSQL
Để đạt hiệu năng tối đa, nên chọn chế độ WAL và vô hiệu hóa POSIX advisory locking
wal2có nằm trong lộ trình của dự án hay khôngCó người nói đây là lần đầu họ biết bộ kiểm thử của SQLite là độc quyền
Không đồng tình với lập luận trong phần "async IO"
Có ý kiến cho rằng đây là một dự án đang ở giai đoạn đầu
Nếu biên dịch bằng Fil-C thì có thể có được SQLite an toàn bộ nhớ
SQLite gồm khoảng 156.000 dòng mã và 92.000 dòng mã kiểm thử
Có suy đoán rằng biến thể Rust không tính đến chứng nhận DO-178B
Tên "Limbo" cũng từng được dùng cho ngôn ngữ hậu C/UNIX của hệ điều hành Inferno từ AT&T
SQLite có vẻ là một dự án không cần phải viết lại nhờ chất lượng mã nguồn và quy trình kiểm thử nghiêm ngặt -> thật sự rất ngưỡng mộ và thấy đánh giá như vậy về SQLite quá tuyệt vời.
Được cho là đang tuân theo quy trình DO-178B và đã đạt 100% độ bao phủ mã MC/DC.
Câu chuyện ít người biết về SQLite