Getting Started
OverviewLanguage GuideFull Reference
Book
Table of ContentsIntroductionPrefaceGetting StartedLanguage TourOwnershipErrorsConcurrencyStdlibNetworkingDataPackagesSpeed & SafetyCross-PlatformToolingCookbookAppendix
Reference
Standard LibraryKeywordsPerformanceSecurityBuilt-in FunctionsStatusDebuggingABI
How-To
Getting StartedHTTP APIsErrorsPackagesConcurrencyMemoryWASITestingRelease Builds
Project
RoadmapVisionChangelogContributing

Mako keywords

Source of truth: src/lexer/mod.rslex_ident (38 reserved words).
Every identifier that matches one of these strings is always a keyword token — never an Ident. There are no contextual keywords today: you cannot name a variable crew or default.

Not keywords (ordinary identifiers / builtins): type names (int, int8, int32, int64, uint64, byte, float/float64, string, …), map (type constructor map[K]V, not reserved), conversions T(x) / bytes(s), Ok/Err/assert*/t_run, len/cap/append/copy/ rune_count/has/delete/str_builder/builder_*/uuid_*, etc. See GUIDE.md.

Guided tour: The Mako Book · Full syntax: GUIDE.md · Design: LANGUAGE.md.


Declarations

Keyword Meaning
fn Function (or interface method) declaration
struct Product type with named fields
enum Sum type with variants
actor Actor type with receive arms
receive Actor message handler arm
interface Named method set (light interfaces)
extern Foreign declaration (extern "C" fn …)
const Compile-time constant binding
import Merge another .mko / std package: import "strings", grouped import ( "a" \n "b" ), brace import { "a"; "b" }, alias import x "path" or import "path" as x
let Local binding
mut Mutable parameter or binding marker

Control flow

Keyword Meaning
if / else Conditional
while Loop while condition holds
for / in / range Iteration (for i, v in range s, for i in n, …)
break / continue Exit / next iteration of innermost for/while
return Return from function
defer Run on function exit (LIFO), including before return
match Pattern match on enums / Option / Result / ints

Literals / logic

Keyword Meaning
true / false Bool literals
and / or / not Boolean operators (word forms; && / \|\| / ! also work)

Operators (not keywords)

Form Meaning
= Assignment only (never equality)
== != < > <= >= Comparison
&& \|\| ! Logical and / or / not (short-circuit &&/\|\|); !!x is two !
and or not Same as && / \|\| / !
& \| ^ &^ << >> Bitwise; unary ^x is bitwise complement
Leading \|…\| Still a lambda; infix \| is bitwise or

Concurrency

Keyword Meaning
crew Structured concurrency scope
kick Spawn work on a crew (also .kick(…))
join Wait for a kicked job (also .join())
fan Data-parallel map over a range/collection
select Multi-way channel wait
timeout Select arm: wait up to N ms
default Select arm: non-blocking fallback

Memory / ownership

Keyword Meaning
arena Bump-allocation region (freed on scope exit)
hold Move-on-rebind ownership binding
share Shared / RC-style binding (seed)
as Type / ownership cast helper in expressions

Alphabetical (complete)

actor and arena as break const continue crew default defer else enum extern false
fan fn for hold if import in interface join kick let match mut not or range receive
return select share struct timeout true while

(38 words — must match lex_ident exactly.)

Edit this page on GitHub Report an issue