[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#625887: RFP: upskirt -- robust and fast Markdown filter



Package: wnpp
Severity: wishlist


* Package name    : upskirt
  Version         : git commit 7cb1a9e0270952ab6e4d
  Upstream Author : Natacha Porté, Vicent Martí <vicent@github.com>
* URL             : https://github.com/tanoku/upskirt
* License         : MIT
  Programming Lang: C
  Description     : robust and fast Markdown filter

Upskirt

    The Markdown library that sucks less than your Markdown
library

Why doesn't Upskirt suck?

Markdown is not easy to parse: it's not well standarized, and has
a ton of unofficial extensions and corner cases which makes
writing a parser for it not trivial. This also makes any Markdown
parser or converter inherently sucky. Here's why Upskirt is the
least sucky of the Markdown parsers:

    * If your Markdown library is not standards compliant, Upskirt
is.

      Upskirt passes out of the box the official Markdown v1.0.0
and v1.0.3 test suites, and has been extensively tested with
additional corner cases to make sure its output is as sane as
possible at all times.

    * If your Markdown library doesn't support Markdown
extensions, Upskirt does.

      Upskirt has optional support for several (unofficial)
Markdown extensions, such as non-strict emphasis, fenced code
blocks, tables, autolinks, strikethrough and more.

    * If your Markdown library is ready to be used in production,
you are probably in for a surprise.

      Upskirt is the only Markdown library ready to be used in a
production environment where users can submit arbritrary and
potentially malicious contents to render.

      Upskirt has been extensively security audited, and includes
protection against all possible DOS attacks (stack overflows, out
of memory situations, malformed Markdown syntax...) and against
client attacks through malicious embedded HTML.

      We've worked very hard to make Upskirt never crash or run
out of memory under any input. Upskirt renders all the Markdown
content in GitHub and so far hasn't crashed a single time.

    * If your Markdown library only does HTML, Upskirt does much
more.

      Upskirt is not stuck with XHTML output: the Markdown parser
of the library is decoupled from the renderer, so it's trivial to
extend the library with custom renderers. A fully functional XHTML
renderer is included.

    * If your Markdown library is slow, Upskirt is not.

      Upskirt is written in C, with a special emphasis on
performance. When wrapped on a dynamic language such as Python or
Ruby, it has shown to be up to 40 times faster than other native
alternatives.

    * If your Markdown library has unreasonable dependencies,
Upskirt doesn't.

      Upskirt is a zero-dependency library composed of 3 .c files
and their headers. No dependencies, no bullshit. Only standard C99
that builds everywhere.



Reply to: