NumPy gần như đã trở thành câu trả lời mặc định cho tính toán số trong Python. Nhưng nếu bạn dùng ngôn ngữ D, hoặc muốn một cách viết biên dịch ra mã gốc mà không phải chịu chi phí của trình thông dịch, thì Mir là bộ thư viện tính toán số hoàn chỉnh nhất trong hệ sinh thái D. Dự án do tổ chức libmir duy trì, gồm 35 kho mã, tất cả đều viết bằng D.

Mir muốn giải quyết điều gì

Mục tiêu của Mir là cho D một hạ tầng tính toán số và khoa học đáng tin cậy: mảng nhiều chiều, đại số tuyến tính, số ngẫu nhiên, tối ưu hóa và tuần tự hóa, đồng thời giữ hiệu năng gần với C. Ý tưởng cốt lõi được giải thích khá rõ trong bài The Performance Model Behind Mir:

  • View ndslice không sao chép: cắt lát, chuyển vị, đổi hình dạng chỉ thay đổi “cách nhìn dữ liệu” chứ không sao chép dữ liệu;
  • Hợp nhất map/reduce lười: các phép toán nối chuỗi được gộp thành một lần duyệt khi đánh giá cuối cùng;
  • Bố cục bộ nhớ liên tục cùng binding BLAS: việc nặng được giao thẳng cho backend đại số tuyến tính đã trưởng thành.

Trang web không đưa ra số liệu benchmark; “hiệu năng cấp C” là tuyên bố của tác giả, nên hãy tự đo trước khi quyết định.

Các thư viện chính

Thư viện Chức năng Ghi chú
mir-algorithm Lõi: mảng nhiều chiều ndslice, lặp kiểu hàm, thuật toán số 180 sao, bản mới nhất trên DUB là v3.22.4
mir-core Kiểu đại số (sumtype / tagged union / variant), API phản chiếu chung, toán cơ bản 33 sao
mir-random Bộ sinh số ngẫu nhiên nâng cao và các phân phối thống kê 32 sao
mir-stat Gói thống kê 12 sao
mir-optim Khung tối ưu phi tuyến BetterC: bình phương tối thiểu phi tuyến, L-BFGS 16 sao
mir-ion Tuần tự hóa Ion, JSON, YAML, CSV, CBOR và MessagePack 19 sao
asdf Thư viện JSON ra đời sớm hơn 23 sao
mir-cpuid Các hàm nhận diện CPU bằng BetterC 26 sao
dcv Thư viện thị giác máy tính cho D 94 sao
dcompute Chạy mã D trực tiếp trên GPU và các bộ tăng tốc khác 143 sao; trang tài liệu đánh dấu là không hoạt động, không còn bảo trì

Nếu chỉ học một thư viện, hãy học mir-algorithm.

Bắt đầu như thế nào

Trong dự án DUB, chỉ cần thêm phụ thuộc:

dependency "mir-algorithm" version="~>3.0"
dependency "mir-core" version="~>1.0"

Trang libmir.org là kho lưu trữ tài liệu không chính thức của bộ thư viện này (trang gốc đã ngừng hoạt động đầu năm 2026; trang hiện tại được dùng để khôi phục tài liệu). Các trang hướng dẫn được tổ chức theo tác vụ, và trang cho biết mọi ví dụ mã đều được biên dịch với mã nguồn Mir hiện tại:

Hướng dẫn Nội dung
ndslice Cookbook Các công thức tạo, đổi hình dạng, cắt lát, ánh xạ, thu gọn và hợp nhất mảng nhiều chiều
ndslice vs NumPy So sánh song song các thao tác NumPy với ndslice, dành cho người đến từ Python
Random Numbers & Distributions Số giả ngẫu nhiên có thể tái lập và lấy mẫu từ các phân phối đều, chuẩn, mũ, gamma
Serialization Chuyển đổi giữa JSON, MessagePack và ION bằng mir-ion
Linear Algebra Nhân ma trận với vectơ, nhân ma trận, tích vô hướng và các thao tác BLAS
BetterC guide Viết mã D không cần bộ thu gom rác và không cần runtime

Để tra cứu API, dùng chỉ mục tham chiếu. Muốn hiểu những đánh đổi của dự án, hãy đọc bài Why D for Numerical Computing?, trong đó tác giả cũng bàn đến khi nào một ngôn ngữ khác phù hợp hơn. Blog còn có bài Shipping Mir to WebAssembly, minh họa cách biên dịch mã số của Mir sang WebAssembly bằng LDC và -betterC để chạy trong trình duyệt, rất liền mạch với hướng dẫn BetterC.

Phù hợp với ai và cần lưu ý gì

Phù hợp với lập trình viên đã dùng D và cần mảng kiểu NumPy cùng các thuật toán số, người muốn hiệu năng gốc mà không viết C/C++, và người đã quen NumPy muốn thử một hướng biên dịch khác.

Có ba điểm cần cân nhắc:

  • Hệ sinh thái nhỏ hơn Python rất nhiều, ít thư viện bên thứ ba và ít tài liệu;
  • Mức độ hoạt động của các thư viện không đồng đều: mir-algorithm và mir-core có commit vào tháng 2 năm 2026, mir-random vào tháng 6 năm 2026, lubeck dừng ở tháng 7 năm 2023, còn dcompute đã được đánh dấu là không hoạt động;
  • Trang tài liệu là kho lưu trữ không chính thức: chi tiết hành vi hãy dựa vào mã nguồn trên GitHub, còn giấy phép dựa vào tệp LICENSE của từng kho.

Thông tin trong bài lấy từ trang chủ, tài liệu, hướng dẫn và blog của libmir.org, cùng các kho mã hiển thị trên trang tổ chức libmir ở GitHub; số sao là số hiển thị trên trang tại thời điểm viết bài.