[0.28] * Allow unlimited balanced pairs of parentheses in link URLs (@kivikakk, jgm/cmark#166). The rationale is that there are many URLs containing unescaped nested parentheses. Note that implementations are allowed to impose limits on parentheses nesting for performance reasons, but at least three levels of nesting should be supported. * Change Rule 14 for Emphasis. Previously the nesting Strong (Emph (...)) was preferred over Emph (Strong (...)). This change makes Emph (Strong (...)) preferred. Note that the commonmark reference implementations were not entirely consistent about this rule, giving different results for ***hi*** and ***hi**** This change simplifies parsing. It goes against the majority of implementations, but only on something utterly trivial. * Clarify definition of delimiter runs (Aidan Woods, #485). * Clarify precedence of thematic breaks over list items in the list spec, not just the thematic break spec (Aidan Woods). * Clarify definition of link labels and normalization procedure (Matthias Geier, #479). * Clarify that the end of an HTML block is determined by its start, and is not changed by HTML tags encountered inside the block. Give an example of a case where a block ends before an interior element has been closed (Yuki Izumi, #459). In the future we might consider changing the spec to handle this case more intuitively; this change just documents more explicitly what the spec requires. * Acknowledge Aaron Swartz's role in developing Markdown. * Remove misleading backslash in example for disabling image markup (Matthias Geier). * Fix Unicode terminology (general category, not class) (Philipp Matthias Schaefer). * Add another illustrative case for code spans (#463). * Remove possibly misleading 'either's (#467). * Fix typo (Aidan Woods). * Clarify that some blocks can contain code spans (Matthias Geier). * Fix typo and clarified tab expansion rule (Scott Abbey). * Add a missing "iff" (Matthias Geier). * Add release checklist. * Added npm package for spec (Vitaly Puzrin). * Remove SPEC variable from Makefile. [0.27] * Update statement on blank lines and lists (Jesse Rosenthal). The definition of a list still said that "two blank lines end all containing lists." That rule has been removed. * Clarify that the exception for ordered lists only applies to first item in list (#420). * Added cases clarifying precedence of shortcut links (#427). * Added h2..h6 to block tag list (#430). * Remove duplicated test (Maxim Dikun). Tests 390 and 391 were the same. * Use fenced code blocks for markdown examples that are not test cases for uniformity. * Added closing paren (#428). * Test suite: Don't mess up on examples with 32 backticks (#423). * Removed duplicate reference to "container block". * Add examples for Unicode whitespace (Timothy Gu). In light of jgm/commonmark.js#107, add a few examples/test cases to make sure the distinction between Unicode whitespace and regular whitespace is kept. * Fix missing closing paren typo (Robin Stocker). [0.26] * Empty list items can no longer interrupt a paragraph. This removes an ambiguity between setext headers and lists in cases like foo - Removed the "two blank lines breaks out of lists" rule. This is incompatible with the principle of uniformity (and indeed with the spec for list items, which requires that the meaning of a chunk of lines not change when it is put into a list item.) * Ordered list markers that interrupt a paragraph must start with 1. * Improved the section on tabs. Added some test cases for ATX headers and thematic breaks. Clarified that it's not just cases that affect indentation that matter, but all cases where whitespace matters for block structure. * Removed example of ATX header with tab after `#`. * Allow HTML blocks to end on the last line of their container (Colin O'Dell, #103). * Spec changes in strong/emph parsing. See https://talk.commonmark.org/t/emphasis-strong-emphasis-corner-cases/2123 for motivation. This restores intuitive parsings for a number of cases. The main change is to disallow strong or emph when one of the delimiters is "internal" and the sum of the lengths of the enclosing delimiter runs is a multiple of 3. Thus, `**foo*bar***` gets parsed `foo*bar` rather than `foobar**` as before. Thanks to Fletcher Penney for discussion. * Add tests to check that markdown parsing is working fine after an HTML block end tag (Alexandre Mutel). * Add test case for nested lists with an indent > 4 (Alexandre Mutel). * Cleaned up terminology around lazy continuation lines. Added some links. * Fixed broken links and typos (Artyom, Matthias Geier, Sam Estep). * Use `≤` instead of `<` in list item spec for clarity. * Add point about readibility to "What is Markdown" section. * Add example for list item starting with a blank line with spaces (Robin Stocker). * Make interact more button-like and clearer (Jeff Atwood). * `spec_tests.py`: exit code is now sum of failures and errors. * `spec_tests.py`: specify newline when opening file. [0.25] * Added several more tab-handling cases (see jgm/cmark#101). * Fixed spec test for tabs. In the blockquote with a tab following the `>`, only one space should be consumed, yielding two spaces at the beginning of the content. * Update license year range to 2016 (Prayag Verma). * Fixed typo: setext heading line -> setext heading underline (#389). * Fixed date 2015->2016 (#388) [0.24] * New format for spec tests, new lua formatter for specs. The format for the spec examples has changed from . markdown . html . to ```````````````````````````````` example markdown . html ```````````````````````````````` One advantage of this is that `spec.txt` becomes a valid CommonMark file. * Change `tests/spec_test.py` to use the new format. * Replace `tools/makespec.py` with a lua script, `tools/make_spec.lua`, which uses the `lcmark` rock (and indirectly libcmark). It can generate HTML, LaTeX, and CommonMark versions of the spec. Pandoc is no longer needed for the latex/PDF version. And, since the new program uses the cmark API and operates directly on the parse tree, we get much more reliable translations than we got with the old Python script (#387). * Remove whitelist of valid schemes. Now a scheme is any sequence of 2-32 characters, beginning with an ASCII letter, and containing only ASCII letters, digits, and the symbols `-`, `+`, `.`. Discussion at . * Added an example: URI schemes must be more than one character. * Disallow spaces in link destinations, even inside pointy braces. Discussion at and . * Modify setext heading spec to allow multiline headings. Text like Foo bar --- baz is now interpreted as heading + paragraph, rather than paragraph + thematic break + paragraph. * Call U+FFFD the REPLACEMENT CHARACTER, not the "unknown code point character." * Change misleading undefined entity name example. * Remove misleading claim about entity references in raw HTML (a regression in 0.23). Entity references are not treated as literal text in raw HTML; they are just passed through. * CommonMark.dtd: allow `item` in `custom_block`. [0.23] * Don't allow space between link text and link label in a reference link. This fixes the problem of inadvertent capture: [foo] [bar] [foo]: /u1 [bar]: /u2 * Rename "horizontal rule" -> "thematic break". This matches the HTML5 meaning for the hr element, and recognizes that the element may be rendered in various ways (not always as a horizontal rule). See http://talk.commonmark.org/t/horizontal-rule-or-thematic-break/912/3 * Rename "header" -> "heading". This avoids a confusion that might arise now that HTML5 has a "header" element, distinct from the "headings" h1, h2, ... Our headings correspond to HTML5 headings, not HTML5 headers. The terminology of 'headings' is more natural, too. * ATX headers: clarify that a space (or EOL) is needed; other whitespace won't do (#373). Added a test case. * Rewrote "Entities" section with more correct terminology (#375). Entity references and numeric character references. * Clarified that spec does not dictate URL encoding/normalization policy. * New test case: list item code block with empty line (Craig M. Brandenburg). * Added example with escaped backslash at end of link label (#325). * Shortened an example so it doesn't wrap (#371). * Fixed duplicate id "attribute". * Fix four link targets (Lucas Werkmeister). * Fix typo for link to "attributes" (Robin Stocker). * Fix "delimiter" spellings and links (Sam Rawlins). * Consistent usage of "we" instead of "I" (renzo). * CommonMark.dtd - Rename `html` -> `html_block`, `inline_html` -> `html_inline` for consistency. (Otherwise it is too hard to remember whether `html` is block or inline, a source of some bugs.) * CommonMark.dtd - added `xmlns` attribute to document. * CommonMark.dtd - added `custom_block`, `custom_inline`. * CommonMark.dtd - renamed `hrule` to `thematic_break`. * Fixed some HTML inline tests, which were actually HTML blocks, given the changes to block parsing rules since these examples were written (#382). * Normalize URLs when comparing test output. This way we don't fail tests for legitimate variations in URL escaping/normalization policies (#334). * `normalize.py`: don't use `HTMLParseError`, which has been removed as of python 3.5 (#380). * Minor spacing adjustments in test output, to match cmark's output, since we test cmark without normalization. * `makespec.py`: remove need for link anchors to be on one line. * `makespec.py`: Only do two levels in the TOC. * Use `display:inline-block` rather than floats for side-by-side. This works when printed too. * Added better print CSS. [0.22] * Don't list `title` twice as HTML block tag (Robin Stocker). * More direct example of type 7 HTML block starting with closing tag. * Clarified rule 7 for HTML blocks. `pre`, `script`, and `style` are excluded because they're covered by other rules. * Clarified that type 7 HTML blocks can start with a closing tag (#349). * Removed `pre` tag from rule 6 of HTML blocks (#355). It is already covered by rule 1, so this removes an ambiguity. * Added `iframe` to list of tags that always start HTML blocks (#352). * Added example of list item starting with two blanks (#332). * Added test case clarifying laziness in block quotes (see jgm/commonmark.js#60). * Add an example with mixed indentation code block in "Tabs" section (Robin Stocker). This makes sure that implementations skip columns instead of offsets for continued indented code blocks. * Clarified that in ATX headers, the closing `#`s must be unescaped, and removed misleading reference to "non-whitespace character" in an example (#356). * Changed anchor for "non-whitespace character" to reflect new name. * Removed ambiguities concerning lines and line endings (#357, Lasse R.H. Nielsen). The previous spec allowed, technically, that a line ending in `\r\n` might be considered to have two line endings, or that the `\r` might be considered part of the line and the `\n` the line ending. These fixes rule out those interpretations. * Clarify that a character is any code point. * Space in "code point". * Capitalize "Unicode". * Reflow paragraph to avoid unwanted list item (#360, #361). * Avoid extra space before section number in `spec.md`. * `makespec.py`: Use `check_output` for simpler `pipe_through_prog`. * In README, clarified build requirements for `spec.html`, `spec.pdf`. * Fixed some encoding issues in `makespec.py` (#353). * Fixed various problems with `spec.pdf` generation (#353). * Added version to coverpage in PDF version of spec. [0.21.1] * Added date. [0.21] * Changed handling of tabs. Instead of having a preprocessing step where tabs are converted to spaces, we now handle tabs directly in the parser. This allows tabs to be retained in code blocks and code spans. This change adds some general language to the effect that, for purposes of determining block structure, tabs are to be treated just like equivalent spaces. * Completely rewrote spec for HTML blocks. The new spec provides better handling of tags like ``, which can be either block or inline level content, better handling of custom tags, and better handling of verbatim contexts like `
`, comments,
    and `