Skip to content

3.27.0 - 2022.12.26

Compare
Choose a tag to compare
@zloirock zloirock released this 25 Dec 18:12
· 1495 commits to master since this release
  • Iterator Helpers proposal:
    • Built-ins:
      • Iterator
        • Iterator.from
        • Iterator.prototype.drop
        • Iterator.prototype.every
        • Iterator.prototype.filter
        • Iterator.prototype.find
        • Iterator.prototype.flatMap
        • Iterator.prototype.forEach
        • Iterator.prototype.map
        • Iterator.prototype.reduce
        • Iterator.prototype.some
        • Iterator.prototype.take
        • Iterator.prototype.toArray
        • Iterator.prototype.toAsync
        • Iterator.prototype[@@toStringTag]
      • AsyncIterator
        • AsyncIterator.from
        • AsyncIterator.prototype.drop
        • AsyncIterator.prototype.every
        • AsyncIterator.prototype.filter
        • AsyncIterator.prototype.find
        • AsyncIterator.prototype.flatMap
        • AsyncIterator.prototype.forEach
        • AsyncIterator.prototype.map
        • AsyncIterator.prototype.reduce
        • AsyncIterator.prototype.some
        • AsyncIterator.prototype.take
        • AsyncIterator.prototype.toArray
        • AsyncIterator.prototype[@@toStringTag]
    • Moved to Stage 3, November 2022 TC39 meeting
    • Added /actual/ entries, unconditional forced replacement disabled for features that survived to Stage 3
    • .from accept strings, .flatMap throws on strings returned from the callback, proposal-iterator-helpers/244, proposal-iterator-helpers/250
    • .from and .flatMap throws on non-object iterators, proposal-iterator-helpers/253
  • Set methods proposal:
    • Built-ins:
      • Set.prototype.intersection
      • Set.prototype.union
      • Set.prototype.difference
      • Set.prototype.symmetricDifference
      • Set.prototype.isSubsetOf
      • Set.prototype.isSupersetOf
      • Set.prototype.isDisjointFrom
    • Moved to Stage 3, November 2022 TC39 meeting
    • Reimplemented with new semantics:
      • Optimized performance (iteration over lowest set)
      • Accepted only Set-like objects as an argument, not all iterables
      • Accepted only Sets as this, no @@species support, and other minor changes
    • Added /actual/ entries, unconditional forced replacement changed to feature detection
    • For avoiding breaking changes:
      • New versions of methods are implemented as new modules and available in new entries or entries where old versions of methods were not available before (like /actual/ namespace)
      • In entries where they were available before (like /full/ namespace), those methods are available with fallbacks to old semantics (in addition to Set-like, they accept iterable objects). This behavior will be removed from the next major release
  • Well-Formed Unicode Strings proposal:
    • Methods:
      • String.prototype.isWellFormed
      • String.prototype.toWellFormed
    • Moved to Stage 3, November 2022 TC39 meeting
    • Added /actual/ entries, disabled unconditional forced replacement
  • Explicit resource management Stage 3 and Async explicit resource management Stage 2 proposals:
    • Renamed from "using statement" and splitted into 2 (sync and async) proposals
    • In addition to already present well-known symbols, added new built-ins:
      • Symbol.dispose
      • Symbol.asyncDispose
      • SuppressedError
      • DisposableStack
        • DisposableStack.prototype.dispose
        • DisposableStack.prototype.use
        • DisposableStack.prototype.adopt
        • DisposableStack.prototype.defer
        • DisposableStack.prototype.move
        • DisposableStack.prototype[@@dispose]
      • AsyncDisposableStack
        • AsyncDisposableStack.prototype.disposeAsync
        • AsyncDisposableStack.prototype.use
        • AsyncDisposableStack.prototype.adopt
        • AsyncDisposableStack.prototype.defer
        • AsyncDisposableStack.prototype.move
        • AsyncDisposableStack.prototype[@@asyncDispose]
      • Iterator.prototype[@@dispose]
      • AsyncIterator.prototype[@@asyncDispose]
    • Sync version of this proposal moved to Stage 3, November 2022 TC39 meeting
    • Added /actual/ namespace entries for Stage 3 proposal
  • Added String.dedent stage 2 proposal
    • Method String.dedent
    • Throws an error on non-frozen raw templates for avoiding possible breaking changes in the future, proposal-string-dedent/75
  • Compat data targets improvements:
    • React Native from 0.70 shipped with Hermes as the default engine. However, bundled Hermes versions differ from standalone Hermes releases. So added react-native target for React Native with bundled Hermes.
    • According to the documentation, Oculus Browser was renamed to Meta Quest Browser, so oculus target was renamed to quest.
    • opera_mobile target name is confusing since it contains data for the Chromium-based Android version, but iOS Opera is Safari-based. So opera_mobile target was renamed to opera-android.
    • android target name is also confusing for someone - that means Android WebView, some think thinks that it's Chrome for Android, but they have some differences. For avoiding confusion, added chrome-android target.
    • For consistency with two previous cases, added firefox-android target.
    • For avoiding breaking changes, the oculus and opera_mobile fields are available in the compat data till the next major release.
  • Compat data improvements:
  • { Map, WeakMap }.prototype.emplace became stricter by the spec draft
  • Smoothed behavior of some conflicting proposals
  • Removed some generic behavior (like @@species pattern) of some .prototype methods from the new collections methods proposal and the Array deduplication proposal that most likely will not be implemented since it contradicts the current TC39 policy
  • Added pure version of the Number constructor, #1154, #1155, thanks @trosos
  • Added set(Timeout|Interval|Immediate) extra arguments fix for Bun 0.3.0- (similarly to IE9-), bun/1633
  • Fixed handling of sparse arrays in structuredClone, #1156
  • Fixed a theoretically possible future conflict of polyfills definitions in the pure version
  • Some refactoring and optimization