summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog18
1 files changed, 18 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 553f3b26..69f49eb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
2011-10-04 Kaz Kylheku <kaz@kylheku.com>
+ * lib.c (acons): New function.
+ (set_diff): Optimize common case: list1 and list2
+ are the same, or list2 is substructure of list1.
+ Situations in which this won't be the case for variable bindings are
+ rare.
+
+ * lib.h (acons): Declared.
+
+ * match.c (match_line): Use acons rather than acons_new, when binding
+ variables that we know are new (the symbol is unbound).
+ When computing the set difference over bindings, use cons cell
+ equality, rather than symbol equality. Symbol equality is wrong
+ because a binding can be removed, and then a new binding can be
+ introduced using the same symbol. This must be treated as
+ a different binding.
+
+2011-10-04 Kaz Kylheku <kaz@kylheku.com>
+
Bugfixes to the semantics of binding environments, which
were broken in the face of deletions (local, forget).
For some stupid reason, I had written a destructive routine for