Riot is a tool for keeping (textual) information organised. It is a todo list and note manager, and a manager for whatever information one might collect. It has an interface resembling those of slrn and mutt and all text editing is done with an external editor, making it a nice browser for collections of text.
PXSL ("pixel") is a convenient shorthand for writing markup-heavy XML documents. It provides XML authors and programmers with a simple, concise syntax that they can use to create XML documents. For more advanced users, it offers customizable shortcuts and sophisticated refactoring tools like functional macros that can markedly reduce the size and complexity of markup-dense XML documents.
GeBoP stands for General Boardgames Player. GeBoP allows you to play 9 strategic boardgames against the computer or against another player. You can even watch a number of computer players fight among themselves. Some of the games can be played with a variable number of players, and other games can be played on various board sizes. GeBoP features a unified best move engine. Because of this, additional strategic boardgames are easy to add to the application.
In Haskell, data type declarations, Parsec parsers, and HughesPJ pretty-printers very much resemble each other; supplying all three is virtuous, but involves a large amount of code duplication. syntran is a code generator designed to reduce the amount of duplication. Its source is similar to a Parsec LanguageDef-using parser, annotated with the unique information from the data type declaration and the pretty-printer which would normally not be found in a parser. It separates this information out to generate pure Haskell.
Happy is a parser generator system for Haskell, similar to the tool 'yacc' for C. Like yacc, it takes a file containing an annotated BNF specification of a grammar and produces a Haskell module containing a parser for the grammar. It is flexible: you can have several Happy parsers in the same program, and several entry points to a single grammar. It can work in conjunction with a lexical analyser supplied by the user (either hand-written or generated by another program), or it can parse a stream of characters directly (but this isn't practical in most cases).
Parsec is a monadic parser combinator library for Haskell. It can parse context-sensitive, infinite look-ahead grammars but performs best on predictive (LL) grammars. The parser definition is in the same language as the rest of the program, so it benefits from type checking and existing development tools. Parsers are first-class values within the language and it is easy to extend the set of parsers with custom-made ones.
CMI is an optimizing frontend for gcc which allows gcc to inline across module boundaries without requiring you to put inline functions in header files or even mark inline functions for inlining. It makes your code go faster, makes your code smaller, makes your embedded software use less stack space, is a preprocessor for gcc, supports most gcc extensions, and is able to deal with such notoriously tricky code as the glibc header files. It works by merging multiple C files into one file, topologically sorting the definitions so that definitions come before uses, and marks functions as inline. It controls code bloat by deleting dead code and inlining up until a user-specified budget is reached. You can use user-specified heuristics to select which functions to inline (it includes a tool which uses gprof output to choose inlinings to illustrate this).
Knit is a new component definition and linking language that can be used with C and assembly code. Knit supports component definitions that require little or no modification to existing code. It automatically schedules component initializers and finalizers and provides an extensible constraint system to detect subtle errors in component composition. Knit provides cross-module inlining that largely eliminates the overheads of componentization, supports component hierarchies, and supports cyclic component dependencies. Knit can be used for any C program, but is especially well suited for use in systems that have many separate components, multiple implementations of the same component, intricate initialization requirements, complex component interdependencies, low-level code and embedded systems, or code that is used in radically different configurations.