[0.24.0]

  * [API change] Added version.
  * Added `--version` to cli program.
  * Updated spec.txt to 0.24.
  * Updated test runner to new spec format.
  * Allow multiline setext header content.
  * Don't allow spaces in link destinations, even in `<>`.
  * Updated recognizer for absolute URIs...
    We no longer use a whitelist of valid schemes.
  * Remove unused variable `markerStartCol` (Nik Nyby).
  * Fix inaccurate comment about `closeUnmatchedBlocks` (Nik Nyby).
    This function is void, and doesn't return true.

[0.23.0]

  * [API change] Rename nodes: "Html" -> "HtmlInline" (#63).
  * [API change] Add `CustomBlock`, `CustomInline`.
  * [API change] Rename "HorizontalRule" -> "ThematicBreak".
  * [API change] Rename "Header" -> "Heading" (spec change).
  * Don't allow whitespace between link text and link label
    of a reference link (spec change.)
  * Fixed calculation of list offsets (#59).
  * Allow tab after bullet list marker (#59).
  * `advanceOffset` - copy the code from `libcmark`.
  * Fixed a list/tab/padding corner case (#59).
  * Escape HTML contents in xml output, as the DTD requires PCDATA.
  * xml renderer - added xmlns attribute (jgm/CommonMark#87).
  * Test on node.js 5.x and 4.x (Nik Nyby).  Remove testing on iojs.
  * Initialize `_listData` to `{}` when creating `Node` (#74).
  * Added version check for uglify; updated dist files (#69).
  * Fix typo in breakOutOfLists description (Nik Nyby).
  * Updated benchmarks in README.md.

[0.22.1]

  * README: Use an https URL for commonmark.js (#71).
  * README: Fixed typo (#70).
  * Reset `container` after closing containing lists (#67).
  * Use mdurl 1.0.1, to avoid problems with Google closure
    compiler (#66).
  * Adjusted .npmignore so the package doesn't include
    extraneous files (#72, Hypercubed).

[0.22.0]

  * Added `iframe` to whitelist of HTML block tags (as per spec).
  * Removed `pre` from rule 6 of html blocks (see jgm/CommonMark#355).
  * Fixed logic error in calculation of offset.  Here's a test case this
    fixes:
    ```
    % echo -en "1. \t\tthere" | bin/commonmark
    <ol>
    <li>
    <pre><code>ere
    </code></pre>
    </li>
    </ol>
    ```
  * Disallow list item starting with multiple blank lines
    (jgm/CommonMark#332).
  * Fixed bug in list-start parser (#60).
  * Changed smart quote algorithm to agree with cmark (#61).  The change only
    involves double quotes, which now need to be both left flanking and
    not right flanking to count as "can open."
  * Fix replacement of multiple apostrophes in the same paragraph with
    `--smart` (Brandon Frohs).
  * `make bench`: renice to -10 rather than 99.

[0.21.0]

  * Updated to version 0.21 of spec.
  * Implemented `safe` option.  This suppresses output of raw
    HTML and potentially unsafe URLs.
  * Documented `smart` option.
  * Allow non-initial hyphens in html tag names.
    This allows for custom tags, which in HTML5 MUST contain
    a hyphen.  See jgm/CommonMark#239.
  * Revised HTML block parsing to conform to new spec.
  * Imposed 9-digit limit on ordered list markers, per spec.
  * Improved `smart_punct.txt` tests, and added some commentary
    (a proto-spec).
  * Improved `smart` handling of dashes.  We now process
    whole strings of hyphens in such a way as to ensure that
    we don't get a mix of hyphens and em and en dashes (#56,
    Brandon Frohs).
  * Dingus: Removed duplicated CSS line (Aurelio Jargas).
  * Dingus:  Make permalink record whether 'smart' was selected (#55).
  * Dingus:  Removed Makefile dependency on `html5-entities.js`.
  * Reset options before calling `inlineParser`.
    Otherwise, if the main parser's options have changed since
    it was instantiated, the new options won't be visible to
    the `inlineParser`.
  * Properly split on whitespace in HTML renderer (#54).
  * Fixed bench for new version of showdown (soomtong).
  * `processEmphasis`: renamed `potential_openers` -> `openers_bottom`,
    better logic for setting lower bound in `openers_bottom`.
  * Fixed emphasis/link parsing bug (#50).
  * Reset `this.column` on new parse.
  * Fixed test runner to handle visible tabs in spec HTML.
  * Improved detection of column with tabs in input.  Added
    `advanceNextNonspace` and `advanceOffset` functions.
  * Removed `detabLine` and tabs-to-spaces conversion.
  * Added `column` and `nextNonspaceColumn` to parser.
    Adjust these in `findNextNonspace`.
  * Added note on README about how to fetch dependencies.
  * Fix link reference definition edge case (Benjamin Dumke-
    von der Ehe).  If the reference seems to have a valid title
    that does not go until the end of the line, check if the
    reference becomes valid when discarding the title.
  * Fixed link label recognizer.  Allow a backslash-escaped
    backslash (#38).
  * Use `mdurl` instead of copied `encode.js`, `decode.js`.
  * Use `entities` from npm instead of `html5-entities.js`.
  * Rewrote `findNextNonspace` for speed.
  * Remove delimiters as soon as we see that they don't match
    anything (#43).  This fixes a performance bug for things like
    `"a_ " * 20000`.
  * Improved efficiency of `processEmphasis` (#43).  Don't look
    for openers again when we've already searched for openers
    of a certain type.
  * Allow literal (non-escaping) backslashes in link destinations
    (Benjamin Dumke-von der Ehe).
  * Added several pathological tests (#43).
  * Don't consider images to be self-closing in the XML writer
    (Benjamin Dumke-von der Ehe).  Image nodes in a CommonMark AST
    are containers, and as such the XML writer will always output
    a closing tag.

[0.20.0]

  * Ensure that link labels contain non-whitespace (jgm/CommonMark#322).
  * Strip brackets in `normalize-reference`. Otherwise the stripping
    of leading/trailing whitespace doesn't work.  For example:
    ```
    [hi]

    [ hi ]: url
    ```
  * Use U+FFFD for entities resolving to 0 (jgm/CommonMark#323).
  * Fixed bug with list items indented >= 4 spaces (#42).
  * Extract regex test results in `scanDelims` as local variables
    (Robin Stocker). Also, abort earlier when no delims where found.
  * Allow a partial open block tag to be recognized when followed
    by a newline with no space (#324).  For example:
    ```
    <div
      class="foo">
    ```
  * Added test for alternate line endings.
  * Added travis & npm buttons to README.md (Vitaly Puzrin).
  * Travis-CI: refresh node.js versions & use docker containers
    (Vitaly Puzrin).
  * Dingus css:  set colors for textarea (#319). Otherwise we may run
    into problems for people who have set their textarea default
    colors.

[0.19.0]

  * Fixed underscore emphasis to conform to spec changes
    (jgm/CommonMark#317, #12).
  * Fixed variable shadowing (linter warnings) in `test.js`.
  * Makefile: Moved `lint` first to avoid regenerating `dist` by accident.
  * Dingus: Fixed word wrapping in text area (jgm/CommonMark#319).
  * Updated `spec.txt` in `test/`.
  * Added `release_checklist.md`.

[0.18.2]

  * Fixed walker so that it stops at `this.root`, even when this is
    not the document root.
  * Fixed typo (Ed Adams).
  * Removed unused argument from `processEmphasis` (Robin Stocker).
  * Shortened code for removing a sequence of delimiters, changing the
    links on the edges rather than dropping them one by one
    (Eli Barzilay).
  * Code layout improvements for readability (Eli Barzilay).
  * Dingus:  rewrote without ACE editor for better accessibility
    and to fix layout in smal windows (#11).
  * Optimize checking for final spaces in `parseNewline` (Robin
    Stocker).  This yields a 5-10% speed improvement in `make bench`.
  * Consolidated regex definitions (Robin Stocker).
  * Return boolean from `spnl` and `parseBackticks` for consistency
    (Robin Stocker).
  * Removed unnecessary check for hrule in `parseListMarker` (Robin
    Stocker).
  * Return error status if tests fail.
  * Use `encode`/`decode` from markdown-it/mdurl for URL
    normalization.  This fixes cases like `[link](http://google.com/?q=%3f)`
    which was formerly wrongly converted to
    `<a href="http://google.com/?q=%253f">link</a>` (#9).
  * Refactored `test.js`, adding `smart_punct` tests from cmark, and
    factoring out `specTest` function.
  * Make unmatched double quotes left quotes with `smart_punct` (#14).
  * Code cleanup in `finalize`.

[0.18.1]

  * Updated `dist/commonmark.js`.

[0.18.0]

  * Added `nextNonspace`, `blank`, `indent` properties to `Parser`.
  * Factored out advance-to-nonspace code into `findNextNonspace`.
  * Put block starts into `blockStarts` property of `Parser`. Now
    almost all block-specific material has been moved out of
    `incorporateLine`.
  * Removed parameter from `addLine`.
  * Simplified code, removed `matchAt`.
  * Small optimization in `entityToChar`
  * Use `charCodeAt` in a few places where `charAt` was used.
  * Added `peek()` function in blocks. This ensures we check bounds
    before calling `charCodeAt`.
  * Use `peek` instead of raw `charCodeAt` in `inlines.js`.
  * Dingus improvements:
    + Use ACE editor in dingus. Implemented L->R sync scroll. Also,
      the block containing the cursor is highlighted on the right.
    + Split code from `dingus.html` into separate file `dingus.js`.
    + Split CSS into separate file, `dingus.css`.
    + Added debounce.
    + Moved dingus code to `dingus/` directory. `dingus/Makefile`
      builds `commonmark.js` in the dingus directory. So to deploy,
      you just need to copy the dingus directory.
    + Use local copies of js dependencies. Instead of including these in
      the repository, though, we have the Makefile install them with bower.
    + Fixed one-off error in line number calculation.
    + XML and HTML are now same font size.
    + Allow line wrapping in editor.
    + AST window now scrolls like HTML window.
  * Updated `reNonSpace` for new whitespace definition in spec.
  * Added smart punctuation parsing option.
    + Added `options` param to InlineParser.  `options.smart` triggers
      smart punctuation parsing.
    + Added `--smart` option to bin/commonmark.
    + Implemented "smart" parsing of dashes, ellipses, quotes.  The
      algorithm is the same as in cmark.
    + Renamed `handleEmphasis` -> `handleDelims`.
    + Added benchmark with `smart`.
    + Added checkbox for `smart` to dingus.
  * Fixed code example for walk.
  * Made `isContainer` a getter to conform to README (#7).
  * Allow list start number of 0 in HTML writer (#10).
  * Fixed use of `isContainer` in XML writer.
    `isContainer` is now a getter, not a function.

[0.17.1]

  * Reorganized block parsing in a more modular way. There is now
    a `blocks` property of the parser that contains information
    about each type of block, which is used in parsing.  Ultimately
    this will make it easier to extend the library, but the project
    is still only partially completed.
  * Code cleanup and simplification, with some performance optimizations.
  * Removed version from `bower.json`.  Bower takes version from tags.
  * Initialize some properties at beginning of 'parse'.
    This fixes some mistakes in source position when the
    same Parser object was used to parse multiple times (#3).
  * Made parsing of backslash escapes a bit more efficient.
  * Removed refmap parameter of InlineParser.parse().
    Instead, set the refmap property before running the parser.
  * Set `_string_content` to null after using, allowing it to be GCd.
  * Removed `_strings`; just append to `_string_content`.
    This gives better performance with v8.
  * Format benchmarks so that samples are linked.
  * Added in-browser benchmark.
  * Added API documentation to README.
  * xml renderer:  use `sourcepos` attribute, not `data-sourcepos`.
  * Changed license to 2-clause BSD.  Added clause for spec.

[0.17.0]

  * Renamed `DocParser` -> `Parser`.
    Note: library users should update their code or it will break.
  * Added `normalize-reference.js`. This does a proper unicode case
    fold instead of just using `toUpperCase`.  It is also faster,
    partly because we can do one pass for space and case normalization.
  * Removed artificial distinction btw FencedCode, IndentedCode
    in `blocks.js`.
  * Removed vestigial `ReferenceDef` node type.
  * Added getters and (in some cases) setters for "public" properties
    of Nodes.  Renamed non-public properties to start with underscore.
    This will allow us to keep the API stable while changing the
    underlying data structure.  And it will avoid exposing properties
    that have only an instrumental value in parsing.
  * Removed `Node.toObject()`.
  * Rename `bullet_char` -> `bulletChar`.
  * Check for blank line before checking indent in Item.
  * Removed unnecessary setting of default `tight=true` in `finalize`.
    We do that when the `listData` object is initialized.
  * Performance optimization - avoid repeating scan for nonspace.
  * Moved check for closing fence to close-block-check section.
    This is a more logical arrangement and addresses jgm/CommonMark#285.
  * Added `offset` property to `DocParser`.  Use this in `addLine`,
    instead of `offset` parameter, which has been removed.
  * Implemented new spec for emphasis and strong emphasis with `_`.
  * `html.js` - explicitly specify second parameter of `escapeXml`.
  * Fixed escaping error in CDATA regex.
  * Removed some dead code and fixed incorrect call to `addChild`
    with three arguments (Robin Stocker).
  * Adjust `lastLineLength` before returning after close fence.
  * Propagate `lastLineBlank` up through parents.
    Previously we just kept it set on the bottom child.
    But this will give a quicker determination of `lastLineBlank`.
  * Moved continuation checks & finalizers into `blocks` property
    of `Parser`. This is a first step towards keeping the code for
    each kind of block in a central place, rather than spread all over
    the code base. This is preparatory for a more modular structure,
    where each type of block has a record describing how it is parsed and
    finalized. Eventually this will also contain functions for checking for
    a block start, and metadata that determines how line data
    should be handled.
  * Added `currentLine` property to `Parser`.
  * Renamed `first_nonspace` -> `next_nonspace`.
  * Put generated `commonmark.js` in `dist/` rather than `js/`.
  * Miscellaneous code cleanup.
  * Split JS code into (this) independent repository.
  * Added detailed benchmark with samples (`make bench-detailed`).
  * Added `dist/commonmark.js` to repo (for bower).
  * Added `bower.json` (jgm/CommonMark#288).
  * Updated test suite. Now shows how performance depends on length in
    pathological cases.
  * Don't use -1 as second param for .slice. This seems to cause a
    deoptimization, as reported by `node --trace-deopt`.
  * Added `CONTRIBUTING.md`.
  * Added `.travis.yml` to test against various node versions.
  * Renamed `changelog.js.txt` -> `changelog.txt`.

[0.16]

  * 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.
