Bu sitedeki içerik yapay zeka (AI) veya makine çeviri teknolojisi kullanılarak çevrilmiştir ve hatalar içerebilir.

Skip to content
Systems

NPM'de Anlamsal Sürümleme Üzerine Büyük Ölçekli Bir Analiz

Author

Donald Pinckney (Northeastern), Federico Cassano (Northeastern), Arjun Guha (Northeastern ve Roblox) ve Jonathan Bell (Northeastern)

Venue

Madencilik Yazılım Depoları (MSR) 2023

Abstract

NPM paket deposu iki milyondan fazla paket içerir ve haftada on milyarlarca indirme işlemine hizmet eder. Hemen hemen her JavaScript uygulaması, NPM deposundan paketleri yüklemek için NPM paket yöneticisini kullanır. NPM, sağlıklı bir ekosistem sürdürmek için "anlamsal sürümleme" ("semver") şemasına dayanır; bu şemada, hata düzeltmeleri mümkün olduğunca çabuk ve güvenilir bir şekilde alt paketlere iletilirken, kırıcı değişiklikler için alt paket bakımcılarının manuel müdahalesi gerekir. Geliştiricilerin semver'i nasıl kullandığını anlamak için, NPM'deki her paketin her sürümünü içeren bir veri kümesi oluşturduk ve ekosistem genelindeki güncelleme akışını analiz ettik. NPM için bir zaman yolculuğu bağımlılık çözümleyicisi oluşturduk; bu, her bir bağımlılığın hangi sürümlerinin farklı zamanlarda çözülmüş olacağını kesin olarak belirlememizi sağlıyor. Analizimizi, güvenlikle ilgili güncellemelerin (güvenlik açıklarını ortaya çıkaran veya yamayanlar) ekosistemin geri kalanıyla karşılaştırmalı olarak doğrudan analiz edilebilmesi için bölümlere ayırdık. Geliştiricilerin semver'ı doğru kullandıklarında, güvenlik yamaları gibi kritik güncellemelerin çoğu durumda (%90,09) aşağı akış bağımlılıklarına oldukça hızlı bir şekilde aktarıldığını tespit ettik; ancak geliştiricilerin hem semver sürüm kısıtlamalarını hem de semver sürüm numarası artışlarını kusursuz bir şekilde kullanmamaları nedeniyle bu her zaman gerçekleşmiyor. Bulgularımız, hem geliştiriciler hem de araştırmacılar için önemli sonuçlar doğuruyor. Altyapımızı ve veri setimizi açık kaynak lisansı altında kamuya açık hale getiriyoruz.