You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feature Name: (fill me in with a unique ident, my_awesome_feature)
Start Date: (fill me in with today's date, YYYY-MM-DD)
Rspack Issue: speedy-js/rspack#0000 Issue name should be Tracking issue of <Fill in the RFC title above>
Summary
A module graph is a type of graph to describe the relationship between modules. The RFC mainly focused on creating a module graph and how it will be implemented with the current architecture of Rspack.
Motivation
The current module graph implementation is a mix of the old and new Webpack implementation and results in several problems:
The unclearness of the lifecycle: The module creation task is mixed with the module build task. With the active task counter, It will be quite hard to detect whether a module is built or is just been discovered lately.
The hardness of debugging and snapshot testing: On top of the first reason, the connections between modules are hardly helpful for being debugged or snapshotted for testing and the new module graph implementation should support clearer debugging and snapshot testing.
Not easy for bailing out: It's hard to bail out of the module graph creation and It is useful for incremental build.
Guide-level explanation
Glossary
ModuleGraph: A directed graph to describe the relationship between modules.
Module Dependency: The intermediate representation of the connection between modules. A module is a final representation of the resolved module dependency. The module dependency will have a reference to the parent module.
Module: The resolved module dependency will finally be converted into a module. Multiple module dependencies might be resolved to a single module.
ModuleGraphModule: The node of the module graph
ModuleGraphConnection: The edge of the module graph
Queue: A queue is an abstraction to describe the unfinished job related to module graph creation.
Module graph
Reference-level explanation
This is the technical portion of the RFC. Explain the design in sufficient detail that:
Its interaction with other features is clear.
It is reasonably clear how the feature would be implemented.
Corner cases are dissected by example.
The section should return to the examples given in the previous section, and explain more fully how the detailed proposal makes those examples work.
Drawbacks
Why should we not do this?
Rationale and alternatives
Why is this design the best in the space of possible designs?
What other designs have been considered and what is the rationale for not choosing them?
What is the impact of not doing this?
Prior art
Discuss prior art, both the good and the bad, in relation to this proposal.
A few examples of what this can include are:
For bundler proposals: Does this feature exist in other bundlers and how do these bundlers implement this? Describe how webpack works is recommended.
Papers: Are there any published papers or great posts that discuss this? If you have some relevant papers to refer to, this can serve as a more detailed theoretical background.
This section is intended to encourage you as an author to think about the lessons from other bundlers, provide readers of your RFC with a fuller picture.
If there is no prior art, that is fine - your ideas are interesting to us whether they are brand new or if it is an adaptation from other languages.
Note that while precedent set by other bundlers is some motivation, it does not on its own motivate an RFC.
Please also take into consideration that rust sometimes intentionally diverges from common bundler features.
Unresolved questions
What parts of the design do you expect to resolve through the RFC process before this gets merged?
What parts of the design do you expect to resolve through the implementation of this feature before stabilization?
What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
Future possibilities
Think about what the natural extension and evolution of your proposal would
be and how it would affect the bundler and project as a whole in a holistic
way. Try to use this section as a tool to more fully consider all possible
interactions with the project and bundler in your proposal.
Also consider how this all fits into the roadmap for the project
and of the relevant sub-team.
This is also a good place to "dump ideas", if they are out of scope for the
RFC you are writing but otherwise related.
If you have tried and cannot think of any future possibilities,
you may simply state that you cannot think of anything.
Note that having something written down in the future-possibilities section
is not a reason to accept the current or a future RFC; such notes should be
in the section on motivation or rationale in this or subsequent RFCs.
The section merely provides additional information.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
my_awesome_feature
)Tracking issue of <Fill in the RFC title above>
Summary
A module graph is a type of graph to describe the relationship between modules. The RFC mainly focused on creating a module graph and how it will be implemented with the current architecture of Rspack.
Motivation
The current module graph implementation is a mix of the old and new Webpack implementation and results in several problems:
Guide-level explanation
Glossary
Module graph
Reference-level explanation
This is the technical portion of the RFC. Explain the design in sufficient detail that:
The section should return to the examples given in the previous section, and explain more fully how the detailed proposal makes those examples work.
Drawbacks
Why should we not do this?
Rationale and alternatives
Prior art
Discuss prior art, both the good and the bad, in relation to this proposal.
A few examples of what this can include are:
This section is intended to encourage you as an author to think about the lessons from other bundlers, provide readers of your RFC with a fuller picture.
If there is no prior art, that is fine - your ideas are interesting to us whether they are brand new or if it is an adaptation from other languages.
Note that while precedent set by other bundlers is some motivation, it does not on its own motivate an RFC.
Please also take into consideration that rust sometimes intentionally diverges from common bundler features.
Unresolved questions
Future possibilities
Think about what the natural extension and evolution of your proposal would
be and how it would affect the bundler and project as a whole in a holistic
way. Try to use this section as a tool to more fully consider all possible
interactions with the project and bundler in your proposal.
Also consider how this all fits into the roadmap for the project
and of the relevant sub-team.
This is also a good place to "dump ideas", if they are out of scope for the
RFC you are writing but otherwise related.
If you have tried and cannot think of any future possibilities,
you may simply state that you cannot think of anything.
Note that having something written down in the future-possibilities section
is not a reason to accept the current or a future RFC; such notes should be
in the section on motivation or rationale in this or subsequent RFCs.
The section merely provides additional information.
Beta Was this translation helpful? Give feedback.
All reactions