JS0/JSSugar; converting CommonJS to ESM; top-level await in Node.js; Node.js v23.0.0; Bun v1.1.31;

Discussing JS0/JSSugar

docs.google.com

We linked to the JS0/JSSugar slides in last week’s issue. We now have reactions to those slides. It’s important to keep in mind that it’s not even a proposal yet, just first thoughts about a topic. One point in particular strikes me as worthy of discussion: What does it mean for the JavaScript ecosystem if so much of the code is compiled (Babel, TypeScript, bundling, etc.)?

The blog post “New TC39 proposal! Does JavaScript require a compiler soon?” by Nils Riedemann has a mostly positive take on JS0/JSSugar: “It will also help to prevent further language bloat; like I’d love pipes in JS, but since that proposal doesn’t seem to get anywhere, it might be better suited for JSSugar as they can easily be transpiled to JS we have today. Immutable Data Structures (Records/Tuples), however, those would be features of JS0 so that browser engines can optimize memory handling.”

The blog post “JS0/JSSugar: the tooling will continue until morale improves” by Caolan McMahon is more critical: “Quote: ‘No evidence suggesting tooling use would decrease in future.’ I imagine if you work at Google, that is true. But I suspect most developers are not professionals working at a tech giant but hobbyists doing their best in a confounding ecosystem of tooling. If we give up on shipping their simple code directly to a browser, what hope have they of putting down those tools in future?”

How to convert CommonJS to ESM

deno.com github.com/lambtron @deno_land@fosstodon.org

“In this blog post, we’ll show you how to migrate the syntax of a legacy CommonJS project to one that supports ESM and tools to help smooth out that process.”

In the future using top-level await might be cause a backwards compatibility break in Node

evertpot.com @evert@indieweb.social

You can now require() an ESM module in Node.js – but only if none of the modules it imports contain a top-level await (TLA). Thus, adding a TLA to an ESM module, breaks CommonJS modules that use it.

The blog post is critical of require(esm). However, given how much it helps with migrating libraries to ESM without breaking CommonJS code, I personally think the positives far outweigh the negatives.

New versions

Node.js v23.0.0 (current)

nodejs.org github.com/RafaelGSS @nodejs@social.lfx.dev

[Quoting the blog post:] Key highlights include:

  • Enabling require(esm) by default for Node.js applications
  • Removing support for Windows 32-bit systems
  • Stabilizing the node --run command
  • Enhancements to the test runner, including glob pattern support for coverage files

Bun v1.1.31

bun.sh github.com/electroid github.com/oven-sh

“This release fixes 41 bugs (addressing 595 👍). It includes node:http2 server and gRPC server support, ca and cafile support in bun install, Bun.inspect.table, bun build --drop, Promise.try, Buffer.copyBytesFrom, iterable SQLite queries, iterator helpers, and several Node.js compatibility improvements and bugfixes.”

ESLint v9.13.0 released

eslint.org github.com/fasttime @eslint@fosstodon.org

Highlights [quoting the blog post]:
  • The predefined array of config objects used by ESLint can be now accessed programmatically as ESLint.defaultConfig.
  • To speed up loading, the ESLint CLI will automatically enable V8’s code cache in newer versions of Node.js.
  • Custom languages can now provide their default options with the defaultLanguageOptions property. See the documentation about the Language object.

Turborepo 2.2

turbo.build github.com/vercel

Highlights [quoting the blog post]:
  • Repository queries [experimental]: Explore your repository like never before with turbo query.
  • Improved cache safety: Easily diagnose and fix missing environment variable dependencies, and incorrect cache configurations
  • Zero-configuration comparisons for affected packages: Automatically target packages with changes in GitHub workflows

This email was sent to you. You can unsubscribe from this list here or update your preferences.

Older messages

Deno 2; Open Source Pledge; TC39 meeting October; language evolution; ES2025; destructuring

Sunday, October 20, 2024

We have 8 links for you - Stay up-to-date on JavaScript and tools This Week In React - Keeps senior React devs up to date thisweekinreact.com Partner We keep over 43k mid/senior React devs up-to-date

Evan You’s VoidZero Inc.; ESLint checks JSON & Markdown; ESLint v9.12.0; e18e contributions

Tuesday, October 8, 2024

We have 8 links for you - Stay up-to-date on JavaScript and tools VoidZero Inc.: founded by Evan You (Vue, Vite) to build a unified open source toolchain for JavaScript voidzero.dev github.com/

AbortController; date-fns v4.0; bundling

Tuesday, October 1, 2024

We have 6 links for you - Stay up-to-date on JavaScript and tools Dear readers! Welcome back after our mid-year break! Axel & Jowe Don't Sleep on AbortController kettanaito.com github.com/

ECMAScript 2024; June TC39 meeting; Babel 7.25.0; subresource integrity; performance optimizations;

Tuesday, July 30, 2024

We have 13 links for you - Stay up-to-date on JavaScript and tools Dear readers! ECMAScript News is taking its mid-year break and will be back on October 1. We wish you a good time! Axel & Jowe

Subject

Tuesday, July 23, 2024

We have 4 links for you - Stay up-to-date on JavaScript and tools Node.js v22.5.0 (current): node:sqlite and more nodejs.org github.com/aduh95 @nodejs@social.lfx.dev Highlights: SQLite was added to

You Might Also Like

This Week in Rust #580

Friday, January 3, 2025

Email isn't displaying correctly? Read this e-mail on the Web This Week in Rust issue 580 — 01 JAN 2025 Hello and welcome to another issue of This Week in Rust! Rust is a programming language

Data Science Weekly - Issue 580

Friday, January 3, 2025

Curated news, articles and jobs related to Data Science, AI, & Machine Learning ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏

💎 Issue 450 - Ruby 3.4 Highlights

Thursday, January 2, 2025

This week's Awesome Ruby Newsletter Read this email on the Web The Awesome Ruby Newsletter Issue » 450 Release Date Jan 02, 2025 Your weekly report of the most popular Ruby news, articles and

💻 Issue 450 - But what is a DOM node?

Thursday, January 2, 2025

This week's Awesome JavaScript Weekly Read this email on the Web The Awesome JavaScript Weekly Issue » 450 Release Date Jan 02, 2025 Your weekly report of the most popular JavaScript news, articles

📱 Issue 444 - Apple Photos phones home on iOS 18 and macOS 15

Thursday, January 2, 2025

This week's Awesome iOS Weekly Read this email on the Web The Awesome iOS Weekly Issue » 444 Release Date Jan 02, 2025 Your weekly report of the most popular iOS news, articles and projects Popular

💻 Issue 443 - How do you write a Dockerfile for an ASP.NET Core app?

Thursday, January 2, 2025

This week's Awesome .NET Weekly Read this email on the Web The Awesome .NET Weekly Issue » 443 Release Date Jan 02, 2025 Your weekly report of the most popular .NET news, articles and projects

💻 Issue 450 - Engineering of Small Things #4 : WebSockets

Thursday, January 2, 2025

This week's Awesome Node.js Weekly Read this email on the Web The Awesome Node.js Weekly Issue » 450 Release Date Jan 02, 2025 Your weekly report of the most popular Node.js news, articles and

📱 Issue 447 - Roast my video about Swift

Thursday, January 2, 2025

This week's Awesome Swift Weekly Read this email on the Web The Awesome Swift Weekly Issue » 447 Release Date Jan 02, 2025 Your weekly report of the most popular Swift news, articles and projects

💻 Issue 445 - Bottles will be rewritten in Rust and libcosmic

Thursday, January 2, 2025

This week's Awesome Rust Weekly Read this email on the Web The Awesome Rust Weekly Issue » 445 Release Date Jan 02, 2025 Your weekly report of the most popular Rust news, articles and projects

💻 Issue 368 - You don't need Next.js – Why we migrated from Next to React

Thursday, January 2, 2025

This week's Awesome React Weekly Read this email on the Web The Awesome React Weekly Issue » 368 Release Date Jan 02, 2025 Your weekly report of the most popular React news, articles and projects