A linguagem Mojo (da Modular, agora Qualcomm) agora é open source

Mojo, uma nova linguagem de programação de sistemas criada pelo arquiteto de LLVM e Swift Chris Lattner e agora pertencente à Qualcomm, foi totalmente open-sourced sob Apache 2.0 após anos de disponibilidade parcial. Comentadores avaliam seu potencial como uma linguagem de estilo Python, baseada em MLIR, para computação heterogênea de alto desempenho em CPUs, GPUs e aceleradores de IA, contra preocupações com o atraso na abertura do código, a governança de longo prazo pouco clara e se ela conseguirá construir um ecossistema real contra incumbentes como Rust, C++, CUDA e Triton. Muitos veem motivações estratégicas na mudança da Qualcomm — especialmente como uma jogada anti-NVIDIA — enquanto desenvolvedores individuais se dividem entre o entusiasmo para experimentar e o ceticismo de que o Mojo ganhará tração duradoura.

Escopo e Proposta de Valor do Mojo

  • Posicionado como uma linguagem de sistemas moderna com sintaxe semelhante à do Python, forte suporte a SIMD, recursos em tempo de compilação e foco em computação heterogênea (CPUs, GPUs, aceleradores).
  • Principal argumento de venda: uma única linguagem e compilador direcionando GPUs NVIDIA/AMD/Apple, TPUs, Trainium e CPUs sem pilhas separadas CUDA/ROCm/Metal.
  • Usuários relatam conseguir desempenho próximo ao de C++/Rust em CPU e, depois, mover cargas de trabalho para GPU com mais facilidade e ver grandes ganhos de velocidade.
  • Alguns o veem como uma possível alternativa tipada estaticamente ao Python para tarefas numéricas e de sistemas; outros dizem que isso ainda não justifica escolhê-lo em vez de Rust ou Zig.

Desempenho, Design e Roadmap

  • Algumas críticas ao desempenho atual de benchmarks: certos exemplos de GEMM supostamente “trapaceiam” ao pular trabalho, descritos como “codificados no vibe”.
  • Foi levantada a հարց: por que investir em um novo compilador quando você pode auto-otimizar kernels Triton/CUDA?
  • Principais recursos ausentes ou imaturos apontados: suporte a async, tipos algébricos + matching de padrões, sistema de traits melhor e uniões com tag mais ergonômicas.
  • O Mojo é fortemente integrado ao MLIR, o que alguns veem como uma base poderosa para otimizações no nível de bibliotecas e uma experiência “MLIR++”.

Relação com Python e Ecossistema

  • O marketing inicial como um superconjunto de Python criou expectativas; a realidade atual é mais uma “linguagem pythonic” do que Python totalmente compatível.
  • Alguns ficaram mais interessados agora que ele não é estritamente um subconjunto de Python; outros veem a falta de interoperabilidade total com Python como um obstáculo para adoção mais ampla.
  • Há interesse em transpiração de Python estático → Mojo e em moldar o pattern matching para ser mais parecido com Rust (baseado em expressões) do que com Python.

Open Source, Governança e Qualcomm

  • Muitos dizem que manter o compilador fechado prejudicou significativamente a adoção; a abertura do código sob Apache 2.0 é amplamente bem-vinda.
  • Há discordância sobre a justificativa para adiar o open source:
    • Um lado: o atraso evitou mudanças de design iniciais, quebra da comunidade e estresse “ao estilo Swift”.
    • O outro lado: vê isso como uma justificativa fraca ou pós-hoc; argumenta que o motivo real foi a baixa prioridade dada à abertura.
  • Alguns temem que a aquisição pela Qualcomm signifique que o Mojo possa estagnar ou ser apenas uma ferramenta estratégica “anti-NVIDIA”; outros dizem que a abertura do código já estava planejada antes da aquisição e observam a postura cada vez melhor da Qualcomm em relação ao open source.

Adoção, LLMs e Panorama das Linguagens

  • Debate sobre se pequenos ecossistemas valem a pena aprender; uma visão diz que linguagens sem comunidades são inúteis, outra observa que LLMs agora conseguem escrever linguagens de nicho, reduzindo essa barreira.
  • Comparações com Rust e C++: o modelo de memória do Mojo é descrito como semelhante ao de Rust, mas com uma superfície mais procedural/pythônica; alguns o veem como “o que o C++ poderia ter sido”, outros dizem que o Rust já ocupa esse papel.