ttsc 0.31.0 → 0.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cmd/platform/main.go +2 -2
- package/internal/sourceprocess/contain_windows.go +10 -13
- package/internal/sourceprocess/started_windows.go +41 -0
- package/internal/sourceprocess/windows_started_publication_distinguishes_pending_from_refusal_test.go +76 -0
- package/internal/watchhelper/run.go +30 -20
- package/internal/watchhelper/run_other.go +4 -4
- package/internal/watchhelper/run_windows.go +471 -0
- package/internal/watchhelper/watchhelper.go +8 -2
- package/internal/watchhelper/windows_notifications_preserve_mutations_without_access_noise_test.go +506 -0
- package/lib/internal/nativeBinary.d.ts +3 -3
- package/lib/internal/nativeBinary.js +3 -3
- package/lib/plugin/internal/load/loadProjectPlugins.d.ts +12 -13
- package/lib/plugin/internal/load/loadProjectPlugins.js +61 -36
- package/lib/plugin/internal/load/loadProjectPlugins.js.map +1 -1
- package/lib/plugin/internal/source/GoEnvironmentReading.d.ts +42 -0
- package/lib/plugin/internal/source/GoEnvironmentReading.js +110 -0
- package/lib/plugin/internal/source/GoEnvironmentReading.js.map +1 -0
- package/lib/plugin/internal/source/NativeSourcePackages.d.ts +7 -7
- package/lib/plugin/internal/source/NativeSourcePackages.js +33 -20
- package/lib/plugin/internal/source/NativeSourcePackages.js.map +1 -1
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.d.ts +21 -0
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js +36 -0
- package/lib/plugin/internal/source/PluginBuildEnvironmentReadings.js.map +1 -1
- package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.d.ts +5 -3
- package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js +14 -8
- package/lib/plugin/internal/source/PluginBuildEnvironmentWitness.js.map +1 -1
- package/lib/plugin/internal/source/SourcePluginWorkspace.d.ts +50 -19
- package/lib/plugin/internal/source/SourcePluginWorkspace.js +109 -22
- package/lib/plugin/internal/source/SourcePluginWorkspace.js.map +1 -1
- package/lib/plugin/internal/source/buildSourcePlugin.d.ts +19 -16
- package/lib/plugin/internal/source/buildSourcePlugin.js +27 -22
- package/lib/plugin/internal/source/buildSourcePlugin.js.map +1 -1
- package/lib/plugin/internal/source/computeCacheKey.d.ts +4 -2
- package/lib/plugin/internal/source/computeCacheKey.js +15 -6
- package/lib/plugin/internal/source/computeCacheKey.js.map +1 -1
- package/lib/plugin/internal/source/hashPluginBuildEnvironment.js +2 -68
- package/lib/plugin/internal/source/hashPluginBuildEnvironment.js.map +1 -1
- package/lib/plugin/internal/source/pluginModuleReplaceDirectories.d.ts +6 -5
- package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js +10 -17
- package/lib/plugin/internal/source/pluginModuleReplaceDirectories.js.map +1 -1
- package/package.json +8 -8
- package/src/internal/nativeBinary.ts +3 -3
- package/src/plugin/internal/load/loadProjectPlugins.ts +209 -117
- package/src/plugin/internal/source/GoEnvironmentReading.ts +109 -0
- package/src/plugin/internal/source/NativeSourcePackages.ts +103 -43
- package/src/plugin/internal/source/PluginBuildEnvironmentReadings.ts +42 -0
- package/src/plugin/internal/source/PluginBuildEnvironmentWitness.ts +18 -8
- package/src/plugin/internal/source/SourcePluginWorkspace.ts +143 -25
- package/src/plugin/internal/source/buildSourcePlugin.ts +62 -34
- package/src/plugin/internal/source/computeCacheKey.ts +26 -8
- package/src/plugin/internal/source/hashPluginBuildEnvironment.ts +8 -76
- package/src/plugin/internal/source/pluginModuleReplaceDirectories.ts +13 -25
|
@@ -2,20 +2,23 @@
|
|
|
2
2
|
* Share generated Go workspace policy between package selection and building.
|
|
3
3
|
*
|
|
4
4
|
* Package selection must use the builder's overlays, generated workspace and
|
|
5
|
-
* selected tool rather than an ancestor go.work found in a source directory.
|
|
6
|
-
*
|
|
7
|
-
* and effective environment;
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* selected tool rather than an ancestor go.work found in a source directory. A
|
|
6
|
+
* load shares early replacement watch, package and build manifest records under
|
|
7
|
+
* its pinned tool and effective environment; identical current bytes in
|
|
8
|
+
* independently proven scratch inputs share their Go parse. A moved native tool
|
|
9
|
+
* clears that reader's syntax memo, and a toolchain retry starts a new reader
|
|
10
|
+
* scope. Each caller has a diagnostic view over the shared native reader state;
|
|
11
|
+
* one plugin cannot inherit another plugin's failure label (#1720). Go supplies
|
|
12
|
+
* the workspace's required Go and toolchain directives. These reads preserve
|
|
13
|
+
* the existing installation/version and sequential-stability limits.
|
|
11
14
|
*
|
|
12
15
|
* @evidence contracts/common.md#principled-implementation Shared manifest acquisition, managed replacement admission, overlay filtering and Go-owned workspace version selection keep metadata and compilation under the same workspace policy; callers own source materialization and effective environment.
|
|
13
16
|
* @evidence contracts/common.md#clear-and-simple-design One namespace owns the generated workspace and its module reader, overlay discovery and Go launch diagnostics; no second manifest parser or build-tag interpreter is introduced.
|
|
14
17
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts Actual Go mod edit and work use commands interpret manifests; selected tool errors propagate and no static workspace version replaces Go's decision.
|
|
15
18
|
* @evidence contracts/common.md#meaningful-documentation Native prose explains shared policy and caller ownership; private helpers remain part of this operation's review surface.
|
|
16
19
|
* @evidence contracts/portability.md#os-neutral-implementation Native fs/path operations preserve path spelling and formatGoWorkPath owns Go syntax quoting; subprocesses use the existing native wrapper owner with hidden windows.
|
|
17
|
-
* @evidence contracts/performance.md#efficient-algorithms Workspace construction scans module and replacement populations; each
|
|
18
|
-
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
20
|
+
* @evidence contracts/performance.md#efficient-algorithms Workspace construction scans module and replacement populations; each reader reads current manifest bytes and memoizes equivalent Go syntax within its pinned native tool/load. Overlay discovery recursively scans admitted directories and sorts paths; native Go output and JSON parsing scale with complete bytes.
|
|
21
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Metadata and materialized builds share Go parsing only for identical current manifest bytes under the same pinned tool/effective environment. Independent materialization/content proof remains with each caller; tool movement clears syntax reuse and retries start another scope.
|
|
19
22
|
* @evidence contracts/performance.md#bound-retention-and-release-resources Readers retain module records only for their enclosing load or materialized build; command capture cleanup belongs to spawnGoTool and scratch lifetime belongs to the caller. Native commands can mutate Go-owned state and their selected-child completion does not prove arbitrary descendants retired.
|
|
20
23
|
*/
|
|
21
24
|
export declare namespace SourcePluginWorkspace {
|
|
@@ -33,7 +36,8 @@ export declare namespace SourcePluginWorkspace {
|
|
|
33
36
|
*/
|
|
34
37
|
export function materialize(source: string, scratch: string): void;
|
|
35
38
|
/**
|
|
36
|
-
* Write the native builder's generated workspace and let Go select its
|
|
39
|
+
* Write the native builder's generated workspace and let Go select its
|
|
40
|
+
* version.
|
|
37
41
|
*
|
|
38
42
|
* @evidence contracts/common.md#principled-implementation Actual manifest records drive managed overlay filtering and replacement admission; Go work use supplies required directives.
|
|
39
43
|
* @evidence contracts/common.md#clear-and-simple-design The writer shares one reader across source/overlay queries and delegates manifest interpretation to Go.
|
|
@@ -51,6 +55,7 @@ export declare namespace SourcePluginWorkspace {
|
|
|
51
55
|
interface GoModInfo {
|
|
52
56
|
readonly modulePath: string | null;
|
|
53
57
|
readonly replacements: readonly GoModReplacement[];
|
|
58
|
+
readonly directives: NonNullable<GoModJson["Replace"]>;
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
61
|
* One selected-context manifest reader.
|
|
@@ -67,31 +72,57 @@ export declare namespace SourcePluginWorkspace {
|
|
|
67
72
|
export interface GoModReader {
|
|
68
73
|
/**
|
|
69
74
|
* Observe the module at this native directory within the reader context.
|
|
75
|
+
* The optional diagnostic owner overrides the creating caller's label only;
|
|
76
|
+
* it changes no selected-tool, environment or byte-content authority.
|
|
70
77
|
*
|
|
71
78
|
* @evidence contracts/common.md#principled-implementation The signature associates a native directory with the selected reader's Go-owned module and replacement observation.
|
|
72
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
79
|
+
* @evidence contracts/common.md#clear-and-simple-design A directory and optional diagnostic label expose manifest policy without treating the label as native cache authority.
|
|
73
80
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts The signature supplies no parser, alternate selection policy or stability certificate.
|
|
74
|
-
* @evidence contracts/common.md#meaningful-documentation Native prose states
|
|
81
|
+
* @evidence contracts/common.md#meaningful-documentation Native prose states selected-context result ownership and the optional caller label, which changes failure attribution only.
|
|
75
82
|
* @evidence contracts/portability.md#os-neutral-implementation The directory is a native filesystem path; its resolution belongs to the implementing reader.
|
|
76
83
|
* @evidence contracts/performance.md#efficient-algorithms A method signature executes no algorithm; createGoModReader owns acquisition and parsing.
|
|
77
84
|
* @evidence contracts/performance.md#reuse-equivalent-work Implementations supply observations within their selected tool/environment scope; this signature establishes no cross-context memo.
|
|
78
85
|
* @evidence contracts/performance.md#bound-retention-and-release-resources The signature acquires no resource; record retention belongs to the reader's enclosing load or materialized build.
|
|
79
86
|
*/
|
|
80
|
-
read(dir: string): GoModInfo;
|
|
87
|
+
read(dir: string, diagnosticPlugin?: string): GoModInfo;
|
|
88
|
+
}
|
|
89
|
+
interface GoModJson {
|
|
90
|
+
readonly Module?: {
|
|
91
|
+
readonly Path?: string;
|
|
92
|
+
};
|
|
93
|
+
readonly Require?: readonly {
|
|
94
|
+
readonly Path?: string;
|
|
95
|
+
readonly Version?: string;
|
|
96
|
+
}[];
|
|
97
|
+
readonly Replace?: readonly {
|
|
98
|
+
readonly Old?: {
|
|
99
|
+
readonly Path?: string;
|
|
100
|
+
readonly Version?: string;
|
|
101
|
+
};
|
|
102
|
+
readonly New?: {
|
|
103
|
+
readonly Path?: string;
|
|
104
|
+
readonly Version?: string;
|
|
105
|
+
};
|
|
106
|
+
}[];
|
|
81
107
|
}
|
|
82
108
|
/**
|
|
83
|
-
* Read
|
|
109
|
+
* Read current manifest bytes and share identical Go parses within one pinned
|
|
110
|
+
* selected-tool/load context, including copied scratch modules. An optional
|
|
111
|
+
* registry shares native reader state from the first watch query onward; its
|
|
112
|
+
* owner must keep one fixed effective environment and discard it on retry.
|
|
113
|
+
* Caller views share that native state and syntax, while each default
|
|
114
|
+
* diagnostic label remains with its current caller.
|
|
84
115
|
*
|
|
85
|
-
* @evidence contracts/common.md#principled-implementation Actual go mod edit JSON determines module/replacement identities;
|
|
86
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
116
|
+
* @evidence contracts/common.md#principled-implementation Actual go mod edit JSON determines module/replacement identities; current bytes, selected/dispatched-tool metadata and Go's environment-file witness qualify reuse under the existing metadata-distinguishability premise. Environment values are copied at reader creation. Missing go.mod returns the existing empty module observation, and moving tool/manifest inputs cannot publish a parsed record.
|
|
117
|
+
* @evidence contracts/common.md#clear-and-simple-design One factory acquires load-owned native reader state by selected tool; a thin caller view forwards its diagnostic label without duplicating the byte-content map. Current reads and post-parse byte/tool comparisons qualify insertion.
|
|
87
118
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts No custom Go manifest parser or global context-insensitive memo is introduced.
|
|
88
119
|
* @evidence contracts/common.md#meaningful-documentation Native prose states this operation's authority and delegated boundaries; fields retain separate native comments.
|
|
89
120
|
* @evidence contracts/portability.md#os-neutral-implementation Native path resolution and temporary cwd avoid deep Windows working-directory limits; the selected tool handles manifest syntax.
|
|
90
|
-
* @evidence contracts/performance.md#efficient-algorithms Each distinct
|
|
91
|
-
* @evidence contracts/performance.md#reuse-equivalent-work The caller may share this reader only within one load and the same pinned tool/effective environment;
|
|
92
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources The map
|
|
121
|
+
* @evidence contracts/performance.md#efficient-algorithms Reader acquisition performs a selected-tool registry lookup; every nonmissing read qualifies tool/environment metadata and reads current manifest bytes. A cold or stale witness first observes the selected launcher; an unavailable or nonfile launcher skips optional environment acquisition and permits only the actual uncached parse attempt. An observed file lends its same pre-read stat to the witness before acquiring current Go values and GOENV evidence through the common reader, without a GOROOT walk. Only complete native GOENV/GOROOT locations qualify syntax sharing; a dispatched tool is witnessed before parsing. Unavailable native environment acquisition disables syntax sharing while preserving actual parse success or failure. Each distinct byte string that earns stable successful syntax in that tool epoch runs Go mod edit and complete JSON parsing once, then rechecks bytes/tool metadata before caching; copied manifests share that parse. Failed queries remain uncached and report the current caller's diagnostic label.
|
|
122
|
+
* @evidence contracts/performance.md#reuse-equivalent-work The caller may share this reader only within one load and the same pinned tool/effective environment; parsed syntax is not cross-load or native containment authority. Caller views share native state while preserving failure attribution; diagnostic labels are not syntax cache inputs.
|
|
123
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources The map retains distinct manifest bytes and parsed syntax for its caller's load/build lifetime; process/output capture cleanup remains delegated.
|
|
93
124
|
*/
|
|
94
|
-
export function createGoModReader(goBinary: string, pluginName: string, env: NodeJS.ProcessEnv): GoModReader;
|
|
125
|
+
export function createGoModReader(goBinary: string, pluginName: string, env: NodeJS.ProcessEnv, readers?: Map<string, GoModReader>): GoModReader;
|
|
95
126
|
/**
|
|
96
127
|
* Describe a failed Go launch without confusing missing cwd and missing tool.
|
|
97
128
|
*
|
|
@@ -8,29 +8,34 @@ const node_fs_1 = __importDefault(require("node:fs"));
|
|
|
8
8
|
const node_os_1 = __importDefault(require("node:os"));
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
10
|
const OwnedSynchronousProcess_1 = require("../../../internal/OwnedSynchronousProcess");
|
|
11
|
+
const GoEnvironmentReading_1 = require("./GoEnvironmentReading");
|
|
11
12
|
const GoSourceInputs_1 = require("./GoSourceInputs");
|
|
12
|
-
const
|
|
13
|
+
const PluginBuildEnvironmentWitness_1 = require("./PluginBuildEnvironmentWitness");
|
|
13
14
|
const SourcePluginAdmission_1 = require("./SourcePluginAdmission");
|
|
15
|
+
const copiesPluginSourceEntry_1 = require("./copiesPluginSourceEntry");
|
|
14
16
|
const formatGoWorkPath_1 = require("./formatGoWorkPath");
|
|
15
17
|
const spawnGoTool_1 = require("./spawnGoTool");
|
|
16
18
|
/**
|
|
17
19
|
* Share generated Go workspace policy between package selection and building.
|
|
18
20
|
*
|
|
19
21
|
* Package selection must use the builder's overlays, generated workspace and
|
|
20
|
-
* selected tool rather than an ancestor go.work found in a source directory.
|
|
21
|
-
*
|
|
22
|
-
* and effective environment;
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
22
|
+
* selected tool rather than an ancestor go.work found in a source directory. A
|
|
23
|
+
* load shares early replacement watch, package and build manifest records under
|
|
24
|
+
* its pinned tool and effective environment; identical current bytes in
|
|
25
|
+
* independently proven scratch inputs share their Go parse. A moved native tool
|
|
26
|
+
* clears that reader's syntax memo, and a toolchain retry starts a new reader
|
|
27
|
+
* scope. Each caller has a diagnostic view over the shared native reader state;
|
|
28
|
+
* one plugin cannot inherit another plugin's failure label (#1720). Go supplies
|
|
29
|
+
* the workspace's required Go and toolchain directives. These reads preserve
|
|
30
|
+
* the existing installation/version and sequential-stability limits.
|
|
26
31
|
*
|
|
27
32
|
* @evidence contracts/common.md#principled-implementation Shared manifest acquisition, managed replacement admission, overlay filtering and Go-owned workspace version selection keep metadata and compilation under the same workspace policy; callers own source materialization and effective environment.
|
|
28
33
|
* @evidence contracts/common.md#clear-and-simple-design One namespace owns the generated workspace and its module reader, overlay discovery and Go launch diagnostics; no second manifest parser or build-tag interpreter is introduced.
|
|
29
34
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts Actual Go mod edit and work use commands interpret manifests; selected tool errors propagate and no static workspace version replaces Go's decision.
|
|
30
35
|
* @evidence contracts/common.md#meaningful-documentation Native prose explains shared policy and caller ownership; private helpers remain part of this operation's review surface.
|
|
31
36
|
* @evidence contracts/portability.md#os-neutral-implementation Native fs/path operations preserve path spelling and formatGoWorkPath owns Go syntax quoting; subprocesses use the existing native wrapper owner with hidden windows.
|
|
32
|
-
* @evidence contracts/performance.md#efficient-algorithms Workspace construction scans module and replacement populations; each
|
|
33
|
-
* @evidence contracts/performance.md#reuse-equivalent-work
|
|
37
|
+
* @evidence contracts/performance.md#efficient-algorithms Workspace construction scans module and replacement populations; each reader reads current manifest bytes and memoizes equivalent Go syntax within its pinned native tool/load. Overlay discovery recursively scans admitted directories and sorts paths; native Go output and JSON parsing scale with complete bytes.
|
|
38
|
+
* @evidence contracts/performance.md#reuse-equivalent-work Metadata and materialized builds share Go parsing only for identical current manifest bytes under the same pinned tool/effective environment. Independent materialization/content proof remains with each caller; tool movement clears syntax reuse and retries start another scope.
|
|
34
39
|
* @evidence contracts/performance.md#bound-retention-and-release-resources Readers retain module records only for their enclosing load or materialized build; command capture cleanup belongs to spawnGoTool and scratch lifetime belongs to the caller. Native commands can mutate Go-owned state and their selected-child completion does not prove arbitrary descendants retired.
|
|
35
40
|
*/
|
|
36
41
|
var SourcePluginWorkspace;
|
|
@@ -60,7 +65,8 @@ var SourcePluginWorkspace;
|
|
|
60
65
|
}
|
|
61
66
|
SourcePluginWorkspace.materialize = materialize;
|
|
62
67
|
/**
|
|
63
|
-
* Write the native builder's generated workspace and let Go select its
|
|
68
|
+
* Write the native builder's generated workspace and let Go select its
|
|
69
|
+
* version.
|
|
64
70
|
*
|
|
65
71
|
* @evidence contracts/common.md#principled-implementation Actual manifest records drive managed overlay filtering and replacement admission; Go work use supplies required directives.
|
|
66
72
|
* @evidence contracts/common.md#clear-and-simple-design The writer shares one reader across source/overlay queries and delegates manifest interpretation to Go.
|
|
@@ -132,32 +138,111 @@ var SourcePluginWorkspace;
|
|
|
132
138
|
];
|
|
133
139
|
}
|
|
134
140
|
/**
|
|
135
|
-
* Read
|
|
141
|
+
* Read current manifest bytes and share identical Go parses within one pinned
|
|
142
|
+
* selected-tool/load context, including copied scratch modules. An optional
|
|
143
|
+
* registry shares native reader state from the first watch query onward; its
|
|
144
|
+
* owner must keep one fixed effective environment and discard it on retry.
|
|
145
|
+
* Caller views share that native state and syntax, while each default
|
|
146
|
+
* diagnostic label remains with its current caller.
|
|
136
147
|
*
|
|
137
|
-
* @evidence contracts/common.md#principled-implementation Actual go mod edit JSON determines module/replacement identities;
|
|
138
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
148
|
+
* @evidence contracts/common.md#principled-implementation Actual go mod edit JSON determines module/replacement identities; current bytes, selected/dispatched-tool metadata and Go's environment-file witness qualify reuse under the existing metadata-distinguishability premise. Environment values are copied at reader creation. Missing go.mod returns the existing empty module observation, and moving tool/manifest inputs cannot publish a parsed record.
|
|
149
|
+
* @evidence contracts/common.md#clear-and-simple-design One factory acquires load-owned native reader state by selected tool; a thin caller view forwards its diagnostic label without duplicating the byte-content map. Current reads and post-parse byte/tool comparisons qualify insertion.
|
|
139
150
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts No custom Go manifest parser or global context-insensitive memo is introduced.
|
|
140
151
|
* @evidence contracts/common.md#meaningful-documentation Native prose states this operation's authority and delegated boundaries; fields retain separate native comments.
|
|
141
152
|
* @evidence contracts/portability.md#os-neutral-implementation Native path resolution and temporary cwd avoid deep Windows working-directory limits; the selected tool handles manifest syntax.
|
|
142
|
-
* @evidence contracts/performance.md#efficient-algorithms Each distinct
|
|
143
|
-
* @evidence contracts/performance.md#reuse-equivalent-work The caller may share this reader only within one load and the same pinned tool/effective environment;
|
|
144
|
-
* @evidence contracts/performance.md#bound-retention-and-release-resources The map
|
|
153
|
+
* @evidence contracts/performance.md#efficient-algorithms Reader acquisition performs a selected-tool registry lookup; every nonmissing read qualifies tool/environment metadata and reads current manifest bytes. A cold or stale witness first observes the selected launcher; an unavailable or nonfile launcher skips optional environment acquisition and permits only the actual uncached parse attempt. An observed file lends its same pre-read stat to the witness before acquiring current Go values and GOENV evidence through the common reader, without a GOROOT walk. Only complete native GOENV/GOROOT locations qualify syntax sharing; a dispatched tool is witnessed before parsing. Unavailable native environment acquisition disables syntax sharing while preserving actual parse success or failure. Each distinct byte string that earns stable successful syntax in that tool epoch runs Go mod edit and complete JSON parsing once, then rechecks bytes/tool metadata before caching; copied manifests share that parse. Failed queries remain uncached and report the current caller's diagnostic label.
|
|
154
|
+
* @evidence contracts/performance.md#reuse-equivalent-work The caller may share this reader only within one load and the same pinned tool/effective environment; parsed syntax is not cross-load or native containment authority. Caller views share native state while preserving failure attribution; diagnostic labels are not syntax cache inputs.
|
|
155
|
+
* @evidence contracts/performance.md#bound-retention-and-release-resources The map retains distinct manifest bytes and parsed syntax for its caller's load/build lifetime; process/output capture cleanup remains delegated.
|
|
145
156
|
*/
|
|
146
|
-
function createGoModReader(goBinary, pluginName, env) {
|
|
157
|
+
function createGoModReader(goBinary, pluginName, env, readers) {
|
|
158
|
+
const existing = readers?.get(goBinary);
|
|
159
|
+
if (existing !== undefined)
|
|
160
|
+
return {
|
|
161
|
+
read: (dir, diagnosticPlugin = pluginName) => existing.read(dir, diagnosticPlugin),
|
|
162
|
+
};
|
|
163
|
+
// WARNING (#1712): parse identical bytes once in this pinned tool/load
|
|
164
|
+
// context, including early replacement watch projection and copied scratch
|
|
165
|
+
// manifests. The optional registry belongs to one fixed effective environment
|
|
166
|
+
// and one load; it is never shared with a toolchain retry. Always read current bytes;
|
|
167
|
+
// a pathname or metadata-only memo misses manifest edits. Never promote
|
|
168
|
+
// this map to a process cache: tool/environment epochs change Go authority.
|
|
169
|
+
// Fixed variable strings do not freeze GOENV or a dispatched Go executable.
|
|
170
|
+
// Requalify their actual native evidence before every syntax hit; missing
|
|
171
|
+
// environment authority permits a fresh parse only, never positive reuse.
|
|
172
|
+
// WARNING (#1720): diagnostic names are per caller, not a syntax/cache input.
|
|
173
|
+
// Shared views must forward their current label to every failed native read.
|
|
147
174
|
const cache = new Map();
|
|
148
|
-
|
|
149
|
-
|
|
175
|
+
const environment = { ...env };
|
|
176
|
+
let toolWitness;
|
|
177
|
+
const reader = {
|
|
178
|
+
read(dir, diagnosticPlugin = pluginName) {
|
|
150
179
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
151
180
|
const resolved = node_path_1.default.resolve(dir);
|
|
152
|
-
const
|
|
181
|
+
const manifest = node_path_1.default.join(resolved, "go.mod");
|
|
182
|
+
let bytes;
|
|
183
|
+
try {
|
|
184
|
+
bytes = node_fs_1.default.readFileSync(manifest);
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
if (error.code === "ENOENT")
|
|
188
|
+
return emptyGoModInfo();
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
if (toolWitness === undefined ||
|
|
192
|
+
!PluginBuildEnvironmentWitness_1.PluginBuildEnvironmentWitness.holds(toolWitness)) {
|
|
193
|
+
cache.clear();
|
|
194
|
+
const witness = new Map();
|
|
195
|
+
let launcher;
|
|
196
|
+
try {
|
|
197
|
+
launcher = node_fs_1.default.statSync(goBinary, { bigint: true });
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Unavailable metadata cannot qualify optional syntax reuse.
|
|
201
|
+
}
|
|
202
|
+
if (launcher?.isFile() === true)
|
|
203
|
+
PluginBuildEnvironmentWitness_1.PluginBuildEnvironmentWitness.add(witness, goBinary, launcher);
|
|
204
|
+
// GOENV can change toolchain selection without changing env strings.
|
|
205
|
+
// Share its existing native discovery owner; do not scan GOROOT here.
|
|
206
|
+
// Do not launch a missing/unobservable tool twice just to learn that
|
|
207
|
+
// optional cache qualification is unavailable (#1712). The actual
|
|
208
|
+
// mod-edit attempt below still owns its current failure or success.
|
|
209
|
+
const observed = launcher?.isFile() === true
|
|
210
|
+
? GoEnvironmentReading_1.GoEnvironmentReading.read(goBinary, node_os_1.default.tmpdir(), environment, ["GOROOT"], witness)
|
|
211
|
+
: undefined;
|
|
212
|
+
if (typeof observed?.GOROOT === "string" &&
|
|
213
|
+
node_path_1.default.isAbsolute(observed.GOROOT))
|
|
214
|
+
PluginBuildEnvironmentWitness_1.PluginBuildEnvironmentWitness.add(witness, node_path_1.default.join(observed.GOROOT, "bin", process.platform === "win32" ? "go.exe" : "go"));
|
|
215
|
+
const complete = typeof observed?.GOROOT === "string" &&
|
|
216
|
+
node_path_1.default.isAbsolute(observed.GOROOT) &&
|
|
217
|
+
typeof observed.GOENV === "string" &&
|
|
218
|
+
(observed.GOENV === "off" || node_path_1.default.isAbsolute(observed.GOENV));
|
|
219
|
+
toolWitness =
|
|
220
|
+
complete && PluginBuildEnvironmentWitness_1.PluginBuildEnvironmentWitness.holds(witness)
|
|
221
|
+
? witness
|
|
222
|
+
: undefined;
|
|
223
|
+
}
|
|
224
|
+
// UTF-8 decoding is lossy for malformed input. Only identical bytes
|
|
225
|
+
// can share Go syntax, even when Go serializes two inputs identically.
|
|
226
|
+
const byteKey = bytes.toString("base64");
|
|
227
|
+
const cached = cache.get(byteKey);
|
|
153
228
|
if (cached !== undefined) {
|
|
154
229
|
return cached;
|
|
155
230
|
}
|
|
156
|
-
const info = readGoModInfo(resolved, goBinary,
|
|
157
|
-
|
|
231
|
+
const info = readGoModInfo(resolved, goBinary, diagnosticPlugin, environment);
|
|
232
|
+
if (!node_fs_1.default.readFileSync(manifest).equals(bytes))
|
|
233
|
+
throw new Error(`ttsc: go.mod changed while Go was reading ${manifest}`);
|
|
234
|
+
if (toolWitness !== undefined &&
|
|
235
|
+
!PluginBuildEnvironmentWitness_1.PluginBuildEnvironmentWitness.holds(toolWitness))
|
|
236
|
+
throw new Error(`ttsc: Go tool or environment changed while reading ${manifest}`);
|
|
237
|
+
// An unavailable environment observation can still execute a fresh Go
|
|
238
|
+
// parse, but it cannot authorize sharing that result on another call.
|
|
239
|
+
if (toolWitness !== undefined)
|
|
240
|
+
cache.set(byteKey, info);
|
|
158
241
|
return info;
|
|
159
242
|
},
|
|
160
243
|
};
|
|
244
|
+
readers?.set(goBinary, reader);
|
|
245
|
+
return reader;
|
|
161
246
|
}
|
|
162
247
|
SourcePluginWorkspace.createGoModReader = createGoModReader;
|
|
163
248
|
function readGoModInfo(dir, goBinary, pluginName, env) {
|
|
@@ -192,6 +277,7 @@ var SourcePluginWorkspace;
|
|
|
192
277
|
}
|
|
193
278
|
return {
|
|
194
279
|
modulePath: json.Module?.Path ?? null,
|
|
280
|
+
directives: json.Replace ?? [],
|
|
195
281
|
replacements: (json.Replace ?? [])
|
|
196
282
|
.map(jsonReplacementToGoModReplacement)
|
|
197
283
|
.filter((replacement) => replacement !== null),
|
|
@@ -200,6 +286,7 @@ var SourcePluginWorkspace;
|
|
|
200
286
|
function emptyGoModInfo() {
|
|
201
287
|
return {
|
|
202
288
|
modulePath: null,
|
|
289
|
+
directives: [],
|
|
203
290
|
replacements: [],
|
|
204
291
|
};
|
|
205
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourcePluginWorkspace.js","sourceRoot":"","sources":["../../../../src/plugin/internal/source/SourcePluginWorkspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SourcePluginWorkspace.js","sourceRoot":"","sources":["../../../../src/plugin/internal/source/SourcePluginWorkspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { ITtscBuildContributor } from "./ITtscBuildContributor";
|
|
2
2
|
import type { SourceBuildFilesystemOperations } from "./SourceBuildFilesystemOperations";
|
|
3
|
+
import { SourcePluginWorkspace } from "./SourcePluginWorkspace";
|
|
3
4
|
/**
|
|
4
5
|
* Build one Go source plugin into a cached executable.
|
|
5
6
|
*
|
|
6
7
|
* `opts.env` is the effective environment for this build; the caller merges
|
|
7
|
-
* inherited and constructor layers using native environment-name identity so
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* inherited and constructor layers using native environment-name identity so a
|
|
9
|
+
* programmatic `TtscCompiler` instance can pin its own Go toolchain
|
|
10
|
+
* (`TTSC_GO_BINARY`), Go build cache (`TTSC_GO_CACHE_DIR`), and Go build
|
|
11
|
+
* variables (`GOFLAGS`, `CGO_*`, …) without mutating the shared `process.env`.
|
|
12
|
+
* CLI callers omit it and inherit `process.env`, so ambient behavior is
|
|
13
|
+
* unchanged.
|
|
13
14
|
*
|
|
14
15
|
* The cache key includes source and toolchain readings. Before publication the
|
|
15
16
|
* scratch inputs are compared with their recorded digests and the external
|
|
@@ -25,16 +26,16 @@ import type { SourceBuildFilesystemOperations } from "./SourceBuildFilesystemOpe
|
|
|
25
26
|
* Optional loader-required package ownership enters the key. Its cold producer
|
|
26
27
|
* admits the entry and linked sources through Go metadata in the actual
|
|
27
28
|
* materialized workspace before compilation; legacy cache artifacts have a
|
|
28
|
-
* different key. Existing binary hits trust the cache producer and key rather
|
|
29
|
-
* executable bytes. Default caches are managed locally, while
|
|
30
|
-
* retain caller-managed pruning policy. Every returned cache key
|
|
31
|
-
* reader token retained by this process until exit; registration
|
|
32
|
-
* builder/collector lease, and other consumers register independent
|
|
33
|
-
* Failure to establish ownership propagates. Private opt-in tracing
|
|
34
|
-
* mandatory key-creation and pre-build witness gates and adds one
|
|
35
|
-
* observation after Go returns. That diagnostic read adds metadata
|
|
36
|
-
* publication permission. A discarded epoch is separately recorded
|
|
37
|
-
* bounded build owner starts again.
|
|
29
|
+
* different key. Existing binary hits trust the cache producer and key rather
|
|
30
|
+
* than rehashing executable bytes. Default caches are managed locally, while
|
|
31
|
+
* explicit roots retain caller-managed pruning policy. Every returned cache key
|
|
32
|
+
* registers a reader token retained by this process until exit; registration
|
|
33
|
+
* shares the builder/collector lease, and other consumers register independent
|
|
34
|
+
* readers. Failure to establish ownership propagates. Private opt-in tracing
|
|
35
|
+
* records the mandatory key-creation and pre-build witness gates and adds one
|
|
36
|
+
* diagnostic observation after Go returns. That diagnostic read adds metadata
|
|
37
|
+
* work, not publication permission. A discarded epoch is separately recorded
|
|
38
|
+
* when the bounded build owner starts again.
|
|
38
39
|
*
|
|
39
40
|
* Explicit worker scopes check cancellation between build phases, copied source
|
|
40
41
|
* entries and native commands, including reader admission and final
|
|
@@ -81,6 +82,8 @@ export declare function buildSourcePlugin(opts: {
|
|
|
81
82
|
* built from.
|
|
82
83
|
*/
|
|
83
84
|
sourceDigests?: Map<string, string>;
|
|
85
|
+
/** Pinned-tool manifest readers shared only by this loader request. */
|
|
86
|
+
goModReaders?: Map<string, SourcePluginWorkspace.GoModReader>;
|
|
84
87
|
ttscVersion: string;
|
|
85
88
|
tsgoVersion: string;
|
|
86
89
|
}): string;
|
|
@@ -12,15 +12,15 @@ const OwnedSynchronousProcess_1 = require("../../../internal/OwnedSynchronousPro
|
|
|
12
12
|
const SourceNativeRetirement_1 = require("../../../internal/SourceNativeRetirement");
|
|
13
13
|
const createCanonicalTempDirectory_1 = require("../../../internal/createCanonicalTempDirectory");
|
|
14
14
|
const runHoldingLock_1 = require("../../../internal/runHoldingLock");
|
|
15
|
-
const NativeSourcePackages_1 = require("./NativeSourcePackages");
|
|
16
|
-
const SourcePluginWorkspace_1 = require("./SourcePluginWorkspace");
|
|
17
15
|
const GoSourceInputs_1 = require("./GoSourceInputs");
|
|
18
16
|
const GoToolResolution_1 = require("./GoToolResolution");
|
|
17
|
+
const NativeSourcePackages_1 = require("./NativeSourcePackages");
|
|
19
18
|
const PluginBinaryUse_1 = require("./PluginBinaryUse");
|
|
20
19
|
const PluginBuildEnvironmentWitness_1 = require("./PluginBuildEnvironmentWitness");
|
|
21
20
|
const PluginBuildLockProtocol_1 = require("./PluginBuildLockProtocol");
|
|
22
21
|
const SourceBuildCacheLayout_1 = require("./SourceBuildCacheLayout");
|
|
23
22
|
const SourcePluginAdmission_1 = require("./SourcePluginAdmission");
|
|
23
|
+
const SourcePluginWorkspace_1 = require("./SourcePluginWorkspace");
|
|
24
24
|
const acquirePluginBuildLock_1 = require("./acquirePluginBuildLock");
|
|
25
25
|
const computeCacheKey_1 = require("./computeCacheKey");
|
|
26
26
|
const copiesPluginSourceEntry_1 = require("./copiesPluginSourceEntry");
|
|
@@ -42,12 +42,12 @@ const withGoBuildCacheLease_1 = require("./withGoBuildCacheLease");
|
|
|
42
42
|
* Build one Go source plugin into a cached executable.
|
|
43
43
|
*
|
|
44
44
|
* `opts.env` is the effective environment for this build; the caller merges
|
|
45
|
-
* inherited and constructor layers using native environment-name identity so
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
45
|
+
* inherited and constructor layers using native environment-name identity so a
|
|
46
|
+
* programmatic `TtscCompiler` instance can pin its own Go toolchain
|
|
47
|
+
* (`TTSC_GO_BINARY`), Go build cache (`TTSC_GO_CACHE_DIR`), and Go build
|
|
48
|
+
* variables (`GOFLAGS`, `CGO_*`, …) without mutating the shared `process.env`.
|
|
49
|
+
* CLI callers omit it and inherit `process.env`, so ambient behavior is
|
|
50
|
+
* unchanged.
|
|
51
51
|
*
|
|
52
52
|
* The cache key includes source and toolchain readings. Before publication the
|
|
53
53
|
* scratch inputs are compared with their recorded digests and the external
|
|
@@ -63,16 +63,16 @@ const withGoBuildCacheLease_1 = require("./withGoBuildCacheLease");
|
|
|
63
63
|
* Optional loader-required package ownership enters the key. Its cold producer
|
|
64
64
|
* admits the entry and linked sources through Go metadata in the actual
|
|
65
65
|
* materialized workspace before compilation; legacy cache artifacts have a
|
|
66
|
-
* different key. Existing binary hits trust the cache producer and key rather
|
|
67
|
-
* executable bytes. Default caches are managed locally, while
|
|
68
|
-
* retain caller-managed pruning policy. Every returned cache key
|
|
69
|
-
* reader token retained by this process until exit; registration
|
|
70
|
-
* builder/collector lease, and other consumers register independent
|
|
71
|
-
* Failure to establish ownership propagates. Private opt-in tracing
|
|
72
|
-
* mandatory key-creation and pre-build witness gates and adds one
|
|
73
|
-
* observation after Go returns. That diagnostic read adds metadata
|
|
74
|
-
* publication permission. A discarded epoch is separately recorded
|
|
75
|
-
* bounded build owner starts again.
|
|
66
|
+
* different key. Existing binary hits trust the cache producer and key rather
|
|
67
|
+
* than rehashing executable bytes. Default caches are managed locally, while
|
|
68
|
+
* explicit roots retain caller-managed pruning policy. Every returned cache key
|
|
69
|
+
* registers a reader token retained by this process until exit; registration
|
|
70
|
+
* shares the builder/collector lease, and other consumers register independent
|
|
71
|
+
* readers. Failure to establish ownership propagates. Private opt-in tracing
|
|
72
|
+
* records the mandatory key-creation and pre-build witness gates and adds one
|
|
73
|
+
* diagnostic observation after Go returns. That diagnostic read adds metadata
|
|
74
|
+
* work, not publication permission. A discarded epoch is separately recorded
|
|
75
|
+
* when the bounded build owner starts again.
|
|
76
76
|
*
|
|
77
77
|
* Explicit worker scopes check cancellation between build phases, copied source
|
|
78
78
|
* entries and native commands, including reader admission and final
|
|
@@ -100,7 +100,7 @@ function buildSourcePlugin(opts) {
|
|
|
100
100
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
101
101
|
const environmentDigests = new Map(opts.environmentDigests);
|
|
102
102
|
try {
|
|
103
|
-
const binary = buildSourcePluginAttempt(opts, env, sourceDigests, environmentDigests);
|
|
103
|
+
const binary = buildSourcePluginAttempt(attempt === 0 ? opts : { ...opts, goModReaders: undefined }, env, sourceDigests, environmentDigests);
|
|
104
104
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
105
105
|
for (const [directory, digest] of sourceDigests)
|
|
106
106
|
opts.sourceDigests?.set(directory, digest);
|
|
@@ -124,7 +124,9 @@ function buildSourcePlugin(opts) {
|
|
|
124
124
|
function buildSourcePluginAttempt(opts, env, sourceDigests, environmentDigests) {
|
|
125
125
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
126
126
|
const { dir, entry, source } = resolveSourceBuildTarget(opts);
|
|
127
|
-
const overlayDirs = [
|
|
127
|
+
const overlayDirs = [
|
|
128
|
+
...(opts.overlayDirs ?? SourcePluginWorkspace_1.SourcePluginWorkspace.findTtscOverlayDirs()),
|
|
129
|
+
].sort();
|
|
128
130
|
const contributors = opts.contributors ?? [];
|
|
129
131
|
const compiler = (0, resolveGoCompiler_1.resolveGoCompiler)(env);
|
|
130
132
|
const goBinary = GoToolResolution_1.GoToolResolution.resolveGoToolForBuild(compiler.binary, env, dir);
|
|
@@ -132,6 +134,7 @@ function buildSourcePluginAttempt(opts, env, sourceDigests, environmentDigests)
|
|
|
132
134
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
133
135
|
// The digest of every directory the key covers, as the key read it, which
|
|
134
136
|
// the build proves against what it compiled.
|
|
137
|
+
const goModReader = SourcePluginWorkspace_1.SourcePluginWorkspace.createGoModReader(goBinary, opts.pluginName, env, opts.goModReaders);
|
|
135
138
|
const environmentWitness = new Map();
|
|
136
139
|
const key = (0, computeCacheKey_1.computeCacheKey)({
|
|
137
140
|
contributors,
|
|
@@ -140,6 +143,7 @@ function buildSourcePluginAttempt(opts, env, sourceDigests, environmentDigests)
|
|
|
140
143
|
entry,
|
|
141
144
|
env,
|
|
142
145
|
environmentWitness,
|
|
146
|
+
goModReader,
|
|
143
147
|
filesystem: opts.filesystem,
|
|
144
148
|
goBinary,
|
|
145
149
|
overlayDirs,
|
|
@@ -236,6 +240,7 @@ function buildSourcePluginAttempt(opts, env, sourceDigests, environmentDigests)
|
|
|
236
240
|
env,
|
|
237
241
|
environmentWitness,
|
|
238
242
|
goBinary,
|
|
243
|
+
goModReader,
|
|
239
244
|
normalizeGoToolPermissions: compiler.bundled,
|
|
240
245
|
key,
|
|
241
246
|
keyedDigests: sourceDigests,
|
|
@@ -324,7 +329,7 @@ function compileSourcePlugin(opts) {
|
|
|
324
329
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
325
330
|
SourcePluginWorkspace_1.SourcePluginWorkspace.materialize(opts.dir, scratchDir);
|
|
326
331
|
requireKeyedSource(opts.dir, scratchDir, opts.keyedDigests, opts.pluginName);
|
|
327
|
-
const replacements = (0, pluginModuleReplaceDirectories_1.pluginModuleReplaceDirectories)(opts.dir, opts.env, opts.goBinary);
|
|
332
|
+
const replacements = (0, pluginModuleReplaceDirectories_1.pluginModuleReplaceDirectories)(opts.dir, opts.env, opts.goBinary, opts.goModReader);
|
|
328
333
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
329
334
|
// Every source the build would otherwise read in place, an overlay and
|
|
330
335
|
// each replace target outside the module, is copied and proven against the
|
|
@@ -340,7 +345,7 @@ function compileSourcePlugin(opts) {
|
|
|
340
345
|
...replacement,
|
|
341
346
|
directory: external.get(node_path_1.default.resolve(replacement.directory)),
|
|
342
347
|
})), scratchDir, opts.goBinary, opts.env);
|
|
343
|
-
const goModReader =
|
|
348
|
+
const goModReader = opts.goModReader;
|
|
344
349
|
OwnedSynchronousProcess_1.OwnedSynchronousProcess.checkpoint();
|
|
345
350
|
if (opts.contributors.length > 0) {
|
|
346
351
|
mergeContributors({
|