-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: big-endian support #3669
feat: big-endian support #3669
Conversation
What's the impact on perfs for little endian systems? |
The perf of the pnp hook seems to be approximately the same, I'm getting mixed results for some reason (master doesn't always beat this branch, but I'm not sure where that variation comes from): const fs = require(`fs/promises`);
const readManifest = async archivePath => {
let path = archivePath, listing;
while ((listing = await fs.readdir(path))) {
if (listing.includes(`package.json`))
return fs.readFile(`${path}/package.json`, `utf8`);
if (listing.length > 1)
throw new Error(`Assertion failed`);
path = `${path}/${listing[0]}`;
}
throw new Error(`Assertion failed`);
};
(async () => {
for (let i = 0; i < 10; ++i) {
for (const file of await fs.readdir(`./.yarn/cache`)) {
if (file.endsWith(`.zip`)) {
await readManifest(`./.yarn/cache/${file}`);
}
}
}
})(); Master: ➜ berry git:(master) ✗ hyperfine -w 1 'node -r ./.pnp.cjs test.js'
Benchmark #1: node -r ./.pnp.cjs test.js
Time (mean ± σ): 7.026 s ± 0.132 s [User: 7.312 s, System: 0.802 s]
Range (min … max): 6.745 s … 7.184 s 10 runs This PR: ➜ berry git:(paul/feat/big-endian-suport) ✗ hyperfine -w 1 'node -r ./.pnp.cjs test.js'
Benchmark #1: node -r ./.pnp.cjs test.js
Time (mean ± σ): 7.045 s ± 0.131 s [User: 7.326 s, System: 0.800 s]
Range (min … max): 6.872 s … 7.244 s 10 runs |
Some tests were using a timeout of 45000 so I bumped default LE timeout to 45000 too so that we don't have to special case BE and LE everywhere.
@paul-soporan Having this merged would be really great! Could you please help? |
@paul-soporan @arcanis gentle reminder! |
A simple 'thank you' from the mainframe community for developing this patch. :) I was able to build Grafana v8.5.0 with this. Great work! |
Everything on my side should be finished other than the occasional rebase, just waiting on a review now (CC @arcanis) |
What's the problem this PR addresses?
This PR adds big-endian support to Yarn.
Closes #2745.
How did you fix it?
Changes required to get Yarn to work on big-endian systems:
-s SUPPORT_BIG_ENDIAN=1
RecompilingRecompilingyoga-layout-prebuilt
with-s SUPPORT_BIG_ENDIAN=1
yoga-layout-prebuilt
requires recompilingyoga-layout
whose last release was 2 years ago. Unfortunately, compiling yoga is a nightmare because of changes in newer versions of node, clang, and possibly emscripten.)Checklist