You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
443 lines
15 KiB
443 lines
15 KiB
|
|
# MD4C Change Log
|
|
|
|
|
|
## Next Version (Work in Progress)
|
|
|
|
Changes:
|
|
|
|
* Changes mandated by CommonMark specification 0.30.
|
|
|
|
Actually there are only very minor changes to recognition of HTML blocks:
|
|
|
|
- The tag `<textarea>` now triggers HTML block (of type 1 as per the
|
|
specification).
|
|
|
|
- HTML declaration (HTML block type 4) is not required to begin with an
|
|
upper-case ASCII character after the `<!`. Any ASCII character is now
|
|
allowed.
|
|
|
|
Other than that, the newest specification mainly improves test coverage and
|
|
clarifies its wording in some cases, without affecting the implementation.
|
|
|
|
Refer to [CommonMark
|
|
0.30 notes](https://github.com/commonmark/commonmark-spec/releases/tag/0.30)
|
|
for more info.
|
|
|
|
Fixes:
|
|
|
|
* [#163](https://github.com/mity/md4c/issues/163):
|
|
Make HTML renderer to emit `'\n'` after the root tag when in the XHTML mode.
|
|
|
|
* [#165](https://github.com/mity/md4c/issues/165):
|
|
Make HTML renderer not to percent-encode `'~'` in URLs. Although it does
|
|
work, it's not needed, and it can actually be confusing with URLs such as
|
|
`http://www.example.com/~johndoe/`.
|
|
|
|
* [#167](https://github.com/mity/md4c/issues/167),
|
|
[#168](https://github.com/mity/md4c/issues/168):
|
|
Fix multiple instances of various buffer overflow bugs, found mostly using
|
|
a fuzz testing. Contributed by [dtldarek](https://github.com/dtldarek) and
|
|
[Thierry Coppey](https://github.com/TCKnet).
|
|
|
|
* [#169](https://github.com/mity/md4c/issues/169):
|
|
Table underline now does not require 3 characters per table column anymore.
|
|
One dash (optionally with a leading or tailing `:` appended or prepended)
|
|
is now sufficient. This improves compatibility with the GFM.
|
|
|
|
* [#172](https://github.com/mity/md4c/issues/172):
|
|
Fix quadratic time behavior caused by unnecessary lookup for link reference
|
|
definition even if the potential label contains nested brackets.
|
|
|
|
* [#173](https://github.com/mity/md4c/issues/173),
|
|
[#174](https://github.com/mity/md4c/issues/174):
|
|
Multiple bugs identified with [OSS-Fuzz](https://github.com/google/oss-fuzz)
|
|
were fixed.
|
|
|
|
|
|
## Version 0.4.8
|
|
|
|
Fixes:
|
|
|
|
* [#149](https://github.com/mity/md4c/issues/149):
|
|
A HTML block started in a container block (and not explicitly finished in
|
|
the block) could eat 1 line of actual contents.
|
|
|
|
* [#150](https://github.com/mity/md4c/issues/150):
|
|
Fix md2html utility to output proper DOCTYPE and HTML tags when `--full-html`
|
|
command line options is used, accordingly to the expected output format
|
|
(HTML or XHTML).
|
|
|
|
* [#152](https://github.com/mity/md4c/issues/152):
|
|
Suppress recognition of a permissive autolink if it would otherwise form a
|
|
complete body of an outer inline link.
|
|
|
|
* [#153](https://github.com/mity/md4c/issues/153),
|
|
[#154](https://github.com/mity/md4c/issues/154):
|
|
Set `MD_BLOCK_UL_DETAIL::mark` and `MD_BLOCK_OL_DETAIL::mark_delimiter`
|
|
correctly, even when the blocks are nested at the same line in a complicated
|
|
ways.
|
|
|
|
* [#155](https://github.com/mity/md4c/issues/155):
|
|
Avoid reading 1 character beyond the input size in some complex cases.
|
|
|
|
|
|
## Version 0.4.7
|
|
|
|
Changes:
|
|
|
|
* Add `MD_TABLE_DETAIL` structure into the API. The structure describes column
|
|
count and row count of the table, and pointer to it is passed into the
|
|
application-provided block callback with the `MD_BLOCK_TABLE` block type.
|
|
|
|
Fixes:
|
|
|
|
* [#131](https://github.com/mity/md4c/issues/131):
|
|
Fix handling of a reference image nested in a reference link.
|
|
|
|
* [#135](https://github.com/mity/md4c/issues/135):
|
|
Handle unmatched parenthesis pairs inside a permissive URL and WWW auto-links
|
|
in a way more compatible with the GFM.
|
|
|
|
* [#138](https://github.com/mity/md4c/issues/138):
|
|
The tag `<tbody></tbody>` is now suppressed whenever the table has zero body
|
|
rows.
|
|
|
|
* [#139](https://github.com/mity/md4c/issues/139):
|
|
Recognize a list item mark even when EOF follows it.
|
|
|
|
* [#142](https://github.com/mity/md4c/issues/142):
|
|
Fix reference link definition label matching in a case when the label ends
|
|
with a Unicode character with non-trivial case folding mapping.
|
|
|
|
|
|
## Version 0.4.6
|
|
|
|
Fixes:
|
|
|
|
* [#130](https://github.com/mity/md4c/issues/130):
|
|
Fix `ISANYOF` macro, which could provide unexpected results when encountering
|
|
zero byte in the input text; in some cases leading to broken internal state
|
|
of the parser.
|
|
|
|
The bug could result in denial of service and possibly also to other security
|
|
implications. Applications are advised to update to 0.4.6.
|
|
|
|
|
|
## Version 0.4.5
|
|
|
|
Fixes:
|
|
|
|
* [#118](https://github.com/mity/md4c/issues/118):
|
|
Fix HTML renderer's `MD_HTML_FLAG_VERBATIM_ENTITIES` flag, exposed in the
|
|
`md2html` utility via `--fverbatim-entities`.
|
|
|
|
* [#124](https://github.com/mity/md4c/issues/124):
|
|
Fix handling of indentation of 16 or more spaces in the fenced code blocks.
|
|
|
|
|
|
## Version 0.4.4
|
|
|
|
Changes:
|
|
|
|
* Make Unicode-specific code compliant to Unicode 13.0.
|
|
|
|
New features:
|
|
|
|
* The HTML renderer, developed originally as the heart of the `md2html`
|
|
utility, is now built as a standalone library, in order to simplify its
|
|
reuse in applications.
|
|
|
|
* With `MD_HTML_FLAG_SKIP_UTF8_BOM`, the HTML renderer now skips UTF-8 byte
|
|
order mark (BOM) if the input begins with it, before passing to the Markdown
|
|
parser.
|
|
|
|
`md2html` utility automatically enables the flag (unless it is custom-built
|
|
with `-DMD4C_USE_ASCII`).
|
|
|
|
* With `MD_HTML_FLAG_XHTML`, The HTML renderer generates XHTML instead of
|
|
HTML.
|
|
|
|
This effectively means `<br />` instead of `<br>`, `<hr />` instead of
|
|
`<hr>`, and `<img ... />` instead of `<img ...>`.
|
|
|
|
`md2html` utility now understands the command line option `-x` or `--xhtml`
|
|
enabling the XHTML mode.
|
|
|
|
Fixes:
|
|
|
|
* [#113](https://github.com/mity/md4c/issues/113):
|
|
Add missing folding info data for the following Unicode characters:
|
|
`U+0184`, `U+018a`, `U+01b2`, `U+01b5`, `U+01f4`, `U+0372`, `U+038f`,
|
|
`U+1c84`, `U+1fb9`, `U+1fbb`, `U+1fd9`, `U+1fdb`, `U+1fe9`, `U+1feb`,
|
|
`U+1ff9`, `U+1ffb`, `U+2c7f`, `U+2ced`, `U+a77b`, `U+a792`, `U+a7c9`.
|
|
|
|
Due the bug, the link definition label matching did not work in the case
|
|
insensitive way for these characters.
|
|
|
|
|
|
## Version 0.4.3
|
|
|
|
New features:
|
|
|
|
* With `MD_FLAG_UNDERLINE`, spans enclosed in underscore (`_foo_`) are seen
|
|
as underline (`MD_SPAN_UNDERLINE`) rather than an ordinary emphasis or
|
|
strong emphasis.
|
|
|
|
Changes:
|
|
|
|
* The implementation of wiki-links extension (with `MD_FLAG_WIKILINKS`) has
|
|
been simplified.
|
|
|
|
- A noticeable increase of MD4C's memory footprint introduced by the
|
|
extension implementation in 0.4.0 has been removed.
|
|
- The priority handling towards other inline elements have been unified.
|
|
(This affects an obscure case where syntax of an image was in place of
|
|
wiki-link destination made the wiki-link invalid. Now *all* inline spans
|
|
in the wiki-link destination, including the images, is suppressed.)
|
|
- The length limitation of 100 characters now always applies to wiki-link
|
|
destination.
|
|
|
|
* Recognition of strike-through spans (with the flag `MD_FLAG_STRIKETHROUGH`)
|
|
has become much stricter and, arguably, reasonable.
|
|
|
|
- Only single tildes (`~`) and double tildes (`~~`) are recognized as
|
|
strike-through marks. Longer ones are not anymore.
|
|
- The length of the opener and closer marks have to be the same.
|
|
- The tildes cannot open a strike-through span if a whitespace follows.
|
|
- The tildes cannot close a strike-through span if a whitespace precedes.
|
|
|
|
This change follows the changes of behavior in cmark-gfm some time ago, so
|
|
it is also beneficial from compatibility point of view.
|
|
|
|
* When building MD4C by hand instead of using its CMake-based build, the UTF-8
|
|
support was by default disabled, unless explicitly asked for by defining
|
|
a preprocessor macro `MD4C_USE_UTF8`.
|
|
|
|
This has been changed and the UTF-8 mode now becomes the default, no matter
|
|
how `md4c.c` is compiled. If you need to disable it and use the ASCII-only
|
|
mode, you have explicitly define macro `MD4C_USE_ASCII` when compiling it.
|
|
|
|
(The CMake-based build as provided in our repository explicitly asked for
|
|
the UTF-8 support with `-DMD4C_USE_UTF8`. I.e. if you are using MD4C library
|
|
built with our vanilla `CMakeLists.txt` files, this change should not affect
|
|
you.)
|
|
|
|
Fixes:
|
|
|
|
* Fixed some string length handling in the special `MD4C_USE_UTF16` build.
|
|
|
|
(This does not affect you unless you are on Windows and explicitly define
|
|
the macro when building MD4C.)
|
|
|
|
* [#100](https://github.com/mity/md4c/issues/100):
|
|
Fixed an off-by-one error in the maximal length limit of some segments
|
|
of e-mail addresses used in autolinks.
|
|
|
|
* [#107](https://github.com/mity/md4c/issues/107):
|
|
Fix mis-detection of asterisk-encoded emphasis in some corner cases when
|
|
length of the opener and closer differs, as in `***foo *bar baz***`.
|
|
|
|
|
|
## Version 0.4.2
|
|
|
|
Fixes:
|
|
|
|
* [#98](https://github.com/mity/md4c/issues/98):
|
|
Fix mis-detection of asterisk-encoded emphasis in some corner cases when
|
|
length of the opener and closer differs, as in `**a *b c** d*`.
|
|
|
|
|
|
## Version 0.4.1
|
|
|
|
Unfortunately, 0.4.0 has been released with badly updated ChangeLog. Fixing
|
|
this is the only change on 0.4.1.
|
|
|
|
|
|
## Version 0.4.0
|
|
|
|
New features:
|
|
|
|
* With `MD_FLAG_LATEXMATHSPANS`, LaTeX math spans (`$...$`) and LaTeX display
|
|
math spans (`$$...$$`) are now recognized. (Note though that the HTML
|
|
renderer outputs them verbatim in a custom `<x-equation>` tag.)
|
|
|
|
Contributed by [Tilman Roeder](https://github.com/dyedgreen).
|
|
|
|
* With `MD_FLAG_WIKILINKS`, Wiki-style links (`[[...]]`) are now recognized.
|
|
(Note though that the HTML renderer renders them as a custom `<x-wikilink>`
|
|
tag.)
|
|
|
|
Contributed by [Nils Blomqvist](https://github.com/niblo).
|
|
|
|
Changes:
|
|
|
|
* Parsing of tables (with `MD_FLAG_TABLES`) is now closer to the way how
|
|
cmark-gfm parses tables as we do not require every row of the table to
|
|
contain a pipe `|` anymore.
|
|
|
|
As a consequence, paragraphs now cannot interrupt tables. A paragraph which
|
|
follows the table has to be delimited with a blank line.
|
|
|
|
Fixes:
|
|
|
|
* [#94](https://github.com/mity/md4c/issues/94):
|
|
`md_build_ref_def_hashtable()`: Do not allocate more memory than strictly
|
|
needed.
|
|
|
|
* [#95](https://github.com/mity/md4c/issues/95):
|
|
`md_is_container_mark()`: Ordered list mark requires at least one digit.
|
|
|
|
* [#96](https://github.com/mity/md4c/issues/96):
|
|
Some fixes for link label comparison.
|
|
|
|
|
|
## Version 0.3.4
|
|
|
|
Changes:
|
|
|
|
* Make Unicode-specific code compliant to Unicode 12.1.
|
|
|
|
* Structure `MD_BLOCK_CODE_DETAIL` got new member `fenced_char`. Application
|
|
can use it to detect character used to form the block fences (`` ` `` or
|
|
`~`). In the case of indented code block, it is set to zero.
|
|
|
|
Fixes:
|
|
|
|
* [#77](https://github.com/mity/md4c/issues/77):
|
|
Fix maximal count of digits for numerical character references, as requested
|
|
by CommonMark specification 0.29.
|
|
|
|
* [#78](https://github.com/mity/md4c/issues/78):
|
|
Fix link reference definition label matching for Unicode characters where
|
|
the folding mapping leads to multiple codepoints, as e.g. in `ẞ` -> `SS`.
|
|
|
|
* [#83](https://github.com/mity/md4c/issues/83):
|
|
Fix recognition of an empty blockquote which interrupts a paragraph.
|
|
|
|
|
|
## Version 0.3.3
|
|
|
|
Changes:
|
|
|
|
* Make permissive URL autolink and permissive WWW autolink extensions stricter.
|
|
|
|
This brings the behavior closer to GFM and mitigates risk of false positives.
|
|
In particular, the domain has to contain at least one dot and parenthesis
|
|
can be part of the link destination only if `(` and `)` are balanced.
|
|
|
|
Fixes:
|
|
|
|
* [#73](https://github.com/mity/md4c/issues/73):
|
|
Some raw HTML inputs could lead to quadratic parsing times.
|
|
|
|
* [#74](https://github.com/mity/md4c/issues/74):
|
|
Fix input leading to a crash. Found by fuzzing.
|
|
|
|
* [#76](https://github.com/mity/md4c/issues/76):
|
|
Fix handling of parenthesis in some corner cases of permissive URL autolink
|
|
and permissive WWW autolink extensions.
|
|
|
|
|
|
## Version 0.3.2
|
|
|
|
Changes:
|
|
|
|
* Changes mandated by CommonMark specification 0.29.
|
|
|
|
Most importantly, the white-space trimming rules for code spans have changed.
|
|
At most one space/newline is trimmed from beginning/end of the code span
|
|
(if the code span contains some non-space contents, and if it begins and
|
|
ends with space at the same time). In all other cases the spaces in the code
|
|
span are now left intact.
|
|
|
|
Other changes in behavior are in corner cases only. Refer to [CommonMark
|
|
0.29 notes](https://github.com/commonmark/commonmark-spec/releases/tag/0.29)
|
|
for more info.
|
|
|
|
Fixes:
|
|
|
|
* [#68](https://github.com/mity/md4c/issues/68):
|
|
Some specific HTML blocks were not recognized when EOF follows without any
|
|
end-of-line character.
|
|
|
|
* [#69](https://github.com/mity/md4c/issues/69):
|
|
Strike-through span not working correctly when its opener mark is directly
|
|
followed by other opener mark; or when other closer mark directly precedes
|
|
its closer mark.
|
|
|
|
|
|
## Version 0.3.1
|
|
|
|
Fixes:
|
|
|
|
* [#58](https://github.com/mity/md4c/issues/58),
|
|
[#59](https://github.com/mity/md4c/issues/59),
|
|
[#60](https://github.com/mity/md4c/issues/60),
|
|
[#63](https://github.com/mity/md4c/issues/63),
|
|
[#66](https://github.com/mity/md4c/issues/66):
|
|
Some inputs could lead to quadratic parsing times. Thanks to Anders Kaseorg
|
|
for finding all those issues.
|
|
|
|
* [#61](https://github.com/mity/md4c/issues/59):
|
|
Flag `MD_FLAG_NOHTMLSPANS` erroneously affected also recognition of
|
|
CommonMark autolinks.
|
|
|
|
|
|
## Version 0.3.0
|
|
|
|
New features:
|
|
|
|
* Add extension for GitHub-style task lists:
|
|
|
|
```
|
|
* [x] foo
|
|
* [x] bar
|
|
* [ ] baz
|
|
```
|
|
|
|
(It has to be explicitly enabled with `MD_FLAG_TASKLISTS`.)
|
|
|
|
* Added support for building as a shared library. On non-Windows platforms,
|
|
this is now default behavior; on Windows static library is still the default.
|
|
The CMake option `BUILD_SHARED_LIBS` can be used to request one or the other
|
|
explicitly.
|
|
|
|
Contributed by Lisandro Damián Nicanor Pérez Meyer.
|
|
|
|
* Renamed structure `MD_RENDERER` to `MD_PARSER` and refactorize its contents
|
|
a little bit. Note this is source-level incompatible and initialization code
|
|
in apps may need to be updated.
|
|
|
|
The aim of the change is to be more friendly for long-term ABI compatibility
|
|
we shall maintain, starting with this release.
|
|
|
|
* Added `CHANGELOG.md` (this file).
|
|
|
|
* Make sure `md_process_table_row()` reports the same count of table cells for
|
|
all table rows, no matter how broken the input is. The cell count is derived
|
|
from table underline line. Bogus cells in other rows are silently ignored.
|
|
Missing cells in other rows are reported as empty ones.
|
|
|
|
Fixes:
|
|
|
|
* CID 1475544:
|
|
Calling `md_free_attribute()` on uninitialized data.
|
|
|
|
* [#47](https://github.com/mity/md4c/issues/47):
|
|
Using bad offsets in `md_is_entity_str()`, in some cases leading to buffer
|
|
overflow.
|
|
|
|
* [#51](https://github.com/mity/md4c/issues/51):
|
|
Segfault in `md_process_table_cell()`.
|
|
|
|
* [#53](https://github.com/mity/md4c/issues/53):
|
|
With `MD_FLAG_PERMISSIVEURLAUTOLINKS` or `MD_FLAG_PERMISSIVEWWWAUTOLINKS`
|
|
we could generate bad output for ordinary Markdown links, if a non-space
|
|
character immediately follows like e.g. in `[link](http://github.com)X`.
|
|
|
|
|
|
## Version 0.2.7
|
|
|
|
This was the last version before the changelog has been added.
|