rstml
Rust templating for XML-based formats (HTML, SVG, MathML) implemented on top of proc-macro::TokenStreams
0.13.0
4.6M downloads/mo
#4702 most downloaded on crates.io
rs-tml/rstml
What this package is like to depend on
Last release 1 months ago
22 Jul 2026
Release timing varies
gaps range from 4 weeks to 1.5 years
Some releases are documented
notes for 4 of 7 stable releases
7 versions withdrawn
withdrawn after publishing
3 years old
14 releases · first in 2023
1 release in the last 12 months
see the full history below
Release timeline
14 releases · May 2023 to Jul 2026Releases
latest 14-
0.13.022 Jul 2026Release notes
Open source →Chore
- Update deps versions.
- Add fix for merge tests.
- Apply clippy fixups.
Features
- Update to new syn version
Fix
- Usage of unquoted comments, and package build
- Update deps + fix new nightly line number format.
- Fix typo
- Rewrite parser for Generics in tag.
Other
- Update dependency versions.
- Support HTML comments
- Partial progress toward working const generic arguments
Refactor
- Destructure WalkNodesOutput extend
-
0.12.121 Jan 2025Nothing published for this version
-
0.12.028 Jul 2024Release notes
Open source →What's Changed
- coresponding -> corresponding by @dezren39 in #30
- chore: fix ci by @ModProg in #36
- fix: readme example by @mrchantey in #33
- feat: support for custom node by @ModProg in #34
- Fix minor by @vldm in #40
- Fix spelling mistake "witespace" to "whitespace" by @PizzasBear in #41
- Allow multiple puncts in a row in NodeName by @PizzasBear in #42
- Refactor custom node implementation, add visitor API and stable unqoted text. by @vldm in #44
- Update README.md by @vldm in #50
- default impl for Parser (#51) by @zahash in #52
- feat: initial implementation of key value block attributes by @tachibanayui in #49
- Refactor workspace move rstml to separate folder. by @vldm in #55
New Contributors
- @dezren39 made their first contribution in #30
- @ModProg made their first contribution in #36
- @mrchantey made their first contribution in #33
- @PizzasBear made their first contribution in #41
- @zahash made their first contribution in #52
- @tachibanayui made their first contribution in #49
Full Changelog: v0.11.2...v0.12.0
Or generated from commit: https://github.com/rs-tml/rstml/blob/main/CHANGELOG.md
Release notes
Open source →Chore
- Update html-to-macro example
- Move ide feature of html-to-string example to separate macro.
- Fix ci
- Add powered by section in readme.
- Fix ci
- Fix clippy
- Add example of custom node to html-to-string-macro.
- Add eq and partial eq implementation.
- Move custom node implementation to separate crate.
- Refactor CustomNode trait
- Add readme to rstml-controll-flow
- Refine visitor api (remove clone/debug bounds)
- Add custom node visitor implementation
- Apply fmt/tests
- Refactor custom node visitor.
- Refactor code coverage script.
Features
- Allow disabling color diagnostics
- Support for custom node
- Parsing utilities for custom nodes
- Add macro matcher
- Add visitor api.
- Implement extendable custom node
Fix
- Export NodeNameFragment
- Fix imports in example
- Empty input parsing
- Make Recoverable field public.
- Fix spelling mistake "witespace" to "whitespace"
- Add unquoted text custom node integration
- Use config and diagnostc from invalid_block in attribute place.
Other
- Coresponding -> corresponding
- Use example from inline docs in readme
- Address review
- Allow multiple puncts in a row in NodeName
- Added test for consecutive punctuation in NodeName
Signed-off-by: max [email protected]
- Update README.md
- Default impl for Parser (#51)
- Initial implementation of block attributes
- Implement braced key value attribute. See also: #54
- Remove scratch
- Rename KVAttributeValue::Braced -> KVAttributeValue::InvalidBraced
Refactor
- Refactor workspace move rstml to separate folder.
Use workspace version of dependencies whenever is possible.
-
0.11.214 Aug 2023Nothing published for this version
-
0.11.114 Aug 2023Nothing published for this version
-
0.11.018 Jul 2023Release notes
Open source →Chore
- Clippy ci
- Apply fmt fixes
- Add tests for fn binding syntax.
Documentation
- Doc test formatting
Features
- Add generics support to node element.
- FnBinding pattern
- Feat: add number support in NodeName attribute
Make NodeName compatible with SGML basic types specification (by adding support of more than one punctuation in series).
Fix
- Allow wildcard in any element.
Other
-
Update README.md
-
Allow wildcard close tag for block elements
-
Make block element close wildcard more general
New Contributors
- @pyrossh made their first contribution in #18
- @LLBlumire made their first contribution in #20
Release notes
Open source →Chore
- Clippy ci
- Apply fmt fixes
- Add tests for fn binding syntax.
Documentation
- Doc test formatting
Features
- Add generics support to node element.
- FnBinding pattern
- Feat: add number support in NodeName attribute Make NodeName compatible with SGML basic types specification (by adding support of more than one punctuation in series).
Fix
- Allow wildcard in any element.
Other
- Update README.md
- Allow wildcard close tag for block elements
- Make block element close wildcard more general
-
0.10.617 May 2023 -
0.10.517 May 2023 withdrawn -
0.10.417 May 2023 withdrawn -
0.10.314 May 2023 withdrawn -
0.10.214 May 2023 withdrawn -
0.10.113 May 2023 withdrawnNothing published for this version
-
0.10.013 May 2023 withdrawnRelease notes
Open source →Chore
- Refactor node module, split types into submodules
- Update to syn 2.0
- Implement config passing, and allow to emit more than one error from macro expansion.
- Make Node types clonable.
- Fix recoverable parser. Now try to recover if any sequence is incorrect.
- Bump syn_derive to 0.1.6 to avoid nightly
- Start a new version history
Documentation
- Add comparsion with syn-rsx
Features
- Remove attributes from node list, and make type guaranties that attribute will be stored only in Element
- Improve tag close handling.
- Allow parsing of invalid rust code blocks
- Add support of unqoted text.
Fix
- Refactor ToTokens implementation and node structure to contain all source tokens.
- Re-implement tree flattening.
- Reimplement transform_block and fix tests
- Attribute value parsing span
- Updated example, bench, made fragment parsing recoverable.
- Make public keyed attribute fields.
- RawText to_source implementation on stable
Refactor
- Move node.rs to separate module.
- Remove Display implementation for most of node types.
- Simlify Parse and ToToken impl, by using syn_derive.
- Refactor: remove NodeValueExpr type NodeValueExpr was replaced by syn::Expr in all places where expr is needed. For places where {code} is expected NodeBlock was used.
- Cleanup of parsing code.
- Refactor recoverable parser.
- Refactor: Remove tls context at all. Use RecoverableContext instead.
Testing
- TRYBUILD=overwrite in ui tests
-
0.9.012 May 2023 withdrawnRelease notes
Open source →