9P The Simple Distributed File System from Bell Labs
9P Implementations
This is a list of existing client and server 9P implementations.
| Name | Version | Client Server | Lang | OSs | License | Comments |
|---|---|---|---|---|---|---|
| Plan 9 from Bell Labs | 9p2000 | Client Server | C | Plan 9, Plan B | LPL | The original and 'reference' implementation as part of the Plan 9 operating system. |
| plan9port | 9p2000, 9p2000.u | Client Server | C | Most Unix variants | LPL/MIT | Plan 9 from User Space(aka plan9port) is a port of many user space utilities and libraries from Plan 9 to Unix systems. |
| Inferno | 9p2000 | Client Server | Limbo | All Inferno host systems | GPL/BSD | Part of the Inferno operating system, can run hosted on top of other systems. |
| v9fs | 9p2000, 9p2000.u | Client | C | Linux | GPL | File system driver for the Linux kernel. |
| py9p | 9p2000 | Client Server | Python | - | Public Domain | 9P implementation in pure python. |
| libixp | 9p2000 | Client Server | C | All Unix variants | MIT | Originally as part of the wmii project. |
| Ruby-IXP | 9p2000 | Client Server(?) | Ruby | - | GPL | A simple and fast client implementation in pure Ruby. |
| Rstyx | 9p2000 | Client Server(?) | Ruby | - | LGPL/Ruby License | Another pure Ruby implementation. |
| Jstyx | 9p2000 | Client Server | Java | - | BSD License | A 9P implementation in pure Java, also includes special libraries for grid services. |
| ninep | 9p2000 | Client | Lisp | - | MIT | A multi-threaded client implementation in Lisp. |
| 9pvfs.tcl | 9p2000 | Client Server | TCL | - | Public Domain? | Transparent access to 9P server from TCL. |
| 9pc | 9p2000 | Client Server | C# | - | Public Domain? | 9P for .NET environments. |
| rii | 9p2000 | Client | C/Ruby | - | MIT? | Ruby bindings to the libixp library. |
| ocaml-9p | 9p2000 | Client | Ocaml | - | BSD | OCaml-9P is a pure OCaml implementation. |
| styx-n-9p | 9p2000 | Client | Java | - | MIT | Client only multi-threaded Java implementation including Inferno authentication support. |
| r9p | 9p2000 | Client | Ruby | - | MIT | A simple client implementation for Ruby. It supports the operations of the IO class by providing a true file descriptor through a proxy thread. |
| 9puffs | 9p2000 | Client | C | NetBSD | BSD | Userspace file system driver implemented on top of puffs. |
| 9p.scm | 9p2000 | Client | Scheme | - | MIT? | A simple client implementation in Scheme using gauche's networking, by Neale Pickett. |
| PHP9P | 9p2000 | Client/Server | PHP/C | - | MIT | PHP bindings for libixp. |
| JS9P | 9p2000 | Client/Server | JavaScript | - | MIT | A javascript 9p library. |
| Net_9P | 9p2000 | Client/Server | PHP | - | LGPL v2 | A pure PHP implementation of 9P, to be included in PEAR. |
| JavaScript Styx | 9p2000 | Client/Server | JavaScript | - | LGPL v2 | JavaScript 9p implementation for FireFox (to be ported to other browsers in the future). | Chicken Scheme 9p | 9p2000 | Client/Server | Chicken Scheme | - | BSD | A pure Scheme implementation of the 9p networked filesystem protocol. |
| Duat | 9p2000, 9p2000.u | Client/Server | C | - | BSD | An I/O library for C applications. It may be used to implement FS-ish servers; primarily via the 9p2000(.u) protocol. |
| NPFS/SPFS | 9p2000, 9p2000.u | Server | C | - | BSD-like | A multi-threaded replacement of u9fs -- npfs also functions as a framework which can be easily reused to build synthetic file systems. |
| Lib-IXP | 9p2000 | Client | C/Perl | - | MIT? | Perl bindings to the [libixp library](http://repo.cat-v.org/libixp/). |
| J9P/StyxLib | 9p2000 | Client/Server | Java | - | LGPL | A pure Java implementation designed to ease the integration of legacy and non-9P services into 9P networks. Includes p9sk1, p9sk2 and Inferno message digest and encryption. |
Implementations in progress for: lua and others. But don't let that deter you from writing your own!