Skip to content

Commit 672c32d

Browse files
committed
Added why-cmark-and-not-x page.
1 parent e343675 commit 672c32d

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

why-cmark-and-not-x.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
Why use `cmark` and not X?
2+
==========================
3+
4+
`hoedown`
5+
---------
6+
7+
`hoedown` (which derives from `sundown`) is slightly faster
8+
than `cmark` in our benchmarks (0.21s vs. 0.29s). But both
9+
are much faster than any other available implementations.
10+
11+
`hoedown` boasts of including "protection against all possible
12+
DOS attacks," but there are some chinks in the armor:
13+
14+
% time python -c 'print(("[" * 50000) + "a" + ("]" * 50000))' | cmark
15+
...
16+
user 0m0.073s
17+
% time python -c 'print(("[" * 50000) + "a" + ("]" * 50000))' | hoedown
18+
...
19+
0m17.84s
20+
21+
`hoedown` has many parsing bugs. Here is a selection:
22+
23+
% hoedown
24+
- one
25+
- two
26+
1. three
27+
^D
28+
<ul>
29+
<li>one
30+
31+
<ul>
32+
<li>two</li>
33+
<li>three</li>
34+
</ul></li>
35+
</ul>
36+
37+
38+
% hoedown
39+
## hi\###
40+
^D
41+
<h2>hi\</h2>
42+
43+
44+
% hoedown
45+
[ΑΓΩ]: /φου
46+
47+
[αγω]
48+
^D
49+
<p>[αγω]</p>
50+
51+
52+
% hoedown
53+
```
54+
[foo]: /url
55+
```
56+
57+
[foo]
58+
^D
59+
<p>```</p>
60+
61+
<p>```</p>
62+
63+
<p><a href="/url">foo</a></p>
64+
65+
66+
% hoedown
67+
[foo](url "ti\*tle")
68+
^D
69+
<p><a href="url" title="ti\*tle">foo</a></p>
70+
71+
72+
`discount`
73+
----------
74+
75+
`cmark` is about six times faster.
76+
77+
`kramdown`
78+
----------
79+
80+
`cmark` is about a hundred times faster.
81+
82+
`kramdown` also gets tied in knots by pathological input like
83+
84+
python -c 'print(("[" * 50000) + "a" + ("]" * 50000))'
85+
86+

0 commit comments

Comments
 (0)