Skip to main content
Python knowledge helps you read Sifr quickly. The main adjustment is not syntax. It is where failure is allowed to live. In Python, many mistakes wait until a specific line executes. In Sifr, the compiler asks you to make those cases explicit before a binary exists.

Keep These Instincts

You still write familiar control flow and data shapes:
def, class, if, for, match, f-strings, lists, dictionaries, and async def all remain recognizable. Use that familiarity to move quickly through examples.

Change These Assumptions

Missing Values Are Typed

Sifr does not let a missing value hide inside a normal value.
If you expected KeyError, read Values and Collections. Safe lookup is one of the first differences Python developers notice.

Errors Are Values

Recoverable failures use Result, not stack unwinding.
raise inside a Result-returning function builds the error branch. The compiler requires the call site to handle it.

Mutation Is A Contract

Sifr borrows by default. Use mut when a function should mutate the caller’s value.
Use own when a function consumes a value. Use own mut when it consumes and mutates the value.
Read mut as part of the function’s public API. It tells the caller that the call may change their value.

Imports Use Sifr Modules

Use explicit Sifr modules:
Bare CPython module names are not aliases. from math import sqrt is rejected with SIFR-IMPORT-0008 when no real project module named math exists.

Where To Go Next

Quickstart

Compile and run a first program.

Ownership and Mutability

Learn mut, own, and borrow-by-default.

Error Handling

Understand Result and typed try/except.

Module Index

Browse the sifr.* standard-library namespace.