Hello
Here is the latest OCaml Weekly News, for the week of April 26 to May 03, 2016.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-04/msg00087.html
Jacques Garrigue announced:
This is a combined announce for new versions of LablTk and LablGTK,
ready to serve you with OCaml 4.03.
LablTk is an interface for the Tcl/Tk GUI toolkit, which allows you to
build user interfaces very fast. It comes with the OCamlBrowser
library explorer, which is not only a good demonstration of the
power of LablTk, but also a useful companion in your everyday
program development.
https://forge.ocamlcore.org/projects/labltk/
Until ocaml-4.01, LablTk and OCamlBrowser were part of the
standard distribution, but they were spun off to simplify maintenance.
This new release contains a few bug fixes, and an upgrade of
OCamlBrowser for OCaml 4.03 (as a result, ocamlbrowser will
not compile on older versions).
LablGTK is an interface for the Gtk+ toolkit, version 2. It also
wraps many extensions, such as libglade, for rapid prototyping,
or gtksourceview2, for programming editors.
https://forge.ocamlcore.org/projects/lablgtk/
This is a bug fix release, which in particular fixes some incompatibilities
with 4.03.
Both libraries should also soon be available on opam.
Jacques Garrigue
LablTk 8.06.0 changelog:
* Adapt to ocaml 4.03
* Fix const qualifiers in C code
LablGTK 2.18.4 changelog:
* update applications
* Fix ml_gnome_canvas_c2w (Didier Le Botlan)
* remove build dependency on camlp4 (still needed for tree version)
* allow to change the GC speed (i.e. the impact of custom blocks)
see GMain.Gc_custom.set_speed.
* use own definition of alloc_custom, to be sure to allocate in the heap
* fix GtkTree.TreeModel.cast
* add get_image and get_pixbuf to GDraw.drawable.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-04/msg00098.html
Continuing the thread from last week, Fabrice Le Fessant announced:
OPAM-builder has been updated to display build results for all OPAM packages for
this new version 4.03.0:
http://opam.ocamlpro.com/builder/html/report-last.html
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-04/msg00104.html
Sylvain Le Gall announced:
Hotfix version to compile with OCaml 4.03.0 + OPAM release.
http://le-gall.net/sylvain+violaine/blog/index.php?post/2016/04/29/Release-of-OASIS-0.4.6
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-05/msg00003.html
Deep in this thread, Gabriel Scherer said:
Markus Weißmann:
>>> The value comes from C bindings, but from a string-value via Char.code.
>>> It is then passed through a constructor-function to create the record;
>>> I added a check there to see if the C bindings are to blame:
Gerd Stolpmann:
>> Well, there are other types of errors in C bindings that could also
>> cause this. Imagine what happens when the C bindings do not properly
>> handle pointers (e.g. do not declare them as local roots), and an
>> outdated pointer to an int is followed by the GC because of this.
>> Because the minor GC moves values to the major heap, this could cause
>> that the int is overwritten then.
>>
>> In my experience, it's always the C binding!
>>
>> Unfortunately, there's no code for investigations.
Sébastien Hinderer:
> Do you think there is room for improvement at this level?
>
> Do you already have a bit more precise ideas about the kind of tools that
> coould be helpful?
In 2006 there was work on a static analysis tool to check OCaml C
stubs called "Saffire", which you can read about in detail here:
http://www.cs.umd.edu/~jfoster/papers/cs-tr-4845.html
Adrien Nader extracted the implementation and loaded it on the OCaml
Forge in 2012, anyone interested in fixing/updating the project should
probably get in touch with him:
https://forge.ocamlcore.org/projects/saffire/
I have always been curious about how it would fare on the C bindings
in the wild -- my guess is that it may have bitrotten a bit but that
it would find a few issues, and also be very helpful during the
development phase (where you iteratively hunt for segfaults), if it
was an "opam install" away and easy to run.
I have been trying to motivate the Frama-C people to find an excellent
intern to write a specification of the OCaml memory model in ACSL
(their specification language for C, http://frama-c.com/acsl.html );
the dream is that one may then be able to use Frama-C to check for
safety of the C stubs, and even possibly verify some parts of the C
codebase in the compiler distribution (probably not the runtime
implementation itself, which precisely breaks the abstraction of the
memory model, but at least large parts of C implementation of
primitives, otherlibs/, etc.). I think they are interested as well,
but I'm not sure they have found the time and people to work on this.
Finally, note that Jeremy Yallop's Ctypes (
https://github.com/ocamllabs/ocaml-ctypes ) may be the better solution
to write correct C bindings. I think that it is complementary with the
above-mentioned efforts:
- Saffire could be used to check legacy C stubs, of which there are many
- A more precise model of the OCaml value representation and exposed
runtime interface could help verify Ctypes itself and other future
projects interacting with the runtime at a lower level.
Ctypes is slightly more restricted than general C stubs, but
substantially more safe (and more convenient). In my experience the
unsafety of C bindings is a huge time sink, so starting with a Ctypes
binding is almost certainly the most productive choice.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-05/msg00006.html
whitequark announced:
I'm glad to announce the 1.1 release of ppx_import, which
should be already available on OPAM.
It adds support for OCaml 4.03 and nothing else
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-05/msg00008.html
whitequark announced:
I'm glad to announce the 2.4 release of ppx_deriving_protobuf,
which should be already available on OPAM.
It adds support for OCaml 4.03 and nothing else.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2016-05/msg00009.html
whitequark announced:
I'm glad to announce opam-cross-ios[1], an OPAM-based cross-toolchain
in the spirit and using the conventions of opam-cross-android[2]
and opam-cross-windows[3].
It is based on Gerd Stolpmann's work[4] but expands it so that
1) multi-target deployments are trivial and
2) C libraries can be cross-compiled from within OPAM.
[1]: https://github.com/whitequark/opam-cross-ios
[2]: https://github.com/whitequark/opam-cross-android
[3]: https://github.com/whitequark/opam-cross-windows
[4]: http://psellos.com/ocaml/compile-to-iphone.html
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.