A Context-Oriented Programming Approach to Dependency Hell

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.

[1]  Alan Mycroft,et al.  Coeffects: a calculus of context-dependent computation , 2014, ICFP.

[2]  Yukiyoshi Kameyama,et al.  Refined Environment Classifiers - Type- and Scope-Safe Code Generation with Mutable Cells , 2016, APLAS.

[3]  Jan Bosch,et al.  Software product lines: organizational alternatives , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[4]  Xiaoyin Wang,et al.  A Study on Behavioral Backward Incompatibility Bugs in Java Software Libraries , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).

[5]  Andry Rakotonirainy,et al.  Context-oriented programming , 2003, MobiDe '03.

[6]  Viviana Bono,et al.  Delta-Oriented Programming of Software Product Lines , 2010, SPLC.

[7]  Ina Schaefer,et al.  Dynamic delta-oriented programming , 2011, SPLC '11.

[8]  Atsushi Igarashi,et al.  Resource usage analysis , 2002, POPL '02.

[9]  G.D. Plotkin,et al.  LCF Considered as a Programming Language , 1977, Theor. Comput. Sci..

[10]  Robert Hirschfeld,et al.  Declarative Layer Composition with The JCop Programming Language , 2013, J. Object Technol..

[11]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[12]  Marco Tulio Valente,et al.  Historical and impact analysis of API breaking changes: A large-scale study , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[13]  Marco Gaboardi,et al.  A Core Quantitative Coeffect Calculus , 2014, ESOP.

[14]  Walid Taha,et al.  Environment classifiers , 2003, POPL.

[15]  Atsushi Igarashi,et al.  A Sound Type System for Layer Subtyping and Dynamically Activated First-Class Layers , 2015, APLAS.

[16]  Robert J. Walker,et al.  Seeking the ground truth: a retroactive study on the evolution and migration of software libraries , 2012, SIGSOFT FSE.

[17]  Luca Padovani,et al.  A formal foundation for dynamic delta-oriented software product lines , 2012, GPCE '12.

[18]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[19]  Marco Gaboardi,et al.  Combining effects and coeffects via grading , 2016, ICFP.

[20]  Atsushi Igarashi,et al.  Method safety mechanism for asynchronous layer deactivation , 2018, Sci. Comput. Program..