Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
libmowgli - A useful collection of routines for programming

libmowgli is a free but copyrighted library, check COPYING for details.


1. What is libmowgli?
2. Installation
3. Bug Reports

What is libmowgli?

libmowgli is a class library containing performance and usability oriented
extensions to C.

It contains:
    - mowgli.alloc: A safe wrapper around malloc/free.
    - mowgli.argstack: Safe serialization of valists.
    - mowgli.assert: Various assertion routines that can be used.
    - mowgli.bitvector: Bitmasks with an unlimited level of precision.
    - mowgli.patricia: A dictionary implementation based on a modified
                       patricia tree algorithm (uses nibbles instead of
                       bits for branching).
    - mowgli.error_backtrace: Provide feedback to users on what caused
                              the error they are recieving.
    - mowgli.formatter: A simple token formatter which is sometimes useful.
    - mowgli.global_storage: A simple global storage library.
    - mowgli.hash: A portable implementation of the FNV-1 hash.
    - mowgli.heap: An optimistic heap-based memory allocator
    - mowgli.hook: A simple hooks API you can use for your application,
                   which allows for hooks to provide both application
                   data and user data.
    - mowgli.json: A simple, flexible, reentrant JSON parser
    - mowgli.list: A high performance linked lists implementation with
                   O(1) scalability for most common operations.
    - mowgli.logger: An internal class for handling logging of exceptions.
    - mowgli.module: A wrapper around dlopen(3) and dlsym(3).
    - mowgli.object: A simple class which provides reference counted
                     pointers and polymorphism of structs.
    - mowgli.object_class: Classing and subclassing for objects.
    - mowgli.object_metadata: Metadata for objects.
    - mowgli.object_messaging: Messaging and signalling for objects.
    - mowgli.queue: A simple class which implements double-ended queues.
    - mowgli.random: A high performance psuedo-random number generator.
    - mowgli.signal: A wrapper for sigaction(2).
    - mowgli.eventloop: A portable event loop implementation.
    - mowgli.vio: An abstraction layer for I/O.
    - mowgli.linebuf: A line-buffering implementation for clients.
    - mowgli.thread: Minimal thread abstraction.

More classes will be added with later releases. Please use GitHub's
issue tracker if you have suggestions on what should be implemented.


Installation is fairly typical:

  $ ./configure
  $ make
  $ sudo make install

(If sudo isn't on your system, su to root. On GNU systems you can even do
"su -c 'make install'", which is basically the same thing as using sudo.)

Bug Reports

Bugs can be reported using the GitHub issue tracker on the libmowgli-2
project page:


mowgli development framework (version 2) -- generic runtime for atheme applications







No packages published