caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml release 4.02.0+beta1
@ 2014-05-21 12:13 Damien Doligez
  2014-05-21 12:47 ` Andreas Rossberg
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Damien Doligez @ 2014-05-21 12:13 UTC (permalink / raw)
  To: caml users, caml announce

Dear OCaml users,

The release of OCaml version 4.02.0 will take place around the beginning of July. We have created a beta version to get your feedback. Please download the sources, compile, install, and test your favourite software with it. Then let us know what doesn't work by posting bugs to the BTS.

This is a major release with several big changes, so it is particurarly important for us to get feedback from you.

Happy hacking,

-- Damien Doligez for the OCaml team.



sources and documentation of 4.02.0+beta1:
  http://caml.inria.fr/pub/distrib/ocaml-4.02/

Bug-tracking system (BTS):
  http://caml.inria.fr/mantis/my_view_page.php



OCaml 4.02.0+beta1:
-------------------

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

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

Build system for the OCaml distribution:
- Use -bin-annot when building.
- Use GNU make instead of portable makefiles.

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:
* 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)
- 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
* Module aliases are now typed in a specific way, which remembers their
  identity. In particular this changes the signature inferred by
  "module type of"
- 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.
* PR#6333: Compare first class module types structurally rather than
  nominally. Value subtyping allows module subtyping as long as the internal
  representation is unchanged.

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.
- New back-end optimization pass: common subexpression elimination (CSE).
  (Reuses results of previous computations instead of recomputing them.)
- New back-end optimization pass: dead code elimination.
  (Removes arithmetic and load instructions whose results are unused.)
- PR#6269 Optimization of string matching (patch by Benoit Vaugon
  and Luc Maranget)
- Experimental native code generator for AArch64 (ARM 64 bits)
- Optimization of integer division and modulus by constant divisors
  (feature wish PR#6042)
- Add "-open" command line flag for opening a single module before typing
* "-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 ".")
* PR#5779: better sharing of structured constants
- PR#6182: better message for virtual objects and class types
  (Leo P. White, Stephen Dolan)
- PR#5817: new flag to keep locations in cmi files
- PR#5854: issue warning 3 when referring to a value marked with
  the [@@deprecated] attribute
* PR#6203: Constant exception constructor no longer allocate
- PR#6311: Improve signature mismatch error messages
- PR#6345: Better compilation of optional arguments with default values
- PR#6260: Unnecessary boxing in let (patch by vbrankov)
- PR#6017: a new format implementation based on GADTs
  (initial patch by Benoît Vaugon, review by Gabriel Scherer)

Toplevel interactive system:
- PR#5377: New "#show_*" directives

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.
- Fixed bug in native code version of [caml_raise_with_string] that could
  potentially lead to heap corruption.
- Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with
  [Val_unit] rather than zero.
- Fixed a major performance problem on large heaps (~1GB) by making heap
  increments proportional to heap size by default
- PR#4765: Structural equality should treat exception specifically
- PR#5009: Extending exception tag blocks
- PR#6075: avoid using unsafe C library functions (strcpy, strcat, sprintf)
- 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.

Standard library:
* Add new modules: Bytes and BytesLabels.
- PR#4986: add List.sort_uniq and Set.of_list
- PR#5935: a faster version of "raise" which does not maintain the backtrace
- PR#6146: support "Unix.kill pid Sys.sigkill" under Windows
- PR#6148: speed improvement for Buffer (patch by John Whitington)
- PR#6180: efficient creation of uninitialized float arrays

OCamldoc:
- PR#6257: handle full doc comments for variant constructors and
           record fields
- PR#6310: fix ocamldoc's subscript/superscript CSS font size
           (patch by Anil Madhavapeddy)
- PR#6273: fix Sys.file_exists on large files (Win32)
           (patch by Christoph Bauer)

Bug fixes:
- PR#4719: Sys.executable_name wrong if executable name contains dots (Windows)
- PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where'
- PR#5201: ocamlbuild: add --norc to the bash invocation to help performances
- PR#5598: follow-up fix related to PR#6165
- PR#5820: Fix camlp4 lexer roll back problem
- PR#6062: Fix a regression bug caused by commit 13047
- PR#6109: Typos in ocamlbuild error messages
- PR#6116: more efficient implementation of Digest.to_hex (patch by ygrek)
- PR#6165: Alterations to handling of \013 in source files breaking other tools
- PR#6173: Typing error message is worse that before
- PR#6174: OCaml compiler loops on an example using GADTs (-rectypes case)
- PR#6175: Fix open!
- PR#6183: enhanced documentation for 'Unix.shutdown_connection'
- PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate
           (report and patch by Jacques-Pascal Deplaix)
- PR#6194: Incorrect unused warning with first-class modules in patterns
- PR#6216: inlining of GADT matches generates invalid assembly
- PR#6233: out-of-bounds exceptions lose their locations on ARM, PowerPC
- PR#6235: Issue with type information flowing through a variant pattern
- PR#6239: sometimes wrong stack alignment when raising exceptions
           in -g mode with backtraces active
- PR#6240: Fail to expand module type abbreviation during substyping
- PR#6241: Assumed inequality between paths involving functor arguments
- PR#6243: Make "ocamlopt -g" more resistant to ill-formed locations
- PR#6262: equality of first-class modules take module aliases into account
- PR#6267: more information printed by "bt" command of ocamldebug
- PR#6275: Soundness bug related to type constraints
- PR#6293: Assert_failure with invalid package type
- 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
- PR#6332: Unix.open_process fails to pass empty arguments under Windows
- PR#6346: Build failure with latest version of xcode on OSX
- PR#6348: Unification failure for GADT when original definition is hidden
- PR#6352: Automatic removal of optional arguments and sequencing
- PR#6361: Hashtbl.hash not terminating on some lazy values w/ recursive types
- PR#6383: Exception Not_found when using object type in absent module
- PR#6384: Uncaught Not_found exception with a hidden .cmi file
- PR#6385: wrong allocation of large closures by the bytecode interpreter
- PR#6394: Assertion failed in Typecore.expand_path
- PR#6405: unsound interaction of -rectypes and GADTs
- PR#6408: Optional arguments given as ~?arg instead of ?arg in message
- fix -dsource printing of "external _pipe = ..."
  (Gabriel Scherer)
- 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, review by Xavier Leroy, report by Pierre Chambart)

Features wishes:
- PR#4243: make the Makefiles parallelizable
- PR#4323: have "of_string" in Num and Big_int work with binary and
           hex representations (patch by Zoe Paraskevopoulou)
- PR#5547: Enable the "-use-ocamlfind" option by default
- PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types
- PR#5808: allow simple patterns, not just identifiers, in "let p : t = ..."
- PR#6000: add a warning for non-principal coercions to format
- PR#6054: add support for M.[ foo ], M.[| foo |] etc.
           (patch by Kaustuv Chaudhuri)
- PR#6064: GADT representation for Bigarray.kind + CAML_BA_CHAR runtime kind
- PR#6071: Add a -noinit option to the toplevel (patch by David Sheets)
- PR#6166: document -ocamldoc option of ocamlbuild
- PR#6187: ocamlbuild: warn when using -plugin-tag(s) without myocamlbuild.ml
  (patch by Jacques-Pascal Deplaix)
- PR#6246: allow wilcard _ as for-loop index
- PR#6270: remove need for -I directives to ocamldebug in common case
  (patch by Josh Watzman, review by Xavier Clerc and Alain Frisch)
- PR#6358: obey DESTDIR in install targets
  (Gabriel Scherer)
- PR#5899: a programmer-friendly access to backtrace information
  (Jacques-Henri Jourdan and Gabriel Scherer)
- ocamllex: user-definable refill action
  (patch by Frédéric Bour, review by Gabriel Scherer and Luc Maranget)
- shorten syntax for functor signatures: "functor (M1:S1) (M2:S2) .. -> .."
  (patches by Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Scherer)


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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 12:13 [Caml-list] OCaml release 4.02.0+beta1 Damien Doligez
@ 2014-05-21 12:47 ` Andreas Rossberg
  2014-05-21 13:25   ` Kakadu
  2014-05-25 20:34 ` Christophe Raffalli
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Andreas Rossberg @ 2014-05-21 12:47 UTC (permalink / raw)
  To: caml-list

On 21.05.2014 14:13, Damien Doligez wrote:
> OCaml 4.02.0+beta1:
> -------------------

> - Allow opening a first-class module [...]  in the body of
>    an applicative functor if no types are created

Is that a good idea? It seems that one property you want from modules 
(second or first class) is that you can always extend them safely to a 
subtype (as a form of weakening). That property would be violated by 
such a typing rule, because extending a first-class module with a type 
might now unexpectedly break client code which unpacks it inside a 
functor, and relies on that functor being applicative.

(Of course, 'open' and 'include' already violate this property, but they 
stick out enough and are known to be brittle.)

/Andreas


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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 12:47 ` Andreas Rossberg
@ 2014-05-21 13:25   ` Kakadu
  2014-05-22 11:13     ` Damien Doligez
  0 siblings, 1 reply; 10+ messages in thread
From: Kakadu @ 2014-05-21 13:25 UTC (permalink / raw)
  To: Caml List

Where should I look for labltk now?


Kakadu

On Wed, May 21, 2014 at 4:47 PM, Andreas Rossberg <rossberg@mpi-sws.org> wrote:
> On 21.05.2014 14:13, Damien Doligez wrote:
>>
>> OCaml 4.02.0+beta1:
>> -------------------
>
>
>> - Allow opening a first-class module [...]  in the body of
>>
>>    an applicative functor if no types are created
>
>
> Is that a good idea? It seems that one property you want from modules
> (second or first class) is that you can always extend them safely to a
> subtype (as a form of weakening). That property would be violated by such a
> typing rule, because extending a first-class module with a type might now
> unexpectedly break client code which unpacks it inside a functor, and relies
> on that functor being applicative.
>
> (Of course, 'open' and 'include' already violate this property, but they
> stick out enough and are known to be brittle.)
>
> /Andreas
>
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 13:25   ` Kakadu
@ 2014-05-22 11:13     ` Damien Doligez
  2014-05-22 14:30       ` Jacques Garrigue
  0 siblings, 1 reply; 10+ messages in thread
From: Damien Doligez @ 2014-05-22 11:13 UTC (permalink / raw)
  To: Kakadu; +Cc: Caml List

Hi,


On 2014-05-21, at 15:25, Kakadu wrote:
> Where should I look for labltk now?

It's on ocamlcore: https://forge.ocamlcore.org/projects/labltk/

-- Damien


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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-22 11:13     ` Damien Doligez
@ 2014-05-22 14:30       ` Jacques Garrigue
  0 siblings, 0 replies; 10+ messages in thread
From: Jacques Garrigue @ 2014-05-22 14:30 UTC (permalink / raw)
  To: Mailing List OCaml; +Cc: Kakadu

On 2014/05/22 20:13, Damien Doligez wrote:
> On 2014-05-21, at 15:25, Kakadu wrote:
>> Where should I look for labltk now?
> 
> It's on ocamlcore: https://forge.ocamlcore.org/projects/labltk/
> 
> -- Damien

You can now find a beta release of labltk there, in sync with ocaml 4.02 beta1.

	Jacques

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 12:13 [Caml-list] OCaml release 4.02.0+beta1 Damien Doligez
  2014-05-21 12:47 ` Andreas Rossberg
@ 2014-05-25 20:34 ` Christophe Raffalli
  2014-05-25 21:39   ` Dmitry Grebeniuk
  2014-06-18  9:55 ` Anil Madhavapeddy
  2014-06-28  7:58 ` Christophe Raffalli
  3 siblings, 1 reply; 10+ messages in thread
From: Christophe Raffalli @ 2014-05-25 20:34 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users, caml announce

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

On 14-05-21 14:13:38, Damien Doligez wrote:
> Dear OCaml users,
> 
> The release of OCaml version 4.02.0 will take place around the beginning of July. We have created a beta version to get your feedback. Please download the sources, compile, install, and test your favourite software with it. Then let us know what doesn't work by posting bugs to the BTS.

Hello,

Thanks for the work ...

> - PR#4765: Structural equality should treat exception specifically
> - PR#5009: Extending exception tag blocks

Does this also solve the problemn with marshalling of exception PR#4978 ? Or allow progrees on it.
It is painfull with parmap that I modified to handle exception ... without success.

Cheers,
Christophe


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-25 20:34 ` Christophe Raffalli
@ 2014-05-25 21:39   ` Dmitry Grebeniuk
  0 siblings, 0 replies; 10+ messages in thread
From: Dmitry Grebeniuk @ 2014-05-25 21:39 UTC (permalink / raw)
  To: Christophe Raffalli

> It is painfull with parmap that I modified to handle exception ... without success.

  I'm working on parallel stuff in OCaml too (but in a
more erlang-way than parmap), so I decided to use
exceptions for inter-process messages, and
serialize them as strings to pass them to other
processes:
- https://bitbucket.org/gds/parvel/src/17030/src/parvel.ml#cl-126
- https://bitbucket.org/gds/parvel/src/17030/src/parvel.ml#cl-274
  It was daunting for me that exceptions are not
serializable, but everything that goes into / out of
executable is not safe, so I accepted strings
as error messages.

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 12:13 [Caml-list] OCaml release 4.02.0+beta1 Damien Doligez
  2014-05-21 12:47 ` Andreas Rossberg
  2014-05-25 20:34 ` Christophe Raffalli
@ 2014-06-18  9:55 ` Anil Madhavapeddy
  2014-06-28  7:58 ` Christophe Raffalli
  3 siblings, 0 replies; 10+ messages in thread
From: Anil Madhavapeddy @ 2014-06-18  9:55 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

On 21 May 2014, at 13:13, Damien Doligez <damien.doligez@inria.fr> wrote:

> Dear OCaml users,
> 
> The release of OCaml version 4.02.0 will take place around the beginning of July. We have created a beta version to get your feedback. Please download the sources, compile, install, and test your favourite software with it. Then let us know what doesn't work by posting bugs to the BTS.
> 
> This is a major release with several big changes, so it is particurarly important for us to get feedback from you.

To help with testing and OPAM bulk builds, there's now an Ubuntu PPA that tracks the 4.02.0dev snapshots of OCaml with binary packages.

https://launchpad.net/~avsm/+archive/ppa-opam-experimental/

There's also a binary package of a minor revision of OPAM (version 1.1.2) whose only change is to tweak the build system to compile without camlp4, thus letting it work with the out-of-the-box OCaml 4.02.

This PPA will only last as long as the 4.02.0dev cycle, and when the stable version is released, it will have a permanent home following the same scheme as the other repositories on https://launchpad.net/~avsm

cheers,
Anil

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-05-21 12:13 [Caml-list] OCaml release 4.02.0+beta1 Damien Doligez
                   ` (2 preceding siblings ...)
  2014-06-18  9:55 ` Anil Madhavapeddy
@ 2014-06-28  7:58 ` Christophe Raffalli
  2014-06-30 13:10   ` Leo White
  3 siblings, 1 reply; 10+ messages in thread
From: Christophe Raffalli @ 2014-06-28  7:58 UTC (permalink / raw)
  To: Damien Doligez, Caml list

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


Hello,

I find reasonnable the removal of camlp4 from the standard distribution. However, it would be nice to keep a small library
to be able to use "ocaml -pp" and still send to OCaml serailized AST within the standard library. This way anyonz can write parser
for DSL to OCaml and avoid parsing twice.

It should be a library with the the definition of the AST, so it could be rather small?

Cheers,
Christophe

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: [Caml-list] OCaml release 4.02.0+beta1
  2014-06-28  7:58 ` Christophe Raffalli
@ 2014-06-30 13:10   ` Leo White
  0 siblings, 0 replies; 10+ messages in thread
From: Leo White @ 2014-06-30 13:10 UTC (permalink / raw)
  To: Christophe Raffalli; +Cc: Damien Doligez, Caml list

Christophe,

I think the compiler-libs library (included with the distribution)
includes the AST definition as well as the `Ast_helper` module
containing utilities for constructing ASTs.

Regards,

Leo

Christophe Raffalli <Christophe.Raffalli@univ-savoie.fr> writes:

> Hello,
>
> I find reasonnable the removal of camlp4 from the standard distribution. However, it would be nice to keep a small library
> to be able to use "ocaml -pp" and still send to OCaml serailized AST within the standard library. This way anyonz can write parser
> for DSL to OCaml and avoid parsing twice.
>
> It should be a library with the the definition of the AST, so it could be rather small?
>
> Cheers,
> Christophe

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

end of thread, other threads:[~2014-06-30 13:10 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-21 12:13 [Caml-list] OCaml release 4.02.0+beta1 Damien Doligez
2014-05-21 12:47 ` Andreas Rossberg
2014-05-21 13:25   ` Kakadu
2014-05-22 11:13     ` Damien Doligez
2014-05-22 14:30       ` Jacques Garrigue
2014-05-25 20:34 ` Christophe Raffalli
2014-05-25 21:39   ` Dmitry Grebeniuk
2014-06-18  9:55 ` Anil Madhavapeddy
2014-06-28  7:58 ` Christophe Raffalli
2014-06-30 13:10   ` Leo White

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