summaryrefslogtreecommitdiff
path: root/community/flavioc.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'community/flavioc.mdwn')
-rw-r--r--community/flavioc.mdwn39
1 files changed, 29 insertions, 10 deletions
diff --git a/community/flavioc.mdwn b/community/flavioc.mdwn
index a0c0d036..de4741f8 100644
--- a/community/flavioc.mdwn
+++ b/community/flavioc.mdwn
@@ -16,7 +16,7 @@ Some [Hurd stuff](http://opensvn.csie.org/leic/hurd/)
And code: [cl-hurd](http://freehg.org/u/flavioc/cl-hurd/)
-hg clone http://freehg.org/u/flavioc/cl-hurd/
+hg clone [http://freehg.org/u/flavioc/cl-hurd/](http://freehg.org/u/flavioc/cl-hurd/)
## Summer session
@@ -25,11 +25,18 @@ Creating an extensible translator library in lisp using the mig generated stubs.
### What's done
- The library for writing translators is mostly written.
-- This library is intended to implement virtual filesystems. Examples are: translators were data is located in a local file (like zipfs, tarfs, rarfs, ...), single file translators (that do content filtering, output of a command, etc), network based filesystems (ftpfs, httpfs, ...)
-- Right now, what's missing is: support for symlinks, file execution, and setting other translators on our node tree.
+- This library is intended to implement virtual filesystems. Examples are: translators were data is located in a local file (like zipfs, tarfs, rarfs, ...), single file translators (that do content filtering, output of a command, etc), network based filesystems (ftpfs, httpfs, ...), proxy filesystems (like hostmux, usermux, etc..)
- It's possible to specialize the basic translator library and implement new translator classes. This is done using CLOS.
- There is a tree-translator class that makes the managing of a node tree very easy, doing all the work for us, through a simple directory API and implementing the directory callbacks for us.
- There is a simple example (something like zipfs) translator that can expose the directories and file contents of a ZIP file.
+- More translator examples include:
+ - /dev/null translator.
+ - /dev/zero translator.
+ - translator that creates a symlink node.
+ - tmpfs like translator.
+ - a translator that does proxying between clients and the underlying translator returning all data in upper-case.
+ - a translator that watches for changes in a file describing the file system structure.
+ - an IRC translator.
- Translator options (manipulated through fsysopts) have a simple and easy to use API.
- All the Mach port manipulation API is available.
- It's possible to send and receive messages. Simple example:
@@ -44,21 +51,33 @@ Creating an extensible translator library in lisp using the mig generated stubs.
- New message types (like :string, :integer) can be implemented, providing a powerful extension mechanism.
- Creation of symlinks and symlink path resolution.
- Creation of character/block devices, fifos and sockets.
+- Patch that opens stdin + stdout to /dev/null.
+- Project has been separated into 5 ASDF installable systems:
+ - hurd-common
+ - mach
+ - hurd
+ - hurd-translator
+ - tree-translator
+- Test cases are now written.
### What needs to be done
-- Using continuations for IO blocking operations. This can be done using cl-cont.
-- Callbacks:
- - file_lock, file_lock_stat (still not sure if they are really needed)
- - file_reparent
-- Bind the client RPC calls.
+- Fix fsys-getroot (block happens in trivfs based translators, when they do RPC's to me when I call fsys_getroot to them) and fetch-root (for passive translators).
- Use the socket stubs?
+- Documentation
+- Integrate upstream:
+ - Done, but still not commited.
-### Notes
+### Project dependencies
+
+- CLISP
+- [CFFI](http://common-lisp.net/project/cffi/) (apt-get installable)
+- [Flexi streams](http://www.weitz.de/flexi-streams/) (apt-get installable)
+- [Trivial garbage](http://www.cliki.net/trivial-garbage) (not in debian repositories)
+- [cl-zip](http://common-lisp.net/project/zip/) (only needed for the example translator)
-- File execution is complicated to do, because there is no multithreading support on CLisp and continuations won't do it. Maybe forking the clisp process?.
## To do