Frequently asked questions
What is the origin of the name "Maud"?
Maud is named after a character from My Little Pony: Friendship is Magic.
It does not refer to the poem by Alfred Tennyson,
though other people have brought that up in the past.
Here are some reasons why I chose this name:
"Maud" shares three letters with "markup";
The library is efficient and austere, like the character;
Google used to maintain a site called "HTML5 Rocks",
and Maud (the character) is a geologist.
html! always allocate a
String? Wouldn't it be more efficient if it wrote to a handle directly?
Good question! In fact, Maud did work this way in the past.
But it's hard to support buffer reuse in an ergonomic way.
The approaches I tried
either involved too much boilerplate,
or caused mysterious lifetime issues,
Moreover, Maud's allocation pattern—with small, short-lived buffers—follow the fast path in modern allocators.
These reasons are why I changed
html! to return a
String in version 0.11.
Rust has changed a lot since then,
and some of those old assumptions
might no longer hold today.
So this decision could be revisited
prior to the 1.0 release.
Why is Maud written as a procedural macro? Can't it use
This is certainly possible, and indeed the Horrorshow library works this way.
I use procedural macros because they are more flexible.
There are some syntax constructs in Maud that are hard to parse with
Maud has had a lot of releases so far. When will it reach 1.0?
better diagnostics are a bonus as well.
I originally planned to cut a 1.0
after implementing stable support.
But now that's happened,
I've realized that there are a couple design questions
that I'd like to resolve
before marking that milestone.
Expect a blog post on this topic Very Soon®.
Why doesn't Maud implement
I agree that context-aware escaping is very important,
especially for the kind of small-scale development
that Maud is used for.
But it's a complex feature,
with security implications,
so I want to take the time
to get it right.
Please follow #181 for the latest developments!