Skip to content
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

fix: Delete obsolete platform-compatibility-test #2419

Merged
merged 1 commit into from
Aug 27, 2024

Conversation

erights
Copy link
Contributor

@erights erights commented Aug 19, 2024

Closes: #2418
Refs: #2417 #1308

Description

Adapted from #2419 (review) below

The platform compatibility test specifically validates that SES works on Node.js 12 and can be deleted since it has vanished into history. Node.js 12 required special consideration because of its experimental ESM support. Delete the test:platform-compatibility script in the ses package.json, as well as the test/package fixture in ci.yml

Immediate motivation explained in #2418 , #2417 broken the platform-compatibility-test tests because it depends on the platform providing either Array.prototype.transfer or structuredClone. Node supports transfer starting with Node 22, but supports structuredClone starting in Node 18. That should be fine, since that is our declared support floor. This PR changes our one known remaining dependence on Node 12.

Security Considerations

none

Scaling Considerations

none

Documentation Considerations

none beyond the need to explain our platform requirements, which this PR does not change.

Testing Considerations

The point. This PR only affects tests, not production code.

Reviewers, should this PR be labeled test: instead of fix:?

Compatibility and Upgrade Considerations

After this PR, we will no longer notice further breakage on Node < 18. That fits with our declared support floor.

@erights erights changed the base branch from master to markm-repair-arraybuffer-transfer August 19, 2024 20:46
@erights erights changed the title Markm repair arraybuffer transfer 2 fix: depend on Node 18 rather than Node 12 Aug 19, 2024
@erights erights requested a review from kriskowal August 19, 2024 20:48
@erights erights force-pushed the markm-repair-arraybuffer-transfer-2 branch from 6d1b625 to b324de6 Compare August 19, 2024 22:19
@erights erights changed the base branch from markm-repair-arraybuffer-transfer to master August 19, 2024 22:20
@erights erights marked this pull request as ready for review August 19, 2024 22:33
@erights erights force-pushed the markm-repair-arraybuffer-transfer-2 branch from b324de6 to fc32323 Compare August 22, 2024 01:05
Copy link
Member

@kriskowal kriskowal left a comment

Choose a reason for hiding this comment

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

The platform compatibility test specifically validates that SES works on Node.js 12 and can be deleted since it has vanished into history. Node.js 12 required special consideration because of its experimental ESM support. I would not mind following that down to the roots: The test:platform-compatibility script in the ses package.json can be deleted, as well as the test/package fixture.

@erights erights force-pushed the markm-repair-arraybuffer-transfer-2 branch from fc32323 to 4825656 Compare August 26, 2024 20:30
@erights erights requested a review from kriskowal August 26, 2024 20:30
@erights
Copy link
Contributor Author

erights commented Aug 26, 2024

The platform compatibility test specifically validates that SES works on Node.js 12 and can be deleted since it has vanished into history. Node.js 12 required special consideration because of its experimental ESM support. I would not mind following that down to the roots: The test:platform-compatibility script in the ses package.json can be deleted, as well as the test/package fixture.

Done. PTAL

@erights erights changed the title fix: depend on Node 18 rather than Node 12 fix: Delete obsolete platform-compatibility-test Aug 27, 2024
@erights erights force-pushed the markm-repair-arraybuffer-transfer-2 branch from a3840c7 to ca4b5fb Compare August 27, 2024 21:09
@erights erights enabled auto-merge (squash) August 27, 2024 21:11
@erights erights merged commit 61660da into master Aug 27, 2024
15 checks passed
@erights erights deleted the markm-repair-arraybuffer-transfer-2 branch August 27, 2024 21:19
erights added a commit that referenced this pull request Sep 4, 2024
Staged on #2419 

Closes: #XXXX
Refs: #2414 #2418 #2419 

## Description

#2414  by itself does not work on Node 18 and Node 20 because
- those platforms do not have `Array.prototype.transfer`, so #2414 must
use `structuredClone` instead
- `structuredClone` does exist on Node >= 18, so it should be on
supported platforms (though see #2418 ). However, `structuredClone`
itself is dangerous and so must not be added to the shared intrinsics.
As a result, in #2414 , when `@endo/pass-style` is initialized in a
created compartment, it fails to find either `Array.prototype.transfer`
and `structuredClone

To solve this, @kriskowal suggested that we also shim
`Array.prototype.transfer` if needed during `lockdown`, along with other
repairs. We are avoiding similarly shimming
`Array.prototype.transferToImmutable` because it is not yet standard.
But `Array.prototype.transfer` is standard, and so `lockdown` can
globally shim it before hardening the shared intrinsics.

This PR implements @kriskowal 's suggestion.

### Security Considerations

none
### Scaling Considerations

by itself, none
### Documentation Considerations

nothing signicant.
### Testing Considerations

See #2418 . Aside from that, none
### Compatibility and Upgrade Considerations

On platforms with neither `Array.prototype.transfer` nor a global
`structuredClone`, the ses-shim will *currently* not install an
emulation of `Array.prototype.transfer`. However, once we verify that
endo is not intended to support platforms without both, we may change
lockdown to throw, failing to lock down.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The ses-shim tests on Node 12 despite our min support being Node 18
2 participants