From: Mark Thom Date: Fri, 22 Dec 2017 19:39:35 +0000 (-0700) Subject: update README X-Git-Tag: v0.8.110~648^2~2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=f8555682d093cc37a63c10357c113cc26bacb753;p=scryer-prolog.git update README --- diff --git a/README.md b/README.md index 483c87f1..61f83da8 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,14 @@ ## Phase 1 -An implementation of the Warren Abstract Machine in Rust, done +Produce an implementation of the Warren Abstract Machine in Rust, done according to the progression of languages in [Warren's Abstract Machine: A Tutorial Reconstruction](http://wambook.sourceforge.net/wambook.pdf). -Phase 1 has been completed, in that rusty-wam implements in some form +Phase 1 has been completed in that rusty-wam implements in some form all of the WAM book, including lists, cuts, Debray allocation, first -argument indexing, and conjunctive queries. +argument indexing, last call optimization and conjunctive queries. ## Phase 2 @@ -48,18 +48,25 @@ There are no current plans to implement any of these, but they might be nice to have in the future. They'd make a good project for anyone wanting to contribute code to rusty-wam. -1. Add the global analysis techniques of Peter van Roy's thesis, "Can -Logic Programming Execute as Fast as Imperative Programming?" +1. Implement the global analysis techniques described in Peter van +Roy's thesis, "Can Logic Programming Execute as Fast as Imperative +Programming?" -2. Add unum representation and arithmetic, as described in Gustafson's -book "The End of Error." +2. Add unum representation and arithmetic, using either an existing +unum implementation or an ad hoc one. Unums are described in +Gustafson's book "The End of Error." -3. Add support for shift/reset delimited continuations, see "Delimited Continuations -for Prolog." +3. Add support for shift/reset delimited continuations, see "Delimited +Continuations for Prolog." -4. Add an incremental compacting garbage collector the heap. +4. Add an incremental compacting garbage collector for the heap. -5. Add a concurrent atom table. +5. Add concurrent tables to manage shared references to atoms and +strings. + +6. Add optional SLG resolution for fast memoization of predicates. + +7. Add some form of JIT predicate indexing. ## Built-in predicates