[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]] [[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU_Free_Documentation_License|/fdl]]."]]"""]] Name: Flávio Cruz Email: flaviocruz at gmail dot com 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/ ## Summer session 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. - 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. - 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:
  (let* ((spec-mixed (make-message-spec :fields '(:string :integer :char :string :integer :real)))
         (msg-mixed (make-message :spec spec-mixed))
         (port (port-allocate :right-receive)))
    (send-message msg-mixed :remote port :data (list "abc" 42 #\b "cba" 314 3.14))
    (receive-message msg-mixed :source port) ; This returns T on success.
    (get-message msg-mixed))) ; Returns '("abc" 42 #\b "cba" 314 3.14)
- 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. ### 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. - Use the socket stubs? ### Notes - 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 ### Documentation - Manually Bootstrapping a Translator ### Translation - Translate the Hurd website to Portuguese? ## Completed tasks ### Patches - http://alioth.debian.org/tracker/index.php?group_id=30628&atid=410472 - libsvg patch accepted. - Adapted glibc patch (http://www.schwinge.homeip.net/~thomas/tmp/glibc-patches/0009-2007-07-22-version-of-init-first.c_vs._GCC_4.1.patch.patch) - http://opensvn.csie.org/leic/hurd/patches/glibc-init-first.patch - Patch to remove some GNUMach IPC warnings and minor cleanup: - http://opensvn.csie.org/leic/hurd/patches/gnumach-ipc-warnings.patch - Website patches that correct some encountered typos: - http://opensvn.csie.org/leic/hurd/patches/hurd-talk-typo.patch ### Documentation read - GNU/Hurd User's Guide, an introduction to the important concepts and software of the GNU system, written for new users, AKA "GNUbies." - Towards a New Strategy of OS Design, an architectural overview by Thomas Bushnell, BSG. - The Hurd, a presentation by Marcus Brinkmann. - The Hurd Hacking Guide. - The GNU Mach Reference Manual - The GNU Hurd Reference Manual - The Unofficial GNU Mach IPC beginner's guide - Mach IPC without MIG - CFFI User's Manual ### Before selection - Uptime program in C and Lisp using CFFI. - Hello translator. ## Misc ### Lisp implementations that run on Hurd - Clisp - ECL - ?