Skip to content

chore: Release 2025-06-02#2838

Merged
kriskowal merged 2 commits into
masterfrom
release-2025-06-02-20-36-20
Jun 2, 2025
Merged

chore: Release 2025-06-02#2838
kriskowal merged 2 commits into
masterfrom
release-2025-06-02-20-36-20

Conversation

@kriskowal

Copy link
Copy Markdown
Member

ses v1.13.0

  • Two new stackFiltering: options are added

    • 'omit-frames' -- Only omit likely uninteresting frames. Keep original paths.
    • 'shorten-paths' -- Only shorten paths to text likely clickable in an IDE

    This fills out the matrix of what should have been orthogonal options. The existing 'concise' setting both omits likely uninteresting frames and shortens their paths. The existing 'verbose' setting does neither.

  • Uses the @endo/immutable-arraybuffer shim to add ArrayBuffer.p.immutable, ArrayBuffer.p.transferToImmutable, and ArrayBuffer.p.sliceToImmutable to ses, in order to emulate the Immutable ArrayBuffer proposal. These make an ArrayBuffer-like object whose contents cannot be mutated. However, due to limitations of the shim

    • Unlike ArrayBuffer and SharedArrayBuffer this shim's ArrayBuffer-like object cannot be transfered or cloned between JS threads.
    • Unlike ArrayBuffer and SharedArrayBuffer, this shim's ArrayBuffer-like object cannot be used as the backing store of TypeArrays or DataViews.
    • The shim depends on the platform providing either structuredClone or Array.prototype.transfer. Node <= 16 and provides neither, causing the shim to fail to initialize, and therefore SES to fail to initialize on such platforms.
    • Current Hermes has even stronger constraints, lacking structuredClone, transfer, private fields, and even class syntax. This requires other coping strategies. See feat(immutable-arraybuffer): sliceToImmutable Hermes ponyfill and shim #2785
    • Even after the upcoming transferToImmutable proposal is implemented by the platform, the current code will still replace it with the shim implementation, in accord with shim best practices. See feat(ses): ArrayBuffer.p.transferToImmutable #2311 (comment) . It will require a later manual step to delete the shim or have it avoid overriting a platform implementation, after manual analysis of the compat implications.
  • The evalTaming option 'safe-eval' now can only throw error SES_DIRECT_EVAL. This allows SES to initialize with 'unsafe-eval' or 'no-eval' on hosts with no direct eval available such as Hermes for a successful lockdown that tolerates it's language features.

    The module name ses/hermes can now be required to call lockdown and repairIntrinsics only, Compartment is not yet available.

    It is currently compatible with Hermes v0.12.0, we plan to support v0.13.0 then subsequent Hermes tags or side-by-side versions built for React Native depending on ecosystem usage and official support, then Static Hermes when released.

    Also ses/hermes can now be hooked into bundlers such as Metro to run Hardened JS.

@endo/compartment-mapper v1.6.1

  • The dev flag for mapNodeModules() is no longer deprecated. The concept of a "condition" (conditional exports) is disinct from the flag's original meaning (instructs mapNodeModules() to consider devDependencies when graphing packages). Users who have switched to using a development condition for dev's purpose are encouraged to switch back to using the dev flag instead. In a future release, the presence of a development condition will no longer mimic an enabled dev flag and will only be considered when evaluating conditional exports.

@endo/evasive-transform v2.0.0

  • The sourceType option is now restricted to script and module only. Function signature types have changed to be more precise.

@endo/bundle-source v4.1.0

  • The 'endoZipBase64' moduleFormat now utilizes the importHook option to exit dependencies whose specifiers return a truthy value.

@endo/import-bundle v1.5.0

  • The 'endoZipBase64' moduleFormat now utilizes the importHook option.

@kriskowal kriskowal requested a review from mhofman June 2, 2025 20:57

@mhofman mhofman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks mechanical

kriskowal added 2 commits June 2, 2025 15:54
 - @endo/base64@1.0.10
 - @endo/benchmark@0.1.2
 - @endo/bundle-source@4.1.0
 - @endo/captp@4.4.6
 - @endo/check-bundle@1.0.15
 - @endo/cjs-module-analyzer@1.0.10
 - @endo/cli@2.3.9
 - @endo/common@1.2.11
 - @endo/compartment-mapper@1.6.1
 - @endo/daemon@2.4.9
 - @endo/env-options@1.1.9
 - @endo/errors@1.2.11
 - @endo/eslint-plugin@2.3.1
 - @endo/evasive-transform@2.0.0
 - @endo/eventual-send@1.3.2
 - @endo/exo@1.5.10
 - @endo/far@1.1.12
 - @endo/immutable-arraybuffer@1.1.0
 - @endo/import-bundle@1.5.0
 - @endo/init@1.1.10
 - @endo/lockdown@1.0.16
 - @endo/lp32@1.1.11
 - @endo/marshal@1.7.0
 - @endo/memoize@1.1.11
 - @endo/module-source@1.3.1
 - @endo/nat@5.1.1
 - @endo/netstring@1.0.16
 - @endo/ocapn@0.2.0
 - @endo/panic@0.2.0
 - @endo/pass-style@1.6.0
 - @endo/patterns@1.6.0
 - @endo/promise-kit@1.1.11
 - ses@1.13.0
 - @endo/ses-ava@1.3.0
 - @endo/skel@1.1.11
 - @endo/stream@1.2.11
 - @endo/stream-node@1.1.11
 - @endo/stream-types-test@1.0.16
 - @endo/test262-runner@0.1.46
 - @endo/trampoline@1.0.4
 - @endo/where@1.0.10
 - @endo/zip@1.0.10
@kriskowal kriskowal force-pushed the release-2025-06-02-20-36-20 branch from 756f051 to 571b780 Compare June 2, 2025 23:44
@kriskowal kriskowal merged commit cecb45f into master Jun 2, 2025
16 checks passed
@kriskowal kriskowal deleted the release-2025-06-02-20-36-20 branch June 2, 2025 23:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants