- OxCaml é um conjunto de extensões em rápida evolução que adiciona extensões orientadas a desempenho ao OCaml, servindo como compilador de produção da Jane Street e também como espaço para experimentar melhorias no OCaml
- Seu projeto busca controlar comportamentos do programa que afetam o desempenho de forma segura, conveniente e previsível, impondo complexidade apenas ao código que realmente precisa disso
- Todo programa OCaml válido também é válido em OxCaml, com o objetivo de parecer mais uma evolução do OCaml do que uma nova linguagem
- As extensões se dividem em concorrência que exclui estaticamente data races, layout de memória e acesso a SIMD, controle de alocação e recursos de conveniência como parâmetros polimórficos, include functor, labeled tuples e immutable arrays
- Embora seja open source, não promete estabilidade nem compatibilidade retroativa para as extensões, e oferece um conjunto modificado de ferramentas do OCaml com gerenciamento de pacotes compatível com dune e opam, LSP, formatador e gerador de documentação
Objetivos e princípios de projeto do OxCaml
- OxCaml é um conjunto de extensões em rápida evolução para a linguagem de programação OCaml
- É usado como compilador de produção da Jane Street
- Também funciona como um espaço de experimentação para melhorar o OCaml para programação orientada a desempenho
- Espera-se contribuir com algumas extensões para o OCaml upstream ao longo do tempo
- O principal objetivo de projeto é controlar comportamentos do programa importantes para o desempenho de forma segura, conveniente e previsível
- Segurança é vista como um recurso importante para a produtividade do programador e para a implantação de código correto
- Conveniência foca em oferecer controle sem exigir anotações excessivas
- Busca manter a inferência de tipos do OCaml mesmo com o sistema de tipos estendido
- Previsibilidade está voltada a preservar e melhorar a facilidade de entender características de desempenho apenas observando o código OCaml
- Detalhes centrais de desempenho são expostos explicitamente no nível de tipos
- Segue o modelo pay-as-you-go, oferecendo mais capacidade de otimização sem impor complexidade extra ao código que não usa esses recursos
- Todo programa OCaml válido também é válido em OxCaml
- O objetivo é que o OxCaml pareça menos uma nova linguagem e mais como uma versão evoluída e melhor do OCaml
- Busca preservar a sensibilidade de projeto original do OCaml, além de sua segurança, simplicidade e produtividade
Áreas de extensão e condições de uso
- As extensões do OxCaml se dividem em algumas áreas centradas em controle de desempenho e conveniência da linguagem
- Fearless concurrency: exclui estaticamente data races por meio de adições ao sistema de tipos
- Layouts: permite ao programador especificar o layout de memória dos dados e acessar nativamente extensões SIMD do processador
- Control over allocation: fornece ferramentas para controlar alocação, reduzir a pressão sobre o GC e tornar os programas mais eficientes em cache e mais determinísticos
- Quality of life: também inclui extensões úteis para tarefas do dia a dia
- Polymorphic parameters
- Include functor
- Labeled tuples
- Immutable arrays
- O OxCaml é open source e está aberto a usuários experimentais
- Espera especialmente que pesquisadores e experimentadores usem o sistema e enviem feedback
- As extensões do OxCaml têm caráter fortemente experimental e não prometem estabilidade nem compatibilidade retroativa
- Ainda assim, mantém compatibilidade retroativa com OCaml
- Para facilitar o uso, oferece um conjunto modificado das ferramentas padrão do OCaml
- Gerenciamento de pacotes compatível com dune e opam
- Integração com editor por meio de servidor LSP
- Formatação de código-fonte
- Geração de documentação
- As bibliotecas e ferramentas open source da Jane Street são lançadas em duas formas
- A versão para OCaml upstream é fornecida com as extensões do OxCaml removidas
- A versão para OxCaml usa ativamente essas extensões
- Como nem todas as extensões podem ser removidas, algumas bibliotecas são oferecidas apenas para OxCaml
- Quando as extensões necessárias forem integradas ao upstream, está previsto o lançamento de uma versão compatível com OCaml dessas bibliotecas
Ainda não há comentários.