PageSourceSearch

https://buck2.build/assets/js/ba5601b1.4083b05e.js

js buck2.build collected 2026-10-03 20:41:09 UTC 7,986 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkwebsite=globalThis.webpackChunkwebsite||[]).push([[30451],{15315(e,n,t){t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"about/language_support","title":"Language / Ecosystem Support","description":"This page provides an overview of the programming languages supported by Buck2.","source":"@site/../docs/about/language_support.md","sourceDirName":"about","slug":"/about/language_support","permalink":"/docs/about/language_support","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"id":"language_support","title":"Language / Ecosystem Support"},"sidebar":"main","previous":{"title":"Why Buck2","permalink":"/docs/about/why"},"next":{"title":"Benefits When Compared to Buck1","permalink":"/docs/about/benefits/compared_to_buck1"}}');var i=t(74848),d=t(28453);const r={id:"language_support",title:"Language / Ecosystem Support"},l="Language / Ecosystem Support",a={},c=[{value:"Understanding the Table",id:"understanding-the-table",level:2},{value:"Adding Support for New Languages",id:"adding-support-for-new-languages",level:2}];function o(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"language--ecosystem-support",children:"Language / Ecosystem Support"})}),"\n",(0,i.jsx)(n.p,{children:"This page provides an overview of the programming languages supported by Buck2."}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Language / Ecosystem"}),(0,i.jsx)(n.th,{children:"Prelude Available"}),(0,i.jsx)(n.th,{children:"Usability"}),(0,i.jsx)(n.th,{children:"Documented"}),(0,i.jsx)(n.th,{children:"Maintainers"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"C/C++ (not windows)"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"C/C++ (windows)"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"C#"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Unavailable"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Erlang"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: michalmuskala"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Go"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: podtserkovskiy"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Haskell"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Java"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Java (Mobile)"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: NavidQar & IanChilds"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Kotlin"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Kotlin (Mobile)"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Complex Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: NavidQar & siaojiecai"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Objective-C"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Unavailable"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"OCaml"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Python"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: zsol"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Rust"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Easy Setup"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{children:"GitHub: jakobdegen"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Swift"}),(0,i.jsx)(n.td,{children:"\u2705"}),(0,i.jsx)(n.td,{children:"Unavailable"}),(0,i.jsx)(n.td,{children:"\u274c"}),(0,i.jsx)(n.td,{})]})]})]}),"\n",(0,i.jsx)(n.h2,{id:"understanding-the-table",children:"Understanding the Table"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Prelude Available"}),": Indicates whether Buck2's prelude includes built-in\nrules for this language."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Usability"}),": Indicates whether this language is possible or degree of setup\nrequired.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Easy Setup"}),": Basic installation required, usually searching the path for\ntools"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Complex Setup"}),": Requires additional setup beyond simply installation"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Unavailable"}),": Rules are using tools that are not available"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Documented"}),": Indicates the level of documentation available for using this\nlanguage with Buck2."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Maintainers"}),": Teams or individuals responsible for maintaining support for\nthis language."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"adding-support-for-new-languages",children:"Adding Support for New Languages"}),"\n",(0,i.jsx)(n.p,{children:"Buck2 is designed to be extensible, allowing you to add support for additional\nprogramming languages. To add support for a new language, you t
1ypically need to:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Define appropriate build rules in a ",(0,i.jsx)(n.code,{children:".bzl"})," file"]}),"\n",(0,i.jsx)(n.li,{children:"Create toolchain definitions for the language"}),"\n",(0,i.jsx)(n.li,{children:"Write documentation for how to use the language with Buck2"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"For more information on creating custom rules and toolchains, see:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/rule_authors/writing_rules",children:"Writing Rules"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/rule_authors/writing_toolchains",children:"Writing Toolchains"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},28453(e,n,t){t.d(n,{R:()=>r,x:()=>l});var s=t(96540);const i={},d=s.createContext(i);function r(e){const n=s.useContext(d);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.