Language Surface
Generics, interfaces, enums, ownership, async, and project mode
Start from the capabilities Arden already ships instead of guessing from the repo layout.
Language Surface
Start from the capabilities Arden already ships instead of guessing from the repo layout.
Workflow
Use the docs as a product map: install it, run it, then move into project mode and tooling.
This page is the fastest map of what Arden already ships today, how to approach learning it, and where to dive deeper without guessing.
Arden is a native systems language with three core priorities:
Arden is not just a parser demo. The repository already includes:
Option, Result, ...)
(user-defined generic enums are not supported yet)public/private/protected), inheritance (extends), destructors@Pure, @Io, @Thread, @Any (+ @Net/@Alloc/@Unsafe support)Task<T>, async, await, task status/cancel/timeout APIsextern, ABI options (c/system), bindgen workflow, Ptr<T> type supportstd.net import path exists, runtime Net.* API surface is currently placeholder-onlyarden.toml, explicit file graph, cache-aware build/check/run/testIf you are reading Arden for the first time, these symbols cover most confusion:
mut x -> binding can be reassignedx (without mut) -> immutable binding&x -> read-only borrow&mut x -> exclusive mutable borrowimport std.<module>.*; -> required for Math.*, Str.*, Time.*, System.*, Args.*, File.*Option<T> vs Result<T, E> -> missing value vs recoverable failure with reasonTask<T> -> async value you must await (or handle with timeout/status APIs)arden check examples/single_file/basics/01_hello/01_hello.arden
arden run examples/single_file/basics/01_hello/01_hello.arden
arden test --path examples/single_file/tooling_and_ffi/24_test_attributes/24_test_attributes.arden
01_hello10_ownership41_async_boundary_rules14_async26_effect_system27_extern_c_interop43_borrow_mut_semantics44_exact_import_values35_visibility_enforcement, 37_interfaces_contracts45_interface_inline_body_rulesArden code is explicit by design:
That makes behavior easier to reason about in large codebases and CI.
Day-to-day commands:
arden check --timingsarden build --timingsAdvanced large-project tuning exists through environment variables
(ARDEN_OBJECT_SHARD_THRESHOLD, ARDEN_OBJECT_SHARD_SIZE) for object-codegen
sharding and ARDEN_CODEGEN_NATIVE_CPU=1 for host-native local codegen tuning.
Keep these for profiling/CI experiments, not normal beginner workflow.
basics/ + features/advanced/ + stdlib/