Previous week Up Next week

Hello

Here is the latest OCaml Weekly News, for the week of August 26 to September 02, 2014.

  1. New Book: More OCaml - Algorithms, Methods & Diversions
  2. OCaml 4.02.0
  3. Immutable strings
  4. ocmalnet-3.7.5
  5. ocamlnet-4.0.0test2 (development snapshot)
  6. UTop 1.15
  7. Ocaml 4.02.0: Dead Code Elimination and Core
  8. Camlp4 4.02.0
  9. Cryptosense is hiring!
  10. Other OCaml News

New Book: More OCaml - Algorithms, Methods & Diversions

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-08/msg00113.html

John Whitington announced:
I've written another book about OCaml, a little more advanced than the
previous one but still, I hope, approachable.

On Amazon, at $39.99 or less:

http://www.amazon.com/More-OCaml-Algorithms-Methods-Diversions/dp/0957671113/

E-book, at $14.99, and sample chapters:

http://ocaml-book.com/more-ocaml-algorithms-methods-diversions/

Thanks to all those who reviewed and proof-read earlier drafts.

Reviews on Amazon are always very useful - my understanding is that
if you have an Amazon account, you can review the book based on
having read the e-book, without buying a printed copy. Do please
consider adding a review, especially if you like the book!

Here's the blurb:

In "More OCaml" John Whitington takes a meandering tour of functional
programming with OCaml, introducing various language features and
describing some classic algorithms. The book ends with a large worked
example dealing with the production of PDF files. There are questions
for each chapter together with worked answers and hints.

"More OCaml" will appeal both to existing OCaml programmers who wish
to brush up their skills, and to experienced programmers eager to
explore functional languages such as OCaml. It is hoped that each
reader will find something new, or see an old thing in a new
light. For the more casual reader, or those who are used to
a different functional language, a summary of basic OCaml is provided
at the front of the book.
      

OCaml 4.02.0

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-08/msg00127.html

Damien Doligez announced:
We have the pleasure of celebrating the anniversary of the
last concert of the Beatles by announcing the release of OCaml
version 4.02.0.

It is available here: < http://caml.inria.fr/download.en.html >

Starting with this release, we stop providing binary packages
on Unix-like machines (Linux, MacOS). You are invited to go
to http://ocaml.org and use the OPAM package manager for all
your installation needs. Many thanks to the packagers who
contribute to the OPAM repository.

Many thanks also to everyone who reported bugs and proposed
new features through the BTS and GitHub.

Happy hacking,

-- Damien Doligez for the OCaml team.


OCaml 4.02.0:
-------------

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

Language features:
- Attributes and extension nodes
  (Alain Frisch)
- Generative functors (PR#5905)
  (Jacques Garrigue)
- Module aliases
  (Jacques Garrigue)
* Alternative syntax for string literals {id|...|id} (can break comments)
  (Alain Frisch)
- Separation between read-only strings (type string) and read-write byte
  sequences (type bytes). Activated by command-line option -safe-string.
  (Damien Doligez)
- PR#6318: Exception cases in pattern matching
  (Jeremy Yallop, backend by Alain Frisch)
- PR#5584: Extensible open datatypes
  (Leo White)

Build system for the OCaml distribution:
- Use -bin-annot when building.
- Use GNU make instead of portable makefiles.
- Updated build instructions for 32-bit Mac OS X on Intel hardware.

Shedding weight:
* Removed Camlp4 from the distribution, now available as third-party software.
* Removed Labltk from the distribution, now available as a third-party library.

Type system:
* PR#6235: Keep typing of pattern cases independent in principal mode
  (i.e. information from previous cases is no longer used when typing
  patterns; cf. 'PR#6235' in testsuite/test/typing-warnings/records.ml)
  (Jacques Garrigue)
- Allow opening a first-class module or applying a generative functor
  in the body of a generative functor. Allow it also in the body of
  an applicative functor if no types are created
  (Jacques Garrigue, suggestion by Leo White)
* Module aliases are now typed in a specific way, which remembers their
  identity. In particular this changes the signature inferred by
  "module type of"
  (Jacques Garrigue, feedback from Leo White, Mark Shinwell and Nick Chapman)
- PR#6331: Slight change in the criterion to distinguish private
  abbreviations and private row types: create a private abbreviation for
  closed objects and fixed polymorphic variants.
  (Jacques Garrigue)
* PR#6333: Compare first class module types structurally rather than
  nominally. Value subtyping allows module subtyping as long as the internal
  representation is unchanged.
  (Jacques Garrigue)

Compilers:
- More aggressive constant propagation, including float and
  int32/int64/nativeint arithmetic.  Constant propagation for floats
  can be turned off with option -no-float-const-prop, for codes that
  change FP rounding modes at run-time.
  (Xavier Leroy)
- New back-end optimization pass: common subexpression elimination (CSE).
  (Reuses results of previous computations instead of recomputing them.)
  (Xavier Leroy)
- New back-end optimization pass: dead code elimination.
  (Removes arithmetic and load instructions whose results are unused.)
  (Xavier Leroy)
- PR#6269: Optimization of sequences of string patterns
  (Benoît Vaugon and Luc Maranget)
- Experimental native code generator for AArch64 (ARM 64 bits)
  (Xavier Leroy)
- PR#6042: Optimization of integer division and modulus by constant divisors
  (Xavier Leroy and Phil Denys)
- Add "-open" command line flag for opening a single module before typing
  (Leo White, Mark Shinwell and Nick Chapman)
* "-o" now sets module name to the output file name up to the first "."
  (it also applies when "-o" is not given, i.e. the module name is then
   the input file name up to the first ".")
  (Leo White, Mark Shinwell and Nick Chapman)
* PR#5779: better sharing of structured constants
  (Alain Frisch)
- PR#5817: new flag to keep locations in cmi files
  (Alain Frisch)
- PR#5854: issue warning 3 when referring to a value marked with
  the [@@ocaml.deprecated] attribute
  (Alain Frisch, suggestion by Pierre-Marie Pédrot)
- PR#6017: a new format implementation based on GADTs
  (Benoît Vaugon and Gabriel Scherer)
* PR#6203: Constant exception constructors no longer allocate
  (Alain Frisch)
- PR#6260: avoid unnecessary boxing in let
  (Vladimir Brankov)
- PR#6345: Better compilation of optional arguments with default values
  (Alain Frisch, review by Jacques Garrigue)
- PR#6389: ocamlopt -opaque option for incremental native compilation
  (Pierre Chambart, Gabriel Scherer)

Toplevel interactive system:
- PR#5377: New "#show_*" directives
  (ygrek, Jacques Garrigue and Alain Frisch)

Runtime system:
- New configure option "-no-naked-pointers" to improve performance by
  avoiding page table tests during block darkening and the marking phase
  of the major GC.  In this mode, all out-of-heap pointers must point at
  things that look like OCaml values: in particular they must have a valid
  header.  The colour of said headers should be black.
  (Mark Shinwell, reviews by Damien Doligez and Xavier Leroy)
- Fixed bug in native code version of [caml_raise_with_string] that could
  potentially lead to heap corruption.
  (Mark Shinwell)
- Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with
  [Val_unit] rather than zero.
  (Mark Shinwell)
- Fixed a major performance problem on large heaps (~1GB) by making heap
  increments proportional to heap size by default
  (Damien Doligez)
- PR#4765: Structural equality treats exception specifically
  (Alain Frisch)
- PR#5009: efficient comparison/indexing of exceptions
  (Alain Frisch, request by Markus Mottl)
- PR#6075: avoid using unsafe C library functions (strcpy, strcat, sprintf)
  (Xavier Leroy, reports from user 'jfc' and Anil Madhavapeddy)
- An ISO C99-compliant C compiler and standard library is now assumed.
  (Plus special exceptions for MSVC.)  In particular, emulation code for
  64-bit integer arithmetic was removed, the C compiler must support a
  64-bit integer type.
  (Xavier Leroy)

Standard library:
* Add new modules Bytes and BytesLabels for mutable byte sequences.
  (Damien Doligez)
- PR#4986: add List.sort_uniq and Set.of_list
  (Alain Frisch)
- PR#5935: a faster version of "raise" which does not maintain the backtrace
  (Alain Frisch)
- PR#6146: support "Unix.kill pid Sys.sigkill" under Windows
  (Romain Bardou and Alain Frisch)
- PR#6148: speed improvement for Buffer
  (John Whitington)
- PR#6180: efficient creation of uninitialized float arrays
  (Alain Frisch, request by Markus Mottl)
- PR#6355: Improve documentation regarding finalisers and multithreading
  (Daniel Bünzli, Mark Shinwell)
- Trigger warning 3 for all values marked as deprecated in the documentation.
  (Damien Doligez)

OCamldoc:
- PR#6257: handle full doc comments for variant constructors and
  record fields
  (Maxence Guesdon, request by ygrek)
- PR#6274: allow doc comments on object types
  (Thomas Refis)
- PR#6310: fix ocamldoc's subscript/superscript CSS font size
  (Anil Madhavapeddy)
- PR#6425: fix generation of man pages
  (Maxence Guesdon, report by Anil Madhavapeddy)

Bug fixes:
- PR#2719: wrong scheduling of bound checks within a
  try...with Invalid_argument -> _ ...  (Xavier Leroy)
- PR#4719: Sys.executable_name wrong if executable name contains dots (Windows)
  (Alain Frisch, report by Bart Jacobs)
- PR#5406 ocamlbuild: "tag 'package' does not expect a parameter"
  (Gabriel Scherer)
- PR#5598, PR#6165: Alterations to handling of \013 in source files
  breaking other tools
  (David Allsopp and Damien Doligez)
- PR#5820: Fix camlp4 lexer roll back problem
  (Hongbo Zhang)
- PR#5946: CAMLprim taking (void) as argument
  (Benoît Vaugon)
- PR#6038: on x86-32, enforce 16-byte stack alignment for compatibility
  with recent GCC and Clang.  Win32/MSVC keeps 4-byte stack alignment.
  (Xavier Leroy)
- PR#6062: Fix a 4.01 camlp4 DELETE_RULE regression caused by commit 13047
  (Hongbo Zhang, report by Christophe Troestler)
- PR#6173: Typing error message is worse than before
  (Jacques Garrigue and John Whitington)
- PR#6174: OCaml compiler loops on an example using GADTs (-rectypes case)
  (Jacques Garrigue and Grégoire Henry, report by Chantal Keller)
- PR#6175: open! was not suppored by camlp4
  (Hongbo Zhang)
- PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate
  (Jacques-Pascal Deplaix)
- PR#6194: Incorrect unused warning with first-class modules in patterns
  (Jacques Garrigue, report by Markus Mottl and Leo White)
- PR#6211: in toplevel interactive use, bad interaction between uncaught
  exceptions and multiple bindings of the form "let x = a let y = b;;".
  (Xavier Leroy)
- PR#6216: inlining of GADT matches generates invalid assembly
  (Xavier Leroy and Alain Frisch, report by Mark Shinwell)
- PR#6232: Don't use [mktemp] on platforms where [mkstemp] is available
  (Stéphane Glondu, Mark Shinwell)
- PR#6233: out-of-bounds exceptions lose their locations on ARM, PowerPC
  (Jacques-Henri Jourdan and Xavier Leroy,
   report and testing by Stéphane Glondu)
- PR#6235: Issue with type information flowing through a variant pattern
  (Jacques Garrigue, report by Hongbo Zhang)
- PR#6239: sometimes wrong stack alignment when raising exceptions
           in -g mode with backtraces active
  (Xavier Leroy, report by Yaron Minsky)
- PR#6240: Fail to expand module type abbreviation during substyping
  (Jacques Garrigue, report by Leo White)
- PR#6241: Assumed inequality between paths involving functor arguments
  (Jacques Garrigue, report by Jeremy Yallop)
- PR#6243: Make "ocamlopt -g" more resistant to ill-formed locations
  (Xavier Leroy, report by Pierre-Marie Pédrot)
- PR#6262: equality of first-class modules take module aliases into account
  (Alain Frisch and Leo White)
- PR#6268: -DMODEL_$(MODEL) not passed when building asmrun/arm.p.o
  (Peter Michael Green)
- PR#6273: fix Sys.file_exists on large files (Win32)
  (Christoph Bauer)
- PR#6275: Soundness bug related to type constraints
  (Jacques Garrigue, report by Leo White)
- PR#6293: Assert_failure with invalid package type
  (Jacques Garrigue, report by Elnatan Reisner)
- PR#6300: ocamlbuild -use-ocamlfind conflicts with -ocamlc
  (Gabriel Scherer)
- PR#6302: bytecode debug information re-read from filesystem every time
  (Jacques-Henri Jourdan)
- PR#6307: Behavior of 'module type of' w.r.t. module aliases
  (Jacques Garrigue, report by Alain Frisch)
- PR#6332: Unix.open_process fails to pass empty arguments under Windows
  (Damien Doligez, report Virgile Prevosto)
- PR#6346: Build failure with latest version of xcode on OSX
  (Jérémie Dimino)
- PR#6348: Unification failure for GADT when original definition is hidden
  (Leo White and Jacques Garrigue, report by Jeremy Yallop)
- PR#6352: Automatic removal of optional arguments and sequencing
  (Jacques Garrigue and Alain Frisch)
- PR#6361: Hashtbl.hash not terminating on some lazy values w/ recursive types
  (Xavier Leroy, report by Leo White)
- PR#6383: Exception Not_found when using object type in absent module
  (Jacques Garrigue, report by Sébastien Briais)
- PR#6384: Uncaught Not_found exception with a hidden .cmi file
  (Leo White)
- PR#6385: wrong allocation of large closures by the bytecode interpreter
  (Xavier Leroy, report by Stephen Dolan)
- PR#6394: Assertion failed in Typecore.expand_path
  (Alain Frisch and Jacques Garrigue)
- PR#6405: unsound interaction of -rectypes and GADTs
  (Jacques Garrigue, report by Gabriel Scherer and Benoît Vaugon)
- PR#6408: Optional arguments given as ~?arg instead of ?arg in message
  (Michael O'Connor)
- PR#6411: missing libgcc_s_sjlj-1.dll in mingw (add -static-libgcc)
  (Jun Furuse and Alain Frisch, Jonathan Protzenko and Adrien Nader)
- PR#6436: Typos in @deprecated text in stdlib/arrayLabels.mli
  (John Whitington)
- PR#6439: Don't use the deprecated [getpagesize] function
  (John Whitington, Mark Shinwell)
- PR#6441: undetected tail-call in some mutually-recursive functions
  (many arguments, and mutual block mixes functions and non-functions)
  (Stefan Holdermans, review by Xavier Leroy)
- PR#6443: ocaml segfault when List.fold_left is traced then executed
  (Jacques Garrigue, report by user 'Reventlov')
- PR#6451: some bugs in untypeast.ml
  (Jun Furuse, review by Alain Frisch)
- PR#6460: runtime assertion failure with large [| e1;...eN |]
  float array expressions
  (Leo White)
- PR#6463: -dtypedtree fails on class fields
  (Leo White)
- PR#6469: invalid -dsource printing of "external _pipe = ...", "Pervasives.(!)"
  (Gabriel Scherer and Damien Doligez, user 'ngunn')
- PR#6482: ocamlbuild fails when _tags file in unhygienic directory
  (Gabriel Scherer)
- PR#6502: ocamlbuild spurious warning on "use_menhir" tag
  (Xavier Leroy)
- PR#6505: Missed Type-error leads to a segfault upon record access
  (Jacques Garrigue, Jeremy Yallop, report by Christoph Höger)
- PR#6507: crash on AArch64 resulting from incorrect setting of
  [caml_bottom_of_stack].  (Richard Jones, Mark Shinwell)
- PR#6509: add -linkall flag to ocamlcommon.cma
  (Frédéric Bour)
- PR#6513: Fatal error Ctype.Unify(_) in functor type
- PR#6523: failure upon character bigarray access, and unnecessary change
  in comparison ordering (Jeremy Yallop, Mark Shinwell)
- bound-checking bug in caml_string_{get,set}{16,32,64}
  (Pierre Chambart and Gabriel Scherer, report by Nicolas Trangez)
- sometimes wrong stack alignment at out-of-bounds array access
  (Gabriel Scherer and Xavier Leroy, report by Pierre Chambart)

Features wishes:
- PR#4243: make the Makefiles parallelizable
  (Grégoire Henry and Damien Doligez)
- PR#4323: have "of_string" in Num and Big_int work with binary and
           hex representations
  (Zoe Paraskevopoulou, review by Gabriel Scherer)
- PR#4771: Clarify documentation of Dynlink.allow_only
  (Damien Doligez, report by David Allsopp)
- PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where'
  (Jun Furuse and Hongbo Zhang, report by Dmitry Grebeniuk)
- PR#5201: ocamlbuild: add --norc to the bash invocation to help performances
  (user 'daweil')
- PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types
  (Hongbo Zhang)
- PR#5808: allow simple patterns, not just identifiers, in "let p : t = ..."
  (Alain Frisch)
- PR#5851: warn when -r is disabled because no _tags file is present
  (Gabriel Scherer)
- PR#5899: a programmer-friendly access to backtrace information
  (Jacques-Henri Jourdan and Gabriel Scherer)
- PR#6000 comment 9644: add a warning for non-principal coercions to format
  (Jacques Garrigue, report by Damien Doligez)
- PR#6054: add support for M.[ foo ], M.[| foo |] etc.
  (Kaustuv Chaudhuri)
- PR#6064: GADT representation for Bigarray.kind + CAML_BA_CHAR runtime kind
  (Jeremy Yallop, review by Gabriel Scherer)
- PR#6071: Add a -noinit option to the toplevel
  (David Sheets)
- PR#6087: ocamlbuild, improve _tags parsing of escaped newlines
  (Gabriel Scherer, request by Daniel Bünzli)
- PR#6109: Typos in ocamlbuild error messages
  (Gabriel Kerneis)
- PR#6116: more efficient implementation of Digest.to_hex
  (ygrek)
- PR#6142: add cmt file support to ocamlobjinfo
  (Anil Madhavapeddy)
- PR#6166: document -ocamldoc option of ocamlbuild
  (Xavier Clerc)
- PR#6182: better message for virtual objects and class types
  (Leo White, Stephen Dolan)
- PR#6183: enhanced documentation for 'Unix.shutdown_connection'
  (Anil Madhavapeddy, report by Jun Furuse)
- PR#6187: ocamlbuild: warn when using -plugin-tag(s) without myocamlbuild.ml
  (Jacques-Pascal Deplaix)
- PR#6246: allow wildcard _ as for-loop index
  (Alain Frisch, request by ygrek)
- PR#6267: more information printed by "bt" command of ocamldebug
  (Josh Watzman)
- PR#6270: remove need for -I directives to ocamldebug in common case
  (Josh Watzman, review by Xavier Clerc and Alain Frisch)
- PR#6311: Improve signature mismatch error messages
  (Alain Frisch, suggestion by Daniel Bünzli)
- PR#6358: obey DESTDIR in install targets
  (Gabriel Scherer, request by François Berenger)
- PR#6388, PR#6424: more parsetree correctness checks for -ppx users
  (Alain Frisch, request by Peter Zotov and Jun Furuse)
- PR#6406: Expose OCaml version in C headers
  (Peter Zotov and Romain Calascibetta)
- PR#6446: improve "unused declaration" warnings wrt. name shadowing
  (Alain Frisch)
- PR#6495: ocamlbuild tags 'safe_string', 'unsafe_string'
  (Anil Madhavapeddy)
- PR#6497: pass context information to -ppx preprocessors
  (Peter Zotov, Alain Frisch)
- ocamllex: user-definable refill action
  (Frédéric Bour, review by Gabriel Scherer and Luc Maranget)
- shorten syntax for functor signatures: "functor (M1:S1) (M2:S2) .. -> .."
  (Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Scherer)
- make ocamldebug -I auto-detection work with ocamlbuild
  (Josh Watzman)
      

Immutable strings

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-08/msg00129.html

Damien Doligez replied to this old message from Christophe Troestler:
> What about having a phantom variable on bytes indicating access?  A
> string could become a "ro bytes" without copying.

Technically, that would work. In the latest developers meeting, we
decided against the phantom type approach because its main advantage
is also its main drawback: it takes advantage of the common
representation of string and bytes.

By keeping the two types separate, we get the freedom of representing
them differently. While we have no short-term plan to do that in the
normal OCaml runtime, we expect this to be a big win for the likes of
ocamljava and js_of_ocaml.

Also, as far as we can tell (and we need user feedback at this point)
strings and byte buffers are quite distinct in normal OCaml source,
so we wouldn't win much by being able to mix them.

We are also open to feedback and suggestions on convenience functions
that could be added to string.ml to help build strings in common cases
without going through a bytes value (http://caml.inria.fr/mantis/view.php?id=6500 )
      

ocmalnet-3.7.5

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-08/msg00135.html

Gerd Stolpmann announced:
I'm pleased to announce ocamlnet-3.7.5. This version supports
OCaml-4.02, in particular:

 - Crashes because of the different representation of exceptions
   are fixed.
 - In C code, the int64 type is replaced by int64_t.
 - It is no longer required that camlp4 is installed. Instead,
   an included version of cppo is used for conditional compilation.
   This also speeds the build up.

There are a few more changes, see the ChangeLog for details.

Download, the manual, and other details are available here:

http://projects.camlcity.org/projects/ocamlnet.html

NB. At the same time, I'm also releasing version 4.0.0test2. This
version is just a snapshot of the current development. It includes all
changes that are needed for OCaml-4.02. See also a separate
announcement.
      

ocamlnet-4.0.0test2 (development snapshot)

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-08/msg00136.html

Gerd Stolpmann announced:
as mentioned there is now also a new snapshot of the development
version: 4.0.0test2.

The previous snapshot introduced GnuTLS as new TLS backend, and a
modular approach to configure the TLS backend, and which backend is
used. First-class modules were used to achieve the required level of
modularity.

This version adds new bindings for GNU Nettle, the crypto library used
by GnuTLS. This makes many symmetric ciphers and hash functions
available, some even with support for hardware acceleration. The same
plugin approach as for TLS is used.

Read more about these concepts here:

http://projects.camlcity.org/projects/dl/ocamlnet-4.0.0test2/doc/html-main/Tls.html
http://projects.camlcity.org/projects/dl/ocamlnet-4.0.0test2/doc/html-main/Crypto.html

This ocamlnet version is not intended for packaging. Of course, any
feedback is welcome. Get the download link and the manual here:

http://projects.camlcity.org/projects/ocamlnet.html


NB: Of course, I'm also planning to support the "bytes" type at some
point. However, given the complexity of the effort (especially regarding
the interface design), I'd like to hear about the experience of other
OCaml developers first, and maybe the OCaml standard library will get
better over time, and make the task simpler.
      

UTop 1.15

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-09/msg00001.html

Jeremie Dimino announced:
I'm pleased to announce UTop 1.15. UTop is an improved toplevel for
OCaml. Here are some of the recent changes:

- support OCaml 4.02
- fix a stack overflow on large output
- support `#ppx`, `-ppx`
- support `-require` and `-syntax` for scripts
- make utop.el compatible with melpa: http://melpa.milkbox.net

You can find an introduction to UTop in this recent blog post:

[1] http://opam.ocaml.org/blog/about-utop/

UTop is available via opam and some documentation can be found on the
github project page:

https://github.com/diml/utop

Thanks for all the contributions, and especially to Peter Zotov who
recently joined the project.
      

Ocaml 4.02.0: Dead Code Elimination and Core

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-09/msg00003.html

Christopher Yocum asked and Jeremie Dimino replied:
> I saw that there is dead code elimination in 4.02.0 and I thought
> to myself that this would help make Core's very large binaries
> smaller. So, I switch compilers and did a test. Unfortunately, a
> small sample program compiled with ocamlopt and using
> Core.Std.List was still 11MB. I very much doubt that my binary
> really needs to be 11MB. Is there a way to shrink the size? I had
> heard about namesapces elsewhere before but I think that
> discussion died.

AFAIK 4.02 doesn't do much more dead code elimination than 4.01. There
is an entry about dead code elimination in the changelog but it is a
local optimization that is unlikely to change the size of binaries
much.

However there is a new feature of 4.02 that will help reduce the size
of binaries using Core: module aliases. Core will have to be updated
to take advantage of it. We are hopping to release a new version of
Core using module aliases soon.
      

Camlp4 4.02.0

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-09/msg00009.html

Jeremie Dimino announced:
This announces the first external release of Camlp4. Camlp4 is a
preprocessor pretty-printer that used to be distrubuted with OCaml up
to version 4.01. The project is now standalone hosted on github:

https://github.com/ocaml/camlp4

This version is compatible with OCaml 4.02 only. It doesn't yet
support all the new syntaxes of 4.02 but most of them are already in
the git repository and should be released soon.
      

Cryptosense is hiring!

Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-09/msg00010.html

Thomas Braibant announced:
Cryptosense produces software that finds vulnerabilities in the
cryptographic systems used in banks and other security-sensitive
environments. We specialise in security analysis. Based in downtown
Paris, we use OCaml as our core language because it's the right tool
for the job, though we also occasionally use other languages when
appropriate (e.g., C, Java, Javascript).

We are expanding our team and need an outstanding engineer with a
taste for difficult algorithmic problems and performance engineering
challenges. The ideal candidate will have a masters or PhD in a
related area and some experience of at least one of: formal
methods, model checking, cryptography or machine learning.

At Cryptosense, we encourage developers to be autonomous and take
ownership of problems as well as fostering a culture of team
spirit and knowledge sharing. We are building a strong internal
training programme to bring you up to speed in every area.

The remuneration package includes a salary commensurate with
experience as well as stock options. For info, Cryptosense is a
spin-off of Inria created in 2013. We recently closed a seed
funding round with one of the best-known VC firms in Paris.

You can find out more about Cryptosense on the company blog

http://cryptosense.com/blog/

and more about working for us on our jobs page

http://cryptosense.com/working-at-cryptosense/ ‎

Let me know if you are interested or know someone who might be
interested. Romain Bardou and myself will be present later this week
at ICFP if you want to chat about what we do.
      

Other OCaml News

From the ocamlcore planet blog:
Thanks to Alp Mestan, we now include in the OCaml Weekly News the links to the
recent posts from the ocamlcore planet blog at http://planet.ocaml.org/.

Terms With Variables (C++):
  http://shayne-fletcher.blogspot.com/2014/08/terms-with-variables-c.html

Talks from OCaml Labs during ICFP 2014:
  http://anil.recoil.org/2014/08/31/ocaml-labs-at-icfp-2014.html

virt-v2v: better living through new technology:
  http://rwmj.wordpress.com/2014/08/29/virt-v2v-better-living-through-new-technology/

OCaml 4.02.0 released:
  http://caml.inria.fr/pub/distrib/ocaml-4.02/

Senior Software Engineer (Functional) at McGraw-Hill Education (Full-time):
  http://functionaljobs.com/jobs/8737-senior-software-engineer-functional-at-mcgraw-hill-education

Full Time: Software Developer (Functional Programming) at Jane Street in New York, NY; London, UK; Hong Kong:
  http://jobs.github.com/positions/0a9333c4-71da-11e0-9ac7-692793c00b45

More OCaml: Algorithms, Methods & Diversions:
  http://ocaml-book.com/blog/2014/8/27/more-ocaml-algorithms-methods-diversions
      

Old cwn

If you happen to miss a CWN, you can send me a message and I'll mail it to you, or go take a look at the archive or the RSS feed of the archives.

If you also wish to receive it every week by mail, you may subscribe online.


Alan Schmitt