Keluaran sistem binaan Bazel 2.0

Ada pelepasan alat pemasangan terbuka Bazel 2.0, Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌΠΈ ΠΈΠ· Google ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для сборки Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Bazel обСспСчиваСт сборку ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, запуская Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ компиляторы ΠΈ тСсты. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ сборка ΠΈ тСстированиС ΠΊΠΎΠ΄Π° Π½Π° Java, C++, Objective-C, Python, Rust, Go ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Π° Ρ‚Π°ΠΊΠΆΠ΅ сборка ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Android ΠΈ iOS. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° diedarkan oleh berlesen di bawah Apache 2.0.

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ вСрсии связано с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Начиная с Bazel 2.0 Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Β«β€”incompatible_remap_main_repoΒ» (ссылки ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ‡Π΅Ρ€Π΅Π· @ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ), Β«β€”incompatible_disallow_dict_lookupΒ»_(ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ),
Β«β€”incompatible_remove_native_maven_jarΒ» ΠΈ Β«β€”incompatible_prohibit_aapt1Β». Π‘Ρ€Π΅Π΄ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

  • Dalam satu pasukan aquery появилась ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π΄Π°ΡƒΡ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ‹Π²ΠΎΠ΄Π° Β«protoΒ» (β€”output=proto), которая ΠΏΠΎΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (β€”incompatible_proto_output_v2) ΠΈ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠ΅ прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«β€”incompatible_remove_enabled_toolchain_typesΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ PlatformConfiguration.enabled_toolchain_types;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ раскрытии ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½Ρ‹Π΅ символичСскиС ссылки;
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ„Π»Π°Π³Π° Β«β€”disk_cacheΒ» с внСшними кэшами gRPC;
  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚ для Debian ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ инсталлятор Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ прослойка, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ ~/.bazelversion ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния $USE_BAZEL_VERSION;
  • Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ² с манифСстом runfiles Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… возмоТностСй Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Π»Π°Π³ Β«β€”experimental_skip_runfiles_manifestsΒ».

Antara ciri tersendiri Bazel ialah kelajuan tinggi, kebolehpercayaan dan kebolehulangan proses pemasangan. Untuk mencapai kelajuan binaan yang tinggi, Bazel secara aktif menggunakan teknik caching dan selari untuk proses binaan. Fail BUILD mesti mentakrifkan sepenuhnya semua kebergantungan, berdasarkan keputusan yang dibuat untuk membina semula komponen selepas perubahan dibuat (hanya fail yang diubah dibina semula) dan menyelaraskan proses pemasangan. Perkakas juga memastikan pemasangan berulang, i.e. hasil membina projek pada mesin pembangun akan sama sepenuhnya dengan binaan pada sistem pihak ketiga, seperti pelayan penyepaduan berterusan.

Tidak seperti Make dan Ninja, Bazel menggunakan pendekatan peringkat lebih tinggi untuk membina peraturan pemasangan, di mana, bukannya menentukan pengikatan arahan pada fail yang sedang dibina, lebih banyak blok siap pakai yang abstrak digunakan, seperti "membina fail boleh laku dalam C++", "membina perpustakaan dalam C++" atau "menjalankan ujian untuk C++", serta mengenal pasti sasaran dan membina platform. Dalam fail teks BUILD, komponen projek diterangkan sebagai sekumpulan perpustakaan, fail boleh laku dan ujian, tanpa memperincikan pada tahap fail individu dan arahan panggilan pengkompil. Kefungsian tambahan dilaksanakan melalui mekanisme untuk menyambung sambungan.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ использованиС Π΅Π΄ΠΈΠ½Ρ‹Ρ… сборочных Ρ„Π°ΠΉΠ»ΠΎΠ² для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» сборки Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ для сСрвСрной систСмы, Ρ‚Π°ΠΊ ΠΈ для мобильного устройства. Бборочная систСма ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ спроСктирована для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Google, Π² Ρ‚ΠΎΠΌ числС сборки ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², содСрТащих ΠΊΠΎΠ΄ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языках программирования, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΈ собираСмых для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Sumber: opennet.ru

Tambah komen