Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Mlfuse 1.0
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2002-07-23 (15:16)
From: Nadji <nadji@n...>
Subject: [Caml-list] Mlfuse 1.0
Hi all,

I am pleased to announce that a binding for Fuse 
is now available. From mlfuse/Readme's overview :

Mlfuse is a binding for the Fuse (File System in User Space)
library. The purpose is to be able to mount your own filesystem
in a directory just like when using the "mount" utility.
The system calls for reading, writing, creating files etc ...
are then redirected to your own routines. With Mlfuse your
routines are functions created in Ocaml. Check the examples
to get a more precise idea.
This enables to create nice stuff like infinite files, 
transparent access to compressed files, filesystem-like
access to data for compatibility with other tools etc ...
I think it demonstrates quite well the ability to write
low-level kernel stuff in an efficient high-level languages.
I think Ocaml's typing discipline makes a _far_ better
documentation and permits a _lot_ more control of what can
be or should be done with functions (see differences between
fuse.h and fuse.mli to see what I mean ... and I'm not a guru).
I also made benchmarks and I get a throughput of 80Mo/s (with
all assertions, bounds checking and threads ...) with
this library, while today's disks have a throughput of around 5Mo/s.
So speed is not much of a concern, and Ocaml brings safety on top
of this, which is the best one could hope.

You can download Mlfuse at a friend's :
Mail me at if you have problems.

PS : 
I have tried to be compatible with Ocaml's Unix library data structures
but there are nearly no functions available from C that can transform an 
ocaml value of a Unix type from the C unix corresponding type. This makes 
low-level bindings somewhat specific to an Ocaml version, which is a shame 
... even if I doubt that the Unix layer is rapidly evolving :)
If someone is interested, I have implemented separately those that I lacked
in the files mlfuse/lib/unix_ml2c*
To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: