Skip to content

[canary-base] test: update for new V8 serialization format#63475

Merged
joyeecheung merged 1 commit into
nodejs:canary-basefrom
joyeecheung:fix-serdes
May 28, 2026
Merged

[canary-base] test: update for new V8 serialization format#63475
joyeecheung merged 1 commit into
nodejs:canary-basefrom
joyeecheung:fix-serdes

Conversation

@joyeecheung

@joyeecheung joyeecheung commented May 21, 2026

Copy link
Copy Markdown
Member

V8 bumped its wire-format version from 0x0f to 0x10. Update the expected hex in test-v8-serdes, and derive the v8 header bytes dynamically in test-runner-v8-deserializer so it tracks future bumps automatically.

Fixes: nodejs/node-v8#311

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/test_runner

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. test Issues and PRs related to the tests. labels May 21, 2026
`;

const desStr = 'ff0f6f2203666f6f5e007b01';
const desStr = 'ff106f2203666f6f5e007b01';

@joyeecheung joyeecheung May 21, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I figured it might be worth it to keep this one as a semver-major signal, as the message above indicates. But on a side note this might be worth to fold into nodejs/TSC#1852 as well..

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@jasnell

jasnell commented May 22, 2026

Copy link
Copy Markdown
Member

Just a side note... these version bumps can be a bit problematic for folks who use the serialization api to store persistently to disk. In Workers we have a patch to allow the version to be set explicitly for both deserialization and serialization. We haven't yet tried to upstream them but we certainly could.

@joyeecheung

joyeecheung commented May 25, 2026

Copy link
Copy Markdown
Member Author

I think if V8 really changes the format even just for some values, there isn't really too much of a point to only alter the version without backporting changes that actually restore the old layout? It remains a separate question whether we can actually afford maintaining the older versions of layout on newer version of V8. Also V8's serialization format is guaranteed to be backward compatible i.e. V8 version n can handle serialization format n-1, n-2, etc. it's only that it won't work the other way around (version n-1 can't handle data serialized from version n), messing with the version can break the contract in subtle ways.

@joyeecheung

Copy link
Copy Markdown
Member Author

cc @nodejs/v8-update Planning to land this soon to unbreak canary..

V8 bumped its wire-format version from 0x0f to 0x10. Update the
expected hex in test-v8-serdes, and derive the v8 header bytes
dynamically in test-runner-v8-deserializer so it tracks future
bumps automatically.

Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
@joyeecheung joyeecheung merged commit 7b128ef into nodejs:canary-base May 28, 2026
14 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ci PRs that need a full CI run. test Issues and PRs related to the tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants