skip to main content
10.1145/3242921.3242923acmotherconferencesArticle/Chapter ViewAbstractPublication PagesecoopConference Proceedingsconference-collections
research-article

A Context-Oriented Programming Approach to Dependency Hell

Published:16 July 2018Publication History

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.

References

  1. Malte Appeltauer, Robert Hirschfeld, and Jens Linckeb. 2013. Declarative layer composition with the JCop programming language. Journal of Object Technology 12, 2 (2013).Google ScholarGoogle ScholarCross RefCross Ref
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz. 2008. Context-oriented programming. Journal of Object Technology 7, 3 (2008), 125--151.Google ScholarGoogle ScholarCross RefCross Ref
  9. Atsushi Igarashi and Naoki Kobayashi. 2005. Resource Usage Analysis. TOPLAS 27, 2 (2005), 264--313. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle Scholar
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle Scholar
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. G. D. Plotkin. 1977. LCF considered as a programming language. Theoretical Computer Science 5, 3 (Dec. 1977), 223--255.Google ScholarGoogle ScholarCross RefCross Ref
  16. Christian Prehofer. 1997. Feature-oriented programming: A fresh look at objects. In ECOOP'97. 419--443.Google ScholarGoogle ScholarCross RefCross Ref
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. Walid Taha and Tim Sheard. 2000. MetaML and multi-stage programming with explicit annotations. Theoretical Computer Science 248, 1 (Oct. 2000), 211--242. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Other conferences
    COP '18: Proceedings of the 10th ACM International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition
    July 2018
    50 pages
    ISBN:9781450357227
    DOI:10.1145/3242921

    Copyright © 2018 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 16 July 2018

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Research
    • Refereed limited

    Acceptance Rates

    COP '18 Paper Acceptance Rate6of8submissions,75%Overall Acceptance Rate17of25submissions,68%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader