use — import a project module
use helpers
use drawing.shapes
use imports a project-local module. It is valid only at top level in a
portable project. See Section 12.
Modules are .pliro source files inside one .bipli project. They are not
external packages and do not perform network resolution.
Import paths and namespaces
use helpers
use drawing.shapes
helpers resolves helpers.pliro. drawing.shapes resolves
drawing/shapes.pliro. Resolution is rooted at the project, and the final path
component becomes the namespace:
shapes.square(40)
Every dotted component is an exact, case-sensitive Pliro identifier and maps to
one directory or file-name component. An English keyword cannot be a use path
component because the lexer does not classify it as an identifier.
Complete two-source example
helpers.pliro:
# language: en
let greeting = "Hello from a module"
function twice(value):
return value * 2
main.pliro:
# language: en
use helpers
say helpers.greeting
say helpers.twice(4)
Module rules
usemust occur at top level.- A
usenamespace is visible only after its statement. - Every top-level
letandfunctiondeclaration is currently exported. - Imported namespace bindings and direct member assignments are read-only to
the importer. - A namespace is not an ordinary runtime value; qualify one of its members.
- Reachable dependencies initialize once, dependency-first, before the entry
source. - Import cycles, missing modules, missing members, and ambiguous paths are
compile-time errors. - Unreachable project sources are checked but do not execute.
- Standalone
.plirofiles cannot use project modules.
Read-only imports are not deeply frozen collection objects. If an exported
value is a list or map, assigning it to a local name retains normal shared
collection storage; mutating an existing element through that local alias is
visible through the export. A function in the defining module may also update
that module’s own top-level variables.
Import aliases, private exports, re-exports, packages, and external dependencies
are not implemented.
