Mojo reference
This section includes the Mojo API references:
- Standard library: Common Mojo APIs.
- MAX AI Kernels library. Mojo APIs for writing high-performance computational kernels and custom operations for AI models.
- Decorators. Mojo decorators reference.
How to read the Mojo API docsβ
Mojo syntax is covered in detail in the Mojo manual. Here's a quick cheat-sheet on reading struct and function signatures.
Argumentsβ
Function arguments appear in parentheses after the function name:
def example_fn(pos: Int, /, pos_or_kw: Int, *, kw_only: Bool = False):
...Here's a quick overview of some special syntax in the argument list:
-
Slash (
/): arguments declared before a slash are positional-only arguments. -
Star (
*): a star by itself in place of an argument indicates that the arguments after the star are keyword-only. -
An equals sign (
=) introduces a default value for an optional argument.
You may also see argument names prefixed with one or two stars (*):
def myfunc2(*names, **attributes) raises:-
An argument name prefixed by a single star character, like
*namesidentifies a variadic argument. -
An argument name prefixed with a double star, like
**attributesidentifies a variadic keyword-only argument.
An argument may also be preceded by an argument convention, which indicates how the value is passed:
def sort(mut names: List[String]):The most common conventions are:
read(default): the callee receives an immutable reference to the value.mut: the callee receives a mutable reference to the value.owned: the callee receives ownership of a value.
For details and a complete list of argument conventions, see Argument conventions.
Parametersβ
Mojo structs and functions can take parameters. Parameters are evaluated at compilation time, and act as constants at runtime. Parameter lists are enclosed in square brackets:
struct ExampleStruct[size: Int, //, thing: Thing[size]]:Parameters that occur before a double-slash (//) in the parameter list are
infer-only parameters. You
usually don't need to specify infer-only parameters; as the name suggests,
they're usually inferred.
Like arguments, parameters can be positional-only, keyword-or-positional, or
keyword-only, and they can be required or optional. The /, *, and =
characters have the same meaning in parameter lists as they do in argument
lists.
Standard libraryβ
The Mojo standard library provides nearly everything you'll need for
writing Mojo programs, including basic data types like
Int and
SIMD, collection types like
List, reusable
algorithms and modules to support
GPU programming.
Top-level packages:
ποΈ algorithm
High performance data operations: vectorization, parallelization, reduction, memory.
ποΈ base64
Binary data encoding: base64 and base16 encode/decode functions.
ποΈ benchmark
Performance benchmarking: statistical analysis and detailed reports.
ποΈ bit
Bitwise operations: manipulation, counting, rotation, and power-of-two utilities.
ποΈ builtin
Language foundation: built-in types, traits, and fundamental operations.
ποΈ collections
Core data structures: List, Dict, Set, Optional, plus specialized collections.
ποΈ compile
Runtime function compilation and introspection: assembly, IR, linkage, metadata.
ποΈ complex
Complex numbers: SIMD types, scalar types, and operations.
ποΈ documentation
Documentation built-ins: decorators and utilities for doc generation.
ποΈ ffi
Foreign function interface (FFI) for calling C code and loading libraries.
ποΈ format
Provides formatting traits for converting types to text.
ποΈ gpu
GPU programming primitives: thread blocks, async memory, barriers, and sync.
ποΈ hashlib
Cryptographic and non-cryptographic hashing with customizable algorithms.
ποΈ io
Core I/O operations: console input/output, file handling, writing traits.
ποΈ iter
Iteration traits and utilities: Iterable, IterableOwned, Iterator, enumerate, zip, map.
ποΈ itertools
Iterator tools for lazy sequence generation and transformation.
ποΈ logger
Logging with configurable severity levels.
ποΈ math
Math functions and constants: trig, exponential, logarithmic, and special functions.
ποΈ memory
Low-level memory management: pointers, allocations, address spaces.
ποΈ os
OS interface layer: environment, filesystem, process control.
ποΈ pathlib
Filesystem path manipulation and navigation.
ποΈ prelude
Standard library prelude: fundamental types, traits, and operations auto-imported.
ποΈ pwd
Password database lookups for user account information.
ποΈ python
Python interoperability: import packages and modules, call functions, type conversion.
ποΈ random
Pseudorandom number generation with uniform and normal distributions.
ποΈ reflection
Compile-time reflection utilities for introspecting Mojo types and functions.
ποΈ runtime
Runtime services: async execution and program tracing.
ποΈ stat
File type constants and detection from stat system calls.
ποΈ subprocess
Execute external processes and commands.
ποΈ sys
System runtime: I/O, hardware info, intrinsics, compile-time utils.
ποΈ tempfile
Manage temporary files and directories: create, locate, and cleanup.
ποΈ testing
Unit testing: Assertions (equal, true, raises) and test suites.
ποΈ time
Timing operations: monotonic clocks, performance counters, sleep, time_function.
ποΈ utils
General utils: indexing, variants, static tuples, and thread synchronization.
MAX AI kernels libraryβ
The MAX AI kernels library provides a collection of highly optimized, reusable compute kernels for high-performance numerical and AI workloads. These kernels serve as the foundational building blocks for writing MAX custom operations or standalone GPU kernels that are portable across CPUs and GPUs.
Top-level packages:
ποΈ comm
Provides communication primitives for GPUs.
ποΈ extensibility
Includes the tensor package.
ποΈ kv_cache
Contains implementations for several types of key-value caches.
ποΈ layout
Provides layout and layout tensor types, which abstract memory layout for multidimensional data.
ποΈ linalg
Provides CPU and GPU implementations of linear algebra functions.
ποΈ nn
Provides neural network operators for deep learning models.
ποΈ nvml
Implements wrappers around the NVIDIA Management Library (nvml).
ποΈ quantization
This package contains a set of APIs for quantizing tensor data.
Decoratorsβ
A Mojo decorator is a higher-order function that modifies or extends the behavior of a struct, a function, or some other code.
ποΈ @align
Specifies a minimum alignment for a struct.
ποΈ @always_inline
Copies the body of a function directly into the body of the calling function.
ποΈ @compiler.register
Registers a custom operation for use with the MAX Graph API.
ποΈ @__copy_capture
Captures register-passable typed values by copy.
ποΈ @deprecated
Mojo's `@deprecated` decorator marks outdated APIs and schedules them for removal. When used with the `use` parameter, it also provides migration suggestions.
ποΈ @explicit_destroy
Prevents automatic destruction by a `__del__()` method and requires explicit cleanup through named destructor methods.
ποΈ @export
Marks a function for export.
ποΈ @fieldwise_init
Generates fieldwise constructor for a struct.
ποΈ @implicit
Marks a constructor as eligible for implicit conversion.
ποΈ @no_inline
Prevents a function from being inlined.
ποΈ @parameter
Executes a function or if statement at compile time.
ποΈ @staticmethod
Declares a struct method as static.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!