v5 Modules

Core idea

  • modules provide explicit ownership and visibility boundaries
  • imports create visibility edges
  • exports are explicit public API

Module contract

  • module NAME { ... }
  • import module or import module as alias
  • only alias.name for cross-module access

Rules to enforce

  • main must be last
  • imports to earlier modules only (in v5)
  • duplicate module names disallowed
  • alias collisions rejected
  • non-exported symbols are inaccessible across modules

Runtime model

  • module exports compiled into module value/map
  • qualified access becomes lookup on that exported map
  • no special runtime module opcodes needed
  • module visibility and order constraints matter to linker
  • closure/function ids rely on stable module ordering

Quick checks

  • unknown module import
  • alias collision
  • export enforcement
  • default alias behavior (import util)
  • forward import rejection
1 / 1
Use arrow keys or click edges to navigate. Press H to toggle help, F for fullscreen.