package faraday-async

All checked builds pass
  1. Overview
  2. Docs
Async support for Faraday

Install

dune-project
 Dependency

Authors

Maintainers

Sources

0.8.2.tar.gz
sha256=720ea90b39fd3ea7de6e8722330a25514e67306e94d4af41ad48d8a7cfa035c6
md5=307dccc4ea67ff0eeff394701d05bbe7

Description

Added to opam-repository:

README

Faraday

Faraday is a library for writing fast and memory-efficient serializers. Its core type and related operation gives the user fine-grained control over copying and allocation behavior while serializing user-defined types, and presents the output in a form that makes it possible to use vectorized write operations, such as the writev system call, or any other platform or application-specific output APIs.

Build Status

Installation

Install the library and its depenencies via OPAM:

opam install faraday

Usage

Like its sister project Angstrom, Faraday is written with network protocols and serialization formats in mind. As such, its source distribution inclues implementations of various RFCs that are illustrative of real-world applications of the library. This includes a JSON serializer.

In addition, it's appropriate here to include a serializer for the simple arithmetic expression language described in Angstrom's README.

open Faraday

type 'a binop = [
  | `Sub of 'a * 'a
  | `Add of 'a * 'a
  | `Div of 'a * 'a
  | `Mul of 'a * 'a
]
;;

type t = [ `Num of int | t binop ]

let rec serialize ?(prec=0) t expr =
  match expr with
  | `Num n          -> write_string t (Printf.sprintf "%d" n)
  | #binop as binop ->
    let prec', op, l, r =
      match binop with
      | `Sub(l, r) -> 2, '-', l, r
      | `Add(l, r) -> 3, '+', l, r
      | `Div(l, r) -> 4, '/', l, r
      | `Mul(l, r) -> 5, '*', l, r
    in
    if prec' < prec then write_char t '(';
    serialize t ~prec:prec' l;
    write_char t op;
    serialize t ~prec:prec' r;
    if prec' < prec then write_char t ')'

let to_string expr =
  let t = create 0x1000 in
  serialize t expr;
  serialize_to_string t

Development

To install development dependencies, pin the package from the root of the repository:

opam pin add -n faraday .
opam install --deps-only faraday

After this, you may install a development version of the library using the install command as usual.

For building and running the tests during development, you will need to install the alcotest package:

opam install alcotest
make test

License

BSD3, see LICENSE file for its text.

Dependencies (6)

  1. async >= "v0.14.0"
  2. core_unix >= "v0.14.0"
  3. core >= "v0.14.0"
  4. faraday >= "0.5.0"
  5. dune >= "1.11"
  6. ocaml >= "4.08.0"

Dev Dependencies

None

Optional Dependencies

None

Conflicts

None

Build status

Results of building faraday-async with each compiler on check.ci.ocaml.org, run of against opam-repository 7cdc698. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
0.8.2 (this version) good good good good good
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure