--
CIL (C Intermediate Language) is a high-level representation along
with a set of tools that permit easy analysis and source-to-source
transformation of C programs.
CIL is both lower-level than abstract-syntax trees, by clarifying
ambiguous constructs and removing redundant ones, and also higher-level
than typical intermediate languages designed for compilation, by
maintaining types and a close relationship with the source program.
The main advantage of CIL is that it compiles all valid C programs
into a few core constructs with a very clean semantics. Also CIL
has a syntax-directed type system that makes it easy to analyze and
manipulate C programs. Furthermore, the CIL front-end is able to
process not only ANSI-C programs but also those using Microsoft C
or GNU C extensions.
tla is an Arch CLI written in C.
Arch is a revision control system, i.e. a system that makes it easy to
track changes to computer files, mostly the source code to complex
software systems.
It has the following features that set it apart from other revision
control systems, such as CVS, Subversion or Bitkeeper:
- distributed repositories
- advanced merging capabilities
- low barrier of entry : everybody can easily publish their changes to
others projects. Repositories can be hosted on HTTP, FTP SFTP and
WebDav server.
- renames handled
- archive signing and integrity checking : a facility by which the
integrity of a publicly accessible archive can be verified.
Submitted and maintained by Laurent Cheylus <foxy ta free tod fr>
Embedding tests allows tests to be placed near the code its testing.
This is a nice supplement to the traditional .t files. It's like XUnit,
Perl-style.
This is a simple developer's tool for finding circular references in
objects and other types of references. Because of Perl's reference-count
based memory management, circular references will cause memory leaks.
Assertions are the explict expressions of your assumptions about the
reality your program is expected to deal with, and a declaration of
those which it is not. They are used to prevent your program from
blissfully processing garbage inputs (garbage in, garbage out becomes
garbage in, error out) and to tell you when you've produced garbage
output.
When you're writing unit tests for code that deals with tainted data,
you'll want to have a way to provide tainted data for your routines to
handle, and easy ways to check and report on the taintedness of your
data, in standard Test::More style.
When the code you're testing returns multiple lines, records or data
structures and they're just plain wrong, an equivalent to the Unix
"diff" utility may be just what's needed.
ok sturm@
"Module::Build" is a system for building, testing, and installing Perl
modules. It is meant to be a replacement for "ExtUtils::MakeMaker".
Developers may alter the behavior of the module through subclassing in a
much more straightforward way than with "MakeMaker". It also does not
require a "make" on your system, most of the "Module::Build" code is
pure-perl and written in a very cross-platform way.
ok sturm@
"ExtUtils::ParseXS" will compile XS code into C code by embedding the
constructs necessary to let C functions manipulate Perl values and
creates the glue necessary to let Perl access those functions.
ok sturm@
This module can build the C portions of Perl modules by invoking the
appropriate compilers and linkers in a cross-platform manner. It was
motivated by the "Module::Build" project, but may be useful for other
purposes as well. However, it is not intended as a general
cross-platform interface to all your C building needs.
ok sturm@
Class names in Perl often don't sound great when spoken, or look good
when written in prose. For this reason, we tend to say things like
"customer" or "basket" when we are referring to
"My::Site::User::Customer" or "My::Site::Shop::Basket". We thought it
would be nice if our classes knew what we would prefer to call them.
This module will add a "moniker" (and "plural_moniker") method to
"UNIVERSAL", and so to every class or module.
ok sturm@
This module generates SQL, while retaining complete control
over statement handles and uses the DBI interface. The
underlying idea is for this module to do what you mean,
based on the data structures you provide it. The big
advantage is that you don't have to modify your code every
time your data changes, as this module figures it out.
from Sam Smith <S at msmith.net>
B::DeObfuscate is a backend module for the Perl compiler that generates
perl source code, based on the internal compiled structure that perl
itself creates after parsing a program. It adds symbol renaming
functions to the B::Deparse module. An obfuscated program is already
parsed and interpreted correctly by the B::Deparse program.
Unfortunately, if the obfuscation involved variable renaming then the
resulting program also has obfuscated symbols.
ok sturm@
YAML is a generic data serialization language that is optimized for
human readability. It can be used to express the data structures of most
modern programming languages.
ok sturm@
Its possible to accidentally inherit an AUTOLOAD method. Often this
will happen if a class somewhere in the chain uses AutoLoader or defines
one of their own. This can lead to confusing error messages when method
lookups fail.
Sometimes you want to avoid this accidental inheritance. In that case,
inherit from Class::WhiteHole. All unhandled methods will produce
normal Perl error messages.
from Sam Smith <S at msmith.net>
"IDoc extracts interface documentation and declarations from
Haskell modules based on standard Haskell layout rules and a
small number of clues that the programmer embeds in
interface comments. These clues have been designed to be
visually non-imposing when displaying the source in a text
editor. Interface documentation is rendered in standard
markup languages (currently, only HTML is supported). IDoc
has been designed to be simple to use and install."
IDoc has an advantage over other interface doc tools (like
haddock) in that it is pure Haskell98, and builds with both
ghc and nhc98, making it far more portable.
ok pvalchev@
Submitted by Michael Coulter <mjc@bitz.ca>.
Class::ReturnValue is a "clever" return value object that can allow code
calling your routine to expect: a boolean value (did it fail) or a list
(what are the return values).
The Haskell Ports Library (HPL) supports concurrent and distributed
computing in the IO monad _without_ relying on mutable variables.
Instead, it supplies monotone single-assignment variables and ports
abstractions. Ports are an abstraction for modelling variables whose
values evolve over time without the need to resort to mutable
variable, such as IORefs. More precisely, a port represents all values
that a time-dependent variable successively takes as a stream, where
each element of the stream corresponds to a state change.
Ports are ideally suited for purely functional GUI interfaces that
completely avoid the use of mutable variables. It is planned to extend
the library to interaction between different processes possibly
located on distinct processing nodes.
ok pvalchev@
C->Haskell is an interface generator that simplifies the development
of Haskell bindings to C libraries. The tool processes existing C
header files that determine data layout and function signatures on the
C side, in conjunction with Haskell modules that specify Haskell-side
type signatures and marshaling details. Hooks embedded in the Haskell
code signal access to C structures and functions; they are expanded by
the interfacing tool in conjunction with information in the
corresponding C header file.
ok pvalchev@
This update fixes a longstanding bug that made Gnome 2 not play well
with macppc and sparc* arches. Additionally, it introduces a new patch
scheme for libtool since the later libtools recognize -pthread... well
mostly anyway.
Cheetah is a Python-powered template engine and code generator. It can
be used as a standalone utility or it can be combined with other tools.
Cheetah has many potential uses, but web developers looking for a viable
alternative to ASP, JSP, PHP and PSP are expected to be its principle
user group.
ok sturm@.
From DESCR:
--
This is an alternative to Exporter intended to provide a lightweight
subset of its functionality. It supports import(), @EXPORT and
@EXPORT_OK and not a whole lot else.
OSSP uuid is a ISO-C application programming interface (API) and
corresponding command line interface (CLI) for the generation of DCE
1.1 and ISO/IEC 11578:1996 compliant Universally Unique Identifiers
(UUID).
Date::ICal talks the ICal date format, and is intended to be
a base class for other date/calendar modules that know about
ICal time format also.
from Sam Smith <S at msmith.net>
This module may be used to create simple date objects. It
only handles dates within the range of Unix time. It will
only allow the creation of objects for valid dates.
Attempting to create an invalid date will return undef.
from Sam Smith <S at msmith.net>
Submitted by, and work for needed support written by
Mark Kettenis <kettenis@gnu.org>
Only for amd64 i386 sparc
Not all architectures work/are enabled at this point, this is
mostly being included due to the desperate need for an amd64
debugger this release.
> On Opteron/AMD64 systems with GCC, count_trailing_zeros in longlong.h
> may cause errors from the assembler about incorrect registers used with
> bsfq.
From GMP project directly; ok maintainer naddy