QuickCheck inspired property-based testing for OCaml. This module checks invariants (properties of some types) over randomly generated instances of the type. It provides combinators for generating instances and printing them.
Implements arithmetic and logical operations over arbitrary-precision integers. It uses GMP to efficiently implement arithmetic over big integers. Small integers are represented as Caml unboxed integers, for speed and space economy.
Merlin is an editor service that provides modern IDE features for OCaml. Emacs and Vim support is provided out-of-the-box. External contributors added support for Visual Studio Code, Sublime Text and Atom.
Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. It is specified in RFC 4648.
This OCaml library provides two new integer types, Optint.t
and Int63.t
, which guarantee efficient representation on 64-bit architectures and provide a best-effort boxed representation on 32-bit architectures.
Ocaml-cairo2 is a binding to Cairo, a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output.
This library adds new functions to OCaml standard library modules, modifies some functions in order to get better performances or safety (tail-recursive) and also provides new modules which should be useful for day to day programming.
Menhir is a parser generator. It turns high-level grammar specifications, decorated with semantic actions expressed in the OCaml programming language into parsers, again expressed in OCaml. It is based on Knuthâs LR(1) parser construction technique.
Library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms. Code can be developed on a normal OS and then compiled into a fully-standalone, specialised unikernel.
Cinaps is a trivial Metaprogramming tool using the OCaml toplevel. It is based on the same idea as expectation tests. The user writes some OCaml code inside special comments and cinaps makes sure that what follows is what is printed by the OCaml code.
Cinaps is a trivial metaprogramming tool using the OCaml toplevel. It is based on the same idea as expectation tests. The user writes some OCaml code inside special comments and cinaps make sure that what follows is what is printed by the OCaml code.
Earley is a parser combinator library base on Earley's algorithm. It is intended to be used in conjunction with an OCaml syntax extension which allows the definition of parsers inside the language. There is also support for writing OCaml syntax extensions in a camlp4 style.
Biniou (pronounced "be new" is a binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve. Biniou is vastly equivalent to JSON in terms of functionality but allows implementations several times faster (4 times faster than yojson), with 25-35% space savings.
This OCaml library offers a set of combinators for building so-called documents as well as an efficient engine for converting documents to a textual, fixed-width format. The engine takes care of indentation and line breaks, while respecting the constraints imposed by the structure of the document and by the text width.
FrontC is an OCAML library providing a C parser and lexer. The result is a syntactic tree easy to process with usual OCAML tree management. It provides support for ANSI C syntax, old-C K&R style syntax and the standard GNU CC attributes. It provides also a C pretty printer as an example of use.
Yojson is an optimized parsing and printing library for the JSON format. It addresses a few shortcomings of json-wheel including 2x speedup, polymorphic variants and optional syntax for tuples and variants. ydump
is a pretty printing command-line program provided with the yojson package. The program atdgen
can be used to derive OCaml-JSON serializers and deserializers from type definitions.
Library to perform parallel fold or map taking advantage of multiple core architectures for OCaml programs. Drop-in replacement for these List
operations are provided:
List.map
->parmap
List.map
->parfold
List.mapfold
->parmapfold
Also it allows specifying the number of cores to use with the optional parameter ncores
.
Ctypes is a library for binding to C libraries using pure OCaml. The primary aim is to make writing C extensions as straightforward as possible. The core of ctypes is a set of combinators for describing the structure of C types -- numeric types, arrays, pointers, structs, unions and functions. You can use these combinators to describe the types of the functions that you want to call, then bind directly to those functions -- all without writing or generating any C!
A comprehensive toolbox for ppx development. It features:
an OCaml AST / parser / pretty-printer snapshot, to create a full frontend independent of the version of OCaml;
a library for library for ppx rewriters in general, and type-driven code generators in particular;
a feature-full driver for OCaml AST transformers;
a quotation mechanism allowing to write values representing the OCaml AST in the OCaml syntax;
a generator of open recursion classes from type definitions.
Markup.ml provides an HTML parser and an XML parser. The parsers are wrapped in a simple interface: they are functions that transform byte streams to parsing signal streams. Streams can be manipulated in various ways, such as processing by fold, filter, and map, assembly into DOM tree structures, or serialization back to HTML or XML.
Both parsers are based on their respective standards. The HTML parser, in particular, is based on the state machines defined in HTML5.
The parsers are error-recovering by default, and accept fragments. This makes it very easy to get a best-effort parse of some input. The parsers can, however, be easily configured to be strict, and to accept only full documents.
Apart from this, the parsers are streaming (do not build up a document in memory), non-blocking (can be used with threading libraries), lazy (do not consume input unless the signal stream is being read), and process the input in a single pass. They automatically detect the character encoding of the input stream, and convert everything to UTF-8.
Typerep is a library for runtime types.
This package provides a deprecated logging component for ocaml lwt.
Piqilib is the common library used by the piqi command-line tool and piqi-ocaml.
A ppx rewriter for monadic and applicative let bindings, match expressions, and if expressions.