Hi, have you considered adding scripting support to gpsim?
I think a properly-integrated embedded scripting interpreter (i.e. something like Python, AngelScript, GameMonkey, Lua or Ruby) could help modularize the gpsim architecture, while ensuring that maintenance and new contributions can be easily accomlished.
For starters, one could attempt to provide an interface to allow developers to write their own custom modules using such a scripting language. So that new modules can be easily contributed simply by dropping a corresponding script into the proper directory.
Likewise, custom simulator & debugger commands could be implemented more easily if there was a way to register such commands from within a corresponding script.
Ultimately, it would be truly cool to have the processors/microcontrollers themselves being realized via a script that's simply loaded interactively by the simulator core.
Performance should be hardly critical, given that nowadays scripting languages have pretty good runtime performance, in addition you can always cache pre-compiled bytecode, to facilitate faster running.
Besides, using a scripting language should enable more potential contributors to get PRODUCTIVELY involved in the project, without having to tackle with the core code base, that is new modules and processors could be contributed by people who wouldn't necessarily need to be directly involved in the project.
Given that there are several embedded scripting languages that feature a C++ oriented syntax (i.e. CINT, AngelScript or GameMonkey), it should also be pretty straight-forward to port the existing code base to provide corresponding scripting support.
In fact, AngelScript in particular is especially fast and suited for this very task, as it allows you to directly inteface native C++ types within and from your scripts.
Also, using a scripting language should be much more portable than using dynamic libraries.