-Fuse version 0.05
-=================
+Fuse perl bindings
+==================
-This is a test release. It seems to work quite well. In fact, I can't
-find any problems with it whatsoever. If you do, I want to know.
+Fuse is combination of Linux kernel module and user space library which
+enables you to write user-space filesystems. This module enables you to
+write filesystems using perl.
+Additional file-systems using Fuse module are released on CPAN using Fuse::
+namespace. Currently that includes only Fuse::DBI which allows you to mount
+database as file system, but there will be more.
+
+This is a pre-production release. It seems to work quite well. In fact, I
+can't find any problems with it whatsoever. If you do, I want to know.
+
+Support for FreeBSD is experimental, so expect tests to fail.
INSTALLATION
DEPENDENCIES
-This module requires the FUSE userspace library and the FUSE kernel module.
+This module requires the FUSE C library and the FUSE kernel module.
See http://fuse.sourceforge.net/
+If you intend to use FUSE in threaded mode, you need a version of Perl which
+has been compiled with USE_ITHREADS. Then, you need to use threads and
+threads::shared.
+
COPYRIGHT AND LICENCE
BUGS
-I've begun to build a formal testing framework. Currently it can mount
-and unmount loopback.pl, and all of the base-level functions have test
-scripts. These need to be fleshed out as problems are noticed.
+At time of writing, Perl (5.8.7) did not support shared subroutine references.
+Symptoms include a cryptic error message like "Invalid value for shared scalar"
+from Fuse.pm. Until this is fixed, if you use threaded mode, you need to use
+symbolic references (i.e. passing "main::cb" instead of \&cb). This doesn't
+allow things like closures, lexical subs and that sort of thing, but it does
+work for me.
The current test framework seems to work well, but the underlying mount/
unmount infrastructure is a crock. I am not pleased with that code.
While most things work, I do still have a TODO list:
-* "du -sb" reports a couple orders of magnitude too large a size.
* need to sort out cleaner mount semantics for the test framework
-* figure out how to un-linuxcentrify the statfs tests
-* test everything on other architectures and OS's
-
+* determine why getattr() test on OS X/Darwin is very slow; succeeds, but
+ very slowly
+
+Currently tests have been attempted and succeeded on:
+ * Ubuntu 10.10/amd64
+ * Ubuntu 11.04/amd64
+ * Debian 5.0/powerpc
+ * NetBSD 5.1/i386
+ * NetBSD 5.1/amd64
+ * FreeBSD 8.2/i386
+ * FreeBSD 8.2/amd64
+ * MacOS X 10.6.7
+
+Note that on NetBSD, there are several bugs in libpuffs and librefuse
+which prevent some tests from succeeding. There are fixes in NetBSD's
+MAIN branch, specifically revisions 1.26 and 1.27 on src/lib/libpuffs/subr.c,
+which correct the issues that cause the test failures. However, there is
+still a bug in librefuse that causes readdir() to only be called once.
+We will be addressing this with the appropriate developers in the near
+future.