caml-list - the Caml user's mailing list
 help / Atom feed
* [Caml-list] OCaml release 4.07.0
@ 2018-07-10 15:55 Damien Doligez
  2018-07-11 21:01 ` Ian Zimmerman
  2018-09-10  8:09 ` [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2) Nicolas Ratier
  0 siblings, 2 replies; 7+ messages in thread
From: Damien Doligez @ 2018-07-10 15:55 UTC (permalink / raw)
  To: caml announce, caml users

Dear OCaml users,

We have the pleasure of celebrating the birthday of Nikola Tesla and Marcel Proust by announcing the release of OCaml version 4.07.0. This is a major release with a lot of new features, see the changelog below.

It is available as a bunch of OPAM switches, or as a source download here: < http://caml.inria.fr/pub/distrib/ocaml-4.07 >.

Happy hacking,
-- 
Damien Doligez for the OCaml team.


OCaml 4.07.0 (10 July 2018)
---------------------------

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

### Language features:

- MPR#6023, GPR#1648: Allow type-based selection of GADT constructors
  (Thomas Refis and Leo White, review by Jacques Garrigue and Gabriel Scherer)

- GPR#1546: Allow empty variants
  (Runhang Li, review by Gabriel Radanne and Jacques Garrigue)

### Standard library:

- MPR#4170, GPR#1674: add the constant `Float.pi`.
  (Christophe Troestler, review by Damien Doligez)

- MPR#6139, GPR#1685: Move the Bigarray module to the standard library. Keep the
  bigarray library as on overlay adding the deprecated map_file functions
  (Jérémie Dimino, review by Mark Shinwell)

- MPR#7690, GPR#1528: fix the float_of_string function for hexadecimal floats
  with very large values of the exponent.
  (Olivier Andrieu)

- GPR#1002: add a new `Seq` module defining a list-of-thunks style iterator.
  Also add `{to,of}_seq` to several standard modules.
  (Simon Cruanes, review by Alain Frisch and François Bobot)

* GPR#1010: pack all standard library modules into a single module Stdlib
  which is the default opened module (Stdlib itself includes Pervasives) to free
  up the global namespace for other standard libraries, while still allowing any
  OCaml standard library module to be referred to as Stdlib.Module). This is
  implemented efficiently using module aliases (prefixing all modules with
  Stdlib__, e.g. Stdlib__string).
  (Jérémie Dimino, David Allsopp and Florian Angeletti, review by David Allsopp
   and Gabriel Radanne)

- GPR#1637: String.escaped is faster and does not allocate when called with a
  string that does not contain any characters needing to be escaped.
  (Alain Frisch, review by Xavier Leroy and Gabriel Scherer)

- GPR#1638: add a Float module.
  (Nicolás Ojeda Bär, review by Alain Frisch and Jeremy Yallop)

- GPR#1697: Tune [List.init] tailrec threshold so that it does not stack overflow
  when compiled with the Js_of_ocaml backend.
  (Hugo Heuzard, reviewed by Gabriel Scherer)

### Other libraries:

- MPR#7745, GPR#1629: Graphics.open_graph displays the correct window title on
  Windows again (fault introduced by 4.06 Unicode changes).
  (David Allsopp)

* GPR#1406: Unix.isatty now returns true in the native Windows ports when
  passed a file descriptor connected to a Cygwin PTY. In particular, compiler
  colors for the native Windows ports now work under Cygwin/MSYS2.
  (Nicolás Ojeda Bär, review by Gabriel Scherer, David Allsopp, Xavier Leroy)

- GPR#1451: [getpwuid], [getgrgid], [getpwnam], [getgrnam] now raise Unix error
  instead of returning [Not_found] when interrupted by a signal.
  (Arseniy Alekseyev, review by Mark Shinwell and Xavier Leroy)

- GPR#1477: raw_spacetime_lib can now be used in bytecode.
  (Nicolás Ojeda Bär, review by Mark Shinwell)

- GPR#1533: (a) The implementation of Thread.yield for system thread
  now uses nanosleep(1) for enabling better preemption.
  (b) Thread.delay is now an alias for Unix.sleepf.
  (Jacques-Henri Jourdan, review by Xavier Leroy and David Allsopp)

### Compiler user-interface and warnings:

- MPR#7663, GPR#1694: print the whole cycle and add a reference to the manual in
  the unsafe recursive module evaluation error message.
  (Florian Angeletti, report by Matej Košík, review by Gabriel Scherer)

- GPR#1166: In OCAMLPARAM, an alternative separator can be specified as
  first character (instead of comma) in the set ":|; ,"
  (Fabrice Le Fessant)

- GPR#1358: Fix usage warnings with no mli file
  (Leo White, review by Alain Frisch)

- GPR#1428: give a non dummy location for warning 49 (no cmi found)
  (Valentin Gatien-Baron)

- GPR#1491: Improve error reporting for ill-typed applicative functor
  types, F(M).t.
  (Valentin Gatien-Baron, review by Florian Angeletti and Gabriel Radanne)

- GPR#1496: Refactor the code printing explanation for unification type errors,
  in order to avoid duplicating pattern matches
  (Armaël Guéneau, review by Florian Angeletti and Gabriel Scherer)

- GPR#1505: Add specific error messages for unification errors involving
  functions of type "unit -> _"
  (Arthur Charguéraud and Armaël Guéneau, with help from Leo White, review by
  Florian Angeletti and Gabriel Radanne)

- GPR#1510: Add specific explanation for unification errors caused by type
  constraints propagated by keywords (such as if, while, for...)
  (Armaël Guéneau and Gabriel Scherer, original design by Arthur Charguéraud,
  review by Frédéric Bour, Gabriel Radanne and Alain Frisch)

- GPR#1515: honor the BUILD_PATH_PREFIX_MAP environment variable
  to enable reproducible builds
  (Gabriel Scherer, with help from Ximin Luo, review by Damien Doligez)

- GPR#1534: Extend the warning printed when (*) is used, adding a hint to
  suggest using ( * ) instead
  (Armaël Guéneau, with help and review from Florian Angeletti and Gabriel
  Scherer)

- GPR#1552, GPR#1577: do not warn about ambiguous variables in guards
  (warning 57) when the ambiguous values have been filtered by
  a previous clause
  (Gabriel Scherer and Thomas Refis, review by Luc Maranget)

- GPR#1554: warnings 52 and 57: fix reference to manual detailed explanation
  (Florian Angeletti, review by Thomas Refis and Gabriel Scherer)

- GPR#1618: add the -dno-unique-ids and -dunique-ids compiler flags
  (Sébastien Hinderer, review by Leo White and Damien Doligez)

- GPR#1649 change compilation order of toplevel definitions, so that some warnings
  emitted by the bytecode compiler appear more in-order than before.
  (Luc Maranget, advice and review by Damien Doligez)

- GPR#1806: add linscan to OCAMLPARAM options
  (Raja Boujbel)

### Code generation and optimizations:

- MPR#7630, GPR#1401: Faster compilation of large modules with Flambda.
  (Pierre Chambart, report by Emilio Jesús Gallego Arias,
  Pierre-Marie Pédrot and Paul Steckler, review by Gabriel Scherer
  and Leo White)

- MPR#7630, GPR#1455: Disable CSE for the initialization function
  (Pierre Chambart, report by Emilio Jesús Gallego Arias,
   review by Gabriel Scherer and Xavier Leroy)

- GPR#1370: Fix code duplication in Cmmgen
  (Vincent Laviron, with help from Pierre Chambart,
   reviews by Gabriel Scherer and Luc Maranget)

- GPR#1486: ARM 32-bit port: add support for ARMv8 in 32-bit mode,
  a.k.a. AArch32.
  For this platform, avoid ITE conditional instruction blocks and use
  simpler IT blocks instead
  (Xavier Leroy, review by Mark Shinwell)

- GPR#1487: Treat negated float comparisons more directly
  (Leo White, review by Xavier Leroy)

- GPR#1573: emitcode: merge events after instructions reordering
  (Thomas Refis and Leo White, with help from David Allsopp, review by Frédéric
  Bour)

- GPR#1606: Simplify the semantics of Lambda.free_variables and Lambda.subst,
  including some API changes in bytecomp/lambda.mli
  (Pierre Chambart, review by Gabriel Scherer)

- GPR#1613: ensure that set-of-closures are processed first so that other
  entries in the let-rec symbol do not get dummy approximations
  (Leo White and Xavier Clerc, review by Pierre Chambart)

* GPR#1617: Make string/bytes distinguishable in the bytecode.
  (Hugo Heuzard, reviewed by Nicolás Ojeda Bär)

- GPR#1627: Reduce cmx sizes by sharing variable names (Flambda only)
  (Fuyong Quah, Leo White, review by Xavier Clerc)

- GPR#1665: reduce the size of cmx files in classic mode by droping the
  bodies of functions that will not be inlined
  (Fuyong Quah, review by Leo White and Pierre Chambart)

- GPR#1666: reduce the size of cmx files in classic mode by droping the
  bodies of functions that cannot be reached from the module block
  (Fuyong Quah, review by Leo White and Pierre Chambart)

- GPR#1686: Turn off by default flambda invariants checks.
  (Pierre Chambart)

- GPR#1707: Add [Closure_origin.t] to trace inlined functions to prevent
  infinite loops from repeatedly inlining copies of the same function.
  (Fu Yong Quah)

- GPR#1740: make sure startup.o is always linked in when using
  "-output-complete-obj". Previously, it was always linked in only on some
  platforms, making this option unusable on platforms where it wasn't
  (Jérémie Dimino, review by Sébastien Hinderer and Xavier Leroy)

### Runtime system:

- MPR#6411, GPR#1535: don't compile everything with -static-libgcc on mingw32,
  only dllbigarray.dll and libbigarray.a. Allows the use of C++ libraries which
  raise exceptions.
  (David Allsopp)

- MPR#7100, GPR#1476: trigger a minor GC when custom blocks accumulate
  in minor heap
  (Alain Frisch, report by talex, review by Damien Doligez, Leo White,
  Gabriel Scherer)

- GPR#1431: remove ocamlrun dependencies on curses/terminfo/termcap C library
  (Xavier Leroy, review by Daniel Bünzli)

- GPR#1478: The Spacetime profiler now works under Windows (but it is not yet
  able to collect profiling information from C stubs).
  (Nicolás Ojeda Bär, review by Xavier Leroy, Mark Shinwell)

- GPR#1483: fix GC freelist accounting for chunks larger than the maximum block
  size.
  (David Allsopp and Damien Doligez)

- GPR#1526: install the debug and instrumented runtimes
  (lib{caml,asm}run{d,i}.a)
  (Gabriel Scherer, reminded by Julia Lawall)

- GPR#1563: simplify implementation of LSRINT and ASRINT
  (Max Mouratov, review by Frédéric Bour)

- GPR#1644: remove caml_alloc_float_array from the bytecode primitives list
  (it's a native code primitive)
  (David Allsopp)

- GPR#1701: fix missing root bug in GPR#1476
  (Mark Shinwell)

- GPR#1752: do not alias function arguments to sigprocmask (Anil Madhavapeddy)

- GPR#1753: avoid potential off-by-one overflow in debugger socket path
  length (Anil Madhavapeddy)

### Tools:

- MPR#7643, GPR#1377: ocamldep, fix an exponential blowup in presence of nested
  structures and signatures (e.g. "include struct … include(struct … end) … end")
  (Florian Angeletti, review by Gabriel Scherer, report by Christophe Raffalli)

- MPR#7687, GPR#1653: deprecate -thread option,
  which is equivalent to -I +threads.
  (Nicolás Ojeda Bär, report by Daniel Bünzli)

- MPR#7710: `ocamldep -sort` should exit with nonzero code in case of
  cyclic dependencies
  (Xavier Leroy, report by Mantis user baileyparker)

- GPR#1537: boot/ocamldep is no longer included in the source distribution;
  boot/ocamlc -depend can be used in its place.
  (Nicolás Ojeda Bär, review by Xavier Leroy and Damien Doligez)

- GPR#1585: optimize output of "ocamllex -ml"
  (Alain Frisch, review by Frédéric Bour and Gabriel Scherer)

- GPR#1667: add command-line options -no-propt, -no-version, -no-time,
  -no-breakpoint and -topdirs-path to ocamldebug
  (Sébastien Hinderer, review by Damien Doligez)

- GPR#1695: add the -null-crc command-line option to ocamlobjinfo.
  (Sébastien Hinderer, review by David Allsopp and Gabriel Scherer)

- GPR#1710: ocamldoc, improve the 'man' rendering of subscripts and
  superscripts.
  (Gabriel Scherer)

- GPR#1771: ocamdebug, avoid out of bound access
  (Thomas Refis)

### Manual and documentation:

- MPR#7613: minor reword of the "refutation cases" paragraph
  (Florian Angeletti, review by Jacques Garrigue)

- PR#7647, GPR#1384: emphasize ocaml.org website and forum in README
  (Yawar Amin, review by Gabriel Scherer)

- PR#7698, GPR#1545: improve wording in OCaml manual in several places,
  mostly in Chapter 1.  This addresses the easier changes suggested in the PR.
  (Jim Fehrle, review by Florian Angeletti and David Allsopp)

- GPR#1540: manual, decouple verbatim and toplevel style in code examples
  (Florian Angeletti, review by Gabriel Scherer)

- GPR#1556: manual, add a consistency test for manual references inside
  the compiler source code.
  (Florian Angeletti, review by Gabriel Scherer)

- GPR#1647: manual, subsection on record and variant disambiguation
  (Florian Angeletti, review by Alain Frisch and Gabriel Scherer)

- GPR#1702: manual, add a signature mode for code examples
  (Florian Angeletti, review by Gabriel Scherer)

- GPR#1741: manual, improve typesetting and legibility in HTML output
  (steinuil, review by Gabriel Scherer)

- GPR#1757: style the html manual, changing type and layout
  (Charles Chamberlain, review by Florian Angeletti, Xavier Leroy,
  Gabriel Radanne, Perry E. Metzger, and Gabriel Scherer)

- GPR#1765: manual, ellipsis in code examples
  (Florian Angeletti, review and suggestion by Gabriel Scherer)

- GPR#1767: change html manual to use relative font sizes
  (Charles Chamberlain, review by Daniel Bünzli, Perry E. Metzger,
  Josh Berdine, and Gabriel Scherer)

- GPR#1779: integrate the Bigarray documentation into the main manual.
  (Perry E. Metzger, review by Florian Angeletti and Xavier Clerc)

### Type system:

- MPR#7611, GPR#1491: reject the use of generative functors as applicative
  (Valentin Gatien-Baron)

- MPR#7706, GPR#1565: in recursive value declarations, track
  static size of locally-defined variables
  (Gabriel Scherer, review by Jeremy Yallop and Leo White, report by Leo White)

- MPR#7717, GPR#1593: in recursive value declarations, don't treat
  unboxed constructor size as statically known
  (Jeremy Yallop, report by Pierre Chambart, review by Gabriel Scherer)

- MPR#7767, GPR#1712: restore legacy treatment of partially-applied
  labeled functions in 'let rec' bindings.
  (Jeremy Yallop, report by Ivan Gotovchits, review by Gabriel Scherer)

* MPR#7787, GPR#1652, GPR#1743: Don't remove module aliases in `module type of`
  and `with module`.
  The old behaviour can be obtained using the `[@remove_aliases]` attribute.
  (Leo White and Thomas Refis, review by Jacques Garrigue)

- GPR#1468: Do not enrich type_decls with incoherent manifests
  (Thomas Refis and Leo White, review by Jacques Garrigue)

- GPR#1469: Use the information from [@@immediate] annotations when
  computing whether a type can be [@@unboxed]
  (Damien Doligez, report by Stephan Muenzel, review by Alain Frisch)

- GPR#1513: Allow compilation units to shadow sub-modules of Pervasives.
  For instance users can now use a largeFile.ml file in their project.
  (Jérémie Dimino, review by Nicolas Ojeda Bar, Alain Frisch and Gabriel Radanne)

- GPR#1516: Allow float array construction in recursive bindings
  when configured with -no-flat-float-array
  (Jeremy Yallop, report by Gabriel Scherer)

- GPR#1583: propagate refined ty_arg to Parmatch checks
  (Thomas Refis, review by Jacques Garrigue)

- GPR#1609: Changes to ambivalence scope tracking
  (Thomas Refis and Leo White, review by Jacques Garrigue)

- GPR#1628: Treat reraise and raise_notrace as nonexpansive.
  (Leo White, review by Alain Frisch)

* GPR#1778: Fix Soundness bug with non-generalized type variable and
  local modules.  This is the same bug as MPR#7414, but using local
  modules instead of non-local ones.
  (Leo White, review by Jacques Garrigue)

### Compiler distribution build system

- MPR#5219, GPR#1680, GPR#1877: use 'install' instead of 'cp'
  in install scripts.
  (Gabriel Scherer, review by Sébastien Hinderer and Valentin Gatien-Baron)

- MPR#7679: make sure .a files are erased before calling ar rc, otherwise
  leftover .a files from an earlier compilation may contain unwanted modules
  (Xavier Leroy)

- GPR#1571: do not perform architecture tests on 32-bit platforms, allowing
  64-bit back-ends to use 64-bit specific constructs
  (Xavier Clerc, review by Damien Doligez)

### Internal/compiler-libs changes:

- MPR#7738, GPR#1624: Asmlink.reset also resets lib_ccobjs/ccopts
  (Cedric Cellier, review by Gabriel Scherer)

- GPR#1488, GPR#1560: Refreshing parmatch
  (Gabriel Scherer and Thomas Refis, review by Luc Maranget)

- GPR#1502: more command line options for expect tests
  (Florian Angeletti, review by Gabriel Scherer)

- GPR#1511: show code at error location in expect-style tests,
  using new Location.show_code_at_location function
  (Gabriel Scherer and Armaël Guéneau,
   review by Valentin Gatien-Baron and Damien Doligez)

- GPR#1519, GPR#1532, GRP#1570: migrate tests to ocamltest
  (Sébastien Hinderer, review by Gabriel Scherer, Valentin Gatien-Baron
  and Nicolás Ojeda Bär)

- GPR#1520: more robust implementation of Misc.no_overflow_mul
  (Max Mouratov, review by Xavier Leroy)

- GPR#1557: Organise and simplify translation of primitives
  (Leo White, review by François Bobot and Nicolás Ojeda Bär)

- GPR#1567: register all idents relevant for reraise
  (Thomas Refis, review by Alain Frisch and Frédéric Bour)

- GPR#1586: testsuite: 'make promote' for ocamltest tests
  (The new "-promote" option for ocamltest is experimental
  and subject to change/removal).
  (Gabriel Scherer)

- GPR#1619: expect_test: print all the exceptions, even the unexpected ones
  (Thomas Refis, review by Jérémie Dimino)

- GPR#1621: expect_test: make sure to not use the installed stdlib
  (Jérémie Dimino, review by Thomas Refis)

- GPR#1646 : add ocamldoc test to ocamltest and
  migrate ocamldoc tests to ocamltest
  (Florian Angeletti, review by Sébastien Hinderer)

- GPR#1663: refactor flambda specialise/inlining handling
  (Leo White and Xavier Clerc, review by Pierre Chambart)

- GPR#1679 : remove Pbittest from primitives in lambda
  (Hugo Heuzard, review by Mark Shinwell)

* GPR#1704: Make Ident.t abstract and immutable.
  (Gabriel Radanne, review by Mark Shinwell)

### Bug fixes

- MPR#4499, GPR#1479: Use native Windows API to implement Sys.getenv,
  Unix.getenv and Unix.environment under Windows.
  (Nicolás Ojeda Bär, report by Alain Frisch, review by David Allsopp, Xavier
  Leroy)

- MPR#5250, GPR#1435: on Cygwin, when ocamlrun searches the path
  for a bytecode executable file, skip directories and other
  non-regular files, like other Unix variants do.
  (Xavier Leroy)

- MPR#6394, GPR#1425: fix fatal_error from Parmatch.get_type_path
  (Virgile Prevosto, review by David Allsopp, Thomas Refis and Jacques Garrigue)

* MPR#6604, GPR#931: Only allow directives with filename and at the beginning of
  the line
  (Tadeu Zagallo, report by Roberto Di Cosmo,
   review by Hongbo Zhang, David Allsopp, Gabriel Scherer, Xavier Leroy)

- MPR#7138, MPR#7701, GPR#1693: Keep documentation comments
  even in empty structures and signatures
  (Leo White, Florian Angeletti, report by Anton Bachin)

- MPR#7178, MPR#7253, MPR#7796, GPR#1790: Make sure a function
  registered with "at_exit" is executed only once when the program exits
  (Nicolás Ojeda Bär and Xavier Leroy, review by Max Mouratov)

- MPR#7391, GPR#1620: Do not put a dummy method in object types
  (Thomas Refis, review by Jacques Garrigue)

- PR#7660, GPR#1445: Use native Windows API to implement Unix.utimes in order to
  avoid unintended shifts of the argument timestamp depending on DST setting.
  (Nicolás Ojeda Bär, review by David Allsopp, Xavier Leroy)

- MPR#7668: -principal is broken with polymorphic variants
  (Jacques Garrigue, report by Jun Furuse)

- MPR#7680, GPR#1497: Incorrect interaction between Matching.for_let and
  Simplif.simplify_exits
  (Alain Frisch, report and review by Vincent Laviron)

- MPR#7682, GPR#1495: fix [@@unboxed] for records with 1 polymorphic field
  (Alain Frisch, report by Stéphane Graham-Lengrand, review by Gabriel Scherer)

- MPR#7695, GPR#1541: Fatal error: exception Ctype.Unify(_) with field override
  (Jacques Garrigue, report by Nicolás Ojeda Bär)

- MPR#7704, GPR#1564: use proper variant tag in non-exhaustiveness warning
  (Jacques Garrigue, report by Thomas Refis)

- MPR#7711, GPR#1581: Internal typechecker error triggered by a constraint on
   self type in a class type
  (Jacques Garrigue, report and review by Florian Angeletti)

- MPR#7712, GPR#1576: assertion failure with type abbreviations
  (Thomas Refis, report by Michael O'Connor, review by Jacques Garrigue)

- MPR#7747: Type checker can loop infinitly and consumes all computer memory
  (Jacques Garrigue, report by kantian)

- MPR#7751, GPR#1657: The toplevel prints some concrete types as abstract
  (Jacques Garrigue, report by Matej Kosik)

- MPR#7765, GPR#1718: When unmarshaling bigarrays, protect against integer
  overflows in size computations
  (Xavier Leroy, report by Maximilian Tschirschnitz,
   review by Gabriel Scherer)

- MPR#7760, GPR#1713: Exact selection of lexing engine, that is
  correct "Segfault in ocamllex-generated code using 'shortest'"
  (Luc Maranget, Frédéric Bour, report by Stephen Dolan,
  review by Gabriel Scherer)

- MPR#7769, GPR#1714: calls to Stream.junk could, under some conditions, be
  ignored when used on streams based on input channels.
  (Nicolás Ojeda Bär, report by Michael Perin, review by Gabriel Scherer)

- MPR#7793, GPR#1766: the toplevel #use directive now accepts sequences of ';;'
  tokens. This fixes a bug in which certain files accepted by the compiler were
  rejected by ocamldep.
  (Nicolás Ojeda Bär, report by Hugo Heuzard, review by Hugo Heuzard)

- GPR#1517: More robust handling of type variables in mcomp
  (Leo White and Thomas Refis, review by Jacques Garrigue)

- GPR#1530, GPR#1574: testsuite, fix 'make parallel' and 'make one DIR=...'
  to work on ocamltest-based tests.
  (Runhang Li and Sébastien Hinderer, review by Gabriel Scherer)

- GPR#1550, GPR#1555: Make pattern matching warnings more robust
  to ill-typed columns
  (Thomas Refis, with help from Gabriel Scherer and Luc Maranget)

- GPR#1614: consider all bound variables when inlining, fixing a compiler
  fatal error.
  (Xavier Clerc, review by Pierre Chambart, Leo White)

- GPR#1622: fix bug in the expansion of command-line arguments under Windows
  which could result in some elements of Sys.argv being truncated in some cases.
  (Nicolás Ojeda Bär, review by Sébastien Hinderer)

- GPR#1623: Segfault on Windows 64 bits when expanding wildcards in arguments.
  (Marc Lasson, review by David Allsopp, Alain Frisch, Sébastien Hinderer,
   Xavier Leroy, Nicolas Ojeda Bar)

- GPR#1661: more precise principality warning regarding record fields
  disambiguation
  (Thomas Refis, review by Leo White)

- GPR#1687: fix bug in the printing of short functor types "(S1 -> S2) -> S3"
  (Pieter Goetschalckx, review by Gabriel Scherer)

- GPR#1722: Scrape types in Typeopt.maybe_pointer
  (Leo White, review by Thomas Refis)

- GPR#1755: ensure that a bigarray is never collected while reading complex
  values (Xavier Clerc, Mark Shinwell and Leo White, report by Chris Hardin,
  reviews by Stephen Dolan and Xavier Leroy)

- GPR#1764: in byterun/memory.c, struct pool_block, use C99 flexible arrays
  if available
  (Xavier Leroy, review by Max Mouratov)

- GPR#1774: ocamlopt for ARM could generate VFP loads and stores with bad
  offsets, rejected by the assembler.
  (Xavier Leroy, review by Mark Shinwell)

- GPR#1808: handle `[@inlined]` attributes under a module constraint
  (Xavier Clerc, review by Leo White)

- GPR#1810: use bit-pattern comparison when meeting float approximations
  (Xavier Clerc, report by Christophe Troestler, review by Nicolás Ojeda Bär
   and Gabriel Scherer)

- GPR#1835: Fix off-by-one errors in Weak.get_copy and Weak.blit
  (KC Sivaramakrishnan)

- GPR#1849: bug in runtime function generic_final_minor_update()
  that could lead to crashes when Gc.finalise_last is used
  (report and fix by Yuriy Vostrikov, review by François Bobot)


-- 
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] 7+ messages in thread

* Re: [Caml-list] OCaml release 4.07.0
  2018-07-10 15:55 [Caml-list] OCaml release 4.07.0 Damien Doligez
@ 2018-07-11 21:01 ` Ian Zimmerman
  2018-07-11 21:12   ` Ian Zimmerman
  2018-07-12  0:11   ` Jacques Garrigue
  2018-09-10  8:09 ` [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2) Nicolas Ratier
  1 sibling, 2 replies; 7+ messages in thread
From: Ian Zimmerman @ 2018-07-11 21:01 UTC (permalink / raw)
  To: caml-list

On 2018-07-10 17:55, Damien Doligez wrote:

> We have the pleasure of celebrating the birthday of Nikola Tesla and
> Marcel Proust by announcing the release of OCaml version 4.07.0. This
> is a major release with a lot of new features, see the changelog
> below.
> 
> It is available as a bunch of OPAM switches, or as a source download
> here: < http://caml.inria.fr/pub/distrib/ocaml-4.07 >.

Building labltk via opam in the new switch fails.

I can investigate, but am I really the first to detect the problem?

-- 
Please don't Cc: me privately on mailing lists and Usenet,
if you also post the followup to the list or newsgroup.
To reply privately _only_ on Usenet and on broken lists
which rewrite From, fetch the TXT record for no-use.mooo.com.

-- 
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] 7+ messages in thread

* Re: [Caml-list] OCaml release 4.07.0
  2018-07-11 21:01 ` Ian Zimmerman
@ 2018-07-11 21:12   ` Ian Zimmerman
  2018-07-12  0:11   ` Jacques Garrigue
  1 sibling, 0 replies; 7+ messages in thread
From: Ian Zimmerman @ 2018-07-11 21:12 UTC (permalink / raw)
  To: caml-list

On 2018-07-11 14:01, Ian Zimmerman wrote:

> Building labltk via opam in the new switch fails.
> 
> I can investigate, but am I really the first to detect the problem?

Here is the helpful log:

#=== ERROR while compiling labltk.8.06.4 ======================================#
# context      2.0.0~beta5 | linux/x86_64 | ocaml-base-compiler.4.07.0 | https://opam.ocaml.org/2.0#96d1f8b3
# path         ~/.opam/4.07.0/.opam-switch/build/labltk.8.06.4
# command      /usr/bin/make all opt
# exit-code    2
# env-file     ~/.opam/log/labltk-4195-7bcd12.env
# output-file  ~/.opam/log/labltk-4195-7bcd12.out
### output ###
# [...]
# File "searchpos.ml", line 417, characters 2-93:
# Error (warning 5): this function application is partial,
# maybe some arguments are missing.
# File "searchpos.ml", line 559, characters 4-382:
# Error (warning 5): this function application is partial,
# maybe some arguments are missing.
# File "searchpos.ml", line 664, characters 6-99:
# Error (warning 5): this function application is partial,
# maybe some arguments are missing.
# make[1]: *** [Makefile.shared:35: searchpos.cmo] Error 2
# make[1]: Leaving directory '/home/itz/.opam/4.07.0/.opam-switch/build/labltk.8.06.4/browser'
# make: *** [Makefile:34: all] Error 2

-- 
Please don't Cc: me privately on mailing lists and Usenet,
if you also post the followup to the list or newsgroup.
To reply privately _only_ on Usenet and on broken lists
which rewrite From, fetch the TXT record for no-use.mooo.com.

-- 
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] 7+ messages in thread

* Re: [Caml-list] OCaml release 4.07.0
  2018-07-11 21:01 ` Ian Zimmerman
  2018-07-11 21:12   ` Ian Zimmerman
@ 2018-07-12  0:11   ` Jacques Garrigue
  1 sibling, 0 replies; 7+ messages in thread
From: Jacques Garrigue @ 2018-07-12  0:11 UTC (permalink / raw)
  To: Mailing List OCaml

On 2018/07/12 06:01, Ian Zimmerman wrote:
> 
> On 2018-07-10 17:55, Damien Doligez wrote:
> 
>> We have the pleasure of celebrating the birthday of Nikola Tesla and
>> Marcel Proust by announcing the release of OCaml version 4.07.0. This
>> is a major release with a lot of new features, see the changelog
>> below.
>> 
>> It is available as a bunch of OPAM switches, or as a source download
>> here: < http://caml.inria.fr/pub/distrib/ocaml-4.07 >.
> 
> Building labltk via opam in the new switch fails.
> 
> I can investigate, but am I really the first to detect the problem?


There is a new version of labltk, but wait a minute for opam, because there was a typo in the url.
(opam does not seem to check for 4.07 yet…)

Jacques Garrigue

-- 
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] 7+ messages in thread

* [Caml-list]  Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2)
  2018-07-10 15:55 [Caml-list] OCaml release 4.07.0 Damien Doligez
  2018-07-11 21:01 ` Ian Zimmerman
@ 2018-09-10  8:09 ` Nicolas Ratier
  2018-09-10  9:13   ` Gabriel Scherer
  2018-09-10 15:47   ` Nicolas Ratier
  1 sibling, 2 replies; 7+ messages in thread
From: Nicolas Ratier @ 2018-09-10  8:09 UTC (permalink / raw)
  To: caml-list

Dear OCaml list,

openblas is installed in my computer, but opam fail to find it.
The opam message is: idon't find the file "cblas.h"(see 2)

$ ls /usr/include/openblas/
cblas.h  f77blas.h  lapacke_config.h  lapacke.h lapacke_mangling.h  
lapacke_utils.h  openblas_config.h

I have the same problem with plplot (I need both to useowl)

I work on:(Command: uname -mrs & lsb_release -ds)
Linux 3.16.7-42-desktop x86_64
"openSUSE 13.2 (Harlequin) (x86_64)"
OCaml 4.06.1
opam 1.2.2

How to solve this ?
I compile OpenBLAS from source (see 1)
Is there a place to re-install OpenBLAS to be seen by Opam ?

Thank you very much for your help
Nicolas

==========================================================================
1
==========================================================================

  OpenBLAS build complete. (BLAS CBLAS LAPACK LAPACKE)

   OS               ... Linux
   Architecture     ... x86_64
   BINARY           ... 64bit
   C compiler       ... GCC  (command line : gcc)
   Fortran compiler ... GFORTRAN  (command line : gfortran)
   Library Name     ... libopenblas_haswellp-r0.2.20.a (Multi threaded; 
Max num-threads is 12)

To install the library, you can run "make 
PREFIX=/path/to/your/installation install".

===========================================================================
2
===========================================================================
$ opam install conf-openblas

=-=- Processing actions 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[ERROR] The compilation of conf-openblas failed at "sh -exc cc $CFLAGS 
test.c -lopenblas".

#=== ERROR while installing conf-openblas.0.2.0 
===============================#
# opam-version 1.2.2
# os           linux
# command      sh -exc cc $CFLAGS test.c -lopenblas
# path /home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0
# compiler     4.06.1
# exit-code    1
# env-file 
/home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.env
# stdout-file 
/home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.out
# stderr-file 
/home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.err
### stderr ###
# + cc test.c -lopenblas
# test.c:1:19: fatal error: cblas.h: Aucun fichier ou dossier de ce type
#  #include <cblas.h>
#                    ^
# compilation terminated.



-- 
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] 7+ messages in thread

* Re: [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2)
  2018-09-10  8:09 ` [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2) Nicolas Ratier
@ 2018-09-10  9:13   ` Gabriel Scherer
  2018-09-10 15:47   ` Nicolas Ratier
  1 sibling, 0 replies; 7+ messages in thread
From: Gabriel Scherer @ 2018-09-10  9:13 UTC (permalink / raw)
  To: nicolas.ratier; +Cc: caml users, Liang Wang

Dear Nicolas,

Your question is a bit specialized, and I think it would be a better
fit as an opam-repository issue

  https://github.com/ocaml/opam-repository/issues

or an email to the maintainer of the conf-openblas package (let me cc:
the maintainer, Liang Wang, here)

  https://opam.ocaml.org/packages/conf-openblas/

That said, here would be an approach to answer it: you can find in the
source of the conf-openblas "opam" file (available from the link
above)

  https://github.com/ocaml/opam-repository/blob/master/packages/conf-openblas/conf-openblas.0.2.0/opam

the list of tests that are done on the user's machine to test whether
openblas is accessible. Currently the tests are as follows:

build: [
["sh" "-exc" "cc $CFLAGS -I/usr/include/openblas test.c -lopenblas"]
{os = "fedora" | os = "centos" | os = "opensuse"}
["sh" "-exc" "cc $CFLAGS -I/usr/local/opt/openblas/include test.c
-L/usr/local/opt/openblas/lib -lopenblas"] {os = "darwin"}
["sh" "-exc" "cc $CFLAGS test.c -lopenblas"] {os != "fedora" & os !=
"centos" & os != "opensuse" & os != "darwin"}
]

(for example, maybe relying on pkg-config to find the library in
addition to the current test could work?)

If you can find a way to enrich those tests so that the test passes on
your machine (it detects your installation of openblas), and they keep
working for everyone else, you should feel free to submit a
pull-request on the OPAM repository.

To test changes to an opam fine locally, you should use "opam pin" as
documented here:
  https://opam.ocaml.org/doc/Usage.html#opam-pin

Note that one can move the detection logic out of the 'opam' file into
an external script, which can be convenient if the logic becomes
richer. You just have to store the script in the files/ subdirectory
of the package, and call it from the "build" rule. This is done for
example in the conf-libev package:
  https://github.com/ocaml/opam-repository/tree/master/packages/conf-libev/conf-libev.4-11/opam
  https://github.com/ocaml/opam-repository/blob/master/packages/conf-libev/conf-libev.4-11/files/build.sh
  https://github.com/ocaml/opam-repository/blob/master/packages/conf-libev/conf-libev.4-11/files/discover.ml

Finally: there is an interdependency between the way an external
library is detected in its conf-* packages, and the way depending
software finds it during its build. If a conf- file uses pkg-config,
the user package may also use pkg-config to select the build flag, so
merely extending the conf- package with non-pkg-config detection
(without hardening the depending packages) is not a satisfying
solution. If you extend the detection logic of conf-openblas, it would
be nice to check that the depending packages (in this case, I believe
only "owl") still build, or consider extending them with the same
logic.

Best

On Mon, Sep 10, 2018 at 10:09 AM Nicolas Ratier
<nicolas.ratier@femto-st.fr> wrote:
>
> Dear OCaml list,
>
> openblas is installed in my computer, but opam fail to find it.
> The opam message is: idon't find the file "cblas.h"(see 2)
>
> $ ls /usr/include/openblas/
> cblas.h  f77blas.h  lapacke_config.h  lapacke.h lapacke_mangling.h
> lapacke_utils.h  openblas_config.h
>
> I have the same problem with plplot (I need both to useowl)
>
> I work on:(Command: uname -mrs & lsb_release -ds)
> Linux 3.16.7-42-desktop x86_64
> "openSUSE 13.2 (Harlequin) (x86_64)"
> OCaml 4.06.1
> opam 1.2.2
>
> How to solve this ?
> I compile OpenBLAS from source (see 1)
> Is there a place to re-install OpenBLAS to be seen by Opam ?
>
> Thank you very much for your help
> Nicolas
>
> ==========================================================================
> 1
> ==========================================================================
>
>   OpenBLAS build complete. (BLAS CBLAS LAPACK LAPACKE)
>
>    OS               ... Linux
>    Architecture     ... x86_64
>    BINARY           ... 64bit
>    C compiler       ... GCC  (command line : gcc)
>    Fortran compiler ... GFORTRAN  (command line : gfortran)
>    Library Name     ... libopenblas_haswellp-r0.2.20.a (Multi threaded;
> Max num-threads is 12)
>
> To install the library, you can run "make
> PREFIX=/path/to/your/installation install".
>
> ===========================================================================
> 2
> ===========================================================================
> $ opam install conf-openblas
>
> =-=- Processing actions
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> [ERROR] The compilation of conf-openblas failed at "sh -exc cc $CFLAGS
> test.c -lopenblas".
>
> #=== ERROR while installing conf-openblas.0.2.0
> ===============================#
> # opam-version 1.2.2
> # os           linux
> # command      sh -exc cc $CFLAGS test.c -lopenblas
> # path /home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0
> # compiler     4.06.1
> # exit-code    1
> # env-file
> /home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.env
> # stdout-file
> /home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.out
> # stderr-file
> /home/nicolas/.opam/4.06.1/build/conf-openblas.0.2.0/conf-openblas-14498-dd682e.err
> ### stderr ###
> # + cc test.c -lopenblas
> # test.c:1:19: fatal error: cblas.h: Aucun fichier ou dossier de ce type
> #  #include <cblas.h>
> #                    ^
> # compilation terminated.
>
>
>
> --
> 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

-- 
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] 7+ messages in thread

* Re: [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2)
  2018-09-10  8:09 ` [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2) Nicolas Ratier
  2018-09-10  9:13   ` Gabriel Scherer
@ 2018-09-10 15:47   ` Nicolas Ratier
  1 sibling, 0 replies; 7+ messages in thread
From: Nicolas Ratier @ 2018-09-10 15:47 UTC (permalink / raw)
  To: caml-list

I got a response from Liang Wang, and its email solve my problem:
(owl is now working)

He told me:
If you have installed OpenBLAS from source,
then you don’t need to run `opam install conf-openblas`.
THE information for me !!!

Liang Wang recommend to install owl from source

then I follow the section:
"Option 4: Compile from Source"
from "https://github.com/owlbarn/owl"

rem: don't execute "make install" as root
because install only copy files in your .opam

-- 
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] 7+ messages in thread

end of thread, back to index

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-10 15:55 [Caml-list] OCaml release 4.07.0 Damien Doligez
2018-07-11 21:01 ` Ian Zimmerman
2018-07-11 21:12   ` Ian Zimmerman
2018-07-12  0:11   ` Jacques Garrigue
2018-09-10  8:09 ` [Caml-list] Problem with: opam install conf-openblas (openSUSE 13.2, OCaml 4.06.1, opam 1.2.2) Nicolas Ratier
2018-09-10  9:13   ` Gabriel Scherer
2018-09-10 15:47   ` Nicolas Ratier

caml-list - the Caml user's mailing list

Archives are clonable: git clone --mirror https://inbox.ocaml.org/caml-list

AGPL code for this site: git clone https://public-inbox.org/ public-inbox