Go to file
Alain Frisch 0f6f367ad4 Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks
of size 2, with tag = Object_tag, the first field being the pointer to the string, and second one being a unique id, generated
from the same sequence as for object values.  Special case for predefined exceptions, represented with a negative id.

The unique id generator is moved from camlinternalOO to the C runtime system.

Also fix some bugs.



git-svn-id: http://caml.inria.fr/svn/ocaml/branches/raise_variants@14239 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-10-23 14:28:31 +00:00
asmcomp Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
asmrun Fix Out_of_memory/Stack_overflow. 2013-10-18 15:14:20 +00:00
boot Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
build build: skip $(IFLEXDIR) in mk_shell_and_ocamlbuild_config.sh. 2013-09-21 10:24:34 +00:00
bytecomp Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
byterun Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
camlp4 bootstrap camlp4 2013-10-01 01:32:58 +00:00
compilerlibs Install compiler internals (as libraries + compiled interfaces + start modules) 2012-05-17 16:04:13 +00:00
config build: typo on config/Makefile.mingw64, msvc and msvc64. 2013-09-22 22:33:23 +00:00
debugger Keep location and attributes in type, label and constructor declarations. Deprecated warning when a deprecated type or constructor is referenced. 2013-09-27 10:54:55 +00:00
driver build: replace ocamlcomp*.sh. 2013-09-20 00:22:38 +00:00
emacs Merge branch 4.01 from branching point to 4.01.0+rc1 2013-09-04 15:12:37 +00:00
experimental Get rid of recursion closing functions, being more explicit on the recursion does not hurt. 2013-09-26 08:49:46 +00:00
lex Typo (#6190). 2013-09-25 07:16:21 +00:00
man #5817: new compiler flag (-keep-locs) to keep location in cmi files. 2013-09-17 12:45:05 +00:00
ocamlbuild build: replace ocamlcomp*.sh. 2013-09-20 00:22:38 +00:00
ocamldoc #6195: use ocamlcommon.cma to link ocamldoc, instead of explicit list of compiler modules. 2013-10-02 14:23:10 +00:00
otherlibs Rename raise_nostack -> raise_notrace. Expose it in Pervasives. 2013-10-14 13:52:14 +00:00
parsing Allow floating attribute in the toplevel. Also allow the empty structure (;;) as a toplevel phrase. 2013-10-04 07:54:31 +00:00
stdlib Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
testsuite Fix testsuite. 2013-10-15 13:12:52 +00:00
tools Keep attributes on module declarations. 2013-09-27 17:05:39 +00:00
toplevel Change the representation of exception slots: instead of being represented as 'string ref', they are now blocks 2013-10-23 14:28:31 +00:00
typing #6205: add Hint before spellchecking suggestion. 2013-10-10 08:45:40 +00:00
utils #6203: change representation of exception values created with a constant constructor: the value is now equal to the exception slot. This avoids some allocation when the constructor is called and an extra indirection on matching against the constructor. 2013-10-18 13:00:58 +00:00
yacc yacc: "ocamlyacc$(EXE)" rule produced "ocamlyacc" (no trailing $(EXE)). 2013-02-25 03:01:26 +00:00
.depend Keep attributes on module declarations. 2013-09-27 17:05:39 +00:00
.ignore build: replace ocamlcomp*.sh. 2013-09-20 00:22:38 +00:00
.ocp-indent Adding an ocp-indent customization file for the project. 2013-09-11 14:13:58 +00:00
Changes Keep attributes on value declarations in .cmi files (but clear all the location fields, except if -keep-locs is used, of course). Use this to report a warning when a value marked as [@@deprecated] is referenced (#5854) 2013-09-26 15:24:11 +00:00
INSTALL Remove labltk from the distribution (will be available as a third-party library). 2013-09-09 09:32:00 +00:00
LICENSE merge changes from 3.12.0 to 3.12.1 2011-07-20 09:17:07 +00:00
Makefile Revert bad(?) commit. 2013-10-18 15:15:10 +00:00
Makefile.nt build: replace ocamlcomp*.sh. 2013-09-20 00:22:38 +00:00
README remove all $Id keywords 2012-10-15 17:50:56 +00:00
README.win32 Remove labltk from the distribution (will be available as a third-party library). 2013-09-09 09:32:00 +00:00
VERSION Merge branch 4.01 from 4.01.0+rc1 to 4.01.0 2013-09-12 15:21:52 +00:00
_tags use 'mark_tag_used' to solve all "unused tag" warnings in the distribution 2013-09-15 11:36:54 +00:00
configure build: don't use make's -C; it's not available everywhere. 2013-09-21 12:02:49 +00:00
myocamlbuild.ml build: replace ocamlcomp*.sh. 2013-09-20 00:22:38 +00:00
myocamlbuild_config.mli Remove labltk from the distribution (will be available as a third-party library). 2013-09-09 09:32:00 +00:00

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 used and maintained by the core OCaml team):

    AMD64 (Opteron)    Linux, MacOS X, MS Windows
    IA32 (Pentium)     Linux, FreeBSD, MacOS X, MS Windows
    PowerPC            Linux, MacOS X
    ARM                Linux

Tier 2 (maintained when possible, with help from users):

    AMD64              FreeBSD, OpenBSD
    IA32 (Pentium)     NetBSD, OpenBSD, Solaris 9
    PowerPC            NetBSD
    SPARC              Solaris, Linux, NetBSD

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

Before the introduction of objects, OCaml was known as Caml Special
Light. OCaml is almost upwards compatible with Caml Special Light,
except for a few additional reserved keywords that have forced some
renaming of standard library functions.

CONTENTS:

  Changes               what's new with each release
  INSTALL               instructions for installation
  LICENSE               license and copyright notice
  Makefile              main Makefile
  README                this file
  README.win32          infos on the MS Windows ports of OCaml
  asmcomp/              native-code compiler and linker
  asmrun/               native-code runtime library
  boot/                 bootstrap compiler
  bytecomp/             bytecode compiler and linker
  byterun/              bytecode interpreter and runtime system
  camlp4/               the Camlp4 preprocessor
  config/               autoconfiguration stuff
  debugger/             source-level replay debugger
  driver/               driver code for the compilers
  emacs/                OCaml editing mode and debugger interface for GNU Emacs
  lex/                  lexer generator
  maccaml/              the Macintosh GUI
  ocamldoc/             documentation generator
  otherlibs/            several external libraries
  parsing/              syntax analysis
  stdlib/               standard library
  tools/                various utilities
  toplevel/             interactive system
  typing/               typechecking
  utils/                utility libraries
  yacc/                 parser generator

COPYRIGHT:

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 Institut National de Recherche en
Informatique et en Automatique (INRIA) and distributed under the
conditions stated in file LICENSE.

INSTALLATION:

See the file INSTALL for installation instructions on Unix, Linux and
MacOS X machines.  For MS Windows, see README.win32.

DOCUMENTATION:

The OCaml manual is distributed in HTML, PDF, Postscript, DVI, and
Emacs Info files.  It is available on the World Wide Web, at

        http://caml.inria.fr/

AVAILABILITY:

The complete OCaml distribution can be accessed at

        http://caml.inria.fr/

KEEPING IN TOUCH WITH THE CAML COMMUNITY:

There exists a mailing list of users of the OCaml implementations
developed at INRIA. The purpose of this list is to share
experience, exchange ideas (and even code), and report on applications
of the OCaml language. Messages can be written in English or in
French. The list has more than 1000 subscribers.

Messages to the list should be sent to:

              caml-list@inria.fr

You can subscribe to this list via the Web interface at

        https://sympa-roc.inria.fr/wws/info/caml-list

Archives of the list are available on the Web site above.

The Usenet news groups comp.lang.ml and comp.lang.functional
also contains discussions about the ML family of programming languages,
including OCaml.

BUG REPORTS AND USER FEEDBACK:

Please report bugs using the Web interface to the bug-tracking system
at http://caml.inria.fr/bin/caml-bugs

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).

You can also contact the implementors directly at caml@inria.fr.