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

Alan Schmitt alan.schmitt at polytechnique.org
Tue Nov 13 01:22:24 PST 2018


Hello

Here is the latest OCaml Weekly News, for the week of November 06 to 13,
2018.

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

Dune 1.5.0
Jerboa 0.1 (Web framework) and SandDB 0.2 (Database)
Static website generators?
The Ray Tracer Challenge
Deprecating -annot
Ocaml Github Pull Requests
Other OCaml News
Old CWN


Dune 1.5.0
══════════

  Archive: [https://discuss.ocaml.org/t/ann-dune-1-5-0/2837/1]


Rudi Grinberg announced
───────────────────────

  On behalf of the dune team, I'm pleased to announce the 1.5.0 release
  of dune. This release does not contain any major features, but it does
  contain a few notable bug fixes and a couple of useful little
  additions. First of all, `$ dune exec' now supports `C-c' again - I
  know this affected many of you. This releases introduces a couple of
  new aliases that will hopefully find their way into your workflows.

  The first alias is `@all' and has been much requested by our
  users. Roughly speaking, `$ dune build @dir/all' will build all user
  defined targets in a the directory `dir'. This would include binaries,
  libraries, and user defined targets in `dir'. This alias should have
  been the defaulted instead of `@install' when running `$ dune build',
  but we'll have to wait until dune 2.0 to make this compatibility
  breaking change. In the mean time, I highly recommend everyone to use
  `$ dune build @all' instead of `$ dune build' meanwhile. You may also
  set the default alias per project as well:

  ┌────
  │ (alias
  │  (name default)
  │  (deps (alias_rec all)))
  └────

  The second new alias is `@check'. It is inspired by cargo's `check'
  subcommand and roughly corresponds to type checking the project and
  building all artifacts necessary for editor integration - cmt, cmti's,
  .merlin, etc. This is the fastest target to verify that a project is
  in a valid state. Note that this alias will not relink binaries so it
  might not catch errors such as missing stubs. I find this alias handy
  when doing large, type driven refactoring of a codebase.

  The rest of the change log is replicated below. Happy hacking!


1.5.0 (1/11/2018)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • Filter out empty paths from `OCAMLPATH' and `PATH' (#1436,
    @rgrinberg)

  • Do not add the `lib.cma.js' target in lib's directory. Put this
    target in a sub directory instead. (#1435, fix #1302, @rgrinberg)

  • Install generated OCaml files with a `.ml' rather than a `.ml-gen'
    extension (#1425, fix #1414, @rgrinberg)

  • Allow to use the `bigarray' library in >= 4.07 without ocamlfind and
    without installing the corresponding `otherlib'. (#1455, @nojb)

  • Add `@all' alias to build all targets defined in a directory (#1409,
    fix #1220, @rgrinberg)

  • Add `@check' alias to build all targets required for type checking
    and tooling support. (#1447, fix #1220, @rgrinberg)

  • Produce the odoc index page with the content wrapper to make it
    consistent with odoc's theming (#1469, @rizo)

  • Unblock signals in processes started by dune (#1461, fixes #1451,
    @diml)

  • Respect `OCAMLFIND_TOOLCHAIN' and add a `toolchain' option to
    contexts in the workspace file. (#1449, fix #1413, @rgrinberg)

  • Fix error message when using `copy_files' stanza to copy files from
    a non sub directory with lang set to dune < 1.3 (#1486, fixes #1485,
    @NathanReb)

  • Install man pages in the correct subdirectory (#1483, fixes #1441,
    @emillon)

  • Fix version syntax check for `test' stanza's `action' field. Only
    emits a warning for retro-compatibility (#1474, fixes #1471,
    @NathanReb)

  • Fix interpretation of paths in `env' stanzas (#1509, fixes #1508,
    @diml)

  • Add `context_name' expansion variable (#1507, @rgrinberg)

  • Use shorter paths for generated on-demand ppx drivers. This is to
    help Windows builds where paths are limited in length (#1511, fixes
    #1497, @diml)

  • Fix interpretation of environment variables under `setenv'. Also
    forbid dynamic environment names or values (#1503, @rgrinberg).


Jerboa 0.1 (Web framework) and SandDB 0.2 (Database)
════════════════════════════════════════════════════

  Archive:
  [https://discuss.ocaml.org/t/ann-jerboa-0-1-web-framework-and-sanddb-0-2-database/2845/1]


Tóth Róbert announced
─────────────────────

Jerboa 0.1
╌╌╌╌╌╌╌╌╌╌

  Today I published [Jerboa] on opam, which is a minimalistic web
  framework.  The main goals of the project is to make a framework,
  which is
  • Small and Minimalistic, so it's easy to understand
  • Flexible, so it doesn't get in your way
  • Easy to use, which means that you only need to understand the basic
    building blocks to use it

  The framework has still a long way to go and it's not as feature rich
  as [opium] at the moment.  What's missing currently that will be
  worked on:
  • HTTPS support
  • Nice way to serve static files
  • Security wise covering the owasp top 10 list
  • Authentication

  Off Topic: Currently the framework is built on top of cohttp, but I
  was thinking about trying out httpaf also, but the inactive status of
  the project worries me.


[Jerboa] https://github.com/StrykerKKD/Jerboa

[opium] https://github.com/rgrinberg/opium


SandDB 0.2
╌╌╌╌╌╌╌╌╌╌

  I published this update on [SandDB] one moth ago and it was mainly a
  fixing and refactoring release, which included:
  • Using dune instead of jbuilder
  • Switching to opam 2.0
  • Renaming a bunch of module
  • Refactoring out the implementation details into non-visible modules
  • Using Set instead of a List for filtering out non-visible records
  • Adding online documentation via github pages

  For future releases I will concentrate on adding:
  • Forward and Backward streams
  • Generic database and serializer interface
  • Making the database id customizable

  Links to projects:
  Jerboa: [https://github.com/StrykerKKD/Jerboa]
  SandDB: [https://github.com/StrykerKKD/SandDB]


[SandDB] https://github.com/StrykerKKD/SandDB


Static website generators?
══════════════════════════

  Archive:
  [https://discuss.ocaml.org/t/static-website-generators/2839/1]


Perry E. Metzger asked
──────────────────────

  Are there any static site generators people particularly like that are
  written in OCaml?


Xavier Van de Woestyne replied
──────────────────────────────

  Hi ! I know :
  • [https://github.com/Armael/stone]
  • [https://www.good-eris.net/stog/]

  Personnaly, I use Hakyll (in Haskell).


Armael then said
────────────────

  > [https://github.com/Armael/stone]

  I wouldn't particularly recommend using it; it is quite basic, and I'm
  not convinced by its design anymore. It should still work though (I
  use it for my webpage).


Calascibetta Romain also replied
────────────────────────────────

  [Canopy] is a PoC which uses MirageOS's framework. It stills
  experimental and you need to pin `irmin' and a branch of it but it
  works :slight_smile: ! If you are interesting by it, we can do
  something to be usable by people.


[Canopy] https://github.com/Engil/Canopy.git/


Hannes Mehnert then added
─────────────────────────

  I use Canopy on [https://hannes.nqsb.io] (with an old irmin, and some
  branch of Canopy). Once irmin 2.0 is released, this should be in a
  better shape :)

  Canopy itself uses omd ([https://github.com/ocaml/omd/]); other
  generators are [https://github.com/mirage/ocaml-cow/] (IIUC
  deprecated, but still used for mirage.io) and
  [https://github.com/samoht/ramen]


Marcus also replied
───────────────────

  Logarion is written in Ocaml.

  [https://logarion.orbitalfox.eu/start-your-own-logarion-archive.html]


The Ray Tracer Challenge
════════════════════════

  Archive: [https://discuss.ocaml.org/t/the-ray-tracer-challenge/2853/1]


Przemek announced
─────────────────

  There is a nice, language-agnostic book about ray tracing called "The
  Ray Tracer Challenge"
  [https://pragprog.com/book/jbtracer/the-ray-tracer-challenge] I think
  it makes good case for learning a new language, so I share what I got
  so far in OCaml: [https://github.com/CGenie/ray-tracer]


Igarnier then saide
───────────────────

  Hi, thanks, this is a cool idea!  In case it is of interest to you, I
  recently published an old implementation of a toy raytracer here (in
  lib_test): [https://github.com/igarnier/bih] It uses an acceleration
  structure called the bounding interval hierarchy, that had its moment
  circa ~2007 and which could be of independent interest.


Deprecating -annot
══════════════════

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


Nicolás Ojeda Bär announced
───────────────────────────

  In the last caml-devel meeting it was decided to deprecate .annot
  files and the -annot switch. This is currently being worked on at
  [https://github.com/ocaml/ocaml/pull/2141].

  Note this does NOT mean that .annot files will be going away anytime
  soon. Rather it means that technical decisions will be taken with the
  understanding that it is a legacy functionality and it may go away at
  some point in the future.

  The main reason for the deprecation is that it is superseded by
  .cmt-based infrastructure (as exploited by e.g. merlin, ocp-index,
  etc).

  To have a more accurate picture of the impact of the deprecation and
  eventual removal of this feature, we would love to hear from the
  community if you are still using .annot files and, if yes, whether
  migrating to a .cmt-based solution would present a problem.


Boris Yakobowski replied
────────────────────────

  I was thinking about the good old .annot days (finally, type
  information in emacs!), as well as of the not-so-good-ones (generation
  of the .annot file that took longer than the compilation of the
  file). By large, .cmt files have been a improvement in my experience.

  That being said, there is one use of .annot files that I have not been
  able to port to .cmt files: finding (unsafe) uses of
  Pervasives.compare or Pervasives.equal in a codebase. My workflow is
  as follow:
  • generate the .annot files
  • grep for Pervasives.( = ) or Pervasives.compare with sufficient
    context
  • dismiss all calls that occur on a basic type (typically scalars)
  • check all remaining calls for an use on an abstract or
    possible-cyclic type

  Clearly this process is not exactly efficient, and would be much
  better handled by a compiler warning – especially since the compiler
  would be able to notice type equalities such as t = int coming from
  the context. So this message must not be understood as a real
  suggestion to keep .annot file in the end :)


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.

  • [Add Exn module]
  • [Deprecate -annot]


[Add Exn module] https://github.com/ocaml/ocaml/pull/2137

[Deprecate -annot] https://github.com/ocaml/ocaml/pull/2141


Other OCaml News
════════════════

From the ocamlcore planet blog
──────────────────────────────

  Here are links from many OCaml blogs aggregated at [OCaml Planet].

  • [First Open-Source Release of TzScan]
  • [Liquidity Tutorial: A Game with an Oracle for Random Numbers]


[OCaml Planet] http://ocaml.org/community/planet/

[First Open-Source Release of TzScan]
http://www.ocamlpro.com/2018/11/08/first-open-source-release-of-tzscan/

[Liquidity Tutorial: A Game with an Oracle for Random Numbers]
http://www.ocamlpro.com/2018/11/06/liquidity-tutorial-a-game-with-an-oracle-for-random-numbers/


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/20181113/4b9f0b30/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20181113/4b9f0b30/attachment-0001.pgp>


More information about the caml-news-weekly mailing list