| [0.20.0] |
| |
| * Fixed bug in list item parsing when items indented >= 4 spaces (#52). |
| * Don't allow link labels with no non-whitespace characters |
| (jgm/CommonMark#322). |
| * Fixed multiple issues with numeric entities (#33, Nick Wellnhofer). |
| * Support CR and CRLF line endings (Ben Trask). |
| * Added test for different line endings to `api_test`. |
| * Allow NULL value in string setters (Nick Wellnhofer). (NULL |
| produces a 0-length string value.) Internally, URL and |
| title are now stored as `cmark_chunk` rather than `char *`. |
| * Fixed memory leak in `cmark_consolidate_text_nodes` (#32). |
| * Fixed `is_autolink` in the CommonMark renderer (#50). Previously *any* |
| link with an absolute URL was treated as an autolink. |
| * Cope with broken `snprintf` on Windows (Nick Wellnhofer). On Windows, |
| `snprintf` returns -1 if the output was truncated. Fall back to |
| Windows-specific `_scprintf`. |
| * Switched length parameter on `cmark_markdown_to_html`, |
| `cmark_parser_feed`, and `cmark_parse_document` from `int` |
| to `size_t` (#53, Nick Wellnhofer). |
| * Use a custom type `bufsize_t` for all string sizes and indices. |
| This allows to switch to 64-bit string buffers by changing a single |
| typedef and a macro definition (Nick Wellnhofer). |
| * Hardened the `strbuf` code, checking for integer overflows and |
| adding range checks (Nick Wellnhofer). |
| * Removed unused function `cmark_strbuf_attach` (Nick Wellnhofer). |
| * Fixed all implicit 64-bit to 32-bit conversions that |
| `-Wshorten-64-to-32` warns about (Nick Wellnhofer). |
| * Added helper function `cmark_strbuf_safe_strlen` that converts |
| from `size_t` to `bufsize_t` and throws an error in case of |
| an overflow (Nick Wellnhofer). |
| * Abort on `strbuf` out of memory errors (Nick Wellnhofer). |
| Previously such errors were not being trapped. This involves |
| some internal changes to the `buffer` library that do not affect |
| the API. |
| * Factored out `S_find_first_nonspace` in `S_proces_line`. |
| Added fields `offset`, `first_nonspace`, `indent`, and `blank` |
| to `cmark_parser` struct. This just removes some repetition. |
| * Added Racket Racket (5.3+) wrapper (Eli Barzilay). |
| * Removed `-pg` from Debug build flags (#47). |
| * Added Ubsan build target, to check for undefined behavior. |
| * Improved `make leakcheck`. We now return an error status if anything |
| in the loop fails. We now check `--smart` and `--normalize` options. |
| * Removed `wrapper3.py`, made `wrapper.py` work with python 2 and 3. |
| Also improved the wrapper to work with Windows, and to use smart |
| punctuation (as an example). |
| * In `wrapper.rb`, added argument for options. |
| * Revised luajit wrapper. |
| * Added build status badges to README.md. |
| * Added links to go, perl, ruby, R, and Haskell bindings to README.md. |
| |
| [0.19.0] |
| |
| * Fixed `_` emphasis parsing to conform to spec (jgm/CommonMark#317). |
| * Updated `spec.txt`. |
| * Compile static library with `-DCMARK_STATIC_DEFINE` (Nick Wellnhofer). |
| * Suppress warnings about Windows runtime library files (Nick Wellnhofer). |
| Visual Studio Express editions do not include the redistributable files. |
| Set `CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS` to suppress warnings. |
| * Added appyeyor: Windows continuous integration (`appveyor.yml`). |
| * Use `os.path.join` in `test/cmark.py` for proper cross-platform paths. |
| * Fixed `Makefile.nmake`. |
| * Improved `make afl`: added `test/afl_dictionary`, increased timeout |
| for hangs. |
| * Improved README with a description of the library's strengths. |
| * Pass-through Unicode non-characters (Nick Wellnhofer). |
| Despite their name, Unicode non-characters are valid code points. They |
| should be passed through by a library like libcmark. |
| * Check return status of `utf8proc_iterate` (#27). |
| |
| [0.18.3] |
| |
| * Include patch level in soname (Nick Wellnhofer). Minor version is |
| tied to spec version, so this allows breaking the ABI between spec |
| releases. |
| * Install compiler-provided system runtime libraries (Changjiang Yang). |
| * Use `strbuf_printf` instead of `snprintf`. `snprintf` is not |
| available on some platforms (Visual Studio 2013 and earlier). |
| * Fixed memory access bug: "invalid read of size 1" on input `[link](<>)`. |
| |
| [0.18.2] |
| |
| * Added commonmark renderer: `cmark_render_commonmark`. In addition |
| to options, this takes a `width` parameter. A value of 0 disables |
| wrapping; a positive value wraps the document to the specified |
| width. Note that width is automatically set to 0 if the |
| `CMARK_OPT_HARDBREAKS` option is set. |
| * The `cmark` executable now allows `-t commonmark` for output as |
| CommonMark. A `--width` option has been added to specify wrapping |
| width. |
| * Added `roundtrip_test` Makefile target. This runs all the spec |
| through the commonmark renderer, and then through the commonmark |
| parser, and compares normalized HTML to the test. All tests pass |
| with the current parser and renderer, giving us some confidence that |
| the commonmark renderer is sufficiently robust. Eventually this |
| should be pythonized and put in the cmake test routine. |
| * Removed an unnecessary check in `blocks.c`. By the time we check |
| for a list start, we've already checked for a horizontal rule, so |
| we don't need to repeat that check here. Thanks to Robin Stocker for |
| pointing out a similar redundancy in commonmark.js. |
| * Fixed bug in `cmark_strbuf_unescape` (`buffer.c`). The old function |
| gave incorrect results on input like `\\*`, since the next backslash |
| would be treated as escaping the `*` instead of being escaped itself. |
| * `scanners.re`: added `_scan_scheme`, `scan_scheme`, used in the |
| commonmark renderer. |
| * Check for `CMAKE_C_COMPILER` (not `CC_COMPILER`) when setting C flags. |
| * Update code examples in documentation, adding new parser option |
| argument, and using `CMARK_OPT_DEFAULT` (Nick Wellnhofer). |
| * Added options parameter to `cmark_markdown_to_html`. |
| * Removed obsolete reference to `CMARK_NODE_LINK_LABEL`. |
| * `make leakcheck` now checks all output formats. |
| * `test/cmark.py`: set default options for `markdown_to_html`. |
| * Warn about buggy re2c versions (Nick Wellnhofer). |
| |
| [0.18.1] |
| |
| * Build static version of library in default build (#11). |
| * `cmark.h`: Add missing argument to `cmark_parser_new` (#12). |
| |
| [0.18] |
| |
| * Switch to 2-clause BSD license, with agreement of contributors. |
| * Added Profile build type, `make prof` target. |
| * Fixed autolink scanner to conform to the spec. Backslash escapes |
| not allowed in autolinks. |
| * Don't rely on strnlen being available (Nick Wellnhofer). |
| * Updated scanners for new whitespace definition. |
| * Added `CMARK_OPT_SMART` and `--smart` option, `smart.c`, `smart.h`. |
| * Added test for `--smart` option. |
| * Fixed segfault with --normalize (closes #7). |
| * Moved normalization step from XML renderer to `cmark_parser_finish`. |
| * Added options parameter to `cmark_parse_document`, `cmark_parse_file`. |
| * Fixed man renderer's escaping for unicode characters. |
| * Don't require python3 to make `cmark.3` man page. |
| * Use ASCII escapes for punctuation characters for portability. |
| * Made `options` an int rather than a long, for consistency. |
| * Packed `cmark_node` struct to fit into 128 bytes. |
| This gives a small performance boost and lowers memory usage. |
| * Repacked `delimiter` struct to avoid hole. |
| * Fixed use-after-free bug, which arose when a paragraph containing |
| only reference links and blank space was finalized (#9). |
| Avoid using `parser->current` in the loop that creates new |
| blocks, since `finalize` in `add_child` may have removed |
| the current parser (if it contains only reference definitions). |
| This isn't a great solution; in the long run we need to rewrite |
| to make the logic clearer and to make it harder to make |
| mistakes like this one. |
| * Added 'Asan' build type. `make asan` will link against ASan; the |
| resulting executable will do checks for memory access issues. |
| Thanks @JordanMilne for the suggestion. |
| * Add Makefile target to fuzz with AFL (Nick Wellnhofer) |
| The variable `$AFL_PATH` must point to the directory containing the AFL |
| binaries. It can be set as an environment variable or passed to make on |
| the command line. |
| |
| [0.17] |
| |
| * Stripped out all JavaScript related code and documentation, moving |
| it to a separate repository (<https://github.com/jgm/commonmark.js>). |
| * Improved Makefile targets, so that `cmake` is run again only when |
| necessary (Nick Wellnhofer). |
| * Added `INSTALL_PREFIX` to the Makefile, allowing installation to a |
| location other than `/usr/local` without invoking `cmake` |
| manually (Nick Wellnhofer). |
| * `make test` now guarantees that the project will |
| be rebuilt before tests are run (Nick Wellnhofer). |
| * Prohibited overriding of some Makefile variables (Nick Wellnhofer). |
| * Provide version number and string, both as macros |
| (`CMARK_VERSION`, `CMARK_VERSION_STRING`) and as symbols |
| (`cmark_version`, `cmark_version_string`) (Nick Wellnhofer). All of |
| these come from `cmark_version.h`, which is constructed from a |
| template `cmark_version.h.in` and data in `CMakeLists.txt`. |
| * Avoid calling `free` on null pointer. |
| * Added an accessor for an iterator's root node (`cmark_iter_get_root`). |
| * Added user data field for nodes (Nick Wellnhofer). This is |
| intended mainly for use in bindings for dynamic languages, where |
| it could store a pointer to a target language object (#287). But |
| it can be used for anything. |
| * Man renderer: properly escape multiline strings. |
| * Added assertion to raise error if finalize is called on a closed block. |
| * Implemented the new spec rule for emphasis and strong emphasis with `_`. |
| * Moved the check for fence-close with the other checks for end-of-block. |
| * Fixed a bug with loose list detection with items containings |
| fenced code blocks (#285). |
| * Removed recursive algorithm in `ends_with_blank_line` (#286). |
| * Minor code reformatting: renamed parameters. |
| |
| [0.16] |
| |
| * Added xml renderer (XML representation of the CommonMark AST, |
| which is described in `CommonMark.dtd`). |
| * Reduced size of gperf entity table (Nick Wellnhofer). |
| * Reworked iterators to allow deletion of nodes during iteration |
| (Nick Wellnhofer). |
| * Optimized `S_is_leaf`. |
| * Added `cmark_iter_reset` to iterator API. |
| * Added `cmark_consolidate_text_nodes` to API to combine adjacent |
| text nodes. |
| * Added `CMARK_OPT_NORMALIZE` to options (this combines adjacent |
| text nodes). |
| * Added `--normalize` option to command-line program. |
| * Improved regex for HTML comments in inline parsing. |
| * Python is no longer required for a basic build from the |
| repository. |