Awesome OCaml Packages

Awesome OCaml Packages #

Gerenciamento de Pacotes e Ferramentas de Build #

  • Opam - Gerenciador de Pacotes OCaml.
  • Dune - Sistema de build para OCaml.
  • esy - Gerenciador de Pacotes para ReasonML e OCaml que faz mimese ao workflow do NPM.

Ambiente de Desenvolvimento #

  • utop - REPL melhorado para OCaml com suporte a histórico, autocompletar e mais.
  • ocaml-lsp - Servidor de Protocolo de Linguagem OCaml (LSP).
  • Merlin - Assistente de contexto de OCaml para VIM/Emacs.
  • tuareg - Modo OCaml para Emacs.
  • ocaml.nvim - Ferramentas OCaml para Neovim.

Programação Paralela e Concorrente #

  • Eio - Bibliota para programação concorrente baseada em Efeitos. OCaml 5.1+
  • Lwt - Biblioteca de programação concorrente baseada em promises/futures.
  • Async - Biblioteca para programação assíncrona. Jane Street

Frameworks e Bibliotecas Web #

  • Dream - Framework web fullstack para OCaml.
  • Opium - Framework Web Sinatra-like para OCaml.
  • Cohttp - Biblioteca HTTP para OCaml.
  • Piaf - Cliente HTTP/1.X e HTTP/2 totalmente assíncrono para OCaml. OCaml 5.1+

Desenvolvimento Frontend #

  • Melange - Backend para o compilador OCaml que emite JavaScript legível e eficiente.
  • js_of_ocaml - Compilador de OCaml para JavaScript.
  • jsoo-react - Bindings ReactJS para js_of_ocaml.
  • mlx - Biblioteca para uso de JSX em OCaml, compatível com React e Melange.
  • Bonsai - Biblioteca para criar interfaces de usuário web reativas. Jane Street
  • Incr_dom - Biblioteca para construir aplicações web dinâmicas usando OCaml. Jane Street

Parsing e Metaprogramação #

  • Menhir - Gerador de parser LR(1) para OCaml.
  • ocaml-re - Biblioteca de expressões regulares para OCaml.
  • Angstrom - Parser combinators.
  • ppxlib - Biblioteca base para extensões de sintaxe em OCaml (PPX).
  • Parsexp - Parsing de S-expressions. Jane Street

Extensões de Sintaxe (PPX) #

  • ppx_deriving - Derivação automática de implementações de tipos e funções.
  • ppx_let - Sintaxe sugar para monads em OCaml. Jane Street
  • ppx_import - Importação de assinaturas de módulos.
  • ppx_sexp_conv - Conversão de valores OCaml de/para S-expressions. Jane Street
  • ppx_fields_conv - Acesso e iteração sobre campos de registros. Jane Street
  • ppx_custom_printf - Formatação de strings com sintaxe estendida. Jane Street
  • Ppx_jane - Coleção de extensões de sintaxe ppx comumente usadas. Jane Street

Interoperabilidade com Outras Linguagens #

  • ctypes - Bindings para C.
  • pyml - Bindings para Python.

Testes e Qualidade de Código #

  • Alcotest - Framework de testes de unidade leve com suporte a cores.
  • OUnit - Framework de teste de unidade XUnit para OCaml.
  • QCheck - Biblioteca de testes baseados em propriedades para OCaml.

Serialização e Formatação #

  • Yojson - Codificação e decodificação JSON para OCaml.
  • Sexplib - Serialização e desserialização de S-expressions. Jane Street
  • Bin_prot - Serialização binária rápida. Jane Street

Análise Estática e Documentação #

  • OCamlFormat - Formatador de código automático para OCaml.
  • fmt - Formatação de Código OCaml.
  • odoc - Documentação de código.

Matemática e Computação Científica #

  • Owl - Biblioteca de computação científica e numérica para OCaml.
  • ocamlgraph - Biblioteca para gerar imagens de Grafos com OCaml, baseado em Graphviz e formato DOT.
  • ocaml-jupyter - Kernel de OCaml para Jupyter Notebooks.

Interface Gráfica e Linha de Comando #

  • cmdliner - Biblioteca para criar aplicações de linha de comando.
  • LablGtk - Interface OCaml para GTK 2 e 3 (bindings).
  • LablTk - Interface OCaml para GUI TCL/Tk.
  • lablqml - Interface com Qt/QML para OCaml.

Bancos de Dados e Armazenamento #

  • Caqti - Abstração para acesso a bancos de dados relacionais (MariaDB, PostgreSQL, SQLite3).
  • sqlite3 - Bindings OCaml para SQLite3.
  • ocaml-redis - Bindings Redis para OCaml.
  • Irmin - Banco de dados distribuído que segue os princípios do Git.

Criptografia e Segurança #

  • Mirage-crypto - Biblioteca de criptografia usada no MirageOS.
  • ocaml-tls - Implementação TLS em OCaml puro.
  • eqaf: Função de igualdade constante, tem como objetivo evitar time attacks, onde um atacante tenta medir o tempo de execução para aprender sobre os conteúdos dos operandos.

Processamento de Dados e Texto #

  • csvtool - Biblioteca e ferramenta de linha de comando para manipulação de arquivos CSV.
  • Textutils - Ferramentas de texto e formatação. Jane Street

Sistemas Operacionais e Arquivos #

  • BOS - Biblioteca para interação com o Sistema Operacional (incluindo manipulação de arquivos) via OCaml.

Bibliotecas Base e Utilitários #

  • Core - Biblioteca alternativa à biblioteca padrão do OCaml. Jane Street
  • Base - Biblioteca base completa para OCaml. Jane Street
  • Incremental - Biblioteca para computações incrementais. Jane Street
  • Fieldslib - Sintaxe e funções para trabalhar com campos de registros. Jane Street
  • Typerep - Representações de tipos em tempo de execução. Jane Street