The Boehm-Weiser garbage collection package, for C and C++ -
garbage collection and memory leak detection libraries.
A garbage collector is something which automatically frees malloc'd
memory for you by working out what parts of memory your program
no longer has pointers to. As a result, garbage collectors can also
inform you of memory leaks (if they find memory they can free, it means
you have lost all of your pointers to it, but you didn't free it).
C programs may be linked against either of these, and should run (with
GC or leak detection) without change. C++ programs must include a header
to use garbage collection, though leak detection should work without
such source code modifications. See the man page and header files.
This package only brings Boehm-GC libraries with threading support.
ps: garbage collection is addictive.
CScout is a source code analyzer and refactoring browser for
collections of C programs. It can process workspaces of multiple
projects (we define a project as a collection of C source files
that are linked together) mapping the complexity introduced by the
C preprocessor back into the original C source code files. CScout
takes advantage of modern hardware advances (fast processors and
large memory capacities) to analyze C source code beyond the level
of detail and accuracy provided by current compilers and linkers.
The analysis CScout performs takes into account the identifier
scopes introduced by the C preprocessor and the C language proper
scopes and namespaces. CScout has already been applied on projects
ranging from tens of thousands of lines, like the FreeBSD and
Linux kernels, and the Apache web server.
This free unsupported version of CScout is distributed under the terms
of the CScout Public License, which is available in the accompanying
documentation.
Cproto is a program that generates function prototypes and variable
declarations from C source code. It can also convert function definitions
between the old style and the ANSI C style. This conversion overwrites the
original files, so make a backup copy of your files in case something goes
wrong.
The program isn't confused by complex function definitions as much as other
prototype generators because it uses a yacc generated parser. By ignoring all
the input between braces, I avoided implementing the entire C language grammar.
Cproto is in the public domain, except for the configure script which is
copyrighted by the Free Software Foundation, Inc. If you have any comments
or find any bugs, please let me know.
Darcs is a free, open source revision control system. It is:
* Distributed: Every user has access to the full command set, removing
boundaries between server and client or committer and non-committers.
* Interactive: Darcs is easy to learn and efficient to use because it
asks you questions in response to simple commands, giving you choices in
your work flow. You can choose to record one change in a file, while
ignoring another. As you update from upstream, you can review each patch
name, even the full "diff" for interesting patches.
* Smart: Originally developed by physicist David Roundy, darcs is based
on a unique algebra of patches.
This smartness lets you respond to changing demands in ways that would
otherwise not be possible. Learn more about spontaneous branches with
darcs.
libRUIN (Renderer for User Interfaces in Ncurses) is a rendering library for
various XML-based user interface markup languages (such as XHTML or Mozilla
XUL), using the Ncurses terminal control library as a rendering target.
GNU Guile and the SDOM Scheme module are used as the "glue" that manages user
input and event handling (as such, event handlers must currently be written
in Guile Scheme; support for ECMAscript event handlers is being considered
for inclusion). An application programmer passes an XML document (including,
potentially, a set of CSS stylesheets) and an Ncurses WINDOW structure, and
libRUIN paints the WINDOW according to the markup and CSS; the programmer may
subsequently pass Ncurses-style input strings to that WINDOW via libRUIN, and
libRUIN will handle the resulting event flows.
mtbl is a C library implementation of the Sorted String Table
(SSTable) data structure, based on the SSTable implementation in
the open source Google LevelDB library <https://github.com/google/leveldb>.
An SSTable is a file containing an immutable mapping of keys to
values. Keys are stored in sorted order, with an index at the end
of the file allowing keys to be located quickly.
mtbl is not a database library. It does not provide an updateable
key-value data store, but rather exposes primitives for creating,
searching and merging SSTable files. Unlike databases which use the
SSTable data structure internally as part of their data store,
management of SSTable files -- creation, merging, deletion, combining
of search results from multiple SSTables -- is left to the discretion
of the mtbl library user.
perlbrew is a program to automate the building and installation of perl in an
easy way. It provides multiple isolated perl environments, and a mechanism for
you to switch between them.
Everything are installed unter ~/perl5/perlbrew. You then need to include a
bashrc/cshrc provided by perlbrew to tweak the PATH for you. You then can
benefit from not having to run 'sudo' commands to install cpan modules because
those are installed inside your HOME too.
For the documentation of perlbrew usage see perlbrew command on CPAN, or by
running perlbrew help. The following documentation features the API of
App::perlbrew module, and may not be remotely close to what your want to read.
The Parma Polyhedra Library (PPL) is a modern C++ library for the
manipulation of convex polyhedra. To be more precise, the PPL can handle
all the convex polyhedra that can be defined as the intersection of a
finite number of closed hyperspaces, each described by an equality or a
non-strict inequality with rational coefficients. (More details are
available on the PPL's internal mechanisms.) The Parma Polyhedra Library
is:
- user friendly: you write x + 2*y + 5*z <= 7 when you mean it;
- fully dynamic: available virtual memory is the only limitation to
the dimension of anything;
- written in standard C++: meant to be portable;
- exception-safe: never leaks resources or leaves invalid object
fragments around;
- rather efficient: and we hope to make it even more so;
- thoroughly documented: perhaps not literate programming but close
enough;
- free software: distributed under the terms of the GNU General
Public License.
The Class:Multimethod module exports a subroutine (&multimethod) that can
be used to declare other subroutines that are dispatched using a algorithm
different from the normal Perl subroutine or method dispatch mechanism.
Normal Perl subroutines are dispatched by finding the appropriately-named
subroutine in the current (or specified) package and calling that. Normal
Perl methods are dispatched by attempting to find the appropriately-named
subroutine in the package into which the invoking object is blessed or,
failing that, recursively searching for it in the packages listed in the
appropriate @ISA arrays.
Class::Multimethods multimethods are dispatched quite differently. The
dispatch mechanism looks at the classes or types of each argument to the
multimethod (by calling ref on each) and determines the "closest" matching
variant of the multimethod, according to the argument types specified in
the variants' definitions (see "Finding the "nearest" multimethod" for a
definition of "closest").
Essentially, this module is a very optimized version of Clone::More.
By taking advantage of one of Clone::More's 'OPTIMIZATION_HACKS' as
well as removing all the Pure Perl from the More.pm, I was able to
gain a lot of speed out of the module. Essentially, though, the core
of the module is exactly as that of Clone::More.
You will see that by using Benchmark::cmpthese, I ran a simple
comparison between Storable::dclone, Clone::More::clone, and
Clone::Fast::clone. You will (should) begin to see the reason why I
loaded this module along side of Clone::More.
Rate Storable Clone::More Clone::Fast
Storable 7552/s -- -39% -59%
Clone::More 12400/s 64% -- -33%
Clone::Fast 18442/s 144% 49% --
For more information relative to the DESCRIPTION of this module, I
recommend peeking into the POD written for Clone::More (I took more
time with it ;) )