Buck2, yeni Facebook derleme sistemi

Buck2-Kahraman

Facebook'un yeni açık kaynak derleme sistemi Buck2

Facebook tanıtıldı yakın zamanda "Buck2" adlı yeni bir yapı sistemi yayınladı; depolardan projeler oluşturmaya odaklandı çok farklı dillerde kod içeren büyük olanlar programlama.

Farklılıklar yeni uygulama ile sistem arasında daha önce kullanılmış para Facebook tarafından Java yerine Rust dili kullanıyorlar ve montaj sürecinin verimliliğinde ve performansında önemli bir artış (aynı altyapı üzerinde yapılan dahili testlerde Buck2, montaj görevlerini Buck'tan iki kat daha hızlı gerçekleştirir).

Derleme sistemleri, bir geliştirici ile kodunun çalışması arasında durur, bu nedenle deneyimi daha hızlı veya daha verimli hale getirmek için yapabileceğimiz her şey, bir geliştiricinin ne kadar etkili olabileceğini doğrudan etkiler. Buck2'nin amacı, Buck1'de sevdiğimiz şeyleri (temel bilgiler ve iş akışları) korumak, Buck1 sonrası yeniliklerden (Bazel, Adapton ve Shake dahil) ilham almak ve hıza ve yeni deneyimler sağlamaya odaklanmaktı.

Buck2 Hakkında

Vurgulanır ki sistem, belirli dillerde kod oluşturmaya bağlı değildir ve kutudan çıktığı haliyle, Facebook tarafından kullanılan C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ve OCaml ile yazılmış oluşturucu projelerini destekler.

Python tabanlı (Bazel'deki gibi) Starlark dili, eklenti tasarlamak, komut dosyaları ve kurallar oluşturmak için kullanılır. Starlark, inşa sisteminin yeteneklerini genişletmenize ve inşa edilen projelerde kullanılan belirli dillerden soyutlamanıza olanak tanır.

Bundan bahsediliyor sonuçları önbelleğe alarak yüksek performans elde edilir, işin paralelleştirilmesi ve görevlerin uzaktan yürütülmesi için destek (Remote Build Execution).

yapı ortamı "hermetiklik" kavramını kullanır: derlenen kod dış dünyadan ayrılır, derleme işlemi sırasında dışarıdan hiçbir şey yüklenmez ve işin farklı sistemlerde tekrar tekrar yürütülmesi aynı sonuca yol açar (tekrarlanan derlemeler, örneğin, bir projenin derlenmesinin sonucu) geliştiriciden gelen makine, sürekli tümleştirme sunucusundaki yapıyla tam olarak aynı olacaktır). Bağımlılık olmaması durumu Buck2'de bir bug olarak algılanır.

kısmında Buck2 Temel Özellikleraşağıdakiler göze çarpıyor:

  • Programlama dillerini destekleme kuralları ve çekirdek yapı sistemi tamamen ayrıdır. Kurallar Starlark dilinde yazılmıştır ve Starlark araç takımı ve uygulaması Rust'ta yazılmıştır.
  • Yapı sistemi, Buck ve Bazel'e kıyasla işin paralelleştirme derinliğini artırmanıza ve birçok türde hatadan kaçınmanıza olanak tanıyan tek bir artımlı bağımlılık grafiği kullanır (evreleme yok).
  • Buck2'nin GitHub'da yayınlanan kodu ve programlama dili destek kuralları, Facebook'un altyapısında kullanılan dahili sürümle neredeyse aynıdır (tek fark, Facebook tarafından kullanılan derleyici sürümlerine ve derleme sunucularına bağlantıdadır).
  • Derleme sistemi, işleri uzak sunucularda çalıştırmanıza izin veren uzaktan iş yürütme sistemleriyle entegre olacak şekilde tasarlanmıştır. Uzaktan yürütme API'si Bazel ile uyumludur ve Buildbarn ve EngFlow ile uyumluluğu test edilmiştir.
  • Tüm havuzun içeriğinin sunulduğu sanal dosya sistemleriyle entegrasyon sağlanır, ancak aslında iş, havuzun bir kısmının gerçek yerel kısmı ile gerçekleştirilir (geliştirici tüm depoyu görür, ancak yalnızca gereklidir) erişilen dosyalar depodan alınır). Sapling tarafından kullanılan EdenFS tabanlı VFS ve Git LFS desteklenmektedir.

Son olarak, bu konuda daha fazla bilgi edinmek isteyenler, kodun Apache 2.0 lisansı altında dağıtıldığını bilmeli ve ayrıntılara bakmalıdır. Aşağıdaki bağlantıda.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.