enso-org / enso

Hybrid visual and textual functional programming.
https://enso.org
Apache License 2.0
7.31k stars 317 forks source link

Disallow export all syntax #10258

Open Akirathan opened 2 weeks ago

Akirathan commented 2 weeks ago

Investigation of #10043 revealed that the exports resolution is very slow. The algorithm in ExportsResolution is complicated and slow. The main reason is how the export cycles are detected. If we disallow from ... export all (and obivously also from ... export all hiding ...) syntax, the algorithm could be vastly simplified. One of the main problems is how to export extension methods. Currently, extension methods are exported, e.g., via from Standard.Base.Data.Json.Extensions export all and there is no way how to export a single extension method.


As part of this task, let's export extension method via their names. For example:

Text.extension_method = ...
Json.extension_method = ...
extension_method = ...
from project.Module export extension_method

would export both Text.extension_method and Json.extension_method, as well as the static method defined on the module.


Blocks #10043

### Tasks
- [x] Extension methods can be exported via method name
- [x] Replace every occurence of `from ... export all` with explicit exports
- [ ] Simplify implementation of [BindingsMap.exportedSymbols](???).

Related:

enso-bot[bot] commented 2 weeks ago

Pavel Marek reports a new STANDUP for today (2024-06-12):

Progress: - Continue #9236 with disallowing from ... export all syntax (#10258) It should be finished by 2024-06-17.

enso-bot[bot] commented 2 weeks ago

Pavel Marek reports a new STANDUP for today (2024-06-13):

Progress: - Enabling exports of extension and conversion methods by name.

enso-bot[bot] commented 2 weeks ago

Pavel Marek reports a new STANDUP for today (2024-06-14):

Progress: - Fixed registering static methods in ModuleScope in IrToTruffle.

enso-bot[bot] commented 2 weeks ago

Pavel Marek reports a new STANDUP for today (2024-06-17):

Progress: - Fixing tests, seems like the changes necessary for this will be more intrusive than I originally expected. It should be finished by 2024-06-17.

enso-bot[bot] commented 1 week ago

Pavel Marek reports a new 🔴 DELAY for yesterday (2024-06-19):

Summary: There is 7 days delay in implementation of the Disallow export all syntax (#10258) task. It will cause 7 days delay for the delivery of this weekly plan.

Moreover, I am dealing with moving from an appartnment to a new house, so I am a bit busy with that.

Delay Cause: Bumped into some unexpected complications with the implementation.

enso-bot[bot] commented 1 week ago

Pavel Marek reports a new STANDUP for yesterday (2024-06-19):

Progress: - Still fixing a lot of tests and compilation errors.

enso-bot[bot] commented 1 week ago

Pavel Marek reports a new STANDUP for today (2024-06-20):

Progress: - Fixing GlobalNames pass to add more metadata for static method calls.

enso-bot[bot] commented 1 week ago

Pavel Marek reports a new 🔴 DELAY for today (2024-06-25):

Summary: There is 4 days delay in implementation of the Disallow export all syntax (#10258) task. It will cause 4 days delay for the delivery of this weekly plan.

Delay Cause: Need to tackle the follow-up PR for the same issue.

enso-bot[bot] commented 1 week ago

Pavel Marek reports a new STANDUP for today (2024-06-25):

Progress: - Merged the extension methods can be exported by name.

enso-bot[bot] commented 5 days ago

Pavel Marek reports a new STANDUP for today (2024-06-27):

Progress: - Struggling with fixes for exporting constructors from types.

enso-bot[bot] commented 4 days ago

Pavel Marek reports a new STANDUP for today (2024-06-28):

Progress: - Continue with the simplification of export resolution.

enso-bot[bot] commented 1 day ago

Pavel Marek reports a new 🔴 DELAY for today (2024-07-01):

Summary: There is 7 days delay in implementation of the Disallow export all syntax (#10258) task. It will cause 7 days delay for the delivery of this weekly plan.

Delay Cause: Still dealing with many failing tests.

enso-bot[bot] commented 1 day ago

Pavel Marek reports a new STANDUP for today (2024-07-01):

Progress: - Continue fixing tests