---
title: "Fluid simulation in JavaScript"
publication: "JavaScript Weekly"
issue: 658
published_at: "2023-10-12"
canonical_url: "https://javascriptweekly.com/issues/658"
---

Plus GitHub's hotkey library, spectrum analysis, and rolling out the barrel. |        

#​658 — October 12, 2023 

[Read on the Web](https://javascriptweekly.com/issues/658)   

✍️ Due to being on the road at an event, this is a more _compact and bijou_ issue but I'm back at full pace next week 😅
__
Peter Cooper, your editor 

Together with [![EdgeDB\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_300,h_136/e_make_transparent/co_white,e_outline:7/jlunqvivvabxwct0nb30.png)](https://www.edgedb.com/launch?lang=ts)  

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rhix34vjuwb86xzut5k2.jpg)](https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7/)  

[Speeding Up the JS Ecosystem: The Barrel File Debacle](https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7/) — Marvin continues his tour through the world of JavaScript performance fixes with a look at how some innocent looking code can make tools run slower than they should. Test runners and many import cycle detection tools are most affected. 

Marvin Hagemeister   

🌊 [Building a Water/Fluid Simulation in JavaScript](https://kyndinfo.notion.site/Fluid-Simulation-f0516d9d12e245a08ae5c7545ac822dd) — Hard to explain, but a lot of thought and care has gone into this tutorial of sorts. The live demos are nice, too. Uses [p5.js](https://p5js.org/) behind the scenes. 

Kenichi Yoneda   [![\](https://copm.s3.amazonaws.com/a1148dc7.png)](https://www.edgedb.com/launch?lang=ts) 

[Strongly Typed and in the ⛅: Meet EdgeDB 4.0](https://www.edgedb.com/launch?lang=ts) — EdgeDB is an open-source database focused on developer experience. It features a high-level, modern data model, integrated schema migrations, and a TypeScript query builder that makes it easy to write advanced, fast queries, putting ORMs to shame. 

EdgeDB sponsor   

[Angular and Qwik's Creator on How JS Frameworks Handle Reactivity](https://thenewstack.io/angular-qwik-creator-on-how-js-frameworks-handle-reactivity/) — A summary of Miško Hevery’s keynote from the _International JavaScript Conference_ looking at reactivity across the major frameworks. 

Loraine Lawson (The New Stack)   

[A Web Server ‘Hello World’ Benchmark: Go vs Node vs Nim vs Bun](https://lemire.me/blog/2023/10/07/web-server-hello-world-benchmark-go-vs-node-js-vs-nim-vs-bun/) — The standard disclaimer applies: benchmarks are difficult and don’t always measure what you _should_ care about. 

Daniel Lemire    

- 👀 Simon Willison has put together [a fantastic live demo](https://observablehq.com/@simonw/detect-objects-in-images) (in notebook format) showing off how to do client-side object detection in images using solely JavaScript and a neural network. _(Note: Be aware this uses a lot of CPU and may slow your browser down.)_
- ▶️ _ViteConf 2023_ took place last week and [some of the talks](https://www.youtube.com/playlist?list=PLqGQbXn_GDmkOsHI7-Wrbv1GgAA4tJZhg) are already available on YouTube. [🐦 One key bit of news is about Rolldown](https://twitter.com/youyuxi/status/1709943106215530867), a Rust port of Rollup, meaning Vite will get even faster in the medium term.
- ⚙️ Stephen Röttger of the V8 team has blogged about efforts to [enable control-flow integrity (CFI) in V8](https://v8.dev/blog/control-flow-integrity), essentially a way to reduce the ability of nefarious third parties to exploit V8's control flow in order to trigger arbitrary shellcode.
- ⚠️ A look at [the potential dangers of regular expressions in JavaScript.](https://www.sonarsource.com/blog/vulnerable-regular-expressions-javascript/)
- 👾 [An interesting post mortem of a game](https://remvst.medium.com/path-to-glory-post-mortem-js13k-2023-be74a5272621) built in just 13KB for the JS13K contest.   

**🎉 RELEASES:** 

- [Electron 27](https://www.electronjs.org/blog/electron-27-0) – The cross-platform desktop app toolkit gains Chromium 118, Node.js 18.17.1, and V8 11.8, but loses macOS 10.13/14 support.
- [Fresh 1.5](https://deno.com/blog/fresh-1.5) – A Deno-native framework for building full-stack webapps. v1.5 adds support for _partials_ – the ability to update a _portion_ of an existing page.
- [Parcel 2.10](https://github.com/parcel-bundler/parcel/releases/tag/v2.10.0) – The zero-config build tool gets some _serious_ performance improvements (7x faster on large projects). Devon Govett wrote [🐦 a Twitter thread explaining how.](https://twitter.com/devongovett/status/1712169214872867288)
- [Bun 1.0.5](https://bun.sh/blog/bun-v1.0.5) – Mostly bug fixes and gentle improvements for the performance-oriented JS runtime. No HTTP/2 yet, but it's just around the corner..
- [Solid 1.8](https://github.com/solidjs/solid/releases/tag/v1.8.0) – Declarative and performant reactivity for building UIs.  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rnmtws4y8yv6opieflit.jpg)](https://www.evidence.dev/)  

[Evidence: Reports Synced to Your Data with SQL and Markdown](https://www.evidence.dev/) — An open source, code-based alternative to drag-and-drop business intelligence tools. [▶️ This nine minute screencast](https://www.youtube.com/watch?v=FDEUzE8KJmo) does a good job at showing off what it can do. 

Evidence   

[Payload 2.0: A Headless CMS Platform Built on Node](https://payloadcms.com/blog/payload-2-0) — A Node-based headless CMS providing an app framework-like experience, including a customizable React-based admin system, GraphQL or REST APIs, flexible auth and file upload systems, etc. v2.0 introduces Postgres support (in addition to MongoDB), Vite support, and a new rich text editor. [GitHub repo](https://github.com/payloadcms/payload). 

James Mikrut   

[Add Figma Like Collaborative Features Without Re-Architecting Your App](https://hubs.la/Q024C5V20) — Create collaborative features, from live cursors to avatar stacks with Spaces, our in-app collaboration SDK. 

Ably sponsor   

[Visual Studio Code Extension Tester v5.10](https://github.com/redhat-developer/vscode-extension-tester) — A framework for simulating user interactions with VS Code and its extensions via Selenium Webdriver. 

Red Hat   

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/jvra3ytunftwtxhcfjrg.jpg)](https://audiomotion.dev/)  

[audioMotion-analyzer: Real-Time Audio Spectrum Analyzer](https://audiomotion.dev/) — A high-resolution real-time audio spectrum analyzer JavaScript module with no dependencies. Gives a single or dual channel view. (_Note the AGPL license_.) [GitHub repo](https://github.com/hvianna/audioMotion-analyzer). 

Henrique Avila Vianna   

- [Hotkey 2.1](https://github.com/github/hotkey) – Add keyboard shortcuts to pages through HTML attributes (e.g. `data-hotkey="Meta+d"`). Built by GitHub and used on github․com itself.
- [React-Menu 4.1](https://szhsin.github.io/react-menu/) – Component for building accessible menus and dropdowns.
- [Ionic 7.5](https://ionic.io/blog/announcing-ionic-7-5) – Build cross-platform mobile apps with JavaScript.
- [pnpm 8.9](https://github.com/pnpm/pnpm/releases/tag/v8.9.0) – The alternative, efficient package manager.
- [Highlight.js 11.9](https://highlightjs.org/) – Popular JS syntax highlighting library.
- [Node.js v18.18.1 (LTS)](https://nodejs.org/en/blog/release/v18.18.1) – To fix a regression in v18.18.0.    

💻 Jobs  

[Apply Now and Work #LikeABosch](https://www.bosch.com/careers/job-offers/?utm_campaignid=javascript&utm_source=cooperpress&utm_medium=cpc&utm_campaign=wlab&utm_term=job&utm_content=evp) — Our promise to our associates is rock-solid: we grow together, enjoy our work & inspire each other. Join in & feel the difference. 
Bosch       

“The art of debugging is figuring out what you really told your program to do rather than what you thought you told it to do.” 

___
Andrew Singer          

Published by [Cooperpress](https://cooperpress.com/) and edited by [Peter Cooper](https://twitter.com/cooperx86) 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or [stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*). 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
