summaryrefslogtreecommitdiff
path: root/cmark
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-03 19:18:35 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-03 19:18:35 +0300
commit473d922faed49241a5d29d9e37dc4819cd512006 (patch)
treed3c38198beb42cac134d08410e4ad1dbfe42475f /cmark
parent2a3a110dac53b271caf9aa97776cf95efecc83bc (diff)
downloadProject-Tick-473d922faed49241a5d29d9e37dc4819cd512006.tar.gz
Project-Tick-473d922faed49241a5d29d9e37dc4819cd512006.zip
NOISSUE remove unused files
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'cmark')
-rw-r--r--cmark/changelog.txt1552
1 files changed, 0 insertions, 1552 deletions
diff --git a/cmark/changelog.txt b/cmark/changelog.txt
deleted file mode 100644
index 3cb825bd9e..0000000000
--- a/cmark/changelog.txt
+++ /dev/null
@@ -1,1552 +0,0 @@
-[0.31.2]
-
- * Export `cmark_node_is_inline`, `cmark_node_is_block`,
- `cmark_node_is_leaf` [non-breaking API change].
-
- * Don't append a newline character when rendering inline nodes
- (Samuel Williams).
-
- * Fix inline source positions (#551, Nick Wellnhofer).
- Account for partially removed delimiter chars.
-
- * Commonmark renderer: fix bug with empty item at end of list (#583).
-
- * Fix email autolink rendering in latex (#595).
-
- * CMake: Remove handling CMP0063 (Christophh Grüninger).
- Required CMake is 3.7 which automatically sets CMP0063 to NEW.
-
- * Makefile: Don't depend on $(SPEC) (Nick Wellnhofer).
- The spec file is always present.
-
- * Makefile: Clean up cmake invocations (Nick Wellnhofer).
- Use cmake command to build and install instead of invoking make. Also
- use -G option consistently. This allows to use other generators like
- Ninja: `make GENERATOR=Ninja`.
-
- * Fix python warnings about regexp escape sequences
- (Azamat H. Hackimov).
-
- * Update cmake_minimum_required to 3.14 (Azamat H. Hackimov).
-
- * Update to Unicode 17.0 (Dmitry Atamanov).
-
- * README: Make cmake instructions more portable and simple
- (Nick Wellnhofer). Don't assume that make is used. Don't
- change directories.
-
- * Replace link to unmaintained Python bindings (Ofek Lev).
-
-[0.31.1]
-
- * Flag root node as open in `cmark_parser_new_with_mem_into_root` (#532).
-
- * Remove `source`, add `search` to list of block tags
- (a spec 0.31 change we forgot in last release).
-
- * Accept lowercase inline HTML declarations (Michael Howell).
-
- * Remove unused functions (Nick Wellnhofer).
-
- * utf8:
-
- + Fix encoding of U+FFFE and U+FFFF (#548, Nick Wellnhofer).
- + Rework case folding (Nick Wellnhofer). Using a table and binary
- search instead of a generated switch statement significantly
- reduces the size of the compiled code.
-
- * houdini:
-
- + Rename `houdini_escape_html0` -> `houdini_escape_html` (#536).
- + Rework HTML entity table (Nick Wellnhofer).
- The new layout saves about 20 KB and removes 50 KB of relocation
- entries from the shared library, also speeding up loading.
-
- * cmake:
-
- + Tell cmake to set `rpath` so the installed `cmark` can find
- `libcmark.so` (Michael Witten).
- + Remove unnecessary enabling of target property: MACOSX_RPATH
- (Michael Witten).
- + Fix build type checks (Nick Wellnhofer). Make the libFuzzer
- target use the Asan build type again.
-
- * Makefile:
-
- + Fix `libFuzzer` target (Nick Wellnhofer).
- + Use `ctest` and `--output-on-failure` in `test` target.
- + `make debug` should build a shared library (Nick Wellnhofer).
- The full test suite is only available to a shared library build.
-
- * wrappers:
-
- + Fix memory leak in Ruby wrapper (Nick Wellnhofer).
- Free the string returned from `cmark_markdown_to_html`.
- Fix `cmark_markdown_to_html` argument types.
- + Fix memory leak in Python wrapper (Nick Wellnhofer).
- Free the string returned from cmark_markdown_to_html.
- Fix cmark_markdown_to_html argument types.
- + Convert to and from UTF-8 under Python 2.
- + Add PHP wraper (Vinicius Dias).
-
- * ci:
-
- + Test with ASan and rework CI matrix (Nick Wellnhofer).
- + Remove the valgrind leakcheck test. This should be covered now
- by testing with LeakSanitizer on static builds, including tests
- like spectest_executable. The full test suite is only available
- to shared library builds which have to run without leak checks
- for now.
- + Separate cflags from cc (Nick Wellnhofer).
- + Make CMake matrix options work (Nick Wellnhofer).
- CMAKE_OPTIONS had no effect, leading to the shared library not being
- tested. Invoke cmake directly, so we don't have to deal with the mess
- in Makefile.
- + Do debug build so that assertions will run (#532).
- + Use `-gdwarf-4` with clang for compatibility with valgrind (#532).
-
- * test:
-
- + Fix memory leaks in cmark.py (Nick Wellnhofer).
- Free results of libcmark API function calls.
- + Fix memory leaks in api_test (Nick Wellnhofer).
- + Simplify test execution environment handling (Saleem Abdulrasool).
- Use generator expressions to compute the new path and avoid
- translations. This reduces complexity in the build and allows for a
- different build layout.
-
- * fuzz: Test more parser entry points (Nick Wellnhofer).
-
- * Remove superfluous definitions from scanners.re.
-
- * re2c: Disable UTF-8 (Nick Wellnhofer). The regexes don't require UTF-8
- features and work in ASCII mode as well. Disabling UTF-8 reduces the
- size of the code generated by re2c.
-
-[0.31.0]
-
- * Update to 0.31.2 spec.txt.
-
- * Treat unicode Symbols like Punctuation, as per the 0.31 spec.
-
- * Add a new function to `utf8.h`:
- `int cmark_utf8proc_is_punctuation_or_symbol(int32_t uc)`.
- The old `cmark_utf8proc_is_punctuation` has been kept for
- now, but it is no longer used.
-
- * Add new exported function `cmark_parser_new_with_mem_into_root`
- (API change) (John Ericson).
-
- * Avoid repeated `language-` in info string (commonmark/commonmark.js#277).
-
- * Fix quadratic behavior in `S_insert_emph` (Nick Wellnhofer).
- Fixes part of GHSA-66g8-4hjf-77xh.
-
- * Fix quadratic behavior in `check_open_blocks` (Nick Wellnhofer).
- Fixes part of GHSA-66g8-4hjf-77xh.
-
- * Track underscore bottom separately mod 3, like asterisk (Michael
- Howell). This was already implemented correctly for asterisks,
- but not for underscore.
-
- * Use `fwrite` instead of `printf` to print results in main (#523).
- This avoids a massive slowdown in MSYS2.
-
- * commonmark writer: less aggressive escaping for `!` (#131).
-
- * Update libFuzzer build (Nick Wellnhofer):
-
- + Move fuzzing files into their own directory.
- + Use libFuzzer the modern way by compiling and linking with
- `-fsanitize=fuzzer(-no-link)` without requiring `LIB_FUZZER_PATH`.
- + Update the `libFuzzer` rule in Makefile and the README.md.
-
- * CMake build changes (Saleem Abdulrasool).
-
- + Inline multiple variables in CMake, following CMake recommendations.
- + Simplify the version computation.
- + Remove the `CMARK_STATIC` and `CMARK_SHARED` options as one of the two
- must be enabled always as the cmark executable depends on the library.
- Instead of having a custom flag to discern between the
- library type, use the native CMake option `BUILD_SHARED_LIBS`,
- allowing the user to control which library to build. This matches
- CMake recommendations to only build a single copy of the library.
- + Introduce an author warning for the use of `CMARK_SHARED` and
- `CMARK_STATIC` to redirect the author of the dependent package to
- `BUILD_SHARED_LIBS`.
- + Permit incremental linking on Windows. Although incremental linking
- does introduce padding in the binary for incremental links, that
- should not matter for release mode builds in theory as `/OPT:REF`
- and `/OPT:ICF` will trigger full links, which is the default in
- release mode.
- + Hoist the CMake module inclusion to the top level.
- + Minor tweaks for speeding up the configure phase.
- Restructure the file layout to place the custom modules into the
- `cmake/modules` directory that is the common layout for CMake based
- projects.
- + Squelch C4232 warnings on MSVC builds.
- + Remove check for `__builtin_expect`. Use `__has_builtin` to check
- at compile time if the feature is supported.
- This macro is supported by both clang and GCC (as of 10).
- In the case that the compiler in use is not new enough, we still
- provide the fallback so that the code will compile but without the
- additional hints for the branch probability. `config.h` has been
- removed from the code base as it is no longer needed.
- + Remove `/TP` usage on MSVC and replace `CMARK_INLINE` with `inline`.
- These were workarounds for pre-VS2015 compilers, which are no longer
- supported.
- + Hoist the C visibility settings to top level
- + Clean up C4267 warnings on MSVC builds.
- + Remove some compiler compatibility checks that are no longer
- needed because VS 2013 is no longer supported (#498).
- + Adjust the policy to silence warnings on MSVC builds
- CMake 3.15+ remove `/W3` from the language flags under MSVC with
- CMP0092. Set the policy to new to avoid the D9025 warning.
- + Reflow some text to match CMake documentation style
- + Use generator expression for path computation.
- + Use CMake to propagate `CMARK_STATIC_DEFINE`.
- + Clean up an obsoleted variable (NFC).
- + Hoist the policy settings. Policy settings may impact how
- `project` functions. They should be set immediately after
- `cmake_minimum_required` (which implicitly sets policies).
- Use the `POLICY` check to see if a policy is defined rather
- than using a version check.
- + Replace `CMARK_TESTS` with CMake sanctioned `BUILD_TESTING`.
- + Correct typo and adjust command invocation. Use the proper
- generator expression for the python interpreter and adjust
- a typo in the component name.
- + Add an upgrade path for newer CMake.
- CMake 3.12 deprecated `FindPythonInterp`, and with CMake 3.27, were
- obsoleted with CMP0148. Add a version check and switch to the new
- behaviour to allow building with newer releases.
-
- * Fix regex syntax warnings in `pathological_tests.py` (Nick Wellnhofer).
-
- * `test/cmark.py`: avoid star imports (Jakub Wilk).
-
- * `spec_tests.py`: Add option to generate fuzz corpus (Nick Wellnhofer).
- Add an option `--fuzz-corpus` that writes the test cases to separate
- files including the options header, so they can be used as seed corpus
- for fuzz testing.
-
- * Fix some cmark.3 man rendering issues so we can do a clean regen
- (John Ericson).
-
- * Update Windows compilation instructions (Pomax, #525).
-
-[0.30.3]
-
- * Fix quadratic complexity bug with repeated `![[]()`.
- Resolves CVE-2023-22486. Add new pathological test. (John MacFarlane)
-
- * Allow declarations with no space, as per spec (#456, John MacFarlane).
-
- * Set `enumi*` counter correctly in LaTeX output (#451, John MacFarlane).
-
- * Allow `<!DOCTYPE` to be case-insensitive. (This conforms to the
- existing spec.) (John MacFarlane)
-
- * Fixed HTML comment scanning. Need to handle this case: `<!--> and -->`.
- Since the scanner finds the longest match, we had to
- move some of the logic outside of the scanner. (John MacFarlane)
-
- * Fix quadratic parsing issue with repeated `<!--` (this was not
- introduced by the previous fix, and not in a released version of cmark).
- Resolves CVE-2023-22484. Add new pathological test. (John MacFarlane)
-
- * Update HTML comment scanner to accord with commonmark/commonmark-spec#713
- (John MacFarlane).
-
- * Pathological tests: half the number of repetitions, and the timeout.
- This reduces the time needed for the pathological tests.
- (John MacFarlane)
-
- * Shrink `struct cmark_node` (#446). The `internal_offset` member is
- only used for headings and can be moved to `struct cmark_heading`.
- This reduces the size of `struct cmark_node` from 112 to 104 bytes on
- 64-bit systems. (Nick Wellnhofer)
-
- * Add `-Wstrict-prototypes` and fix offending functions. (Nick
- Wellnhofer, Dan Cîrnaț)
-
- * Fix quadratic behavior involving `get_containing_block` (#431).
- Instead of searching for the containing block, update the tight list
- status when entering a child of a list item or exiting a list.
- (Nick Wellnhofer)
-
- * Fix `pathological_tests.py` (Nick Wellnhofer):
- - Use a multiprocessing.Queue to actually get results from spawned
- tests processes.
- - Fix the `allowed_failures` test.
- - Truncate actual output when printed.
- - Prepare for testing pathological behavior of the Commonmark renderer.
-
- * Fix source position bug with backticks (kyle).
-
-[0.30.2]
-
- * Fix parsing of emphasis before links (#424, Nick Wellnhofer).
- Fixes a regression introduced with commit ed0a4bf.
-
- * Update to Unicode 14.0 (data-man).
-
- * Add `~` to safe href character set (#394, frogtile).
-
- * Update CMakeLists.txt (Saleem Abdulrasool). Bump the minimum required
- CMake to 3.7. Imperatively define output name for static library.
-
- * Fix install paths in libcmark.pc (Sebastián Mancilla).
- `CMAKE_INSTALL_<dir>` can be relative or absolute path, so it is wrong to
- prefix CMAKE_INSTALL_PREFIX because if CMAKE_INSTALL_<dir> is set to an
- absolute path it will result in a malformed path with two absolute paths
- joined together. Instead, use `CMAKE_INSTALL_FULL_<dir>` from
- GNUInstallDirs.
-
-[0.30.1]
-
- * Properly indent block-level contents of list items in man (#258).
- This handles nested lists as well as items with multiple paragraphs.
- The change requires addition of a new field block_number_in_list_item
- to cmark_renderer, but this does not change the public API.
- * Fix quadratic behavior when parsing emphasis (#389, Nick
- Wellnhofer). Delimiters can be deleted, so store delimiter positions
- instead of pointers in `openers_bottom`. Besides causing undefined
- behavior when reading a dangling pointer, this could also result
- in quadratic behavior when parsing emphasis.
- * Fix quadratic behavior when parsing smart quotes (#388, Nick Wellnhofer).
- Remove matching smart quote delimiters. Otherwise, the same opener
- could be found over and over, preventing the `openers_bottom`
- optimization from kicking in and leading to quadratic behavior when
- processing lots of quotes.
- * Modify CMake configuration so that the project can be built with
- older versions of CMake (#384, Saleem Abdulrasool). (In 0.30.0,
- some features were used that require CMake >= 3.3.) The cost of this
- backwards compatibility is that developers must now explicitly invoke
- `cmark_add_compile_options` when a new compilation target is added.
- * Remove a comma at the end of an enumerator list, which was flagged
- by clang as a C++11 extension.
- * make_man_page.py: use absolute path with CDLL. This avoids the error
- "file system relative paths not allowed in hardened programs."
- * Include cmark version in cmark(3) man page (instead of LOCAL).
-
-[0.30.0]
-
- * Use official 0.30 spec.txt.
- * Add `cmark_get_default_mem_allocator()` (#330). API change: this
- adds a new exported function in cmark.h.
- * Fix #383. An optimization we used for emphasis parsing was
- too aggressive, causing us to miss some emphasis that was legal
- according to the spec. We fix this by indexing the `openers_bottom`
- table not just by the type of delimiter and the length of the
- closing delimiter mod 3, but by whether the closing delimiter
- can also be an opener. (The algorithm for determining emphasis
- matching depends on all these factors.) Add regression test.
- * Fix quadratic behavior with inline HTML (#299, Nick Wellnhofer).
- Repeated starting sequences like `<?`, `<!DECL ` or `<![CDATA[` could
- lead to quadratic behavior if no matching ending sequence was found.
- Separate the inline HTML scanners. Remember if scanning the whole input
- for a specific ending sequence failed and skip subsequent scans.
- * Speed up hierarchy check in tree manipulation API (Nick Wellnhofer).
- Skip hierarchy check in the common case that the inserted child has
- no children.
- * Fix quadratic behavior when parsing inlines (#373, Nick Wellnhofer).
- The inline parsing code would call `cmark_node_append_child` to append
- nodes. This public function has a sanity check which is linear in the
- depth of the tree. Repeated calls could show quadratic behavior in
- degenerate trees. Use a special function to append nodes without this
- check. (Issue found by OSS-Fuzz.)
- * Replace invalid characters in XML output (#365, Nick wellnhofer).
- Control characters, U+FFFE and U+FFFF aren't allowed in XML 1.0, so
- replace them with U+FFFD (replacement character). This doesn't solve
- the problem how to roundtrip these characters, but at least we don't
- produce invalid XML.
- * Avoid quadratic output growth with reference links (#354, Nick Wellnhofer).
- Keep track of the number bytes added through expansion of reference
- links and limit the total to the size of the input document. Always
- allow a minimum of 100KB. Unfortunately, cmark has no error handling,
- so all we can do is to stop expanding reference links without returning
- an error. This should never be an issue in practice though. The 100KB
- minimum alone should cover all real-world cases.
- * Fix issue with type-7 HTML blocks interrupting paragraphs
- (see commonmark/commonmark.js#213).
- * Treat `textarea` like `script`, `style`, `pre` (type 1 HTML block),
- in accordance with spec change.
- * Define whitespace per spec (Asherah Conor).
- * Add `MAX_INDENT` for xml (#355). Otherwise we can get quadratic
- increase in size with deeply nested structures.
- * Fix handling of empty strings when creating XML/HTML output
- (Steffen Kieß).
- * Commonmark renderer: always use fences for code (#317).
- This solves problems with adjacent code blocks being merged.
- * Improve rendering of commonmark code spans with spaces (#316).
- * Cleaner approach to max digits for numeric entities.
- This modifies unescaping in `houdini_html_u.c` rather than
- the entity handling in `inlines.c`. Unlike the other,
- this approach works also in e.g. link titles.
- * Fix entity parser (and api test) to respect length limit on
- numeric entities.
- * Don't allow link destinations with unbalanced unescaped parentheses.
- See commonmark/commonmark.js#177.
- * `print_usage()`: Minor grammar fix, swap two words (#305, Øyvind A. Holm).
- * Don't call `memcpy` with `NULL` as first parameter.
- This is illegal according to the C standard, sec. 7.1.4.
- See <https://www.imperialviolet.org/2016/06/26/nonnull.html>.
- * Add needed include in `blocks.c`.
- * Fix unnecessary variable assignment.
- * Skip UTF-8 BOM if present at beginning of buffer (#334).
- * Fix URL check in `is_autolink` (Nick Wellnhofer). In a recent commit,
- the check was changed to `strcmp`, but we really have to use `strncmp`.
- * Fix null pointer deref in `is_autolink` (Nick Wellnhofer).
- Introduced by a recent commit. Found by OSS-Fuzz.
- * Rearrange struct cmark_node (Nick Wellnhofer). Introduce multi-purpose
- data/len members in struct cmark_node. This is mainly used to store
- literal text for inlines, code and HTML blocks.
- Move the content strbuf for blocks from `cmark_node` to `cmark_parser`.
- When finalizing nodes that allow inlines (paragraphs and headings),
- detach the strbuf and store the block content in the node's data/len
- members. Free the block content after processing inlines.
- Reduces size of struct `cmark_node` by 8 bytes.
- * Improve packing of `struct cmark_list` (Nick Wellnhofer).
- * Use C string instead of chunk in a number of contexts (Nick Wellnhofer,
- #309). The node struct never references memory of other nodes now.
- Node accessors don't have to check for delayed creation of C strings,
- so parsing and iterating all literals using the public API should
- actually be faster than before. These changes also reduce the size
- of `struct cmark_node`.
- * Add casts for MSVC10 (from kivikakk in cmark-cfm).
- * commonmark renderer: better escaping in smart mode. When
- `CMARK_OPT_SMART` is enabled, we escape literal `-`, `.`, and quote
- characters when needed to avoid their being "smartified."
- * Add options field to `cmark_renderer`.
- * commonmark.c - use `size_t` instead of `int`.
- * Include `string.h` in `cmark-fuzz.c`.
- * Fix #220 (hash collisions for references) (Vicent Marti via cmark-gfm).
- Reimplemented reference storage as follows:
- 1. New references are always inserted at the end of a linked list. This
- is an O(1) operation, and does not check whether an existing (duplicate)
- reference with the same label already exists in the document.
- 2. Upon the first call to `cmark_reference_lookup` (when it is expected
- that no further references will be added to the reference map), the
- linked list of references is written into a fixed-size array.
- 3. The fixed size array can then be efficiently sorted in-place in O(n
- log n). This operation only happens once. We perform this sort in a
- _stable_ manner to ensure that the earliest link reference in the
- document always has preference, as the spec dictates. To accomplish
- this, every reference is tagged with a generation number when initially
- inserted in the linked list.
- 4. The sorted array is then compacted in O(n). Since it was sorted in a
- stable way, the first reference for each label is preserved and the
- duplicates are removed, matching the spec.
- 5. We can now simply perform a binary search for the current
- `cmark_reference_lookup` query in O(log n). Any further lookup calls
- will also be O(log n), since the sorted references table only needs to
- be generated once.
- The resulting implementation is notably simple (as it uses standard
- library builtins `qsort` and `bsearch`), whilst performing better than
- the fixed size hash table in documents that have a high number of
- references and never becoming pathological regardless of the input.
- * Comment out unused function `cmark_strbuf_cstr` in `buffer.h`.
- * Re-add `--safe` command-line option as a no-op (#344), for backwards
- compatibility.
- * Update to Unicode 13.0
- * Generate and install cmake-config file (Reinhold Gschweicher).
- Add full cmake support. The project can either be used with
- `add_subdirectory` or be installed into the system (or some other
- directory) and be found with `find_package(cmark)`. In both cases the
- cmake target `cmark::cmark` and/or `cmark::cmark_static` is all that
- is needed to be linked. Previously the `cmarkConfig.cmake` file
- was generated, but not installed. As additional bonus of generation
- by cmake we get a generated `cmake-config-version.cmake` file for
- `find_package()` to search for the same major version.
- The generated config file is position independent, allowing the
- installed directory to be copied or moved and still work.
- The following four files are generated and installed:
- `lib/cmake/cmark/cmark-config.cmake`,
- `lib/cmake/cmark/cmark-config-version.cmake`,
- `lib/cmake/cmark/cmark-targets.cmake`,
- `lib/cmake/cmark/cmark-targets-release.cmake`.
- * Adjust the MinGW paths for MinGW64 (Daniil Baturin).
- * Fix CMake generator expression checking for MSVC (Nick Wellnhofer).
- * Fix `-Wconst-qual` warning (Saleem Abdulrasool). This enables building
- with `/Zc:strictString` with MSVC as well.
- * Improve and modernize cmake build (Saleem Abdulrasool).
- + Build: add exports targets for build tree usage (#307).
- + Uuse target properties for include paths.
- + Remove the unnecessary execute permission on CMakeLists.txt.
- + Reduce property computation in CMake.
- + Use `CMAKE_INCLUDE_CURRENT_DIRECTORY`.
- + Improve man page installation.
- + Only include `GNUInstallDirs` once.
- + Replace `add_compile_definitions` with `add_compile_options`
- since the former was introduced in 3.12 (#321).
- + Cleanup CMake (#319).
- + Inline a variable.
- + Use `LINKER_LANGUAGE` property for C++ runtime.
- + Use CMake to control C standard.
- + Use the correct variable.
- + Loosen the compiler check
- + Hoist shared flags to top-level CMakeLists
- + Remove duplicated flags.
- + Use `add_compile_options` rather than modify `CMAKE_C_FLAGS`.
- + Hoist sanitizer flags to global state.
- + Hoist `-fvisibilty` flags to top-level.
- + Hoist the debug flag handling.
- + Hoist the profile flag handling.
- + Remove incorrect variable handling.
- + Remove unused CMake includes.
- * Remove "-rdynamic" flag for static builds (#300, Eric Pruitt).
- * Fixed installation on other than Ubuntu GNU/Linux distributions
- (Vitaly Zaitsev).
- * Link executable with static or shared library (Nick Wellnhofer).
- If `CMARK_STATIC` is on (default), link the executable with the static
- library. This produces exactly the same result as compiling the library
- sources again and linking with the object files.
- If `CMARK_STATIC` is off, link the executable with the shared library.
- This wasn't supported before and should be the preferred way to
- package cmark on Linux distros.
- Building only a shared library and a statically linked executable
- isn't supported anymore but this doesn't seem useful.
- * Reintroduce version check for MSVC /TP flag (Nick Wellnhofer).
- The flag is only required for old MSVC versions.
- * normalize.py: use `html.escape` instead of `cgi.escape` (#313).
- * Fix pathological_tests.py on Windows (Nick Wellnhofer).
- When using multiprocessing on Windows, the main program must be
- guarded with a `__name__` check.
- * Remove useless `__name__` check in test scripts (Nick Wellnhofer).
- * Add CIFuzz (Leo Neat).
- * cmark.1 - Document --unsafe instead of --safe (#332).
- * cmark.1: remove docs for `--normalize` which no longer exists (#332).
- * Add lint target to Makefile.
- * Add uninstall target to Makefile.
- * Update benchmarks (#338).
- * Fix typo in documentation (Tim Gates).
- * Increase timeout for pathological tests to avoid CI failure.
- * Update the Racket wrapper with the safe -> unsafe flag change (Eli
- Barzilay).
-
-[0.29.0]
-
- * Update spec to 0.29.
- * Make rendering safe by default (#239, #273).
- Adds `CMARK_OPT_UNSAFE` and make `CMARK_OPT_SAFE` a no-op (for API
- compatibility). The new default behavior is to suppress raw HTML and
- potentially dangerous links. The `CMARK_OPT_UNSAFE` option has to be set
- explicitly to prevent this.
- **NOTE:** This change will require modifications in bindings for cmark
- and in most libraries and programs that use cmark.
- Borrows heavily from @kivikakk's patch in github/cmark-gfm#123.
- * Add sourcepos info for inlines (Yuki Izumi).
- * Disallow more than 32 nested balanced parens in a link (Yuki Izumi).
- * Resolve link references before creating setext header.
- A setext header line after a link reference should not
- create a header, according to the spec.
- * commonmark renderer: improve escaping.
- URL-escape special characters when escape mode is URL, and not otherwise.
- Entity-escape control characters (< 0x20) in non-literal escape modes.
- * render: only emit actual newline when escape mode is LITERAL.
- For markdown content, e.g., in other contexts we want some
- kind of escaping, not a literal newline.
- * Update code span normalization to conform with spec change.
- * Allow empty `<>` link destination in reference link.
- * Remove leftover includes of `memory.h` (#290).
- * A link destination can't start with `<` unless it is
- an angle-bracket link that also ends with `>` (#289).
- (If your URL really starts with `<`, URL-escape it.)
- * Allow internal delimiter runs to match if both have lengths that are
- multiples of 3. See commonmark/commonmark#528.
- * Include `references.h` in `parser.h` (#287).
- * Fix `[link](<foo\>)`.
- * Use hand-rolled scanner for thematic break (see #284).
- Keep track of the last position where a thematic break
- failed to match on a line, to avoid rescanning unnecessarily.
- * Rename `ends_with_blank_line` with `S_` prefix.
- * Add `CMARK_NODE__LAST_LINE_CHECKED` flag (#284).
- Use this to avoid unnecessary recursion in `ends_with_blank_line`.
- * In `ends_with_blank_line`, call `S_set_last_line_blank`
- to avoid unnecessary repetition (#284). Once we settle whether a list
- item ends in a blank line, we don't need to revisit this in considering
- parent list items.
- * Disallow unescaped `(` in parenthesized link title.
- * Copy line/col info straight from opener/closer (Ashe Connor).
- We can't rely on anything in `subj` since it's been modified while parsing
- the subject and could represent line info from a future line. This is
- simple and works.
- * `render.c`: reset `last_breakable` after cr. Fixes jgm/pandoc#5033.
- * Fix a typo in `houdini_href_e.c` (Felix Yan).
- * commonmark writer: use `~~~` fences if info string contains backtick.
- This is needed for round-trip tests.
- * Update scanners for new info string rules.
- * Add XSLT stylesheet to convert cmark XML back to Commonmark
- (Nick Wellnhofer, #264). Initial version of an XSLT stylesheet that
- converts the XML format produced by `cmark -t xml` back to Commonmark.
- * Check for whitespace before reference title (#263).
- * Bump CMake to version 3 (Jonathan Müller).
- * Build: Remove deprecated call to `add_compiler_export_flags()`
- (Jonathan Müller). It is deprecated in CMake 3.0, the replacement is to
- set the `CXX_VISIBILITY_PRESET` (or in our case `C_VISIBILITY_PRESET`) and
- `VISIBILITY_INLINES_HIDDEN` properties of the target. We're already
- setting them by setting the CMake variables anyway, so the call can be
- removed.
- * Build: only attempt to install MSVC system libraries on Windows
- (Saleem Abdulrasool). Newer versions of CMake attempt to query the system
- for information about the VS 2017 installation. Unfortunately, this query
- fails on non-Windows systems when cross-compiling:
- `cmake_host_system_information does not recognize <key> VS_15_DIR`.
- CMake will not find these system libraries on non-Windows hosts anyways,
- and we were silencing the warnings, so simply omit the installation when
- cross-compiling to Windows.
- * Simplify code normalization, in line with spec change.
- * Implement code span spec changes. These affect both parsing and writing
- commonmark.
- * Add link parsing corner cases to regressions (Ashe Connor).
- * Add `xml:space="preserve"` in XML output when appropriate
- (Nguyễn Thái Ngọc Duy).
- (For text, code, code_block, html_inline and html_block tags.)
- * Removed meta from list of block tags. Added regression test.
- See commonmark/CommonMark#527.
- * `entity_tests.py` - omit noisy success output.
- * `pathological_tests.py`: make tests run faster.
- Commented out the (already ignored) "many references" test, which
- times out. Reduced the iterations for a couple other tests.
- * `pathological_tests.py`: added test for deeply nested lists.
- * Optimize `S_find_first_nonspace`. We were needlessly redoing things we'd
- already done. Now we skip the work if the first nonspace is greater than
- the current offset. This fixes pathological slowdown with deeply nested
- lists (#255). For N = 3000, the time goes from over 17s to about 0.7s.
- Thanks to Martin Mitas for diagnosing the problem.
- * Allow spaces in link destination delimited with pointy brackets.
- * Adjust max length of decimal/numeric entities.
- See commonmark/CommonMark#487.
- * Fix inline raw HTML parsing.
- This fixes a recently added failing spec test case. Previously spaces
- were being allowed in unquoted attribute values; no we forbid them.
- * Don't allow list markers to be indented >= 4 spaces.
- See commonmark/CommonMark#497.
- * Check for empty buffer when rendering (Phil Turnbull).
- For empty documents, `->size` is zero so
- `renderer.buffer->ptr[renderer.buffer->size - 1]` will cause an
- out-of-bounds read. Empty buffers always point to the global
- `cmark_strbuf__initbuf` buffer so we read `cmark_strbuf__initbuf[-1]`.
- * Also run API tests with `CMARK_SHARED=OFF` (Nick Wellnhofer).
- * Rename roundtrip and entity tests (Nick Wellnhofer).
- Rename the tests to reflect that they use the library, not the
- executable.
- * Generate export header for static-only build (#247, Nick Wellnhofer).
- * Fuzz width parameter too (Phil Turnbull). Allow the `width` parameter to
- be generated too so we get better fuzz-coverage.
- * Don't discard empty fuzz test-cases (Phil Turnbull). We currently discard
- fuzz test-cases that are empty but empty inputs are valid markdown. This
- improves the fuzzing coverage slightly.
- * Fixed exit code for pathological tests.
- * Add allowed failures to `pathological_tests.py`.
- This allows us to include tests that we don't yet know how to pass.
- * Add timeout to `pathological_tests.py`.
- Tests must complete in 8 seconds or are errors.
- * Add more pathological tests (Martin Mitas).
- These tests target the issues #214, #218, #220.
- * Use pledge(2) on OpenBSD (Ashe Connor).
- * Update the Racket wrapper (Eli Barzilay).
- * Makefile: For afl target, don't build tests.
-
-[0.28.3]
-
- * Include GNUInstallDirs in src/CMakeLists.txt (Nick Wellnhofer, #240).
- This fixes build problems on some cmake versions (#241).
-
-[0.28.2]
-
- * Fixed regression in install dest for static library (#238).
- Due to a mistake, 0.28.1 installed libcmark.a into include/.
-
-[0.28.1]
-
- * `--smart`: open quote can never occur right after `]` or `)` (#227).
- * Fix quadratic behavior in `finalize` (Vicent Marti).
- * Don't use `CMAKE_INSTALL_LIBDIR` to create `libcmark.pc` (#236).
- This wasn't getting set in processing `libcmark.pc.in`, and we
- were getting the wrong entry in `libcmark.pc`.
- The new approach sets an internal `libdir` variable to
- `lib${LIB_SUFFIX}`. This variable is used both to set the
- install destination and in the libcmark.pc.in template.
- * Update README.md, replace `make astyle` with `make format`
- (Nguyễn Thái Ngọc Duy).
-
-[0.28.0]
-
- * Update spec.
- * Use unsigned integer when shifting (Phil Turnbull).
- Avoids a UBSAN warning which can be triggered when handling a
- long sequence of backticks.
- * Avoid memcpy'ing NULL pointers (Phil Turnbull).
- Avoids a UBSAN warning when link title is empty string.
- The length of the memcpy is zero so the NULL pointer is not
- dereferenced but it is still undefined behaviour.
- * DeMorgan simplification of some tests in emphasis parser.
- This also brings the code into closer alignment with the wording
- of the spec (see jgm/CommonMark#467).
- * Fixed undefined shift in commonmark writer (#211).
- Found by google/oss-fuzz:
- <https://oss-fuzz.com/v2/testcase-detail/4686992824598528>.
- * latex writer: fix memory overflow (#210).
- We got an array overflow in enumerated lists nested more than
- 10 deep with start number =/= 1.
- This commit also ensures that we don't try to set `enum_` counters
- that aren't defined by LaTeX (generally up to enumv).
- Found by google/oss-fuzz:
- <https://oss-fuzz.com/v2/testcase-detail/5546760854306816>.
- * Check for NULL pointer in get_link_type (Phil Turnbull).
- `echo '[](xx:)' | ./build/src/cmark -t latex` gave a
- segfault.
- * Move fuzzing dictionary into single file (Phil Turnbull).
- This allows AFL and libFuzzer to use the same dictionary
- * Reset bytes after UTF8 proc (Yuki Izumi, #206).
- * Don't scan past an EOL (Yuki Izumi).
- The existing negated character classes (`[^…]`) are careful to
- always include` \x00` in the characters excluded, but these `.`
- catch-alls can scan right past the terminating NUL placed
- at the end of the buffer by `_scan_at`. As such, buffer
- overruns can occur. Also, don't scan past a newline in HTML
- block end scanners.
- * Document cases where `get_` functions return `NULL` (#155).
- E.g. `cmark_node_get_url` on a non-link or image.
- * Properly handle backslashes in link destinations (#192).
- Only ascii punctuation characters are escapable, per the spec.
- * Fixed `cmark_node_get_list_start` to return 0 for bullet lists,
- as documented (#202).
- * Use `CMARK_NO_DELIM` for bullet lists (#201).
- * Fixed code for freeing delimiter stack (#189).
- * Removed abort outside of conditional (typo).
- * Removed coercion in error message when aborting from buffer.
- * Print message to stderr when we abort due to memory demands (#188).
- * `libcmark.pc`: use `CMAKE_INSTALL_LIBDIR` (#185, Jens Petersen).
- Needed for multilib distros like Fedora.
- * Fixed buffer overflow error in `S_parser_feed` (#184).
- The overflow could occur in the following condition:
- the buffer ends with `\r` and the next memory address
- contains `\n`.
- * Update emphasis parsing for spec change.
- Strong now goes inside Emph rather than the reverse,
- when both scopes are possible. The code is much simpler.
- This also avoids a spec inconsistency that cmark had previously:
- `***hi***` became Strong (Emph "hi")) but
- `***hi****` became Emph (Strong "hi")) "*"
- * Fixes for the LaTeX renderer (#182, Doeme)
- + Don't double-output the link in latex-rendering.
- + Prevent ligatures in dashes sensibly when rendering latex.
- `\-` is a hyphenation, so it doesn't get displayed at all.
- * Added a test for NULL when freeing `subj->last_delim`.
- * Cleaned up setting of lower bounds for openers.
- We now use a much smaller array.
- * Fix #178, quadratic parsing bug. Add pathological test.
- * Slight improvement of clarity of logic in emph matching.
- * Fix "multiple of 3" determination in emph/strong parsing.
- We need to store the length of the original delimiter run,
- instead of using the length of the remaining delimiters
- after some have been subtracted. Test case:
- `a***b* c*`. Thanks to Raph Levin for reporting.
- * Correctly initialize chunk in S_process_line (Nick Wellnhofer, #170).
- The `alloc` member wasn't initialized. This also allows to add an
- assertion in `chunk_rtrim` which doesn't work for alloced chunks.
- * Added 'make newbench'.
- * `scanners.c` generated with re2c 0.16 (68K smaller!).
- * `scanners.re` - fixed warnings; use `*` for fallback.
- * Fixed some warnings in `scanners.re`.
- * Update CaseFolding to latest (Kevin Wojniak, #168).
- * Allow balanced nested parens in link destinations (Yuki Izumi, #166)
- * Allocate enough bytes for backticks array.
- * Inlines: Ensure that the delimiter stack is freed in subject.
- * Fixed pathological cases with backtick code spans:
-
- - Removed recursion in scan_to_closing_backticks
- - Added an array of pointers to potential backtick closers
- to subject
- - This array is used to avoid traversing the subject again
- when we've already seen all the potential backtick closers.
- - Added a max bound of 1000 for backtick code span delimiters.
- - This helps with pathological cases like:
-
- x
- x `
- x ``
- x ```
- x ````
- ...
-
- - Added pathological test case.
-
- Thanks to Martin Mitáš for identifying the problem and for
- discussion of solutions.
- * Remove redundant cmake_minimum_required (#163, @kainjow).
- * Make shared and static libraries optional (Azamat H. Hackimov).
- Now you can enable/disable compilation and installation targets for
- shared and static libraries via `-DCMARK_SHARED=ON/OFF` and
- `-DCMARK_STATIC=ON/OFF`.
- * Added support for built-in `${LIB_SUFFIX}` feature (Azamat H.
- Hackimov). Replaced `${LIB_INSTALL_DIR}` option with built-in
- `${LIB_SUFFIX}` for installing for 32/64-bit systems. Normally,
- CMake will set `${LIB_SUFFIX}` automatically for required enviroment.
- If you have any issues with it, you can override this option with
- `-DLIB_SUFFIX=64` or `-DLIB_SUFFIX=""` during configuration.
- * Add Makefile target and harness to fuzz with libFuzzer (Phil Turnbull).
- This can be run locally with `make libFuzzer` but the harness will be
- integrated into oss-fuzz for large-scale fuzzing.
- * Advertise `--validate-utf8` in usage information
- (Nguyễn Thái Ngọc Duy).
- * Makefile: use warnings with re2c.
- * README: Add link to Python wrapper, prettify languages list
- (Pavlo Kapyshin).
- * README: Add link to cmark-scala (Tim Nieradzik, #196)
-
-[0.27.1]
-
- * Set policy for CMP0063 to avoid a warning (#162).
- Put set_policy under cmake version test.
- Otherwise we get errors in older versions of cmake.
- * Use VERSION_GREATER to clean up cmake version test.
- * Improve afl target. Use afl-clang by default. Set default for path.
-
-[0.27.0]
-
- * Update spec to 0.27.
- * Fix warnings building with MSVC on Windows (#165, Hugh Bellamy).
- * Fix `CMAKE_C_VISIBILITY_PRESET` for cmake versions greater than 1.8
- (e.g. 3.6.2) (#162, Hugh Bellamy). This lets us build swift-cmark
- on Windows, using clang-cl.
- * Fix for non-matching entities (#161, Yuki Izumi).
- * Modified `print_delimiters` (commented out) so it compiles again.
- * `make format`: don't change order of includes.
- * Changed logic for null/eol checks (#160).
- + only check once for "not at end of line"
- + check for null before we check for newline characters (the
- previous patch would fail for NULL + CR)
- * Fix by not advancing past both `\0` and `\n` (Yuki Izumi).
- * Add test for NUL-LF sequence (Yuki Izumi).
- * Fix memory leak in list parsing (Yuki Izumi).
- * Use `cmark_mem` to free where used to alloc (Yuki Izumi).
- * Allow a shortcut link before a `(` (jgm/CommonMark#427).
- * Allow tabs after setext header line (jgm/commonmark.js#109).
- * Don't let URI schemes start with spaces.
- * Fixed h2..h6 HTML blocks (jgm/CommonMark#430). Added regression test.
- * Autolink scheme can contain digits (Gábor Csárdi).
- * Fix nullary function declarations in cmark.h (Nick Wellnhofer).
- Fixes strict prototypes warnings.
- * COPYING: Update file name and remove duplicate section and
- (Peter Eisentraut).
- * Fix typo (Pavlo Kapyshin).
-
-[0.26.1]
-
- * Removed unnecessary typedef that caused build failure on
- some platforms.
- * Use `$(MAKE)` in Makefile instead of hardcoded `make` (#146,
- Tobias Kortkamp).
-
-[0.26.0]
-
- * Implement spec changes for list items:
- - Empty list items cannot interrupt paragraphs.
- - Ordered lists cannot interrupt paragraphs unless
- they start with 1.
- - Removed "two blank lines break out of a list" feature.
- * Fix sourcepos for blockquotes (#142).
- * Fix sourcepos for atx headers (#141).
- * Fix ATX headers and thematic breaks to allow tabs as well as spaces.
- * Fix `chunk_set_cstr` with suffix of current string (#139,
- Nick Wellnhofer). It's possible that `cmark_chunk_set_cstr` is called
- with a substring (suffix) of the current string. Delay freeing of the
- chunk content to handle this case correctly.
- * Export targets on installation (Jonathan Müller).
- This allows using them in other cmake projects.
- * Fix cmake warning about CMP0048 (Jonathan Müller).
- * commonmark renderer: Ensure we don't have a blank line
- before a code block when it's the first thing in a list
- item.
- * Change parsing of strong/emph in response to spec changes.
- `process_emphasis` now gets better results in corner cases.
- The change is this: when considering matches between an interior
- delimiter run (one that can open and can close) and another delimiter
- run, we require that the sum of the lengths of the two delimiter
- runs mod 3 is not 0.
- * Ported Robin Stocker's changes to link parsing in jgm/commonmark#101.
- This uses a separate stack for brackets, instead of putting them on the
- delimiter stack. This avoids the need for looking through the delimiter
- stack for the next bracket.
- * `cmark_reference_lookup`: Return NULL if reference is null string.
- * Fix character type detection in `commonmark.c` (Nick Wellnhofer).
- Fixes test failures on Windows and undefined behavior.
- - Implement `cmark_isalpha`.
- - Check for ASCII character before implicit cast to char.
- - Use internal ctype functions in `commonmark.c`.
- * Better documentation of memory-freeing responsibilities.
- in `cmark.h` and its man page (#124).
- * Use library functions to insert nodes in emphasis/link processing.
- Previously we did this manually, which introduces many
- places where errors can creep in.
- * Correctly handle list marker followed only by spaces.
- Previously when a list marker was followed only by spaces,
- cmark expected the following content to be indented by
- the same number of spaces. But in this case we should
- treat the line just like a blank line and set list padding
- accordingly.
- * Fixed a number of issues relating to line wrapping.
- - Extend `CMARK_OPT_NOBREAKS` to all renderers and add `--nobreaks`.
- - Do not autowrap, regardless of width parameter, if
- `CMARK_OPT_NOBREAKS` is set.
- - Fixed `CMARK_OPT_HARDBREAKS` for LaTeX and man renderers.
- - Ensure that no auto-wrapping occurs if
- `CMARK_OPT_NOBREAKS` is enabled, or if output is CommonMark and
- `CMARK_OPT_HARDBREAKS` is enabled.
- * Set stdin to binary mode on Windows (Nick Wellnhofer, #113).
- This fixes EOLs when reading from stdin.
- * Add library option to render softbreaks as spaces (Pavlo
- Kapyshin). Note that the `NOBREAKS` option is HTML-only
- * renderer: `no_linebreaks` instead of `no_wrap`.
- We generally want this option to prohibit any breaking
- in things like headers (not just wraps, but softbreaks).
- * Coerce `realurllen` to `int`. This is an alternate solution for pull
- request #132, which introduced a new warning on the comparison
- (Benedict Cohen).
- * Remove unused variable `link_text` (Mathiew Duponchelle).
- * Improved safety checks in buffer (Vicent Marti).
- * Add new interface allowing specification of custom memory allocator
- for nodes (Vicent Marti). Added `cmark_node_new_with_mem`,
- `cmark_parser_new_with_mem`, `cmark_mem` to API.
- * Reduce storage size for nodes by using bit flags instead of
- separate booleans (Vicent Marti).
- * config: Add `SSIZE_T` compat for Win32 (Vicent Marti).
- * cmake: Global handler for OOM situations (Vicent Marti).
- * Add tests for memory exhaustion (Vicent Marti).
- * Document in man page and public header that one should use the same
- memory allocator for every node in a tree.
- * Fix ctypes in Python FFI calls (Nick Wellnhofer). This didn't cause
- problems so far because all types are 32-bit on 32-bit systems and
- arguments are passed in registers on x86-64. The wrong types could cause
- crashes on other platforms, though.
- * Remove spurious failures in roundtrip tests. In the commonmark writer we
- separate lists, and lists and indented code, using a dummy HTML comment.
- So in evaluating the round-trip tests, we now strip out
- these comments. We also normalize HTML to avoid issues
- having to do with line breaks.
- * Add 2016 to copyright (Kevin Burke).
- * Added `to_commonmark` in `test/cmark.py` (for round-trip tests).
- * `spec_test.py` - parameterize `do_test` with converter.
- * `spec_tests.py`: exit code is now sum of failures and errors.
- This ensures that a failing exit code will be given when
- there are errors, not just with failures.
- * Fixed round trip tests. Previously they actually ran
- `cmark` instead of the round-trip version, since there was a bug in
- setting the ROUNDTRIP variable (#131).
- * Added new `roundtrip_tests.py`. This replaces the old use of simple shell
- scripts. It is much faster, and more flexible. (We will be able
- to do custom normalization and skip certain tests.)
- * Fix tests under MinGW (Nick Wellnhofer).
- * Fix leak in `api_test` (Mathieu Duponchelle).
- * Makefile: have leakcheck stop on first error instead of going through
- all the formats and options and probably getting the same output.
- * Add regression tests (Nick Wellnhofer).
-
-[0.25.2]
-
- * Open files in binary mode (#113, Nick Wellnhofer). Now that cmark
- supports different line endings, files must be openend in binary mode
- on Windows.
- * Reset `partially_consumed_tab` on every new line (#114, Nick Wellnhofer).
- * Handle buffer split across a CRLF line ending (#117). Adds an internal
- field to the parser struct to keep track of `last_buffer_ended_with_cr`.
- Added test.
-
-[0.25.1]
-
- * Release with no code changes. cmark version was mistakenly set to
- 0.25.1 in the 0.25.0 release (#112), so this release just
- ensures that this will cause no confusion later.
-
-[0.25.0]
-
- * Fixed tabs in indentation (#101). This patch fixes S_advance_offset
- so that it doesn't gobble a tab character when advancing less than the
- width of a tab.
- * Added partially_consumed_tab to parser. This keeps track of when we
- have gotten partway through a tab when consuming initial indentation.
- * Simplified add_line (only need parser parameter).
- * Properly handle partially consumed tab. E.g. in
-
- - foo
-
- <TAB><TAB>bar
-
- we should consume two spaces from the second tab, including two spaces
- in the code block.
- * Properly handle tabs with blockquotes and fenced blocks.
- * Fixed handling of tabs in lists.
- * Clarified logic in S_advance_offset.
- * Use an assertion to check for in-range html_block_type.
- It's a programming error if the type is out of range.
- * Refactored S_processLines to make the logic easier to
- understand, and added documentation (Mathieu Duponchelle).
- * Removed unnecessary check for empty string_content.
- * Factored out contains_inlines.
- * Moved the cmake minimum version to top line of CMakeLists.txt
- (tinysun212).
- * Fix ctype(3) usage on NetBSD (Kamil Rytarowski). We need to cast value
- passed to isspace(3) to unsigned char to explicitly prevent possibly
- undefined behavior.
- * Compile in plain C mode with MSVC 12.0 or newer (Nick Wellnhofer).
- Under MSVC, we used to compile in C++ mode to get some C99 features
- like mixing declarations and code. With newer MSVC versions, it's
- possible to build in plain C mode.
- * Switched from "inline" to "CMARK_INLINE" (Nick Wellnhofer).
- Newer MSVC versions support enough of C99 to be able to compile cmark
- in plain C mode. Only the "inline" keyword is still unsupported.
- We have to use "__inline" instead.
- * Added include guards to config.h
- * config.h.in - added compatibility snprintf, vsnprintf for MSVC.
- * Replaced sprintf with snprintf (Marco Benelli).
- * config.h: include stdio.h for _vscprintf etc.
- * Include starg.h when needed in config.h.
- * Removed an unnecessary C99-ism in buffer.c. This helps compiling on
- systems like luarocks that don't have all the cmake configuration
- goodness (thanks to carlmartus).
- * Don't use variable length arrays (Nick Wellnhofer).
- They're not supported by MSVC.
- * Test with multiple MSVC versions under Appveyor (Nick Wellnhofer).
- * Fix installation dir of man-pages on NetBSD (Kamil Rytarowski).
- * Fixed typo in cmark.h comments (Chris Eidhof).
- * Clarify in man page that cmark_node_free frees a node's children too.
- * Fixed documentation of --width in man page.
- * Require re2c >= 1.14.2 (#102).
- * Generated scanners.c with more recent re2c.
-
-[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
- in rule 1 and needn't be handled in rule 6.
- * Added `iframe` to list of blocktags, as per spec change.
- * Fixed bug with `HRULE` after blank line. This previously caused cmark
- to break out of a list, thinking it had two consecutive blanks.
- * Check for empty string before trying to look at line ending.
- * Make sure every line fed to `S_process_line` ends with `\n` (#72).
- So `S_process_line` sees only unix style line endings. Ultimately we
- probably want a better solution, allowing the line ending style of
- the input file to be preserved. This solution forces output with newlines.
- * Improved `cmark_strbuf_normalize_whitespace` (#73). Now all characters
- that satisfy `cmark_isspace` are recognized as whitespace. Previously
- `\r` and `\t` (and others) weren't included.
- * Treat line ending with EOF as ending with newline (#71).
- * Fixed `--hardbreaks` with `\r\n` line breaks (#68).
- * Disallow list item starting with multiple blank lines (jgm/CommonMark#332).
- * Allow tabs before closing `#`s in ATX header
- * Removed `cmark_strbuf_printf` and `cmark_strbuf_vprintf`.
- These are no longer needed, and cause complications for MSVC.
- Also removed `HAVE_VA_COPY` and `HAVE_C99_SNPRINTF` feature tests.
- * Added option to disable tests (Kevin Wojniak).
- * Added `CMARK_INLINE` macro.
- * Removed need to disable MSVC warnings 4267, 4244, 4800
- (Kevin Wojniak).
- * Fixed MSVC inline errors when cmark is included in sources that
- don't have the same set of disabled warnings (Kevin Wojniak).
- * Fix `FileNotFoundError` errors on tests when cmark is built from
- another project via `add_subdirectory()` (Kevin Wojniak).
- * Prefix `utf8proc` functions to avoid conflict with existing library
- (Kevin Wojniak).
- * Avoid name clash between Windows `.pdb` files (Nick Wellnhofer).
- * Improved `smart_punct.txt` (see jgm/commonmark.js#61).
- * Set `POSITION_INDEPENDENT_CODE` `ON` for static library (see #39).
- * `make bench`: allow overriding `BENCHFILE`. Previously if you did
- this, it would clopper `BENCHFILE` with the default bench file.
- * `make bench`: Use -10 priority with renice.
- * Improved `make_autolink`. Ensures that title is chunk with empty
- string rather than NULL, as with other links.
- * Added `clang-check` target.
- * Travis: split `roundtrip_test` and `leakcheck` (OGINO Masanori).
- * Use clang-format, llvm style, for formatting. Reformatted all source files.
- Added `format` target to Makefile. Removed `astyle` target.
- Updated `.editorconfig`.
-
-[0.21.0]
-
- * Updated to version 0.21 of spec.
- * Added latex renderer (#31). New exported function in API:
- `cmark_render_latex`. New source file: `src/latex.hs`.
- * Updates for new HTML block spec. Removed old `html_block_tag` scanner.
- Added new `html_block_start` and `html_block_start_7`, as well
- as `html_block_end_n` for n = 1-5. Rewrote block parser for new HTML
- block spec.
- * We no longer preprocess tabs to spaces before parsing.
- Instead, we keep track of both the byte offset and
- the (virtual) column as we parse block starts.
- This allows us to handle tabs without converting
- to spaces first. Tabs are left as tabs in the output, as
- per the revised spec.
- * Removed utf8 validation by default. We now replace null characters
- in the line splitting code.
- * Added `CMARK_OPT_VALIDATE_UTF8` option and command-line option
- `--validate-utf8`. This option causes cmark to check for valid
- UTF-8, replacing invalid sequences with the replacement
- character, U+FFFD. Previously this was done by default in
- connection with tab expansion, but we no longer do it by
- default with the new tab treatment. (Many applications will
- know that the input is valid UTF-8, so validation will not
- be necessary.)
- * Added `CMARK_OPT_SAFE` option and `--safe` command-line flag.
- + Added `CMARK_OPT_SAFE`. This option disables rendering of raw HTML
- and potentially dangerous links.
- + Added `--safe` option in command-line program.
- + Updated `cmark.3` man page.
- + Added `scan_dangerous_url` to scanners.
- + In HTML, suppress rendering of raw HTML and potentially dangerous
- links if `CMARK_OPT_SAFE`. Dangerous URLs are those that begin
- with `javascript:`, `vbscript:`, `file:`, or `data:` (except for
- `image/png`, `image/gif`, `image/jpeg`, or `image/webp` mime types).
- + Added `api_test` for `OPT_CMARK_SAFE`.
- + Rewrote `README.md` on security.
- * Limit ordered list start to 9 digits, per spec.
- * Added width parameter to `render_man` (API change).
- * Extracted common renderer code from latex, man, and commonmark
- renderers into a separate module, `renderer.[ch]` (#63). To write a
- renderer now, you only need to write a character escaping function
- and a node rendering function. You pass these to `cmark_render`
- and it handles all the plumbing (including line wrapping) for you.
- So far this is an internal module, but we might consider adding
- it to the API in the future.
- * commonmark writer: correctly handle email autolinks.
- * commonmark writer: escape `!`.
- * Fixed soft breaks in commonmark renderer.
- * Fixed scanner for link url. re2c returns the longest match, so we
- were getting bad results with `[link](foo\(and\(bar\)\))`
- which it would parse as containing a bare `\` followed by
- an in-parens chunk ending with the final paren.
- * Allow non-initial hyphens in html tag names. This allows for
- custom tags, see jgm/CommonMark#239.
- * Updated `test/smart_punct.txt`.
- * Implemented new treatment of hyphens with `--smart`, converting
- sequences of hyphens to sequences of em and en dashes that contain no
- hyphens.
- * HTML renderer: properly split info on first space char (see
- jgm/commonmark.js#54).
- * Changed version variables to functions (#60, Andrius Bentkus).
- This is easier to access using ffi, since some languages, like C#
- like to use only function interfaces for accessing library
- functionality.
- * `process_emphasis`: Fixed setting lower bound to potential openers.
- Renamed `potential_openers` -> `openers_bottom`.
- Renamed `start_delim` -> `stack_bottom`.
- * Added case for #59 to `pathological_test.py`.
- * Fixed emphasis/link parsing bug (#59).
- * Fixed off-by-one error in line splitting routine.
- This caused certain NULLs not to be replaced.
- * Don't rtrim in `subject_from_buffer`. This gives bad results in
- parsing reference links, where we might have trailing blanks
- (`finalize` removes the bytes parsed as a reference definition;
- before this change, some blank bytes might remain on the line).
- + Added `column` and `first_nonspace_column` fields to `parser`.
- + Added utility function to advance the offset, computing
- the virtual column too. Note that we don't need to deal with
- UTF-8 here at all. Only ASCII occurs in block starts.
- + Significant performance improvement due to the fact that
- we're not doing UTF-8 validation.
- * Fixed entity lookup table. The old one had many errors.
- The new one is derived from the list in the npm entities package.
- Since the sequences can now be longer (multi-code-point), we
- have bumped the length limit from 4 to 8, which also affects
- `houdini_html_u.c`. An example of the kind of error that was fixed:
- `&ngE;` should be rendered as "≧̸" (U+02267 U+00338), but it was
- being rendered as "≧" (which is the same as `&gE;`).
- * Replace gperf-based entity lookup with binary tree lookup.
- The primary advantage is a big reduction in the size of
- the compiled library and executable (> 100K).
- There should be no measurable performance difference in
- normal documents. I detected only a slight performance
- hit in a file containing 1,000,000 entities.
- + Removed `src/html_unescape.gperf` and `src/html_unescape.h`.
- + Added `src/entities.h` (generated by `tools/make_entities_h.py`).
- + Added binary tree lookup functions to `houdini_html_u.c`, and
- use the data in `src/entities.h`.
- * Renamed `entities.h` -> `entities.inc`, and
- `tools/make_entities_h.py` -> `tools/make_entitis_inc.py`.
- * Fixed cases like
- ```
- [ref]: url
- "title" ok
- ```
- Here we should parse the first line as a reference.
- * `inlines.c`: Added utility functions to skip spaces and line endings.
- * Fixed backslashes in link destinations that are not part of escapes
- (jgm/commonmark#45).
- * `process_line`: Removed "add newline if line doesn't have one."
- This isn't actually needed.
- * Small logic fixes and a simplification in `process_emphasis`.
- * Added more pathological tests:
- + Many link closers with no openers.
- + Many link openers with no closers.
- + Many emph openers with no closers.
- + Many closers with no openers.
- + `"*a_ " * 20000`.
- * Fixed `process_emphasis` to handle new pathological cases.
- Now we have an array of pointers (`potential_openers`),
- keyed to the delim char. When we've failed to match a potential opener
- prior to point X in the delimiter stack, we reset `potential_openers`
- for that opener type to X, and thus avoid having to look again through
- all the openers we've already rejected.
- * `process_inlines`: remove closers from delim stack when possible.
- When they have no matching openers and cannot be openers themselves,
- we can safely remove them. This helps with a performance case:
- `"a_ " * 20000` (jgm/commonmark.js#43).
- * Roll utf8proc_charlen into utf8proc_valid (Nick Wellnhofer).
- Speeds up "make bench" by another percent.
- * `spec_tests.py`: allow `→` for tab in HTML examples.
- * `normalize.py`: don't collapse whitespace in pre contexts.
- * Use utf-8 aware re2c.
- * Makefile afl target: removed `-m none`, added `CMARK_OPTS`.
- * README: added `make afl` instructions.
- * Limit generated generated `cmark.3` to 72 character line width.
- * Travis: switched to containerized build system.
- * Removed `debug.h`. (It uses GNU extensions, and we don't need it anyway.)
- * Removed sundown from benchmarks, because the reading was anomalous.
- sundown had an arbitrary 16MB limit on buffers, and the benchmark
- input exceeded that. So who knows what we were actually testing?
- Added hoedown, sundown's successor, which is a better comparison.
-
-[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.