Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
squirrel-modules is a project to provide clean, flexible and extensible
module import system for Squirrel programming language
(, as well as few basic modules which would be
of interest to many users. It's not intended to be vast collection of
modules, but rather, set of technologies and best practices allowing
users to provide quality modules on their own, aiming towards distributed
community-supported module repositories as available for many popular
languages (CPAN for Perl, PyPi for Python, etc.)

Quick start:

1. Check out repository using "git clone --recursive". This will also
checkout modified Squirrel code as a git submodule. If you already
cloned without --recursive, run "git submodule update".

2. Install prerequisites. This includes: C++ compiler (GCC), GNU Make
and libffi (libffi-dev package on Debian systems).

3. "make; make install". This will build "sqrl" interpreter with
module import support, and included modules, and will install them
within your home directory (in ~/bin/ for binaries and scripts and
in ~/.squirrel/ for modules).

4. "export PATH=~/bin:$PATH", then run "sqrl".

squirrel-modules consists of the following components:

    Support for dynamically loadable binary (i.e. compiled C/C++ code)
    modules. This code also provides means to support both static and
    dynamic using the same source code, as well as transparently support
    Squirrel source, Squirrel bytecode, and binary module loading.
    Summing up, binmodule provides low-level module import framework.

    High-level import framework. This uses binmodule facilities
    underneath. Import framework is modeled after Python's import
    functionality and provides import() and import_from() functions
    for flexible namespace and symbol management.

    Example of trivial C module written using binmodule framework.

    Foreign Function Interface (FFI) module, allowing to call arbitrary
    functions from dynamic libraries. This module can be used to interface
    with arbitrary software written in compiled languages (usually C/C++).

os, socket
    Modules to wrap basic POSIX OS and socket functionality using FFI.

    Implementaton of popen stream object (read/write from/to a child
    process via pipe) and fdopen stream object (wrap POSIX file descriptors
    in a stream object, useful for sockets and many other things).

To use squirrel-modules, you need Squirrel with the patches to address
some language misfeatures or lack of builtin functionality:
(git clone --recursive pulls it automatically as a submodule).

For more information about squirrel-modules ideas, see RFC on Squirrel


General-purpose Squirrel language project. Includes collection of basic modules (including module loading infrastructure)




No releases published


No packages published