| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> |
| <pkgmetadata> |
| <maintainer type="project"> |
| <email>haskell@gentoo.org</email> |
| <name>Gentoo Haskell</name> |
| </maintainer> |
| <longdescription> |
| This package provides Haskell bindings for |
| <https://github.com/jgm/cmark libcmark>, the reference |
| parser for <http://commonmark.org CommonMark>, a fully |
| specified variant of Markdown. It includes sources for |
| libcmark (0.19.0) and does not require prior installation of the |
| C library. |
| |
| cmark provides the following advantages over existing |
| Markdown libraries for Haskell: |
| |
| - Speed: Conversion speed is on par with the |
| <https://hackage.haskell.org/package/sundown sundown> |
| library. We were unable to measure precisely |
| against |
| <https://hackage.haskell.org/package/sundown sundown>, |
| which raised a malloc error when compiled into our |
| benchmark suite. Relative to other implementations: |
| cmark was 82 times faster than |
| <https://hackage.haskell.org/package/cheapskate cheapskate>, |
| 59 times faster than |
| <https://hackage.haskell.org/package/markdown markdown>, |
| 105 times faster than |
| <https://hackage.haskell.org/package/pandoc pandoc>, |
| and 2.8 times faster than |
| <https://hackage.haskell.org/package/discount discount>. |
| |
| - Memory footprint: Memory footprint is on par with |
| <https://hackage.haskell.org/package/sundown sundown>. |
| On one sample, the library uses a fourth the memory that |
| <https://hackage.haskell.org/package/markdown markdown> |
| uses, and less than a tenth the memory that |
| <https://hackage.haskell.org/package/pandoc pandoc> |
| uses. |
| |
| - Robustness: cmark can handle whatever is thrown |
| at it, without the exponential blowups in parsing |
| time one can sometimes get with other libraries. |
| (The input @bench\/full-sample.md@, for example, |
| causes both |
| <https://hackage.haskell.org/package/pandoc pandoc> |
| and |
| <https://hackage.haskell.org/package/markdown markdown> |
| to grind to a halt.) |
| |
| - Accuracy: cmark passes the CommonMark spec\'s |
| suite of over 500 conformance tests. |
| |
| - Standardization: Since there is a spec and a |
| comprehensive suite of tests, we can have a high |
| degree of confidence that any two CommonMark |
| implementations will behave the same. Thus, for |
| example, one could use this library for server-side |
| rendering and |
| <https://github.com/jgm/commonmark.js commonmark.js> |
| for client-side previewing. |
| |
| - Ease of installation: cmark is portable and has |
| minimal dependencies. |
| |
| cmark does not provide Haskell versions of the whole |
| <https://github.com/jgm/cmark libcmark> API, which is |
| built around mutable @cmark_node@ objects. Instead, it |
| provides functions for converting CommonMark to HTML |
| (and other formats), and a function for converting |
| CommonMark to a @Node@ tree that can be processed |
| further using Haskell. |
| |
| A note on security: This library does not attempt |
| to sanitize HTML output. We recommend using |
| <https://hackage.haskell.org/package/xss-sanitize xss-sanitize> |
| to filter the output. |
| |
| A note on stability: There is a good chance the API |
| will change significantly after this early release. |
| </longdescription> |
| <upstream> |
| <remote-id type="github">jgm/commonmark-hs</remote-id> |
| </upstream> |
| </pkgmetadata> |