-
Notifications
You must be signed in to change notification settings - Fork 230
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/master' into fix_command_suggestion
- Loading branch information
Showing
84 changed files
with
1,744 additions
and
5,696 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Layout of the `.dart_tool/pub` folder | ||
|
||
The pub client creates `.dart_tool/package_config.json` as described by | ||
[https://github.com/dart-lang/language/blob/main/accepted/2.8/language-versioning/package-config-file-v2.md]. | ||
|
||
But furthermore pub can use a folder called `.dart_tool/pub` for storing | ||
artifacts. The organization of that folder is what this document is trying to describe. | ||
|
||
The information in this document is informational, and can be used for | ||
understanding the cache, but we strongly encourage all manipulation of the | ||
`.dart_tool/pub` folder happens though the `dart pub`/`flutter pub` commands to | ||
avoid relying on accidental properties that might be broken in the future. | ||
|
||
## Precompilation cache | ||
|
||
```tree | ||
.dart_tool/ | ||
├── package_config.json | ||
├── pub | ||
│ ├── bin | ||
│ │ ├── pub | ||
│ │ │ └── pub.dart-3.1.0.snapshot.incremental | ||
│ │ └── test | ||
│ │ └── test.dart-3.2.0-36.0.dev.snapshot | ||
``` | ||
|
||
When `dart run <package>:<executable>` is called, pub will try to find `<executable>` in | ||
the package `<package>` and compile it as a "dill" file (using | ||
`package:frontend_server_client`). | ||
|
||
The output will be stored in The dill file will be stored in | ||
`.dart_tool/pub/bin/<package>/<executable>.dart-<sdk-version>.snapshot`. | ||
|
||
This can be used to run the executable by invoking (done implicitly by `dart run`): | ||
|
||
``` | ||
dart .dart_tool/pub/bin/<package>/<executable>.dart-<sdk-version>.snapshot | ||
``` | ||
|
||
But the dill-file is also fed to the compiler for incremental compilation. This | ||
can in many cases greatly speed up the compilation when no change has happened. | ||
|
||
If the compilation fails, pub avoids leaving a `.snapshot` file, but instead leaves a | ||
`.dart_tool/pub/bin/<package>/<executable>.dart-<sdk-version>.snapshot.incremental` file. | ||
|
||
This file cannot be executed. But it can still give the benefit of incremental | ||
compilation when changes have happened to the code. | ||
|
||
Earlier versions of the dart sdk would put this "incremental" file in: | ||
|
||
`.dart_tool/pub/incremental/<package>/<executable>.dart-incremental.dill`. | ||
|
||
As we don't expect many of those files to linger, we don't attempt to clean them up. | ||
|
||
We use the `<sdk-version>` to enable different sdk-versions to each have their | ||
own snapshot, so they don't step on each others toes when you switch from one | ||
sdk to another. The downside is that there is no mechanism for deleting | ||
snapshots of old sdks. We might want change that logic. | ||
|
||
One could argue that a "snapshot", is a different thing from a "dill" file in | ||
Dart VM terms. But both can be invoked by the VM, and run rather quickly without | ||
much more pre-compilation. In the future we might want to use true "snapshots" | ||
for executables from immutable packages, as they don't benefit from incremental compilation. |
This file contains 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
This file contains 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
Oops, something went wrong.