Skip to content

Commit efaee13

Browse files
committed
version bump
1 parent ae0d673 commit efaee13

File tree

12 files changed

+358
-111
lines changed

12 files changed

+358
-111
lines changed

CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ cmake_minimum_required (VERSION 2.6)
88
set (My_Project_Title "MultiMarkdown")
99
set (My_Project_Description "Lightweight markup processor to produce HTML, LaTeX, and more.")
1010
set (My_Project_Author "Fletcher T. Penney")
11-
set (My_Project_Revised_Date "2018-03-28")
11+
set (My_Project_Revised_Date "2018-09-01")
1212
set (My_Project_Version_Major 6)
13-
set (My_Project_Version_Minor 3)
14-
set (My_Project_Version_Patch 2)
13+
set (My_Project_Version_Minor 4)
14+
set (My_Project_Version_Patch 0)
1515

1616
set (My_Project_Version "${My_Project_Version_Major}.${My_Project_Version_Minor}.${My_Project_Version_Patch}")
1717

651 Bytes
Binary file not shown.

DevelopmentNotes/DevelopmentNotes.fodt

Lines changed: 173 additions & 20 deletions
Large diffs are not rendered by default.

DevelopmentNotes/DevelopmentNotes.html

Lines changed: 63 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
<meta charset="utf-8"/>
55
<title>MultiMarkdown v6 Development Notes</title>
66
<meta name="author" content="Fletcher T. Penney"/>
7-
<meta name="date" content="2018-03-38"/>
7+
<meta name="date" content="2018-09-01"/>
88
<meta name="uuid" content="dd2d8e76-dc2d-416d-9acd-5395d20871c2"/>
99
</head>
1010
<body>
1111

12-
<h3 id="introduction">Introduction </h3>
12+
<h3 id="introduction">Introduction</h3>
1313

1414
<p>This document includes some notes on the development of MultiMarkdown (<abbr title="MultiMarkdown">MMD</abbr>) v6. Most of it
1515
will be interesting only to other developers or those needing to choose the
1616
absolute &#8220;best&#8221; Markdown (<abbr title="Markdown">MD</abbr>) implementation for their needs &#8211; it is not required
1717
reading to understand how the software works.</p>
1818

19-
<h4 id="whyanewversion">Why a New Version? </h4>
19+
<h4 id="whyanewversion">Why a New Version?</h4>
2020

2121
<p>MultiMarkdown version 5 was released in November of 2015, but the codebase was
2222
essentially the same as that of v4 &#8211; and that was released in beta in April
@@ -43,7 +43,7 @@ <h4 id="whyanewversion">Why a New Version? </h4>
4343
into parser code. It worked well overall, but lacked some features I needed,
4444
requiring a lot of workarounds.)</p>
4545

46-
<h3 id="firstattempt">First Attempt </h3>
46+
<h3 id="firstattempt">First Attempt</h3>
4747

4848
<p>My first attempt started by hand-crafting a parser that scanned through the
4949
document a line at a time, deciding what to do with each line as it found
@@ -137,7 +137,7 @@ <h3 id="firstattempt">First Attempt </h3>
137137
<p>In the end, I scrapped this effort, but kept the lessons learned in the token
138138
pairing algorithm.</p>
139139

140-
<h3 id="secondattempt">Second Attempt </h3>
140+
<h3 id="secondattempt">Second Attempt</h3>
141141

142142
<p>I tried again this past Fall. This time, I approached the problem with lots
143143
of reading. <em>Lots and lots</em> of reading &#8211; tons of websites, computer science
@@ -195,13 +195,13 @@ <h3 id="secondattempt">Second Attempt </h3>
195195
about how to create the grammar used. But so far, it has been able to handle
196196
everything I have thrown at it.</p>
197197

198-
<h3 id="optimization">Optimization </h3>
198+
<h3 id="optimization">Optimization</h3>
199199

200200
<p>One of my goals for <abbr title="MultiMarkdown">MMD</abbr> 6 was performance. So I&#8217;ve paid attention to speed
201201
along the way, and have tried to use a few tricks to keep things fast. Here
202202
are some things I&#8217;ve learned along the way. In no particular order:</p>
203203

204-
<h4 id="memoryallocation">Memory Allocation </h4>
204+
<h4 id="memoryallocation">Memory Allocation</h4>
205205

206206
<p>When parsing a long document, a <em>lot</em> of token structures are created. Each
207207
one requires a small bit of memory to be allocated. In aggregate, that time
@@ -230,7 +230,7 @@ <h4 id="memoryallocation">Memory Allocation </h4>
230230
downside is remember to check for a single space character in a few instances
231231
where it matters.</p>
232232

233-
<h4 id="properinputbuffering">Proper input buffering </h4>
233+
<h4 id="properinputbuffering">Proper input buffering</h4>
234234

235235
<p>When I first began last spring, I was amazed to see how much time was being
236236
spent by MultiMarkdown simply reading the input file. Then I discovered it
@@ -239,14 +239,14 @@ <h4 id="properinputbuffering">Proper input buffering </h4>
239239
experimented with different buffer sizes, but they did not seem to make a
240240
measurable difference.</p>
241241

242-
<h4 id="outputbuffering">Output Buffering </h4>
242+
<h4 id="outputbuffering">Output Buffering</h4>
243243

244244
<p>I experimented with different approaches to creating the output after parsing.
245245
I tried printing directly to <code>stdout</code>, and even played with different
246246
buffering settings. None of those seemed to work well, and all were slower
247247
than using the <code>d_string</code> approach (formerly called <code>GString</code> in MMD 5).</p>
248248

249-
<h4 id="fastsearches">Fast Searches </h4>
249+
<h4 id="fastsearches">Fast Searches</h4>
250250

251251
<p>After getting basic Markdown functionality complete, I discovered during
252252
testing that the time required to parse a document grew exponentially as the
@@ -261,7 +261,7 @@ <h4 id="fastsearches">Fast Searches </h4>
261261
This allowed me to get <abbr title="MultiMarkdown">MMD</abbr>&#8217;s performance back to O(n), taking roughly twice as
262262
much time to process a document that is twice as long.</p>
263263

264-
<h4 id="efficientutilityfunctions">Efficient Utility Functions </h4>
264+
<h4 id="efficientutilityfunctions">Efficient Utility Functions</h4>
265265

266266
<p>It is frequently necessary when parsing Markdown to check what sort of
267267
character we are dealing with at a certain position &#8211; a letter, whitespace,
@@ -272,7 +272,7 @@ <h4 id="efficientutilityfunctions">Efficient Utility Functions </h4>
272272
slightly differently under different circumstances. I also suspect it
273273
improved performance, but don&#8217;t have the data to back it up.</p>
274274

275-
<h4 id="testingwhilewriting">Testing While Writing </h4>
275+
<h4 id="testingwhilewriting">Testing While Writing</h4>
276276

277277
<p>I developed several chunks of code in parallel while creating <abbr title="MultiMarkdown">MMD</abbr> 6. The vast
278278
majority of it was developed largely in a <a href="https://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a> approach.
@@ -286,7 +286,7 @@ <h4 id="testingwhilewriting">Testing While Writing </h4>
286286
broken. At this time, there are 29 text files in the test suite, and many
287287
more to come.</p>
288288

289-
<h4 id="otherlessons">Other Lessons </h4>
289+
<h4 id="otherlessons">Other Lessons</h4>
290290

291291
<p>Some things that didn&#8217;t do me any good&#8230;.</p>
292292

@@ -304,7 +304,7 @@ <h4 id="otherlessons">Other Lessons </h4>
304304
the tools to measure whether I could have improved memory usage at all. Not
305305
sure this would be worth the effort &#8211; much lower hanging fruit available.</p>
306306

307-
<h3 id="performance">Performance </h3>
307+
<h3 id="performance">Performance</h3>
308308

309309
<p>Basic tests show that currently <abbr title="MultiMarkdown">MMD</abbr> 6 takes about 20&#8211;25% longer the CommonMark
310310
0.27.0 to process long files (e.g. 0.2 MB). However, it is around 5% <em>faster</em>
@@ -345,9 +345,9 @@ <h3 id="performance">Performance </h3>
345345
I&#8217;m sure there&#8217;s still a lot of room for further improvement to be made.
346346
Suggestions welcome!</p>
347347

348-
<h3 id="testing">Testing </h3>
348+
<h3 id="testing">Testing</h3>
349349

350-
<h4 id="testsuite">Test Suite </h4>
350+
<h4 id="testsuite">Test Suite</h4>
351351

352352
<p>The development of <abbr title="MultiMarkdown">MMD</abbr> v6 was heavily, but not absolutely, influenced by the
353353
philosophy of test-driven development. While coding, I made use of test
@@ -360,7 +360,7 @@ <h4 id="testsuite">Test Suite </h4>
360360
identified. This helps make proper integration testing of the entire
361361
application with every release.</p>
362362

363-
<h4 id="fuzztesting">Fuzz Testing </h4>
363+
<h4 id="fuzztesting">Fuzz Testing</h4>
364364

365365
<p>I was not familiar with the concept of
366366
<a href="https://en.wikipedia.org/wiki/Fuzzing">Fuzz Testing</a> until a user mentioned
@@ -388,15 +388,15 @@ <h4 id="fuzztesting">Fuzz Testing </h4>
388388
sometimes identified. I have found some interesting edge cases this way.
389389
Definitely a useful tool!</p>
390390

391-
<h4 id="unittesting">Unit Testing </h4>
391+
<h4 id="unittesting">Unit Testing</h4>
392392

393393
<p>Some of the original development was done with unit testing in some other
394394
tools I developed. This code formed the basis of a few parts of <abbr title="MultiMarkdown">MMD</abbr>.
395395
Otherwise, it was hard to see how to really create very good unit tests for
396396
the development of <abbr title="MultiMarkdown">MMD</abbr>. So there is really not much unit testing built into
397397
the code or used during the development.</p>
398398

399-
<h3 id="dependencieslibraries">Dependencies/Libraries </h3>
399+
<h3 id="dependencieslibraries">Dependencies/Libraries</h3>
400400

401401
<p><abbr title="MultiMarkdown">MMD</abbr> v6 has no external dependencies when compiling, aside from the standard
402402
libraries for C development (Except that it will use <code>libcurl</code> if available in
@@ -430,9 +430,50 @@ <h3 id="dependencieslibraries">Dependencies/Libraries </h3>
430430
TextBundle/TextPack, OpenDocument, etc.</p></li>
431431
</ul>
432432

433-
<h3 id="changelog">Changelog </h3>
434-
435-
<ul>
433+
<h3 id="changelog">Changelog</h3>
434+
435+
<ul>
436+
<li><p>2018&#8211;09&#8211;01 - v 6.4.0:</p>
437+
438+
<ul>
439+
<li>ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata</li>
440+
<li>ADDED: Add additional tests for special characters</li>
441+
<li>ADDED: Add initial OPML export support (address #9)</li>
442+
<li>ADDED: Add opml option to read for MultiMarkdown OPML files</li>
443+
<li>Add missing Latex support files</li>
444+
<li>Avoid potential error with stack_free</li>
445+
<li>CHANGED: Remove unnecessary code</li>
446+
<li>FIXED: Allow caption without trailing newline at end of document</li>
447+
<li>FIXED: Escape square brackets, e.g. &#8216;{[foo]}&#8217; (addresses #128 and #129)</li>
448+
<li>FIXED: Fix escpaing of % character in LaTeX code spans and blocks</li>
449+
<li>FIXED: Fix html comments inside code blocks (fixes #118)</li>
450+
<li>FIXED: Fix issue where <code>~</code> is mistakenly interpreted as fence delimiter</li>
451+
<li>FIXED: Fix issue with BOM and files &gt; 4k</li>
452+
<li>FIXED: Fix issue with dollar math delimiters inside code (fixes #134)</li>
453+
<li>FIXED: Fix token length in OPML</li>
454+
<li>FIXED: Improve OPML export; add OPML tests</li>
455+
<li>FIXED: Normalize line spacing in CriticMarkup notes in LaTeX (fixes #120)</li>
456+
<li>FIXED: Preserve tabs following leading hashes in code blocks</li>
457+
<li>FIXED: Prevent potential null dereference</li>
458+
<li>FIXED: Remove lock file</li>
459+
<li>FIXED: Trim single remaining whitespace when exporting headers</li>
460+
<li>FIXED: Trim trailing newlines in definition blocks</li>
461+
<li>FIXED: Use Setext headers when necessary to convert from OPML to text (fixes #138)</li>
462+
<li>FIXED: Use \ul instead of \underline when soul package is in use (fixes #121)</li>
463+
<li>Merge pull request #132 from jlargentaye/develop</li>
464+
<li>UPDATE: Clarify DevelopmentNotes re: libcurl</li>
465+
<li>UPDATE: Clarify README re: libcurl</li>
466+
<li>UPDATED: &#8216;\item{}&#8217; no longer needed since square brackets escaped on their own</li>
467+
<li>UPDATED: Add 6.3.1 release notes</li>
468+
<li>UPDATED: Add allowfullscreen to list of boolean HTML attributes</li>
469+
<li>UPDATED: Add more BibTeX test cases</li>
470+
<li>UPDATED: Adjust metadata for test files</li>
471+
<li>UPDATED: Allow '' to preserve line break in metadata. (Addresses #86)</li>
472+
<li>UPDATED: Apply astyle</li>
473+
<li>UPDATED: Fix whitespace with boolean HTML attributes</li>
474+
<li>UPDATED: Ignore escaped space at end of code span</li>
475+
<li>UPDATED: Test % escaping in URLs</li>
476+
</ul></li>
436477
<li><p>2018&#8211;03&#8211;28 - v 6.3.2:</p>
437478

438479
<ul>
8.86 KB
Binary file not shown.

DevelopmentNotes/DevelopmentNotes.txt

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Title: MultiMarkdown v6 Development Notes
22
Author: Fletcher T. Penney
3-
Date: 2018-03-38
3+
Date: 2018-09-01
44
LaTeX Config: tufte-handout
55
Base Header Level: 3
66
uuid: dd2d8e76-dc2d-416d-9acd-5395d20871c2
@@ -472,6 +472,47 @@ TextBundle/TextPack, OpenDocument, etc.
472472

473473
# Changelog #
474474

475+
* 2018-09-01 - v 6.4.0:
476+
477+
* ADDED: Add ODF Header metadata and fix issue with LaTeX Header metadata
478+
* ADDED: Add additional tests for special characters
479+
* ADDED: Add initial OPML export support (address #9)
480+
* ADDED: Add opml option to read for MultiMarkdown OPML files
481+
* Add missing Latex support files
482+
* Avoid potential error with stack_free
483+
* CHANGED: Remove unnecessary code
484+
* FIXED: Allow caption without trailing newline at end of document
485+
* FIXED: Escape square brackets, e.g. '{[foo]}' (addresses #128 and #129)
486+
* FIXED: Fix escpaing of % character in LaTeX code spans and blocks
487+
* FIXED: Fix html comments inside code blocks (fixes #118)
488+
* FIXED: Fix issue where `~` is mistakenly interpreted as fence delimiter
489+
* FIXED: Fix issue with BOM and files > 4k
490+
* FIXED: Fix issue with dollar math delimiters inside code (fixes #134)
491+
* FIXED: Fix token length in OPML
492+
* FIXED: Improve OPML export; add OPML tests
493+
* FIXED: Normalize line spacing in CriticMarkup notes in LaTeX (fixes #120)
494+
* FIXED: Preserve tabs following leading hashes in code blocks
495+
* FIXED: Prevent potential null dereference
496+
* FIXED: Remove lock file
497+
* FIXED: Trim single remaining whitespace when exporting headers
498+
* FIXED: Trim trailing newlines in definition blocks
499+
* FIXED: Use Setext headers when necessary to convert from OPML to text (fixes #138)
500+
* FIXED: Use \ul instead of \underline when soul package is in use (fixes #121)
501+
* Merge pull request #132 from jlargentaye/develop
502+
* UPDATE: Clarify DevelopmentNotes re: libcurl
503+
* UPDATE: Clarify README re: libcurl
504+
* UPDATED: '\item{}' no longer needed since square brackets escaped on their own
505+
* UPDATED: Add 6.3.1 release notes
506+
* UPDATED: Add allowfullscreen to list of boolean HTML attributes
507+
* UPDATED: Add more BibTeX test cases
508+
* UPDATED: Adjust metadata for test files
509+
* UPDATED: Allow '\' to preserve line break in metadata. (Addresses #86)
510+
* UPDATED: Apply astyle
511+
* UPDATED: Fix whitespace with boolean HTML attributes
512+
* UPDATED: Ignore escaped space at end of code span
513+
* UPDATED: Test % escaping in URLs
514+
515+
475516
* 2018-03-28 - v 6.3.2:
476517

477518
* UPDATED: Update documentation

QuickStart/QuickStart.epub

-1 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)