Skip to main content

Compiler reference

Overview

The Motoko compiler (moc) is the primary tool for compiling Motoko programs into executable WebAssembly (Wasm) modules. The compiler runs in the background when you build projects using the IC SDK. If you invoke the compiler directly on the command-line, you can press CTRL-C to exit.

This section provides compiler command-line reference information.

moc

Use the Motoko compiler (moc) to compile Motoko programs into executable WebAssembly (Wasm) modules.

Basic usage

moc [option] [file ...]

Options

You can use the following options with the moc command.

OptionDescription
--ai-errorsEmit AI tailored error messages.
--actor-idl <idl-path>Specifies a path to actor IDL (Candid) files.
--actor-alias <alias> <principal>Specifies an actor import alias.
--args <file>Read additional newline separated command line arguments from <file>.
--args0 <file>Read additional NUL separated command line arguments from <file>.
-cCompile to WebAssembly.
--checkPerforms type checking only.
--compacting-gcUse compacting GC (not supported with enhanced orthogonal persistence).
--copying-gcUse copying GC (default with classical persistence, not supported with enhanced orthogonal persistence).
--debugRespects debug expressions in the source (the default).
--enhanced-orthogonal-persistenceUse enhanced orthogonal persistence (experimental): Scalable and fast upgrades using a persistent 64-bit main memory.
--error-detail <n>Set level of error message detail for syntax errors, n in [0..3] (default 2).
--experimental-stable-memory <n>Select support for the deprecated ExperimentalStableMemory.mo library (n < 0: error, n = 0: warn, n > 0: allow) (default 0).
-fno-shared-codeDo not share low-level utility code: larger code size but decreased cycle consumption (default).
--generational-gcUse generational GC (not supported with enhanced orthogonal persistence).
-fshared-codeDo share low-level utility code: smaller code size but increased cycle consumption.
-help,--helpDisplays usage information.
--hide-warningsHides compiler warnings.
-WerrorTreat warnings as errors.
--incremental-gcUse incremental GC (default of enhanced orthogonal persistence, also available for classical persistence).
--idlCompile binary and emit Candid IDL specification to .did file.
-iRuns the compiler in an interactive read–eval–print loop (REPL) shell so you can evaluate program execution (implies -r).
--mapOutputs a JavaScript source map.
--max-stable-pages <n>Set maximum number of pages available for library ExperimentStableMemory.mo (default 65536).
-no-system-apiDisables system API imports.
-no-timerDisables timer API imports and hides timer primitives.
-o <file>Specifies the output file.
-p <n>Sets the print depth.
--package <package-name> <package-path>Specifies a <package-name> <package-path> pair, separated by a space.
--public-metadata <name>Emit ICP custom section <name> (candid:args or candid:service or motoko:stable-types or motoko:compiler) as public (default is private).
--omit-metadata <name>Omit ICP custom section <name> (candid:args or candid:service or motoko:stable-types or motoko:compiler).
--print-depsPrints the dependencies for a given source file.
-rInterprets programs.
--releaseIgnores debug expressions in the source.
--stable-regionsForce eager initialization of stable regions metadata (for testing purposes); consumes between 386KiB or 8MiB of additional physical stable memory, depending on current use of ExperimentalStableMemory.
--stable-typesCompile binary and emit signature of stable types to .most file.
--stable-compatible <pre> <post>Test upgrade compatibility between stable-type signatures <pre> and <post>.
--rts-stack-pages <n>Set maximum number of pages available for runtime system stack (only supported with classical persistence, default 32).
--trap-on-call-errorTrap, don't throw an Error, when an IC call fails due to destination queue full or freezing threshold is crossed.
Emulates behaviour of moc versions < 0.8.0.
-tActivates tracing in interpreter.
-vGenerates verbose output.
--versionDisplays version information.
-wasi-system-apiUses the WASI system API (wasmtime).
Logo