enso/docs/semantics/README.md
Pavel Marek c22928ecc2
Implement private modules (#7840)
Adds the ability to declare a module as *private*. Modifies the parser to add the `private` keyword as a reserved keyword. All the checks for private modules are implemented as an independent *Compiler pass*. No checks are done at runtime.

# Important Notes
- Introduces new keyword - `private` - a reserved keyword.
- Modules that have `private` keyword as the first statement are declared as *private* (Project private)
- Public module cannot have private submodules and vice versa.
- This would require runtime access checks
- See #7088 for the specification.
2023-10-04 10:33:10 +00:00

1.3 KiB

layout title category tags order
section-summary Enso's Semantics semantics
semantics
readme
0

Enso's Semantics

Much like we have specifications for the syntax and the type system in Enso, we also need a specification of the language semantics. These documents specify the executable semantics of the Enso language.

The actionables for this section are:

  • As we make more semantic determinations about the language these should be written down here.

This specification is broken down into the following sections:

  • Bindings: The semantics of Enso's binding expressions.
  • Diagnostics: The semantics of Enso's executable compiler diagnostics.
  • Dispatch: The semantics of Enso's dispatch system.
  • Errors: The semantics of Enso's various error systems.
  • Evaluation: Enso's evaluation semantics, including those of suspended computations.
  • Modules: The semantics of Enso's modules.
  • Scoping: Enso's scoping and identifier resolution rules.
  • Encapsulation: The semantics of Enso's encapsulation system - access restriction.