summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2010-01-26 14:12:35 -0800
committerKaz Kylheku <kaz@kylheku.com>2010-01-26 14:12:35 -0800
commita0d9dcfe97e824e25174a3bfc9116e505eac0a51 (patch)
tree3b6bd544c75344f0bdb81f0c34226be77519c129 /ChangeLog
parent16a6ea72db8469f64f31903bea7b223f0072bca6 (diff)
downloadtxr-a0d9dcfe97e824e25174a3bfc9116e505eac0a51.tar.gz
txr-a0d9dcfe97e824e25174a3bfc9116e505eac0a51.tar.bz2
txr-a0d9dcfe97e824e25174a3bfc9116e505eac0a51.zip
Optimization in derivative-based regex engine.
Exponential memory consumption behavior was observed when matching the input aaaaaa.... against the regex a?a?a?a?....aaaa.... The fix is to eliminate common subexpressions from the derivative for the or operator.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog18
1 files changed, 18 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 7868167c..c1a37dc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2010-01-26 Kaz Kylheku <kkylheku@gmail.com>
+
+ Optimization in derivative-based regex engine.
+ Exponential memory consumption behavior was observed when
+ matching the input aaaaaa....
+ against the regex a?a?a?a?....aaaa....
+ The fix is to eliminate common subexpressions
+ from the derivative for the or operator.
+
+ * lib.c (memqual, mapcon): New functions
+
+ * lib.h (memqual, mapcon): Declared.
+
+ * regex.c (flatten_or, unflatten_or,
+ unique_first, reduce_or): New functions.
+ (reg_derivative): Apply reduce_or
+ to the constructed disjunction.
+
2010-01-25 Kaz Kylheku <kkylheku@gmail.com>
Version 032