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.
nio4r provides an abstract, cross-platform stateful I/O selector API for Ruby.
I/O selectors are the heart of "reactor"-based event loops, and monitor multiple
I/O objects for various types of readiness, e.g. ready for reading or writing.
The most similar API provided by Ruby today is Kernel.select, however the select
API requires you to pass in arrays of all of the I/O objects you're interested
in every time. nio4r provides a more object-oriented API that lets you register
I/O objects with a selector then handle them when they're selected for various
types of events.
nio4r is modeled after the Java NIO API, but simplified for ease-of-use.
Its goals are:
- Expose high-level interfaces for stateful IO selectors
- Keep the API small to maximize both portability and performance across many
different OSes and Ruby VMs
- Provide inherently thread-safe facilities for working with IO objects
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.
This is a port of the bulk of the Plan 9 software build environment to Unix.
It tries to reproduce the Plan 9 build environment as faithfully as possible,
providing u.h and libc.h, and blithely redefining tokens such as open, dup,
and accept in order to provide implementations that better mimic the Plan 9
semantics. The result is a somewhat more complicated and less Unix-friendly
environment, but Plan 9 programs can typically be compiled with little or no
changes.
The port includes the following:
- Sources for Linux, FreeBSD, and SunOS
- lib9 (nee libc), libString, libbin, libbio, libcomplete, libdraw,
liblibflate, frame, libfs, libhtml, libhttpd, libip, libmux, libplumb,
liblibregexp, libsec, thread, and libventi
- 9term, acme, hoc, plumber, rio (nee 9wm), sam, and samterm, along with
many small utilities and manual pages
- Plan 9 bitmap fonts
BIND version 9 is a major rewrite of nearly all aspects of the underlying BIND
architecture. Some of the important features of BIND 9 are:
DNS Security: DNSSEC (signed zones), TSIG (signed DNS requests)
IP version 6: Answers DNS queries on IPv6 sockets, IPv6 resource records (AAAA)
Experimental IPv6 Resolver Library
DNS Protocol Enhancements: IXFR, DDNS, Notify, EDNS0
Improved standards conformance
Views: One server process can provide multiple "views" of the DNS namespace,
e.g. an "inside" view to certain clients, and an "outside" view to others.
Multiprocessor Support
BIND 9.9 includes a number of changes from BIND 9.8 and earlier releases,
including:
NXDOMAIN redirection
Improved startup and reconfiguration time, especially with large
numbers of authoritative zones
New "inline-signing" option, allows named to sign zones completely
transparently, including static zones
Many other new features, especially for DNSSEC
See the CHANGES file for more information on features.
DNSPerf and ResPerf Provide Communication Providers with Predictive
Planning Tools to Scale Networks.
Two tools, DNSPerf and ResPerf deliver accurate performance metrics
of Domain Name Services (DNS). These tools are easy-to-use and
simulate real Internet workloads to provide the necessary insight
that carriers need to plan and deploy network services.
DNSPerf measures Authoritative Domain Name services and is designed
to simulate network conditions by self-pacing the query load.
Caching services performance and workload profile differ significantly
from Authoritative Domain services; therefore a different tool is
needed. ResPerf is designed specifically to simulate Caching Domain
Name services. To test a caching server, ResPerf systematically
increases the query rate and monitors the response rate.