# Bazel BUILD Encyclopedia of Functions

## Concepts and terminology

- Common definitions
  - Bourne shell tokenization
  - Label expansion
  - Typical attributes for most rules
  - Common attributes for all rules
  - Common attributes for tests
  - Common attributes for binaries
  - Configurable attributes
  - Implicit output targets
- "Make" variables

## Functions

## Rules

Native rules ship with the Bazel binary and do not require a `load` statement. Native rules are available globally in BUILD files. In .bzl files, you can find them in the `native` module. For non-native Starlark rules that ship separately from Bazel, see the list of recommended rules.

### Language-specific native rules

#macro(ruleLink $ruleFamily $rule) ${rule.ruleName} #end

Language | Binary rules | Library rules | Test rules | Other rules
--- | --- | --- | --- | ---
#foreach($ruleFamily in $langSpecificRuleFamilies) #if($ruleFamily.size() > 0)
#set( $ruleTypes = [$ruleFamily.binaryRules, $ruleFamily.libraryRules, $ruleFamily.testRules, $ruleFamily.otherRules] ) #foreach($ruleType in $ruleTypes)
#end
${ruleFamily.name} | #foreach($rule in $ruleType) #ruleLink($ruleFamily, $rule) #end
#end #end

### Language-agnostic native rules

Family | Rules
--- | ---
#foreach($ruleFamily in $genericRuleFamilies) #if($ruleFamily.size() > 0)

${ruleFamily.name}

#foreach($rule in $ruleFamily.rules)
- #ruleLink($ruleFamily, $rule) #end

#end #end

#if (!$singlePage)
#end