caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml 4.02.0
@ 2014-08-29 15:57 Damien Doligez
       [not found] ` <CAMu2m2J0bn7fwETZTuYWg=6O2YL4Q77N1h5vJteRbLsroCeTWw@mail.gmail.com>
  0 siblings, 1 reply; 2+ messages in thread
From: Damien Doligez @ 2014-08-29 15:57 UTC (permalink / raw)
  To: caml users, caml announce

Dear OCaml users,

We have the pleasure of celebrating the anniversary of the
last concert of the Beatles by announcing the release of OCaml
version 4.02.0.

It is available here: < http://caml.inria.fr/download.en.html >

Starting with this release, we stop providing binary packages
on Unix-like machines (Linux, MacOS). You are invited to go
to http://ocaml.org and use the OPAM package manager for all
your installation needs. Many thanks to the packagers who
contribute to the OPAM repository.

Many thanks also to everyone who reported bugs and proposed
new features through the BTS and GitHub.

Happy hacking,

-- Damien Doligez for the OCaml team.


OCaml 4.02.0:
-------------

(Changes that can break existing programs are marked with a "*")

Language features:
- Attributes and extension nodes
  (Alain Frisch)
- Generative functors (PR#5905)
  (Jacques Garrigue)
- Module aliases
  (Jacques Garrigue)
* Alternative syntax for string literals {id|...|id} (can break comments)
  (Alain Frisch)
- Separation between read-only strings (type string) and read-write byte
  sequences (type bytes). Activated by command-line option -safe-string.
  (Damien Doligez)
- PR#6318: Exception cases in pattern matching
  (Jeremy Yallop, backend by Alain Frisch)
- PR#5584: Extensible open datatypes
  (Leo White)

Build system for the OCaml distribution:
- Use -bin-annot when building.
- Use GNU make instead of portable makefiles.
- Updated build instructions for 32-bit Mac OS X on Intel hardware.

Shedding weight:
* Removed Camlp4 from the distribution, now available as third-party software.
* Removed Labltk from the distribution, now available as a third-party library.

Type system:
* PR#6235: Keep typing of pattern cases independent in principal mode
  (i.e. information from previous cases is no longer used when typing
  patterns; cf. 'PR#6235' in testsuite/test/typing-warnings/records.ml)
  (Jacques Garrigue)
- Allow opening a first-class module or applying a generative functor
  in the body of a generative functor. Allow it also in the body of
  an applicative functor if no types are created
  (Jacques Garrigue, suggestion by Leo White)
* Module aliases are now typed in a specific way, which remembers their
  identity. In particular this changes the signature inferred by
  "module type of"
  (Jacques Garrigue, feedback from Leo White, Mark Shinwell and Nick Chapman)
- PR#6331: Slight change in the criterion to distinguish private
  abbreviations and private row types: create a private abbreviation for
  closed objects and fixed polymorphic variants.
  (Jacques Garrigue)
* PR#6333: Compare first class module types structurally rather than
  nominally. Value subtyping allows module subtyping as long as the internal
  representation is unchanged.
  (Jacques Garrigue)

Compilers:
- More aggressive constant propagation, including float and
  int32/int64/nativeint arithmetic.  Constant propagation for floats
  can be turned off with option -no-float-const-prop, for codes that
  change FP rounding modes at run-time.
  (Xavier Leroy)
- New back-end optimization pass: common subexpression elimination (CSE).
  (Reuses results of previous computations instead of recomputing them.)
  (Xavier Leroy)
- New back-end optimization pass: dead code elimination.
  (Removes arithmetic and load instructions whose results are unused.)
  (Xavier Leroy)
- PR#6269: Optimization of sequences of string patterns
  (Benoît Vaugon and Luc Maranget)
- Experimental native code generator for AArch64 (ARM 64 bits)
  (Xavier Leroy)
- PR#6042: Optimization of integer division and modulus by constant divisors
  (Xavier Leroy and Phil Denys)
- Add "-open" command line flag for opening a single module before typing
  (Leo White, Mark Shinwell and Nick Chapman)
* "-o" now sets module name to the output file name up to the first "."
  (it also applies when "-o" is not given, i.e. the module name is then
   the input file name up to the first ".")
  (Leo White, Mark Shinwell and Nick Chapman)
* PR#5779: better sharing of structured constants
  (Alain Frisch)
- PR#5817: new flag to keep locations in cmi files
  (Alain Frisch)
- PR#5854: issue warning 3 when referring to a value marked with
  the [@@ocaml.deprecated] attribute
  (Alain Frisch, suggestion by Pierre-Marie Pédrot)
- PR#6017: a new format implementation based on GADTs
  (Benoît Vaugon and Gabriel Scherer)
* PR#6203: Constant exception constructors no longer allocate
  (Alain Frisch)
- PR#6260: avoid unnecessary boxing in let
  (Vladimir Brankov)
- PR#6345: Better compilation of optional arguments with default values
  (Alain Frisch, review by Jacques Garrigue)
- PR#6389: ocamlopt -opaque option for incremental native compilation
  (Pierre Chambart, Gabriel Scherer)

Toplevel interactive system:
- PR#5377: New "#show_*" directives
  (ygrek, Jacques Garrigue and Alain Frisch)

Runtime system:
- New configure option "-no-naked-pointers" to improve performance by
  avoiding page table tests during block darkening and the marking phase
  of the major GC.  In this mode, all out-of-heap pointers must point at
  things that look like OCaml values: in particular they must have a valid
  header.  The colour of said headers should be black.
  (Mark Shinwell, reviews by Damien Doligez and Xavier Leroy)
- Fixed bug in native code version of [caml_raise_with_string] that could
  potentially lead to heap corruption.
  (Mark Shinwell)
- Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with
  [Val_unit] rather than zero.
  (Mark Shinwell)
- Fixed a major performance problem on large heaps (~1GB) by making heap
  increments proportional to heap size by default
  (Damien Doligez)
- PR#4765: Structural equality treats exception specifically
  (Alain Frisch)
- PR#5009: efficient comparison/indexing of exceptions
  (Alain Frisch, request by Markus Mottl)
- PR#6075: avoid using unsafe C library functions (strcpy, strcat, sprintf)
  (Xavier Leroy, reports from user 'jfc' and Anil Madhavapeddy)
- An ISO C99-compliant C compiler and standard library is now assumed.
  (Plus special exceptions for MSVC.)  In particular, emulation code for
  64-bit integer arithmetic was removed, the C compiler must support a
  64-bit integer type.
  (Xavier Leroy)

Standard library:
* Add new modules Bytes and BytesLabels for mutable byte sequences.
  (Damien Doligez)
- PR#4986: add List.sort_uniq and Set.of_list
  (Alain Frisch)
- PR#5935: a faster version of "raise" which does not maintain the backtrace
  (Alain Frisch)
- PR#6146: support "Unix.kill pid Sys.sigkill" under Windows
  (Romain Bardou and Alain Frisch)
- PR#6148: speed improvement for Buffer
  (John Whitington)
- PR#6180: efficient creation of uninitialized float arrays
  (Alain Frisch, request by Markus Mottl)
- PR#6355: Improve documentation regarding finalisers and multithreading
  (Daniel Bünzli, Mark Shinwell)
- Trigger warning 3 for all values marked as deprecated in the documentation.
  (Damien Doligez)

OCamldoc:
- PR#6257: handle full doc comments for variant constructors and
  record fields
  (Maxence Guesdon, request by ygrek)
- PR#6274: allow doc comments on object types
  (Thomas Refis)
- PR#6310: fix ocamldoc's subscript/superscript CSS font size
  (Anil Madhavapeddy)
- PR#6425: fix generation of man pages
  (Maxence Guesdon, report by Anil Madhavapeddy)

Bug fixes:
- PR#2719: wrong scheduling of bound checks within a
  try...with Invalid_argument -> _ ...  (Xavier Leroy)
- PR#4719: Sys.executable_name wrong if executable name contains dots (Windows)
  (Alain Frisch, report by Bart Jacobs)
- PR#5406 ocamlbuild: "tag 'package' does not expect a parameter"
  (Gabriel Scherer)
- PR#5598, PR#6165: Alterations to handling of \013 in source files
  breaking other tools
  (David Allsopp and Damien Doligez)
- PR#5820: Fix camlp4 lexer roll back problem
  (Hongbo Zhang)
- PR#5946: CAMLprim taking (void) as argument
  (Benoît Vaugon)
- PR#6038: on x86-32, enforce 16-byte stack alignment for compatibility
  with recent GCC and Clang.  Win32/MSVC keeps 4-byte stack alignment.
  (Xavier Leroy)
- PR#6062: Fix a 4.01 camlp4 DELETE_RULE regression caused by commit 13047
  (Hongbo Zhang, report by Christophe Troestler)
- PR#6173: Typing error message is worse than before
  (Jacques Garrigue and John Whitington)
- PR#6174: OCaml compiler loops on an example using GADTs (-rectypes case)
  (Jacques Garrigue and Grégoire Henry, report by Chantal Keller)
- PR#6175: open! was not suppored by camlp4
  (Hongbo Zhang)
- PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate
  (Jacques-Pascal Deplaix)
- PR#6194: Incorrect unused warning with first-class modules in patterns
  (Jacques Garrigue, report by Markus Mottl and Leo White)
- PR#6211: in toplevel interactive use, bad interaction between uncaught
  exceptions and multiple bindings of the form "let x = a let y = b;;".
  (Xavier Leroy)
- PR#6216: inlining of GADT matches generates invalid assembly
  (Xavier Leroy and Alain Frisch, report by Mark Shinwell)
- PR#6232: Don't use [mktemp] on platforms where [mkstemp] is available
  (Stéphane Glondu, Mark Shinwell)
- PR#6233: out-of-bounds exceptions lose their locations on ARM, PowerPC
  (Jacques-Henri Jourdan and Xavier Leroy,
   report and testing by Stéphane Glondu)
- PR#6235: Issue with type information flowing through a variant pattern
  (Jacques Garrigue, report by Hongbo Zhang)
- PR#6239: sometimes wrong stack alignment when raising exceptions
           in -g mode with backtraces active
  (Xavier Leroy, report by Yaron Minsky)
- PR#6240: Fail to expand module type abbreviation during substyping
  (Jacques Garrigue, report by Leo White)
- PR#6241: Assumed inequality between paths involving functor arguments
  (Jacques Garrigue, report by Jeremy Yallop)
- PR#6243: Make "ocamlopt -g" more resistant to ill-formed locations
  (Xavier Leroy, report by Pierre-Marie Pédrot)
- PR#6262: equality of first-class modules take module aliases into account
  (Alain Frisch and Leo White)
- PR#6268: -DMODEL_$(MODEL) not passed when building asmrun/arm.p.o
  (Peter Michael Green)
- PR#6273: fix Sys.file_exists on large files (Win32)
  (Christoph Bauer)
- PR#6275: Soundness bug related to type constraints
  (Jacques Garrigue, report by Leo White)
- PR#6293: Assert_failure with invalid package type
  (Jacques Garrigue, report by Elnatan Reisner)
- PR#6300: ocamlbuild -use-ocamlfind conflicts with -ocamlc
  (Gabriel Scherer)
- PR#6302: bytecode debug information re-read from filesystem every time
  (Jacques-Henri Jourdan)
- PR#6307: Behavior of 'module type of' w.r.t. module aliases
  (Jacques Garrigue, report by Alain Frisch)
- PR#6332: Unix.open_process fails to pass empty arguments under Windows
  (Damien Doligez, report Virgile Prevosto)
- PR#6346: Build failure with latest version of xcode on OSX
  (Jérémie Dimino)
- PR#6348: Unification failure for GADT when original definition is hidden
  (Leo White and Jacques Garrigue, report by Jeremy Yallop)
- PR#6352: Automatic removal of optional arguments and sequencing
  (Jacques Garrigue and Alain Frisch)
- PR#6361: Hashtbl.hash not terminating on some lazy values w/ recursive types
  (Xavier Leroy, report by Leo White)
- PR#6383: Exception Not_found when using object type in absent module
  (Jacques Garrigue, report by Sébastien Briais)
- PR#6384: Uncaught Not_found exception with a hidden .cmi file
  (Leo White)
- PR#6385: wrong allocation of large closures by the bytecode interpreter
  (Xavier Leroy, report by Stephen Dolan)
- PR#6394: Assertion failed in Typecore.expand_path
  (Alain Frisch and Jacques Garrigue)
- PR#6405: unsound interaction of -rectypes and GADTs
  (Jacques Garrigue, report by Gabriel Scherer and Benoît Vaugon)
- PR#6408: Optional arguments given as ~?arg instead of ?arg in message
  (Michael O'Connor)
- PR#6411: missing libgcc_s_sjlj-1.dll in mingw (add -static-libgcc)
  (Jun Furuse and Alain Frisch, Jonathan Protzenko and Adrien Nader)
- PR#6436: Typos in @deprecated text in stdlib/arrayLabels.mli
  (John Whitington)
- PR#6439: Don't use the deprecated [getpagesize] function
  (John Whitington, Mark Shinwell)
- PR#6441: undetected tail-call in some mutually-recursive functions
  (many arguments, and mutual block mixes functions and non-functions)
  (Stefan Holdermans, review by Xavier Leroy)
- PR#6443: ocaml segfault when List.fold_left is traced then executed
  (Jacques Garrigue, report by user 'Reventlov')
- PR#6451: some bugs in untypeast.ml
  (Jun Furuse, review by Alain Frisch)
- PR#6460: runtime assertion failure with large [| e1;...eN |]
  float array expressions
  (Leo White)
- PR#6463: -dtypedtree fails on class fields
  (Leo White)
- PR#6469: invalid -dsource printing of "external _pipe = ...", "Pervasives.(!)"
  (Gabriel Scherer and Damien Doligez, user 'ngunn')
- PR#6482: ocamlbuild fails when _tags file in unhygienic directory
  (Gabriel Scherer)
- PR#6502: ocamlbuild spurious warning on "use_menhir" tag
  (Xavier Leroy)
- PR#6505: Missed Type-error leads to a segfault upon record access
  (Jacques Garrigue, Jeremy Yallop, report by Christoph Höger)
- PR#6507: crash on AArch64 resulting from incorrect setting of
  [caml_bottom_of_stack].  (Richard Jones, Mark Shinwell)
- PR#6509: add -linkall flag to ocamlcommon.cma
  (Frédéric Bour)
- PR#6513: Fatal error Ctype.Unify(_) in functor type
- PR#6523: failure upon character bigarray access, and unnecessary change
  in comparison ordering (Jeremy Yallop, Mark Shinwell)
- bound-checking bug in caml_string_{get,set}{16,32,64}
  (Pierre Chambart and Gabriel Scherer, report by Nicolas Trangez)
- sometimes wrong stack alignment at out-of-bounds array access
  (Gabriel Scherer and Xavier Leroy, report by Pierre Chambart)

Features wishes:
- PR#4243: make the Makefiles parallelizable
  (Grégoire Henry and Damien Doligez)
- PR#4323: have "of_string" in Num and Big_int work with binary and
           hex representations
  (Zoe Paraskevopoulou, review by Gabriel Scherer)
- PR#4771: Clarify documentation of Dynlink.allow_only
  (Damien Doligez, report by David Allsopp)
- PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where'
  (Jun Furuse and Hongbo Zhang, report by Dmitry Grebeniuk)
- PR#5201: ocamlbuild: add --norc to the bash invocation to help performances
  (user 'daweil')
- PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types
  (Hongbo Zhang)
- PR#5808: allow simple patterns, not just identifiers, in "let p : t = ..."
  (Alain Frisch)
- PR#5851: warn when -r is disabled because no _tags file is present
  (Gabriel Scherer)
- PR#5899: a programmer-friendly access to backtrace information
  (Jacques-Henri Jourdan and Gabriel Scherer)
- PR#6000 comment 9644: add a warning for non-principal coercions to format
  (Jacques Garrigue, report by Damien Doligez)
- PR#6054: add support for M.[ foo ], M.[| foo |] etc.
  (Kaustuv Chaudhuri)
- PR#6064: GADT representation for Bigarray.kind + CAML_BA_CHAR runtime kind
  (Jeremy Yallop, review by Gabriel Scherer)
- PR#6071: Add a -noinit option to the toplevel
  (David Sheets)
- PR#6087: ocamlbuild, improve _tags parsing of escaped newlines
  (Gabriel Scherer, request by Daniel Bünzli)
- PR#6109: Typos in ocamlbuild error messages
  (Gabriel Kerneis)
- PR#6116: more efficient implementation of Digest.to_hex
  (ygrek)
- PR#6142: add cmt file support to ocamlobjinfo
  (Anil Madhavapeddy)
- PR#6166: document -ocamldoc option of ocamlbuild
  (Xavier Clerc)
- PR#6182: better message for virtual objects and class types
  (Leo White, Stephen Dolan)
- PR#6183: enhanced documentation for 'Unix.shutdown_connection'
  (Anil Madhavapeddy, report by Jun Furuse)
- PR#6187: ocamlbuild: warn when using -plugin-tag(s) without myocamlbuild.ml
  (Jacques-Pascal Deplaix)
- PR#6246: allow wildcard _ as for-loop index
  (Alain Frisch, request by ygrek)
- PR#6267: more information printed by "bt" command of ocamldebug
  (Josh Watzman)
- PR#6270: remove need for -I directives to ocamldebug in common case
  (Josh Watzman, review by Xavier Clerc and Alain Frisch)
- PR#6311: Improve signature mismatch error messages
  (Alain Frisch, suggestion by Daniel Bünzli)
- PR#6358: obey DESTDIR in install targets
  (Gabriel Scherer, request by François Berenger)
- PR#6388, PR#6424: more parsetree correctness checks for -ppx users
  (Alain Frisch, request by Peter Zotov and Jun Furuse)
- PR#6406: Expose OCaml version in C headers
  (Peter Zotov and Romain Calascibetta)
- PR#6446: improve "unused declaration" warnings wrt. name shadowing
  (Alain Frisch)
- PR#6495: ocamlbuild tags 'safe_string', 'unsafe_string'
  (Anil Madhavapeddy)
- PR#6497: pass context information to -ppx preprocessors
  (Peter Zotov, Alain Frisch)
- ocamllex: user-definable refill action
  (Frédéric Bour, review by Gabriel Scherer and Luc Maranget)
- shorten syntax for functor signatures: "functor (M1:S1) (M2:S2) .. -> .."
  (Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Scherer)
- make ocamldebug -I auto-detection work with ocamlbuild
  (Josh Watzman)


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] [Caml-announce] OCaml 4.02.0
       [not found]   ` <CAMu2m2KYPaVUH013mJFxv_GPkODJjEnkPyUDFYGKyzO-8LeDvw@mail.gmail.com>
@ 2014-09-01 12:43     ` Ashish Agarwal
  0 siblings, 0 replies; 2+ messages in thread
From: Ashish Agarwal @ 2014-09-01 12:43 UTC (permalink / raw)
  To: caml users, caml announce

[-- Attachment #1: Type: text/plain, Size: 526 bytes --]

>
> On Fri, Aug 29, 2014 at 3:53 PM, Ashish Agarwal <agarwal1975@gmail.com>
> wrote:
>
>> The ocaml.org page is also posted:
>> http://ocaml.org/releases/4.02.0.html
>>
>>
>>
>> On Fri, Aug 29, 2014 at 11:57 AM, Damien Doligez <damien.doligez@inria.fr
>> > wrote:
>>
>>> Dear OCaml users,
>>>
>>> We have the pleasure of celebrating the anniversary of the
>>> last concert of the Beatles by announcing the release of OCaml
>>> version 4.02.0.
>>>
>>> It is available here: < http://caml.inria.fr/download.en.html > ...
>>>
>>

[-- Attachment #2: Type: text/html, Size: 1625 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-09-01 12:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-29 15:57 [Caml-list] OCaml 4.02.0 Damien Doligez
     [not found] ` <CAMu2m2J0bn7fwETZTuYWg=6O2YL4Q77N1h5vJteRbLsroCeTWw@mail.gmail.com>
     [not found]   ` <CAMu2m2KYPaVUH013mJFxv_GPkODJjEnkPyUDFYGKyzO-8LeDvw@mail.gmail.com>
2014-09-01 12:43     ` [Caml-list] [Caml-announce] " Ashish Agarwal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).