[$name|ChangeLog$]
[$title|Change Log$]
[$frame|HTMLPage.tmpl$]
<p>
Dates below are in YYYY-MM-DD format.
</p>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.9/ | v0.9 $]</span>
	<span class="changelog-summary"> - Tools</span>
</h3>
<div class="changelog-date">2012-04-17</div>
<div class="changelog-compilers">
	Tested on: DMD 2.055 - DMD 2.059, but only partially DMD 2.057 as described
	[$pageLink|#Caveat2057|below$]
</div>
<ul>
	<li>
		Added support for DMD 2.059.
	</li>
	<li>
		Removed support for DMD 2.054 and below.
	</li>
	<li>
		[$pageLink|APIOver|GoldieLib$]: Renamed
			[$ident|Language.loadCGT$] to
			[$pageLink|Language#Language_load|Language.load$].
	</li>
	<li>
		[$pageTitle|GRMC$]: Major bugs fixed:
		<ul>
			<li>
				Fixed: Shift-Reduce conflicts aren't actually resolved at all
				contrary to the warning message. They are now reported and
				resolved by assuming "Shift" as intended.
			</li>

			<li>
				Fixed: Failure to resolve Shift-Reduce conflicts can result in
				false Reduce-Reduce conflict errors.
			</li>

			<li>
				Fixed: In certain cases, extra terminals incorrectly added
				as lookaheads.
				Ultimately, the parser would occasionally accept a terminal
				when it should have given an "Unexpected xxxx" error, which
				probably would have then led to an [$typeName|InternalException$].
				(Root cause: Generating lookaheads mistook recursive rules for "can derive empty".)
			</li>

			<li>
				Fixed: In certain cases, LALR actions point to wrong state,
				creating extra conflict errors and possibly incorrect parsing.
			</li>

			<li>
				Fixed: In certain cases, LALR states are accidentally merged.
			</li>
		</ul>
	</li>
	<li>
		New tool: [$pageTitle|AlterCGT$].
	</li>
	<li>
		Command line options for all tools are now processed with
		[$link| http://dlang.org/phobos/std_getopt.html | getopt $] and use
		standard Unix conventions (even on Windows). This means what used to
		be [$code|inline|-foo:bar$] or [$code|inline|/foo:bar$] must now be
		written as [$code|inline|--foo=bar$] or [$code|inline|--foo bar$].
		(But [$code|inline|/?$] is still supported as an alternative to
		[$code|inline|--help$].)
	</li>
	<li>
		[$pageTitle|DumpCGT$]: Dumps directly to a text file, not stdout.
	</li>
	<li>
		[$pageTitle|DumpCGT$]: Added [$code|inline|--out$] and
		[$code|inline|--no-filename$] command line options.
	</li>
	<li>
		[$pageTitle|GenDocs$]: Fixed: Code highlighted as "added" with
		[$code|inline|+$] is followed by an excess blank line.
	</li>
	<li>
		[$pageTitle|Parse$]: Fixed: Crashes when saving to XML instead of JSON.
	</li>
	<li>
		[$pageTitle|Parse$]: Changed the command line options.
	</li>
	<li>
		[$pageTitle|StaticLang$]: Output directory cannot be the same
		as Goldie's package source, to prevent overwriting Goldie's source.
		(But note: This detection can be fooled with symbolic links or
		separate installations of Goldie.)
	</li>
	<li>
		[$pageTitle|StaticLang$]/[$pageTitle|Parse$]:
		Always output Unix-style \n newlines. (This is 2012 - everything
		relevant handles \n just fine, even on Windows. High time to
		standardize on it.)
	</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.8/ | v0.8 $]</span>
	<span class="changelog-summary"> - Support DMD 2.058</span>
</h3>
<div class="changelog-date">2012-02-18</div>
<div class="changelog-compilers">
	Tested on: DMD 2.052 - DMD 2.058, but only partially DMD 2.057 as described
	[$pageLink|#Caveat2057|below$]
	(but see [$link|http://www.semitwist.com/goldie/v0.8/Start/Install/#RDMD|this note regarding RDMD$] from the archived Goldie documentation)
</div>
<ul>
	<li>
		Added support for DMD 2.058.
	</li>
	<li>
		Calculator [$pageLink|SampleApps|samples$] now require at least DMD 2.054.
	</li>
	<li>
		[$pageTitle|StaticLang$]:
		Static-style languages generate a proper compile-time error when used
		with a different version of Goldie than the one they were created with.
	</li>
	<li>
		Now uses [$link| https://bitbucket.org/Abscissa/semitwistdtools | SemiTwist D Tools $]
		tag '[$link| https://bitbucket.org/Abscissa/semitwistdtools/src/goldie-v0.8 | goldie-v0.8 $]'.
	</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.7/ | v0.7 $]</span>
	<span class="changelog-summary"> - API, 64-bit, Git</span>
</h3>
<div class="changelog-date">2012-01-29</div>
<div class="changelog-compilers">
	Tested on: DMD 2.052 - DMD 2.056, and partially DMD 2.057 as described
	[$pageLink|#Caveat2057|below$]
	(but see [$link|http://www.semitwist.com/goldie/v0.8/Start/Install/#RDMD|this note regarding RDMD$] from the archived Goldie documentation)
</div>
<ul>
	<li>
		[$pageLink|APIOver|GoldieLib$]: Added
			[$pageLink|Token#Token_get|Token.get$] and
			[$pageLink|Token#Token_getRequired|Token.getRequired$].
	</li>
	<li>
		[$pageLink|APIOver|GoldieLib$]: Added
			[$pageLink|Token#traverse|traverse$] for parse tree traversal.
	</li>
	<li>
		[$pageLink|APIOver|GoldieLib$]: Added
			[$pageLink|Token#Token_subtokens|op overloads$]
			as a preferred alternative to
			[$pageLink|Token#Token_subX|Token.subX$] for accessing subtokens in dynamic-style.
	</li>
	<li>
		[$pageLink|APIOver|GoldieLib$]: Fixed: RangeException on
		[$code|inline|Token.matches("<blah>", null)$] (ie, when attempting to
		match an empty rule with [$pageLink|Token#Token_matches|matches$]).
	</li>
	<li>
		[$link| http://www.dsource.org/projects/goldie/ticket/20 | Fixed Issue #20 $]:
		Fails on 64-bit builds.
		(But note the still-open [$link| http://www.dsource.org/projects/goldie/ticket/21 | #21 $]:
		64-bit 'staticlang' and 'sampleGenericParse' blocked by DMD Issue
		[$link| http://d.puremagic.com/issues/show_bug.cgi?id=6983 | #6983 $])
	</li>
	<li>Switched version control from SVN/DSource to Git/BitBucket.</li>
	<li>Added [$pageTitle|Tutorial$].</li>
	<li>
		Many documentation updates/improvements including
		(in addition to the usual misc and API updates)
		an updated [$pageTitle|FAQ$].
	</li>
	<li>[$pageTitle|StaticLang$]: Creates the output path if it doesn't already exist.</li>
	<li>
		Renamed "Parse Anything" sample to [$pageTitle|SampleGenericParse$]
		(to avoid confusion with the [$pageTitle|Parse$] tool).
	</li>
	<li>
		<a name="Caveat2057" />
		Added support for DMD 2.056.
		On DMD 2.057, [$pageLink|StatVsDyn|dynamic-style$] works,
		but not static-style or grammar compiling due to DMD Issue
		[$link| http://d.puremagic.com/issues/show_bug.cgi?id=7375 | #7375 $].
	</li>
	<li>
		Now uses [$link| https://bitbucket.org/Abscissa/semitwistdtools | SemiTwist D Tools $]
		tag '[$link| https://bitbucket.org/Abscissa/semitwistdtools/src/goldie-v0.7 | goldie-v0.7 $]'.
	</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.6/ | v0.6 $]</span>
	<span class="changelog-summary"> - Newer DMDs and Static Fixed</span>
</h3>
<div class="changelog-date">2011-10-04</div>
<div class="changelog-compilers">
	Tested on: DMD 2.052 - DMD 2.055
	(but see [$link|http://www.semitwist.com/goldie/v0.8/Start/Install/#RDMD|this note regarding RDMD$] from the archived Goldie documentation)
</div>
<ul>
	<li>
		Added support for DMD 2.054 and 2.055.
		The next version of Goldie will likely require at least 2.055.
	</li>
	<li>Fixed: Major bug in static-style: Some tokens erroneously refer to calc grammar no matter what grammar they're from.</li>
	<li>Now uses [$link| http://www.dsource.org/projects/semitwist | SemiTwist D Tools $] r234</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.5/ | v0.5 $]</span>
	<span class="changelog-summary"> - Speed</span>
</h3>
<div class="changelog-date">2011-05-17</div>
<div class="changelog-compilers">
	Tested on: DMD 2.052 - DMD 2.053
</div>
<ul>
	<li>Improved lexing/parsing speed by about 5x-6x.</li>
	<li>Small additional speedup lexing languages with large character sets (such as Unicode).</li>
	<li>[$pageTitle|GRMC$]: Supports [$ident|{All Valid}$] character set.</li>
	<li>[$pageTitle|GRMC$]: Complex grammars are compiled to CGT up to about 4x-8x faster.</li>
	<li>[$pageTitle|GRMC$]: Verbose (-v) flag shows each step and amount of time taken.</li>
	<li>[$pageLink|SampleGenericParse|ParseAnything$]: No more unhandled exception when parsing a source with an error.</li>
	<li>Fixed to work with DMD 2.053 (still works with 2.052, too).</li>
	<li>Now uses [$link| http://www.dsource.org/projects/semitwist | SemiTwist D Tools $] r221</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.4/ | v0.4 $]</span>
	<span class="changelog-summary"> - D2 and GRMC</span>
</h3>
<div class="changelog-date">2011-03-27</div>
<div class="changelog-compilers">
	Tested on: DMD 2.052
</div>
<ul>
	<li>Switched from D1/Tango to D2/Phobos.</li>
	<li>New tool: [$pageTitle|GRMC$]. Because of this, Goldie no longer requires GOLD Parser Builder.</li>
	<li>Grammars can be compiled not only from [$pageTitle|GRMC$], but also through the D API, GoldieLib.</li>
	<li>No longer requires xfBuild or Rebuild.</li>
	<li>Executable filenames are now prefixed with 'goldie-' to minimize chance of collisions on the PATH.</li>
	<li>Many misc changes/improvements to tools, API and documentation.</li>
	<li>Now uses [$link| http://www.dsource.org/projects/semitwist | SemiTwist D Tools $] r213</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.semitwist.com/goldie/v0.3/Docs/ | v0.3 $]</span>
	<span class="changelog-summary"> - Static-Style and Documentation</span>
</h3>
<div class="changelog-date">2010-07-25</div>
<div class="changelog-compilers"></div>
<ul>
	<li>Added static-style languages.</li>
	<li>Major improvements to API for parsing errors.</li>
	<li>Misc changes/improvements to API.</li>
	<li>New tools: [$pageTitle|StaticLang$], [$pageTitle|JsonViewer$] and [$pageTitle|GenDocs$].</li>
	<li>Split Calculator sample app into a dynamic-style version and a static-style version.</li>
	<li>Greatly improved handling of Unicode.</li>
	<li>Created complete documentation.</li>
	<li>Now uses [$link| http://www.dsource.org/projects/semitwist | SemiTwist D Tools $] r132</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.dsource.org/projects/goldie/wiki/Docs | v0.02 $]</span>
	<span class="changelog-summary"> - Minor Bugfix</span>
</h3>
<div class="changelog-date">2009-09-09</div>
<div class="changelog-compilers"></div>
<ul>
	<li>Fixed: Rare array-out-of-bounds upon Lexer error.</li>
	<li>Fixed: [$link|http://www.dsource.org/projects/goldie/ticket/1|Ticket #1: Extra oddball character in lex error message's quote$]</li>
	<li>Now uses SemiTwist D Tools r86</li>
</ul>

<h3 style="margin-bottom: 0px;">
	<span class="changelog-version">[$link| http://www.dsource.org/projects/goldie/wiki/Docs | v0.01 $]</span>
	<span class="changelog-summary"> - Initial Release</span>
</h3>
<div class="changelog-date">2009-08-26</div>
<div class="changelog-compilers"></div>
<ul>
	<li>Initial Release</li>
	<li>Uses SemiTwist D Tools r82</li>
</ul>
