github commonmark/commonmark-spec 0.16
CommonMark 0.16

latest releases: 0.31.2, 0.31.1, 0.31.0...
9 years ago

Spec changes

  • Rewrote beginning of Entities section, clarifying that only entities not in code blocks or spans are decoded.
  • Removed defective Example 449 (#284).
  • Fixed typo (#283).
  • Added intended two-space hard-breaks in Examples 521, 523.
  • Clarified that brackets in general don't take precedence over emph (#258).
  • Clarified that final newline is removed from paragraph content (#176).
  • Talk of "info string" rather than "attributes" for code blocks (#262).
  • Clarified precedence of code spans, HTML tags, autolinks (#259).
  • Fixed a number of internal links and duplicate references in the spec.
  • Linkify "info string" in spec.
  • Use shortcut reference links when possible in spec.txt.
  • cmark itself is now used to build spec.html, rather than pandoc.
  • Use shortcut reference links when possible in spec.txt. This relies on the new spec2md.py behavior of creating references for all internal anchors.
  • Moved some examples from block to inline HTML section.
  • Added examples of non-comments (#264).
  • Changed rule for comments to conform to HTML5 spec.
  • Made clear that any sequence of characters is a valid document (#266).
  • Changed wording: "is preferred" -> "takes precedence."
  • Regularized spelling of "non-space character" and added links (#260).
  • Use four spaces rather than five to show "four spaces is too much" (#261).

cmark/libcmark

  • Added xml renderer (XML representation of the CommonMark AST, which is described in CommonMark.dtd).
  • Reduced size of gperf entity table (Nick Wellnhofer).
  • Reworked iterators to allow deletion of nodes during iteration (Nick Wellnhofer).
  • Optimized S_is_leaf.
  • Added cmark_iter_reset to iterator API.
  • Added cmark_consolidate_text_nodes to API to combine adjacent text nodes.
  • Added CMARK_OPT_NORMALIZE to options (this combines adjacent text nodes).
  • Added --normalize option to command-line program.
  • Improved regex for HTML comments in inline parsing.
  • Python is no longer required for a basic build from the repository.

commonmark.js

  • Improved regex for HTML comments (#263).
  • Fixed CDATA regex (#267).
  • Use linked list instead of arrays in AST: the same doubly linked node structure as cmark uses. This simplifies some code and eliminates the need for recursive algorithms, so we can render deeply-nested structures without stack overflows.
  • Use children instead of label (in Image and Link), inline_content (in Paragraph), and c (in Emph and Strong).
  • Renamed the c property to literal to match libcmark.
  • Use literal rather than string_content property for code blocks, HTML. string_content is reserved for raw string content that has yet to be parsed as inlines.
  • Improved end lines (#276).
  • Added a node walker, for easy AST traversal (see node.js).
  • Regularized position information into a sourcepos property. Added end column information.
  • Renamed html-renderer.js to html.js.
  • Replace NUL characters with U+FFFD, as per spec.
  • Optimized code, resulting in significant performance gains. (We've gone from being twice as fast as showdown.js to being three times as fast, on par with marked.)
  • Made tight a property of list_data rather than Node.
  • Added options to renderer, parser objections.
  • Added a --sourcepos command line option to js/bin/commonmark.
  • HTML renderer now throws an error on unknown tag type (which indicates a programming error).
  • Removed ansi.js code from the source tree. The test suite now uses its own mini ansi colors implementation.
  • Added --time option to js/bin/commonmark.
  • Added an XML renderer (XML representation of the AST, matching Commonmark.dtd).
  • Changed url property to destination to match cmark and spec.
  • Added js/common.js to hold some common code, like string unescaping and URI normalization.
  • Use decodeURI instead of unescape.
  • Added some "pathological" test cases to test suite.

Don't miss a new commonmark-spec release

NewReleases is sending notifications on new releases.