Facebook විසින් Buck2 ගොඩනැගීමේ පද්ධතිය ප්‍රකාශයට පත් කරන ලදී

ෆේස්බුක් විසින් විවිධ ක්‍රමලේඛන භාෂාවලින් කේත ඇතුළුව ඉතා විශාල ගබඩාවලින් ව්‍යාපෘති ගොඩනැගීම සංවිධානය කිරීම අරමුණු කරගත් නව ගොඩනැගීමේ පද්ධතියක්, Buck2 හඳුන්වා දෙන ලදී. Facebook හි කලින් භාවිතා කරන ලද නව ක්‍රියාත්මක කිරීම සහ Buck ක්‍රමය අතර ඇති ප්‍රධාන වෙනස්කම් වන්නේ Java වෙනුවට Rust භාෂාව භාවිතා කිරීම සහ එකලස් කිරීමේ ක්‍රියාවලියේ කාර්යක්ෂමතාව සහ ඵලදායිතාවයේ සැලකිය යුතු වැඩි වීමක් (එම යටිතල ව්‍යුහයේ අභ්‍යන්තර පරීක්ෂණ වලදී, Buck2 එකලස් කිරීම සිදු කරයි. කාර්යයන් බක් මෙන් දෙගුණයක් වේගවත් වේ). කේතය Apache 2.0 බලපත්‍රය යටතේ බෙදා හරිනු ලැබේ.

පද්ධතිය නිශ්චිත භාෂාවලින් කේත එකලස් කිරීම සමඟ බැඳී නොමැති අතර කොටුවෙන් පිටත C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell සහ OCaml යන භාෂාවලින් ලියා ඇති ව්‍යාපෘති එකලස් කිරීමට සහය දක්වයි. , Facebook විසින් භාවිතා කරන ලදී. Starlark භාෂාව, Python මත පදනම් වූ (Bazel හි මෙන්) ඇඩෝන සැලසුම් කිරීමට, ස්ක්‍රිප්ට් සහ නීති ගොඩනැගීමට භාවිතා කරයි. එකලස් කිරීමේ පද්ධතියේ හැකියාවන් පුළුල් කිරීමට සහ එකලස් කරන ලද ව්‍යාපෘතිවල භාවිතා කරන විශේෂිත භාෂාවන්ගෙන් වියුක්ත කිරීමට Starlark ඔබට ඉඩ සලසයි.

ප්‍රතිඵල හැඹිලිගත කිරීම, කාර්යය සමාන්තරව කිරීම සහ දුරස්ථව කාර්යයන් ක්‍රියාත්මක කිරීම සඳහා සහාය වීම (Remote Build Execution) මගින් ඉහළ කාර්ය සාධනයක් ලබා ගත හැක. එකලස් කිරීමේ පරිසරය තුළ, “හර්මෙටික්සිටි” සංකල්පය භාවිතා වේ - එකලස් කරන ලද කේතය බාහිර ලෝකයෙන් කපා හැරේ, එකලස් කිරීමේ ක්‍රියාවලියේදී පිටතින් කිසිවක් පටවනු නොලැබේ, සහ විවිධ පද්ධතිවල වැඩ නැවත නැවත ක්‍රියාත්මක කිරීම එකම ප්‍රති result ලයට හේතු වේ ( නැවත නැවත එකලස් කිරීම්, උදාහරණයක් ලෙස, සංවර්ධකයාගේ යන්ත්‍රය මත ව්‍යාපෘතියක් එකලස් කිරීමේ ප්‍රති result ලය අඛණ්ඩ ඒකාබද්ධ කිරීමේ සේවාදායකයේ ගොඩනැගීමට සම්පූර්ණයෙන්ම සමාන වේ). යැපීම නොමැතිකම Buck2 හි දෝෂයක් ලෙස සැලකේ.

Buck2 හි ප්රධාන ලක්ෂණ:

  • ක්‍රමලේඛන භාෂා සඳහා සහය දැක්වීමේ නීති සහ එකලස් කිරීමේ පද්ධතියේ හරය සම්පූර්ණයෙන්ම වෙන්ව ඇත. රීති Starlark භාෂාව භාවිතා කරන අතර Starlark මෙවලම් කට්ටලය සහ ක්රියාත්මක කිරීම රස්ට් වලින් ලියා ඇත.
  • එකලස් කිරීමේ පද්ධතිය තනි වර්ධක පරායත්ත ප්‍රස්ථාරයක් (අදියරවලට බෙදීමකින් තොරව) භාවිතා කරයි, එමඟින් Buck සහ Bazel හා සසඳන විට කාර්යයේ සමාන්තරකරණයේ ගැඹුර වැඩි කිරීමට සහ බොහෝ ආකාරයේ දෝෂ වළක්වා ගැනීමට ඉඩ සලසයි.
  • GitHub හි ප්‍රකාශයට පත් කරන ලද Buck2 කේතය සහ ක්‍රමලේඛන භාෂා සඳහා සහය දැක්වීම සඳහා වන නීති Facebook යටිතල ව්‍යුහයේ භාවිතා වන අභ්‍යන්තර අනුවාදයට බොහෝ දුරට සමාන වේ (වෙනස්කම් ඇත්තේ Facebook හි භාවිතා වන සම්පාදක සහ එකලස් සේවාදායක සංස්කරණ සම්බන්ධයෙන් පමණි).
  • එකලස් කිරීමේ පද්ධතිය සැලසුම් කර ඇත්තේ ඔබට දුරස්ථ සේවාදායක මත වැඩ කිරීමට ඉඩ සලසන දුරස්ථ කාර්ය ක්‍රියාත්මක කිරීමේ පද්ධති සමඟ ඒකාබද්ධ වීමට ඇසක් ඇතිවය. දුරස්ථ ක්‍රියාත්මක කිරීමේ API Bazel සමඟ අනුකූල වන අතර Buildbarn සහ EngFlow සමඟ ගැළපීම සඳහා පරීක්‍ෂා කර ඇත.
  • අතථ්‍ය ගොනු පද්ධති සමඟ ඒකාබද්ධ කිරීම සපයනු ලබන අතර, එහි සම්පූර්ණ ගබඩාවේ අන්තර්ගතය ඉදිරිපත් කර ඇත, නමුත් ඇත්ත වශයෙන්ම, වැඩ කටයුතු සිදු කරනු ලබන්නේ ගබඩාවේ කොටසක වත්මන් දේශීය පෙත්තක් සමඟ ය (සංවර්ධකයා මුළු ගබඩාවම දකින නමුත් අවශ්‍ය ගොනු පමණි. ප්‍රවේශ වන ඒවා ගබඩාවෙන් උපුටා ගනු ලැබේ). Sapling හි භාවිතා වන EdenFS සහ Git LFS මත පදනම් වූ VFS සහය දක්වයි.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න