Abertura da biblioteca padrão da linguagem Mojo. Atualização da ferramenta Mojo 24.2

Os desenvolvedores da linguagem de programação Mojo iniciaram a transição de seus trabalhos para o status de software aberto. O código da biblioteca padrão foi o primeiro a ser aberto, agora disponível sob a licença Apache 2.0, com exceções do projeto LLVM, permitindo que seja misturado com código sob a licença GPLv2. Além da publicação do código, o processo de desenvolvimento se deslocou para uma maior abertura, possibilitando a submissão de mudanças externas através de pull requests no GitHub. Os códigos fonte do compilador estão planejados para serem abertos após a conclusão do design da arquitetura interna.

No repositório, foram criados dois branches com o código da biblioteca padrão Mojo: o branch main, sincronizado com a última versão estável do Mojo, e o branch nightly, refletindo o atual processo de desenvolvimento e sincronizado com as compilações noturnas do Mojo. O branch nightly é sugerido para participantes que desejam se juntar ao desenvolvimento e compartilhar suas modificações. Embora algumas partes dos módulos da biblioteca ainda não estejam abertas, há planos para mover o código restante para o repositório aberto em algum momento. Em geral, o código de módulos que estão se desenvolvendo rapidamente, que requerem estabilização adicional, que estão planejados para reestruturação e que necessitam de revisão e reformulação devido a associações com projetos proprietários permanecem fechados.

Ao mesmo tempo, foi lançada a ferramenta Mojo SDK 24.2, que permite compilar projetos em um sistema local, e o motor MAX Engine 24.2, que oferece uma plataforma para desenvolvimentos na área de aprendizado de máquina. O Mojo SDK inclui componentes necessários para o desenvolvimento de aplicações na linguagem Mojo, incluindo compilador, runtime, um console interativo REPL para compilar e executar programas, um depurador, um complemento para o editor de código Visual Studio Code (VS Code) com suporte a autocompletar, formatação de código e destaque de sintaxe, além de um módulo para integração com o Jupyter para compilar e executar notebooks Mojo. O MAX Engine complementa o SDK com ferramentas para desenvolver e depurar aplicações que utilizam modelos de aprendizado de máquina em vários formatos (TensorFlow, PyTorch, ONNX, etc.). As compilações do Mojo SDK e do MAX Engine estão preparadas para as plataformas Linux e macOS.

Entre as mudanças mais notáveis no Mojo 24.2:

  • Estruturas e outros tipos nominais agora podem corresponder implicitamente a protocolos. Por exemplo, qualquer estrutura para a qual o método __str__() está implementado corresponde implicitamente ao protocolo Stringable e pode ser usada com a função str().
  • Ferramentas para compatibilidade com código em Python agora suportam a passagem de argumentos baseados em palavras-chave em funções Python. Por exemplo, «plt.plot((5, 10), (10, 15), color=»red»)»
  • Foi adicionada a capacidade de passar um número variável de argumentos para a função por meio da atribuição de palavras-chave. Por exemplo, «print_nicely(a=7, y=8)».
  • O tipo DynamicVector foi renomeado para List e movido para o módulo collections.list. Agora é possível formar uma lista com um número arbitrário de valores, por exemplo, «var numbers = List[Int](1, 2, 3)».
  • A função print() agora possui parâmetros nomeados sep e end, que permitem definir os valores do separador e da saída final. Por exemplo, a execução de print(«Hello», «Mojo», sep=», «, end=»!!!\n») resultará na saída «prints Hello, Mojo!!!».

O projeto Mojo está em desenvolvimento sob a liderança de Chris Lattner, fundador e arquiteto-chefe do projeto LLVM e criador da linguagem de programação Swift. A sintaxe do Mojo é baseada na linguagem Python, e o sistema de tipos é semelhante ao C/C++. O projeto é apresentado como uma linguagem de propósito geral, ampliando as capacidades da linguagem Python com recursos de programação de sistema, adequada para uma ampla gama de tarefas e combinando facilidade de uso para desenvolvimentos de pesquisa e rápida criação de protótipos com adequação para a formação de produtos finais de alto desempenho.

A simplicidade é alcançada através do uso da sintaxe familiar da linguagem Python, enquanto a capacidade de compilar em código de máquina, os mecanismos de trabalho seguro com a memória e a utilização de recursos para aceleração de hardware facilitam o desenvolvimento de produtos finais. Para alcançar um alto desempenho, o paralelismo das computações é apoiado com o uso de todos os recursos de hardware disponíveis em sistemas heterogêneos, como GPUs, aceleradores especializados para aprendizado de máquina e instruções processadoras vetoriais (SIMD). Durante cálculos intensivos, o paralelismo e a utilização de todos os recursos computacionais possibilitam um desempenho que supera aplicações em C/C++.

A linguagem suporta tipagem estática e recursos para um trabalho seguro em baixo nível com a memória, semelhantes às capacidades da linguagem Rust, como o rastreamento do tempo de vida de referências e a verificação de empréstimos de variáveis (borrow checker). Ao mesmo tempo, a linguagem oferece também possibilidades para trabalho em baixo nível, como o acesso direto à memória em modo unsafe usando o tipo Pointer, a invocação de instruções SIMD específicas ou o acesso a extensões de hardware, como TensorCores e AMX.

O Mojo pode ser utilizado tanto em modo de interpretação com JIT quanto para compilação em arquivos executáveis (AOT, ahead-of-time). O compilador embute tecnologias modernas de otimização automática, cache e compilação distribuída. O código fonte na linguagem Mojo é transformado em código intermediário de baixo nível, o MLIR (Multi-Level Intermediate Representation), desenvolvido pelo projeto LLVM. O compilador permite aplicar diferentes backends que suportam MLIR para a geração de código de máquina.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster