* 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-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
* 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
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