Here is the latest OCaml Weekly News, for the week of May 01 to 08, 2018.
Archive: https://discuss.ocaml.org/t/threat-research-engineer-job-endgame-us/1937/1Hezekiah Carty announced:
Our research team at Endgame has a position open for a threat research engineer (summary below). We have offices in Arlington, VA and San Francisco, CA. Distributed US applicants are welcome too! Please see the posting for more details: https://www.endgame.com/careers/threat-research-engineer-1 Language-wise, OCaml/Reason makes up most of the core code you'll be working on. Python makes up most of the rest, in particular taking advantage of the machine learning and natural language processing goodies that ecosystem provides. All or almost all tools developed are internally focused, supporting our security research. For those so-inclined, there are lots of opportunities for presenting at and attending conferences, presenting work in blog posts, contributing to open source software projects and other community engagement. Please feel free to reach out to me if you have any questions. I'm available on the OCaml or Reason Discord servers or by email (my username here at endgame.com). Summary from the official job listing: Endgame is seeking a Threat Research Engineer in our Research and Development team. Our threat research engineering work is experimental as well as applied, with a focus on collecting and processing massive quantities of data on a continual basis, underpinning and enabling Endgame’s advanced computer security research. You develop and maintain our data ingest and processing pipeline, comprised of commercial, open source and internally developed tools. You identify and implement improvements to our internal services, infrastructure, data sources, data collection and analysis tools in close collaboration with researchers and other Endgame teams. You also work to automate the creation and evaluation of our malware classification and other machine learning models. In short, do what’s required to keep the research flowing.
Archive: https://discuss.ocaml.org/t/ann-zmq-5-0-0/1942/1Anders Fugmann announced:
I'm happy to announce the release of Zmq 5.0.0. Zmq provides ocaml binding for ZeroMQ v. 4.x Most notable changes in this release includes: * Import zmq-async and zmq-lwt. The old bindings async-zmq and lwt-zmq are now deprecated. * Refactor zmq-async and zmq-lwt to be supported out of a single code base. This regularizes the interface, and dramatically improves speed and stability. * Add support for reading & writing bigarrays. This interfaces allows the user to reduce needless copying of packets sent by the bindings. * Change build system to use jbuilder instead of oasis. This also adds proper support for pkg-config installed zmq. * Rename module ZMQ to Zmq. This change breaks backward compatibility, and users will need to replace references to module ZMQ with Zmq or add a module alias. The package is available though opam or can be compiled from source from the project's gibhub page Many thanks to H. Carty, R. Grinberg, and M. Kubica for helping with this release.  http://zeromq.org  https://github.com/issuu/ocaml-zmq
Archive: https://discuss.ocaml.org/t/ppx-and-reflection/1946/1progman asked:
Can ppx be used to capture a ocaml type inferred for an expression? (typedtree) I wish to transform what I expect to be a concrete type (no variables) to a simpler representation for injection into code. or is the best that can be done is transforming type declarations directly? thanks.Guillaume Bury replied:
Afaik, ppx are applied on the parsetreee, **before** typechecking, so while it would be technically possible in a ppx to invoke the typechecker, apply some transformation to it, then transform it back to a parsetree, it seems very complicated. Maybe with a more detailed explanation of what you want to do, it'd be easier to suggest another way ?progman then said:
there is a typedtree hook in the default_mapper which I believe would have given the necessary type information but I think the manual is saying the ocaml team are keeping it abstract to prevent meddling. I wanted to capture the type of some use of a specially identified expression (say, Reflect.typeof: 'a -> 'a Reflect.t as applied to some value) for transformation to a simpler constructor type representing a concrete type. this would then be included as an argument in a re-written parsetree of a function application. By that means I would have some dynamic typing information for use in database querying.Philippe suggested:
I think Jun Furuse has done quite some work in this direction. How about [typpx](https://bitbucket.org/camlspotter/typpx) or [ppx_implicits](https://bitbucket.org/camlspotter/ppx_implicits)?Charles then added:
I've also been working on a typing ppx [here](https://github.com/cyrus-/relit/tree/ppx_clone). It does some pretty strange things but I'm definitely happy to talk about / learn more about typing ppx'sKakadu said and Charles replied:
> Your repo terribly lacks the README describing what is this repo about... This is intentional — the code isn't at all ready for release. I'm just hoping to show another example of a typing ppx if people are interested, as it seems are not many. The purpose of the code is to do some extra parsing at compile time to enable literals for any data, among other things, working of off [this research](https://www.cs.cmu.edu/~comar/omar-thesis.pdf). Typing is used to resolve a name so you can 'import' a literal notation exactly as you would in OCaml.
Archive: https://discuss.ocaml.org/t/sanddb-a-simple-immutable-database-for-the-masses/1949/1Tóth Róbert announced:
Hello everyone! I'm proud to announce my first opam package: [SandDB](https://github.com/StrykerKKD/SandDB) SandDB is an simple immutable database that I made, because I couldn't really find a dead simple database (like TinyDB) for Ocaml and because it's fun to reinvent the wheel. :smiley: SandDB is exciting, because: * Simple: The code base is small and easy to get started with. The basic building block of the database is also pretty simple, which is the record. A record consist only two element: uuid as id and your custome data type. * Flexible: You can define your own data structure with atd. * Immutable: Please be patient why I fill out this post. lol :smiley:
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2018-05/msg00010.htmlJocelyn Sérot announced:
It is my pleasure to announce the latest release (2.8.5) of CAPH, a domain-specific language relying on the dataflow model of computation for describing and implementing stream-processing applications. CAPH can simulate dataflow programs, generate cycle-accurate SystemC and synthetizable VHDL code for implementation on reconfigurable hardware such as FPGAs. CAPH has a strong functional inspiration : dataflow networks are described using a purely functional, higher-order formalism and the definition of actor behavior relies on a pattern matching similar to that used for defining functions in functional languages. CAPH is also equipped with a rich type system with sized-integers, booleans, floats, fully polymorphic algebraic data types and dependent types. And, of course, CAPH is entirely written in OCaml ;) Source code and pre-compiled binaries for Mac OS and Windows can be downloaded from the web site (http://caph.univ-bpclermont.fr) or via Github (https://github.com/jserot/caph).
Archive: https://sympa.inria.fr/sympa/arc/caml-list/2018-05/msg00014.htmlLouis Gesbert announced:
!! opam users on macOS or BSD systems are at risk of losing their files !! if they didn't update since Feb. 18th. Full details, including advice for restoring your system to safety, are available at https://opam.ocaml.org/blog/camlp5-system/ A problem was identified in February with the camlp5 7.03 package when installed via opam. Under certain circumstances, it is possible for the package removal instructions to execute `rm -rf /` with potentially devastating consequences for your files if your rm command is non-GNU (and so doesn’t support the --preserve-root default option) which includes macOS and other BSDs. Initially, this was seen non-fatally on GNU/Linux systems and it was believed to have been successfully patched on 18 Feb with only a 48 hour window for problems for anyone who updated opam between 16 and 18 Feb and then hadn’t updated since, however we failed to take upgrading the system compiler into account. If you haven’t updated opam since 18 Feb 2018, have camlp5 installed in your system switch and upgrade your system compiler to OCaml 4.06.1 using your OS package manager, then your system is at risk from this issue. Most regrettably, several users have been hit by this issue. This issue affects opam 1.x only - if you have been testing the opam 2 release candidate then your system is not affected (but we still recommend you run opam update regularly). We are trying to reach as widely as possible in the hope that everyone will be safe from this issue. It is taken seriously, and sandboxing support for Linux and MacOS was added to the upcoming opam 2 Release Candidate 2, ensuring this kind of issue won't happen again in the future.
Archive: https://discuss.ocaml.org/t/ann-first-release-of-phashtbl/1965/1UnixJunkie announced:
Phashtbl is a minimalist persistent hashtbl OCaml library. It was just accepted into the opam-repository. Code: https://github.com/UnixJunkie/phashtbl Interface: https://github.com/UnixJunkie/phashtbl/blob/master/src/phashtbl.mli Example/tests: https://github.com/UnixJunkie/phashtbl/blob/master/src/test.ml
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.