summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog34
1 files changed, 34 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4f125c0..b2b53d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+2006-07-05 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclParseExpr.c: Completely new expression parser
+ that builds a parse tree instead of operating with deep recursion.
+ This corrects reports of stack-blowing crashes parsing long
+ expressions [Bug 906201] and replaces a fundamentally O(N^2)
+ algorithm with an O(N) one [RFE 903765]. The new parser is better
+ able to generate error messages that clearly report both the nature
+ and context of the syntax error [Bugs 1029267, 1381715]. For now,
+ the code for the old parser is still present and can be activated
+ with a "#define OLD_EXPR_PARSER 1". This is for the sake of a clean
+ implementation patch, and for ease of benchmarking. The new parser
+ is non-recursive, so much lighter in stack consumption, but it
+ does use more heap, so there may be cases where parsing of long
+ expressions that succeeded with the old parser will lead to out
+ of memory panics with the new one. There are still more improvements
+ possible on that point, though significant progress may require
+ changes to the Tcl_Token specifications documented for the public
+ Tcl_Parse*() routines.
+ ***POTENTIAL INCOMPATIBILITY*** for any callers that rely on the
+ exact (usually terrible) error messages generated by the old parser.
+ This includes a large number of tests in the test suite.
+
+ * generic/tclInt.h: Replaced TclParseWhiteSpace() with
+ * generic/tclParse.c: TclParseAllWhiteSpace() which is what
+ * generic/tclParseExpr.c: all the callers really needed.
+ Breaking whitespace runs at newlines is useful only to the command
+ parsing function, and it can call the file scoped routine
+ ParseWhiteSpace() to do that.
+
+ * tests/expr-old.test: Removed knownBug constraints that masked
+ * tests/expr.test: failures due to revised error messages.
+ * tests/parseExpr.test:
+
2006-06-20 Don Porter <dgp@users.sourceforge.net>
* generic/tclIOUtil.c: Changed default configuration to