[cwn] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt alan.schmitt at polytechnique.org
Tue Oct 9 06:45:55 PDT 2018


Hello

Here is the latest OCaml Weekly News, for the week of October 02 to 09,
2018.

Table of Contents
─────────────────

OCaml 4.07.1 released
ppx_yojson: a ppx extension for Yojson literals and patterns
Releases: ppx_deriving_cmdliner, Genspio, Febusy
BER MetaOCaml N107, for OCaml 4.07.1
How to write a simple socket-based web client (for Docker)
Ocaml Github Pull Requests
Old CWN


OCaml 4.07.1 released
═════════════════════

  Archive:
  [https://sympa.inria.fr/sympa/arc/caml-list/2018-10/msg00003.html]


Damien Doligez announced
────────────────────────

  We have the pleasure of celebrating the anniversary of Sputnik-1 by
  announcing the release of OCaml version 4.07.1.
  This is a bug-fix release, see the list of changes below.

  It is (or soon will be) available as a set of OPAM switches, and as a
  source download here:
    [https://caml.inria.fr/pub/distrib/ocaml-4.07/]

  Happy hacking,

  – Damien Doligez for the OCaml team.


OCaml 4.07.1 (4 October 2018)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ Bug fixes:

  • MPR#7815, GPR#1896: major GC crash with first-fit policy (Stephen
    Dolan and Damien Doligez, report by Joris Giovannangeli)

  • * MPR#7818, GPR#2051: Remove local aliases in functor argument
    types, to prevent the aliasing of their target.  (Jacques Garrigue,
    report by mandrykin, review by Leo White)

  • MPR#7820, GPR#1897: Fix Array.of_seq. This function used to apply a
    circular permutation of one cell to the right on the sequence.
    (Thierry Martinez, review by Nicolás Ojeda Bär)

  • MPR#7821, GPR#1908: make sure that the compilation of extension
    constructors doesn't cause the compiler to load more cmi files
    (Jérémie Dimino)

  • MPR#7824, GPR#1914: subtype_row: filter out absent fields when row
    is closed (Leo White and Thomas Refis, report by talex, review by
    Jacques Garrigue)

  • GPR#1915: rec_check.ml is too permissive for certain class
    declarations.  (Alban Reynaud with Gabriel Scherer, review by Jeremy
    Yallop)

  • MPR#7833, MPR#7835, MPR#7822, GPR#1997: Track newtype level again
    (Leo White, reports by Jerome Simeon, Thomas Refis and Florian
    Angeletti, review by Jacques Garrigue)

  • MPR#7838: -principal causes assertion failure in type checker
    (Jacques Garrigue, report by Markus Mottl, review by Thomas Refis)


ppx_yojson: a ppx extension for Yojson literals and patterns
════════════════════════════════════════════════════════════

  Archive:
  [https://discuss.ocaml.org/t/ann-ppx-yojson-a-ppx-extension-for-yojson-literals-and-patterns/2669/1]


Nathan Rebours announced
────────────────────────

  I'm happy to announce the release of `ppx_yojson' a rewriter for all
  of you out there working with `Yojson'. Version `0.1.0' provides an
  extension to write `Yojson' literal expressions in a more concise and
  readable way.

  As an example, you can write:
  ┌────
  │ let json = [%yojson {some_string = "string"; some_list = [1; 2; 3]}]
  └────
  instead of:
  ┌────
  │ let json =
  │   `Assoc
  │     [ ("some_string", `String "string")
  │     ; ("some_list", `List [`Int 1; `Int 2; `Int 3])
  │     ]
  └────

  It's available on [github] and [opam].  There's more to come soon,
  including extensions for patterns and antiquotations. You can see the
  full list of features goals for the `1.0.0' [here].


[github] https://github.com/NathanReb/ppx_yojson

[opam] https://opam.ocaml.org/packages/ppx_yojson/

[here] https://github.com/NathanReb/ppx_yojson/issues/1


Releases: ppx_deriving_cmdliner, Genspio, Febusy
════════════════════════════════════════════════

  Archive:
  [https://discuss.ocaml.org/t/ann-releases-ppx-deriving-cmdliner-genspio-febusy/2670/1]


Sebastien Mondet announced
──────────────────────────

  Hi, this week I cleaned-up and released 3 packages:


→ Genspio 0.0.2
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Genspio is a typed EDSL used to generate shell scripts and commands
  from OCaml.

  The idea is to build values of type `'a Genspio.EDSL.t' with the
  combinators in the `Genspio.EDSL' module, and compile them to POSIX
  shell scripts (or one-liners) with functions from `Genspio.Compile'.

  See Genspio's documentation root at
  [https://smondet.gitlab.io/genspio-doc/].

  New in 0.0.2:

  • Now, the default `EDSL' module “hides” the distinction between
    C-Strings and byte-arrays from the user. The distinction was
    introduced in the second version 0.0.1, cf. discussion in my OCaml
    2017 [talk].
  • The lower-level API is still there in the module `EDSL_v0'.
  • There is a new compiler (`EDSL.Compile.Slow_flow') which is still
    just a compiler to POSIX shell scripts, but it uses (many) temporary
    files to overall simplify the generated code. The goal is to bypass
    bugs in shells that cannot really handle complex POSIX expressions
    (one example of which is the quite old version of `bash' shipped
    with Mac OSX).
  • Lots of documentation work, including improvements to the
    `js_of_ocaml' [toplevel-website].
  • A new biggish example: [`src/examples/service_composer.ml'] which is
    a code generator for the “COSC” project (Github: [`smondet/cosc']),
    a family of scripts which manage long-running processes in a
    GNU-Screen session (a bit in the style of `docker-compose').
  • Also a lot of test hacking, including `vm_tester.ml' which generates
    Qemu-based testing setups (e.g. a build of Darwin 8.0 to test very
    old OSX environments).

  (release PR: [`ocaml/opam-repository#12738'])


[talk] http://wr.mondet.org/slides/OCaml2017-Genspio/

[toplevel-website]
https://smondet.gitlab.io/genspio-doc/demo/genspio.0.0.2/index.html

[`src/examples/service_composer.ml']
https://github.com/hammerlab/genspio/blob/master/src/examples/service_composer.ml

[`smondet/cosc'] https://github.com/smondet/cosc

[`ocaml/opam-repository#12738']
https://github.com/ocaml/opam-repository/pull/12738


→ Febusy 0.0.0
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Febusy is a monadic-ish library to build dependency graphs between
  effectful computations while keeping track of their products,
  a.k.a. “build artifacts.”

  One uses the module `Febusy.Edsl' to construct a direct acyclic graph
  of build artifacts and then the function `Febusy.Edsl.Make_unix.run'
  to “run” the incremental build. For now, the builds run sequentially
  but the build-artifacts are still properly kept track of between runs
  with “state” files.

  • Source: [https://gitlab.com/smondet/febusy/]
  • Documentation: [http://smondet.gitlab.io/febusy/].

  Version 0.0.0 should be considered “alpha-preview stuff.”

  (release PR: [`ocaml/opam-repository#12747'])


[`ocaml/opam-repository#12747']
https://github.com/ocaml/opam-repository/pull/12747


→ ppx_deriving_cmdliner 0.4.1
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The PPX `ppx_deriving_cmdliner' makes it easy to get a nice command
  line interface without really knowing much about `Cmdliner''s API.

  It is a [ppx_deriving] plugin that generates a [Cmdliner] `'a Term'
  for a given record type.

  This release does not add any new feature, only build improvements
  (recent versions of OCaml, `dune'-based build, …).

  See [https://github.com/hammerlab/ppx_deriving_cmdliner].

  (release PR: [`ocaml/opam-repository#12732'])


[ppx_deriving] https://github.com/whitequark/ppx_deriving

[Cmdliner] https://github.com/dbuenzli/cmdliner

[`ocaml/opam-repository#12732']
https://github.com/ocaml/opam-repository/pull/12732


BER MetaOCaml N107, for OCaml 4.07.1
════════════════════════════════════

  Archive:
  [https://sympa.inria.fr/sympa/arc/caml-list/2018-10/msg00007.html]


Oleg announced
──────────────

  BER MetaOCaml N107 is a strict superset of OCaml 4.07.1 for ``writing
  programs that generate programs''.  BER MetaOCaml adds to OCaml the
  type of code values (denoting ``program code'', or future-stage
  computations), and two basic constructs to build them: quoting and
  splicing. The generated code can be printed, stored in a file – or
  compiled and linked-back to the running program, thus implementing
  run-time code optimization. A well-typed BER MetaOCaml program
  generates only well-scoped and well-typed programs: The generated code
  shall compile without type errors.  Staging-annotation-free BER
  MetaOCaml is identical to OCaml; BER MetaOCaml can link to any
  OCaml-compiled library (and vice versa); findlib and other tools can
  be used with BER MetaOCaml as they are, in their binary form.

  BER MetaOCaml N107 is a superset of the just released OCaml 4.07.1.
  It also has a number of small improvements: better error messages, no
  longer needing parentheses when putting a sequence of statements in
  brackets, more convenient genlet, etc.  It also has two notable
  additions: explicit lifting and new offshoring.

  Explicit lifting is the explicit conversion of a value to the code,
  which, when compiled and run, (re-)produces that value.  BER N107
  supports explicit lifting of base-type values and lists, options, and,
  notably, arrays of liftable values. Explicit lifting is described in
  Section 3.2.1 of the MetaOCaml book.

  The generated code, if simple enough, can be `offshored' – converted
  to the intermediate, imperative language which may then be transcribed
  to C, OpenCL, LLVM, etc. When generating computational kernels, the
  code is supposed to be simple enough, so it runs fast. One test case
  in MetaOCaml distribution shows how can one go about converting the
  intermediate code to C. Offshoring thus lets us treat a subset of
  OCaml as a new notation (syntax) for C.

  BER MetaOCaml N107 should be available though OPAM, hopefully soon.
  In the meanwhile, it is available as a set of patches to the OCaml
  4.07.1 distribution.
          [http://okmij.org/ftp/ML/ber-metaocaml-107.tar.gz]
  See the INSTALL document in that archive. You need the source
  distribution of OCaml 4.07.1.

  For more explanations, please see
          [http://okmij.org/ftp/ML/MetaOCaml.html]
  as well as ChangeLog and NOTES.txt in the BER MetaOCaml distribution.


How to write a simple socket-based web client (for Docker)
══════════════════════════════════════════════════════════

  Archive:
  [https://discuss.ocaml.org/t/how-to-write-a-simple-socket-based-web-client-for-docker/1760/10]


njb asked and Christophe replied
────────────────────────────────

  > I’m trying to create a simple client for Docker

  You may be interested by the [docker-api] package (a new version
  should be released soon).  You are welcome to submit PRs to add
  functions you care about.


[docker-api] https://github.com/Chris00/ocaml-docker


Ocaml Github Pull Requests
══════════════════════════

Gabriel Scherer and the editor compiled this list
─────────────────────────────────────────────────

  Here is a sneak peek at some potential future features of the Ocaml
  compiler, discussed by their implementers in these Github Pull
  Requests.

  • [In error messages, print the source fragment responsible for the
    error]
  • [Add infix operators for function composition]


[In error messages, print the source fragment responsible for the error]
https://github.com/ocaml/ocaml/pull/2096

[Add infix operators for function composition]
https://github.com/ocaml/ocaml/pull/2097


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]


[send me a message] mailto:alan.schmitt at polytechnique.org

[the archive] http://alan.petitepomme.net/cwn/

[RSS feed of the archives] http://alan.petitepomme.net/cwn/cwn.rss

[online] http://lists.idyll.org/listinfo/caml-news-weekly/

[Alan Schmitt] http://alan.petitepomme.net/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20181009/57f3308b/attachment-0001.html>
-------------- next part --------------
-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7
Monthly Athmospheric CO₂, Mauna Loa Obs. 2018-09: 405.51, 2017-09: 403.37
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 528 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20181009/57f3308b/attachment-0001.pgp>


More information about the caml-news-weekly mailing list