# Glossary {.glossary} common attributes : Every rule has a set of common attributes. See Bazel's [Common attributes](https://bazel.build/reference/be/common-definitions#common-attributes) for a complete listing in-build runtime : An in-build runtime is one where the Python runtime, and all its files, are known to the build system and a Python binary includes all the necessary parts of the runtime in its runfiles. Such runtimes may be remotely downloaded, part of your source control, or mapped in from local files by repositories. The main advantage of in-build runtimes is they ensure you know what Python runtime will be used, since it's part of the build itself and included in the resulting binary. The main disadvantage is the additional work it adds to building. The whole Python runtime is included in a Python binary's runfiles, which can be a significant number of files. platform runtime : A platform runtime is a Python runtime that is assumed to be installed on the system where a Python binary runs, whereever that may be. For example, using `/usr/bin/python3` as the interpreter is a platform runtime -- it assumes that, wherever the binary runs (your local machine, a remote worker, within a container, etc), that path is available. Such runtimes are _not_ part of a binary's runfiles. The main advantage of platform runtimes is they are lightweight insofar as building the binary is concerned. All Bazel has to do is pass along a string path to the interpreter. The disadvantage is, if you don't control the systems being run on, you may get different Python installations than expected. rule callable : A function that behaves like a rule. This includes, but is not is not limited to: * Accepts a `name` arg and other {term}`common attributes`. * Has no return value (i.e. returns `None`). * Creates at least a target named `name` There is usually an implicit interface about what attributes and values are accepted; refer to the respective API accepting this type. simple label : A `str` or `Label` object but not a _direct_ `select` object. These usually mean a string manipulation is occuring, which can't be done on `select` objects. Such attributes are usually still configurable if an alias is used, and a reference to the alias is passed instead. nonconfigurable : A nonconfigurable value cannot use `select`. See Bazel's [configurable attributes](https://bazel.build/reference/be/common-definitions#configurable-attributes) documentation.