Skip to main content

Server-Side Computation of Package Dependencies in Package-Management Systems

  • 360 Accesses

Part of the Lecture Notes in Computer Science book series (LNPSE,volume 13008)

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.

Keywords

  • Package manager
  • Parallelization
  • Server-side computation

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-030-89051-3_5
  • Chapter length: 18 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   59.99
Price excludes VAT (USA)
  • ISBN: 978-3-030-89051-3
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Softcover Book
USD   79.99
Price excludes VAT (USA)
Fig. 1.
Fig. 2.

References

  1. 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)

    Google Scholar 

  2. 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)

    MATH  Google Scholar 

  3. Bazerman, G., Puzio, R.: The topological and logical structure of concurrency and dependency via distributive lattices (2020). https://arxiv.org/abs/2004.05688

  4. 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)

    Google Scholar 

  5. 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 Scholar 

  6. Google: Bazel - a fast, scalable, multi-language and extensible build system - Bazel. https://bazel.build/

  7. Mokhov, A., Mitchell, N., Jones, S.P.: Build systems à la carte: theory and practice. J. Funct. Program. 30, e11 (2020)

    MathSciNet  CrossRef  Google Scholar 

  8. 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)

    Google Scholar 

  9. The PostgreSQL Global Development Group: PostgreSQL: Documentation: 13: 8.14. JSON types. https://www.postgresql.org/docs/13/datatype-json.html

  10. The PostgreSQL Global Development Group: PostgreSQL: Documentation: 9.3: JSON functions and operators. https://www.postgresql.org/docs/9.3/functions-json.html

  11. 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)

    Google Scholar 

  12. Yarn: yarn.lock. Yarn. https://classic.yarnpkg.com/en/docs/yarn-lock/

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nobuhiro Kasai .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Verify currency and authenticity via CrossMark

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)