Hello
Here is the latest OCaml Weekly News, for the week of August 26 to September 02, 2014.
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.
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)
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 )
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.
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.
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.
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.
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.
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.
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
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.