Program Development

This category gathers projects related to program and web-page development.

To facilitate navigating in this list, projects are categorized by their purpose, authorship, and current state. Each project entry lists the categories it pertains to. Clicking on a category name will bring a listing of all projects in that category.

Additionally, a list of related projects is provided where applicable. Each element in that list is a link to the corresponding project entry.

Clicking on a project's name will bring this project's entry as a separate page (a permalink).

Hovering your mouse over the version information of a project shows the list of changes introduced by that version.

Sort controls below allow you to order the list either lexicographically or by the most recent release date, in both directions.

Using the Search control, you can select projects by name. Shell-style globbing patterns (wildcards) are accepted.

(Return to the project listing)


Version: 1.07  —  2021-02-12
* Change bugtracker address.

This Perl module reads and parses Apache configuration file, expanding constructs like Include, IncludeOptional, IfModule, IfDefine, Use, etc.

Related projects:


Version: 1.03  —  2021-02-12
	- Change bugtracker address.

This Perl module provides a mechanism for detecting version, default settings, and the preloaded modules of the Apache httpd server. It does so by locating the server binary, invoking it with appropriate options and analyzing the output it produces.


Version: 1.07  —  Fri Feb 12 20:31:53 2021
	- Change bugtracker address.

This perl module aims to provide a generalized implementation of parse tree for various configuration files. It does not implement parser for any existing configuration file format. Instead, it provides an API that can be used by parser implementors to build internal representation for the particular configuration file format.


Version: 1.08  —  Thu Jun 23 15:21:17 2022
	- Handle the 'resolvers' section.
	- New class methods for declaring (and undeclaring) sections.
	- Fix changing the argv of a Node.

A perl module supplying a parser that converts the HAProxy configuration file to a parse tree and provides methods for various operations on this tree, such as: searching, modifying and saving it to a file.


Version: 1.05  —  Fri Feb 12 20:42:10 2021
	- Change bugtracker address.

Config::Parser provides a framework for writing configuration file parsers. It is an intermediate layer between the abstract syntax tree (Config::AST) and implementation of a parser for a particular configuration file format. The package provides also Config::Parser::Ini – a configuration file parser for ini-style files.


Version: 1.02  —  Sat Feb 13 08:35:45 2021
	- Change bugtracker address

A Perl module for parsing the ldap.conf configuration file.

Related projects:


Version: 1.02  —  2021-02-13
	- Change bugtracker address.

Perl extension for creating backup file copies. Three backup naming schemes are supported: simple backup creates backup file name by appending single tilde character to the original file name, numbered backup creates backup name by suffixing the original file name with .~N~, where N is a decimal number. Finally, automatic backup selects numbered scheme if at least one numbered backup file already exists and falls back to the simple backup otherwise.


Version: 1.04  —  2021-02-13
* Change bugtracker address.

Perl module that, given a list of strings, produces a regular expression that matches any of the input strings


Version: 1.03  —  2021-02-13
	- Change bugtracker address.

Syslog logging for Mojo applications


Version: 1.05  —  Fri Mar 15 13:47:40 2024
	- New constructor argument 'env' allows you to supply environment
	to the command to be run.
	- Fix packaging

A Perl module for running external commands and capturing their output. It prefers performance and effectiveness over portability. As its name suggests, it can be used only on POSIX systems.

Related projects:


Version: 0.2  —  2024-06-30
* New options gcide-include-tags and gcide-exclude-tags

These options control which tags will be eligible for spell-checking.

A filter for spell-checking GCIDE dictionary files with GNU Aspell.

Related projects:


Version: 1.7  —  2021-12-30
* Multiple start functions are allowed

The '--main' option can be given multiple times.  A separate graph
will be drawn for each function given as its argument.

* New option --target=FUNCTION

If this option is given, the produced graph will contain only paths
leading from start function (or functions) to the given FUNCTION.

Multiple '--target' options are allowed.

* New output format: dot

The '-f dot' (or '--format=dot') option instructs cflow to output
graph as a description in DOT language, suitable as input to graphviz

* cflow-mode: new commands for navigating in the graph:

  c   go to the calling function
  n   go to the next function at the same nesting level
  p   go to the previous function at the same nesting level

* Bugfixes:

** CVE-2019-16165
** CVE-2019-16166
** Fix parsing of K&R style function declarations
** Improve parsing of typecasts
** Fix recursive call detection

This tool analyzes a collection of C source files and prints a graph charting control flow within the program.

Related projects:


(Not released)

This is a modified versions of Romuald Texier’s eXtrans. It was used as the underlying mechanism for Ellinika and Runasimi at early stages of their development, before switching to xmltools.


(Not released)

GAMMA stands for a Guile Archive of Multiple Modules with an A just for the ‘A’ of it. It contains a set of useful Guile modules. In particular, it is used by and

Related projects:


Version: 1.24  —  2024-07-02
* New gdbm_load option: --update

The --update (-U) option instructs gdbm_load to update an existing

* Fix semantics of gdbm_load -r

The --replace (-r) is valid only when used together with --update.

* Use getline in gdbmtool shell.

* New function: gdbm_load_from_file_ext

In contrast to gdbm_load and gdbm_load_from_file, which derive
the value of the flag parameter for gdbm_open from the value
of their "replace" argument, this function allows the caller to
specify it explicitly.  The prototype is:

  int gdbm_load_from_file_ext (GDBM_FILE *pdbf, FILE *fp,
			       int flags, int replace,
			       int meta_mask,
			       unsigned long *line);

* Bugfixes

** Fix binary dump format for key and/or data of zero size.
** Fix location tracking and recover command in gdbtool.
** Fix possible buffer underflow in gdbmload.
** Ensure any padding bytes in avail_elem structure are filled with 0.
** Improve the documentation.

GNU dbm is a library of database functions that use extendible hashing and works similar to the standard UNIX dbm functions. These routines are provided to a programmer needing to create and manipulate a hashed database.

Related projects:


(Not released)

GINT provides a framework for easy integration of Guile into arbitrary software projects. It includes Autoconf macros for detecting the presence of Guile on the system, detecting its version number and location of its components, a set of Makefile and Automake rules for snarfing C sources, i.e. generating auxiliary files (.x files, containing symbol information for Guile interpreter, and .doc files, containing information about Guile primitives, their arguments and docstrings), and a C lexer program for extracting docstrings from a C file.

Related projects:


(Not released)

Access control lists for git.


(Not released)

Gnulib is a central location for common GNU code, which is shared among many GNU (and non-GNU) packages.


(Not released)

Grecs is a library for parsing structured configuration files from C programs. A structured configuration file has hierarchical structure, with block statements enclosing lower-level statements. Such configurations files are used by many programs, such as, e.g. Bind or Dico.

Related projects:


(Not released)

Imprimatur provides Texinfo macros for various editing tasks such as adding editor notes and annotations, as well as Makeinfo rules for verifying Texinfo document structure, format, and (to a certain extent) content coverage.

Related projects:


Version: 2.0  —  2007-09-23
* Licensed under GPLv3 or later.

* mixal

** Location of listing file

By default, mixal creates listing file in the current working directory.

* mixsim

** The .mixsim file
When started in terminal mode, the utility searches for file `.mixsim'
in the current working directory and reads it, if present. The file
may contain any mixsim commands.

** The set of terminal commands is improved to make it compatible with GDB.

** New command, PASSCOUNT
Set the number of crossings after whcih to clear the breakpoint.

** Removed optional second argument to BREAK.
The functionality of `BREAK <ADDR> <COUNT>' is now obtained by two


** New command DELETE.
An alias to CLEAR.

** New command IGNORE
Sets the number of hits to ignore before enabling the breakpoint.

** New commands ENABLE and DISABLE
Enable or disable the breakpoint with the given number.

** New command RUN
It is an alias for GO.

** New command SOURCE
Execute a file of mixsim commands.

** New command ADDRESS.
This command takes as its argument a breakpoint manipulation command
appropriate for the associated command.  However, the first argument
of the corresponding command is treated as MIX address, instead of a
breakpoint number.

** New command INFO.
An alias to LIST.

** New command SHELL.
Executes a subordinate shell or a shell command. Abbreviated to !.

** NEXT and STEP take optional argument.
The argument, if given, specifies number of instructions to
execute. Default is 1.

** INFO BREAK takes an optional argument specifying breakpoint number to list.
If prefixed with ADDRESS, it treats the argument as a MIX location and
lists all breakpoints set on that location.

MIX is a set of tools for assembling, running and debugging programs, written in MIXAL, an assembly language for an imaginary computer, MIX, used in The Art of Computer Programming of D. Knuth.


Version: 1.0

A simplistic implementation of the SMTP mail transport agent, designed for testing purposes. It behaves almost identically to any real MTA, except that it listens on localhost only and delivers all messages to the given UNIX mailbox file.

Related projects:


Version: 1.4  —  2022-10-20
* Fix

This tool finds differences in translatable strings and translations between two PO files or between two revisions of the same file. It ignores any differences in comments, entry ordering and spacing.


Version: 1.0.2  —  2018-11-05
Convert byte-like objects to UTF-8 strings.

Software packages usually include textual files describing noteworthy changes in each subsequent release. There exist several formats of such files. This package provides Python framework for parsing the most often used formats of such release log files. Support for any new format can be easily added.


(Not released)

A C module providing an API for running external command and capturing its output.

The function runcap runs an external command and waits for its termination, capturing its stdout and/or stderr and optionally piping the supplied data to its stdin.

Related projects:


(Not released)

Formats a slack-desc file for Slackware package.

Related projects:


Version: 7.1  —  18 October 2023
* Language
 . new generic definition commands, @defblock, @defline and @deftypeline,
   for definitions without automatic index entries
 . new @linemacro facility eases use of generic definition commands
 . new command @link creates plain links (supported output formats only)
 . @cartouche takes an argument to specify the cartouche title
 . you can use the new commands @nodedescription and @nodedescriptionblock
   to give text to be used in menu descriptions in Info and HTML output

* texi2any
 . @itemx at the beginning of a @table is now an error, not a warning
 . better validity checking of deeply nested commands
 . check that @set and @clear only appear at the start of a line
 . warn about missing menu entries even if CHECK_NORMAL_MENU_STRUCTURE is
   not set.  you can turn this off by setting CHECK_MISSING_MENU_ENTRY to 0.
 . no longer use --enable-encoding and --disable-encoding to determine
   whether to output encoded characters (instead of entities or commands)
   for HTML, XML, DocBook and LaTeX; instead, use the value of the
   OUTPUT_CHARACTERS customization variable.
 . stricter checks on input encoding, in particular more warnings and
   errors with malformed UTF-8
 . support any input file encoding if support exists in the operating
   system, not just a selected list of encodings
 . resolve an alias referring to another alias at definition time
 . internally, use "source marks" to keep all Texinfo source information that
   is not in the final tree (location of macros, values and included files
   expansion, @if* blocks, DEL comment, and @ protecting end of line on @def*
 . HTML output:
    . format @subentry and index entries with @seealso or @seeentry in a more
      similar way to printed output
    . output @shortcontents before @contents by default
    . omit colons after index entries by default.  this can still be
      configured with INDEX_ENTRY_COLON.
    . add @example syntax highlighting as a texi2any extension
    . no more capitalization of @sc argument in HTML Cross-references
    . change @point expansion to U+22C6 in HTML Cross-references
    . if a @node is not associated with a sectioning command but is
      followed by a heading command not usually associated to nodes
      such as @heading and this command appears before other formatted
      content, the heading command is assumed to supply the node heading.
      you can customize this with USE_NEXT_HEADING_FOR_LONE_NODE.
 . Info output:
    . new variable ASCII_DASHES_AND_QUOTES, on by default,
      outputs ASCII characters for literal quote or hyphen characters
      in source, rather than UTF-8.  this makes it easier to search
      Info files.
    . new ASCII_GLYPH variable for using ASCII renditions for glyph
      commands (like @bullet)
    . ASCII_PUNCTUATION still includes the effect of these new variables.
      control the format of descriptions in generated menus
 . XML output:
    . place menu leading text and menu separators in elements instead
      of attributes

* texi2dvi
 . macro expansion with texi2any requires at least version 5.0 (only
   happens with --expand option or with very old texinfo.tex)

* texinfo.tex
 . in @code, ` and ' output by default with backtick and undirected
   single quote glyphs in the typewriter font.  you can still configure
   this using the @codequoteundirected/@codequotebacktick commands.
 . do not insert a space for @ def line continuation, matching the behavior
   of texi2any
 . align section titles in table of contents when more than 10 sections
 . microtype is off by default, for speed
 . page headings generation is no longer linked to the @titlepage command

* info
 . when going Up, position cursor on menu entry for current node
 . allow mouse scrolling support regardless of termcap entries.  this
   supports some more xterm configurations.
 . do not use "/index" as a possible file extension for Info files

* Distribution
  . autoconf 2.71, automake 1.16.5, gettext 0.21

Texinfo is the official documentation format of the GNU project. It uses a single source file to produce output in a number of formats, both online and printed (dvi, html, info, pdf, xml, etc.).

Related projects:


Version: 1.04  —  2021-08-09
	- Fix operation without -d option

Notifies the Translation Project about new POT files


(Not released)

A collection of various web-related programs, mostly proof-of-concept ones.


Version: 1.4  —  2024-07-07
Drop python 2 support

Provides Python framework for translating WikiMedia articles to various formats. The present version supports conversions to plain text, HTML, and Texinfo. A command line translator utility is included.

Related projects:


(Not released)

A wiki translator, a package that supplies Python classes for translating Wiki Markup into another kind of markup, such as, e.g. plain text and HTML. It has been superseded by wikitrans.

Related projects:


Version: 4.1  —  2023-02-23
* Diagnostic directives: $$warning and $$error

The $$warning directive emits warning message.  It does not alter exit
status in any way.

The $$error directive reports a fatal error and sets exit status to
65 (or any other, if supplied as argument).

After both directives, processing is resumed at the next line.

* $$exit

New directive $$exit causes immediate termination of the program.
Decimal exit code may be supplied as argument.

* New directive: $$eval

The text between $$eval and $$end is expanded and the resulting
expansion is scanned again, producing the actual output.  This makes
it possible to create variable names on the fly and obtain their values.
Useful in loops, e.g.:

  $$loop I 0 1 2 3 4 5 6 7
  $$  eval
  \$\$ ifset VAR_$I
  Expand \$VAR_$I;
  \$\$ endif
  $$ end

* Bugfixes

** Fix closing the $$range loop.

Xenv is a text preprocessor. It reads input from files (or the standard input, if none are supplied) and prints it on the standard output, replacing references to environment variables with their actual values. Variables are referenced using POSIX-compatible shell syntax: $NAME, ${NAME}, ${NAME:-word}, ${NAME+=word}, ${NAME:=word}, ${NAME:?word}. A special ternary construct is provided: ${NAME:|word1|word2}, which substitutes the expansion of word1 if NAME is set and the expansion of word2 otherwise. Preprocessor directives provide support for inclusion of external files, conditional text expansion (depending on the value of an environment variable or exit code of an external command), diversions, for and foreach loops etc.


(Not released)

A set of Guile primitives for parsing and processing XML files.

Related projects: