=230pt xsb-logo.eps
Konstantinos Sagonas
Terrance Swift
David S. Warren
Juliana Freire
Prasad Rao
Baoqiu Cui
Ernie Johnson
Luis de Castro
Steve Dawson
Michael Kifer
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, Ernie Johnson, Baoqiu Cui, Michael Kifer, Bart Demoen and Luis F. Castro.
In Version 2.5, the core engine development of the SLG-WAM has been mainly implemented by Terrance Swift, Kostis Sagonas, Prasad Rao, Juliana Freire, Ernie Johnson, and Luis Castro. The breakdown, very roughly, was that Terrance Swift wrote the initial tabling engine, the SLG-WAM, and builtins. Prasad Rao reimplemented the engine's tabling subsystem to use tries for variant-based table access and Ernie Johnson extended these routines in a number of ways, including adding call subsumption. 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. Finally, Luis Castro rewrote the emulator to use jump tables and wrote a heap-garbage collector for the engine.
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 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 for non-tabled code and by Baoqiu Cui, Terrance Swift and David Warren for tabled code. The handling of the multifile directive was written by Baoqiu Cui. C.R. Ramakrishnan wrote the mode analyzer for XSB.
Michael Kifer rewrote parts of the XSB code to make XSB configurable with GNU's Autoconf, revised the socket handling routines, and added many new file_io predicates.
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.