Swarm is both a global distributed registry, like gproc, and a
clustering utility. It was designed for the use case where large
numbers of persistent processes are created for things like devices,
and are unique across a cluster of Erlang nodes, and messages must
be routed to those processes, both individually, and in groups.
Additionally, Swarm is designed to distribute these processes evenly
across the cluster based on a consistent hashing algorithm, and
automatically move processes in response to cluster topology changes,
or node crashes.
simple build tool (sbt) is a minimally intrusive
build tool for Scala projects.
Test::SharedFork is utility module for Test::Builder.
This module makes forking test!
This module merges test count with parent process & child process.
libpru is a library to interface with Programmable Realtime Units on
FreeBSD. Currently only the Texas Instruments PRUs are
supported. Those can be found in the AM18XX and AM33XX (BeagleBone
Black) SoCs.
** If you are unfamiliar with testing read Test::Tutorial first! **
This is a simple, basic module for checking whether a class is a Singleton. A
Singleton describes an object class that can have only one instance in any
system. An example of a Singleton might be a print spooler or system registry,
or any kind of central dispatcher.
For a description and discussion of the Singleton class, see "Design Patterns",
Gamma et al, Addison-Wesley, 1995, ISBN 0-201-63361-2.
This module implements a trie data structure. The term "trie" comes from the
word retrieval, but is generally pronounced like "try". A trie is a tree
structure (or directed acyclic graph), the nodes of which represent letters
in a word. For example, the final lookup for the word 'bob' would look
something like $ref->{'b'}{'o'}{'b'}{'00'} (the 00 being an end marker).
Only nodes which would represent words in the trie exist, making the structure
slightly smaller than a hash of the same data set.
The advantages of the trie over other data storage methods is that lookup times
are O(1) WRT the size of the index. For sparse data sets, it is probably not as
efficient as performing a binary search on a sorted list, and for small files,
it has a lot of overhead. The main advantage (at least from my perspective) is
that it provides a relatively cheap method for finding a list of words in a
large, dense data set which begin with a certain string.
Test::Spec is a declarative specification-style testing system for
behavior-driven development (BDD) in Perl. The tests (a.k.a. examples) are named
with strings instead of subroutine names, so your fingers will suffer less
fatigue from underscore-itis, with the side benefit that the test reports are
more legible.
This module is inspired by and borrows heavily from RSpec
(http://rspec.info/documentation/), a BDD tool for the Ruby programming
language.
Type::Tiny::XS provides an XS boost for some of Type::Tiny's built-in type
constraints. Type::Tiny::XS is not required for Type::Tiny, but provides a speed
boost for some type checks if available.
libqb is a library with the primary purpose of providing high performance
client server reusable features. It provides high performance logging, tracing,
ipc, and poll.
librelp is an easy to use library for the RELP protocol. RELP in turn
provides reliable event logging over the network (and consequently
RELP stands for Reliable Event Logging Protocol).
RELP (and hence) librelp assures that no message is lost, not even
when connections break and a peer becomes unavailable. The current
version of RELP has a minimal window of opportunity for message
duplication after a session has been broken due to network problems.
In this case, a few messages may be duplicated (a problem that also
exists with plain TCP syslog). Future versions of RELP will address
this shortcoming.