Abstract
Modern programming environments such as those of Java and C# support dynamic loading of software fragments. More in general, we can expect that in the future systems will support more and more forms of interleaving of reconfiguration steps and standard execution steps, where the software fragments composing a program are dynamically changed and/or combined on demand and in different ways. However, existing kernel calculi providing formal foundations for module systems are based on a static view of module manipulation, in the sense that open code fragments can be flexibly combined together, but all module operators must be performed once for all before starting execution of a program, that is, evaluation of a module component.
The definition of clean and powerful module calculi supporting lazy module operators, that is, operators which can be performed after the selection of some module component, is still an open problem. Here, we provide an example in this direction (the first at our knowledge), defining CMS l an extension of the Calculus of Module Systems [5] where module operators can be performed at execution time and, in particular, are executed on demand, that is, only when needed by the executing program. In other words, execution steps, if possible, take the precedence over reconfiguration steps. The type system of the calculus, which is proved to be sound, relies on a dependency analysis which ensures that execution will never try to access module components which cannot become available by performing reconfiguration steps.
Partially supported by Dynamic Assembly, Reconfiguration and Type-checking - EC project IST-2001-33477, and APPSEM II - Thematic network IST-2001-38957.
Chapter PDF
Similar content being viewed by others
Keywords
References
Martin Abadi, Goerges Gonthier, and Benjamin Werner. Choice in dynamic linking. In FOSSACS’04-Foundations of Software Science and Computation Structures 2004, Lecture Notes in Computer Science. Springer, 2004.
D. Ancona, S. Fagorzi, E. Moggi, and E. Zucca. Mixin modules and computational effects. In Jos C. M. Baeten et al., editors, International Colloquium on Automata, Languages and Programming 2003, number 2719 in Lecture Notes in Computer Science, pages 224–238. Springer, 2003.
D. Ancona, S. Fagorzi, and E. Zucca. A calculus for dynamic linking. In C. Blundo and C. Laneve, editors, Italian Conf. on Theoretical Computer Science 2003, number 2841 in Lecture Notes in Computer Science, pages 284–301, 2003.
D. Ancona and E. Zucca. A theory of mixin modules: Basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, August 1998.
D. Ancona and E. Zucca. A calculus of module systems. Journ. of Functional Programming, 12(2):91–132, 2002.
Z. M. Ariola and M. Felleisen. The call-by-need lambda calculus. Journ. of Functional Programming, 7(3):265–301, 1997.
G. Bierman, M. Hicks, P. Sewell, and G. Stoyle. Formalizing dynamic software updating (Extended Abstract). In USE’03 Workshop on Unexpected Software Evolution, 2003.
L. Cardelli. Program fragments, linking, and modularization. In ACM Symp. on Principles of Programming Languages 1997, pages 266–277. ACM Press, 1997.
S. Drossopoulou. Towards an abstract model of Java dynamic linking and verfication. In R. Harper, editor, TIC’00-Third Workshop on Types in Compilation (Selected Papers), volume 2071 of Lecture Notes in Computer Science, pages 53–84. Springer, 2001.
S. Drossopoulou, G. Lagorio, and S. Eisenbach. Flexible models for dynamic linking. In Pierpaolo Degano, editor, ESOP 2003-European Symposium on Programming 2003, pages 38–53, April 2003.
S. Fagorzi, E. Zucca, and D. Ancona. Modeling multiple class loaders by a calculus for dynamic linking. In ACM Symp. on Applied Computing (SAC 2004), Special Track on Object-Oriented Programming Languages and Systems. ACM Press, 2004. To appear.
T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting. In D. Le Métayer, editor, ESOP 2002-European Symposium on Programming 2002, number 2305 in Lecture Notes in Computer Science, pages 6–20. Springer, 2002.
X. Leroy. A modular module system. Journal of Functional Programming, 10(3):269–303, May 2000.
Tom Mens and Guenther Kniesel. Workshop on foundations of unanticipated software evolution. ETAPS 2004, http://joint.org/fuse2004/, 2004.
J.B. Wells and R. Vestergaard. Confluent equational reasoning for linking with first-class primitive modules. In ESOP 2000-European Symposium on Programming 2000, number 1782 in Lecture Notes in Computer Science, pages 412–428. Springer 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer Science + Business Media, Inc.
About this paper
Cite this paper
Ancona, D., Fagorzi, S., Zucca, E. (2004). A Calculus with Lazy Module Operators. In: Levy, JJ., Mayr, E.W., Mitchell, J.C. (eds) Exploring New Frontiers of Theoretical Informatics. IFIP International Federation for Information Processing, vol 155. Springer, Boston, MA. https://doi.org/10.1007/1-4020-8141-3_33
Download citation
DOI: https://doi.org/10.1007/1-4020-8141-3_33
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4020-8140-8
Online ISBN: 978-1-4020-8141-5
eBook Packages: Springer Book Archive