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.
Why does 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, or both.
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.
That said, 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 macro_rules!
instead?
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 macro_rules!
; better diagnostics are a bonus as well.
Maud has had a lot of releases so far. When will it reach 1.0?
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®.
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!