Batteries Included project
Clone or download
Failed to load latest commit information.
benchsuite Fix typo May 5, 2017
build Do not depend upon bisect any longer Mar 1, 2018
examples Fix a broken example Jan 22, 2017
howto prepare release 2.9.0 Sep 8, 2018
qtest disable warning 52 in the inline tests May 11, 2016
scripts prepare the 2.9.0 release Sep 8, 2018
src prepare the 2.9.0 release Sep 8, 2018
test-build add a post-install build test Oct 28, 2016
testsuite testsuite: remove, subsumed by 'make test-compat' Sep 8, 2018
.gitignore Do not depend upon bisect any longer Mar 1, 2018
.mailmap add a .mailmap entry Jul 1, 2013
.merlin basic .merlin file for merlin users Nov 11, 2013 beef up Travis checking Sep 8, 2018
.travis.yml beef up Travis checking Sep 8, 2018
ChangeLog extend the Changelog (#877) Sep 12, 2018
FAQ Update the FAQ Jan 22, 2017
LICENSE Updating pointer to clause 3 in LE text to clause 2 as it should be. Feb 7, 2011 Adding ocamlfind plugin support (#867) Jun 21, 2018
Makefile prepare the 2.9.0 release Sep 8, 2018
README.folders Update README.folders Jan 14, 2014 Do not depend upon bisect any longer Mar 1, 2018
_oasis first commit after 2.9.0 Sep 8, 2018
_tags Compile Batteries with -no-alias-deps Feb 7, 2018
batteries_dev.el emacs mode: updating it to qtest2 Feb 19, 2012 disable print_string_cap_ro/rw to match #673 Dec 2, 2017
check_raise add a style check for '@SInCE NEXT_RELEASE' Oct 26, 2013 Do not depend upon bisect any longer Mar 1, 2018
ocamlinit Fix a typo in ocamlinit that prevents it from loading correctly. Jun 22, 2012
opam Do not depend upon bisect any longer Mar 1, 2018
plot benchmark: fingertrees or sequences in general Feb 18, 2012 Update based on _oasis Sep 8, 2018

Welcome to OCaml Batteries Included

OCaml Batteries Included, or just Batteries, is a community-maintained foundation library for your OCaml projects. Batteries

  • defines a standard set of libraries which may be expected on every compliant installation of OCaml;

  • organizes these libraries into a hierarchy of modules, with a single source of documentation; and

  • provides a consistent API for otherwise independent libraries.

Build Status

Building Batteries


You will need the following libraries:

  • OCaml >= 3.12.1
  • Findlib >= 1.5.3
  • GNU make
  • OUnit to build and run the tests (optional)
  • qtest >= 2.0.1 to build and run the tests (optional)
  • ocaml-benchmark to build and run the performance tests (optional)

Configuration and Installation

To install the full version of Batteries, execute

$ make all
$ make test               [ optional ]
$ sudo make install

$ make doc                [ optional ]
$ sudo make install-doc   [ optional ]

If you want the documentation installed elsewhere, set this before starting the build process because this location is stored in the Batteries_config module generated during compilation.

$ export DOCROOT=/path/to/new/docroot/

To disable native compilation:

$ export BATTERIES_NATIVE=false

To disable building of native shared libraries:


Using Batteries

To get started using Batteries at the toplevel, copy the ocamlinit file to ~/.ocamlinit:

$ cp ocamlinit ~/.ocamlinit

If you already have findlib in your ~/.ocamlinit, you only need the last line in our ocamlinit to load batteries.

More usage help available on the batteries-included wiki.

ExtLib Compatibility

If your project currently uses ExtLib, most likely you can just change -package extlib to -package batteries and add open Extlibcompat to the top of any extlib-using modules. Batteries' modules are all named BatFoo to differentiate them from extlib's modules, so one can use Batteries and ExtLib in the same project.

COMPATIBILITY NOTE: If you're using ExtLib's Unzip module, it does not have a corresponding module in batteries at the moment.

Extending Batteries

See the guidelines wiki page.

If you use emacs, the file batteries_dev.el has extra highlighting to support writing quicktests.