1.6 KiB
1.6 KiB
Why use cmark and not X?
hoedown
hoedown (which derives from sundown) is slightly faster
than cmark in our benchmarks (0.21s vs. 0.29s). But both
are much faster than any other available implementations.
hoedown boasts of including "protection against all possible
DOS attacks," but there are some chinks in the armor:
% time python -c 'print(("[" * 50000) + "a" + ("]" * 50000))' | cmark
...
user 0m0.073s
% time python -c 'print(("[" * 50000) + "a" + ("]" * 50000))' | hoedown
...
0m17.84s
hoedown has many parsing bugs. Here is a selection (as of
v3.0.3):
% hoedown
- one
- two
1. three
^D
<ul>
<li>one
<ul>
<li>two</li>
<li>three</li>
</ul></li>
</ul>
% hoedown
## hi\###
^D
<h2>hi\</h2>
% hoedown
[ΑΓΩ]: /φου
[αγω]
^D
<p>[αγω]</p>
% hoedown
```
[foo]: /url
```
[foo]
^D
<p>```</p>
<p>```</p>
<p><a href="/url">foo</a></p>
% hoedown
[foo](url "ti\*tle")
^D
<p><a href="url" title="ti\*tle">foo</a></p>
% ./hoedown
- one
- two
- three
- four
^D
<ul>
<li>one
<ul>
<li>two</li>
<li>three</li>
<li>four</li>
</ul></li>
</ul>
discount
cmark is about six times faster.
kramdown
cmark is about a hundred times faster.
kramdown also gets tied in knots by pathological input like
python -c 'print(("[" * 50000) + "a" + ("]" * 50000))'