caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml 4.01.0 RC1
@ 2013-09-02 14:23 Damien Doligez
  2013-09-02 16:12 ` Anil Madhavapeddy
  0 siblings, 1 reply; 2+ messages in thread
From: Damien Doligez @ 2013-09-02 14:23 UTC (permalink / raw)
  To: caml users, caml announce

Dear OCaml users,

The release of OCaml version 4.01.0 is imminent.  We have
created a release candidate for your testing pleasure.  Please
download the sources, compile, install, and test your favourite
software with it (or try it with OPAM).  Then let me know
whether it works for you.

We want to know about any show-stopping bugs, especially in the
compilation and installation phases.

This release candidate is available as source code at this
address: < http://caml.inria.fr/pub/distrib/ocaml-4.01/ >

It will become the official release in one week unless a
show-stopping bug is discovered in the meantime.

Happy hacking,

-- Damien Doligez for the OCaml team.


OCaml 4.01.0:
-------------

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

Other libraries:
- Labltk: updated to Tcl/Tk 8.6.

Type system:
* Propagate type information towards pattern-matching, even in the presence of
  polymorphic variants (discarding only information about possibly-present
  constructors). As a result, matching against absent constructors is no longer
  allowed for exact and fixed polymorphic variant types.
* PR#6035: Reject multiple declarations of the same method or instance variable
  in an object

Compilers:
- PR#5861: raise an error when multiple private keywords are used in type
  declarations
- PR#5634: parsetree rewriter (-ppx flag)
- ocamldep now supports -absname
- PR#5768: On "unbound identifier" errors, use spell-checking to suggest names
  present in the environment
- ocamlc has a new option -dsource to visualize the parsetree
- tools/eqparsetree compares two parsetree ignoring location
- ocamlopt now uses clang as assembler on OS X if available, which enables
  CFI support for OS X.
- Added a new -short-paths option, which attempts to use the shortest
  representation for type constructors inside types, taking open modules
  into account. This can make types much more readable if your code
  uses lots of functors.
- PR#5986: added flag -compat-32 to ocamlc, ensuring that the generated
  bytecode executable can be loaded on 32-bit hosts.
- PR#5980: warning on open statements which shadow an existing identifier
  (if it is actually used in the scope of the open)
* warning 3 is extended to warn about other deprecated features:
  - ISO-latin1 characters in identifiers
  - uses of the (&) and (or) operators instead of (&&) and (||)
- Experimental OCAMLPARAM for ocamlc and ocamlopt
- PR#5571: incorrect ordinal number in error message
- PR#6073: add signature to Tstr_include

Standard library:
- PR#5899: expose a way to inspect the current call stack
  (Printexc.get_callstack)
- PR#5986: new flag Marshal.Compat_32 for the serialization functions
  (Marshal.to_*), forcing the output to be readable on 32-bit hosts.
- Add optimized composition operators |> and @@ in Pervasives

Other libraries:
- PR#5568: add O_CLOEXEC flag to Unix.openfile, so that the returned
  file descriptor is created in close-on-exec mode

Runtime system:
* PR#6019: more efficient implementation of caml_modify() and caml_initialize().
  The new implementations are less lenient than the old ones: now,
  the destination pointer of caml_modify() must point within the minor or
  major heaps, and the destination pointer of caml_initialize() must
  point within the major heap.

Internals:
- Moved debugger/envaux.ml to typing/envaux.ml to publish env_of_only_summary
  as part of compilerlibs, to be used on bin-annot files.
- The test suite can now be run without installing OCaml first.

Bug fixes:
- PR#3236: Document the fact that queues are not thread-safe
- PR#3468: (part 1) Sys_error documentation
- PR#3679: Warning display problems
- PR#3963: Graphics.wait_next_event in Win32 hangs if window closed
- PR#4079: Queue.copy is now tail-recursive
- PR#4138: Documentation for Unix.mkdir
- PR#4469: emacs mode: caml-set-compile-command is annoying with ocamlbuild
- PR#4485: Graphics: Keyboard events incorrectly delivered in native code
- PR#4502: ocamlbuild now reliably excludes the build-dir from hygiene check
- PR#4762: ?? is not used at all, but registered as a lexer token
- PR#4788: wrong error message when executable file is not found for backtrace
- PR#4812: otherlibs/unix: add extern int code_of_unix_error (value error);
- PR#4887: input_char after close_in crashes ocaml (msvc runtime)
- PR#4994: ocaml-mode doesn't work with xemacs21
- PR#5098: creating module values may lead to memory leaks
- PR#5102: ocamlbuild fails when using an unbound variable in rule dependency
* PR#5119: camlp4 now raises a specific exception when 'DELETE_RULE' fails,
  rather than raising 'Not_found'
- PR#5121: %( %) in Format module seems to be broken
- PR#5178: document in INSTALL how to build a 32-bit version under Linux x86-64
- PR#5212: Improve ocamlbuild error messages of _tags parser
- PR#5240: register exception printers for Unix.Unix_error and Dynlink.Error
- PR#5300: ocamlbuild: verbose parameter should implicitly set classic display
- PR#5327: (Windows) Unix.select blocks if same socket listed in first and
  third arguments
- PR#5343: ocaml -rectypes is unsound wrt module subtyping (was still unsound)
- PR#5350: missing return code checks in the runtime system
- PR#5468: ocamlbuild should preserve order of parametric tags
- PR#5551: Avoid repeated lookups for missing cmi files
- PR#5552: try to use camlp4.opt if it's possible
- PR#5580: missed opportunities for constant propagation
- PR#5611: avoid clashes betwen .cmo files and output files during linking
- PR#5662: typo in md5.c
- PR#5673: type equality in a polymorphic field
- PR#5674: Methods call are 2 times slower with 4.00 than with 3.12
- PR#5694: Exception raised by type checker
- PR#5695: remove warnings on sparc code emitter
- PR#5697: better location for warnings on statement expressions
- PR#5698: remove harcoded limit of 200000 labels in emitaux.ml
- PR#5702: bytecomp/bytelibrarian lib_sharedobjs was defined but never used
- PR#5708: catch Failure"int_of_string" in ocamldebug
- PR#5712: (9) new option -bin-annot is not documented
- PR#5731: instruction scheduling forgot to account for destroyed registers
- PR#5734: improved Win32 implementation of Unix.gettimeofday
- PR#5735: %apply and %revapply not first class citizens
- PR#5738: first class module patterns not handled by ocamldep
- PR#5739: Printf.printf "%F" (-.nan) returns -nan
- PR#5741: make pprintast.ml in compiler_libs
- PR#5747: 'unused open' warning not given when compiling with -annot
- PR#5752: missing dependencies at byte-code link with mlpack
- PR#5758: Compiler bug when matching on floats
- PR#5763: ocamlbuild does not give correct flags when running menhir
- PR#5765: ocamllex doesn't preserve line directives
- PR#5770: Syntax error messages involving unclosed parens are sometimes
  incorrect
- PR#5772: problem with marshaling of mutually-recursive functions
- PR#5775: several bug fixes for tools/pprintast.ml
- PR#5784: -dclambda option is ignored
- PR#5785: misbehaviour with abstracted structural type used as GADT index
- PR#5787: Bad behavior of 'Unused ...' warnings in the toplevel
- PR#5793: integer marshalling is inconsistent between architectures
- PR#5798: add ARM VFPv2 support for Raspbian (ocamlopt)
- PR#5802: Avoiding "let" as a value name
- PR#5805: Assert failure with warning 34 on pre-processed file
- PR#5806: ensure that backtrace tests are always run (testsuite)
- PR#5809: Generating .cmt files takes a long time, in case of type error
- PR#5810: error in switch printing when using -dclambda
- PR#5811: Untypeast produces singleton tuples for constructor patterns
  with only one argument
- PR#5813: GC not called when unmarshaling repeatedly in a tight loop (ocamlopt)
- PR#5814: read_cmt -annot does not report internal references
- PR#5815: Multiple exceptions in signatures gives an error
- PR#5816: read_cmt -annot does not work for partial .cmt files
- PR#5819: segfault when using [with] on large recursive record (ocamlopt)
- PR#5821: Wrong record field is reported as duplicate
- PR#5824: Generate more efficient code for immediate right shifts.
- PR#5825: Add a toplevel primitive to use source file wrapped with the
  coresponding module
- PR#5833: README.win32 can leave the wrong flexlink in the path
- PR#5835: nonoptional labeled arguments can be passed with '?'
- PR#5840: improved documentation for 'Unix.lseek'
- PR#5848: Assertion failure in type checker
- PR#5858: Assert failure during typing of class
- PR#5865: assert failure when reporting undefined field label
- PR#5872: Performance: Buffer.add_char is not inlined
- PR#5876: Uncaught exception with a typing error
- PR#5877: multiple "open" can become expensive in memory
- PR#5880: 'Genlex.make_lexer' documention mentions the wrong exception
- PR#5885: Incorrect rule for compiling C stubs when shared libraries are not
  supported.
- PR#5891: ocamlbuild: support rectypes tag for mlpack
- PR#5892: GADT exhaustiveness check is broken
- PR#5906: GADT exhaustiveness check is still broken
- PR#5907: Undetected cycle during typecheck causes exceptions
- PR#5910: Fix code generation bug for "mod 1" on ARM.
- PR#5911: Signature substitutions fail in submodules
- PR#5912: add configure option -no-cfi (for OSX 10.6.x with XCode 4.0.2)
- PR#5914: Functor breaks with an equivalent argument signature
- PR#5920, PR#5957: linking failure for big bytecodes on 32bit architectures
- PR#5928: Missing space between words in manual page for ocamlmktop
- PR#5930: ocamldep leaks temporary preprocessing files
- PR#5933: Linking is slow when there are functions with large arities
- PR#5934: integer shift by negative amount (in otherlibs/num)
- PR#5944: Bad typing performances of big variant type declaration
- PR#5945: Mix-up of Minor_heap_min and Minor_heap_max units
- PR#5948: GADT with polymorphic variants bug
- PR#5953: Unix.system does not handle EINTR
- PR#5965: disallow auto-reference to a recursive module in its definition
- PR#5973: Format module incorrectly parses format string
- PR#5974: better documentation for Str.regexp
- PR#5976: crash after recovering from two stack overflows (ocamlopt on MacOS X)
- PR#5977: Build failure on raspberry pi: "input_value: integer too large"
- PR#5981: Incompatibility check assumes abstracted types are injective
- PR#5982: caml_leave_blocking section and errno corruption
- PR#5985: Unexpected interaction between variance and GADTs
- PR#5986: Protect against marshaling 64-bit integers in bytecode
- PR#5988: missing from the documentation: -impl is a valid flag for ocamlopt
- PR#5989: Assumed inequalities involving private rows
- PR#5992: Crash when pattern-matching lazy values modifies the scrutinee
- PR#5993: Variance of private type abbreviations not checked for modules
- PR#5997: Non-compatibility assumed for concrete types with same constructor
- PR#6004: Type information does not flow to "inherit" parameters
- PR#6005: Type unsoundness with recursive modules
- PR#6010: Big_int.extract_big_int gives wrong results on negative arguments
- PR#6024: Format syntax for printing @ is incompatible with 3.12.1
- PR#6001: Reduce the memory used by compiling Camlp4
- PR#6031: Camomile problem with -with-frame-pointers
- PR#6032: better Random.self_init under Windows
- PR#6033: Matching.inline_lazy_force needs eta-expansion (command-line flags)
- PR#6046: testsuite picks up the wrong ocamlrun dlls
- PR#6056: Using 'match' prevents generalization of values
- PR#6058: 'ocamlbuild -use-ocamlfind -tag thread -package threads t.cma' fails
- PR#6060: ocamlbuild rules for -principal, -strict-sequence and -short-paths
- PR#6069: ocamldoc: lexing: empty token
- PR#6072: configure does not handle FreeBSD current (i.e. 10) correctly
- PR#6074: Wrong error message for failing Condition.broadcast
- PR#6084: Define caml_modify and caml_initialize as weak symbols to help
  with Netmulticore
- PR#6090: Module constraint + private type seems brocken in ocaml 4.01.0
- PR#6109: Typos in ocamlbuild error messages
- PR#6123: Assert failure when self escapes its class

Feature wishes:
- PR#5181: Merge common floating point constants in ocamlopt
- PR#5546: moving a function into an internal module slows down its use
- PR#5597: add instruction trace option 't' to OCAMLRUNPARAM
- PR#5676: IPv6 support under Windows
- PR#5721: configure -with-frame-pointers for Linux perf profiling
- PR#5722: toplevel: print full module path only for first record field
- PR#5762: Add primitives for fast access to bigarray dimensions
- PR#5769: Allow propagation of Sys.big_endian in native code
- PR#5771: Add primitives for reading 2, 4, 8 bytes in strings and bigarrays
- PR#5774: Add bswap primitives for amd64 and arm
- PR#5795: Generate sqrtsd opcode instead of external call to sqrt on amd64
- PR#5827: provide a dynamic command line parsing mechanism
- PR#5832: patch to improve "wrong file naming" error messages
- PR#5864: Add a find operation to Set
- PR#5886: Small changes to compile for Android
- PR#5902: -ppx based pre-processor executables accept arguments
- PR#6049: support for OpenBSD/macppc platform
- PR#6059: add -output-obj rules for ocamlbuild

Tools:
- OCamlbuild now features a bin_annot tag to generate .cmt files.
- OCamlbuild now features a strict_sequence tag to trigger the strict-sequence
  option.
- OCamlbuild now picks the non-core tools like ocamlfind and menhir from PATH
- PR#5884: Misc minor fixes and cleanup for emacs mode
- PR#6030: Improve performance of -annot


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

* Re: [Caml-list] OCaml 4.01.0 RC1
  2013-09-02 14:23 [Caml-list] OCaml 4.01.0 RC1 Damien Doligez
@ 2013-09-02 16:12 ` Anil Madhavapeddy
  0 siblings, 0 replies; 2+ messages in thread
From: Anil Madhavapeddy @ 2013-09-02 16:12 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

On 2 Sep 2013, at 15:23, Damien Doligez <damien.doligez@inria.fr> wrote:

> The release of OCaml version 4.01.0 is imminent.  We have
> created a release candidate for your testing pleasure.  Please
> download the sources, compile, install, and test your favourite
> software with it (or try it with OPAM).  Then let me know
> whether it works for you.

For the OPAM users among you, I've added a 4.01.0 compiler switch
which will track the RC releases, and eventually become the official
release when it's out.

$ opam update
$ opam switch 4.01.0
$ eval `opam config env`
# ???
# profit

I've been running a full regression test of the entire OPAM database
on a variety of architectures and triaging the results.  If anyone
else is interested in helping submit patches to fix issues, then
please see:
https://github.com/OCamlPro/opam-repository/issues/1029

Note that the above link is a bit raw, since it also includes failures
from bugs in 4.00.1 packages too.  We've just been fixing everything
we can spot in preparation for testing the forthcoming OPAM 1.1 beta
on as stable a package database as possible.  I'm preparing a blog
post describing the most common failures we've seen to help package
authors avoid them in the future (warnings-as-errors, I'm looking at
you!)

cheers,
Anil


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

end of thread, other threads:[~2013-09-02 16:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-02 14:23 [Caml-list] OCaml 4.01.0 RC1 Damien Doligez
2013-09-02 16:12 ` Anil Madhavapeddy

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