Permalink
Browse files

add README file

  • Loading branch information...
1 parent 4729cd8 commit f62ac381a9bf22fd08d61df97f471424b35f39eb @froydnj committed Mar 18, 2010
Showing with 31 additions and 1 deletion.
  1. +29 −0 README
  2. +2 −1 nibbles.asd
View
29 README
@@ -0,0 +1,29 @@
+When dealing with network protocols and file formats, it's common to
+have to read or write 16-, 32-, or 64-bit datatypes in signed or
+unsigned flavors. Common Lisp sort of supports this by specifying
+:ELEMENT-TYPE for streams, but that facility is underspecified and
+there's nothing similar for read/write from octet vectors. What most
+people wind up doing is rolling their own small facility for their
+particular needs and calling it a day.
+
+This library attempts to be comprehensive and centralize such
+facilities. Functions to read 16-, 32-, and 64-bit quantities from
+octet vectors in signed or unsigned flavors are provided; these
+functions are also SETFable. Since it's sometimes desirable to
+read/write directly from streams, functions for doing so are also
+provided. On some implementations, reading/writing IEEE singles/doubles
+(i.e. SINGLE-FLOAT and DOUBLE-FLOAT) will also be supported.
+
+In addition to centralizing such facilities, NIBBLES also aspires to
+become a place where compiler optimizations can be written once and used
+everywhere. The intention is that (eventually):
+
+ (nibbles:sb32ref/le vector index)
+
+will compile (with any necessary safety checks) to a MOVSX instruction
+on an x86oid processor in SBCL (or other implementations) if VECTOR and
+INDEX are of appropriate types.
+
+I remember reading a post on comp.lang.lisp that suggested the designers
+of Common Lisp ignored the realities of octets and endianness and so
+forth. This library is a small step towards remedying that deficiency.
View
@@ -5,7 +5,8 @@
:author "Nathan Froyd <froydnj@gmail.com>"
:maintainer "Nathan Froyd <froydnj@gmail.com>"
:description "A library for accessing octet-addressed blocks of data"
- :components ((:static-file "LICENSE")
+ :components ((:static-file "README")
+ (:static-file "LICENSE")
(:file "package")
(:file "types" :depends-on ("package"))
(:file "vectors" :depends-on ("types"))

0 comments on commit f62ac38

Please sign in to comment.