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.