enso/docs/distribution
Hubert Plociniczak d59714a29d
Support module imports using a qualified name (#3608)
This change allows for importing modules using a qualified name and deals with any conflicts on the way.
Given a module C defined at `A/B/C.enso` with
```
type C
type C a
```
it is now possible to import it as
```
import project.A
...
val x = A.B.C 10
```

Given a module located at `A/B/C/D.enso`, we will generate
intermediate, synthetic, modules that only import and export the successor module along the path.
For example, the contents of a synthetic module B will look like
```
import <namespace>.<pkg-name>.A.B.C
export <namespace>.<pkg-name>.A.B.C
```
If module B is defined already by the developer, the compiler will _inject_ the above statements to the IR.

Also removed the last elements of some lowercase name resolution that managed to survive recent
changes (`Meta.Enso_Project` would now be ambiguous with `enso_project` method).

Finally, added a pass that detects shadowing of the synthetic module by the type defined along the path.
We print a warning in such a situation.

Related to https://www.pivotaltracker.com/n/projects/2539304

# Important Notes
There was an additional request to fix the annoying problem with `from` imports that would always bring
the module into the scope. The changes in stdlib demonstrate how it is now possible to avoid the workaround of
```
from X.Y.Z as Z_Module import A, B
```
(i.e. `as Z_Module` part is almost always unnecessary).
2022-07-29 14:19:07 +00:00
..
bundles.md Better component handling in the project manager (#1399) 2021-01-15 15:26:51 +00:00
distribution.md Editions Integration (#1832) 2021-07-08 15:38:20 +02:00
fallback-launcher-release-infrastructure.md Better component handling in the project manager (#1399) 2021-01-15 15:26:51 +00:00
launcher-cli.md Fallback for Launcher Upgrades (#1139) 2020-09-14 11:05:37 +02:00
launcher.md Implement Launcher Self-Update (#1125) 2020-09-09 15:37:26 +02:00
licenses.md Forking Language Server in the Project Manager (#1305) 2020-12-02 16:56:47 +01:00
nightly.md Fix Nightly Workflows and Update Release Policy (#1845) 2021-07-10 01:10:31 +02:00
packaging.md Support module imports using a qualified name (#3608) 2022-07-29 14:19:07 +00:00
README.md Add a workflow for building nightly releases (#1689) 2021-05-05 11:58:14 +01:00
release-policy.md Nightly proccess preparations: Setting Enso version through the environment (#3241) 2022-02-07 15:14:32 +01:00
standard-libraries.md various default branch switch - related updates 2021-11-01 01:37:30 +01:00

layout title category tags order
section-summary Enso Distribution distribution
distribution
readme
0

Enso Distribution

Documents in this section deal with the process of packaging both Enso and its dependencies, and Enso projects for use by our users.

  • Distribution: Information on how we distribute Enso to our users, and for use by the IDE.
  • Packaging: Information on the structure of an Enso project/package.
  • Release Policy: Information on the release policy for Enso and this repository.
  • Launcher: Information on the design of Enso launcher, the tool for launching various components and managing Enso versions.
  • Launcher CLI: Explanation of the command-line interface of the launcher.
  • Licenses: Information on gathering license information of dependencies included in the distribution.
  • Fallback Launcher Release Infrastructure: Explanation of the fallback infrastructure that can be enabled to keep launcher updates functioning even if the primary release provider stops working.
  • Standard Libraries: A brief explanation of the standard libraries for Enso.
  • Bundles An explanation of distributed bundles that contain all components necessary to run Enso out of the box.
  • Nightly Description of the infrastructure related to the nightly builds.