Hello, Here is the latest OCaml Weekly News, for the week of April 14 to 21, 2015.
1) Suggested way to determine platform specific capabilities in build system? 2) OCaml-openmaple 3) Timeout 4) Other OCaml News ======================================================================== 1) Suggested way to determine platform specific capabilities in build system? Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2015-04/msg00082.html> ------------------------------------------------------------------------ ** Malcolm Matalka asked and Daniel Bünzli replied: > What is the current suggested way to determine what, roughly, autoconf > would do for you? I have some platform specific functionality to be > included (or excluded) depending on the OS. I don't know if there's a suggested way but here are various ways to proceed. If you are using ocamlbuild, you can use `Sys.win32` since 4.01.0 or `Sys.os_type = "Win32"` to determine if you are on windows and otherwise get the (stripped and lowercased) result of `uname -s`, see e.g (but it's missing the win bit): <https://github.com/dbuenzli/tsdl/blob/master/myocamlbuild.ml#L6> If you are using Makefiles you may want include `$(ocamlc -where)/lib/ocaml/Makefile.config` and use the `$SYSTEM` variable. If this is only needed for C stubs you can also try solve this at the CPP level ? but I guess this can be quite brittle ? see e.g (here again missing the win bit as it's undefined for now): <https://github.com/dbuenzli/mtime/blob/master/src-os/mtime_stubs.c#L11-L21> In any case make sure the value can be overridden from the command line for cross compilation scenarios. ** Thomas Gazagnaire then added: See also the system detection functions in opam-depext: <https://github.com/ocaml/opam-depext/blob/master/depext.ml#L76> ** Ivan Gotovchits also suggested: oasis, look at setup.data and setup.ml ======================================================================== 2) OCaml-openmaple Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2015-04/msg00089.html> ------------------------------------------------------------------------ ** Maxence Guesdon announced: I started OCaml-openmaple, bindings to the Openmaple C library: <https://github.com/zoggy/ocaml-openmaple> This is still work in progress but you can give it a try. It uses the excellent OCaml-ctypes library. ======================================================================== 3) Timeout Archive: <https://sympa.inria.fr/sympa/arc/caml-list/2015-04/msg00099.html> ------------------------------------------------------------------------ ** Rodolphe Lepigre asked and Benjamin Greenman: > I was wondering: is there a standard way to stop a computation after, say, > a given number of milliseconds (or seconds) in OCaml? > > For instance I would like to have a function > > exception Timeout > val exec : int -> ('a -> 'b) -> 'a -> 'b > > such that [exec t f x] computes [f x] but raises [Timeout] in case the > computation did not end before [t] milliseconds (or seconds). > > My guess would be that I need to use some Unix signals magic. Has anyone > come up with a clean solution to this problem? Here's a small function I use, taken from the book "Developing Applications with Objective Caml" <http://caml.inria.fr/pub/docs/oreilly-book/html/book-ora168.html> exception Timeout let sigalrm_handler = Sys.Signal_handle (fun _ -> raise Timeout) let timeout (time : int) (f : 'a -> 'b) (arg : 'a) = let old_behavior = Sys.signal Sys.sigalrm sigalrm_handler in let reset_sigalrm () = ignore (Unix.alarm 0); Sys.set_signal Sys.sigalrm old_behavior in ignore (Unix.alarm time) ; let res = f arg in reset_sigalrm () ; res ** Rodolphe Lepigre then said: Great, thank you! I only see one problem: when [Timeout] is raised, the signal handler is not reset. This can be fix by doing something like: try let res = f arg in reset_sigalrm (); res with e -> (reset_sigalrm (); raise e) This will have the advantage of transmitting other exceptions to the caller as well. Also, I guess [Unix.alarm time] should also be in the [try ... with ...]. ======================================================================== 4) Other OCaml News ------------------------------------------------------------------------ ** From the ocamlcore planet blog: 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/>. Mid/Senior Software Development Engineer at Lookingglass Cyber Solutions (Full-time): <http://functionaljobs.com/jobs/8810-mid-senior-software-development-engineer-at-lookingglass-cyber-solutions> Senior/Principal Software Development Engineer at Lookingglass Cyber Solutions (Full-time): <http://functionaljobs.com/jobs/8809-senior-principal-software-development-engineer-at-lookingglass-cyber-solutions> ======================================================================== Old cwn ------------------------------------------------------------------------ If you happen to miss a CWN, you can send me a message (alan.schm...@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
signature.asc
Description: PGP signature
_______________________________________________ caml-news-weekly mailing list caml-news-weekly@lists.idyll.org http://lists.idyll.org/listinfo/caml-news-weekly