Make an RFC about module top-level effects
Nobody has claimed this yet.
- Dominant language
- Racket
- Stars
- 601
- Forks
- 74
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 5
Description
Module top-levels can have arbitrary effects. This makes it so that tree-shakers that eliminate the number of requires and definitions in a program can be very ineffective. For example, mutation is used to initialize object% so programs that are written in #lang racket must actually execute class system code even if they don't use it.
An alternative is to require top-levels to be effect-free but build in a notion of an initializer for a set of bindings where if the binding is going to be touched, the initialization code must be run. This would be like a promise that is run for effect.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named. Start by turning the issue's proposal about module top-level effects, tree-shaking, and binding initialization into an RFC that defines the intended semantics and tradeoffs; done means the RFC is written and the design is agreed upon.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100