While ANSI color escape codes are fairly simple, it can be hard to
remember the codes for all of the attributes and the code resulting
from hard-coding them into your script is definitely difficult to
read. This module is designed to fix those problems, as well as
provide a convenient interface to do a few things for you
automatically (like resetting attributes after the text you print out
so that you don't accidentally leave attributes set).
Despite its name, this module can also handle non-color ANSI text
attributes (bold, underline, reverse video, and blink). It uses either
of two interfaces, one of which uses "constants" for each different
attribute and the other of which uses two subs which take strings of
attributes as arguments.
This is PIRE, Perl Incompatible Regular Expressions library.
This library is aimed at checking a huge amount of text against
relatively many regular expressions. Roughly speaking, it can just
check whether given text maches the certain regexp, but can do it
really fast (more than 400 MB/s on our hardware is common). Even
more, multiple regexps can be combined together, giving capability
to check the text against apx.10 regexps in a single pass (and
mantaining the same speed).
Since Pire examines each character only once, without any lookaheads
or rollbacks, spending about five machine instructions per each
character, it can be used even in realtime tasks.
On the other hand, Pire has very limited functionality (compared
to other regexp libraries). Pire does not have any Perlish conditional
regexps, lookaheads & backtrackings, greedy/nongreedy matches;
neither has it any capturing facilities.
This module implements a very fast JSON encoder/decoder for Python.
JSON stands for JavaScript Object Notation and is a text based lightweight
data exchange format which is easy for humans to read/write and for machines
to parse/generate. JSON is completely language independent and has multiple
implementations in most of the programming languages, making it ideal for
data exchange and storage.
The module is written in C and it is up to 250 times faster when compared to
the other python JSON implementations which are written directly in python.
This speed gain varies with the complexity of the data and the operation and
is the range of 10-200 times for encoding operations and in the range of
100-250 times for decoding operations.
Envisage is a Python-based framework for building extensible applications, that
is, applications whose functionality can be extended by adding "plug-ins".
Envisage provides a standard mechanism for features to be added to an
application, whether by the original developer or by someone else. In fact,
when you build an application using Envisage, the entire application consists
primarily of plug-ins. In this respect, it is similar to the Eclipse and
Netbeans frameworks for Java applications.
Each plug-in is able to:
* Advertise where and how it can be extended (its "extension points").
* Contribute extensions to the extension points offered by other plug-ins.
* Create and share the objects that perform the real work of the application
("services").
The Envisage project provides the basic machinery of the Envisage framework.
Parser combinators are just higher-order functions that take parsers as
their arguments and return them as result values. Parser combinators are:
* First-class values
* Extremely composable
* Tend to make the code quite compact
* Resemble the readable notation of xBNF grammars
Parsers made with funcparserlib are pure-Python LL(*) parsers. It means that
it's very easy to write them without thinking about look-aheads and all that
hardcore parsing stuff. But the recursive descent parsing is a rather slow
method compared to LL(k) or LR(k) algorithms.
So the primary domain for funcparserlib is parsing little languages or external
DSLs (domain specific languages).
The library itself is very small. Its source code is only 0.5 KLOC, with lots
of comments included. It features the longest parsed prefix error reporting,
as well as a tiny lexer generator for token position tracking.
gevent is a coroutine-based Python networking library that uses greenlet to
provide a high-level synchronous API on top of the libevent event loop.
Features include:
- Fast event loop based on libevent (epoll on Linux, kqueue on FreeBSD).
- Lightweight execution units based on greenlet.
- API that re-uses concepts from the Python standard library (for example there
are Events and Queues).
- Cooperative sockets with SSL support.
- DNS queries performed through libevent-dns.
- Monkey patching utility to get 3rd party modules to become cooperative.
- Fast WSGI server based on libevent-http
gevent is inspired by eventlet but features more consistent API, simpler
implementation and better performance. Read why others use gevent and check out
the list of the open source projects based on gevent.
z80asm is an assembler for the Z80 microprcessor. The assembler aims to be
portable and complete. Of course it assembles all official mnemonics, but it
also aims to assemble the unofficial mnemonics.
The assembler features the output of listing files which show the source with
the assembled codes and address next to it.
It also allows outputting of label files, in a format which can be included by
other assembler source files.
Other noteworthy features are complete calculation capabilities, conditional
assembling of parts of the code, and inclusion of other source files.
The assembler was written with the MSX computer in mind as the target platform,
but it can be used for any system with a Z80 in it. The original idea was to
make header files with labels of MSX specific addresses (BIOS, BDOS, system
variables), but nothing like this has been done yet.
This gem is a C binding to the excellent YAJL JSON parsing and generation
library.
Features:
* JSON parsing and encoding directly to and from an IO stream (file, socket,
etc) or String. Compressed stream parsing and encoding supported for Bzip2,
Gzip and Deflate.
* Parse and encode multiple JSON objects to and from streams or strings
continuously.
* JSON gem compatibility API - allows yajl-ruby to be used as a drop-in
replacement for the JSON gem
* Basic HTTP client (only GET requests supported for now) which parses JSON
directly off the response body *as it's being received*
* ~3.5x faster than JSON.generate
* ~1.9x faster than JSON.parse
* ~4.5x faster than YAML.load
* ~377.5x faster than YAML.dump
* ~1.5x faster than Marshal.load
* ~2x faster than Marshal.dump
TESLA builds on our experiences developing the TrustedBSD MAC Framework
and Capsicum: our most critical security properties are frequently
safety (temporal) properties rather than static invariants. Current
tools for testing temporal properties are largely static, and unable to
work effectively on extremely large C-language software bases, such as
multi-million lines-of-code operating system kernels and web browsers.
TESLA borrows ideas from model checking, applying them in a dynamic
context using compiler-assisted instrumentation to continuously validate
temporal security assertions during software execution. We have
implemented a prototype of TESLA based on clang/LLVM AST transforms,
which is able to test both explicit automata against C implementations
(such as protocol state machines in the kernel and OpenSSL) and inline
assertions checking for missing access control checks in OS logic.
Portable libumem.
================
This is a port of Solaris libumem to non-Solaris systems.
The port was made while integrating libumem with our Ecelerity MTA product, so
your initial experience will not be 100% out-of-the-box, because there is no
standalone configure script for the library at this time. (patches welcome!)
In addition, since our deployment is threaded, we force the library into
threaded mode.
While the library is itself stable (it's the memory allocator used by the
Solaris OS), the port may have a few rough edges. We're shipping umem with
Linux and Windows versions of our product as we have found it to be stable.
We will continue to update this project as and when we make improvements, and
welcome third-party patches that improve the usability for everyone.
Wez Furlong,
OmniTI, Inc.