I made the Rust compiler and the Rust Markdown pipeline (https://satteri.bruits.org) in this, let me know if you have any questions, glad to answer anything!
The TL;DR is that `marked` is very light, but a bit on the slower side compared to Sätteri and `markdown-it` (and its forks). I'm not sure how friendly the extensibility is, but Sätteri re-use the same AST format as the unified ecosystem, which might feel more friendly.
We just use `marked` currently for some light markdown rendering in a game engine. This does look like it offers much better extensibility if we ever needed that - thanks for the clarity!
It was tough to create a plugin API that was both performant and intuitive. Especially since the library people were migrating from (remark/rehype) was very laissez-faire in regard to the data you have access to, visiting patterns, etc.
Crossing data between Rust and JS is inherently kinda slow (relatively), so there's a constant push and pull between flexibility and performance that's not always easy to reason about!
I probably only use 1 % of Astro's features, but I like how it's enabled me to build static sides as back in the days, but with a build pipeline.
So I can use components, reuse stuff, include stuff etc, basically what I would do with PHP back in the days, but now it spits out a compiled page I can host for cheap (often even free). And easy to add in some interactivity when needed. Like I render a list as a component, and very easy to ship some dynamic filtering on the frontend using the same code, but the content is still statically in the html, so served fast and good SEO.
The AI Enhancements section was interesting. I've been wondering about the best practices for agents interacting with long-running dev servers, and Astro 7's approach (run in background and have a logs command) seems like a good model.
The switch to strict HTML compilation is just not cool, and actively prevents upgrading sites which need to deal with remote content that is not written in strict HTML.
I also wish there could be a general purpose content processing API so I can plug a different format than markdown (such as typst)
Unfortunately, I've also come across .astro files that I'm not allowed to touch and yet have to work with them (some internal corporate dinosaur which has not been updated for a while).
For my personal site, it was a 5 minute work, as usual :)
For me currently nothing beats Astro + Claude Code for building sites, maybe with some image generator sprinkled in. Build time improvements are always welcome, great job!
I upgraded my website recently and it's exciting! That being said, I admit my builds didn't get faster (they actually on average slowed down a bit). Hopefully that improves, but worth noting.
I have been trying to convince my marketing department to replace there archaic wordpress with an Astro build with AstroCMS and markdown for there needs.
I have build several sites using Astro 6, and i am finding the ease of building the sites amazing and exceptional in SEO as well.
We unfortunately released Astro 6 only a few weeks before Vite 8 / Rolldown came out, which is why we did Astro 7 so soon. But there are very few breaking changes compared to Astro 6. That being said, some of these performance improvements (the Sätteri processor) are available in Astro 6 too.
It was partially that, but mostly the Vite version with the Rolldown bundling etc. We typically always need to do a major whenever Vite releases one because it tends to impact us a lot compared to other frameworks for various reasons.
Are these typical build speeds on static sites these days? It's slower than I expected for a rust re-write. (Or I guess maybe the portion re-written in rust is only a small part of the build pipeline time?)
My understanding is that astro isn't considered particularly slow?
I made the Rust compiler and the Rust Markdown pipeline (https://satteri.bruits.org) in this, let me know if you have any questions, glad to answer anything!
Just moved my astro project over to v7 and saterri the other day. Writing MDAST/HAST plugins is so much better/easier, so great job there :)
How does Satteri compare to a standard library like marked (https://github.com/markedjs/marked)?
It depends in what regards you mean, I have some benchmarks here if you'd like to take a look at those: https://github.com/Princesseuh/web-markdown-benchmark
The TL;DR is that `marked` is very light, but a bit on the slower side compared to Sätteri and `markdown-it` (and its forks). I'm not sure how friendly the extensibility is, but Sätteri re-use the same AST format as the unified ecosystem, which might feel more friendly.
Both good options, though!
We just use `marked` currently for some light markdown rendering in a game engine. This does look like it offers much better extensibility if we ever needed that - thanks for the clarity!
Very cool! What was the trickiest part of coding Sätteri?
It was tough to create a plugin API that was both performant and intuitive. Especially since the library people were migrating from (remark/rehype) was very laissez-faire in regard to the data you have access to, visiting patterns, etc.
Crossing data between Rust and JS is inherently kinda slow (relatively), so there's a constant push and pull between flexibility and performance that's not always easy to reason about!
Thanks for your work on this!
great job, that is a huge accomplishment.
love the color scheme
For the good of humanity, I must ask... How much Claude? How much human?
It's very cool to see the JS ecosystem reducing dependencies and I hope this trend continues.
Astro has gone from 247 deps in v6 to 190 in v7.
https://node-modules.dev/#install=astro@7.0.6
https://node-modules.dev/#install=astro@6.0.0
This was actually part of the reason I made the Rust markdown processing, the unified ecosystem is a lot of deps!
I still have some plans in this area that should reduce the overall count further, though.
I probably only use 1 % of Astro's features, but I like how it's enabled me to build static sides as back in the days, but with a build pipeline.
So I can use components, reuse stuff, include stuff etc, basically what I would do with PHP back in the days, but now it spits out a compiled page I can host for cheap (often even free). And easy to add in some interactivity when needed. Like I render a list as a component, and very easy to ship some dynamic filtering on the frontend using the same code, but the content is still statically in the html, so served fast and good SEO.
"The .astro compiler has been rewritten in Rust.".
I'm personally awaiting the rewrite to assembly.
Rust is so powerful it rewrites your code to assembly on-demand every time you compile ;)
The AI Enhancements section was interesting. I've been wondering about the best practices for agents interacting with long-running dev servers, and Astro 7's approach (run in background and have a logs command) seems like a good model.
The switch to strict HTML compilation is just not cool, and actively prevents upgrading sites which need to deal with remote content that is not written in strict HTML.
I also wish there could be a general purpose content processing API so I can plug a different format than markdown (such as typst)
This does not affect remote content, only the content written in .astro files. If you have remote content you'd use something like `set:html`: https://docs.astro.build/en/reference/directives-reference/#...
See this example: https://stackblitz.com/edit/github-ug3paw61?file=src%2Fpages...
Unfortunately, I've also come across .astro files that I'm not allowed to touch and yet have to work with them (some internal corporate dinosaur which has not been updated for a while).
For my personal site, it was a 5 minute work, as usual :)
this terrified me lol I'm on 5.1.x on most of my sites
I saw the integration with Hono - hadn't heard of it before, do many people use it?
For me currently nothing beats Astro + Claude Code for building sites, maybe with some image generator sprinkled in. Build time improvements are always welcome, great job!
I upgraded my website recently and it's exciting! That being said, I admit my builds didn't get faster (they actually on average slowed down a bit). Hopefully that improves, but worth noting.
How many pages is it? The performance improvements are mostly for larger sites (thousands of pages) and especially when using a lot of MDX.
We're working on incremental builds which should help as well: https://github.com/withastro/roadmap/issues/1388
I have been trying to convince my marketing department to replace there archaic wordpress with an Astro build with AstroCMS and markdown for there needs.
I have build several sites using Astro 6, and i am finding the ease of building the sites amazing and exceptional in SEO as well.
What’s AstroCMS?
I really really like Astro, but I'm either getting old or it's something else.
I just recently updated my website to Astro 6 and now... there's Astro 7. Maybe by the time I update, Astro 8 will be a few weeks in the future.
We unfortunately released Astro 6 only a few weeks before Vite 8 / Rolldown came out, which is why we did Astro 7 so soon. But there are very few breaking changes compared to Astro 6. That being said, some of these performance improvements (the Sätteri processor) are available in Astro 6 too.
(As an outsider, ) I suspect it's because the Rust rewrite was big enough to bump the main version number.
It was partially that, but mostly the Vite version with the Rolldown bundling etc. We typically always need to do a major whenever Vite releases one because it tends to impact us a lot compared to other frameworks for various reasons.
Are these typical build speeds on static sites these days? It's slower than I expected for a rust re-write. (Or I guess maybe the portion re-written in rust is only a small part of the build pipeline time?)
My understanding is that astro isn't considered particularly slow?
Exhausting
because money