Clone wiki

ace / Home


A small subspace server C Enricher

Number of confirmed issues left to fix for the next release: <<issues status=open&milestone=1.0 count>>

Current Release

Beta 2

It's been 15 months and I haven't had much time to work on this, but the issue list went down slowly over time, and here we are. This version is much more polished than the original public release (beta 1,) and can easily be used in production instead of just experimentation. There may be lingering bugs, and there are still some rules restrictions that I'd like to clean up (enums/unions, for example,) but for most applications you should have no trouble using it. See the documentation for more info.

Please help test! If you find any bugs or have any features you'd like to see, file an issue report and I'll take a look for you. The whole point of the project is to make module writing easier for everyone.

If you use Mercurial, you are encouraged to clone the repository into src/ace/ of your A Small Subspace Server build environment to get bug fixes as they are made.


  • A Small Subspace Server 1.5.0rc1 or later is recommended. Previous versions may work, but advisers did not exist before 1.5.0.
  • Python 2.4 or later, but see the note below. The supported python version may change suddenly with new releases. 2.4 was chosen because it is the oldest python still installed on a machine I use. Upgrading to 2.7 is encouraged.

(Release Notes) (Go to Downloads Page)



ACE is a tool used to create full C modules for A Small Subspace Server by specifying common patterns in a compact way and letting the machine figure out the gory details. It is written and maintained by Justin Schwartz, also known as "Arnk Kilo Dylie" in the world of Subspace.

Having worked with module writing for almost six years, I've found many tedious things about the process of making good modules, and many of these things I simplified for myself over the years (through a collection of "standard" macros.) The problem with these is that they had obscure names, and still couldn't simplify the process as much as I wanted. A more robust system was needed, the result was a python script which easily outdoes what C macros can.

Using a very simple regex system, ACE will parse files using it's own intermediate language, which consists of C code and functions wrapped with directives and spiced up with expansion functions. ACE users may either generate a module once from an ACE file and work with it from then on as a full-fledged C file, or build it into a module library from the ACE format directly using the standard A Small Subspace Server makefile.

ACE's intention is to do a simple job with simple tools. It runs on regular expressions as opposed to a full grammar parser. It's a work-in-progress, this was my first major Python project, and I am a C programmer at heart--a lot of my code could make you roll your eyes. The goal is to get the job done--and even at this unfinished point, it does that for me.

More features will be added, the language itself may change based on feedback and support.