Global Variables
Global variables are declared at top-level. They may be private (no pub) or public (pub). Use var for mutable globals, const for immutable globals, and extern to declare symbols provided externally (no initializer).
const version = "1.0"; // private immutable global
pub var requestCount = 0; // public mutable global
var activeUsers: int; // zero-initialized
pub const maxConnections: int = 100; // public immutable global
pub extern stdin: void*; // public external symbol
extern errno: int; // private external symbol
Reassignment rules:
const pi = 3.14159;
fn main() {
pi = 3.14; // cannot assign to const variable
}
var counter = 0;
pub fn main() {
counter = 1; // allowed
counter++; // allowed
}
Local Variables
Local variables inside functions are declared using var or const.
pub fn main() {
var name = "Cyrus";
const timeoutMs = 500;
}
If the type matters:
pub fn main() {
var retries: int; // zero-initialized
const epsilon: float64 = 0.001;
}
Zero Initialization
Variables (both globals and locals) declared without an initializer are automatically zero-initialized:
pub fn main() {
var x: int;
var y: float64;
var z: void*;
printf("%d\n", x); // prints 0
printf("%f\n", y); // prints 0.0
printf("%p\n", z); // prints (nil)
}

