Add scaffolding for native symbol prop#1010
Merged
Conversation
🦋 Changeset detectedLatest commit: 6031d45 The changes in this PR will be included in the next version bump. This PR includes changesets to release 114 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
Rust Package Changeset Check✅ The |
Contributor
📊 Type Coverage ReportCoverage Comparison
Files with Most Type Issues (Top 15)
This report was generated by the Type Coverage GitHub Action |
Contributor
📊 Benchmark Results📊 Benchmark ResultsOverall Performance
🔍 Detailed Phase AnalysisThree.js Real Repository (JS)
Three.js Real Repository (V3)
💾 Unified Memory AnalysisThree.js Real Repository (JS) Memory Statistics
Sample Counts: JS: 14, Native: 277 Three.js Real Repository (V3) Memory Statistics
Sample Counts: JS: 14, Native: 253 🖥️ Environment
|
added 20 commits
February 9, 2026 15:24
d730e39 to
6188cd5
Compare
mattcompiles
approved these changes
Feb 19, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
This is the very first piece of re-writing symbol propagation in Rust. It contains mostly wiring, and just enough functionality to not be nonsense.
This also sets up the progressive symbol prop pattern, where we track symbols as we go through the build step rather than doing the two pass pattern afterwards.
Changes
The essence of this change is that we now have a
SymbolTrackerthat makes up part of the build process.As we run a build, and discover assets, the result of that asset returns the dependencies that that asset will require (which then will need transforming etc) and the symbols that the asset exports.
We feed both of these pieces of information to the symbol tracker. It takes the dependencies and registers them as
SymbolRequirements, some symbol that we'll need but have not located. Then it takes the new symbols from the asset and, if it's not here as a re-export, attempts to see what symbol requirements can be satisfied with this new symbol. Further documentation of the process incoming once the functionality is a bit more fleshed out.At the moment it only handles the basic case of a regular re-export,
export { mySymbol } from './dep';. Renames, star re-exports, and circular deps are all on the todo list. There are also a bunch ofpanic!s in there, those will be handled properly in further iterations.Proper changes
prev_symbol_trackerfor incremental builds, but that hasn't been implemented yetrustSymbolTrackerBits and bobs
is_weak. This didn't exist in JS, so we had hard coded it to false, but it's real useful for the symbol trackerDependencyIdhas been added to matchAssetIdEqas well so that they're compatible with HashMapsChecklist