summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2011-10-04 15:41:33 -0700
committerKaz Kylheku <kaz@kylheku.com>2011-10-04 15:41:33 -0700
commit6dba0b4836e192906c63773527861ddf9de1d679 (patch)
treed1ffc53e6290394a4903e5ec7822c077970dd304 /ChangeLog
parentb5d5dcb8dcde90bb1766eb88a36e962f8e43fd33 (diff)
downloadtxr-6dba0b4836e192906c63773527861ddf9de1d679.tar.gz
txr-6dba0b4836e192906c63773527861ddf9de1d679.tar.bz2
txr-6dba0b4836e192906c63773527861ddf9de1d679.zip
* 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.
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