hyperfiddle

s-ol 2025-07-07T16:39:56.391539Z

Hi all! Catching up on v3 after a long time (~1y?) away from electric. Initial feedback/thought process in thread for the curious

Dustin Getz (Hyperfiddle) 2025-07-08T11:38:08.017459Z

thanks for the feedback

Dustin Getz (Hyperfiddle) 2025-07-08T11:39:40.192509Z

there are several slack threads discussing v2 -> v3 migration, the changes are substantial enough that every LOC needs to be checked, strong recommendation to reproduce all the v3 examples relevant to your app before you start

s-ol 2025-07-07T16:40:19.872229Z

1. http://1.it took me quite a while to find the gdoc tutorial that talks about tables/`e/amb` whereas https://electric.hyperfiddle.net uses e/diff-by but never talks about it. From there I looked at the source which mentions "tables" but doesn't define or talk about them

s-ol 2025-07-07T16:47:02.293169Z

2. initial reaction to tables and auto-mapping: • two paragraphs in: oh no, auto-lifting. asymmetric structure smell, how will this work out? • four paragraphs in, "Tables are not a data type, they are built into the language itself as part of it's evaluation model." → okay, I'm seeing the point... 🤔"Then why is e/for needed at all, given the language's auto-mapping semantics?" → ok, now we're cooking

s-ol 2025-07-07T16:49:16.306729Z

3. "Auto-mapping is really about cartesian products:" → checks out visually but not enough to grok at 7pm after workday

s-ol 2025-07-07T16:54:53.989989Z

4. changelog.md last entry is v2-alpha-540 (v of my wip project), new gdoc changelog lists essentially no breaking changes. Not sure what migration to v3 will entail? v3 major change: e/for-by becomes e/for + e/diff-by, what else?

noonian 2025-07-08T01:49:51.321949Z

My 2 cents off the top of my head (I am not affiliated with the electric team) • e/fn calling convention (new Foo) -> (Foo) or (e/call Foo) • Semantics on what forces network transfers changed to effects vs siting (I am not being specific here as I don't know what I am talking about :P). I can't remember anymore but I think mixing client/server in v2 caused network transfers even if you didnt use the value, but that doesn't happen in v3 iiuc • I think v3 is more concurrent and I had more places where I had to "wait" for something to happen because parallel expressions were racing dom3/Await-element was useful here for integrating with third party libraries that required html structure to render before calling javascript • No try/catch yet in v3 as might not be the correct abstraction • Forms libs changing and undocumented atm but can get pretty far stumbling around with them or using lower level utilities • License terms