David S. Warren
with contributions from
Day-to-day care and feeding of XSB including bug fixes, ports, and configuration management has been done by Kostis Sagonas, David Warren, Terrance Swift, Prasad Rao, Steve Dawson, Juliana Freire, Baoqiu Cui and Michael Kifer.
In Version 2.2, the core engine development of the SLG-WAM has been mainly implemented by Terrance Swift, Kostis Sagonas, Prasad Rao and Juliana Freire. The breakdown, roughly, was that Terrance Swift wrote the initial tabling engine and builtins. Prasad Rao wrote the trie-based table access routines, and Kostis Sagonas implemented most of tabled negation. Juliana Freire revised the table scheduling mechanism starting from Version 1.5.0 to create a more efficient engine, and implemented the engine for local evaluation. Starting from XSB Version 2.0, XSB includes another tabling engine, CHAT, which was designed and developed by Kostis Sagonas and Bart Demoen. CHAT supports heap garbage collection (both based on a mark&slide and on a mark© algorithm) which was developed and implemented by Bart Demoen and Kostis Sagonas. Memory expansion code for WAM stacks was written by Ernie Johnson and Bart Demoen, while memory management code for CHAT areas was written by Bart Demoen and Kostis Sagonas. Rui Marques improved the trailing of the SLG-WAM and rewrote much of the engine to make it compliant with 64-bit architectures. Assert and retract code was based on code written by Jiyang Xu and significantly revised by David S. Warren and Rui Marques. Trie assert and retract code was written by Prasad Rao. The current version of findall/3 was re-written from scratch by Bart Demoen.
In the XSB complier, Kostis Sagonas was responsible for HiLog compilation and associated builtins. Steve Dawson implemented Unification Factoring. The auto_table and suppl_table directives were written by Kostis Sagonas. The DCG expansion module was written by Kostis Sagonas. The handling of the multifile directive was written by Baoqiu Cui. C.R. Ramakrishnan wrote the mode analyzer for XSB. The safety check for tabling within the scope of cuts was written by Kate Dvortsova.
Michael Kifer rewrote parts of the XSB code to make XSB configurable with GNU's Autoconf. Harald Schroepfer helped the XSB group with the Solaris port, and Yiorgos Adamopoulos suggested the bits to use for the HP-700 series port. Steven Dawson, Larry B. Daniel and Franklin Chen were responsible for the MkLinux and Solaris x86 ports.
GPP, the source code preprocessor used by XSB, was written by Denis Auroux. He also wrote the GPP manual reproduced in Appendix A.
The starting point of XSB (in 1990) was PSB-Prolog 2.0 by Jiyang Xu. PSB-Prolog in its turn was based on SB-Prolog, primarily designed and written by Saumya Debray, David S. Warren, and Jiyang Xu. Thanks are also due to Weidong Chen for his work on Prolog clause indexing for SB-Prolog and to Richard O'Keefe, who contributed the Prolog code for the Prolog reader and the C code for the tokenizer.