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
Copy file name to clipboardExpand all lines: rfcs/0017-incremental-build.md
+18-17Lines changed: 18 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,21 +93,21 @@ The cache consists of a `cache-info.json` file with the below data structure and
93
93
},
94
94
"resourcesRead": {
95
95
"/resources/project/namespace/Component.js": {
96
-
"md5": "d41d8cd98f00b204e9899998ecf8427e",
96
+
"sha256": "d41d8cd98f00b204e9899998ecf8427e",
97
97
"lastModified": 1734005532120
98
98
}
99
99
},
100
100
"resourcesWritten": {
101
101
"/resources/project/namespace/Component.js": {
102
-
"md5": "c1c77edc5c689a471b12fe8ba79c51d1",
102
+
"sha256": "c1c77edc5c689a471b12fe8ba79c51d1",
103
103
"lastModified": 1734005532120
104
104
}
105
105
}
106
106
}
107
107
}],
108
108
"sourceMetadata": {
109
109
"/resources/project/namespace/Component.js": {
110
-
"md5": "d41d8cd98f00b204e9800998ecf8427e",
110
+
"sha256": "d41d8cd98f00b204e9800998ecf8427e",
111
111
"lastModified": 1734005532120
112
112
}
113
113
}
@@ -116,7 +116,7 @@ The cache consists of a `cache-info.json` file with the below data structure and
116
116
117
117
**cacheKey**
118
118
119
-
The cache key can be used to identify the cache. It shall be based on the project's name and version as well as a SHA-256 hash of the versions of the relevant UI5 Tooling modules (`@ui5/project`, `@ui5/builder`
119
+
The cache key can be used to identify the cache. It shall be based on the project's name and version as well as a SHA256 hash of the versions of the relevant UI5 Tooling modules (`@ui5/project`, `@ui5/builder`
120
120
`@ui5/fs`), the names and versions of the project's dependencies and the current build configuration (ui5.yaml + CLI parameters). This shall allow the UI5 Tooling to determine whether the cache is still valid or not.
121
121
122
122
**taskCache**
@@ -213,9 +213,9 @@ After a *project* has finished building, a list of all the modified resource is
213
213
214
214

215
215
216
-
### Task Purging
216
+
### Cache Purging
217
217
218
-
**TOOD**A mechanism to purge unused cache on disk is required. The cache can grow very large and consume a lot of disk space. The latest PoC produced cache entries with a size ranging from few kilobytes for applications up to 70 MB for framework libraries like sap.ui.core or sap.m.
218
+
A mechanism to purge unused cache on disk is required. The cache can grow very large and consume a lot of disk space. The latest PoC produced cache entries with a size ranging from few kilobytes for applications up to 70 MB for framework libraries like sap.ui.core or sap.m.
219
219
220
220
This should probably use some sort of LRU-cache to purge unused cache entries dynamically. The same mechanism could be applied to the npm artifacts downloaded by UI5 Tooling.
221
221
@@ -264,15 +264,16 @@ An alternative to using the incremental build in the UI5 Tooling server would be
264
264
265
265
## Unresolved Questions and Bikeshedding
266
266
267
-
*Adapt tasks to use new cache API
268
-
*Clarify cache key
269
-
* Current POC: project version + dependency versions + build config + UI5 Tooling module versions
270
-
* How to distinguish from pre-built projects (with project manifest)
271
-
* Pre-built UI5 libraries become especially important with this concept. Otherwise consumers will always have to build framework libraries, even in the server
272
-
* Include resource tags in cache
273
-
* Measure performance in BAS
274
-
* Compress cache to reduce memory pressure
275
-
* Allow tasks to store additional information in the cache
276
-
* Some tasks might be relevant for the server only (e.g. code coverage)
267
+
*Measure performance in BAS. Find out whether this approach results in acceptable performance.
268
+
*How to distinguish projects with build cache from pre-built projects (with project manifest)
269
+
* Cache related topics
270
+
* Clarify cache key
271
+
* Current POC: project version + dependency versions + build config + UI5 Tooling module versions
272
+
* Include resource tags in cache
273
+
* Compress cache to reduce memory pressure
274
+
* Allow tasks to store additional information in the cache
275
+
* Cache Purging
276
+
* Some tasks might be relevant for the server only (e.g. code coverage), come up with a way to configure that
277
277
* What if a task ceases to create a resource because of a change in another resource? The previously created version of the resource would still be used from the cache
278
-
* Test with current custom tasks
278
+
* Test with selected (community) custom tasks
279
+
* With this concept, providing pre-built UI5 libraries becomes especially important. Otherwise consumers will always have to locally build framework libraries, even in the server
0 commit comments