diff options
Diffstat (limited to 'changelog.txt')
-rw-r--r-- | changelog.txt | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/changelog.txt b/changelog.txt index 5c55f35..1deee77 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,142 @@ +[0.24.1] + + * Commonmark renderer: + + Use HTML comment, not two blank lines, to separate a list + item from a following code block or list. This makes the + output more portable, since the "two blank lines" rule is + unique to CommonMark. Also, it allows us to break out of + a sublist without breaking out of all levels of nesting. + + `is_autolink` - handle case where link has no children, + which previously caused a segfault. + + Use 4-space indent for bullet lists, for increased portability. + + Use 2-space + newline for line break for increased portability (#90). + + Improved punctuation escaping. Previously all `)` and + `.` characters after digits were escaped; now they are + only escaped if they are genuinely in a position where + they'd cause a list item. This is achieved by changes in + `render.c`: (a) `renderer->begin_content` is only set to + false after a string of digits at the beginning of the + line, and (b) we never break a line before a digit. + Also, `begin_content` is properly initialized to true. + * Handle NULL root in `consolidate_text_nodes`. + +[0.24.0] + + * [API change] Added `cmark_node_replace(oldnode, newnode)`. + * Updated spec.txt to 0.24. + * Fixed edge case with escaped parens in link destination (#97). + This was also checked against the #82 case with asan. + * Removed unnecessary check for `fenced` in `cmark_render_html`. + It's sufficient to check that the info string is empty. + Indeed, those who use the API may well create a code block + with an info string without explicitly setting `fenced`. + * Updated format of `test/smart_punct.txt`. + * Updated `test/spec.txt`, `test/smart_punct.txt`, and + `spec_tests.py` to new format. + * Fixed `get_containing_block` logic in `src/commonmark.c`. + This did not allow for the possibility that a node might have no + containing block, causing the commonmark renderer to segfault if + passed an inline node with no block parent. + * Fixed string representations of `CUSTOM_BLOCK`, + `CUSTOM_INLINE`. The old versions `raw_inline` and + `raw_block` were being used, and this led to incorrect xml output. + * Use default opts in python sample wrapper. + * Allow multiline setext header content, as per spec. + * Don't allow spaces in link destinations, even with pointy brackets. + Conforms to latest change in spec. + * Updated `scheme` scanner according to spec change. We no longer use + a whitelist of valid schemes. + * Allow any kind of nodes as children of `CUSTOM_BLOCK` (#96). + * `cmark.h`: moved typedefs for iterator into iterator section. + This just moves some code around so it makes more sense + to read, and in the man page. + * Fixed `make_man_page.py` so it includes typedefs again. + +[0.23.0] + + * [API change] Added `CUSTOM_BLOCK` and `CUSTOM_INLINE` node types. + They are never generated by the parser, and do not correspond + to CommonMark elements. They are designed to be inserted by + filters that postprocess the AST. For example, a filter might + convert specially marked code blocks to svg diagrams in HTML + and tikz diagrams in LaTeX, passing these through to the renderer + as a `CUSTOM_BLOCK`. These nodes can have children, but they + also have literal text to be printed by the renderer "on enter" + and "on exit." Added `cmark_node_get_on_enter`, + `cmark_node_set_on_enter`, `cmark_node_get_on_exit`, + `cmark_node_set_on_exit` to API. + * [API change] Rename `NODE_HTML` -> `NODE_HTML_BLOCK`, + `NODE_INLINE_HTML` -> `NODE_HTML_INLINE`. Define aliases + so the old names still work, for backwards compatibility. + * [API change] Rename `CMARK_NODE_HEADER` -> `CMARK_NODE_HEADING`. + Note that for backwards compatibility, we have defined aliases: + `CMARK_NODE_HEADER` = `CMARK_NODE_HEADING`, + `cmark_node_get_header_level` = `cmark_node_get_heading_level`, and + `cmark_node_set_header_level` = `cmark_node_set_heading_level`. + * [API change] Rename `CMARK_NODE_HRULE` -> `CMARK_NODE_THEMATIC_BREAK`. + Defined the former as the latter for backwards compatibility. + * Don't allow space between link text and link label in a reference link + (spec change). + * Separate parsing and rendering opts in `cmark.h` (#88). + This change also changes some of these constants' numerical values, + but nothing should change in the API if you use the constants + themselves. It should now be clear in the man page which + options affect parsing and which affect rendering. + * xml renderer - Added xmlns attribute to document node (jgm/CommonMark#87). + * Commonmark renderer: ensure html blocks surrounded by blanks. + Otherwise we get failures of roundtrip tests. + * Commonmark renderer: ensure that literal characters get escaped + when they're at the beginning of a block, e.g. `> \- foo`. + * LaTeX renderer - better handling of internal links. + Now we render `[foo](#bar)` as `\protect\hyperlink{bar}{foo}`. + * Check for NULL pointer in _scan_at (#81). + * `Makefile.nmake`: be more robust when cmake is missing. Previously, + when cmake was missing, the build dir would be created anyway, and + subsequent attempts (even with cmake) would fail, because cmake would + not be run. Depending on `build/CMakeFiles` is more robust -- this won't + be created unless cmake is run. Partially addresses #85. + * Fixed DOCTYPE in xml output. + * commonmark.c: fix `size_t` to `int`. This fixes an MSVC warning + "conversion from 'size_t' to 'int', possible loss of data" (Kevin Wojniak). + * Correct string length in `cmark_parse_document` example (Lee Jeffery). + * Fix non-ASCII end-of-line character check (andyuhnak). + * Fix "declaration shadows a local variable" (Kevin Wojniak). + * Install static library (jgm/CommonMark#381). + * Fix warnings about dropping const qualifier (Kevin Wojniak). + * Use full (unabbreviated) versions of constants (`CMARK_...`). + * Removed outdated targets from Makefile. + * Removed need for sudo in `make bench`. + * Improved benchmark. Use longer test, since `time` has limited resolution. + * Removed `bench.h` and timing calls in `main.c`. + * Updated API docs; getters return empty strings if not set + rather than NULL, as previously documented. + * Added api_tests for custom nodes. + * Made roundtrip test part of the test suite run by cmake. + * Regenerate `scanners.c` using re2c 0.15.3. + * Adjusted scanner for link url. This fixes a heap buffer overflow (#82). + * Added version number (1.0) to XML namespace. We don't guarantee + stability in this until 1.0 is actually released, however. + * Removed obsolete `TIMER` macro. + * Make `LIB_INSTALL_DIR` configurable (Mathieu Bridon, #79). + * Removed out-of-date luajit wrapper. + * Use `input`, not `parser->curline` to determine last line length. + * Small optimizations in `_scan_at`. + * Replaced hard-coded 4 with `TAB_STOP`. + * Have `make format` reformat api tests as well. + * Added api tests for man, latex, commonmark, and xml renderers (#51). + * render.c: added `begin_content` field. This is like `begin_line` except + that it doesn't trigger production of the prefix. So it can be set + after an initial prefix (say `> `) is printed by the renderer, and + consulted in determining whether to escape content that has a special + meaning at the beginning of a line. Used in the commonmark renderer. + * Python 3.5 compatibility: don't require HTMLParseError (Zhiming Wang). + HTMLParseError was removed in Python 3.5. Since it could never be thrown + in Python 3.5+, we simply define a placeholder when HTMLParseError + cannot be imported. + * Set `convert_charrefs=False` in `normalize.py` (#83). This defeats the + new default as of python 3.5, and allows the script to work with python + 3.5. + [0.22.0] * Removed `pre` from blocktags scanner. `pre` is handled separately |