534 karma · joined February 4, 2019
https://hackmd.io/@0u1u3zEAQAO0iYWVAStEvw/rJM9ws3Kbg https://hackmd.io/@0u1u3zEAQAO0iYWVAStEvw/H1Q8XTMSbe
We have frameworks essentially living in a completely synchronous world--like a 2D plane--and they can't tell that there is another dimension out there except for when something inserts itself into its view out of nowhere. The protocol that we arrive at to deal with async is convoluted, because it is a state that is basically inflicted on the framework. That's what we sought to remedy.
We can throw up a JS Framework Benchmark.. I obviously tested it a bunch locally, but mostly as a regression test. I also used Octane's new benchmark suite. Same sort of conclusions though. Everyone basically doing the same thing, some with compilers and some with more manual wiring (I haven't gone in and made PRs to update those to add that to Solid implementations in theirs), to the point this isn't a contention point. It was when everyone was as slow as React. But now everyone is more or less as fast as Solid.
Bundle size there is a regression though. Its natural cost of this feature. Async everywhere, means async doesn't tree shake. Hello World went from 4.7kb to 9.8kb simply because we can't tree shake it. I'm ok with that given what we deliver. Not everyone will be I'm sure. Svelte has also grown in size similarly over the same time. Basically leaving only minimalist solutions in that ~5kb range.. ie Preact + Signals etc..
But it also isn't really an announcement headline. So it is where we are at. I guess the takeaway. Still fast, still incredibly small considering what it does.
I picked up on the async headlines and the infrastructure pieces. We talked a lot more about the new reactivity in the beta release. The plan from here as indicated in the article is a series of followups explaining parts of Solid 2.0 in more detail.
The key takeaways are: 1. We've solved declarative async, race conditions/complexity are reduced by the structure of your code.
2. We've collapsed the metaframework layer. Every Solid project out of the box is as capable as a metaframework based on the features you want to use. You can just start a simple client app and go from there.
The result is we are setting the stage that both Humans and AI can do things a single way and fall into the "Pit of Success" by the shape of the solution and the guarantees of the model.
SolidStart 2.0 has a very important role of moving current projects into the future. Better tooling was key and it was that rewrite work that allowed me to hoist relevant parts into the core. Now every Solid project benefits from no FOUC in dev, preloading tag emission during SSR streaming etc...
I think this is inevitable collapse with AI. We want to look for our tools in a single place. It doesn't have to differentiate between React and Next when React is the one actually providing the features.
Aside, what sort of blog post content are you looking for?
Anyone who has spoken to me knows I talk in run-on sentences. I never complete a thought without interrupting myself. And I write the way I talk. I used to heavily edit that out of my writing, but now AI uses the proper punctuation and fills in where I miss words. It's like what I hear in my head but better. Because it is grammatically sound.
After:
Anyone who's spoken to me knows I talk in run-on sentences. I never complete a thought without interrupting myself. And I write the way I talk. I used to spend whole editing passes beating that out of my drafts. Now AI handles the punctuation and fills in the words I skip. It's what I hear in my head, but grammatically sound.
The result is almost always terser, more clear, and to the point. And usually all it takes is one more pass over to adjust anything I wouldn't say. In this case I kept the after verbatim just to illustrate my point.
But you aren't wrong. The marketting heavy parts are where the tone shows. And honestly those are the parts I write worst. Exactly why I lean on AI there. When I ran before/after comparisons past reviewers, the polished versions kept winning. Maybe that's the norm creeping into how all of us write now. I notice it in my own sentences too. The words I choose. But given the choice between slightly synthetic and authentically clumsy, I tested both and shipped the one that read better.
People who use Solid tend to measure stuff like this where as those who use React might have already reconciled themselves to performance issues.
Yeah exactly 7 years tomorrow. Wow time flies.
And of course any framework where SolidJS can shine so bright is going to be the top of my list.
Congratulations on an amazing release.
Marko: https://www.markojs.com Astro: https://astro.build
Now this does require special process for intaking immutable or big data snapshots where we can't do reference comparison. So we do have a data diffing capability in our nested reactive stores to propagate only what changes. But for the most part common actions like partial updates highly optimized. As well as simple list operations like sorting.
Just different priorities. In Solid you can take that code as is in the component and hoist it out to a function above and presto.. store. It's all the same thing everywhere. Same patterns, same usage, same building blocks. No new APIs, no new syntax.
It is nice when first learning not to worry about Svelte Stores and use the convenient syntax. It is also nice to learn something once and use it everywhere.
Unfortunately it's the price you pay for portability thus far. You can build your own language around this like Svelte but then composability is limited (need to rely on other mechanisms). You can make the updates coarser grained like React but then you need a different mechanism(like VDOM diffing) to apply updates granularly. I imagine this situation improves in the future but we haven't gotten there yet.