caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Ivan Gotovchits <ivg@ieee.org>
To: Damien Doligez <damien.doligez@inria.fr>
Cc: caml users <caml-list@inria.fr>, caml announce <caml-announce@inria.fr>
Subject: Re: [Caml-list] [caml-announce] OCaml version 4.04.0 is released.
Date: Fri, 4 Nov 2016 13:41:27 -0400	[thread overview]
Message-ID: <CALdWJ+zWkD7xEhmnZ+q2=nPxS3SF6h0PBwMbGcCrRW8eOuBteA@mail.gmail.com> (raw)
In-Reply-To: <C8D95610-16A6-48B4-AB64-D88DE94A2669@inria.fr>

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

Great news, thank you!

Is flambda enabled by default in 4.04?

On Fri, Nov 4, 2016 at 1:29 PM, Damien Doligez <damien.doligez@inria.fr>
wrote:

> Dear OCaml users,
>
> We have the pleasure of celebrating the discovery of Tutankhamun's
> tomb by announcing the release of OCaml version 4.04.0.
> This is a major release with several new features (most notably,
> Spacetime). See the list of changes below.
>
> It is (or soon will be) available as an OPAM switch, or as a source
> download here: < http://caml.inria.fr/distrib/ocaml-4.04/ >
>
> Happy hacking,
>
> -- Damien Doligez for the OCaml team.
>
>
> OCaml 4.04.0:
> -------------
>
> (Changes that can break existing programs are marked with a "*")
>
> ### Language features:
>
> - PR#7233: Support GADT equations on non-local abstract types
>   (Jacques Garrigue)
>
> - GPR#187, GPR#578: Local opening of modules in a pattern.
>   Syntax: "M.(p)", "M.[p]","M.[| p |]", "M.{p}"
>   (Florian Angeletti, Jacques Garrigue, review by Alain Frisch)
>
> - GPR#301: local exception declarations "let exception ... in"
>   (Alain Frisch)
>
> - GPR#508: Allow shortcut for extension on semicolons: ;%foo
>   (Jeremie Dimino)
>
> - GPR#606: optimized representation for immutable records with a single
>   field, and concrete types with a single constructor with a single
> argument.
>   This is triggered with a [@@unboxed] attribute on the type definition.
>   Currently mutually recursive datatypes are not well supported, this
>   limitation should be lifted in the future (see MPR#7364).
>   (Damien Doligez)
>
> ### Compiler user-interface and warnings:
>
> * PR#6475, GPR#464: interpret all command-line options before compiling any
>   files, changes (improves) the semantics of repeated -o options or -o
>   combined with -c see the super-detailed commit message at
>   https://github.com/ocaml/ocaml/commit/da56cf6dfdc13c09905c2e07f1d484
> 9c8346eec8
>   (whitequark)
>
> - PR#7139: clarify the wording of Warning 38
>   (Unused exception or extension constructor)
>   (Gabriel Scherer)
>
> * PR#7147, GPR#475: add colors when reporting errors generated by ppx
> rewriters.
>   Remove the `Location.errorf_prefixed` function which is no longer
> relevant
>   (Simon Cruanes, Jérémie Dimino)
>
> - PR#7169, GPR#501: clarify the wording of Warning 8
>   (Non-exhaustivity warning for pattern matching)
>   (Florian Angeletti, review and report by Gabriel Scherer)
>
> * GPR#591: Improve support for OCAMLPARAM: (i) do not use objects
>   files with -a, -pack, -shared; (ii) use "before" objects in the toplevel
>   (but not "after" objects); (iii) use -I dirs in the toplevel,
>   (iv) fix bug where -I dirs were ignored when using threads
>   (Marc Lasson, review by Damien Doligez and Alain Frisch)
>
> - GPR#648: New -plugin option for ocamlc and ocamlopt, to dynamically
> extend
>   the compilers at runtime.
>   (Fabrice Le Fessant)
>
> - GPR#684: Detect unused module declarations
>   (Alain Frisch)
>
> - GPR#706: Add a settable Env.Persistent_signature.load function so
>   that cmi files can be loaded from other sources. This can be used to
>   create self-contained toplevels.
>   (Jérémie Dimino)
>
> ### Standard library:
>
> - GPR#473: Provide `Sys.backend_type` so that user can write
> backend-specific
>   code in some cases (for example,  code generator).
>   (Hongbo Zhang)
>
> - PR#6279, GPR#553: implement Set.map
>   (Gabriel Scherer)
>
> - PR#6820, GPR#560: Add Obj.reachable_words to compute the
>   "transitive" heap size of a value
>   (Alain Frisch, review by Mark Shinwell and Damien Doligez)
>
> - GPR#589: Add a non-allocating function to recover the number of
>   allocated minor words.
>   (Pierre Chambart, review by Damien Doligez and Gabriel Scherer)
>
> - GPR#626: String.split_on_char
>   (Alain Frisch)
>
> - GPR#669: Filename.extension and Filename.remove_extension
>   (Alain Frisch, request by Edgar Aroutiounian, review by Daniel Bunzli
>   and Damien Doligez)
>
> ### Code generation and optimizations:
>
> - PR#4747, GPR#328: Optimize Hashtbl by using in-place updates of its
>   internal bucket lists.  All operations run in constant stack size
>   and are usually faster, except Hashtbl.copy which can be much
>   slower
>   (Alain Frisch)
>
> * PR#6217, GPR#538: Optimize performance of record update:
>   no more performance cliff when { foo with t1 = ..; t2 = ...; ... }
>   hits 6 updated fields
>   (Olivier Nicole, review by Thomas Braibant and Pierre Chambart)
>
> - PR#7023, GPR#336: Better unboxing strategy
>   (Alain Frisch, Pierre Chambart)
>
> - PR#7244, GPR#840: Ocamlopt + flambda requires a lot of memory
>   to compile large array literal expressions
>   (Pierre Chambart, review by Mark Shinwell)
>
> - PR#7291, GPR#780: Handle specialisation of recursive function that does
>   not always preserve the arguments
>   (Pierre Chambart, Mark Shinwell, report by Simon Cruanes)
>
> - GPR#427: Obj.is_block is now an inlined OCaml function instead of a
>   C external.  This should be faster.
>   (Demi Obenour)
>
> - GPR#580: Optimize immutable float records
>   (Pierre Chambart, review by Mark Shinwell)
>
> - GPR#602: Do not generate dummy code to force module linking
>   (Pierre Chambart, reviewed by Jacques Garrigue)
>
> - PR#7328, GPR#702: Do not eliminate boxed int divisions by zero and
>   avoid checking twice if divisor is zero with flambda.
>   (Pierre Chambart, report by Jeremy Yallop)
>
> - GPR#703: Optimize some constant string operations when the "-safe-string"
>   configure time option is enabled.
>   (Pierre Chambart)
>
> - GPR#707: Load cross module information during a meet
>   (Pierre Chambart, report by Leo White, review by Mark Shinwell)
>
> - GPR#709: Share a few more equal switch branches
>   (Pierre Chambart, review by Gabriel Scherer)
>
> - GPR#712: Small improvements to type-based optimizations for array
>   and lazy
>   (Alain Frisch, review by Pierre Chambart)
>
> - GPR#714: Prevent warning 59 from triggering on Lazy of constants
>   (Pierre Chambart, review by Leo White)
>
> - GPR#723 Sort emitted functions according to source location
>   (Pierre Chambart, review by Mark Shinwell)
>
> - Lack of type normalization lead to missing simple compilation for "lazy
> x"
>   (Alain Frisch)
>
> ### Runtime system:
>
> - PR#7210, GPR#562: Allows to register finalisation function that are
>   called only when a value will never be reachable anymore. The
>   drawbacks compared to the existing one is that the finalisation
>   function is not called with the value as argument. These finalisers
>   are registered with `GC.finalise_last`
>   (François Bobot reviewed by Damien Doligez and Leo White)
>
> - GPR#590: Do not perform compaction if the real overhead is less than
> expected
>   (Thomas Braibant)
>
> ### Tools:
>
> - PR#7189: toplevel #show, follow chains of module aliases
>   (Gabriel Scherer, report by Daniel Bünzli, review by Thomas Refis)
>
> - PR#7248: have ocamldep interpret -open arguments in left-to-right order
>   (Gabriel Scherer, report by Anton Bachin)
>
> - PR#7272, GPR#798: ocamldoc, missing line breaks in type_*.html files
>   (Florian Angeletti)
>
> - PR#7290: ocamldoc, improved support for inline records
>   (Florian Angeletti)
>
> - PR#7323, GPR#750: ensure "ocamllex -ml" works with -safe-string
>   (Hongbo Zhang)
>
> - PR#7350, GPR#806: ocamldoc, add viewport metadata to generated html pages
>   (Florian Angeletti, request by Daniel Bünzli)
>
> - GPR#452: Make the output of ocamldep more stable
>   (Alain Frisch)
>
> - GPR#548: empty documentation comments
>   (Florian Angeletti)
>
> - GPR#575: Add the -no-version option to the toplevel
>   (Sébastien Hinderer)
>
> - GPR#598: Add a --strict option to ocamlyacc treat conflicts as errors
>   (this option is now used for the compiler's parser)
>   (Jeremy Yallop)
>
> - GPR#613: make ocamldoc use -open arguments
>   (Florian Angeletti)
>
> - GPR#718: ocamldoc, fix order of extensible variant constructors
>   (Florian Angeletti)
>
> ### Debugging and profiling:
>
> - GPR#585: Spacetime, a new memory profiler (Mark Shinwell, Leo White)
>
> ### Runtime system:
>
> - PR#7203, GPR#534: Add a new primitive caml_alloc_float_array to allocate
> an
>   array of floats
>   (Thomas Braibant)
>
> ### Manual and documentation:
>
> - PR#7007, PR#7311: document the existence of OCAMLPARAM and
>   ocaml_compiler_internal_params
>   (Damien Doligez, reports by Wim Lewis and Gabriel Scherer)
>
> - PR#7243: warn users against using WinZip to unpack the source archive
>   (Damien Doligez, report by Shayne Fletcher)
>
> - PR#7245, GPR#565: clarification to the wording and documentation
>   of Warning 52 (fragile constant pattern)
>   (Gabriel Scherer, William, Adrien Nader, Jacques Garrigue)
>
> - #PR7265, GPR#769: Restore 4.02.3 behaviour of Unix.fstat, if the
>   file descriptor doesn't wrap a regular file (win32unix only)
>   (Andreas Hauptmann, review by David Allsopp)
>
> - PR#7288: flatten : Avoid confusion
>   (Damien Doligez, report by user 'tormen')
>
> - PR#7355: Gc.finalise and lazy values
>   (Jeremy Yallop)
>
> - GPR#841: Document that [Store_field] must not be used to populate
>   arrays of values declared using [CAMLlocalN] (Mark Shinwell)
>
> ### Build system:
>
> - GPR#324: Compiler developers: Adding new primitives to the
>   standard runtime doesn't require anymore to run `make bootstrap`
>   (François Bobot)
>
> - GPR#384: Fix compilation using old Microsoft C Compilers not
>   supporting secure CRT functions (SDK Visual Studio 2005 compiler and
>   earlier) and standard 64-bit integer literals (Visual Studio .NET
>   2002 and earlier)
>   (David Allsopp)
>
> - GPR#507: More sharing between Unix and Windows makefiles
>   (whitequark, review by Alain Frisch)
>
> * GPR#512, GPR#587: Installed `ocamlc`, `ocamlopt`, and `ocamllex` are
>   now the native-code versions of the tools, if those versions were
>   built.
>   (Demi Obenour)
>
> - GPR#687: "./configure -safe-string" to get a system where
>   "-unsafe-string" is not allowed, thus giving stronger non-local
>   guarantees about immutability of strings
>   (Alain Frisch, review by Hezekiah M. Carty)
>
> ### Bug fixes:
>
> * PR#6505: Missed Type-error leads to a segfault upon record access.
>   (Jacques Garrigue, extra report by Stephen Dolan)
>   Proper fix required a more restrictive approach to recursive types:
>   mutually recursive types are seen as abstract types (i.e.
> non-contractive)
>   when checking the well-foundedness of the recursion.
>
> * PR#6752: Nominal types and scope escaping.
>   Revert to strict scope for non-generalizable type variables, cf. Mantis.
>   Note that this is actually stricter than the behavior before 4.03,
>   cf. PR#7313, meaning that you may sometimes need to add type annotations
>   to explicitly instantiate non-generalizable type variables.
>   (Jacques Garrigue, following discussion with Jeremy Yallop,
>    Nicolas Ojeda Bar and Alain Frisch)
>
> - PR#7112: Aliased arguments ignored for equality of module types
>   (Jacques Garrigue, report by Leo White)
>
> - PR#7134: compiler forcing aliases it shouldn't while reporting type
> errors
>   (Jacques Garrigue, report and suggestion by sliquister)
>
> - PR#7153: document that Unix.SOCK_SEQPACKET is not really usable.
>
> - PR#7165, GPR#494: uncaught exception on invalid lexer directive
>   (Gabriel Scherer, report by KC Sivaramakrishnan using afl-fuzz)
>
> - PR#7257, GPR#583: revert a 4.03 change of behavior on (Unix.sleep 0.),
>   it now calls (nano)sleep for 0 seconds as in (< 4.03) versions.
>   (Hannes Mehnert, review by Damien Doligez)
>
> - PR#7260: GADT + subtyping compile time crash
>   (Jacques Garrigue, report by Nicolas Ojeda Bar)
>
> - PR#7269: Segfault from conjunctive constraints in GADT
>   (Jacques Garrigue, report by Stephen Dolan)
>
> - PR#7276: Support more than FD_SETSIZE sockets in Windows' emulation
>   of select
>   (David Scott, review by Alain Frisch)
>
> * PR#7278: Prevent private inline records from being mutated
>   (Alain Frisch, report by Pierre Chambart)
>
> - PR#7284: Bug in mcomp_fields leads to segfault
>   (Jacques Garrigue, report by Leo White)
>
> - PR#7285: Relaxed value restriction broken with principal
>   (Jacques Garrigue, report by Leo White)
>
> - PR#7297: -strict-sequence turns off Warning 21
>   (Jacques Garrigue, report by Valentin Gatien-Baron)
>
> - PR#7299: remove access to OCaml heap inside blocking section in win32unix
>   (David Allsopp, report by Andreas Hauptmann)
>
> - PR#7300: remove access to OCaml heap inside blocking in Unix.sleep on
> Windows
>   (David Allsopp)
>
> - PR#7305: -principal causes loop in type checker when compiling
>   (Jacques Garrigue, report by Anil Madhavapeddy, analysis by Leo White)
>
> - PR#7330: Missing exhaustivity check for extensible variant
>   (Jacques Garrigue, report by Elarnon *)
>
> - PR#7374: Contractiveness check unsound with constraints
>   (Jacques Garrigue, report by Leo White)
>
> - PR#7378: GADT constructors can be re-exposed with an incompatible type
>   (Jacques Garrigue, report by Alain Frisch)
>
> - PR#7389: Unsoundness in GADT exhaustiveness with existential variables
>   (Jacques Garrigue, report by Stephen Dolan)
>
> * GPR#533: Thread library: fixed [Thread.wait_signal] so that it
>   converts back the signal number returned by [sigwait] to an
>   OS-independent number
>   (Jérémie Dimino)
>
> - GPR#600: (similar to GPR#555) ensure that register typing constraints are
>   respected at N-way join points in the control flow graph
>   (Mark Shinwell)
>
> - GPR#672: Fix float_of_hex parser to correctly reject some invalid forms
>   (Bogdan Tătăroiu, review by Thomas Braibant and Alain Frisch)
>
> - GPR#700: Fix maximum weak bucket size
>   (Nicolas Ojeda Bar, review by François Bobot)
>
> - GPR#708 Allow more module aliases in strengthening (Leo White)
>
> - GPR#713, PR#7301: Fix wrong code generation involving lazy values in
> Flambda
>   mode
>   (Mark Shinwell, review by Pierre Chambart and Alain Frisch)
>
> - GPR#721: Fix infinite loop in flambda due to [@@specialise] annotations
>
> - GPR#779: Building native runtime on Windows could fail when bootstrapping
>   FlexDLL if there was also a system-installed flexlink
>   (David Allsopp, report Michael Soegtrop)
>
> - GPR#805, GPR#815, GPR#833: check for integer overflow in String.concat
>   (Jeremy Yallop,
>    review by Damien Doligez, Alain Frisch, Daniel Bünzli, Fabrice Le
> Fessant)
>
> - GPR#810: check for integer overflow in Array.concat
>   (Jeremy Yallop)
>
> - GPR#814: fix the Buffer.add_substring bounds check to handle overflow
>   (Jeremy Yallop)
>
> - GPR#880: Fix [@@inline] with default parameters in flambda (Leo White)
>
> - GPR#525: fix build on OpenIndiana
>   (Sergey Avseyev, review by Damien Doligez)
>
> ### Internal/compiler-libs changes:
>
> - PR#7200, GPR#539: Improve, fix, and add test for parsing/pprintast.ml
>   (Runhang Li, David Sheets, Alain Frisch)
>
> - GPR#351: make driver/pparse.ml functions type-safe
>   (Gabriel Scherer, Dmitrii Kosarev, review by Jérémie Dimino)
>
> - GPR#516: Improve Texp_record constructor representation, and
>   propagate updated record type information
>   (Pierre Chambart, review by Alain Frisch)
>
> - GPR#678: Graphics.close_graph crashes 64-bit Windows ports
> (re-implementation
>   of PR#3963)
>   (David Allsopp)
>
> - GPR#679: delay registration of docstring after the mapper is applied
>   (Hugo Heuzard, review by Leo White)
>
> - GPR#872: don't attach (**/**) comments to any particular node
>   (Thomas Refis, review by Leo White)
>
>

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

  reply	other threads:[~2016-11-04 17:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-04 17:29 [Caml-list] " Damien Doligez
2016-11-04 17:41 ` Ivan Gotovchits [this message]
     [not found] ` <CAPFanBHxGP7Umx-G3UObp3tyRttYeLXyewpx6Y-1V_p63x7BTg@mail.gmail.com>
2016-11-27 20:38   ` Gabriel Scherer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALdWJ+zWkD7xEhmnZ+q2=nPxS3SF6h0PBwMbGcCrRW8eOuBteA@mail.gmail.com' \
    --to=ivg@ieee.org \
    --cc=caml-announce@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=damien.doligez@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).