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

Alan Schmitt alan.schmitt at polytechnique.org
Tue Feb 27 05:40:23 PST 2018


Hello,

Here is the latest OCaml Weekly News, for the week of February 20 to 27, 2018.

1) Py 1.0 released
2) Scala Vector-like structure in OCaml
3) The poor man's interface to some SVM package in R
4) Status of the OCaml RISC-V port
5) first release of orsvm-e1071 (SVM from R usable from OCaml)
6) gRPC implementation in OCaml
7) Talk, March 7, Effective Programming: Adding an Effect System to OCaml
8) Other OCaml News

========================================================================
1) Py 1.0 released
Archive: <https://discuss.ocaml.org/t/ann-py-1-0-released/1597/1>
------------------------------------------------------------------------
** Zach announced:

I've just released Py 1.0 on opam. This library provides a nice interface for
interacting with Python3.5+ in OCaml.

If you're interested, install `py` from opam and let me know how it goes.

See README for more information: <https://github.com/zshipko/ocaml-py>
      
** UnixJunkie asked and Zach replied:

> What is the difference to the other two python bindings already out there?

The main difference is the use of Ctypes.

The two other OCaml Python libraries I know of are `lymp` and `pyml`

- `lymp` calls out to an external Python process, which is unacceptable for some
situations
- `pyml` uses C stubs -- I had some issues building it in the past, which led me
to begin working on `py`

`py` also provides a sort-of DSL for working with Python objects.
      
========================================================================
2) Scala Vector-like structure in OCaml
Archive: <https://discuss.ocaml.org/t/scala-vector-like-structure-in-ocaml/1515/12>
------------------------------------------------------------------------
** Simon Cruanes announced:

Seems that Daniel Bünzli is on it with [pvec](<https://github.com/dbuenzli/pvec>).
That should be a high quality library!
      
========================================================================
3) The poor man's interface to some SVM package in R
Archive: <https://discuss.ocaml.org/t/the-poor-mans-interface-to-some-svm-package-in-r/1607/1>
------------------------------------------------------------------------
** UnixJunkie announced:

In case other people are interested, here is my fresh hack:

<https://github.com/UnixJunkie/orsvm-e1071>

I may do the same for other R packages in the near future if the idea proves
to be useful enough.

This is quite low level, and there is no plan to support all functionalities
the R package provides.
If you want more, please contribute.
      
========================================================================
4) Status of the OCaml RISC-V port
Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2018-02/msg00085.html>
------------------------------------------------------------------------
** Richard Jones announced:

Fedora has been maintaining an out of tree RISC-V patch in our OCaml
package for about 18 months, from:

  <https://github.com/nojb/riscv-ocaml/commits/trunk>

This has proven to be fairly stable, and I'm wondering when / under
what conditions it can go upstream?

RISC-V finally settled on a stable libc ABI (contributed to glibc
2.27) which has allowed us to start porting Fedora to RISC-V for real.
You can grab bootable disk images from:

  <https://fedorapeople.org/groups/risc-v/disk-images/>

and inside run 'dnf install ocaml' which will currently install
OCaml 4.06.0 with native RISC-V support.  There is also sshd,
systemd, gcc, etc., albeit lacking emacs :-(

At the moment you can run these on an out of tree qemu patch:

  <https://github.com/riscv/riscv-qemu/tree/qemu-upstream-v6>

which supports multiple virtual CPUs and (if you have fast enough
hardware) is fairly reasonable for development.

There are also development boards coming but it's likely you'll have
to wait til July for general availability and even then they will cost
$1000 and are not expected to have very good performance.  I notice
that avsm has signed up for one.
      
** David Allsopp then replied:

> Fedora has been maintaining an out of tree RISC-V patch in our OCaml
> package for about 18 months, from:
> 
>   <https://github.com/nojb/riscv-ocaml/commits/trunk>
> 
> This has proven to be fairly stable, and I'm wondering when / under what
> conditions it can go upstream?

Primary concern has been access to real hardware (Xavier has reasonable issues
with maintaining via Qemu only), especially given that OCaml's cross-compilation
support is not strong (enough).

<snip>

> There are also development boards coming but it's likely you'll have to
> wait til July for general availability and even then they will cost
> $1000 and are not expected to have very good performance.  I notice that
> avsm has signed up for one.

We do indeed have a development board coming to Cambridge, and this will
hopefully start the process of upstreaming the RISC-V patches. Given timings, it
clearly won't be part of OCaml 4.07 though there is a possibility the
infrastructure could be in place to allow it to be in OCaml 4.08.
      
** Nicolás Ojeda Bär said and Xavier Leroy added:

> When the time comes, the patch will be submitted as a github PR and
> everyone is warmly invited to take part in that discussion.

Absolutely.  Just to reinforce what's been said already: there is no doubt
in my mind that the RISC-V back-end will be part of the core OCaml
distribution.  What is not completely decided is when it will be merged.
I'm looking forward to playing with the first RISC-V hardware
implementation, thanks to OCaml Labs.  It's good to know about the
QEMU-based virtual environment mentioned by Rich Jones.
      
========================================================================
5) first release of orsvm-e1071 (SVM from R usable from OCaml)
Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2018-02/msg00092.html>
------------------------------------------------------------------------
** Francois BERENGER announced:

I created a thin OCaml wrapper to drive two famous SVM packages for R:
e1071 and svmpath.

The code is here:
<https://github.com/UnixJunkie/orsvm-e1071>

This package provides two modules:
- Svm: this one provides access to a Support Vector Machine
       with a Radial Basis Function (RBF) or a linear kernel.
       This is a binary classifier.
---
type gamma = float
type kernel = RBF of gamma
            | Linear
type filename = string

val train: ?debug:bool ->
  cost:float -> kernel -> filename -> filename -> Result.t
val predict: ?debug:bool -> Result.t -> filename -> Result.t
val read_predictions: Result.t -> float list
---

- Svmpath: this one provides only access to a SVM with a linear
           kernel, but it allows to quickly find all values
           that need to be tested to obtain the best classifier.
           This is also a binary classifier.
---
type filename = string

val train: ?debug:bool -> filename -> filename -> Result.t
val read_lambdas: ?debug:bool -> Result.t -> float list
val predict: ?debug:bool ->
  lambda:float -> Result.t -> filename -> Result.t
val read_predictions: Result.t -> float list
---

The file src/test.ml is a working example of all functionalities.

There are example data and label files under data/.

I don't claim the package is super efficient.
For example, data are exchanged via text files.
However, it is a proof of concept on how to quickly access
some functionality provided by an R package.

If you want the package to be more efficient or provide access to more
functionalities of the underlying R packages, your help is welcome.

Thanks to Ronan Lehy for help with understanding how to use the svmpath
package.

The corresponding package should appear soon in opam.
      
========================================================================
6) gRPC implementation in OCaml
Archive: <https://discuss.ocaml.org/t/grpc-implementation-in-ocaml/1624/1>
------------------------------------------------------------------------
** Bobby Priambodo asked:

Anyone ever dabbled with gRPC with OCaml? E.g. building clients, servers,
serializers, etc. I've come across
[piqi-ocaml](<https://github.com/alavrik/piqi-ocaml>) and
[ocaml-protoc](<https://github.com/mransan/ocaml-protoc>) for serializations, but
none for server/client implementations. I'm interested in exploring this, but
would rather avoid duplication if there's an effort or assessment already
underway.
      
** yallop then replied:

I have some libgrpc bindings in progress that will (if finished) work together
with [`ocaml-pb`](<https://github.com/yallop/ocaml-pb>) and
[`ocaml-pb-plugin`](<https://github.com/yallop/ocaml-pb-plugin>). They're not
online yet.
      
========================================================================
7) Talk, March 7, Effective Programming: Adding an Effect System to OCaml
Archive: <https://discuss.ocaml.org/t/talk-march-7-effective-programming-adding-an-effect-system-to-ocaml/1626/1>
------------------------------------------------------------------------
** Yaron Minsky announced:

Leo White is giving a talk at Jane Street's NY office on March 7th about adding
an effects system to OCaml. This is pretty cool stuff; he shows how to add
effects tracking to OCaml seamlessly, so that all existing programs continue to
compile as is, and yet, you can track purity quite precisely. It even has region
support to let you write pure functions that use mutability locally, like the
ST-monad without the monad. He was showing me some of the demos today, and they
looked pretty sweet.

Space is limited, so if you're interested, you should register soon.

<https://www.janestreet.com/tech-talks/effective-programming/>
      
========================================================================
8) Other OCaml News
------------------------------------------------------------------------
** From the ocamlcore planet blog:

Here are links from many OCaml blogs aggregated at OCaml Planet,
<http://ocaml.org/community/planet/>.

Full Time: Software Developer (Functional Programming) at Jane Street in New York, NY; London, UK; Hong Kong
 <http://jobs.github.com/positions/0a9333c4-71da-11e0-9ac7-692793c00b45>

Full Time: Compiler Engineer at Jane Street in New York & London
 <http://jobs.github.com/positions/9e8ba450-e72e-11e7-926f-6ce07b7015c8>
      
========================================================================
Old cwn
------------------------------------------------------------------------

If you happen to miss a CWN, you can send me a message
(alan.schmitt at polytechnique.org) and I'll mail it to you, or go take a look at
the archive (<http://alan.petitepomme.net/cwn/>) or the RSS feed of the
archives (<http://alan.petitepomme.net/cwn/cwn.rss>). If you also wish
to receive it every week by mail, you may subscribe online at
<http://lists.idyll.org/listinfo/caml-news-weekly/> .

========================================================================

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7
Monthly Athmospheric CO₂, Mauna Loa Obs. 2018-01: 407.98, 2017-01: 406.13
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 528 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20180227/eee38fbf/attachment.pgp>


More information about the caml-news-weekly mailing list