Skip to content

Releases: endojs/endo

2025-01-23

24 Jan 02:12
Compare
Choose a tag to compare

ses v1.11.0

  • Adds support for dynamic import in conjunction with an update to @endo/module-source.

  • Specifying the long-discontinued mathTaming or dateTaming options logs a warning.

Incubating: Please do not rely on these features as they are under development and subject to breaking changes that will not be signaled by semver.

  • Adds support for an XS-specific variant of the SES shim that is triggered with the xs package export condition. This version of SES preserves all the features of Compartment provided uniquely by the SES shim, but with the __native__ constructor option, loses support for importing precompiled module records and gains support for native ModuleSource.

@endo/module-source v1.2.0

  • Supports dynamic import within a ModuleSource in conjunction with a related change in ses. For example, await import(specifier) can now call through to the surrounding compartment's importHook to load and evaluate further modules.
  • Provides an XS-specific variant of @endo/module-source that adapts the native ModuleSource instead of entraining Babel.

@endo/compartment-mapper v1.5.0

  • mapNodeModules and all functions that use it now tolerate the absence of expected packages. These packages are now omitted from the generated package skeleton map. So, loading a physically missing module now occurs during the load phase instead of the mapping phase.
  • Adds a strict option to all functions that mapNodeModules to restore old behavior, which produces an error early if, for example, a non-optional peer dependency is missing. Peer dependencies are strictly required unless peerDependenciesMeta has an object with a truthy optional entry. Correct interpretation of peerDependencies is not distributed evenly, so this behavior is no longer the default.

Incubating: Please do not rely on these features as they are under development and subject to breaking changes that will not be signaled by semver.

  • The module @endo/compartment-mapper/import-archive-parsers.js does not support modules in archives in their original ESM (mjs) or CommonJS (cjs) formats because they entrain Babel and a full JavaScript lexer that are not suitable for use in all environments, specifically XS. This version introduces an elective @endo/compartment-mapper/import-archive-all-parsers.js that has all of the precompiled module parsers (pre-cjs-json and pre-mjs-json) that Endo's bundler currently produces by default and additionally parsers for original sources (mjs, cjs). Also, provided the xs package condition, @endo/compartment-mapper/import-archive-parsers.js now falls through to the native ModuleSource and safely includes mjs and cjs without entraining Babel, but is only supported in conjunction with the __native__ option for Compartment, importArchive, parseArchive, and importBundle. With the node package condition (present by default when running ESM on node), @endo/compartment-mapper/import-archive-parsers.js also now includes mjs and cjs by entraining Babel, which performs adequately on that platform.
  • Adds a __native__: true option to all paths to import, that indicates that the application will fall through to the native implementation of Compartment, currently only available on XS, which lacks support for precompiled module sources (as exist in many archived applications, particularly Agoric smart contract bundles) and instead supports loading modules from original sources (which is not possible at runtime on XS).

2024-11-13

13 Nov 21:54
Compare
Choose a tag to compare

ses v1.10.0

  • Permit Promise.try, since it has reached Stage 4.

  • Adds a reporting option to lockdown and repairIntrinsics.

    The default behavior is "platform" which will detect the platform and report warnings according to whether a web console, Node.js console, or print are available. The web platform is distinguished by the existence of window or importScripts (WebWorker). The Node.js behavior is to report all warnings to stderr visually consistent with use of a console group. SES will use print in the absence of a console. Captures the platform console at the time lockdown or repairIntrinsics are called, not at the time ses initializes.

    The "console" option forces the web platform behavior. On Node.js, this results in group labels being reported to stdout.

    The "none" option mutes warnings.

@endo/bundle-source v3.5.0

  • Adds support for TypeScript type erasure using ts-blank-space applied to TypeScript modules with .ts, .mts, and .cts extensions, for any package that is not under a node_modules directory, immitating node --experimental-strip-types. As with .js extensions, the behavior of .ts is either consistent with .mts or .cts depending on the type in package.json.

@endo/compartment-mapper v1.4.0

  • Adds options languageForExtension, moduleLanguageForExtension, commonjsLanguageForExtension, and languages to mapNodeModules and compartmentMapForNodeModules allowing for certain mappings from extension (e.g., ts) to language (e.g., mts or cts) to depend on the each package’s type in the way we already vary js between cjs and mjs. These options enter through the high level functions including makeArchive and importLocation.
  • The new options workspaceLanguageForExtension, workspaceModuleLanguageForExtension, and workspaceCommonjsLanguageForExtension apply like the above except more specifically and for packages that are not physically located under a node_modules directory, indicating that JavaScript has not yet been generated from any non-JavaScript source files.
  • Omits unused module descriptors from compartment-map.json in archived applications, potentially reducing file sizes.
  • Fixes an issue where errors thrown from exit module hooks (importHook) would be thrown at parse-time when the parser uses heuristic import analysis instead of at runtime. Such errors will now be thrown at runtime, as originally intended. To those who expected the previous behavior: if you exist, please exercise caution when upgrading.