Our DSU implementation for single- and multi-threaded C programs is called Ginseng. We have used Ginseng to dynamically update well-known open-source programs with updates derived from actual releases over a long timeframe:

SoftwareUpdate timeframe (years)
GNU Zebra4
Space Tyrant1

The implementation uses static analysis and lightweight source code annotations to permit dynamic updates to be applied safely and timely.


Ginseng, our DSU implementation for C programs, runs on Linux; it requires gcc 3.3+ and ocaml 3.08+. It should compile on BSD and MacOS, so you're able to see how the safety analyses and source-to-source transformations work, but to actually perform dynamic updates you need to have dynamic linking working, and we haven't tested that on platforms other than Linux. You can find an user's guide in the tarball, under ginseng/doc/UsersGuide/guide.pdf. Contact Iulian Neamtiu for Ginseng-related issues.

Latest development release: May 19, 2009
Ginseng 1.3.0 alpha a.k.a. STUMP (with multi-threading support)
Latest stable release: Jan 13, 2008
Ginseng 1.2.2 (no multi-threading support)