nine
----

9p for rust.

## todo

should I move the proto parsing into another library?
+ can add tests, which is nice
+ can separate parsing and codegen better
+ can do stuff like allow exporting JSON

can I make it depend on itself?
- all build dependencies become library dependencies

nine-description

remove die!, etc, from spec

rustfmt
generate const values,
generate t and r enums
generate message structs
generate buffer to message deserializers:
- validate buffer size
- deserialize into struct

* describe a stat object
* check that R=T+1
* add functionality to read a 9p message without parsing it at all
* testing
  - design heirarchical env filesystem
* make sure that it works as a dependency post publish
  (worried that .txt and templates won't be bundled)
* also output documentation
* adapters
  - listen on network socket
  - open unix domain socket
  - stdin and stdout
  - with forking
  - with threads
  - with non-blocking select with connection id
  - with subprocess stdin/stdout
* basic interface: read message, write message
* thrifty interface:
  - read message into buffer, verify, no copy
  - write takes all arguments and writes them directly into buffer
* trait based interface: constrained as much as possible
* support 9p2000.u, 9p2000.l
* codegen libraries for other languages:
  - python2/3
  - c
  - c++
  - object c
  - swift
  - java
  - node
  - go
  - forth
  - mips
  - arm
  - x86
  - haskell
  - perl
  - perl6
  - scala
  - ocaml
  - ruby
  - common lisp
  - scheme
  - racket
  - tcl
  - sh
  - c#

references
----------

http://ericvh.github.io/9p-rfc/