Permalink
Browse files

Added a README file.

  • Loading branch information...
1 parent 64efa3a commit 374b6e3a0df7294e998a29e41991e5fb5c0c32ac @smithzvk committed Jun 26, 2011
Showing with 74 additions and 0 deletions.
  1. +74 −0 README.org
View
@@ -0,0 +1,74 @@
+
+* Versioned arrays
+
+Versioned-Arrays is a library allowing you to use arrays in a relatively cheap
+manner. See [[http://directed-procrastination.blogspot.com/2011/06/versioned-arrays.html][my blog post]] on it for more in depth treatment of the ideas behind
+it.
+
+** Where can it be used
+
+Basically it allows you to modify parts of a "versioned array," which is a small
+wrapper around a Lisp array, and the resultant modified array, and the original
+array, only requires /O(N+m)/ storage where /N/ is the number of elements in the
+array and /m/ is the number of edits that are made in between the two versions.
+It works very well for problems where you are interested in a set of arrays that
+are only a few edits apart. In fact in this case, the asymptotic behavior is
+constant time, just like with normal mutable arrays.
+
+Arrays are created with =make-versioned-array=, elements are accessed with
+=varef=, and arrays are modified using =modf= like so =(modf (varef array index)
+5)=.
+
+** Thread safety
+
+The library should be thread safe, but this comes at the price that a given
+array has a single lock that is held even for reads. Thus contention can be a
+problem.
+
+** Installation
+
+This is an ASDF package.
+
+** Dependencies
+
+Not many dependencies, yay:
+
+ 1. bordeaux-threads
+ 2. Modf
+
+Additional dependencies for the test suite:
+
+ 1. Iterate
+ 2. Stefil
+
+
+** License
+
+This is a pretty simple piece of code so I am publishing it under the 3 clause
+BSD license. It follows:
+
+Copyright (c) 2011, Zach Kost-Smith
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the <organization> nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+

0 comments on commit 374b6e3

Please sign in to comment.