Release fan it Bazel 2.0 build systeem

Beskikber frijlitting fan iepen montage ark Bazel 2.0, ûntwikkele troch yngenieurs fan Google en brûkt om de measte ynterne projekten fan it bedriuw te sammeljen. Bazel bout it projekt troch de nedige kompilatoren en tests út te fieren. It stipet it bouwen en testen fan koade yn Java, C++, Objective-C, Python, Rust, Go en in protte oare talen, en ek it bouwen fan mobile applikaasjes foar Android en iOS. Projektkoade ferspraat troch lisinsje ûnder Apache 2.0.

In wichtige ferzjeferoaring omfettet de tafoeging fan wizigingen dy't efterútkompatibiliteit brekke. Begjinnend mei Bazel 2.0 binne de folgjende modi standert ynskeakele: "—incompatible_remap_main_repo" (keppelings mei namme en fia @ no keppele oan deselde repository), "—incompatible_disallow_dict_lookup"_ (gebrûk fan unhashable kaaien),
"--incompatible_remove_native_maven_jar" en "--incompatible_prohibit_aapt1". Oare feroaringen omfetsje:

  • Yn in team aquery eksperimintele stipe is ferskynd foar in nije edysje fan it "proto" útfierformaat (-output = proto), dat op it stuit standert útskeakele is (-incompatible_proto_output_v2) en soarget foar in kompakter presintaasje fan gegevens;
  • De flagge "--incompatible_remove_enabled_toolchain_types" tafoege om it fjild PlatformConfiguration.enabled_toolchain_types te ferwiderjen;
  • Tafoege beskerming tsjin it laden fan pakketten dy't syklike symboalyske keppelings brûke by it laden fan paden by it útwreidzjen fan se;
  • Implementearre de mooglikheid om de flagge "--disk_cache" te brûken mei eksterne gRPC-caches;
  • It Debian-pakket en binêre ynstallearder befettet in ferbettere laach dy't ~/.bazelversion-bestannen en de omjouwingsfariabele $USE_BAZEL_VERSION behannelet;
  • As tarieding op de ôfskriuwing fan runfiles-manifestbestannen is de flagge "--experimental_skip_runfiles_manifests" tafoege.

Under de ûnderskiedende skaaimerken fan Bazel binne de hege snelheid, betrouberens en werhelling fan it assemblageproses. Om hege bousnelheid te berikken, brûkt Bazel aktyf caching- en parallelisaasjetechniken foar it bouproses. BUILD-bestannen moatte alle ôfhinklikens folslein definiearje, op basis wêrfan besluten wurde makke om komponinten opnij op te bouwen neidat wizigingen binne makke (allinich feroare bestannen wurde opnij boud) en it assemblageproses parallelisearje. Tooling soarget ek foar repeatable gearkomste, d.w.s. it resultaat fan it bouwen fan in projekt op 'e masine fan' e ûntwikkelder sil folslein identyk wêze oan 'e build op systemen fan tredden, lykas trochgeande yntegraasjeservers.

Oars as Make en Ninja, brûkt Bazel in oanpak op heger nivo foar it bouwen fan assemblageregels, wêryn, ynstee fan it definiearjen fan de bining fan kommando's oan de bestannen dy't boud wurde, mear abstrakte klearmakke blokken wurde brûkt, lykas "in útfierber bestân bouwe yn C ++", "in bibleteek bouwe yn C ++" of "in test útfiere foar C ++", lykas it identifisearjen fan doelen en platfoarms bouwe. Yn it BUILD-tekstbestân wurde de projektkomponinten beskreaun as in bosk bibleteken, útfierbere bestannen en tests, sûnder detaillearre op it nivo fan yndividuele bestannen en kompileropropkommando's. Oanfoljende funksjonaliteit wurdt ymplementearre troch it meganisme foar it ferbinen fan útwreidingen.

It gebrûk fan inkele assemblagebestannen foar ferskate platfoarms en arsjitektueren wurdt stipe; Bygelyks, ien assemblagebestân sûnder feroarings kin brûkt wurde foar sawol in serversysteem as in mobyl apparaat. It bousysteem is fan 'e grûn ôf ûntworpen om Google-projekten optimaal te bouwen, ynklusyf heul grutte projekten en projekten dy't koade befetsje yn meardere programmeartalen, wiidweidige testen nedich binne en binne boud foar meardere platfoarms.

Boarne: opennet.ru

Add a comment