Skip to content

Latest commit

 

History

History
696 lines (413 loc) · 39.4 KB

File metadata and controls

696 lines (413 loc) · 39.4 KB

@endo/marshal

1.9.1

Patch Changes

  • #3127 6ada52b Thanks @turadg! - Remove stale runtime dependencies from package manifests.

  • Updated dependencies [6ada52b]:

    • @endo/pass-style@1.7.1

1.9.0

Minor Changes

  • #3008 d83b1ab Thanks @kriskowal! - - Relaxes dependence on a global, post-lockdown harden function by taking a dependency on the new @endo/harden package. Consequently, bundles will now entrain a harden implementation that is superfluous if the bundled program is guaranteed to run in a post-lockdown HardenedJS environment. To compensate, use bundle-source with -C hardened or the analogous feature for packaging conditions with your preferred bundler tool. This will hollow out @endo/harden and defer exclusively to the global harden.

Patch Changes

  • Updated dependencies [2e00276, 029dcc4, 2e00276, d83b1ab, 98f77e9]:
    • @endo/errors@1.3.0
    • @endo/harden@1.1.0
    • @endo/common@1.3.0
    • @endo/eventual-send@1.4.0
    • @endo/nat@5.2.0
    • @endo/pass-style@1.7.0
    • @endo/promise-kit@1.2.0

1.8.0 (2025-07-12)

  • Introduces an environment variable config option ENDO_RANK_STRINGS to change the rank ordering of strings from the current (incorrect) ordering by UTF-16 code unit used by JavaScript's < and .sort() operations to (correct and OCapN-conformant) ordering by Unicode code point. It currently defaults to "utf16-code-unit-order", matching the previously-unconditional behavior.

1.7.1 (2025-06-17)

Bug Fixes

1.7.0 (2025-06-02)

  • @endo/marshal now also exports a qp function meaning "quote passable" that renders its passable argument as a quasi-quoted Justin expression. This can be used with X, Fail etc the same way you currently use q. Since Justin is a subset of HardenedJS, there's no need for the quasi-quoted form to explain what language it is in.

1.6.4 (2025-03-24)

Note: Version bump only for package @endo/marshal

1.6.3 (2025-01-24)

Note: Version bump only for package @endo/marshal

1.6.2 (2024-11-13)

Note: Version bump only for package @endo/marshal

1.6.1 (2024-10-22)

Bug Fixes

  • marshal: Manually intervene in choice of semver for 1.6.0 instead of 2.0.0 (c242c28)

1.6.0 (2024-10-22)

  • compareRank now short-circuits upon encountering remotables to compare, considering the inputs to be tied for the same rank regardless of what would otherwise be visited later in their respective data structures. This ensures that a fullCompare which does distinguish remotables will be a refinement of compareRank, rather than disagreeing about whether or not two values share a rank (#2588).

    This change is a bug fix for all purposes off-chain, but will frustrate deterministic replay. So, because of this change and probably many others, the supervisor bundle of vats on chain will need to be created from historical versions, not according to the semantic version of the library.

1.5.4 (2024-10-10)

Note: Version bump only for package @endo/marshal

1.5.3 (2024-08-27)

Note: Version bump only for package @endo/marshal

1.5.2 (2024-08-01)

Note: Version bump only for package @endo/marshal

1.5.1 (2024-07-30)

  • deeplyFulfilled moved from @endo/marshal to @endo/pass-style. @endo/marshal still reexports it, to avoid breaking old importers. But importers should be upgraded to import deeplyFulfilled directly from @endo/pass-style.

1.5.0 (2024-05-07)

Features

  • types: fromCapData is Passable, but unknown is more practical (5fa54f0)
  • types: generic Passable (fa59e05)

Bug Fixes

  • ses: makeError defaults to making passable errors (#2200) (3b0f766)

1.4.1 (2024-04-04)

Note: Version bump only for package @endo/marshal

1.4.0 (2024-03-20)

Features

  • ses-ava: import test from @endo/ses-ava/prepare-endo.js (#2133) (9d3a7ce)

1.3.0 (2024-02-23)

  • Sending and receiving extended errors.
    • As of the previous release, @endo/marshal tolerates extra error properties with Passable values. However, all those extra properties were only recorded in annotations, since they are not recognized as legitimate on Passable errors.
    • This release will use these extra properties to construct an error object with all those extra properties, and then call toPassableError to make the locally Passable error that it returns. Thus, if the extra properties received are not recognized as a legitimate part of a locally Passable error, the error with those extra properties itself becomes the annotation on the returned Passable error.
    • An error.cause property whose value is a Passable error with therefore show up on the returned Passable error. If it is any other Passable value, it will show up on the internal error used to annotate the returned error.
    • An error.errors property whose value is a CopyArray of Passable errors will likewise show up on the returned Passable error. Otherwise, only on the internal error annotation of the returned error.
    • Although this release does otherwise support the error properties error.cause and error.errors on Passable errors, it still does not send these properties because releases prior to the previous release do not tolerate receiving them. Once we no longer need to support releases prior to the previous release, then we can start sending these.

1.2.0 (2024-02-15)

  • Tolerates receiving extra error properties (#2052). Once pervasive, this tolerance will eventually enable additional error properties to be sent. The motivating examples are the JavaScript standard properties cause and errors. This change also enables smoother interoperation with other languages with their own theories about diagnostic information to be included in errors.

1.1.0 (2024-01-18)

Features

  • types: generic Passable (ae6ad15)

1.0.1 (2023-12-20)

Bug Fixes

  • Expressly forbid deep imports through captp, far, lockdown, marshal (8fb4e97)

1.0.0 (2023-12-12)

Features

  • pass-style: Far GET_METHOD_NAMES meta method (b079812)
  • pass-style: Safe promises can override @@toStringTag with a string (55e094c)

Bug Fixes

  • Adjust type generation in release process and CI (9465be3)
  • Import types explicitly throughout (631d087)
  • review suggestions (25ded7a)

0.26.10 (2021-07-28)

Note: Version bump only for package @agoric/marshal

0.8.9 (2023-09-12)

Features

  • patterns: Implement CopyMap comparison (13028b2)

0.8.8 (2023-08-07)

Bug Fixes

  • ses: normalize bestEffortsStringify property order (137daff)

0.8.7 (2023-08-07)

Bug Fixes

  • ses: normalize bestEffortsStringify property order (137daff)

0.8.6 (2023-07-19)

Bug Fixes

0.8.5 (2023-04-20)

Bug Fixes

0.8.4 (2023-04-14)

Features

  • pass-style,exo: label remotable instances (56edc68)
  • ses: option to fake harden unsafely (697bf58)

Bug Fixes

  • sort type confusion between pass-style and marshal (db09e13)

Reverts

  • Revert "fix: parse positive bigints correctly despite XS parsing them wrong (#1325)" (657c4aa), closes #1325

0.8.3 (2023-03-07)

Features

  • marshal: display slot values if supplied (6edaf4a)
  • marshal: new methods {to,from}CapData (2c97bb9)
  • pass-style: Extract passStyleOf and friends from marshal into the new pass-style package (#1439) (ccd003c)

Bug Fixes

0.8.2 (2022-12-23)

Bug Fixes

  • marshal: Work around TypeScript issue (56d3d81)

0.8.1 (2022-11-14)

  • Remote objects now reflect methods present on their prototype chain.
  • Serialization errors now serialize.

0.8.0 (2022-10-24)

  • Requires plain objects to inherit from Object.prototype, ensuring pass-invariance (#1324) (1df4193)

0.7.6 (2022-10-19)

Bug Fixes

  • marshal: Return a special error message from passStyleOf(typedArray) (dbd498e), closes #1326
  • parse positive bigints correctly despite XS parsing them wrong (#1325) (ab31d51), closes #1309
  • marshal: Add CapData encode/decode consistency assertions (0b75021)
  • marshal: Consistently quote "@qclass" in error messages (4ab6743)
  • fix tiny typo (#1321) (7f3c371)
  • marshal: Detect unexpected nonenumerable properties on tagged records and remotables (da0f11f), closes #1316
  • unserialize makes copyRecords without problematic assign semantics (#1304) (5f0caf9)

Performance Improvements

  • marshal: Extend new assert style to check calls (11d9f97)
  • marshal: Skip unnecessary assert.details calls (053ca12)

0.7.5 (2022-09-27)

0.7.4 (2022-09-14)

Bug Fixes

0.7.3 (2022-08-26)

Note: Version bump only for package @endo/marshal

0.7.2 (2022-08-26)

Bug Fixes

0.7.1 (2022-08-25)

  • Allows for the existence of async_hooks symbols on promises.

0.7.0 (2022-08-23)

  • Prepares for far classes.
  • Full passStyleOf input validation.
  • BREAKING: Removes assertPure, which was wrong but not used to the best of our knowledge.

0.6.9 (2022-06-28)

Note: Version bump only for package @endo/marshal

0.6.8 (2022-06-11)

Bug Fixes

0.6.7 (2022-04-15)

Note: Version bump only for package @endo/marshal

0.6.6 (2022-04-14)

Note: Version bump only for package @endo/marshal

0.6.5 (2022-04-13)

Bug Fixes

0.6.4 (2022-04-12)

Features

  • marshal: stamp Remotable return with RemotableBrand<L,R> (8b9b8fd)

0.6.3 (2022-03-07)

Features

  • marshal: have Remotable create Remote<T>-compatible objs (1ba89ba)

0.6.2 (2022-03-02)

Note: Version bump only for package @endo/marshal

0.6.1 (2022-02-20)

Note: Version bump only for package @endo/marshal

0.6.0 (2022-02-18)

Switch from ambient to exported types. Include type declarations (.d.ts) generated from JSDoc to avoid requiring dependents to parse .js files in their node_modules.

In order to use the types from @endo/marshal you now need to import them explicitly. For example, to make them available in scope, use the following:

  • JSDoc: /** @import {PassStyle} from '@endo/marshal' */
  • TypeScript: import type { PassStyle } from '@endo/marshal'

0.5.4 (2022-01-31)

Note: Version bump only for package @endo/marshal

0.5.3 (2022-01-27)

Includes TypeScript definitions in published artifact.

0.5.2 (2022-01-25)

Bug Fixes

  • marshal: error serialization uses name from prototype (#1010) (aff3ff7)
  • assert that unserialize makes only passables (#996) (b34817b)
  • only shallow freeze needed (#994) (edeaf8a)
  • remove more extraneous spaced-comment comments (#1009) (980a798)

0.5.1 (2022-01-23)

Moved from https://github.com/Agoric/agoric-sdk to https://github.com/endojs/endo, still in a packages/marshal directory.


0.5.0 (2021-12-02)

⚠ BREAKING CHANGES

  • ERTP: NatValues now only accept bigints, lower-case amountMath is removed, and AmountMath methods always follow the order of: brand, value

  • chore: fix up INPUT_VALIDATON.md

  • chore: address PR comments

Bug Fixes

  • default to disallowing implicit remotables (#3736) (d14a665)

Miscellaneous Chores

  • ERTP: additional input validation and clean up (#3892) (067ea32)

0.4.28 (2021-10-13)

Bug Fixes

0.4.27 (2021-09-23)

Note: Version bump only for package @agoric/marshal

0.4.26 (2021-09-15)

Note: Version bump only for package @agoric/marshal

0.4.25 (2021-08-18)

Note: Version bump only for package @agoric/marshal

0.4.24 (2021-08-17)

Note: Version bump only for package @agoric/marshal

0.4.23 (2021-08-16)

Note: Version bump only for package @agoric/marshal

0.4.22 (2021-08-15)

0.4.21 (2021-08-14)

0.4.20 (2021-07-28)

Note: Version bump only for package @agoric/marshal

0.4.19 (2021-07-01)

Note: Version bump only for package @agoric/marshal

0.4.18 (2021-06-28)

Note: Version bump only for package @agoric/marshal

0.4.17 (2021-06-25)

Note: Version bump only for package @agoric/marshal

0.4.16 (2021-06-24)

Note: Version bump only for package @agoric/marshal

0.4.15 (2021-06-24)

Note: Version bump only for package @agoric/marshal

0.4.14 (2021-06-23)

Note: Version bump only for package @agoric/marshal

0.4.13 (2021-06-16)

Note: Version bump only for package @agoric/marshal

0.4.12 (2021-06-15)

Bug Fixes

  • Pin ESM to forked version (54dbb55)

0.4.11 (2021-05-10)

Note: Version bump only for package @agoric/marshal

0.4.10 (2021-05-05)

Note: Version bump only for package @agoric/marshal

0.4.9 (2021-05-05)

Bug Fixes

0.4.8 (2021-04-22)

Note: Version bump only for package @agoric/marshal

0.4.7 (2021-04-18)

Note: Version bump only for package @agoric/marshal

0.4.6 (2021-04-16)

Note: Version bump only for package @agoric/marshal

0.4.5 (2021-04-14)

Note: Version bump only for package @agoric/marshal

0.4.4 (2021-04-13)

Note: Version bump only for package @agoric/marshal

0.4.3 (2021-04-07)

Note: Version bump only for package @agoric/marshal

0.4.2 (2021-04-06)

Note: Version bump only for package @agoric/marshal

0.4.1 (2021-03-24)

Bug Fixes

0.4.0 (2021-03-16)

Bug Fixes

  • fix ibids. test ibids and slots (#2625) (891d9fd)
  • make separate 'test:xs' target, remove XS from 'test' target (b9c1a69), closes #2647
  • marshal: add Data marker, tolerate its presence (d7b190f)
  • marshal: add placeholder warnings (8499b8e)
  • marshal: serialize empty objects as data, not pass-by-reference (aeee1ad), closes #2018
  • separate ibid tables (#2596) (e0704eb)

Features

  • marshal: add Data() to all unserialized empty records (946fd6f)
  • marshal: allow marshalSaveError function to be specified (c93bb04)
  • marshal: Data({}) is pass-by-copy (03d7b5e)

0.3.2 (2021-02-22)

Note: Version bump only for package @agoric/marshal

0.3.1 (2021-02-16)

Bug Fixes

  • marshal: reject getters in pass-by-ref, even if it returns a function (#2438) (b9368b6), closes #2436
  • Correlate sent errors with received errors (73b9cfd)
  • Far and Remotable do unverified local marking rather than WeakMap (#2361) (ab59ab7)
  • review comments (7db7e5c)
  • use assert rather than FooError constructors (f860c5b)

0.3.0 (2020-12-10)

Bug Fixes

  • minor tweaks for dapp-oracle (b8169c1)

Features

  • import-bundle: Preliminary support Endo zip hex bundle format (#1983) (983681b)

0.2.7 (2020-11-07)

Note: Version bump only for package @agoric/marshal

0.2.7-dev.0 (2020-10-19)

Note: Version bump only for package @agoric/marshal

0.2.6 (2020-10-11)

Note: Version bump only for package @agoric/marshal

0.2.6-dev.2 (2020-09-18)

Note: Version bump only for package @agoric/marshal

0.2.6-dev.1 (2020-09-18)

Note: Version bump only for package @agoric/marshal

0.2.6-dev.0 (2020-09-18)

Note: Version bump only for package @agoric/marshal

0.2.5 (2020-09-16)

Note: Version bump only for package @agoric/marshal

0.2.4 (2020-08-31)

Bug Fixes

  • add "TODO unimplemented"s (#1580) (7795f93)
  • clean up E.when and E.resolve (#1561) (634046c)
  • excise @agoric/harden from the codebase (eee6fe1)
  • minor: rearrange asserts in Remotable (#1642) (c43a08f)
  • reduce inconsistency among our linting rules (#1492) (b6b675e)
  • rename producePromise to makePromiseKit (#1329) (1d2925a)
  • send and receive Remotable tags (#1628) (1bae122)
  • stricter marshal requirements (#1499) (9d8ba97)
  • use REMOTE_STYLE rather than 'presence' to prepare (#1577) (6b97ae8)
  • marshal: make toString and Symbol.toStringTag non-enumerable (fc616ef)

0.2.3 (2020-06-30)

Note: Version bump only for package @agoric/marshal

0.2.2 (2020-05-17)

Note: Version bump only for package @agoric/marshal

0.2.1 (2020-05-10)

Note: Version bump only for package @agoric/marshal

0.2.0 (2020-05-04)

Bug Fixes

  • address PR comments (358952a)
  • propagate Go errors all the way to the caller (ea5ba38)
  • use getErrorConstructor to deep-copy an Error (8ae1994)

Features

  • add Presence, getInterfaceOf, deepCopyData to marshal (aac1899)

0.1.5 (2020-04-13)

Note: Version bump only for package @agoric/marshal

0.1.5-alpha.0 (2020-04-12)

Note: Version bump only for package @agoric/marshal

0.1.4 (2020-04-02)

Note: Version bump only for package @agoric/marshal

0.1.4-alpha.0 (2020-04-02)

Note: Version bump only for package @agoric/marshal

0.1.3 (2020-03-26)

Bug Fixes

  • first draft use collection equality (6acbde7)
  • symbols no longer passable (7290a90)
  • eventual-send: Update the API throughout agoric-sdk (97fc1e7)
  • SwingSet: passing all tests (341718b)

0.1.2 (2019-12-17)

  • depend on @agoric/eventual-send (#6)

Moved from https://github.com/Agoric/marshal into the packages/marshal/ directory in the monorepo at https://github.com/Agoric/agoric-sdk .

0.1.1 (2019-10-02)

Remove unneeded SES dependency.

0.1.0 (2019-19-11)

Breaking API change: applications must change how they use m.serialize() and m.serialize().

  • change API to use 'CapData' format: {body, slots}
    • m.serialize() now returns {body, slots} instead of {argsString, slots}
    • m.unserialize() now takes (capdata, cyclePolicy) instead of (body, slots, cyclePolicy). The cyclePolicy argument remains optional.
  • the return value of m.serialize() is now hardened
  • improve error messages

0.0.1 (2019-06-06)

First release.