LevelDB is a fast key-value storage library written at Google that provides an
ordered mapping from string keys to string values.
Features:
- Keys and values are arbitrary byte arrays.
- Data is stored sorted by key.
- Callers can provide a custom comparison function to override the sort order.
- The basic operations are Put(key,value), Get(key), Delete(key).
- Multiple changes can be made in one atomic batch.
- Users can create a transient snapshot to get a consistent view of data.
- Forward and backward iteration is supported over the data.
- Data is automatically compressed using the Snappy compression library.
- External activity (file system operations etc.) is relayed through a virtual
interface so users can customize the operating system interactions.
- Detailed documentation about how to use the library is included with the
source code.
Electric Fence is a different kind of malloc() debugger. It uses the virtual
memory hardware of your system to detect when software overruns the boundaries
of a malloc() buffer. It will also detect any accesses of memory that has
been released by free(). Because it uses the VM hardware for detection,
Electric Fence stops your program on the first instruction that causes
a bounds violation. It's then trivial to use a debugger to display the
offending statement.
It will probably port to any ANSI/POSIX system that provides mmap(), and
mprotect(), as long as mprotect() has the capability to turn off all access
to a memory page, and mmap() can use /dev/zero or the MAP_ANONYMOUS flag
to create virtual memory pages.
Complete information on the use of Electric Fence is in the manual page
efence(3).
The Automated Testing Framework (ATF) is a collection of libraries to
implement test programs in a variety of languages. At the moment, ATF
offers C, C++ and POSIX shell bindings with which to implement tests.
These bindings all offer a similar set of functionality and any test
program written with them exposes a consistent user interface.
ATF-based test programs rely on a separate runtime engine to execute them.
The runtime engine is in charge of isolating the test programs from the
rest of the system to ensure that their results are deterministic and that
they cannot affect the running system. The runtime engine is also
responsible for gathering the results of all tests and composing reports.
The current runtime of choice is Kyua.
CFFI, the Common Foreign Function Interface, purports to be a
portable foreign function interface for Common Lisp. The CFFI library
is composed of a Lisp-implementation-specific backend in the CFFI-SYS
package, and a portable frontend in the CFFI package.
The CFFI-SYS backend package defines a low-level interface to the
native FFI support in the Lisp implementation. It offers operators
for allocating and dereferencing foreign memory, calling foreign
functions, and loading shared libraries. The CFFI frontend provides
a declarative interface for defining foreign functions, structures,
typedefs, enumerated types, etc. It is implemented in portable ANSI
CL making use of the low-level operators exported by CFFI-SYS.
This package is compiled with SBCL.
PEAR::XML_Serializer serializes complex data structures like arrays
or object as XML documents.
This class helps you generating any XML document you require without
the need for DOM.
Furthermore this package can be used as a replacement to serialize()
and unserialize() as it comes with a matching XML_Unserializer that
is able to create PHP data structures (like arrays and objects)
from XML documents, if type hints are available.
If you use the XML_Unserializer on standard XML files, it will try
to guess how it has to be unserialized. In most cases it does exactly
what you expect it to do.
Try reading a RSS file with XML_Unserializer and you have the whole
RSS file in a structured array or even a collection of objects,
similar to XML_RSS.
Since version 0.8.0 the package is able to treat XML documents
similar to the simplexml extension of PHP 5.
Codeville is a distributed Version Control System. It began with a novel
idea for a merge algorithm, and has grown from there. It is designed to
be easy to use, and scale from small personal projects, to very large
distributed ones. If you'd like to know why there's need for new merge
algorithms, consider what the lead monotone developer had to say:
http://article.gmane.org/gmane.comp.version-control.monotone.devel/3264
Codeville works by creating an identifier for each change that is done,
and remembering the list of all changes which have been applied to each
file, and the last change which modified each line in each file. When
there's a conflict, it checks to see if one of the two sides has already
been applied to the other one, and if so, makes the other side win
automatically. When there's a non automatically mergeable version conflict,
Codeville behaves in almost exactly the same way as CVS.
The definition of conform is "Adapt or conform oneself to new or
different conditions". As this library is used to adapt your
application to its deployed environment, I think it's rather fitting.
It's also a play on the word configuration, and the fact that Conform
uses an init-style configuration, maintained in a .conf file.
Conform is a library for Elixir applications. Its original intended
use is in exrm as means of providing a simplified configuration
file for deployed releases, but is flexible enough to work for any
use case where you want init-style configuration translated to
Elixir/Erlang terms. It is inspired directly by basho/cuttlefish,
and in fact uses its .conf parser. Beyond that, you can look at
conform as a reduced (but growing!) implementation of cuttlefish
in Elixir.
IPython is a free software project which tries to:
1. Provide an interactive shell superior to Python's
default. IPython has many features for object introspection,
system shell access, and its own special command system for
adding functionality when working interactively. It tries to be
a very efficient environment both for Python code development
and for exploration of problems using Python objects (in
situations like data analysis).
2. Serve as an embeddable, ready to use interpreter for your own
programs. IPython can be started with a single call from inside
another program, providing access to the current namespace. This
can be very useful both for debugging purposes and for
situations where a blend of batch-processing and interactive
exploration are needed.
3. Offer a flexible framework which can be used as the base
environment for other systems with Python as the underlying
language. Specifically scientific environments like Mathematica,
IDL and Mathcad inspired its design, but similar ideas can be
useful in many fields.
Generate is a text preprocessor that I originally wrote to help me write
custom accounting applications based on the Progress database product. I
felt that the built in wasn't useful enough so I designed a new one and
implemented it. It actually started life as a package configuration and
batch file generator for DOS and mutated to a simple script interpreter
to replace shar file distribution. At this point it has almost nothing in
common with that first program.
The basic idea behind generate is to create a script which generates files.
There is some simple flow control constructs but the power lies in its
macro processing. I have shamelessly stolen ideas from cpp, m4, make and
David Tilbrook's dtree.
Gitolite is an access control layer on top of git, which allows access control
down to the branch level, including specifying who can and cannot rewind a
given branch.
Gitolite lets you use a single user on a server to host many git repositories
and provide access to many developers, without having to give them real
userids on or shell access to the server. Authentication is most commonly done
using sshd, but you can also use httpd if you prefer.
Gitolite can restrict who can read from (clone/fetch) or write to (push) a
repository. It can also restrict who can push to what branch or tag, which is
very important in a corporate environment.