profile
viewpoint

mirage/qubes-mirage-firewall 164

A Mirage firewall VM for QubesOS

ocaml-multicore/eio 147

Effects-based direct-style IO for multicore OCaml

capnproto/capnp-ocaml 79

OCaml code generator plugin for the Cap'n Proto serialization framework

mirage/mirage-qubes 54

Mirage support for writing QubesOS AppVM unikernels

avsm/ocaml-dockerfile 44

OCaml interface for creating Dockerfiles

inhabitedtype/ocaml-session 41

A session manager for your everyday needs

ocaml-multicore/ocaml-uring 38

Bindings to io_uring for OCaml

ocaml-community/obus 31

Pure OCaml implementation of the D-Bus protocol

ocaml-multicore/multicore-talks 29

Repository containing slides and examples from the 2020 OCaml Workshop talk on "Parallelising your OCaml code with Multicore OCaml"

mirage/qubes-mirage-skeleton 23

An example Mirage unikernel that runs as a Qubes AppVM

delete branch talex5/eio

delete branch : fast-read-into

delete time in 5 hours

PR merged ocaml-multicore/eio

[eio_linux] Avoid copy in `read_into`

Now that readv is implemented, we can read directly into the user's buffer.

Testing this by reading from /dev/null into a 64K buffer was about 5 times faster than the old way (which has a copy and is limited by the chunk size).

+1 -7

0 comment

1 changed file

talex5

pr closed time in 5 hours

push eventocaml-multicore/eio

Thomas Leonard

commit sha 77ff8e18f3ec8ebb50fb04b5e8eae81d85d8222a

[eio_linux] Avoid copy in `read_into` Now that `readv` is implemented, we can read directly into the user's buffer. Testing this by reading from /dev/null into a 64K buffer was about 5 times faster than the old way (which has a copy and is limited by the chunk size).

view details

Thomas Leonard

commit sha 4d2b9e0c94927b67a0f8194d3a1df9f96af86747

Merge pull request #154 from talex5/fast-read-into [eio_linux] Avoid copy in `read_into`

view details

push time in 5 hours

PR opened ocaml-multicore/eio

[eio_linux] Avoid copy in `read_into`

Now that readv is implemented, we can read directly into the user's buffer.

Testing this by reading from /dev/null into a 64K buffer was about 5 times faster than the old way (which has a copy and is limited by the chunk size).

+1 -7

0 comment

1 changed file

pr created time in 6 hours

create barnchtalex5/eio

branch : fast-read-into

created branch time in 6 hours

delete branch talex5/eio

delete branch : fix-open-in

delete time in 6 hours

push eventocaml-multicore/eio

Thomas Leonard

commit sha aea5d71a34b12fd3755a88a624655f549b172c00

Allow reading absolute paths with `Stdenv.fs` `open_in` was missing the fix that was already applied to `open_out` and `open_dir`.

view details

Thomas Leonard

commit sha 034e92c0c88d4dfb63ccee51407bae27f88980f8

Merge pull request #153 from talex5/fix-open-in Allow reading absolute paths with `Stdenv.fs`

view details

push time in 6 hours

PR merged ocaml-multicore/eio

Allow reading absolute paths with `Stdenv.fs`

open_in was missing the fix that was already applied to open_out and open_dir.

+17 -1

0 comment

2 changed files

talex5

pr closed time in 6 hours

push eventtalex5/eio

push time in 6 hours

push eventtalex5/eio

Thomas Leonard

commit sha ea757aaa2ab0544040b0897b9967784372363d22

[eio_linux] Avoid copy in `read_into` Now that `readv` is implemented, we can read directly into the user's buffer. Testing this by reading from /dev/null into a 64K buffer was about 5 times faster than the old way (which has a copy and is limited by the chunk size).

view details

push time in 6 hours

PR opened ocaml-multicore/eio

Allow reading absolute paths with `Stdenv.fs`

open_in was missing the fix that was already applied to open_out and open_dir.

+17 -1

0 comment

2 changed files

pr created time in 6 hours

create barnchtalex5/eio

branch : fix-open-in

created branch time in 6 hours

delete branch talex5/eio

delete branch : odoc

delete time in 6 hours

push eventocaml-multicore/eio

Thomas Leonard

commit sha b9ce69dd3589a7def95632878533bac0e525459c

Fix minor documentation errors

view details

Thomas Leonard

commit sha 607d2ef583ae62d56c231fd375ee833c6d0e3a95

Merge pull request #152 from talex5/odoc Fix minor documentation errors

view details

push time in 6 hours

PR merged ocaml-multicore/eio

Fix minor documentation errors

The list of remaining errors from dune build @doc is disappointingly long:

File "eio__Effect.cmt":
Warning: Couldn't find the following modules:
  Stdlib
File "../../lib_ctf/.ctf.objs/byte/ctf.odoc":
Warning: Couldn't find the following modules:
  Stdlib
File "../../lib_eio/unix/.eio_unix.objs/byte/eio_unix.odoc":
Warning: Couldn't find the following modules:
  Unix
File "../../lib_eio/utils/.eio_utils.objs/byte/eio_utils.odoc":
Warning: Couldn't find the following modules:
  Stdlib Stdlib__effectHandlers
File "../../lib_eio/.eio.objs/byte/eio.odoc":
Warning: Couldn't find the following modules:
  Cstruct Fmt Stdlib Stdlib__effectHandlers Unix
File "lib_eio/eio.mli", line 752, characters 14-27:
Warning: Failed to resolve reference unresolvedroot(Fibre).fork Couldn't find "Fibre"
File "lib_eio/eio.mli", line 746, characters 34-50:
Warning: Failed to resolve reference unresolvedroot(Promise).await Couldn't find "Promise"
File "lib_eio/eio.mli", line 522, characters 12-35:
Warning: Failed to resolve reference unresolvedroot(Fibre).fork_on_accept Couldn't find "Fibre"
File "lib_eio/eio.mli", line 352, characters 10-24:
Warning: Failed to resolve reference unresolvedroot(Switch).fail Couldn't find "Switch"
File "lib_eio/eio.mli", line 342, characters 26-43:
Warning: Failed to resolve reference unresolvedroot(Fibre).check() Couldn't find "Fibre"
File "lib_eio/eio.mli", line 335, characters 23-37:
Warning: Failed to resolve reference unresolvedroot(Fibre).check Couldn't find "Fibre"
File "lib_eio/eio.mli", line 334, characters 29-43:
Warning: Failed to resolve reference unresolvedroot(Fibre).yield Couldn't find "Fibre"
File "lib_eio/eio.mli", line 322, characters 12-21:
Warning: Failed to resolve reference unresolvedroot(Switch) Couldn't find "Switch"
File "lib_eio/eio.mli", line 373, characters 43-63:
Warning: Failed to resolve reference unresolvedroot(Switch).on_release Couldn't find "Switch"
Warning, resolved hidden path: Eio__Effect.eff
File "../../lib_eio_linux/.eio_linux.objs/byte/eio_linux.odoc":
Warning: Couldn't find the following modules:
  Cstruct Optint Unix Uring
File "lib_eio_linux/eio_linux.mli", line 137, characters 9-25:
Warning: Failed to resolve reference unresolvedroot(Unix).shutdown Couldn't find "Unix"
File "lib_eio_linux/eio_linux.mli", line 125, characters 9-22:
Warning: Failed to resolve reference unresolvedroot(Unix).fstat Couldn't find "Unix"
File "lib_eio_linux/eio_linux.mli", line 79, characters 8-24:
Warning: Failed to resolve reference unresolvedroot(Uring).openat2 Couldn't find "Uring"
File "lib_eio_linux/eio_linux.mli", line 68, characters 9-26:
Warning: Failed to resolve reference unresolvedroot(Unix).open_file Couldn't find "Unix"
File "../../lib_eio_luv/.eio_luv.objs/byte/eio_luv.odoc":
Warning: Couldn't find the following modules:
  Luv Stdlib Unsigned
File "lib_eio_luv/eio_luv.mli", line 75, characters 12-29:
Warning: Failed to resolve reference unresolvedroot(Luv).File.mkdir Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 72, characters 12-32:
Warning: Failed to resolve reference unresolvedroot(Luv).File.realpath Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 69, characters 84-101:
Warning: Failed to resolve reference unresolvedroot(Luv).File.write Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 66, characters 12-28:
Warning: Failed to resolve reference unresolvedroot(Luv).File.read Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 63, characters 12-29:
Warning: Failed to resolve reference unresolvedroot(Luv).File.open_ Couldn't find "Luv"

From https://github.com/ocaml/odoc/issues/794#issuecomment-988046473 I understand that most of these errors are expected, as you can't refer to a library installed as an opam package at the moment, so e.g. referring to Stdlib doesn't work.

unresolvedroot(Fibre).fork Couldn't find "Fibre" and similar seem to be odoc ignoring the open Std for some reason.

The Couldn't find "closet" error also confused me for a while! It was from the reference {!close t}.

/cc @jonludlam

+5 -5

0 comment

4 changed files

talex5

pr closed time in 6 hours

PR opened ocaml-multicore/eio

Fix minor documentation errors

The list of remaining errors from dune build @doc is disappointingly long:

File "eio__Effect.cmt":
Warning: Couldn't find the following modules:
  Stdlib
File "../../lib_ctf/.ctf.objs/byte/ctf.odoc":
Warning: Couldn't find the following modules:
  Stdlib
File "../../lib_eio/unix/.eio_unix.objs/byte/eio_unix.odoc":
Warning: Couldn't find the following modules:
  Unix
File "../../lib_eio/utils/.eio_utils.objs/byte/eio_utils.odoc":
Warning: Couldn't find the following modules:
  Stdlib Stdlib__effectHandlers
File "../../lib_eio/.eio.objs/byte/eio.odoc":
Warning: Couldn't find the following modules:
  Cstruct Fmt Stdlib Stdlib__effectHandlers Unix
File "lib_eio/eio.mli", line 752, characters 14-27:
Warning: Failed to resolve reference unresolvedroot(Fibre).fork Couldn't find "Fibre"
File "lib_eio/eio.mli", line 746, characters 34-50:
Warning: Failed to resolve reference unresolvedroot(Promise).await Couldn't find "Promise"
File "lib_eio/eio.mli", line 522, characters 12-35:
Warning: Failed to resolve reference unresolvedroot(Fibre).fork_on_accept Couldn't find "Fibre"
File "lib_eio/eio.mli", line 352, characters 10-24:
Warning: Failed to resolve reference unresolvedroot(Switch).fail Couldn't find "Switch"
File "lib_eio/eio.mli", line 342, characters 26-43:
Warning: Failed to resolve reference unresolvedroot(Fibre).check() Couldn't find "Fibre"
File "lib_eio/eio.mli", line 335, characters 23-37:
Warning: Failed to resolve reference unresolvedroot(Fibre).check Couldn't find "Fibre"
File "lib_eio/eio.mli", line 334, characters 29-43:
Warning: Failed to resolve reference unresolvedroot(Fibre).yield Couldn't find "Fibre"
File "lib_eio/eio.mli", line 322, characters 12-21:
Warning: Failed to resolve reference unresolvedroot(Switch) Couldn't find "Switch"
File "lib_eio/eio.mli", line 373, characters 43-63:
Warning: Failed to resolve reference unresolvedroot(Switch).on_release Couldn't find "Switch"
Warning, resolved hidden path: Eio__Effect.eff
File "../../lib_eio_linux/.eio_linux.objs/byte/eio_linux.odoc":
Warning: Couldn't find the following modules:
  Cstruct Optint Unix Uring
File "lib_eio_linux/eio_linux.mli", line 137, characters 9-25:
Warning: Failed to resolve reference unresolvedroot(Unix).shutdown Couldn't find "Unix"
File "lib_eio_linux/eio_linux.mli", line 125, characters 9-22:
Warning: Failed to resolve reference unresolvedroot(Unix).fstat Couldn't find "Unix"
File "lib_eio_linux/eio_linux.mli", line 79, characters 8-24:
Warning: Failed to resolve reference unresolvedroot(Uring).openat2 Couldn't find "Uring"
File "lib_eio_linux/eio_linux.mli", line 68, characters 9-26:
Warning: Failed to resolve reference unresolvedroot(Unix).open_file Couldn't find "Unix"
File "../../lib_eio_luv/.eio_luv.objs/byte/eio_luv.odoc":
Warning: Couldn't find the following modules:
  Luv Stdlib Unsigned
File "lib_eio_luv/eio_luv.mli", line 75, characters 12-29:
Warning: Failed to resolve reference unresolvedroot(Luv).File.mkdir Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 72, characters 12-32:
Warning: Failed to resolve reference unresolvedroot(Luv).File.realpath Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 69, characters 84-101:
Warning: Failed to resolve reference unresolvedroot(Luv).File.write Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 66, characters 12-28:
Warning: Failed to resolve reference unresolvedroot(Luv).File.read Couldn't find "Luv"
File "lib_eio_luv/eio_luv.mli", line 63, characters 12-29:
Warning: Failed to resolve reference unresolvedroot(Luv).File.open_ Couldn't find "Luv"

From https://github.com/ocaml/odoc/issues/794#issuecomment-988046473 I understand that most of these errors are expected, as you can't refer to a library installed as an opam package at the moment, so e.g. referring to Stdlib doesn't work.

unresolvedroot(Fibre).fork Couldn't find "Fibre" and similar seem to be odoc ignoring the open Std for some reason.

The Couldn't find "closet" error also confused me for a while! It was from the reference {!close t}.

/cc @jonludlam

+5 -5

0 comment

4 changed files

pr created time in 6 hours

create barnchtalex5/eio

branch : odoc

created branch time in 6 hours

issue commentocaml-multicore/eio

Decide on cstruct vs bytes

So this is a pool of bigarrays, but if you forget to return one then the system will notice after a while and return it anyway?

It looks like the drawback is that when something says it's returning a buffer you can't be sure it really isn't going to use it again, which could provide for some fun debugging / data leaks. Also, everything has to be the same size. So it would work within a module for private data, but it's not a general purpose solution.

talex5

comment created time in 8 hours

pull request commentocaml/ocamlfind

support for OCaml 5

Using opam pin ocamlfind https://github.com/ocaml/ocamlfind.git#ef8f1fefd3dab651fa6306826b61b28d6f1686d5 it installs for me too on 5.00+trunk. It also worked with docker run --rm -it ocaml/opam:debian-ocaml-4.02, which is the oldest compiler provided by the Docker repository.

Note that the dev-repo field in the opam metadata doesn't work however: https://github.com/ocaml/ocamlfind/blob/2c3c07624c5e4e12c8963056c4cf532a54dc59fc/opam#L8

I had to use github.com instead.

gerdstolpmann

comment created time in 9 hours

pull request commentocaml-multicore/eio

EffectHandlers -> Effect

I applied most of this in #151, but with a compatibility module.

Note that in that PR I dropped the test work-around, because it make the test executable part of all packages, not just eio_linux.

patricoferris

comment created time in 11 hours

delete branch talex5/eio

delete branch : 5.00

delete time in 11 hours

push eventocaml-multicore/eio

Patrick Ferris

commit sha 9188db3cfeec360e1b502432ae061e82396355af

EffectHandlers -> Effect This also adds an Eio.Private.Effect compatibility module, which allows Eio to continue running on 4.12+domains until 5.00 is released.

view details

Thomas Leonard

commit sha fd15d1baa161708babbdf412a4b1aee0d4d03c67

Merge pull request #151 from talex5/5.00 Add support for OCaml 5.00+trunk

view details

push time in 11 hours

PR merged ocaml-multicore/eio

Add support for OCaml 5.00+trunk

This builds on #150, but keeps compatibility with 4.12+domains as 5.00 is quite difficult to build at the moment (neither dune nor ocamlfind will install, for example).

+33 -14

0 comment

14 changed files

talex5

pr closed time in 11 hours

push eventtalex5/eio

Patrick Ferris

commit sha 9188db3cfeec360e1b502432ae061e82396355af

EffectHandlers -> Effect This also adds an Eio.Private.Effect compatibility module, which allows Eio to continue running on 4.12+domains until 5.00 is released.

view details

push time in 11 hours

PR opened ocaml-multicore/eio

Add support for OCaml 5.00+trunk

This builds on #150, but keeps compatibility with 4.12+domains as 5.00 is quite difficult to build at the moment (neither dune nor ocamlfind will install, for example).

+41 -16

0 comment

15 changed files

pr created time in 11 hours

create barnchtalex5/eio

branch : 5.00

created branch time in 11 hours

issue commentocaml/ocamlfind

Fails to build on OCaml 5.00 trunk

Oh yes. Where is the fix?

The comment says (* FIXME: Bytes.create *), and that worked for me.

talex5

comment created time in 11 hours

issue openedocaml/ocamlfind

Fails to build on OCaml 5.00 trunk

In https://github.com/ocaml/ocaml/pull/10867, OCaml removed a load of deprecated functions. This prevents ocamlfind from installing:

#=== ERROR while compiling ocamlfind.1.9.1 ====================================#
# context     2.1.0 | linux/x86_64 | ocaml-variants.5.00.0+trunk | https://opam.ocaml.org#ffd4aedc
# path        ~/.opam/5.00.0+trunk/.opam-switch/build/ocamlfind.1.9.1
# command     ~/.opam/opam-init/hooks/sandbox.sh build make all
# exit-code   2
# env-file    ~/.opam/log/ocamlfind-93913-b17e9e.env
# output-file ~/.opam/log/ocamlfind-93913-b17e9e.out
### output ###
# [...]
# ocamlc -I +compiler-libs -opaque -g -c frontend.ml
# File "frontend.ml", line 859, characters 10-39:
# 859 |           Fl_package_base.package_users predicates1 packages1
#                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# Warning 6 [labels-omitted]: label preds was omitted in the application of this function.
# File "frontend.ml", line 1826, characters 16-29:
# 1826 |       let buf = String.create buflen in   (* FIXME: Bytes.create *)
#                        ^^^^^^^^^^^^^
# Error: Unbound value String.create
# make[1]: *** [Makefile:165: frontend.cmo] Error 2
# make[1]: Leaving directory '/home/user/.opam/5.00.0+trunk/.opam-switch/build/ocamlfind.1.9.1/src/findlib'
# make: *** [Makefile:14: all] Error 2

Applying the fix in the comment does indeed fix it.

created time in 11 hours

delete branch talex5/eio

delete branch : ppxlib

delete time in 12 hours

push eventocaml-multicore/eio

Thomas Leonard

commit sha 946404718db9edee05493b897dafb6a4566c5cff

Remove dependency on ppxlib The only thing using this was Ctf, for the packet format, which never changes. Instead, just inline the generated code. Eventually this code will be replaced with eventring anyway.

view details

Thomas Leonard

commit sha 9635b1cf210ee3c1aeb582f8c3902e31208bfaef

Merge pull request #149 from talex5/ppxlib Remove dependency on ppxlib

view details

push time in 12 hours

more