Language Edges
Why This Matters
Beyond core syntax, Arden already supports project-scale language features that shape architecture and API boundaries. This page collects them in one place.
Visibility Modifiers
Supported visibilities:
publicprotectedprivate
Use visibility to enforce boundaries at compile time.
Example: 35_visibility_enforcement
Inheritance (extends)
Classes can extend base classes and override methods.
Example: 36_inheritance_extends
Import Aliases
Alias imports reduce long namespace paths and improve readability:
import std.math as math;
import std.string as str;
Example: 38_import_aliases
Package Namespaces
In project mode, files can declare namespace with package ...; and import symbols across packages.
Example project: nested_package_project
Compound Assignment
Arden supports compound assignment on variables/fields/indexes: +=, -=, *=, /=, %=.
Example: 39_compound_assign
Destructors
Classes can define destructor() for teardown-time logic.
A class can define at most one destructor.
Common Mistakes
- exposing internals as
publicby default - deep inheritance where composition would be simpler
- broad wildcard imports that hide symbol origin
- relying on implicit package assumptions after file moves