Glossary
Acronyms
Acronym | ... stands for | Explanation |
---|---|---|
ABI | Application Binary Interface | See here |
API | Application Programming Interface | The sum total of available functions, classes, etc. of a given program |
ARM | Advanced RISC Machines | Family of RISC architectures, second-most widely used processor family after x86 |
AVX | Advanced Vector eXtensions | Various extensions to the x86 instruction set (AVX, AVX2, AVX512), evolution after SSE |
BLAS | Basic Linear Algebra Subprograms | Specification resp. implementation for low-level linear algebra routines |
BOLT | Binary Optimization and Layout Tool | See here |
cffi |
The C FFI for Python | See here |
CI | Continuous Integration | Testing all changes made to a given software, resp. the infrastructure that makes this possible |
CLI | Command Line Interface | |
CPU | Central Processing Unit | Main circuitry for executing machine instructions on a computer; contrast GPU |
CRAN | Comprehensive R Archive Network | Main index for R language packages, comparable to PyPI |
CUDA | Compute Unified Device Architecture | Parallel Computing Framework for NVIDIA GPUs |
DRY | Don't Repeat Yourself | Principle in software development aimed at reducing repetition |
GCC | GNU Compiler Collection | Main compiler family (for C / C++ / Fortran etc.) on Linux |
GUI | Graphical UI | |
GNU | GNU's Not Unix | Collection of free software packages under GPL License |
GPL | (GNU) General Public License | Foundational "copyleft" license of the free software movement |
glibc | GNU C Library | Widely used implementation of the C standard library |
FFI | Foreign Function Interface | Calling functions written in a different language than the one currently used |
GPU | Graphics Processing Unit | Specialized circuitry for quickly computing graphics-related tasks |
ILP64 | - | Name used for the standard 64-bit interface to BLAS/LAPACK. Also see "(64 bit) Data Models" below |
IR | Intermediate Representation | Language-agnostic yet still semantic representation of code within a compiler |
LAPACK | Linear Algebra PACKage | Standard software library for numerical linear algebra |
ISA | Instruction Set Architecture | Specification of an instruction set for a CPU; e.g. x86-64, arm64, ... |
JIT | Just-in-time Compilation | Compiling code just before execution; used in CUDA, PyTorch, PyPy, Numba etc. |
LLVM | - | Cross-platform compiler framework, home of Clang, MLIR, BOLT etc. |
LTO | Link-Time Optimization | See here |
LTS | Long-Term Support | Version of a given software/library/distribution designated for long-term support |
musl | - | An alternative implementation of the C standard library |
MPI | Message Passing Interface | Standard for message-passing in parallel computing |
MLIR | Multi-Level IR | Higher-level IR within LLVM; used i.a. in machine learning frameworks |
MSVC | Microsoft Visual C++ | Main compiler on Windows |
NEP | Numpy Enhancement Proposal | See here |
OpenMP | Open Multi Processing | Multi-platform API for enabling multi-processing in C/C++/Fortran |
OS | Operating System | E.g. Linux, MacOS, Windows |
PEP | Python Enhancement Proposal | See here |
pip |
Pip Installs Packages | Default installer for Python packages, distributed with CPython itself; see here |
PGO | Profile-Guided Optimization | See here |
PSF | Python Software Foundation | See here |
PyPA | Python Packaging Authority | Group which maintains core set of projects in Python packaging |
PyPI | Python Package Index | Main index where packages get installed from |
PyPy | - | An implementation of the Python specification in (quasi-)Python, with JIT capabilities |
QEMU | Quick EMUlator | Predominant emulation framework on Linux |
RHEL | Red Hat Enterprise Linux | Commercial distribution with some of the longest-running support timelines |
RISC | Reduced Instruction Set Computer | Paradigm underlying many past and current CPU architectures |
ROCm | Radeon Open Compute | Software stack for AMD GPUs; comparable to CUDA |
sdist |
Source DISTribution | An archive of the source code of a Python project with metadata |
SIMD | Single Instruction, Multiple Data | CPU-specific instructions that can process more data in a single instruction |
SIG | Special Interest Group | E.g., Distutils-SIG (now replaced by Discourse) |
SSE | Streaming SIMD Extensions | Various extensions to the x86 instruction set (SSE, SSE2, SSE3, SSSE3, SSE4) for SIMD |
TOML | Tom's Obvious Minimal Language | Configuration language chosen for pyproject.toml , cargo etc., see here |
UCRT | Universal C Runtime | Windows equivalent to glibc/musl |
UI | User Interface | |
UX | User eXperience | |
VCS | Version Control System | Tool to keep track of changes in source code, e.g. git |
venv |
Virtual ENVironments | Python standard library module for creating environments; distinct from virtualenv |
Terms
Term | Explanation | Examples / References |
---|---|---|
Architecture | In the context of packaging software, this generally refers to the CPU architecture (=ISA) | |
ABI Break | Failing to maintain the ABI | See here |
Binary Compatibility | Succeeding to maintain the ABI (e.g. across versions / upgrades) | See here |
Build Backend | Specifically in the context of pyproject.toml builds, the tool responsible for building a Python package |
setuptools , flit , hatch , ... |
Build Frontend | Specifically in the context of pyproject.toml builds, the tool used to trigger a build |
Predominantly pip |
Calling Convention | Agreed-upon contract with describes how to interact with a given CPU (family) | See here |
cargo |
Package manager for the Rust language, often upheld as a positive example for installation UX | See here |
Conda | Cross-platform package & environment manager, based on distribution channels separate from PyPI | See here |
Conda-forge | Community-led packaging effort for (predominantly) Python packages | See here |
Cross-compilation | Compiling on a given platform for another platform | See here |
(64 bit) Data Models | Choice of bit-widths for int /long integer types |
ILP32, ILP64, LP64; see here |
Demuxer / Demuxing | Colloquial name for demultiplexing, which can be considered a single-input, multiple-output switch | See here |
Distribution | An entity distributing (consistent) binary artefacts, often forming its own ecosystem | Incl. OS: Debian, Fedora, Ubuntu, RHEL...OS-less: Conda, Spack, Homebrew, ... |
distutils |
Python standard library module for building and installing packages; added in 1.6, to be removed in 3.12 | See here |
easy_install |
Deprecated method for installing Python packages, superseded by pip install |
See here |
Egg | Historical format for distributing Python packages | See here |
Emulation | Pretending to run on a different CPU architecture; this can be used to avoid cross-compilation | See QEMU, resp. here |
Linker | A tool to correctly find the required third-party symbols for a given project | GNU's gold, LLVM's lld, mold |
Mamba | Alternative implementation of the conda CLI tool with a faster solver |
See here |
Manylinux | Baseline tooling to allow distributing wheels across various Linux distributions | See PEP 600 and the PEPs it replaces |
numpy.distutils |
Extension to distutils , adding i.a. support for BLAS/LAPACK, Fortran, SIMD etc. |
See here |
Platform | Colloquially used as interchangeable with the OS, though really only fully specified by the target triple | |
pyproject.toml |
Standard metadata file for Python packages | See PEP 517 & 518 |
setuptools |
Most widely used tool for building Python packages; new home of distutils |
See here |
Symbol | A compiled version of a function | See here |
Tarball | Colloquial name for various flavors of .tar archive files |
See here |
(Target) Triple | Unambiguous specification of the platform for the purpose of (cross-)compiling software for it, usually <arch>-<vendor>-<OS> |
See PEP 11, resp. here or here |
virtualenv |
Installable module for handling virtual environments; largely a superset of venv |
See here |
Wheel | A format for distributing and installing binary artefacts for Python packages; essentially a tarball plus metadata | See here |
Last update:
January 7, 2023
Created: December 29, 2022
Created: December 29, 2022