Very loosely, as in I stole some concepts and rewrote them from scratch
Basically the whole system works off two things:
The lua files in "User/DFHack/Powered" provide APIs designed to play well with the building-hacks plugin (which is less flexible than your system, but easier to use)
Several Rubble templates that create buildings and reactions (these are entirely optional)
Most of the Lua APIs focus on finding and outputting items, with several flavors of generic item finders and some generic item creation functions.
Basically the system has four "tiers":
Lib A is dealing with buildings, pass in a building and you can get a coord object for it, an "area" object that describes an area including the building and all adjacent tiles, also finding and handling input and output "workshops" is handled here.
Lib B deals with items. There are functions to output items (to an output or to the center of the workshop), create items (described in various ways), and find items (either on an input or in a workshop's "area").
Lib C deals with "persistent output settings". This one requires explanation. First simple buildings can only do one task (as I have them written), to change the output type you run a reaction that uses a different Rubble addon to switch the building type (this is what those templates are for, generating the building variations and the switch type reactions), this lib is for handling all the buildings that have more than 2 or 3 possible outputs. Basically it provides a nice workshop oriented layer over the persistence API (so you can just say "get me the setting for this building" without needing to worry about keeping track of them (it uses a magic name combined with a string version of the buildings coordinates)). Really the building switching thin is only because I was feeling lazy and didn't want to write a persistence API, then I ended up having to do so anyway, so that way is kinda obsolete.
Lib D deals with "switchable" buildings, basically a generic way to do the same thing as your logic gates, but it also supports levers! Functions to find and change the state of these buildings are included.
There is no reason why you couldn't use these APIs with a different powered workshop plugin, just strip out the registration helper functions in Lib A
The only assumption made about the workshops is what the coordinate fields are named (and there are even functions to make "fake workshops" from different forms of coordinates for when the workshop is not available!).
One big difference from machina is how inputs and outputs are handled, they may be anywhere adjacent to the workshop, including diagonally! This adds flexibility, but can create cases where item go where they are not wanted :p The addon description for the "User/DFHack/Powered" addon has information about this.
===============================================================
Rubble 5.9 is now up! This version is very minor, bringing almost no changes ().
In much more interesting news: Rubble pre6.A is
on DFFD!
Only 32 bit windows binaries are included, most of the documentation is missing, only half of the source code is included, and only a very few addons are included.
There is some good news though. Some of the included addons are tileset mappings for Spacefox, Mayday, and Obsidian! (I was too lazy to back-port these to 5.9. Making a 6.x tileset addon is
so much easier it's not even funny)
If you need to build Linux or OSX versions the missing source code can be found in the Rubble 5.9 package.
Expect a fully functional 6.0 sometime soon!