Hello
Here is the latest OCaml Weekly News, for the week of November 07 to 14, 2017.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-11/msg00027.html
Jocelyn Sérot announced:I'm pleased to announce the first release of LASCAr, an OCaml library for manipulating Labeled Transition Systems. The library provides, in particular, functions for - building and inspecting models of such systems - generating graphical (`.dot` format) and text (`.tex` format) representations - computing execution trees and displaying them in graphical or text format - computing the product (in various flavors) of such systems Its provides implementations both for "generic" LTS (with or without state attributes) and for "specialized" versions such as - deterministic and non-deterministic finite automata (DFA, NFA), - Mealy and Moore automata - Finite State Machines (FSMs) The source code, documentation and some examples can be downloaded from GitHub at : https://github.com/jserot/lascar For a quick glance, some annotated code snippets are available here http://htmlpreview.github.io/?https://github.com/jserot/lascar/blob/master/doc/examples/examples.html The API is documented here http://htmlpreview.github.io/?https://github.com/jserot/lascar/blob/master/doc/api/lascar.html Contributions are welcome since this kind of library is, due to pervasive nature of LTS, highly extensible in many ways. [please note that, since i’m new to GitHub, any advice on how to handle this would be appreciated].
Archive: https://discuss.ocaml.org/t/ann-osc-0-1-4/1085/1
John Else announced:Hi, I'm happy to announce the release of osc 0.1.4. osc is a pure OCaml implementation of [OpenSoundControl](http://opensoundcontrol.org/spec-1_0), a networking protocol designed for communication between computers, synthesizers and other multimedia devices. Version 0.1.4 adds `-safe-string` compatibility, and the ability to use OSC timetags as message arguments. Repo: https://github.com/johnelse/ocaml-osc
Archive: https://discuss.ocaml.org/t/ann-ocamlformat-open-source-released/990/8
Josh Berdine announced:OCamlFormat v0.2 has been released and is now available from opam. v0.2 includes fixes for several assert-due-to-misformatting bugs reported by people who tried v0.1, as well as a few improvements to the generated output. An opam package is now available after some build/packing refactoring. Many thanks to everyone who has submitted an issue or pull request!
Archive: https://discuss.ocaml.org/t/tuareg-2-1-0-is-in-opam/1096/1
Christophe announced:It is my pleasure to announce a new release of [Tuareg](https://github.com/ocaml/tuareg) which provides Emacs modes to edit OCaml, OPAM, and jbuild files. The full changelog is below. Happy hacking, C. ### Changes * Let <kbd>M-q</kbd> reformat strings (and use only SMIE). * Do not indent an expression after `;;` (issue #106). * New face `tuareg-font-double-colon-face` to highlight `;;`. * For `type … and …`, left-align `and` with `type`. * Fix indentation of some GADT type definitions. * Use `prettify-symbols-mode` to turn `+.` into `∔`,… and add a menu entry to toggle it. * Properly indent `type 'a foo = 'a bla = …` (issue #98). * Properly indent (issue #7): module … with module X = Z and type t := C.t * Support `let exception E in expr` (issue #102). * Improved highlighting of `val` and `module` in first class module expressions. * Warn if a file inside a `_build` is edited and propose to switch. * Add a custom face `tuareg-font-lock-label-face` for labels. * Add option `tuareg-match-patterns-aligned` to allow to choose between the two styles: function v.s. function | A | A | B -> ... | B -> ... | C -> ... | C -> ... " * Highlight attributes and extension nodes. * Disable by default and improve the compilation advice—see the new variable `tuareg-opam-insinuate` (issue #97). * New keybinding <kbd>C-cC-w</kbd> and function `tuareg-opam-update-env` to update the environment to an opam switch (offering completion). * Improved highlighting of quoted strings `{|…|}` (issue #89). * Move after `;;` when evaluating a phrase in the toploop (issue #96). * ocamldebug: - Add support for `completion-at-point`. - Highlight the right location even in presence of non-ascii chars (issue #80). - Make possible to pass argument to ocamldebug (say, paths with `-I`). - Make possible to pass argument to the program being debugged (issue #66). - Warn if SMIE is disabled. * New modes `tuareg-jbuild` and `tuareg-opam` with syntax highlighting, indentation, and skeletons.
Archive: https://discuss.ocaml.org/t/large-binaries-break-down-by-libraries/1098/1
Christian Lindig asked:We have observed that some of our binaries have grown in size over several releases and I'd like to find out what are the biggest contributors to this. I'd be grateful for recommendations how best to do this: can the compiler or linker be made to emit informations, or is it better to analyse the binary with something like nm(1). Obviously I can take a look at library files before linking but it seems a bit tedious to me and I don't know how much the linker actually selects.Hannes Mehnert replied:
Some time ago I had the same interest (and still have). I have implemented an overproximation (by hooking into the link step of `ocamlbuild`, and gathering the byte sizes of all linked libraries). This is available [here](https://gist.github.com/hannesm/c8a9b2e75bb4f98b5100a838ea125f3b). I also wrote some text about the results over in [my blog](https://hannes.nqsb.io/Posts/BottomUp). This will obviously need some adaption for the jbuilder area. I also didn't so far find enough time to upstream this analysis into the mirage utility (or make it more standalone). I'd also be really interested to have a way coming from the binary, using objdump/nm to find the function names and sizes, and then some heuristics which puts function names into library buckets. Especially to see the comparison in terms of bytes of the results.Christian Lindig then said:
Looking at output from nm(1), the code for each module is marked: ``` : ring3tools $ nm -n logfreq.native | egrep '_code_begin|_code_end' | head 000000000002e500 T caml_startup__code_begin 0000000000030fd4 T caml_startup__code_end 0000000000030fe0 T camlStd_exit__code_begin 000000000003100d T camlStd_exit__code_end 0000000000031010 T camlLogfreq__code_begin 0000000000031fca T camlLogfreq__code_end 0000000000031fd0 T camlUnix__code_begin 0000000000037443 T camlUnix__code_end 0000000000037450 T camlUnixLabels__code_begin 0000000000037ccc T camlUnixLabels__code_end ``` While this does not account for space taken up for data, it could be a good approximation.
Archive: https://discuss.ocaml.org/t/mirageos-bug-cleaning-day-friday-17th-november-2017/1100/1
Mindy Preston announced:In the MirageOS organization, we have many repositories that have lots of old and no-longer-relevant issues in them (some have even been fixed!) as well as issues that haven't gotten a reply yet from a maintainer. In preparation for the upcoming hack retreat (starting on 29th November), when more eyes are on obscure corners of the Mirage ecosystem than usual, I think it would be nice to take a day and do some housecleaning. On Friday, 17th November (a week from now), @hannes, @djs55, and I will be going through old issues and coordinating our efforts on the #mirage channel over on irc.freenode.net (the same venue as our biweekly catchups). I expect there to be the most activity during the afternoon UTC and maybe a bit later, but don't feel limited to that timeslot -- if you're familiar with a repository and have a bit of time, we'd love your help any time at all. Please do join us if you're free! If you're not sure where to start, here's a link to a GitHub search for all issues in repositories owned by the Mirage organization which are open and not archived, sorted with the least recently updated first, for your editing and browsing pleasure: https://github.com/issues?q=is%3Aopen+is%3Aissue+org%3Amirage+archived%3Afalse+sort%3Aupdated-asc
Archive: https://discuss.ocaml.org/t/new-release-proverif-1-97pl3/1109/1
Bruno Blanchet announced:I am pleased to announce a new release of ProVerif, version 1.97pl3. ProVerif is a automatic security protocol verifier that relies on the symbolic model of cryptography. ProVerif is available at http://proverif.inria.fr It is also available via opam. If you use opam, you can install it by: opam install proverif (You may need to do "opam update" before, to get the latest version.) This release is mainly a bug fix release. Recent changes: Version 1.97pl3 - Modified the code so that it is compatible with OCaml 4.06 Version 1.97pl2 - Fixed bug that could cause an internal error in trace reconstruction, when a message was received of a type different from the one expected by the input. - Fixed bug that happened when "sync" was under a process macro. It could lead to unbound variables, causing an internal error.
Archive: https://discuss.ocaml.org/t/ann-ecaml-ocaml-emacs-plugins-tutorial/1074/2
bcc continued the thread from last week:[Part 2](https://blag.bcc32.com/ecaml-getting-started/2017/11/12/emacs-plugins-in-ocaml-2/) and [Part 3](https://blag.bcc32.com/ecaml-getting-started/2017/11/12/emacs-plugins-in-ocaml-3/) are now online.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-11/msg00031.html
Xavier Leroy announced:Interested in contributing to OCaml as part of the team that created it? The Gallium project-team at Inria Paris (http://gallium.inria.fr/) is opening a post-doctoral position to work on the OCaml language and core system. The position is part of the SecurOCaml project (http://ocamlpro.github.io/SecurOCaml/) and aims at improving the usability and reliability of OCaml for the development of high-assurance applications. In this context, a broad variety of OCaml-related research topics can be considered depending on the expertise of the post-doctoral scientist. Theory-oriented topics will be considered but more practically-oriented topics such as tool development and short-term improvements to the OCaml system are especially welcome. The position can start as early as February 2018 and extends until June 2019, with a possible extension to December 2019. The candidate should have a PhD, prior experience in the design and implementation of functional programming languages, and a solid experience in developing advanced software in OCaml. To apply, send your curriculum vitae (including software portfolio and names of references) to Xavier.Leroy@inria.fr.
Archive: https://discuss.ocaml.org/t/ocaml-internship-opportunities/1113/1
theindigamer asked:I know about Jane Street -- are there any other companies which offer OCaml internships? Related: * Haskell subreddit threads [1](https://www.reddit.com/r/haskell/comments/6yuelo/internship_for_haskellers/), [2](https://www.reddit.com/r/haskell/comments/76men2/summer_research_internship_opportunities_for/) * I've asked in the ReasonML discord chat and the Reason team at Facebook doesn't have internships this year.Ivan Gotovchits replied:
Here, in CMU, [Cylab][2] (Pittsburgh, PA, USA), we sometimes do OCaml internship. We are doing Binary Analysis and Reverse engineering using [a platform][1] written in OCaml. Those who are interested may contact me, and I will try to figure out if we can sponsor an internship this year. [1]: https://github.com/BinaryAnalysisPlatform/bap [2]: https://www.cylab.cmu.edu/Mindy Preston also replied:
The MirageOS project has had several interns through the [Google Summer of Code](https://developers.google.com/open-source/gsoc/) (for students) and [Outreachy](https://www.outreachy.org/) (for people from groups underrepresented in tech) programs. We keep a list of projects that might be good fits for interns [under our canopy](http://canopy.mirage.io/tags/help%20needed).
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2017-11/msg00033.html
Jacques-Henri Jourdan announced:It is my pleasure to announce statmemprof, a statistical memory profiler for OCaml. This tool will help you better understand the memory consumption of your programs and find memory leaks. It can be tuned to have little overhead (as low as < 1%) while still gathering useful information. This tool can already be installed via opam: $ opam switch 4.06.0+statistical-memprof #The switch also exists for 4.03.0 and 4.05.0. $ opam install statmemprof-emacs Then, instructions for using it can be found be reading the https://github.com/jhjourdan/statmemprof-emacs/blob/master/README.md README file. Please note that even though this tool is already useful, it is still at a preliminary stage of development. I would be very happy to get your comments to help me understand what would be the most useful improvements.
Archive: https://discuss.ocaml.org/t/ocaml-internships-at-lexifi-france/1118/1
Marc Lasson announced:LexiFi is currently looking for talented master students with a genuine interest in functional programming for an internship that would take place in our offices in [Boulogne-Billancourt](https://goo.gl/maps/uVWcmVrwx3u).The internship should last at least 4 months and up to 6 months. The candidate should be confident in its ability to quickly learn to write OCaml code proficiently and should have good algorithmic skills. No knowledge of finance is required. If you wish to apply please send an e-mail to careers@lexifi.com with your resume attached. You will find more details about the topics the candidate could work on by [following this link](https://www.lexifi.com/careers/internships_developer). Do not hesitate to contact me for any further information. Marc Lasson (marc.lasson@lexifi.com). PS: I hope I did not break any upcoming rule for posting job offers here.
Here is a sneak peek at some potential future features of the Ocaml compiler, discussed by their implementers in these Github Pull Requests. - Better error reporting in case of missing 'rec' in let-bindings https://github.com/ocaml/ocaml/pull/1472 - Add extended sequencing operators https://github.com/ocaml/ocaml/pull/1474 - Fix Spacetime under Windows https://github.com/ocaml/ocaml/pull/1478
Here are links from many OCaml blogs aggregated at OCaml Planet, http://ocaml.org/community/planet/. Towers of Hanoi http://blog.shaynefletcher.org/2017/11/towers-of-hanoi.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.