In several ways Screamer is more efficient than other implementations of backtracking languages. First, Screamer code is transformed into Common Lisp which can be compiled by the underlying Common Lisp system. Many competing implementations of nondeterministic Lisp are interpreters and thus are far less efficient than Screamer. Second, the backtracking primitives require fairly low overhead in Screamer. Finally, this overhead to support backtracking is only paid for those portions of the program which use the backtracking primitives. Deterministic portions of user programs pass through the Screamer-to-Common-Lisp transformation unchanged. Since in practise, only small portions of typical programs utilize the backtracking primitives, Screamer can produce more efficient code than compilers for languages in which backtracking is more pervasive.
Screamer is fairly portable across most Common Lisp implementations. Screamer is known to run under the following Common Lisp implementations:
Genera 8.1.1 and 8.3 on Symbolics 36xx and Ivory. Lucid 4.0.2 and 4.1 on Sun SPARC. Lucid 4.1 on SGI MIPS. Lucid 4.1 on HP PA. Lucid 4.1 on DEC MIPS. Lucid 4.0.1 on IBM RS/6000. MCL 2.0 and 2.0p2 on Apple Macintosh. Harlequin 3.0.3+ on Sun SPARC. Allegro 4.1 and 4.2 on Sun SPARC and SGI MIPS. Allegro 4.1 on DEC MIPS. Poplog 14.2 on Sun SPARC. AKCL 1.605 and 1.615 on Sun SPARC. CMU Common Lisp 17b on Sun SPARC.It should run under any implementation of Common Lisp that is compliant with CLtL2 and with minor revision could be made to run under implementations compliant with CLtL1 or dpANS.
Screamer was written by Jeffrey Mark Siskind and David Allen McAllester .