aboutsummaryrefslogtreecommitdiff
path: root/changelog.txt
blob: 938a1044b0e80dea913822cea3b312f44e61fa56 (plain)
  1. [0.28]
  2.   * Allow unlimited balanced pairs of parentheses in link URLs
  3. (@kivikakk, jgm/cmark#166). The rationale is that there are many URLs
  4. containing unescaped nested parentheses. Note that
  5. implementations are allowed to impose limits on parentheses
  6. nesting for performance reasons, but at least three levels
  7. of nesting should be supported.
  8. * Change Rule 14 for Emphasis. Previously the nesting
  9. Strong (Emph (...)) was preferred over Emph (Strong (...)).
  10. This change makes Emph (Strong (...)) preferred.
  11. Note that the commonmark reference implementations
  12. were not entirely consistent about this rule, giving
  13. different results for
  14. ***hi***
  15. and
  16. ***hi****
  17. This change simplifies parsing. It goes against the majority
  18. of implementations, but only on something utterly trivial.
  19. * Clarify definition of delimiter runs (Aidan Woods, #485).
  20. * Clarify precedence of thematic breaks over list items
  21. in the list spec, not just the thematic break spec (Aidan Woods).
  22. * Clarify definition of link labels and normalization
  23. procedure (Matthias Geier, #479).
  24. * Clarify that the end of an HTML block is determined by its
  25. start, and is not changed by HTML tags encountered inside
  26. the block. Give an example of a case where a block ends
  27. before an interior element has been closed (Yuki Izumi, #459).
  28. In the future we might consider changing the spec to handle
  29. this case more intuitively; this change just documents more
  30. explicitly what the spec requires.
  31. * Acknowledge Aaron Swartz's role in developing Markdown.
  32. * Remove misleading backslash in example for disabling image markup
  33. (Matthias Geier).
  34. * Fix Unicode terminology (general category, not class)
  35. (Philipp Matthias Schaefer).
  36. * Add another illustrative case for code spans (#463).
  37. * Remove possibly misleading 'either's (#467).
  38. * Fix typo (Aidan Woods).
  39. * Clarify that some blocks can contain code spans (Matthias Geier).
  40. * Fix typo and clarified tab expansion rule (Scott Abbey).
  41. * Add a missing "iff" (Matthias Geier).
  42. * Add release checklist.
  43. * Added npm package for spec (Vitaly Puzrin).
  44. * Remove SPEC variable from Makefile.
  45. [0.27]
  46. * Update statement on blank lines and lists (Jesse Rosenthal).
  47. The definition of a list still said that "two blank lines end all
  48. containing lists." That rule has been removed.
  49. * Clarify that the exception for ordered lists only applies to first
  50. item in list (#420).
  51. * Added cases clarifying precedence of shortcut links (#427).
  52. * Added h2..h6 to block tag list (#430).
  53. * Remove duplicated test (Maxim Dikun). Tests 390 and 391 were the same.
  54. * Use fenced code blocks for markdown examples that are not test cases
  55. for uniformity.
  56. * Added closing paren (#428).
  57. * Test suite: Don't mess up on examples with 32 backticks (#423).
  58. * Removed duplicate reference to "container block".
  59. * Add examples for Unicode whitespace (Timothy Gu). In light of
  60. jgm/commonmark.js#107, add a few examples/test cases to make sure the
  61. distinction between Unicode whitespace and regular whitespace is kept.
  62. * Fix missing closing paren typo (Robin Stocker).
  63. [0.26]
  64. * Empty list items can no longer interrupt a paragraph.
  65. This removes an ambiguity between setext headers and
  66. lists in cases like
  67. foo
  68. -
  69. Removed the "two blank lines breaks out of lists" rule.
  70. This is incompatible with the principle of uniformity
  71. (and indeed with the spec for list items, which requires
  72. that the meaning of a chunk of lines not change when it
  73. is put into a list item.)
  74. * Ordered list markers that interrupt a paragraph must start with 1.
  75. * Improved the section on tabs. Added some test cases for ATX
  76. headers and thematic breaks. Clarified that it's not just cases
  77. that affect indentation that matter, but all cases where whitespace
  78. matters for block structure.
  79. * Removed example of ATX header with tab after `#`.
  80. * Allow HTML blocks to end on the last line of their container
  81. (Colin O'Dell, #103).
  82. * Spec changes in strong/emph parsing. See
  83. https://talk.commonmark.org/t/emphasis-strong-emphasis-corner-cases/2123
  84. for motivation. This restores intuitive parsings for a number of cases.
  85. The main change is to disallow strong or emph when one of
  86. the delimiters is "internal" and the sum of the lengths of
  87. the enclosing delimiter runs is a multiple of 3. Thus,
  88. `**foo*bar***` gets parsed `<strong>foo*bar</strong>` rather than
  89. `<em><em>foo</em>bar</em>**` as before. Thanks to Fletcher Penney
  90. for discussion.
  91. * Add tests to check that markdown parsing is working fine after an HTML
  92. block end tag (Alexandre Mutel).
  93. * Add test case for nested lists with an indent > 4 (Alexandre Mutel).
  94. * Cleaned up terminology around lazy continuation lines. Added some links.
  95. * Fixed broken links and typos (Artyom, Matthias Geier, Sam Estep).
  96. * Use `≤` instead of `<` in list item spec for clarity.
  97. * Add point about readibility to "What is Markdown" section.
  98. * Add example for list item starting with a blank line with spaces
  99. (Robin Stocker).
  100. * Make interact more button-like and clearer (Jeff Atwood).
  101. * `spec_tests.py`: exit code is now sum of failures and errors.
  102. * `spec_tests.py`: specify newline when opening file.
  103. [0.25]
  104. * Added several more tab-handling cases (see jgm/cmark#101).
  105. * Fixed spec test for tabs. In the blockquote with a tab following
  106. the `>`, only one space should be consumed, yielding two spaces
  107. at the beginning of the content.
  108. * Update license year range to 2016 (Prayag Verma).
  109. * Fixed typo: setext heading line -> setext heading underline (#389).
  110. * Fixed date 2015->2016 (#388)
  111. [0.24]
  112. * New format for spec tests, new lua formatter for specs.
  113. The format for the spec examples has changed from
  114. .
  115. markdown
  116. .
  117. html
  118. .
  119. to
  120. ```````````````````````````````` example
  121. markdown
  122. .
  123. html
  124. ````````````````````````````````
  125. One advantage of this is that `spec.txt` becomes a valid
  126. CommonMark file.
  127. * Change `tests/spec_test.py` to use the new format.
  128. * Replace `tools/makespec.py` with a lua script, `tools/make_spec.lua`,
  129. which uses the `lcmark` rock (and indirectly libcmark). It can
  130. generate HTML, LaTeX, and CommonMark versions of the spec. Pandoc
  131. is no longer needed for the latex/PDF version. And, since the new
  132. program uses the cmark API and operates directly on the parse tree,
  133. we get much more reliable translations than we got with the old
  134. Python script (#387).
  135. * Remove whitelist of valid schemes. Now a scheme is any sequence
  136. of 2-32 characters, beginning with an ASCII letter, and containing
  137. only ASCII letters, digits, and the symbols `-`, `+`, `.`.
  138. Discussion at <http://talk.commonmark.org/t/555>.
  139. * Added an example: URI schemes must be more than one character.
  140. * Disallow spaces in link destinations, even inside pointy braces.
  141. Discussion at <http://talk.commonmark.org/t/779> and
  142. <http://talk.commonmark.org/t/1287/12>.
  143. * Modify setext heading spec to allow multiline headings.
  144. Text like
  145. Foo
  146. bar
  147. ---
  148. baz
  149. is now interpreted as heading + paragraph, rather than
  150. paragraph + thematic break + paragraph.
  151. * Call U+FFFD the REPLACEMENT CHARACTER, not the "unknown code
  152. point character."
  153. * Change misleading undefined entity name example.
  154. * Remove misleading claim about entity references in raw HTML
  155. (a regression in 0.23). Entity references are not treated
  156. as literal text in raw HTML; they are just passed through.
  157. * CommonMark.dtd: allow `item` in `custom_block`.
  158. [0.23]
  159. * Don't allow space between link text and link label in a
  160. reference link. This fixes the problem of inadvertent capture:
  161. [foo] [bar]
  162. [foo]: /u1
  163. [bar]: /u2
  164. * Rename "horizontal rule" -> "thematic break". This matches the HTML5
  165. meaning for the hr element, and recognizes that the element may be
  166. rendered in various ways (not always as a horizontal rule).
  167. See http://talk.commonmark.org/t/horizontal-rule-or-thematic-break/912/3
  168. * Rename "header" -> "heading". This avoids a confusion that might arise
  169. now that HTML5 has a "header" element, distinct from the "headings"
  170. h1, h2, ... Our headings correspond to HTML5 headings, not HTML5 headers.
  171. The terminology of 'headings' is more natural, too.
  172. * ATX headers: clarify that a space (or EOL) is needed; other whitespace
  173. won't do (#373). Added a test case.
  174. * Rewrote "Entities" section with more correct terminology (#375).
  175. Entity references and numeric character references.
  176. * Clarified that spec does not dictate URL encoding/normalization policy.
  177. * New test case: list item code block with empty line (Craig M.
  178. Brandenburg).
  179. * Added example with escaped backslash at end of link label (#325).
  180. * Shortened an example so it doesn't wrap (#371).
  181. * Fixed duplicate id "attribute".
  182. * Fix four link targets (Lucas Werkmeister).
  183. * Fix typo for link to "attributes" (Robin Stocker).
  184. * Fix "delimiter" spellings and links (Sam Rawlins).
  185. * Consistent usage of "we" instead of "I" (renzo).
  186. * CommonMark.dtd - Rename `html` -> `html_block`,
  187. `inline_html` -> `html_inline` for consistency. (Otherwise it is too
  188. hard to remember whether `html` is block or inline, a source of
  189. some bugs.)
  190. * CommonMark.dtd - added `xmlns` attribute to document.
  191. * CommonMark.dtd - added `custom_block`, `custom_inline`.
  192. * CommonMark.dtd - renamed `hrule` to `thematic_break`.
  193. * Fixed some HTML inline tests, which were actually HTML blocks, given
  194. the changes to block parsing rules since these examples were written
  195. (#382).
  196. * Normalize URLs when comparing test output. This way we don't fail
  197. tests for legitimate variations in URL escaping/normalization policies
  198. (#334).
  199. * `normalize.py`: don't use `HTMLParseError`, which has been removed
  200. as of python 3.5 (#380).
  201. * Minor spacing adjustments in test output, to match cmark's output,
  202. since we test cmark without normalization.
  203. * `makespec.py`: remove need for link anchors to be on one line.
  204. * `makespec.py`: Only do two levels in the TOC.
  205. * Use `display:inline-block` rather than floats for side-by-side.
  206. This works when printed too.
  207. * Added better print CSS.
  208. [0.22]
  209. * Don't list `title` twice as HTML block tag (Robin Stocker).
  210. * More direct example of type 7 HTML block starting with closing tag.
  211. * Clarified rule 7 for HTML blocks. `pre`, `script`, and `style`
  212. are excluded because they're covered by other rules.
  213. * Clarified that type 7 HTML blocks can start with a closing tag (#349).
  214. * Removed `pre` tag from rule 6 of HTML blocks (#355).
  215. It is already covered by rule 1, so this removes an ambiguity.
  216. * Added `iframe` to list of tags that always start HTML blocks (#352).
  217. * Added example of list item starting with two blanks (#332).
  218. * Added test case clarifying laziness in block quotes (see
  219. jgm/commonmark.js#60).
  220. * Add an example with mixed indentation code block in "Tabs" section
  221. (Robin Stocker). This makes sure that implementations skip columns instead
  222. of offsets for continued indented code blocks.
  223. * Clarified that in ATX headers, the closing `#`s must be unescaped,
  224. and removed misleading reference to "non-whitespace character" in
  225. an example (#356).
  226. * Changed anchor for "non-whitespace character" to reflect new name.
  227. * Removed ambiguities concerning lines and line endings (#357, Lasse
  228. R.H. Nielsen). The previous spec allowed, technically, that a line
  229. ending in `\r\n` might be considered to have two line endings,
  230. or that the `\r` might be considered part of the line and the
  231. `\n` the line ending. These fixes rule out those interpretations.
  232. * Clarify that a character is any code point.
  233. * Space in "code point".
  234. * Capitalize "Unicode".
  235. * Reflow paragraph to avoid unwanted list item (#360, #361).
  236. * Avoid extra space before section number in `spec.md`.
  237. * `makespec.py`: Use `check_output` for simpler `pipe_through_prog`.
  238. * In README, clarified build requirements for `spec.html`, `spec.pdf`.
  239. * Fixed some encoding issues in `makespec.py` (#353).
  240. * Fixed various problems with `spec.pdf` generation (#353).
  241. * Added version to coverpage in PDF version of spec.
  242. [0.21.1]
  243. * Added date.
  244. [0.21]
  245. * Changed handling of tabs. Instead of having a preprocessing step
  246. where tabs are converted to spaces, we now handle tabs directly in
  247. the parser. This allows tabs to be retained in code blocks and code
  248. spans. This change adds some general language to the effect that,
  249. for purposes of determining block structure, tabs are to be treated
  250. just like equivalent spaces.
  251. * Completely rewrote spec for HTML blocks. The new spec provides
  252. better handling of tags like `<del>`, which can be either block
  253. or inline level content, better handling of custom tags, and
  254. better handling of verbatim contexts like `<pre>`, comments,
  255. and `<script>`.
  256. * Added 9-digit limit on ordered list start number.
  257. Some browsers use signed 32-bit integers for indexing
  258. the items of an ordered list, and this can lead to odd
  259. or undefined behavior if 10-digit start numbers are allowed.
  260. * Allow (non-initial) hyphens in tag names (#239). Custom
  261. tags in HTML5 must contain hyphens.
  262. * Clarified that HTML block is closed at end of containing
  263. block, not just end of the document (as with fenced code blocks.)
  264. * Specify nested link definition behavior in prose (Benjamin
  265. Dumke-von der Ehe).
  266. * Added test for edge case in link reference parsing
  267. (Benjamin Dumke-von der Ehe, see jgm/commonmark.js#49).
  268. * Added link tests with fragment identifiers and queries (David
  269. Green, #342).
  270. * Added test cases with a literal backslash in a link destination
  271. (see jgm/commonmark.js#45).
  272. * Added test for entity `&ngE;` which resolves to two code points.
  273. Put entity tests on several lines for readability (see
  274. jgm/commonmark.js#47).
  275. * Fixed broken "pre" literal HTML example. Contents
  276. weren't escaped properly.
  277. * Simplified defn of "unicode whitespace character,"
  278. rectifying omission of line tabulation, U+000B (#343).
  279. * Removed ambiguity in definition of "line" (#346).
  280. * Rewrapped two prose lines so `+` does not begin a line (#347).
  281. * Added another test with overlapping emphasis markers.
  282. * Fixed link to 'attributes'.
  283. * Revised appendix, "A parsing strategy," and
  284. added a description of emphasis/link parsing algorithm.
  285. * `spec_tests.py` - set options for conversions, set library
  286. paths in a more cross-platform way.
  287. * `spec_tests.py`: force utf-8 on test failure output and
  288. `--dump-tests` (#344, #345).
  289. * `spec_tests.py`: Properly handle visible tab `→` in expected output.
  290. * `normalize.py`: Don't collapse whitespace inside pre tag.
  291. * Added `spec.html` to `.gitignore` (#339).
  292. * Add `-dev` suffix to spec version after release (eksperimental).
  293. * Rename "non-space" to "non-whitespace" (Konstantin Zudov, #337).
  294. [0.20]
  295. * Require at least one nonspace character in a link label (#322).
  296. * Require replacement (rather than omission) of U+0000 (#327).
  297. * Clarified that entities resolving to U+0000 are to be
  298. replaced by U+FFFD (#323).
  299. * Removed statement that what counts as a line ending is
  300. platform-dependent (#326). We now count `\r`, `\n`,
  301. or `\r\n` as a line ending regardless of the platform.
  302. (The line ending styles can even be mixed in a single document.)
  303. * Defined "space."
  304. * Revised "non-space character". Previously a non-space character
  305. was defined as anything but a space (U+0020). Now it is anything
  306. that is not a whitespace character (as defined in the spec).
  307. * Clarified that tab expansion is a preprocessing step (#330).
  308. * Clarified lazy block quote examples (#328).
  309. * Clarified precedence of indentation that meets conditions for
  310. both list item continuation blocks and indented code.
  311. * Added a test case with `#` directly followed by a letter
  312. (not an ATX header).
  313. * Added two test cases illustrating that a list at the
  314. outer level can have items that are indented by more
  315. than four spaces (see commonmark.js#42 and
  316. <http://talk.commonmark.org/t/odd-list-behaviour/1189>).
  317. * Fixed typo in emphasis examples.
  318. [0.19]
  319. * Fixed rules for `_`-based emphasis and strong emphasis (#317).
  320. Previously `_(bar)_.` was not parsed as containing emphasis
  321. because the closing delimiter is both left- and right- flanking.
  322. This fix allows such delimiters, provided they're followed
  323. by punctuation (i.e., they have punctuation on both sides).
  324. Similarly, mutatis mutandis, for opening delimiters and for `__`.
  325. * Clarified definitions of left-flanking and right-flanking (#310).
  326. The spec now says explicitly that the beginning and end of line count
  327. as whitespace for purposes of this definition.
  328. * Clarified that a code fence followed by header line isn't a header (#306).
  329. * Fixed alignment in flankingness examples (cosmetic).
  330. * Fixed last "right flanking but not left flanking" example (#316).
  331. * Fixed a broken link (Konstantin Zudov).
  332. * Added link to list of implementations on wiki.
  333. * Fixed mistake in examples of left/right flanking delimiters
  334. (Konstantin Zudov).
  335. * Spell out `iff` (if and only if) the first time it is used (#309).
  336. * Fixed typos (isoroku, #309).
  337. * Clarified wording for soft line break: newline can't be preceded
  338. by two spaces or a backslash.
  339. * Replaced some references to UTF-8 that should be to unicode.
  340. * Fixed dingus link in tools/template.html.
  341. * Replaced obsolete reference to `spec2md.pl` in spec (#304).
  342. [0.18]
  343. * Added a shortcut link test with mismatched brackets (#282).
  344. * Added cases with newline whitespace around emphasis open delimiter
  345. (#282).
  346. * Added list item examples with no space after marker (#282).
  347. * Added additional test showing backslash escapes don't work in
  348. autolinks (#282).
  349. * Added test for multiline title in reference definition (#282).
  350. * Added a reference link definition test case (#282).
  351. * Clarified that link titles can't contain blank lines (#271).
  352. * Revised Rule 3 for list items (#275). Previously this just applied to
  353. empty list items. It has been rewritten to apply to any list item
  354. starting with a blank line, including items like:
  355. -
  356. ```
  357. code
  358. ```
  359. * Added U+000B and U+000C as whitespace characters (#300).
  360. * Added comment on sourcepos attribute format in DTD (#298).
  361. * Use `--smart` option in producing HTML version of spec.
  362. * Clarified that delimiter runs at beginning/end of line behave as
  363. if preceded/followed by whitespace (#302).
  364. * Ensure that URLs in examples have slash after domain.
  365. This helps with #9, making these tests less sensitive to
  366. the normalizer used.
  367. * Fixed typo (Robin Stocker).
  368. [0.17]
  369. * Improved rule limiting intraword `_` for emphasis and strong emphasis.
  370. To prevent intra-word emphasis, we used to check to see if
  371. the delimiter was followed/preceded by an ASCII alphanumeric.
  372. We now do something more elegant: whereas an opening `*` must
  373. be left-flanking, an opening `_` must be left-flanking *and
  374. not right-flanking*. And so on for the other cases.
  375. All the original tests passed except some tests with Russian
  376. text with internal `_`, which formerly created emphasis but no
  377. longer do with the new rule. These tests have been adjusted.
  378. A few new test cases have been added to illustrate the rule.
  379. * Added example with link break inside pointy braces (no link) (#295).
  380. * Added spec example: loose list with blank line after fenced code (#285).
  381. [0.16]
  382. * Rewrote beginning of Entities section, clarifying that only
  383. entities not in code blocks or spans are decoded.
  384. * Removed defective Example 449 (#284).
  385. * Fixed typo (#283).
  386. * Added intended two-space hard-breaks in Examples 521, 523.
  387. * Clarified that brackets in general don't take precedence over emph
  388. (#258).
  389. * Clarified that final newline is removed from paragraph content
  390. (#176).
  391. * Talk of "info string" rather than "attributes" for code blocks
  392. (#262).
  393. * Clarified precedence of code spans, HTML tags, autolinks (#259).
  394. * Fixed a number of internal links and duplicate references in the spec.
  395. * Linkify "info string" in spec.
  396. * Use shortcut reference links when possible in spec.txt.
  397. * cmark itself is now used to build spec.html, rather than pandoc.
  398. * Use shortcut reference links when possible in spec.txt. This
  399. relies on the new `spec2md.py` behavior of creating references
  400. for all internal anchors.
  401. * Moved some examples from block to inline HTML section.
  402. * Added examples of non-comments (#264).
  403. * Changed rule for comments to conform to HTML5 spec.
  404. * Made clear that any sequence of characters is a valid document
  405. (#266).
  406. * Changed wording: "is preferred" -> "takes precedence."
  407. * Regularized spelling of "non-space character" and added links
  408. (#260).
  409. * Use four spaces rather than five to show "four spaces is too much"
  410. (#261).
  411. [0.15]
  412. * Fixed some typos with "left-" and "right-flanking" delimiters in the
  413. section on emphasis and strong emphasis (#257).
  414. [0.14]
  415. * Clarified indented code blocks. Previously the spec said, wrongly,
  416. that a blank line was needed between a paragraph and a following
  417. code block. It is only needed between a code block and a following
  418. paragraph (due to lazy continuations). (Thanks to textnut.)
  419. * Added definitions of whitespace, unicode whitespace, punctuation,
  420. ASCII punctuation (#108).
  421. * Improved rules for emphasis and strong emphasis. This improves
  422. parsing of emphasis around punctuation. For background see
  423. <http://talk.commonmark.org/t/903/6>. The basic idea of the change
  424. is that if the delimiter is part of a delimiter clump that has
  425. punctuation to the left and a normal character (non-space,
  426. non-punctuation) to the right, it can only be an opener. If it has
  427. punctuation to the right and a normal character (non-space,
  428. non-punctuation) to the left, it can only be a closer. This handles
  429. cases like
  430. **Gomphocarpus (*Gomphocarpus physocarpus*, syn. *Asclepias
  431. physocarpa*)**
  432. and
  433. **foo "*bar*" foo**
  434. better than before.
  435. * Added test case for link-in-link-in-image (#252).
  436. * Fixed broken internal references.
  437. * Added another example of an unclarity in the canonical Markdown
  438. syntax description.
  439. * Reworded the principle of uniformity to be more general; it applies
  440. to all container blocks, not just list items.
  441. * Added a rule for empty list items (#242).
  442. * Clarified precedence of empty list items over setext header lines
  443. (#95).
  444. * Added an example with two blank lines in fenced code in a sublist (#180).
  445. * Added an explicit CC-BY-SA license to the spec (#55).
  446. [0.13]
  447. * Updated path of test program.
  448. * Use terminology "plain textual content" instead of "string."
  449. * Added condition that conforming parsers strip or replace NULL characters.
  450. * Changed Example 196 to reflect the spec's rules. It should not be a loose
  451. list as it has no blank lines.
  452. * Adjusted semantically insignificant formatting of HTML output.
  453. * Added example to spec of shortcut link with following space (#214).