Dear Maude Abusers, A new alpha release can be accessed at SRI-CSL in: ~eker/public_html/Maude/Alpha95a/ or downloaded from: http://www.csl.sri.com/~eker/Maude/Alpha95a/ Alpha release site authentication: User Name: maudeabuser Password: bughunter This is a bug fix release to fix a critical bug in the new memo mechanism reported by Cathy. There is a general problem with hash consing in that entry into the hash cons table ignores state information such as reduction flags and sort indices in the dag nodes. Losing reduction flags is fairly benign but losing sort information can cause chaos. Here is an example: fmod SORT is sorts Foo Bar . subsort Foo < Bar . ops f g h : Foo -> Foo [memo] . ops a b c : -> Foo . eq b = h(f(a)) . eq c = h(f(a)) . op i : Foo Foo Foo -> Foo . endfm red i(g(a), b, c) . This version fixes the problem for sorts by a (perhaps overly) cute trick of bitwise ANDing sort indices each time a hash cons entry is accessed. Because an unknown sort is recorded as -1 (i.e. all 1s in binary) and known sorts for the same term should agree, this propagates known sort information. This version also supports a new environment variable: MAUDE_META_MODULE_CACHE_SIZE which controls the maximum number of metamodules that are held in any metalevel LRU cache. The default value if this environment variable is not set (or set out of range) is 4. The environment variable can be set to any value between 1 and 1024. It may be useful to increase the value for applications that _reuse_ more than 4 different metamodules. However setting it too high can cause performance and memory usage issues. Suppose you set the cache size to X. You want to make sure that no more than X-1 other metamodules are accessed between any two accesses to a resused metamodule M to ensure that M is not evicted and then recompiled between accesses. Currently our Intel Mac server is unavailable so I have only built a Linux64 binary. Mac users will need to build from source. Steven