caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* OCaml 3.12.0+rc1
@ 2010-07-23 16:04 Damien Doligez
  2010-07-24 10:51 ` [Caml-list] " Daniel Bünzli
  2010-07-24 19:56 ` Stéphane Glondu
  0 siblings, 2 replies; 4+ messages in thread
From: Damien Doligez @ 2010-07-23 16:04 UTC (permalink / raw)
  To: caml users, caml announce

Dear OCaml users,

The release of OCaml 3.12.0 is imminent.  We have made a release candidate
3.12.0+rc1, available as source code at this address:
  http://caml.inria.fr/pub/distrib/ocaml-3.12/

Unless there is any show-stopping bug, this will become 3.12.0 next week,
so you'd better test it and report any problems with compilation and
installation on your favorite platform.

-- Damien Doligez for the OCaml team


Objective Caml 3.12.0:
----------------------

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

Language features:
- Shorthand notation for records: in expressions and patterns,
    { lbl } stands for { lbl = lbl } and { M.lbl } for { M.lbl = lbl }
- Record patterns of the form { lbl = pat; _ } to mark that not all
  labels are listed, purposefully.  (See new warning below.)
- Explicit naming of a generic type; in an expression
  "fun ... (type t) ... -> e", the type t is considered abstract in its
  scope (the arguments that follow it and the body of the function),
  and then replaced by a fresh type variable. In particular, the type
  t can be used in contexts where a type variable is not allowed
  (e.g. for defining an exception in a local module).
- Explicit polymorphic types and polymorphic recursion. In let
  definitions, one can write an explicit polymorphic type just
  immediately the function name; the polymorphism will be enforced,
  and recursive calls may use the polymorphism.
  The syntax is the same as for polymorphic methods:
    "let [rec] <ident> : 'a1 ... 'an. <typexp> = ..."
- First-class packages modules.
  New kind of type expression, for packaged modules: (module PT).
  New kind of expression, to pack a module as a first-class value:
    (module MODEXPR : PT).
  New kind of module expression, to unpack a first-class value as a module:
    (val EXPR : PT).
  PT is a package type of the form "S" or
  "S with type t1 = ... and ... and type tn = ..." (S refers to a module type).
- Local opening of modules in a subexpression.
  Syntax: "let open M in e", or "M.(e)"
- In class definitions, method and instance variable override can now
  be made explicit, by writing "method!", "val!" or "inherit!" in place of
  "method", "val" and "inherit". It is an error to override an
  undefined member (or to use overriding inheritance when nothing get
  overridden). Additionally, these constructs disactivate respectively
  warnings 7 (method override, code 'M') and 13 (instance variable
  override, code 'V'). Note that, by default, warning 7 is inactive
  and warning 13 is active.
- "Destructive" substitution in signatures.
  By writing "<signature> with type t := <typeconstr>" and
  "<signature> with module M := <module-path>" one replaces "t" and "M"
  inside the signature, removing their respective fields. Among other
  uses, this allows to merge two signatures containing identically
  named fields.
* While fixing PR#4824, also corrected a gaping hole in the type checker,
  which allowed instantiating separately object parameters and instance
  variables in an interface. This hole was here since the beginning of
  ocaml, and as a result many programs using object inheritance in a non
  trivial way will need to be corrected. You can look at lablgtk2 for an
  example.

Compilers and toplevel:
- Warnings are now numbered and can be switched on and off individually.
  The old system with letters referring to sets of warnings is still
  supported.
- New warnings:
  + 9 (code 'R') to signal record patterns without "; _" where
    some labels of the record type are not listed in the pattern.
  + 28 when giving a wildcard argument to a constant constructor in
    a pattern-matching.
  + 29 when an end-of-line appears unescaped in a string constant.
  + 30 when the same constructor or record field is defined twice in
    mutually-recursive type definitions.
* The semantics of warning 7 (code 'M', method override) have changed
  (it now detects all overrides, not just repeated definitions inside
  the same class body), and it is now inactive by default.
- Better error report in case of unbound qualified identifier: if the module
  is unbound this error is reported in the first place.
- Added option '-strict-sequence' to force left hand part of sequence to have
  type unit.
- Added option '-no-app-funct' to turn applicative functors off.
  This option can help working around mysterious type incompatibilities
  caused by the incomplete comparison of applicative paths F(X).t.

Native-code compiler:
- AMD64: shorter and slightly more efficient code generated for 
  float comparisons.

Standard library:
- Format: new function ikfprintf analoguous to ifprintf with a continuation
  argument.
* PR#4210, #4245: stricter range checking in string->integer conversion
  functions (int_of_string, Int32.of_string, Int64.of_string,
  Nativeint.of_string).  The decimal string corresponding to
  max_int + 1 is no longer accepted.
- Scanf: to prevent confusion when mixing Scanf scanning functions and direct
  low level input, value Scanf.stdin has been added.
* Random: changed the algorithm to produce better randomness.  Now passes the
  DieHard tests.
- Map: implement functions from Set that make sense for Map.

Other libraries:
* Str: letters that constitute a word now include digits 0-9 and
  underscore _.  This changes the interpretation of '\b' (word boundary)
  in regexps, but is more consistent with other regexp libraries. (PR#4874).

Ocamlbuild:
- Add support for native dynlink.

New tool:
- ocamlobjinfo: displays various information, esp. dependencies, for
  compiled OCaml files (.cmi, .cmo, .cma, .cmx, .cmxa, .cmxs, and bytecode
  executables).  Extends and makes more official the old objinfo tool
  that was installed by some OCaml packages.

All tools:
- PR#4857: add a -vnum option to display the version number and nothing else

Bug Fixes:
- PR#4012: Map.map and Map.mapi do not conform to specification
- PR#4478: better error messages for type definition mismatches
- PR#4683: labltk script uses fixed path on windows
- PR#4742: finalisation function raising an exception blocks other finalisations
- PR#4775: compiler crash on crazy types (temporary fix)
- PR#4824: narrowing the type of class parameters with a module specification
- PR#4862: relaxed value restriction and records
- PR#4884: optional arguments do not work when Some is redefined
- PR#4964: parenthesized names for infix functions in annot files
- PR#4970: better error message for instance variables
- PR#4975: spelling mistakes
- PR#4988: contravariance lost with ocamlc -i
- PR#5004: problem in Buffer.add_channel with very large lengths.
- PR#5008: on AMD64/MSVC port, rare float corruption during GC.
- PR#5018: wrong exception raised by Dynlink.loadfile.
- PR#5057: fatal typing error with local module + functor + polymorphic variant
- Wrong type for Obj.add_offset.
- Small problem with the representation of Int32, Int64, and Nativeint constants.
- Use RTLD_LOCAL for native dynlink in private mode.


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

* Re: [Caml-list] OCaml 3.12.0+rc1
  2010-07-23 16:04 OCaml 3.12.0+rc1 Damien Doligez
@ 2010-07-24 10:51 ` Daniel Bünzli
  2010-07-30 13:38   ` Damien Doligez
  2010-07-24 19:56 ` Stéphane Glondu
  1 sibling, 1 reply; 4+ messages in thread
From: Daniel Bünzli @ 2010-07-24 10:51 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

> report any problems with [...] installation on your favorite platform.

Don't have the time right now to test it but if the BT is up to date this :

http://caml.inria.fr/mantis/view.php?id=5093

wasn't fixed.

Daniel


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

* Re: [Caml-list] OCaml 3.12.0+rc1
  2010-07-23 16:04 OCaml 3.12.0+rc1 Damien Doligez
  2010-07-24 10:51 ` [Caml-list] " Daniel Bünzli
@ 2010-07-24 19:56 ` Stéphane Glondu
  1 sibling, 0 replies; 4+ messages in thread
From: Stéphane Glondu @ 2010-07-24 19:56 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users, Debian Ocaml Maint ML

Le 23/07/2010 18:04, Damien Doligez a écrit :
> [...]
> so you'd better test it and report any problems with compilation and
> installation on your favorite platform.

I've successfully recompiled (almost) all (relevant) Debian packages
with this new version. The only package that needs more work is jocaml,
and I've been told that mingw32-ocaml has been ported but remains untested.

A list of bugs related to this new version is available at [1]. The
titles of the bugreports should give an overview of practical sources of
incompatibilities (these are not Debian-specific). Some of them are
already fixed (either in upstream repository, or with a home-made
patch). Feel free to steal/ask patches from me :-)

I've made a (unofficial) repository of binary packages for the amd64
architecture, available at [2]. All sources and build logs are available
as well, so you can pick patches or just recompile them if you are on
another Debian-based system. It might progressively get populated by
binary packages for other architectures. The binary packages should work
with current Debian unstable, and people using testing or unstable can
easily test them. However, please note that OCaml 3.12.0 will most
likely not be updated (and supported) in the official repositories
before the next release of Debian (Squeeze).

[1]
http://bugs.debian.org/cgi-bin/pkgreport.cgi?users=debian-ocaml-maint@lists.debian.org;tag=ocaml312-ftbfs
[2] http://ocaml.debian.net/debian/ocaml3120rc1/


Enjoy,

-- 
Stéphane


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

* Re: [Caml-list] OCaml 3.12.0+rc1
  2010-07-24 10:51 ` [Caml-list] " Daniel Bünzli
@ 2010-07-30 13:38   ` Damien Doligez
  0 siblings, 0 replies; 4+ messages in thread
From: Damien Doligez @ 2010-07-30 13:38 UTC (permalink / raw)
  To: Daniel Bünzli; +Cc: caml users

Daniel,

On 2010-07-24, at 12:51, Daniel Bünzli wrote:

>> report any problems with [...] installation on your favorite platform.
> 
> Don't have the time right now to test it but if the BT is up to date this :
> 
> http://caml.inria.fr/mantis/view.php?id=5093
> 
> wasn't fixed.


I've fixed a number of problems with the ./build/fastworld.sh procedure,
but it's a moving target: every time a Makefile changes, it gets out of
sync.

The bottom line is: don't use ./build/fastworld.sh, at least until we
(the developers of OCaml) make a decision on whether to support it
seriously.  At any rate, it won't be fixed for 3.12.0.

-- Damien


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

end of thread, other threads:[~2010-07-30 13:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-23 16:04 OCaml 3.12.0+rc1 Damien Doligez
2010-07-24 10:51 ` [Caml-list] " Daniel Bünzli
2010-07-30 13:38   ` Damien Doligez
2010-07-24 19:56 ` Stéphane Glondu

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