Dynamic C++ Classes - A Lightweight Mechanism to Update Code in a Running Program

Techniques for dynamically adding new code to a running program already exist in various operating systems, programming languages and runtime environments. Most of these systems have not found their way into common use, however, since they require programmer retraining and invalidate previous software investments. In addition, many of the systems are too high-level for performance-critical applications. This paper presents an implementation of dynamic classes for the C++ language. Dynamic classes allow run-time updates of an executing C++ program at the class level. Our implementation is a lightweight proxy class that exploits only common C++ features and can be compiled with most modern compilers. The proxy supports version updates of existing classes as well as the introduction of new classes. Our language choice and proxy implementation is targeted towards performance-critical applications such as low-level networking in which the use of C++ is already widespread.

[1]  Toby Bloom,et al.  Dynamic module replacement in a distributed programming system , 1983 .

[2]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[3]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[4]  Robert A. Gingell,et al.  Shared Libraries in SunOS , 1987 .

[5]  Marc Sabetella Issues in Shared Libraries Design , 1990, USENIX Summer.

[6]  Ravi Sethi,et al.  Adding New Code to a Running C++ Program , 1990, C++ Conference.

[7]  Donn Seeley Shared Libraries as Objects , 1990, USENIX Summer.

[8]  Ronald A. Olsson,et al.  An approach to genuine dynamic linking , 1991, Softw. Pract. Exp..

[9]  J. Kempf,et al.  Cross-address space dynamic linking , 1992, [1992] Proceedings of the Second International Workshop on Object Orientation in Operating Systems.

[10]  Michael R. Genesereth,et al.  Software agents , 1994, CACM.

[11]  Using interface inheritance to address problems in system software evolution , 1994, IDL '94.

[12]  Samuel Webb Williams,et al.  The Component Object Model: A Technical Overview , 1994 .

[13]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[14]  Alan D. Sloane,et al.  The Object Binary Interface: C++ Objects for Evolvable Shared Class Libraries , 1994, C++ Conference.

[15]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[16]  Pattie Maes,et al.  Collaborative Interface Agents , 1994, AAAI.

[17]  Robbert van Renesse,et al.  Operating system support for mobile agents , 1995, Proceedings 5th Workshop on Hot Topics in Operating Systems (HotOS-V).

[18]  Robert S. Gray,et al.  Agent Tcl: a Exible and Secure Mobile-agent System , 1996 .

[19]  Jon Sigel,et al.  CORBA Fundamentals and Programming , 1996 .

[20]  Mary Campione,et al.  The Java Tutorial: Object-Oriented Programming for the Internet , 1996 .

[21]  Sean Matthew Dorward,et al.  Inferno: la commedia interattiva , 1997 .

[22]  Michael Franz Dynamic Linking of Software Components , 1997, Computer.