Skip to content

Commit

Permalink
Merge branch 'v2' into gkong/reduce-cache
Browse files Browse the repository at this point in the history
  • Loading branch information
gorakong committed Nov 28, 2023
2 parents 50e5a1a + dc3d92b commit 6c484f7
Show file tree
Hide file tree
Showing 10 changed files with 171 additions and 90 deletions.
23 changes: 10 additions & 13 deletions packages/core/core/src/SymbolPropagation.js
Original file line number Diff line number Diff line change
Expand Up @@ -639,21 +639,18 @@ function propagateSymbolsUp(
assetGraph.rootNodeId,
'A root node is required to traverse',
);
let visited = new Set([rootNodeId]);
const walk = (nodeId: NodeId) => {

const nodeVisitor = nodeId => {
let node = nullthrows(assetGraph.getNode(nodeId));
let outgoing = assetGraph.getNodeIdsConnectedFrom(nodeId);

for (let childId of outgoing) {
if (!visited.has(childId)) {
visited.add(childId);
walk(childId);
let child = nullthrows(assetGraph.getNode(childId));
if (node.type === 'asset') {
invariant(child.type === 'dependency');
if (child.usedSymbolsUpDirtyUp) {
node.usedSymbolsUpDirty = true;
child.usedSymbolsUpDirtyUp = false;
}
let child = nullthrows(assetGraph.getNode(childId));
if (node.type === 'asset') {
invariant(child.type === 'dependency');
if (child.usedSymbolsUpDirtyUp) {
node.usedSymbolsUpDirty = true;
child.usedSymbolsUpDirtyUp = false;
}
}
}
Expand Down Expand Up @@ -698,7 +695,7 @@ function propagateSymbolsUp(
}
}
};
walk(rootNodeId);
assetGraph.postOrderDfsFast(nodeVisitor, rootNodeId);
}

let queue = dirtyDeps ?? changedDepsUsedSymbolsUpDirtyDownAssets;
Expand Down
61 changes: 61 additions & 0 deletions packages/core/graph/src/Graph.js
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,67 @@ export default class Graph<TNode, TEdgeType: number = 1> {
return null;
}

// A post-order implementation of dfsFast
postOrderDfsFast(
visit: GraphTraversalCallback<NodeId, TraversalActions>,
startNodeId: ?NodeId,
): void {
let traversalStartNode = nullthrows(
startNodeId ?? this.rootNodeId,
'A start node is required to traverse',
);
this._assertHasNodeId(traversalStartNode);

let visited;
if (!this._visited || this._visited.capacity < this.nodes.length) {
this._visited = new BitSet(this.nodes.length);
visited = this._visited;
} else {
visited = this._visited;
visited.clear();
}
this._visited = null;

let stopped = false;
let actions: TraversalActions = {
stop() {
stopped = true;
},
skipChildren() {
throw new Error(
'Calling skipChildren inside a post-order traversal is not allowed',
);
},
};

let queue = [traversalStartNode];
while (queue.length !== 0) {
let nodeId = queue[queue.length - 1];

if (!visited.has(nodeId)) {
visited.add(nodeId);

this.adjacencyList.forEachNodeIdConnectedFromReverse(nodeId, child => {
if (!visited.has(child)) {
queue.push(child);
}
return false;
});
} else {
queue.pop();
visit(nodeId, null, actions);

if (stopped) {
this._visited = visited;
return;
}
}
}

this._visited = visited;
return;
}

dfs<TContext>({
visit,
startNodeId,
Expand Down
5 changes: 4 additions & 1 deletion packages/core/workers/src/Worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,10 @@ export default class Worker extends EventEmitter {
let filteredArgs = [];
if (process.execArgv) {
filteredArgs = process.execArgv.filter(
v => !/^--(debug|inspect|no-opt|max-old-space-size=)/.test(v),
v =>
!/^--(debug|inspect|no-opt|max-old-space-size=|max-semi-space-size=|expose-gc)/.test(
v,
),
);

for (let i = 0; i < filteredArgs.length; i++) {
Expand Down
2 changes: 1 addition & 1 deletion packages/optimizers/css/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"@parcel/source-map": "^2.1.1",
"@parcel/utils": "2.10.3",
"browserslist": "^4.6.6",
"lightningcss": "^1.16.1",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
}
}
6 changes: 3 additions & 3 deletions packages/optimizers/css/src/CSSOptimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ Parcel\'s default CSS minifer changed from cssnano to lightningcss, but a "cssna
});

return {
contents: result.code,
contents: Buffer.from(result.code),
};
}
}
Expand All @@ -166,15 +166,15 @@ Parcel\'s default CSS minifer changed from cssnano to lightningcss, but a "cssna

let map;
if (result.map != null) {
let vlqMap = JSON.parse(result.map.toString());
let vlqMap = JSON.parse(Buffer.from(result.map).toString());
map = new SourceMap(options.projectRoot);
map.addVLQMap(vlqMap);
if (prevMap) {
map.extends(prevMap);
}
}

let contents = result.code;
let contents = Buffer.from(result.code);
if (bundle.env.sourceMap) {
let reference = await getSourceMapReference(map);
if (reference != null) {
Expand Down
9 changes: 3 additions & 6 deletions packages/optimizers/inline-requires/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,9 @@ Add this optimizer to run _first_ (before minification), for JS bundles.

```json
{
"optimizers": {
"*.js": {
"parcel-optimizer-inline-requires",
"..."
}
}
"optimizers": {
"*.js": ["@parcel/optimizer-inline-requires", "..."]
}
}
```

Expand Down
31 changes: 24 additions & 7 deletions packages/optimizers/inline-requires/src/InlineRequires.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,23 @@ type BundleConfig = {|

// $FlowFixMe not sure how to anotate the export here to make it work...
module.exports = new Optimizer<empty, BundleConfig>({
loadBundleConfig({bundleGraph, logger}): BundleConfig {
loadBundleConfig({bundle, bundleGraph, tracer}): BundleConfig {
if (publicIdToAssetSideEffects !== null) {
return {publicIdToAssetSideEffects};
}

publicIdToAssetSideEffects = new Map<string, SideEffectsMap>();
logger.verbose({
message: 'Generating publicIdToAssetSideEffects for require optimisation',
});

if (!bundle.env.shouldOptimize) {
return {publicIdToAssetSideEffects};
}

const measurement = tracer.createMeasurement(
'@parcel/optimizer-inline-requires',
'generatePublicIdToAssetSideEffects',
bundle.name,
);

bundleGraph.traverse(node => {
if (node.type === 'asset') {
const publicId = bundleGraph.getAssetPublicId(node.value);
Expand All @@ -32,17 +40,26 @@ module.exports = new Optimizer<empty, BundleConfig>({
});
}
});
logger.verbose({message: 'Generation complete'});

measurement && measurement.end();

return {publicIdToAssetSideEffects};
},

async optimize({bundle, options, contents, map, logger, bundleConfig}) {
if (options.mode !== 'production') {
async optimize({bundle, contents, map, tracer, logger, bundleConfig}) {
if (!bundle.env.shouldOptimize) {
return {contents, map};
}

try {
const measurement = tracer.createMeasurement(
'@parcel/optimizer-inline-requires',
'parse',
bundle.name,
);
const ast = await parse(contents.toString());
measurement && measurement.end();

const visitor = new RequireInliningVisitor({
bundle,
logger,
Expand Down
4 changes: 2 additions & 2 deletions packages/transformers/css/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@
"@parcel/source-map": "^2.1.1",
"@parcel/utils": "2.10.3",
"browserslist": "^4.6.6",
"lightningcss": "^1.16.1",
"lightningcss": "^1.22.1",
"nullthrows": "^1.1.1"
},
"devDependencies": {
"lightningcss-wasm": "^1.16.1"
"lightningcss-wasm": "^1.22.1"
},
"browser": {
"lightningcss": "./wasm-wrapper.js"
Expand Down
4 changes: 2 additions & 2 deletions packages/transformers/css/src/CSSTransformer.js
Original file line number Diff line number Diff line change
Expand Up @@ -175,10 +175,10 @@ export default (new Transformer({
}
}

asset.setBuffer(res.code);
asset.setBuffer(Buffer.from(res.code));

if (res.map != null) {
let vlqMap = JSON.parse(res.map.toString());
let vlqMap = JSON.parse(Buffer.from(res.map).toString());
let map = new SourceMap(options.projectRoot);
map.addVLQMap(vlqMap);

Expand Down
116 changes: 61 additions & 55 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8556,68 +8556,74 @@ liftoff@^3.1.0:
rechoir "^0.6.2"
resolve "^1.1.7"

lightningcss-darwin-arm64@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.16.1.tgz#f67287c500b96bc5d21e6d04de0e2607ff2784ff"
integrity sha512-/J898YSAiGVqdybHdIF3Ao0Hbh2vyVVj5YNm3NznVzTSvkOi3qQCAtO97sfmNz+bSRHXga7ZPLm+89PpOM5gAg==

lightningcss-darwin-x64@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.16.1.tgz#2dc89dd4e1eb3c39ca4abbeca769a276c206b038"
integrity sha512-vyKCNPRNRqke+5i078V+N0GLfMVLEaNcqIcv28hA/vUNRGk/90EDkDB9EndGay0MoPIrC2y0qE3Y74b/OyedqQ==

lightningcss-linux-arm-gnueabihf@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.16.1.tgz#9edacb0d9bd18fa1830a9d9f9ba00bdc9f8dabc9"
integrity sha512-0AJC52l40VbrzkMJz6qRvlqVVGykkR2MgRS4bLjVC2ab0H0I/n4p6uPZXGvNIt5gw1PedeND/hq+BghNdgfuPQ==

lightningcss-linux-arm64-gnu@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.16.1.tgz#b6986324d21de3813b84432b51c3e7b019dd2224"
integrity sha512-NqxYXsRvI3/Fb9AQLXKrYsU0Q61LqKz5It+Es9gidsfcw1lamny4lmlUgO3quisivkaLCxEkogaizcU6QeZeWQ==

lightningcss-linux-arm64-musl@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.16.1.tgz#d13a01ed19a72c99b4ef9c5b9d8ee0dcdc4bf3ed"
integrity sha512-VUPQ4dmB9yDQxpJF8/imtwNcbIPzlL6ArLHSUInOGxipDk1lOAklhUjbKUvlL3HVlDwD3WHCxggAY01WpFcjiA==

lightningcss-linux-x64-gnu@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.16.1.tgz#6c888ef4faac53333d6d2241da463c405b19ec79"
integrity sha512-A40Jjnbellnvh4YF+kt047GLnUU59iLN2LFRCyWQG+QqQZeXOCzXfTQ6EJB4yvHB1mQvWOVdAzVrtEmRw3Vh8g==

lightningcss-linux-x64-musl@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.16.1.tgz#20b51081679dd6b7271ce11df825dc536a0c617c"
integrity sha512-VZf76GxW+8mk238tpw0u9R66gBi/m0YB0TvD54oeGiOqvTZ/mabkBkbsuXTSWcKYj8DSrLW+A42qu+6PLRsIgA==

lightningcss-wasm@^1.16.1:
version "1.20.0"
resolved "https://registry.yarnpkg.com/lightningcss-wasm/-/lightningcss-wasm-1.20.0.tgz#863d8d92f950a22e13106ccda0e4a652fa72e87f"
integrity sha512-P3DhoMO+sI3iuGzXOeuXp91PPulL6O1KOmS5/gXwAAO/ZPyfBAO1mj29lIl+IDXg5jdKPvna+W2KckU/XQ2NOQ==
lightningcss-darwin-arm64@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.1.tgz#c03c042335fd7e9e1f45c977b39ff6886b8b064f"
integrity sha512-ldvElu+R0QimNTjsKpaZkUv3zf+uefzLy/R1R19jtgOfSRM+zjUCUgDhfEDRmVqJtMwYsdhMI2aJtJChPC6Osg==

lightningcss-darwin-x64@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.1.tgz#cdd380006a176b7faea83d1d642d9c5d65620f74"
integrity sha512-5p2rnlVTv6Gpw4PlTLq925nTVh+HFh4MpegX8dPDYJae+NFVjQ67gY7O6iHIzQjLipDiYejFF0yHrhjU3XgLBQ==

lightningcss-freebsd-x64@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.1.tgz#dd1b19308e3b0f24b6f79da10fd3975e5e02ebda"
integrity sha512-1FaBtcFrZqB2hkFbAxY//Pnp8koThvyB6AhjbdVqKD4/pu13Rl91fKt2N9qyeQPUt3xy7ORUvSO+dPk3J6EjXg==

lightningcss-linux-arm-gnueabihf@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.1.tgz#134cf9b41abd44ec53d8bae02c9f6e4f257eb617"
integrity sha512-6rub98tYGfE5I5j0BP8t/2d4BZyu1S7Iz9vUkm0H26snAFHYxLfj3RbQn0xHHIePSetjLnhcg3QlfwUAkD/FYg==

lightningcss-linux-arm64-gnu@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.1.tgz#33800723fb3d782c71cc131cf38ca678a0e9d1fa"
integrity sha512-nYO5qGtb/1kkTZu3FeTiM+2B2TAb7m2DkLCTgQIs2bk2o9aEs7I96fwySKcoHWQAiQDGR9sMux9vkV4KQXqPaQ==

lightningcss-linux-arm64-musl@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.1.tgz#cff86acaa98a0245add5a333098befc894802137"
integrity sha512-MCV6RuRpzXbunvzwY644iz8cw4oQxvW7oer9xPkdadYqlEyiJJ6wl7FyJOH7Q6ZYH4yjGAUCvxDBxPbnDu9ZVg==

lightningcss-linux-x64-gnu@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.1.tgz#3f68602228b49d661db0692548e061456b603ca2"
integrity sha512-RjNgpdM20VUXgV7us/VmlO3Vn2ZRiDnc3/bUxCVvySZWPiVPprpqW/QDWuzkGa+NCUf6saAM5CLsZLSxncXJwg==

lightningcss-linux-x64-musl@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.1.tgz#e713e56798f8a50df3e3f285ef102191a01ef951"
integrity sha512-ZgO4C7Rd6Hv/5MnyY2KxOYmIlzk4rplVolDt3NbkNR8DndnyX0Q5IR4acJWNTBICQ21j3zySzKbcJaiJpk/4YA==

lightningcss-wasm@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-wasm/-/lightningcss-wasm-1.22.1.tgz#120053c7aaabc72d1d31cdec192e267af5f389eb"
integrity sha512-GzY3oTNtkPhDVt1AY0H0ZEWdcAjTOD1Y72nJlEO1JSRgA4UTUDhrklzdMhSLTyVHTpVAEfCxnD6fULBIbwgT/A==
dependencies:
napi-wasm "^1.0.1"

lightningcss-win32-x64-msvc@1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.16.1.tgz#7546b4dca78314b1d2701ed220cb6e50b8c6b5ca"
integrity sha512-Djy+UzlTtJMayVJU3eFuUW5Gdo+zVTNPJhlYw25tNC9HAoMCkIdSDDrGsWEdEyibEV7xwB8ySTmLuxilfhBtgg==
lightningcss-win32-x64-msvc@1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.1.tgz#48b141554bf05cc4338f064b6892dd5dd16185ef"
integrity sha512-4pozV4eyD0MDET41ZLHAeBo+H04Nm2UEYIk5w/ts40231dRFV7E0cjwbnZvSoc1DXFgecAhiC0L16ruv/ZDCpg==

lightningcss@^1.16.1:
version "1.16.1"
resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.16.1.tgz#b5a16632b6824d023af2fb7d35b1c6fc42608bc6"
integrity sha512-zU8OTaps3VAodmI2MopfqqOQQ4A9L/2Eo7xoTH/4fNkecy6ftfiGwbbRMTQqtIqJjRg3f927e+lnyBBPhucY1Q==
lightningcss@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.22.1.tgz#8108ddecb2e859032bdd99908abd2b37515b1750"
integrity sha512-Fy45PhibiNXkm0cK5FJCbfO8Y6jUpD/YcHf/BtuI+jvYYqSXKF4muk61jjE8YxCR9y+hDYIWSzHTc+bwhDE6rQ==
dependencies:
detect-libc "^1.0.3"
optionalDependencies:
lightningcss-darwin-arm64 "1.16.1"
lightningcss-darwin-x64 "1.16.1"
lightningcss-linux-arm-gnueabihf "1.16.1"
lightningcss-linux-arm64-gnu "1.16.1"
lightningcss-linux-arm64-musl "1.16.1"
lightningcss-linux-x64-gnu "1.16.1"
lightningcss-linux-x64-musl "1.16.1"
lightningcss-win32-x64-msvc "1.16.1"
lightningcss-darwin-arm64 "1.22.1"
lightningcss-darwin-x64 "1.22.1"
lightningcss-freebsd-x64 "1.22.1"
lightningcss-linux-arm-gnueabihf "1.22.1"
lightningcss-linux-arm64-gnu "1.22.1"
lightningcss-linux-arm64-musl "1.22.1"
lightningcss-linux-x64-gnu "1.22.1"
lightningcss-linux-x64-musl "1.22.1"
lightningcss-win32-x64-msvc "1.22.1"

lilconfig@^2.0.3:
version "2.0.3"
Expand Down

0 comments on commit 6c484f7

Please sign in to comment.