ABSTRACT
Two or more incompatible versions of a library are sometimes needed in one software artifact, which is so-called dependency hell. One likely faces the problem if he or she uses two or more libraries that depend on the same library. In this paper, we propose versioned values to solve the problem. They allow us to have multiple versions of functions in a binary file. This gets rid of requiring two or more incompatible binaries. We develop a calculus λVL to discuss type safety in the case where definitions are available only in specific versions, which is a common and important nature of versioned programs.
- Malte Appeltauer, Robert Hirschfeld, and Jens Linckeb. 2013. Declarative layer composition with the JCop programming language. Journal of Object Technology 12, 2 (2013).Google ScholarCross Ref
- Jan Bosch. 2001. Software Product Lines: Organizational Alternatives. In Proceedings of the 23rd International Conference on Software Engineering (ICSE '01). IEEE Computer Society, Washington, DC, USA, 91--100. http://dl.acm.org/citation.cfm?id=381473.381482 Google ScholarDigital Library
- AloÃŕs Brunel, Marco Gaboardi, Damiano Mazza, and Steve Zdancewic. 2014. A Core Quantitative Coeffect Calculus. In Programming Languages and Systems (Lecture Notes in Computer Science). Springer, Berlin, Heidelberg, 351--370. Google ScholarDigital Library
- Bradley E. Cossette and Robert J. Walker. 2012. Seeking the Ground Truth: A Retroactive Study on the Evolution and Migration of Software Libraries. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering (FSE '12). ACM, New York, NY, USA, 55:1--55:11. Google ScholarDigital Library
- Ferruccio Damiani, Luca Padovani, and Ina Schaefer. 2012. A Formal Foundation for Dynamic Delta-oriented Software Product Lines. In Proceedings of the 11th International Conference on Generative Programming and Component Engineering (GPCE '12). ACM, New York, NY, USA, 1--10. Google ScholarDigital Library
- Ferruccio Damiani and Ina Schaefer. 2011. Dynamic Delta-oriented Programming. In Proceedings of the 15th International Software Product Line Conference, Volume 2 (SPLC '11). ACM, New York, NY, USA, 34:1--34:8. Google ScholarDigital Library
- Marco Gaboardi, Shin-ya Katsumata, Dominic Orchard, Flavien Breuvart, and Tarmo Uustalu. 2016. Combining Effects and Coeffects via Grading. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming (ICFP 2016). ACM, New York, NY, USA, 476--489. Google ScholarDigital Library
- Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz. 2008. Context-oriented programming. Journal of Object Technology 7, 3 (2008), 125--151.Google ScholarCross Ref
- Atsushi Igarashi and Naoki Kobayashi. 2005. Resource Usage Analysis. TOPLAS 27, 2 (2005), 264--313. Google ScholarDigital Library
- Hiroaki Inoue and Atsushi Igarashi. 2015. A Sound Type System for Layer Subtyping and Dynamically Activated First-Class Layers. In Programming Languages and Systems (Lecture Notes in Computer Science). Springer, Cham, 445--462.Google Scholar
- Tetsuo Kamina, Tomoyuki Aotani, Hidehiko Masuhara, and Atsushi Igarashi. 2018. Method safety mechanism for asynchronous layer deactivation. Sci. Comput. Program. 156 (2018), 104--120. Google ScholarDigital Library
- Oleg Kiselyov, Yukiyoshi Kameyama, and Yuto Sudo. 2016. Refined Environment Classifiers - Type- and Scope-Safe Code Generation with Mutable Cells. In Programming Languages and Systems - 14th Asian Symposium, APLAS 2016, Hanoi, Vietnam, November 21--23, 2016, Proceedings (Lecture Notes in Computer Science), Atsushi Igarashi (Ed.), Vol. 10017. 271--291.Google Scholar
- S. Mostafa, R. Rodriguez, and X. Wang. 2017. A Study on Behavioral Backward Incompatibility Bugs in Java Software Libraries. In 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C). 127--129. Google ScholarDigital Library
- Tomas Petricek, Dominic Orchard, and Alan Mycroft. 2014. Coeffects: A Calculus of Context-dependent Computation. In Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming (ICFP '14). ACM, New York, NY, USA, 123--135. Google ScholarDigital Library
- G. D. Plotkin. 1977. LCF considered as a programming language. Theoretical Computer Science 5, 3 (Dec. 1977), 223--255.Google ScholarCross Ref
- Christian Prehofer. 1997. Feature-oriented programming: A fresh look at objects. In ECOOP'97. 419--443.Google ScholarCross Ref
- Ina Schaefer, Lorenzo Bettini, Ferruccio Damiani, and Nico Tanzarella. 2010. Delta-oriented Programming of Software Product Lines. In Proceedings of the 14th International Conference on Software Product Lines: Going Beyond (SPLC'10). Springer-Verlag, Berlin, Heidelberg, 77--91. http://dl.acm.org/citation.cfm?id=1885639.1885647 Google ScholarDigital Library
- Walid Taha and Michael Florentin Nielsen. 2003. Environment Classifiers. In Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '03). ACM, New York, NY, USA, 26--37. Google ScholarDigital Library
- Walid Taha and Tim Sheard. 2000. MetaML and multi-stage programming with explicit annotations. Theoretical Computer Science 248, 1 (Oct. 2000), 211--242. Google ScholarDigital Library
- L. Xavier, A. Brito, A. Hora, and M. T. Valente. 2017. Historical and impact analysis of API breaking changes: A large-scale study. In 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER). 138--147.Google Scholar
Recommendations
Towards context-aware propagators: language constructs for context-aware adaptation dependencies
COP '09: Proceedings of the 1st ACM International Workshop on Context-Oriented ProgrammingA context-aware system needs to reason about its current context of use and select applicable adaptations to activate or deactivate. This process is complex as often multiple contexts are available and improper interpretation of adaptation dependencies ...
Context-oriented programming in ContextL: state of the art
LISP50: Celebrating the 50th Anniversary of LispThere is a wide range of scenarios where software systems have to be able to behave differently according to their context of use. In Context-oriented Programming (COP), programs can be partitioned into behavioral variations that can be freely activated ...
Programming language support to context-aware adaptation: a case-study with Erlang
SEAMS '10: Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing SystemsSoftware applications are increasingly situated in a world where context changes continuously. At the same time, applications need to provide continuous service, and the service provided often needs to change in order to adapt to the new contexts. ...
Comments