diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -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 |