Their usage of upsert appears different than I was used to:
Me: Upsert = Update or Insert
Them: Upsert = Get or Insert
bakkoting 12 hours ago [-]
The proposal used to do more thing and we didn't change the URL after we ultimately arrived at this set of APIs.
AdieuToLogic 7 hours ago [-]
> Their usage of upsert appears different than I was used to:
> Them: Upsert = Get or Insert
I agree that their choice of labeling the proposal as "upsert" is less than ideal. However, this functionality is reminiscent of a very useful Perl capability known as autovivification[0] as described in the motivation section:
A common problem when using a Map or WeakMap is how to
handle doing an update when you're not sure if the key
already exists in the map.
This API is inherently unsafe. Invalid pointers, incorrect signatures, or accessing memory after it has been freed can crash the process or corrupt memory.
Absolutely great idea to expose such "features" to the web dev world!
All the JS devs that are already struggling with mildly complicated language features will love the giant new field of bugs they only dreamed of.
The arrival of the first very hyped tool that will make activating FFI support a requirement will be a great moment in JS history. Happily an army of mildly educated web devs will activate a feature which potential risks they do not even understand.
Luckily nowadays supply chain attacks are a thing of the past in the JS world, oh, wait...
noodlesUK 15 hours ago [-]
I'm really looking forward to the temporal api being universally available. Moment and Luxon are fairly good but sensible date/time handling is something that really ought to be baked into the platform ootb.
jpsimons 15 hours ago [-]
I always thought the old Date is kind of elegant... increment anything with an overflow and it all wraps around correctly, like `d.setDate(d.getDate() + 100)` to advance a date 100 days. "March 208th" is interpreted like you'd expect, as are the hours and minutes and such.
Of course, complete lack of non-local non-GMT time zones is a huge downside.
keeganpoppen 15 hours ago [-]
i'm pretty sure all that stuff works w/ Temporal... Temporal is extremely well-designed, in my experience. the js date object, on the other hand, has insane pitfalls, and i say this as someone who thinks not understanding JS ASI is a "skill issue", among other happily-un-"ergonomic" worldviews...
kaoD 12 hours ago [-]
That's how you get date bugs.
culi 15 hours ago [-]
Until then, a solid backfill has been available for quite some time
chrisweekly 14 hours ago [-]
Tangent: if you use Node.js at build time you should check out VitePlus https://viteplus.dev
(No affiliation, just a fan of VoidZero's consistently excellent tools.)
KronisLV 14 hours ago [-]
Oh hey, they're the people behind Oxlint and Oxfmt: https://oxc.rs/
I moved some projects over to those from ESLint + Prettier and while the compatibility isn't 100% (I didn't need that), and the time to process a codebase went from like way over a minute with the old tools to a few seconds with theirs.
rumblefrog 14 hours ago [-]
Looks interesting, what's their revenue model? Or how do we know it won't be abandoned in the near future?
shimman 12 hours ago [-]
The same as any other dev tool startup, once money gets tight they will monetize and users will rightfully revolt.
Evan You won't break the cycle, tale as old as time.
lioeters 11 hours ago [-]
After getting burned so many times on libraries, frameworks, services and platforms, even entire languages - one learns to be wary of critical dependencies. Every new project offers convenience in exchange for you giving up control of part of the software stack, and the power dynamic is often exploited sooner or later as revenue source. You can't trust anything that becomes irreplaceable, or that you can't write it (or at least understand it) yourself.
chrisweekly 7 hours ago [-]
I mostly agree. But without argument, I can point out that a modern webapp requires tooling for capabilities like testing, linting, formatting, and bundling. Vite (and its ecosystem) has proven its mettle, and when it comes to being able to understand your dependencies, I'll take fewer, and simpler, and way faster, and more coherent, and more independent of misaligned corporate influence, every time. It's not even a trade-off, it's just better. I have deep expertise in wrangling eslint plugins and prettier configs and webpack, and am so grateful that's all in the rear-view mirror. An astonishing percentage of the world's most popular websites are built on a fragile and nearly-incomprehensible stack which no sane developer would choose. VoidZero (and TanStack, FWIW) are a breath of fresh air in making it possible to reason about your frontend tooling and architecture, and stepping away from unnecessary complexity and/or vendor lock-in. Of course it will eventually change. But as someone who's been building and improving web-based experiences for a living since the late 90's (for tiny startups and F500 enterprises and everything between), this is as good as it's ever been, and I recommend it without reservation.
manniL 12 hours ago [-]
VoidZero's business model is in Void, their deployment platform. Open source projects will always stay open source. This was announced at the very beginning.
shimman 11 hours ago [-]
Yes, nothing different from any other VC dev tool startup. When the community fractures people simply move on to something else. See rome -> biome for a very recent example.
At this point we should really prompt all the AI power in the world we have to create a TS replacement. It seems grotesque.
torgoguys 14 hours ago [-]
I thought this was the release where the built in sqlite got its experimental tag removed, but I don't see it in the release notes. THAT'S got me excited more than Temporal. A stable API, huge utility and one less dependency.
dieulot 56 minutes ago [-]
It was made a release candidate in the previous (non-LTS) major version, in v25.7.0 from February.
(Now with Malware)
I joke!
It already had malware.
cute_boi 15 hours ago [-]
Node JS team should look into bun and make progress. They are somewhat stable, but bun have lot of features and is more performant than Node.
HatchedLake721 15 hours ago [-]
/s ? Bun is not yet (ever?) compatible with Node. I'm sure if Node JS could trim the fat with breaking changes they'd be fast too
xkcd-sucks 12 hours ago [-]
Honest question, what isn't compatible? Where I work we've simply replaced node with bun across a lot of overcomplicated + crappy projects, and on my work+personal computers I alias bun/bunx to node/npx with seemingly no issues at all
bel8 14 hours ago [-]
I expect bun to run almost everything that node runs these days. They have an extensive test suit to ensure that.
Maybe if you start from scratch with a new project, but when migrating an old project it's definitely not a drop-in replacement. I try once or twice per year, but it's not worth the effort when the upside isn't that big.
13 hours ago [-]
notnullorvoid 13 hours ago [-]
In my testing Bun wasn't much faster most of the time, usually on par for all non-IO related stuff, and there were some cases with scheduling where Bun was noticable slower.
pjmlp 13 hours ago [-]
I see no reason to leave node in what concerns JavaScript runtimes.
postepowanieadm 14 hours ago [-]
They should the unexpected and vibe code node to zig. Or Odin for the kicks.
karel-3d 14 hours ago [-]
they should rewrite their whole stack by AI from one language to another language, it seems fun.
Their usage of upsert appears different than I was used to:
Me: Upsert = Update or Insert
Them: Upsert = Get or Insert
I agree that their choice of labeling the proposal as "upsert" is less than ideal. However, this functionality is reminiscent of a very useful Perl capability known as autovivification[0] as described in the motivation section:
0 - https://en.wikipedia.org/wiki/AutovivificationIf you use that operator and the value doesn't exist, it'll default create one and return a reference to that.
And as I'm writing this I realize why... references cannot be `null`.
`getOrInsert` here seems to be the Python "set_default" method on dicts, which is very useful at avoiding tedium in some basic data munging
It gives a caller the option of alternate logic based on the existence, or lack thereof, of a value.
> is that not just set?
No. The semantics of a "set" operation would overwrite an existing entry (if one exists).
https://nodejs.org/en/blog/release/v26.2.0
What I would expect with the inclusion of temporal, is having a section on nodejs docs about Rust addons, alongside the C and C++ sections.
Absolutely great idea to expose such "features" to the web dev world!
All the JS devs that are already struggling with mildly complicated language features will love the giant new field of bugs they only dreamed of.
The arrival of the first very hyped tool that will make activating FFI support a requirement will be a great moment in JS history. Happily an army of mildly educated web devs will activate a feature which potential risks they do not even understand.
Luckily nowadays supply chain attacks are a thing of the past in the JS world, oh, wait...
Of course, complete lack of non-local non-GMT time zones is a huge downside.
(No affiliation, just a fan of VoidZero's consistently excellent tools.)
I moved some projects over to those from ESLint + Prettier and while the compatibility isn't 100% (I didn't need that), and the time to process a codebase went from like way over a minute with the old tools to a few seconds with theirs.
Evan You won't break the cycle, tale as old as time.
(I’m not disagreeing to remove it. It just took me a while to find out what happened to it)
There's the "types as comments" proposal[1] which could even land on browsers one day.
I started using the erasableSyntaxOnly setting in my tsconfig to get ready for this.
[1] https://tc39.es/proposal-type-annotations/
Release notes: https://nodejs.org/en/blog/release/v25.7.0
Issue: https://github.com/nodejs/node/pull/61262
https://caniuse.com/?search=Temporal
Adding websocket would simplify stuff tremendously, as well as make deployments much, much more secure.
I see that Deno has WebSockets, but I've never used them: https://docs.deno.com/api/web/~/WebSocket
Even the complicated NextJS runs with Bun: https://nextjs.org/conf/session/nextjs-bun
Do you have a source for your claim?