I do have Back52 lying around. The license is pretty unclear though and the code contains copies of some Quintus libraries, so I’m afraid I can’t share it. I must have had the other two, but I can’t find them on my current machine.
It has definitely the same origin. We may have different versions. I used the test suite as one of the tests for a long time. It is a better test for the dynamic database than for GC
That is probably a reason: SWI-Prolog compiler is written in C, so we have a lot less inferences The other aspect is that the VM is designed such that we can use the compiler for dynamic clauses. De-compilation (clause/2, retract/1) is fairly cheap and get the whole indexing machinery for free. The only difference between dynamic and static code is that we skip optimization when compiling as dynamic and we do not look for specific patterns for fast indexing (e.g., two clauses, one having [] and the other [_|_] as first argument is handled special). And, of course, a flag that prevents modifying static code.
edit there are issues though. The dynamic DB is first of all optimized to deal with large clause sets with relatively few modifications. Using it with highly volatile clause sets may lead to poor performance if the asynchronous clause garbage collector cannot keep up with the amount of garbage clauses created. This causes accessing the dynamic predicate to find a lot of garbage clauses that it needs to skip. Using global variables or mutable structures are much faster in these cases.