Hello
Here is the latest OCaml Weekly News, for the week of November 11 to 18, 2014.
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-11/msg00053.html
Simon Cruanes announced:I'm pleased to announce the release of containers-0.5, an extension to OCaml's standard library. Since my initial announce on this list, containers has grown and stabilized, but remained modular and lightweight. This release also brings compatibility with `-safe-string`[1] which makes it depend on `base-bytes`. It now features modules that extend `Map`, `Hashtbl`, a lightweight S-expression parser[2], new functions in existing modules and bugfixes. There is also a new sub-library, `containers.pervasives`, that provides a single `CCPervasives` module that can be opened to alias `List`, `Option`, etc. to their counterparts. Containers should be especially useful for programmers who don't want to depend on bigger libraries such as Core or Batteries, programmers who target js_of_ocaml, or who just want to copy-paste a few useful modules/functions into their own `utils.ml` file[3]. Containers is on opam, and its source code (BSD licensed) is on github: https://github.com/c-cube/ocaml-containers . The online documentation can be found here: http://cedeela.fr/~simon/software/containers/ . I would also like to thank the other contributors : jpdeplaix, drup, nicoo, and whitequark. Cheers! Simon [1] if not, please fill a bug report. Please. [2] CCSexp is only one module, with a streaming interface, and therefore less comprehensive than Sexplib. Still a bit experimental atm. [3] I don't judge :-)
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-11/msg00055.html
Shayne Fletcher continued the thread from last week:To clarify, this position is in fact offered by Bloomberg. As you may be aware, Bloomberg has licensed LexiFi technology for financial contract representation. To learn more about the use of LexiFi's technology in the Bloomberg Professional Service, see http://tinyurl.com/ohunp3w. We are seeking developers to work on this effort among other challenges. As this community is characterized by transparency, we consider it an unfortunate mistake this information was held back and unreservedly apologize! We are very excited at the prospect of growing our teams of OCaml developers in both London and New York and strongly encourage those among you interested in a career in financial technology to reach out to us!
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-11/msg00066.html
Peter Zotov announced:I'm glad to announce the release of opam-query 1.0. It will be available in OPAM shortly. opam-query is a tool that allows querying the OPAM package description files from shell scripts, similar to `oasis query`. Most interestingly, it can be used to automate releasing OPAM packages. For example, the following Makefile snippet allows to release packages by merely changing the `version:' field and running `make release'. (Right now, only GitHub URLs are supported by --archive.) VERSION = $(shell opam query --version) NAME_VERSION = $(shell opam query --name-version) ARCHIVE = $(shell opam query --archive) release: git tag -a v$(VERSION) -m "Version $(VERSION)." git push origin v$(VERSION) opam publish prepare $(NAME_VERSION) $(ARCHIVE) opam publish submit $(NAME_VERSION) rm -rf $(NAME_VERSION) .PHONY: release Please see the README[1] for complete documentation. [1]: https://github.com/whitequark/opam-query
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2014-11/msg00067.html
Kenneth Adam Miller asked and Gabriel Scherer replied:> If anybody knows what Go's oracle is you'll know that its a great > accelerator for your time; it allows expressive and meaningful searches to > be done over a source repository. It's fast and dead useful. Opengrok is > much the same, but to a lesser extent (having links is nice, but not quite > as powerful as oracle, I could be wrong). > > Is there anything like this for OCaml? (One can find a description of Go oracle's design in https://docs.google.com/document/d/1WmMHBUjQiuy15JfEnT8YBROQmEv-7K6bV-Y_K53oi5Y/view and its user manual in https://docs.google.com/document/d/1SLk36YRjjMgKqe490mSRzOPYEDe0Y_WQNRv-EiFYUyw/view#heading=h.kthq8ap0mdwi ) The ecosystem of OCaml tooling is not as refined as Go's (but contributions are welcome). There is no centralized tool provider with a common interface, but several contributors have developped separate tool to anayze different aspects of OCaml programs: - ocamlspotter: https://bitbucket.org/camlspotter/ocamlspot - ocp-index: http://typerex.ocamlpro.com/ocp-index.html - pfff: https://github.com/facebook/pfff - merlin: http://the-lambda-church.github.io/merlin/ These tool provide a relatively complete coverage of the information that can easily be retrieved from the typedtree of a program (>=4.01 versions of the OCaml compiler have the option to generate a reified typedtree for external tools): the occurences of a declared/defined name, the definition place of a name, the type of an expression, etc. As far as I'm aware, there is not much in the direction of the more advanced static analysis feature Go's oracle supports: points-to information, "who may update this mutable field", etc. I'm not familiar with Pfff's capabilities, it may be the more advanced in this regard. (There is also more experimental work going on, for example Thomas Blanc's work on static analysis of exception flow at OCamlPro: https://github.com/OCamlPro/socaml-analyzer ) I think merlin is the best-positioned tool to deal with partially-incorrect files (typical of an edition session) and incrementality. It also incorporates some query/analysis feature, but it's unclear whether those should grow inside a monolithic tool (eg. it could encompass the current feature set of ocp-index and ocamlspotter, if it does not already), or rather try to communicate with external analysis/query plugins. It also interacts with existing editors through a reasonable query-answer interface, but does not provide a direct command-line interface (anyone interested in this could work on it, it may be relatively easy to implement). There are fairly orthogonal aspects to a "answering questions about programs" toolbox, among which: 1) user-interface, interactive use, and interface with existing editors 2) support for incrementality and robustness under partially-incorrect files 3) knowledge of what the "project", or whole program, is; which dependencies are required to understand the work? (build system knowledge) 4) implementation of various program analyses and transformations Is it possible to provide them in separate programs and have them interact to form a useful whole? Or would it be easier, faster and more robust to implement them all in a monolithic program? What are the necessary interdependence between these aspects and what interface should them provide to each other?
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/. How to choose a teaching language: https://blogs.janestreet.com/how-to-choose-a-teaching-language/ Dimensional Analysis in OCaml: http://shayne-fletcher.blogspot.com/2014/11/dimensional-analysis-in-ocaml.html Ocaml teaching resources: http://yansnotes.blogspot.com/2014/10/ocaml-teaching-resource.html "Good news, everyone!" - OCaml.org teaching page is live!: http://yansnotes.blogspot.com/2014/11/good-news-everyone-ocamlorg-teaching.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.