O NumPy virou, na prática, a resposta padrão para computação numérica em Python. Mas se você usa a linguagem D, ou quer uma forma de escrever código compilado para nativo, sem a sobrecarga de um interpretador, o Mir é o conjunto mais completo de bibliotecas numéricas do ecossistema D. Ele é mantido pela organização libmir, que reúne 35 repositórios, todos escritos em D.
O que o Mir quer resolver
O objetivo do Mir é dar à linguagem D uma infraestrutura numérica e científica à altura: arrays multidimensionais, álgebra linear, números aleatórios, otimização e serialização, mantendo desempenho próximo ao de C. A ideia central está explicada no post The Performance Model Behind Mir:
- Views ndslice sem cópia: fatiar, transpor e remodelar apenas mudam “como os dados são vistos”, sem copiá-los;
- Fusão preguiçosa de map/reduce: operações encadeadas viram uma única passagem na avaliação final;
- Layout de memória contíguo e bindings BLAS: o trabalho pesado vai direto para um backend de álgebra linear maduro.
O site não traz benchmarks; “desempenho de nível C” é uma afirmação dos autores, então meça por conta própria antes de decidir.
As principais bibliotecas
| Biblioteca | Função | Observação |
|---|---|---|
| mir-algorithm | Núcleo: arrays multidimensionais ndslice, iteração funcional, algoritmos numéricos | 180 estrelas, última versão no DUB v3.22.4 |
| mir-core | Tipos algébricos (sumtype / tagged union / variant), API de reflexão universal, matemática básica | 33 estrelas |
| mir-random | Geradores de números aleatórios avançados e distribuições estatísticas | 32 estrelas |
| mir-stat | Pacote de estatística | 12 estrelas |
| mir-optim | Framework de otimização não linear em BetterC: mínimos quadrados não lineares, L-BFGS | 16 estrelas |
| mir-ion | Serialização em Ion, JSON, YAML, CSV, CBOR e MessagePack | 19 estrelas |
| asdf | Biblioteca JSON mais antiga | 23 estrelas |
| mir-cpuid | Rotinas de identificação de CPU em BetterC | 26 estrelas |
| dcv | Biblioteca de visão computacional para D | 94 estrelas |
| dcompute | Executa código D nativamente em GPUs e outros aceleradores | 143 estrelas; o site de documentação a marca como inativa e sem manutenção |
Se for aprender apenas uma biblioteca, aprenda a mir-algorithm.
Como começar
Em um projeto DUB, basta adicionar as dependências:
dependency "mir-algorithm" version="~>3.0"
dependency "mir-core" version="~>1.0"
O site libmir.org é um arquivo não oficial da documentação dessas bibliotecas (o site original saiu do ar no início de 2026; o atual existe para restaurar a documentação). As páginas de tutoriais são organizadas por tarefa, e o site afirma que os exemplos de código foram compilados contra o código-fonte atual do Mir:
| Tutorial | Assunto |
|---|---|
| ndslice Cookbook | Receitas para criar, remodelar, fatiar, mapear, reduzir e fundir arrays multidimensionais |
| ndslice vs NumPy | Comparação lado a lado das operações do NumPy com o ndslice, para quem vem do Python |
| Random Numbers & Distributions | Números pseudoaleatórios reproduzíveis e amostragem de distribuições uniforme, normal, exponencial e gama |
| Serialization | Alternar entre JSON, MessagePack e ION com o mir-ion |
| Linear Algebra | Produto matriz-vetor, matriz-matriz, produto escalar e operações BLAS |
| BetterC guide | Como escrever código D sem coletor de lixo e sem runtime |
Para consultar a API, use o índice de referência. Para entender as escolhas do projeto, leia o post Why D for Numerical Computing?, em que o autor também discute quando outra linguagem é mais adequada. O blog tem ainda o texto Shipping Mir to WebAssembly, que mostra como compilar o código numérico do Mir para WebAssembly com LDC e -betterC e executá-lo no navegador, o que se conecta bem ao tutorial de BetterC.
Para quem serve e o que observar
Serve para quem já usa D e precisa de arrays no estilo NumPy e algoritmos numéricos, para quem quer desempenho nativo sem escrever C/C++, e para quem tem experiência com NumPy e quer experimentar outra abordagem compilada.
Três pontos pedem cautela:
- O ecossistema é muito menor que o do Python, com menos bibliotecas de terceiros e menos material;
- A atividade varia entre as bibliotecas: mir-algorithm e mir-core tiveram commits em fevereiro de 2026, mir-random em junho de 2026, o lubeck parou em julho de 2023 e o dcompute está marcado como inativo;
- O site é um arquivo não oficial: para detalhes de comportamento, confie no código-fonte no GitHub e, para licenças, no arquivo LICENSE de cada repositório.
As informações deste texto vêm da página inicial, da documentação, dos tutoriais e do blog do libmir.org, além dos repositórios exibidos na página da organização libmir no GitHub; o número de estrelas é o mostrado na página na data da redação.



