Show HN: Proa – A Rust web framework with fast SSR and multi-target rendering
Video: https://youtu.be/-CfCyvIKYyo?si=hCLuStkXxanCUJD1Video on multi-target rendering: https://youtu.be/pJx84jdBDKU?si=HRRd6dgUWXiqeWhqBenchmarks: https://github.com/Proa-Labs/proa-benchmarks
72 points by burnrate - 15 comments
Since I don't believe the maintenance challenges of a non-unified model are particularly high-friction in the LLM era (even if they may be error-prone, since that is usually solved with CI/CD or TDD), the nominal utility of this angle of architectural enhancement is considered dubious.
With regard to speed, there is no hardware shortage at present for any of these simple rendering tasks.
Overall, a nice efficient codebase but suffering a bit from NIH syndrome solving no particularly acute problem. Unless a community forms rapidly, this will probably die.
I'd like to see the benchmark compared to, eg. static files served with binserve.
One nit: Forgive me if I'm missing something but why do you have pro components? Won't people vibe-code clones anyway? I'd rather have a donate button these days.
PLus you're missing the licensing aspect, part of this is AGPL if you use the free version, lots of places are happy to throw down money to get a commercial license rather than hem and haw over AGPL.
By default, WebContext composes RenderBuffer (but it can be overriden via generics) which uses fixed-size 4 KiB pages. When a page runs out of room, it adds another page without moving the HTML already written. This avoids copying the accumulated output during growth! Its designed to be a performance improvement over Vec<u8>
For context, the problem with Vec<u8> is that every time a vector reaches maximum capacity, it has to reallocate a new area of memory (typically 2x larger than the previous allocation) and then copy everything into that new buffer. This adds a ton of overhead, especially if you're writing large pages.
Checkout https://github.com/Proa-Labs/proa/blob/384136f87fc9f91747477... if you're curious about RenderBuffer's design