Ua hoʻopuka ʻo Facebook i ka ʻōnaehana hana Buck2

Ua hoʻolauna ʻo Facebook i kahi ʻōnaehana kūkulu hou, ʻo Buck2, i kālele ʻia i ke kūkulu ʻana i nā papahana mai nā waihona waihona nui loa e komo pū ana nā code i nā ʻōlelo papahana like ʻole. ʻO nā ʻokoʻa koʻikoʻi ma waena o ka hoʻokō hou a me ka ʻōnaehana Buck i hoʻohana mua ʻia e Facebook ʻo ia ka hoʻohana ʻana i ka ʻōlelo Rust ma kahi o Java a me ka piʻi nui ʻana o ka pono a me ka hana o ke kaʻina hana (i nā hoʻokolohua kūloko i ka ʻōnaehana like, hana ʻo Buck2 i ka hui. nā hana ʻelua ʻoi aku ka wikiwiki o Buck). Hāʻawi ʻia ke code ma lalo o ka laikini Apache 2.0.

ʻAʻole pili ka ʻōnaehana i ke code kūkulu ʻana i nā ʻōlelo kikoʻī a ma waho o ka pahu e kākoʻo i nā papahana kūkulu i kākau ʻia ma C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell a me OCaml i hoʻohana ʻia e Facebook. Hoʻohana ʻia ka ʻōlelo Starlark ma Python (e like me Bazel) e hoʻolālā i nā mea hoʻohui, kūkulu i nā palapala a me nā lula. Hāʻawi ʻo Starlark iā ʻoe e hoʻonui i nā mana o ka ʻōnaehana kūkulu a abstract mai nā ʻōlelo kikoʻī i hoʻohana ʻia i nā papahana i kūkulu ʻia.

Loaʻa ka hana kiʻekiʻe ma o ka caching o nā hopena, ka hoʻohālikelike o ka hana a me ke kākoʻo no ka hoʻokō mamao o nā hana (Remote Build Execution). I loko o ka hale kūkulu, hoʻohana ʻia ka manaʻo o ka "tightness" - ua ʻoki ʻia ke code i hōʻuluʻulu ʻia mai ka honua o waho, ʻaʻohe mea i hoʻouka ʻia mai waho i ka wā o ke kaʻina hana, a ʻo ka hoʻokō pinepine ʻana i ka hana ma nā ʻōnaehana like ʻole e alakaʻi i ka hopena like ( hana hou ʻia, no ka laʻana, ʻo ka hopena o ke kūkulu ʻana i kahi papahana ma ka mīkini o ka mea hoʻomohala e like like me ke kūkulu ʻana ma ke kikowaena hoʻohui mau). ʻO ke kūlana o ka nele o ka hilinaʻi i ʻike ʻia ma Buck2 he hewa.

ʻO nā hiʻohiʻona nui o Buck2:

  • Ua hoʻokaʻawale loa ʻia nā lula no ke kākoʻo ʻana i nā ʻōlelo papahana a me ke kumu o ka ʻōnaehana kūkulu. Ua kākau ʻia nā lula ma ka ʻōlelo Starlark, a ua kākau ʻia ka hāmeʻa Starlark a me ka hoʻokō ʻana ma Rust.
  • Hoʻohana ka ʻōnaehana kūkulu i hoʻokahi kiʻi hilinaʻi hoʻonui (me ka ʻole o ka māhele ʻana i nā pae), hiki iā ʻoe ke hoʻonui i ka hohonu o ka hoʻohālikelike ʻana o ka hana i hoʻohālikelike ʻia me Buck a me Bazel a pale i nā ʻano hewa he nui.
  • ʻO ke code Buck2 i paʻi ʻia ma GitHub a me nā lula kākoʻo ʻōlelo papahana ua aneane like me ka mana kūloko i hoʻohana ʻia i ka ʻoihana Facebook (ʻo nā ʻokoʻa wale nō ka pili ʻana i nā paʻi compiler a kūkulu i nā kikowaena i hoʻohana ʻia e Facebook).
  • Hoʻolālā ʻia ka ʻōnaehana kūkulu me ka maka i ka hoʻohui ʻana me nā ʻōnaehana hoʻokō hana mamao e hiki ai iā ʻoe ke holo i nā hana ma nā kikowaena mamao. Ua kūpono ka API hoʻokō mamao me Bazel a ua hoʻāʻo ʻia no ka launa pū me Buildbarn a me EngFlow.
  • Hoʻohui ʻia me nā ʻōnaehana faila virtual, kahi e hōʻike ʻia ai nā mea o ka waihona holoʻokoʻa, akā ʻoiaʻiʻo, ua hana ʻia ka hana me ka ʻāpana kūloko maoli o kahi ʻāpana o ka waihona (ʻike ka mea hoʻomohala i ka waihona holoʻokoʻa, akā ʻo ka mea pono wale nō. kiʻi ʻia nā faila i loaʻa mai ka waihona). Kākoʻo ʻia ʻo VFS e pili ana iā EdenFS a me Git LFS, i hoʻohana ʻia e Sapling.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka