Facebook ṣe atẹjade eto kikọ Buck2

Facebook ṣafihan eto kikọ tuntun kan, Buck2, ti o ni ero lati ṣeto kikọ awọn iṣẹ akanṣe lati awọn ibi ipamọ nla pupọ, pẹlu koodu ni awọn ede siseto oriṣiriṣi. Awọn iyatọ bọtini laarin imuse tuntun ati eto Buck ti a lo tẹlẹ ni Facebook ni lilo ede Rust dipo Java ati ilosoke pataki ninu ṣiṣe ati iṣelọpọ ti ilana apejọ (ni awọn idanwo inu inu ni awọn amayederun kanna, Buck2 ṣe apejọpọ). awọn iṣẹ-ṣiṣe lemeji bi sare bi Buck). Awọn koodu ti wa ni pin labẹ awọn Apache 2.0 iwe-ašẹ.

Eto naa ko ni asopọ si apejọ ti koodu ni awọn ede kan pato ati lati inu apoti ṣe atilẹyin apejọ awọn iṣẹ akanṣe ti a kọ sinu awọn ede C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell ati OCaml , ti Facebook lo. Ede Starlark, ti ​​o da lori Python (bii ni Bazel), ni a lo lati ṣe apẹrẹ awọn afikun, kọ awọn iwe afọwọkọ ati awọn ofin. Starlark gba ọ laaye lati faagun awọn agbara ti eto apejọ ati áljẹbrà lati awọn ede kan pato ti a lo ninu awọn iṣẹ akanṣe ti o pejọ.

Išẹ ti o ga julọ ti waye nipasẹ caching ti awọn esi, parallelization ti iṣẹ ati atilẹyin fun ipaniyan latọna jijin ti awọn iṣẹ-ṣiṣe (Ipaṣẹ Kọ Latọna jijin). Ni agbegbe apejọ, ero ti “hermeticity” ni a lo - koodu ti o pejọ ti ge kuro ni ita ita, ko si ohunkan ti o kojọpọ lati ita lakoko ilana apejọ, ati awọn ipaniyan iṣẹ leralera lori awọn eto oriṣiriṣi ja si abajade kanna ( awọn apejọ leralera, fun apẹẹrẹ, abajade ti apejọ iṣẹ akanṣe kan lori ẹrọ olupilẹṣẹ yoo jẹ aami patapata si kikọ lori olupin isọpọ ti nlọsiwaju). Ipo ti aini ti igbẹkẹle jẹ akiyesi bi aṣiṣe ni Buck2.

Awọn ẹya pataki ti Buck2:

  • Awọn ofin fun atilẹyin awọn ede siseto ati ipilẹ ti eto apejọ jẹ lọtọ patapata. Awọn ofin lo ede Starlark, ati ohun elo irinṣẹ Starlark ati imuse ni a kọ sinu Rust.
  • Eto apejọ naa nlo ayaworan igbẹkẹle ti afikun kan (laisi pipin si awọn ipele), eyiti o fun laaye jijẹ ijinle ti isọdọkan ti iṣẹ ni akawe si Buck ati Bazel ati yago fun ọpọlọpọ awọn aṣiṣe.
  • Koodu Buck2 ti a tẹjade lori GitHub ati awọn ofin fun atilẹyin awọn ede siseto jẹ aami kanna si ẹya inu ti a lo ninu awọn amayederun Facebook (awọn iyatọ nikan ni ibatan si awọn atẹjade ti awọn olupilẹṣẹ ati awọn olupin apejọ ti a lo ni Facebook).
  • Eto eto apejọ jẹ apẹrẹ pẹlu oju si iṣọpọ pẹlu awọn ọna ṣiṣe ipaniyan iṣẹ-ṣiṣe latọna jijin ti o gba ọ laaye lati ṣiṣẹ iṣẹ lori awọn olupin latọna jijin. API ipaniyan latọna jijin jẹ ibamu pẹlu Bazel ati idanwo fun ibamu pẹlu Buildbarn ati EngFlow.
  • Iṣọkan pẹlu awọn ọna ṣiṣe faili foju ti pese, ninu eyiti awọn akoonu ti gbogbo ibi ipamọ ti ṣafihan, ṣugbọn ni otitọ, iṣẹ ni a ṣe pẹlu bibẹ pẹlẹbẹ agbegbe lọwọlọwọ ti apakan ti ibi ipamọ (olugbese naa rii gbogbo ibi ipamọ, ṣugbọn awọn faili ti o nilo nikan) ti o wọle ni a yọ jade lati ibi ipamọ). VFS ti o da lori EdenFS ati Git LFS, eyiti a lo ninu Sapling, ni atilẹyin.

orisun: opennet.ru

Fi ọrọìwòye kun