
Changelog Master Feed
What's next in JavaScript (a TC39 update) (JS Party #305)
Episode guests
Podcast summary created with Snipd AI
Quick takeaways
- The Promise.withResolvers proposal simplifies promise construction by providing a function with promise, resolve, and reject functions.
- The Array Grouping proposal adds methods for grouping and grouping keys of iterable objects in objects and maps.
- The Error Cause proposal introduces a 'cause' property to the Error constructor for attaching more detailed information about an error's origin.
- The Decorators proposal allows adding metadata and modifying behavior of classes, properties, and methods in JavaScript, currently in stage 3 and being implemented.
Deep dives
Stage 4: Promise.withResolvers
The Promise.withResolvers proposal simplifies the construction of promises by providing a function that returns an object with the promise, resolve, and reject functions.
Stage 3: Array Grouping
The Array Grouping proposal adds methods to objects and maps that allow for grouping and grouping keys of iterable objects.
Stage 3: Error Cause
The Error Cause proposal introduces a new property, 'cause', to the Error constructor, allowing developers to attach a cause to an error, providing more detailed information about the error's origin.
Stage 3: Decorators
The Decorators proposal provides a way to add metadata and modify the behavior of classes, properties, and methods in JavaScript. It is currently in stage 3 and implementations are in progress.
TypeScript Update: Decorators and Temporal Library
The podcast discusses recent updates in TypeScript, including the changes and standardization of decorators and the introduction of the Temporal library. Decorators, previously an experimental feature, have now reached stage three in development, indicating progress towards becoming an official part of the language. The Temporal library is a new date and time library for JavaScript that aims to address the limitations of the existing Date object. It offers improved date and time handling, better integration with internationalization, and support for calculations and formatting. These updates in TypeScript provide developers with more robust tools and functionalities to enhance their coding experience.
Winter CG: Standardizing JavaScript for Web-Compatible Runtimes
Winter CG is a community group working towards standardizing JavaScript for various web-compatible runtimes, primarily in server environments. The group strives to establish a minimum common API for these runtimes to ensure compatibility and portability of code. The goal is to align server environments like Node.js, Deno, and Cloudflare Workers, allowing for more portable code and facilitating interoperability. Winter CG is working on defining standards, such as extending the Fetch API for server environments and introducing async context for sharing information across asynchronous data flows. The group's efforts aim to drive innovation and collaboration in the JavaScript ecosystem and make the web platform more robust and interconnected.
Open Source Sustainability and Contributing to Standards
The podcast touches on the topic of open source sustainability and the importance of supporting the developers and maintainers of critical open source projects. It highlights different avenues for contributing to open source, including providing financial support through donations, allocating engineering time for contributions, and hiring contributors to work on open source projects full-time. The discussion emphasizes the need for companies and individuals to recognize the value of open source and actively participate in its sustainability. By offering financial support, contributing engineering expertise, and promoting an open source culture, the community can ensure the longevity and success of critical open source projects.
Daniel Ehrenberg (software engineer at Bloomberg, web standards author / champion & VP of ECMA International) joins us to discuss new features that have landed in JavaScript and to preview what’s cooking in various standards bodies across the web platform.
We cover a wide array (get it?) of topics from improvements to built-ins such as Promises, Maps & Sets, as well as new primitives like Records, Tuples & Temporal. We round out this epic discussion with a look at cross-project standardization efforts like WinterCG, open source sustainability & how Bloomberg’s open source program gives back in important projects in the web ecosystem.
Changelog++ members save 5 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
- Socket – Secure your supply chain and ship with confidence. Install the GitHub app, book a demo or learn more
- React Jam – React Jam is an online event where React developers come together to create games in 10 days. Let’s do this!
- Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
- Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Featuring:
- Daniel Ehrenberg – GitHub, Mastodon, X
- Amal Hussein – GitHub, X
- Nick Nisi – Website, GitHub, Mastodon, X
- Christopher Hiller – Website, GitHub, Mastodon, X
Show Notes:
Correction: Near the end, Dan misspoke when said the Bloomberg FOSS Fund was done in partnership with Bloomberg Philanthropies. It was actually done together with Bloomberg’s Corporate Philanthropy team.
- TC39’s Active Proposals (Stage 1, 2, 3)
- TC39’s Finished Proposals (Stage 4)
- TC39 Website
- ECMA262 - Webview of the latest published specification of ECMAScript (aka JavaScript)
- ECMA262 GitHub Repo
- WinterCG
- CycloneDX
- W3C Web Performance Working Group
- Iterator Helpers Proposal
- Record and Tuple Proposal
- Temporal Proposal
- Temporal Polyfills
- Decorators Proposal
- Set Methods Proposal
- Type Annotations Proposal
- Module Expressions Proposal
- Array Grouping Proposal
- Promise with Resolvers Proposal
- Error Cause Proposal
- Test262 Github Repo
- Source Map Spec Proposal
- TC39-T4 - a new TC39 task group to standard source maps
- TC53 - ECMAScript modules for embedded systems
- Perf.Now Conference
- Node Conf EU Conference
- Dan’s talk on Async Context at this year’s Node Conf EU
- Igalia
- Bocoup
- Sentry’s blog post on recent funding of their OSS dependencies
- Bloomberg’s Terminal
- Bloomberg Open Source Program Office (OSPO) Launches FOSS Contributor Fund
Something missing or broken? PRs welcome!