Abstract
Package managers are often used in recent software development to obtain directly-dependent packages recursively. Typically, package managers make requests to the package registry more than once when computing indirect dependencies. Moreover, much amount of computations are duplicated by clients of package managers. This duplication can be avoided by computing indirect dependencies in advance on the server-side of package-management systems. Therefore, we propose two algorithms functioning in parallel on the server-side: one to compute the indirect dependencies when copying all packages in existing package managers to the server and one to add packages to the server. Based on these parallelized algorithms, we implement a server fpms-server and a client fpms for npm packages. By our experiments, our client obtains dependencies of some package more than two times faster than clients in existing npm and yarn systems.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Abdalkareem, R., Nourry, O., Wehaibi, S., Mujahid, S., Shihab, E.: Why do developers use trivial packages? An empirical case study on NPM. In: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, pp. 385–395 (2017)
Aho, A.V., Lam, M.S., Sethi, R., Ullman, J.D.: Compilers: Principles, Techniques, and Tools, 2nd edn. Addison-Wesley Longman Publishing Co. Inc., Boston (2006)
Bazerman, G., Puzio, R.: The topological and logical structure of concurrency and dependency via distributive lattices (2020). https://arxiv.org/abs/2004.05688
Dietrich, J., Pearce, D., Stringer, J., Tahir, A., Blincoe, K.: Dependency versioning in the wild. In: 2019 IEEE/ACM 16th International Conference on Mining Software Repositories, pp. 349–359. IEEE (2019)
Dolstra, E., Löh, A.: NixOS: a purely functional Linux distribution. In: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming, pp. 367–378 (2008)
Google: Bazel - a fast, scalable, multi-language and extensible build system - Bazel. https://bazel.build/
Mokhov, A., Mitchell, N., Jones, S.P.: Build systems à la carte: theory and practice. J. Funct. Program. 30, e11 (2020)
Muhammad, H., Real, L.C.V., Homer, M.: Taxonomy of package management in programming languages and operating systems. In: Proceedings of the 10th Workshop on Programming Languages and Operating Systems, pp. 60–66 (2019)
The PostgreSQL Global Development Group: PostgreSQL: Documentation: 13: 8.14. JSON types. https://www.postgresql.org/docs/13/datatype-json.html
The PostgreSQL Global Development Group: PostgreSQL: Documentation: 9.3: JSON functions and operators. https://www.postgresql.org/docs/9.3/functions-json.html
Tucker, C., Shuffelton, D., Jhala, R., Lerner, S.: OPIUM: optimal package install/uninstall manager. In: Proceedings of the 29th International Conference on Software Engineering, pp. 178–188 (2007)
Yarn: yarn.lock. Yarn. https://classic.yarnpkg.com/en/docs/yarn-lock/
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Kasai, N., Sasano, I. (2021). Server-Side Computation of Package Dependencies in Package-Management Systems. In: Oh, H. (eds) Programming Languages and Systems. APLAS 2021. Lecture Notes in Computer Science(), vol 13008. Springer, Cham. https://doi.org/10.1007/978-3-030-89051-3_5
Download citation
DOI: https://doi.org/10.1007/978-3-030-89051-3_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-89050-6
Online ISBN: 978-3-030-89051-3
eBook Packages: Computer ScienceComputer Science (R0)