Separate compilation in a Modula-2 compiler
Software—Practice & Experience
ACM Transactions on Programming Languages and Systems (TOPLAS)
The programming language Oberon
Software—Practice & Experience
Java Virtual Machine Specification
Java Virtual Machine Specification
Computer
Architecture-based runtime software evolution
Proceedings of the 20th international conference on Software engineering
Type-based hot swapping of running modules (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The evolution of software evolvability
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
MATA '00 Proceedings of the Second International Workshop on Mobile Agents for Telecommunication Applications
Runtime Support for Type-Safe Dynamic Java Classes
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Safe and Flexible Dynamic Linking of Native Code
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Software Streaming via Block Streaming
DATE '03 Proceedings of the conference on Design, Automation and Test in Europe - Volume 1
Link-time binary rewriting techniques for program compaction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Architectural issues in network-centric computing
ACM SIGSOFT Software Engineering Notes
Journal of Systems and Software
Dynamic C++ classes: a lightweight mechanism to update code in a running program
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Doloto: code splitting for network-bound web 2.0 applications
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Flexible Bytecode for Linking in .NET
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 4.10 |
The concepts underlying dynamic linking reached maturity through modular operating systems and are being reintroduced in some of the most popular workstation and PC operating systems. The original idea behind dynamic linking was to factor out common functions so that they could be shared among several applications. As straightforward as dynamic linking may seem, it can nevertheless be implemented through a surprising variety of strategies. This article contrasts three simple dynamic linking schemes with two much more elaborate strategies. As general-purpose operating systems move to embrace dynamic linking, the technologies chosen for linking components will play a pivotal role in the systems' long-term commercial success. The three "lightweight" approaches to dynamic linking-runtime table lookup, load-time code modification, and runtime code modification-vary in the way they employ these tables and handle calls. The two new techniques, although more complex, promise to facilitate cross-platform portability. The first, load-time code generation, capitalizes on the insight that raw processor power is growing much more rapidly than the speed of I/O operations. The second, load-time compliation, uses a highly compact intermediate program representation ("slim binaries") instead of native object files. This speeds up the I/O component of loading dramatically, but it has several drawbacks that make it less attractive than load-time code generation.