chore(deps): update rust crate comrak to 0.54.0 - #53
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
6 times, most recently
from
July 15, 2026 02:38
42285e7 to
10eacf5
Compare
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
9 times, most recently
from
July 19, 2026 10:04
5ddec88 to
e729b1f
Compare
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
10 times, most recently
from
August 1, 2026 08:36
d6e1985 to
95ad001
Compare
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
4 times, most recently
from
August 2, 2026 06:43
eb35b84 to
bde1b21
Compare
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
9 times, most recently
from
August 6, 2026 15:12
f6f6127 to
8b47de3
Compare
renovate
Bot
force-pushed
the
renovate/comrak-0.x
branch
from
August 11, 2026 22:29
8b47de3 to
2ff5f22
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.22→0.54.0Release Notes
kivikakk/comrak (comrak)
v0.54.0Compare Source
Changed APIs:
aria-hidden, and gets a properaria-label. It also now appears at the end of the header, not the front.html::collect_texthas been moved ontoNode(by @kivikakk in #818)New APIs:
Bug fixes:
Dependency updates:
1.1.0+spec-1.1.0to1.1.2+spec-1.1.0(by@dependabot[bot]in #819)New Contributors
Diff: kivikakk/comrak@v0.53.0...v0.54.0
v0.53.0Compare Source
Changed APIs:
aria-hidden, and gets a properaria-label. It also now appears at the end of the header, not the front.html::collect_texthas been moved ontoNode(by @kivikakk in #818)New APIs:
Bug fixes:
Dependency updates:
1.1.0+spec-1.1.0to1.1.2+spec-1.1.0(by@dependabot[bot]in #819)New Contributors
Diff: kivikakk/comrak@v0.53.0...v0.54.0
v0.52.0Compare Source
Changed APIs:
--inplacenow accepts multiple arguments (by @ilkecan in #792)Bug fixes:
~,~~~and:::are escaped in CommonMark output (by @sandmor in #791)Stability:
Dependency updates:
@dependabot[bot]in #793)@dependabot[bot]in #797)@dependabot[bot]in #794, #798, #799)@dependabot[bot]in #810)@dependabot[bot]in #811)Documentation:
Build changes:
--no-default-features. Please read the pull request for more details; suggestions/fixes most appreciated!New Contributors
Diff: kivikakk/comrak@v0.52.0...v0.53.0
v0.51.0Compare Source
Happy April!
Reverts:
Changed APIs:
header_idsin favor ofheader_id_prefix, to make it clear that the option value actually adds a prefix to theidattribute, and add theheader_id_prefix_in_hrefoption, which adds the same prefix to generatedhrefs. (by @miketheman in #776)>amongst blockquotes won't trigger greentext when enabled.New APIs:
Sourcepos. They report by default in byte columns according to the input UTF-8 source. (by @Martin005 in #779)Dependency updates:
@dependabot[bot]in #778)15c22fa)Documentation:
CONTRIBUTING.mdthat directs the reader to the README's contributing section. (ddae155)Build changes:
codegen-units = 1for release builds. (suggested by @zamazan4ik, added inea026ef)Behind the scenes:
New Contributors
Diff: kivikakk/comrak@v0.51.0...v0.52.0
v0.50.0Compare Source
新年快乐! :) What a lovely assortment of improvements, fixes, and new contributors we have in this release. Of particular note, Comrak has gained initial support for formatting to Typst, thanks to @neilberkman! This is a first cut and there are some known issues — see the PR — but I'm super happy to have folks testing it sooner rather than later!
Changed APIs:
New APIs:
RenderPlugins::codefence_renderersto register language-specific codefence renderers. (by @neilberkman in #751)CodefenceRendererAdapterfor language-specific codefence rendering. Itswritemethod receives parsed codefence language and metadata (lang,meta) alongside code and source position. (by @neilberkman in #751)++insert++extension and guillemet smart punctuation. (by @neilberkman in #754)compact_htmlrender option to suppress newlines in pretty-printing. (by @xvchris in #769)Bug fixes:
sourceposfor inserted table cells. (by @Martin005 in #747)Dependency updates:
unicode_categorieswithfinl_unicodefor Unicode character categories. (by @Martin005 in #757)3.8.2to3.9.0. (by@dependabot[bot]in #759)4.5.54to4.5.60. (by@dependabot[bot]in #748, #756, #758, #766)0.27.2to0.28.0. (by@dependabot[bot]in #765)0.3.36to0.3.47in/fuzz. (by@dependabot[bot]in #744)0.9.10+spec-1.1.0to1.0.3+spec-1.1.0. (by@dependabot[bot]in #742, #760, #767)Documentation:
alerts(admonitions) to README. (by @kritzelkrak in #761)LineColumn, and fix shortcode context link. (by @Martin005 in #764)New Contributors
Diff: kivikakk/comrak@v0.50.0...v0.51.0
v0.49.0Compare Source
The big news is that I've updated Comrak to use Rust 2024, which means our MSRV has been updated to
1.85. I'm sorry if this affects you negatively! Keeping dependencies up-to-date while respecting
our MSRV is basically impossible without the MSRV
resolver, and I've spent far too many
hours of my short life trying to do without it. Thank you for your understanding 🤍
Bug fixes:
sourceposfor lists before CodeBlocks fixed. (by @Martin005 in #712)sourceposfor HTML and HEEx blocks inside blockquotes fixed. (by @Martin005 in #714)Performance:
Dependency updates:
Documentation:
Build changes:
Behind the scenes:
Diff: kivikakk/comrak@v0.49.0...v0.50.0
v0.48.0Compare Source
New APIs:
xin[x]). (by @kivikakk in #705)Build changes:
Behind the scenes:
find_special_charlogic for inlines. (by @liamwhite in #692)byte_matcheshelper to simplifyget/map_orchaining tests in parser. (by @liamwhite in #694)create_formattermacro a bit. (by @nberlette in #704)New Contributors
Diff: kivikakk/comrak@v0.48.0...v0.49.0
v0.47.0Compare Source
The breaking changes are listed right at the top! Please note that AST content now represents
NULbytes (codepoint number zero) as they were in the input; these used to be translated to the lovely � character at the very beginning of the input process, presumably so the rest of the reference C parser didn't have to deal with the possibility of strings containing NUL bytes. We can do better, though, so let's! The � character is now emitted by our formatters in place ofNUL, but if you use custom or manual formatters and emit any part of the AST content directly (without usingcomrak::html::escape,context::html::escape_href, or the same-named functions onContext), you may need to do the same translation yourself.We also no longer append a newline to the end of the file where there wasn't one originally, which meant a lot of places in the parser had to adapt to their strings not necessarily containing a newline before they ended. Careful review and extensive fuzzing should have squeaked out any unexpected overruns, but consider my eyes peeled for reports regarding this. (Ew.) We've cleaned up some sourcepos calculation which depended on this behaviour in odd ways, but there may yet be more to discover which our test suite didn't catch.
Did you know November is Trans Month? I didn't! I'm guessing it's because Trans Awareness Week falls within it, and we've been having a pretty bad time of it rights-wise around the world lately!
Happy Trans Month, and if you happen to typo it as Trans Moth, we can be happy about that too! 🏳️⚧️ ᖭི༏ᖫྀ
Parser changes:
NULbytes intoU+FFFD REPLACEMENT CHARACTERin the parse stage; do it in formatters instead. (by @kivikakk in #681)NULbytes where they were present in input, preserving the difference betweenNULand literally-entered�characters.Changed APIs:
%25in hrefs where not part of a percent-encode sequence. (by @kivikakk in #687)%character alone, such that[link](%%20)would roundtrip without change. It now roundtrips to[link](%25%20).[…], and no longer turns single-byte UTF-8 characters into the Unicode codepoint numbered at the UTF-8 byte (!). (by @kivikakk in #689)New APIs:
highlightextension,==for highlights==! These render with<mark>in the HTML formatter. (by @pferreir in #672)comrak::Node<'a>as an alias forcomrak::nodes::Node<'a>. (by @kivikakk in #673)comrak::Arena<'a>as an alias fortyped_arena::Arena<comrak::nodes::AstNode<'a>>. (by @kivikakk in #675)From<(LineColumn, LineColumn)>impl forSourcepos. (by @kivikakk in #675)comrak::nodes::NodeValue::xml_node_namepublic, when you want a handy-to-access name for a node type. (by @kivikakk in #673)options.parse.leave_footnote_definitions; this option causes footnote definitions to not be relocated to the bottom of the document, and unused references not to be garbage collected, for use with custom formatters. (by @kivikakk in #673)Bug fixes:
\[x]still being eligible for tasklist inclusion despite the escaped[. (by @kivikakk in #679)Performance:
NULand not appending a virtual EOF newline; compare before and after.Build changes:
Behind the scenes:
inlines::Scanner, reducing some needless allocations. (by @kivikakk in #675)all_optionsfuzzer now fuzzes across all options, and not just with most of them switched on. (by @kivikakk in #678)New Contributors
Diff: kivikakk/comrak@v0.47.0...v0.48.0
v0.46.0Compare Source
Martin Chrástek has fixed all known sourcepos issues in Comrak, while closing a number of other bugs at the same time! I'm so happy.
New APIs:
NodeCodeBlocknow has aclosedproperty. (by @Martin005 in #661)NodeHeadingnow has aclosedproperty, for closed ATX-style headings. (by @Martin005 in #665)Bug fixes:
EscapedandEscapedTagno longer fail AST validation when formatting as CommonMark with debug assertions. (by @kivikakk in #662, #664)Build changes:
Diff: kivikakk/comrak@v0.46.0...v0.47.0
v0.45.0Compare Source
Please note the MSRV has been bumped from 1.65 to 1.70; see the pull request for more details. It's a kind of sticky and awkward situation — thanks to the inevitability of Progress — with no particularly clean solution. (wherein telling GCC 15 users "sorry it just won't build from source for you without messing with dependencies" is not a solution.)
Security:
Parser changes:
New APIs:
subtextextension. (by @Kuuuube in #648, #650)Bug fixes:
escaped_char_spanusers can now successfully format to CommonMark with debug assertions enabled. These ASTs previously did not validate, which currently is enabled experimentally only in CommonMark output in debug. (by @kivikakk in #659)Build changes:
New Contributors
Diff: kivikakk/comrak@v0.45.0...v0.46.0
v0.44.0Compare Source
Welcome to v0.45.0! This is a big update, much of them part of from rc.1 from last week. More context on the size of the update in the changelog there.
The biggest library user-facing changes are ergonomic:
Node<'a>instead of&'a AstNode<'a>, is nice, and so likewisenode.data()instead ofnode.data.borrow(). They're small, but I appreciate them a lot in my own work.You'll also notice more bovine creatures in the Comrak pasture: there's a few
Cow<str>instead ofString, such as inNodeValue::Text. At most an extra.into()will be required; take note if you use any'static str, as they'll no longer need to be heap-allocated. SomeBoxes have been added, too, to reduce the size of everyNodeValue. Let the types guide you.Other than this, the options have been put in their own module (
comrak::options), and a lot of things generally cleaned up. Read below for all the deets! Here's the final performance comparison to v0.44.0 on aarch64:Be well!
Parser changes:
~are no longer recognised as valid delimiters, meaning they will not prevent strikethrough recognition when they occur within correct delimiters. See the PR for discussion. (by @miketheman in #635)cmark-gfm, and follows the intent of the original implementation and implementor (hi!).Changed APIs:
r#unsafeis used instead ofunsafe_. (by @kivikakk in #640)--gemojisis renamed to--gemoji. (by @kivikakk in #641)NodeValue::Textnow contains aCow<'static, str>instead of aString. This is a pretty major change, but means we can now create text nodes with static content without duplicating the string on the heap. This particularly benefits smart quotes and HTML entity resolution. (by @kivikakk in #627)&strwithout issues); to write in-place, use.to_mut()on theCowto get a&mut String. To assign, use.into()on a&strorString, likeNodeValue::Text("moo".into()).NodeValue::text()now returns a&str. It used to return a&String(!).NodeValue::text_mut()now returns a&mut Cow<'static, str>, instead of a&mut String. This permits writing a borrowed reference.Cow; it'd be amazing to refer continuously to the input where possible.NodeValue'sCodeBlock,Table,Link,Image,ShortCodeandAlertvariants' payloads are now boxed. (by @kivikakk in #632)Box::newcall when constructing these nodes, and on matches, pulling the box out and then just dereferencing it directly (e.g.NodeValue::Table(nt) => &nt.alignmentsinstead ofNodeValue::Table(NodeTable { ref alignments }).Astto 128 bytes, and a fullAstNode<'_>to 176 bytes.NodeValueresults in worse performance than doing nothing at all. This change appreciably improves matters.Ast.comrak::options. Structs have been renamed to removeOptionsfrom their name:comrak::RenderOptionsis nowcomrak::options::Render, etc. The old names are marked deprecated. (@kivikakk in #636)URLRewriterandBrokenLinkCallbackhave been moved, without a deprecation period.SyntaxHighlighterAdapter'sattributesarguments now takeHashMap<&'static str, Cow<'s, str>>; they used to takeHashMap<String, String>. (by @kivikakk in #633)html::write_opening_tagcan now take differentAsRef<str>types for the attribute key and value.parse_document_with_broken_link_callbackhas been removed! This entrypoint has been deprecated since 0.25.0. (by @kivikakk in #623)options.render.ignore_setextwas moved tooptions.parse.ignore_setext, as its effect takes place only in the parse stage. (by @kivikakk in #623)nodes::can_contain_typeis nowNode::can_contain_type. (by @kivikakk in #625)New APIs:
node.data()andnode.data_mut()are added as short-hand fornode.data.borrow()andnode.data.borrow_mut()respectively. (by @kivikakk in #643)comrak::nodes::Node<'a>is introduced as an alias for&'a comrak::nodes::AstNode<'a>. (by @kivikakk in #627)options.parse.tasklist_in_tableadded: parse a tasklist item if it's the only content of a table cell. (by @kivikakk in #622)Performance:
strinternally in block and inline processing, eliminating many UTF-8 rechecks. Thestringsmodule actually operates on strings now. (by @kivikakk in #626)Dependency updates:
memchrremoved fromCargo.toml; it wasn't used directly, though it still is included unconditionally due tocaseless. (by @kivikakk in #630)slugis moved to a development-only dependency; it's only used in an example. (by @kivikakk in #630)jetsciiis added for faster string searching, including SIMD on x86_64. (by @kivikakk in #630)Documentation:
READMEexample code is updated to build with recent API changes. (by @kivikakk in #621)Build changes:
shortcodesis enabled by default (but still optional) for CLI builds. (by @kivikakk in #641)syntectis now optional (but still default) in CLI builds. (by @kivikakk in #624)Behind the scenes:
unsafeblocks now have aSAFETYcomment describing why their actions are safe.New Contributors
Diff: kivikakk/comrak@v0.44.0...v0.45.0
v0.43.0Compare Source
Parser changes:
http://localhost(!),www.com(!?), orhttps://(!?!) --- are now part of therelaxed_autolinksoption. See more discussion in the PR. (by @chamlis in #618)New APIs:
inline_footnotesextension and using the syntax^[footnote content](by @sheremetyev in #619)New Contributors
Diff: kivikakk/comrak@v0.43.0...v0.44.0
v0.42.0Compare Source
Parser changes:
superscriptorsubscriptextensions only: punctuation following a superscript or subscript delimiter no longer disqualifies the delimiter from being considered left-flanking, such thate^-i^andn~-i~now parse as superscript or subscript respectively (by @kivikakk in #593)Changed APIs:
html::format_document,xml::format_document,cm::format_documentand friends now take anstd::fmt::Writeas theiroutputargument, instead of anstd::io::Write, to avoid revalidating UTF-8 (by @kivikakk in #601)--header-ids ''for prefix-less headers (by @kivikakk in #610)New APIs:
Documentation updates:
cargo binstallby (@tats-u in #608)Diff: kivikakk/comrak@v0.42.0...v0.43.0
v0.41.1Compare Source
New APIs:
cm::escape_inline(aliased at crate level asescape_commonmark_inline)is added; escapes input text suitable for inclusion in a CommonMark
document where regular inline processing takes place. (by @kivikakk in
#602)
cm::escape_link_destination(aliased at crate level asescape_commonmark_link_destination) is added; escapes input URL suitablefor use as a link destination in a CommonMark document. (by @kivikakk in
#605)
Changed APIs:
html::collect_textnow returns aString.html::collect_text_appendisadded if you still want to start with your own (
String) buffer. (by@kivikakk in #600)
Vec<u8>instead of aString; it was just old.Anchorizer::anchorizernow takes&strinstead of aString. (by@kivikakk in #603)
Updates:
is_cjkin CJK Friendly Emphasis to Unicode 17. (by @tats-u in#598)
Behind the scenes:
#599)
Diff: kivikakk/comrak@v0.41.1...v0.42.0
v0.41.0Compare Source
Bug fixes:
Stability:
Behind the scenes:
relaxed_autolink_email_in_footnotetest by @Mrmaxmeier in #594New Contributors
Diff: kivikakk/comrak@v0.41.0...v0.41.1
v0.40.0Compare Source
New features:
Build changes:
New Contributors
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.