From: Mark Thom Date: Sun, 31 Jan 2021 04:28:45 +0000 (-0700) Subject: explain motive for Rebis development branch in README.md X-Git-Tag: v0.9.0~150^2~67^2~15 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=c5e5eb8b86feeafae72aa538eeabec7203679604;p=scryer-prolog.git explain motive for Rebis development branch in README.md --- diff --git a/README.md b/README.md index 8151a333..985ae4a0 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,36 @@ programming, which is itself written in a high-level language. ![Scryer Logo: Cryer](logo/scryer.png) +## Rebis Development Branch + +This is the Rebis development branch, which is planned to converge on +version 0.9.0 of Scryer Prolog. As Rebis progresses to completion, it +will absorb contributions made to complementary parts of the master +branch. As such, it is now the bleeding edge version of Scryer. + +The major contribution of Rebis is the transition to a predicate-based +module system from the atom-based module system of the master +branch. Much of the compilation procedure has been ported from Rust to +Prolog, and is laid out in the files `loader.[rs|pl]`. + +A minimalized bootstrapping procedure written entirely in Rust is used +to load `loader.pl` and several preliminary libraries into Scryer, +which is called from `toplevel.pl` to compile and load new modules. + +Some established features of Scryer have been temporarily disrupted by +Rebis' sweeping changes: + +* Logical update semantics must be re-implemented, although +`asserta/1`, `assertz/1`, `retract/1`, and `clause/2` otherwise +work as expected using the new incremental clause compilation of +`compile.rs`. + +* Metacalls in several libraries must be modified to use the new +predicate-based module system. + +* `multifile` declarations are no longer supported by the Rust loader. +The current plan is to re-implement them mostly in Prolog. + ## Phase 1 Produce an implementation of the Warren Abstract Machine in Rust, done