Skip to content
The core OCaml system: compilers, runtime system, base libraries
OCaml C Shell Standard ML Makefile Assembly Other
Branch: trunk
Clone or download
Latest commit b807931 Feb 14, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
asmcomp -dno-locations: hide source locations (and debug events) from IR dumps Jan 9, 2020
boot bootstrap Jan 28, 2020
build-aux Fixing typos in various files (#2246) Feb 13, 2019
bytecomp Memprof: get precise callstacks when memory is allocated directly in … Jan 15, 2020
compilerlibs typedecl_separability: interfaces and basic definitions, implementati… Jan 28, 2020
debugger compilerlibs: expose parsers for 'Longident.t's Jan 9, 2020
driver Merge pull request #9021 from Octachron/longident_parser Jan 10, 2020
file_formats Cm[ox]_format: document fields that are stored in reverse order. Jan 31, 2020
flexdll @ 7f565ef Update FlexDLL to 0.37 Oct 25, 2017
lambda -dno-locations: hide source locations (and debug events) from IR dumps Jan 9, 2020
lex Quoted extensions in comments, ocamllex and ocamlyacc (#9166) Feb 3, 2020
man better documentation for the best-fit allocation policy Dec 10, 2019
manual manual: reference, split expression grammar Feb 12, 2020
middle_end -dno-locations: hide source locations (and debug events) from IR dumps Jan 9, 2020
ocamldoc Fix formatting of closing brace in records Nov 21, 2019
ocamltest ocamltest: draft of reference manual (tutorial section) Nov 28, 2019
otherlibs Remove INLINE macro from st_posix.h Feb 13, 2020
parsing Quoted extensions in comments, ocamllex and ocamlyacc (#9166) Feb 3, 2020
runtime Merge branch 'trunk' into faster-Weak.blit Feb 14, 2020
stdlib Merge pull request #9270 from gadmm/doc_stack_overflow Jan 29, 2020
testsuite Merge pull request #9292 from lpw25/fix-best-fit-32-bit Feb 11, 2020
tools Don't built ocamltest on release builds Feb 13, 2020
toplevel compilerlibs: expose parsers for 'Longident.t's Jan 9, 2020
typing Merge pull request #9274 from Octachron/unload_module_lookup Jan 31, 2020
utils -dno-locations: hide source locations (and debug events) from IR dumps Jan 9, 2020
yacc Quoted extensions in comments, ocamllex and ocamlyacc (#9166) Feb 3, 2020
.depend make depend Feb 4, 2020
.depend.menhir add a .depend.menhir file for menhir parser dependencies Sep 1, 2018
.gitattributes More compatibility macros to Caml_state (#9202) Dec 26, 2019
.gitignore debugger: rename parser and lexer modules Jan 6, 2020
.gitmodules clean up whitespace and cut long lines Feb 17, 2016
.mailmap adding Jeremy Yallop to the list of Approvers Mar 25, 2019
.ocp-indent Adding an ocp-indent customization file for the project. Sep 11, 2013
.travis.yml Add --disable-stdlib-manpages to configure Sep 27, 2019
BOOTSTRAP.adoc Merge the asmrun and byterun directories into the runtime directory Jun 28, 2018
CONTRIBUTING.md Optimization contributions should come with numbers Oct 1, 2019
Changes Merge branch 'trunk' into faster-Weak.blit Feb 14, 2020
HACKING.adoc HACKING.adoc: update opam instructions for testing. Feb 11, 2020
INSTALL.adoc Let make's default target build the compiler Sep 30, 2019
LICENSE Update the LICENSE file to reflect new licensing conditions (LGPLv2.1) May 14, 2016
Makefile Add --disable-ocamltest Jan 16, 2020
Makefile.best_binaries nicer style in Makefile.best_binaries Oct 12, 2019
Makefile.common.in Build system: share rules to compile C files (#8930) Sep 11, 2019
Makefile.config.in Add --disable-ocamltest Jan 16, 2020
Makefile.dev Suppress huge output from make when cleaning Aug 28, 2019
Makefile.menhir Makefile.menhir enhancement Jan 10, 2019
Makefile.tools Remove the unused BYTECODE_ONLY and NATIVECODE_ONLY make variables Sep 30, 2019
News Fixing misspellings May 21, 2019
README.adoc README: new badges for 4.10 and 4.09 Nov 9, 2019
README.win32.adoc Ensure Makefile.config gets Windows-style prefix Nov 25, 2019
VERSION first commit after branching 4.10 Oct 18, 2019
aclocal.m4 Add attribute(align()) detection and fix XLC build. Nov 25, 2019
appveyor.yml Split the AppVeyor build into two jobs Sep 7, 2018
autogen Allow Git config options to be passed to configure Oct 5, 2019
configure Merge pull request #9250 from dra27/disable-ocamltest Feb 14, 2020
configure.ac Merge pull request #9250 from dra27/disable-ocamltest Feb 14, 2020
dune dune: add Typedecl_separability Feb 12, 2020
dune-project Provide a way to build the bytecode compiler using Dune (#2093) Oct 10, 2018
ocaml-variants.opam opam: bump to 4.11 Dec 11, 2019

README.adoc

Branch trunk Branch 4.10 Branch 4.09 Branch 4.08 Branch 4.07 Branch 4.06 Branch 4.05

TravisCI Build Status (trunk branch) AppVeyor Build Status (trunk branch)

TravisCI Build Status (4.10 branch) AppVeyor Build Status (4.10 branch)

TravisCI Build Status (4.09 branch) AppVeyor Build Status (4.09 branch)

TravisCI Build Status (4.08 branch) AppVeyor Build Status (4.08 branch)

TravisCI Build Status (4.07 branch) AppVeyor Build Status (4.07 branch)

TravisCI Build Status (4.06 branch) AppVeyor Build Status (4.06 branch)

TravisCI Build Status (4.05 branch) AppVeyor Build Status (4.05 branch)

README

Overview

OCaml is an implementation of the ML language, based on the Caml Light dialect extended with a complete class-based object system and a powerful module system in the style of Standard ML.

OCaml comprises two compilers. One generates bytecode which is then interpreted by a C program. This compiler runs quickly, generates compact code with moderate memory requirements, and is portable to essentially any 32 or 64 bit Unix platform. Performance of generated programs is quite good for a bytecoded implementation. This compiler can be used either as a standalone, batch-oriented compiler that produces standalone programs, or as an interactive, toplevel-based system.

The other compiler generates high-performance native code for a number of processors. Compilation takes longer and generates bigger code, but the generated programs deliver excellent performance, while retaining the moderate memory requirements of the bytecode compiler. The native-code compiler currently runs on the following platforms:

Tier 1 (actively maintained) Tier 2 (maintained when possible)

x86 64 bits

Linux, macOS, Windows, FreeBSD

NetBSD, OpenBSD

x86 32 bits

Linux, Windows

FreeBSD, NetBSD, OpenBSD

ARM 64 bits

Linux

FreeBSD

ARM 32 bits

Linux

FreeBSD, NetBSD, OpenBSD

Power 64 bits

Linux

Power 32 bits

Linux

IBM Z (s390x)

Linux

Other operating systems for the processors above have not been tested, but the compiler may work under other operating systems with little work.

All files marked "Copyright INRIA" in this distribution are copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Institut National de Recherche en Informatique et en Automatique (INRIA) and distributed under the conditions stated in file LICENSE.

Installation

See the file INSTALL.adoc for installation instructions on machines running Unix, Linux, OS X and Cygwin. For native Microsoft Windows, see README.win32.adoc.

Documentation

The OCaml manual is distributed in HTML, PDF, and Emacs Info files. It is available at

Availability

The complete OCaml distribution can be accessed at

Keeping in Touch with the Caml Community

The OCaml mailing list is the longest-running forum for OCaml users. You can email it at

You can subscribe and access list archives via the Web interface at

You can also access a newer discussion forum at

There also exist other mailing lists, chat channels, and various other forums around the internet for getting in touch with the OCaml and ML family language community. These can be accessed at

In particular, the IRC channel #ocaml on Freenode has a long history and welcomes questions.

Bug Reports and User Feedback

Please report bugs using the issue tracker at https://github.com/ocaml/ocaml/issues

To be effective, bug reports should include a complete program (preferably small) that exhibits the unexpected behavior, and the configuration you are using (machine type, etc).

For information on contributing to OCaml, see HACKING.adoc and CONTRIBUTING.md.

You can’t perform that action at this time.