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:

  • public
  • protected
  • private

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 public by default
  • deep inheritance where composition would be simpler
  • broad wildcard imports that hide symbol origin
  • relying on implicit package assumptions after file moves
Built and maintained by TheRemyyy. Arden is open source under Apache 2.0 and published at theremyyy.dev.