diff --git a/README.md b/README.md
index b07a38e5e..6d08276a6 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,27 @@
-
-
-
-
-
-
## Overview
> Programming languages should be designed not by piling feature on top of
> feature, but by removing the weaknesses and restrictions that make additional
> features appear necessary.
->
-> Revised7 Report on the Algorithmic Language Scheme [1]
->
-
-Meevax is an implementation of Lisp-1 programming language, supporting subset
-of the [Scheme](http://www.scheme-reports.org/) (R7RS) and
-[SRFI](https://srfi.schemers.org/)s.
+> Revised7 Report on the Algorithmic Language Scheme
+
+Meevax is an implementation of Lisp-1 programming language, supporting the
+latest [Scheme](http://www.scheme-reports.org/) language standard and some
+[SRFI](https://srfi.schemers.org/)s (SRFI; Scheme requests for implementation).
+This implementation is focused on integration with modern C++ and practicality:
+it not only works as an interpreter with support for the latest Scheme
+standard, but also provides a flexible Lisp-1 kernel as a C++ library. The
+library is installed as a CMake package for [easy
+linking](./example/CMakeLists.txt), and [any C++ classes can be used from
+Lisp-1 scripts](./example/example.ss) [via simple stubs](example/example.cpp).
+
+However, as the major version indicates, this implementation is still in its
+infancy. Its performance is significantly inferior to that of common Scheme
+implementations. For example, in a microbenchmark comparison with Chibi Scheme,
+which can be embedded into C, Meevax takes more than 40x longer to compute than
+Chibi Scheme. We will try to improve the performance in future development, but
+we do not recommend using Meevax for anything other than toy programs, at least
+at this time.
### Releases
@@ -23,13 +29,32 @@ Latest release is [here](https://github.com/yamacir-kit/meevax/releases).
### Features
-- Architecture - SECD machine.
-- Modern C++ compatible dynamic typing - Meevax provides RTTI-based language
- runtime library.
+- Traditional SECD machine [[Landin 1964](#Landin-1964)].
+- Low-level hygienic macro system, known as *syntactic closures* [[Bawden and
+ Rees 1988](#Bawden-and-Rees-1988); [Hanson 1991](#Hanson-1991)] and *explicit
+ renaming* [[Clinger 1991](#Clinger-1991)]. For these, the well-known macro
+ transformers `sc-macro-transformer`, `rsc-macro-transformer`, and
+ `er-macro-transformer` from the library [`(meevax
+ macro-transformer)`](./basis/meevax.ss) are provided. Note that these are
+ non-Scheme standards.
+- C++ friendly precise garbage collection [[Kempf 2001a](#Kempf-2001a); [Kempf
+ 2001b](#Kempf-2001b)]
### Standards
-Subset of R7RS-small.
+Meevax can be used as an interpreter that supports the Scheme standard specified by the following report:
+
+- Revised4 Report on the Algorithmic Language Scheme (R4RS) [[Clinger and Rees 1991a](#Clinger-and-Rees-1991a)]
+- Revised5 Report on the Algorithmic Language Scheme (R5RS) [[Kelsey, Clinger and Rees 1998](#Kelsey-Clinger-and-Rees-1998)]
+- Revised7 Report on the Algorithmic Language Scheme (R7RS) [[Shinn, Cowan and Glecker 2013](#Shinn-Cowan-and-Glecker-2013)]
+
+Procedures for each standard are provided by the following R7RS-style libraries:
+
+| Language | Library name |
+|:--------:|--------------|
+| R4RS | [`(scheme r4rs)`](./basis/r4rs.ss)
+| R5RS | [`(scheme r5rs)`](./basis/r5rs.ss)
+| R7RS | [`(scheme base)`](./basis/r7rs.ss) [`(scheme case-lambda)`](./basis/r7rs.ss) [`(scheme char)`](./basis/r7rs.ss) [`(scheme complex)`](./basis/r7rs.ss) [`(scheme cxr)`](./basis/r7rs.ss) [`(scheme eval)`](./basis/r7rs.ss) [`(scheme file)`](./basis/r7rs.ss) [`(scheme inexact)`](./basis/r7rs.ss) [`(scheme lazy)`](./basis/r7rs.ss) [`(scheme load)`](./basis/r7rs.ss) [`(scheme process-context)`](./basis/r7rs.ss) [`(scheme read)`](./basis/r7rs.ss) [`(scheme repl)`](./basis/r7rs.ss) [`(scheme time)`](./basis/r7rs.ss) [`(scheme write)`](./basis/r7rs.ss) [`(scheme r5rs)`](./basis/r5rs.ss)
### SRFIs
@@ -74,7 +99,7 @@ Subset of R7RS-small.
cmake -B build -DCMAKE_BUILD_TYPE=Release
cd build
make package
-sudo apt install build/meevax_0.4.824_amd64.deb
+sudo apt install build/meevax_0.4.825_amd64.deb
```
or
@@ -106,9 +131,9 @@ sudo rm -rf /usr/local/share/meevax
| Target Name | Description
|-------------|-------------
-| `all` | Build shared-library `libmeevax.0.4.824.so` and executable `meevax`
+| `all` | Build shared-library `libmeevax.0.4.825.so` and executable `meevax`
| `test` | Test executable `meevax`
-| `package` | Generate debian package `meevax_0.4.824_amd64.deb`
+| `package` | Generate debian package `meevax_0.4.825_amd64.deb`
| `install` | Copy files into `/usr/local` directly
## Usage
@@ -132,10 +157,18 @@ See [LICENSE](./LICENSE).
## References
-- [1] A.shinn, J.Cowan, A. A. Greckler, editors, "[Revised7 Report on the Algorithmic Language Scheme](https://bitbucket.org/cowan/r7rs/raw/tip/rnrs/r7rs.pdf)", Technical report, 2013.
-
-### Resources
-
-* [Chibi-Scheme](https://github.com/ashinn/chibi-scheme)
-* [SECDR-Scheme](http://www.maroon.dti.ne.jp/nagar17/mulasame/)
-* [TinyScheme](http://tinyscheme.sourceforge.net/)
+| Authors | Year | Title | Journal Title / Publisher | Pages |
+|-------------------------------------------------------------------------------------------------------|:----:|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
+| John McCarthy | 1960 | [Recursive functions of symbolic expressions and their computation by machine, Part I](https://dl.acm.org/doi/10.1145/367177.367199) | [Communications of the ACM, Volume 3, Issue 4](https://dl.acm.org/toc/cacm/1960/3/4) | 184‑195 |
+| P. J. Landin | 1964 | [The Mechanical Evaluation of Expressions](https://academic.oup.com/comjnl/article/6/4/308/375725) | [The Computor Journal, Volume 6, Issue 4](https://academic.oup.com/comjnl/issue/6/4) | 308‑320 |
+| Peter Henderson | 1980 | [Functional Programming: Application and Implementation](https://archive.org/details/functionalprogra0000hend/mode/2up) | Prentice Hall | |
+| Alan Bawden and Jonathan Rees | 1988 | [Syntactic Closures](https://dl.acm.org/doi/10.1145/62678.62687) | [LFP '88: Proceedings of the 1988 ACM Conference on LISP and Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/62678) | 86‑95 |
+| William Clinger and Jonathan Rees (Editors) | 1991 | [Revised4 Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/382130.382133) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 3](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/3) | 1‑55 |
+| Chris Hanson | 1991 | [A Syntactic Closures Macro Facility](https://dl.acm.org/doi/10.1145/1317265.1317267) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 4](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4) | 9‑16 |
+| William Clinger | 1991 | [Hygienic Macros Through Explicit Renaming](https://dl.acm.org/doi/10.1145/1317265.1317269) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 4](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4) | 25‑28 |
+| William Clinger and Jonathan Rees | 1991 | [Macros That Work](https://dl.acm.org/doi/10.1145/99583.99607) | [POPL '91: Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages](https://dl.acm.org/doi/proceedings/10.1145/99583) | 155‑162 |
+| Rechard Kelsey, William Clinger and Jonathan Rees (Editors) | 1998 | [Revised5 Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/290229.290234) | [ACM SIGPLAN Notices, Volume 33, Issue 9](https://dl.acm.org/toc/sigplan/1998/33/9) | 26‑76 |
+| William E. Kempf | 2001 | [A garbage collection framework for C++](https://www.codeproject.com/Articles/912/A-garbage-collection-framework-for-C) | https://www.codeproject.com/Articles/912/A-garbage-collection-framework-for-C | |
+| William E. Kempf | 2001 | [A garbage collection framework for C++ - Part II](https://www.codeproject.com/Articles/938/A-garbage-collection-framework-for-C-Part-II) | https://www.codeproject.com/Articles/938/A-garbage-collection-framework-for-C-Part-II | |
+| Michael D. Adams and R. Kent Dybvig | 2008 | [Efficient Nondestructive Equality Checking for Trees and Graphs](https://dl.acm.org/doi/10.1145/1411204.1411230) | [ICFP '08: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/1411204) | 179‑188 |
+| Alex Shinn, John Cowan and Arthur A. Gleckler (Editors) | 2013 | [Revised7 Report on the Algorithmic Language Scheme](https://standards.scheme.org/official/r7rs.pdf) | http://www.scheme-reports.org/ | |
diff --git a/VERSION b/VERSION
index 78a548007..001ab55ee 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.4.824
+0.4.825
diff --git a/configure/README.md b/configure/README.md
index eb34ca8be..db3661b97 100644
--- a/configure/README.md
+++ b/configure/README.md
@@ -1,21 +1,27 @@
-
-
-
-
-
-
## Overview
> Programming languages should be designed not by piling feature on top of
> feature, but by removing the weaknesses and restrictions that make additional
> features appear necessary.
->
-> Revised7 Report on the Algorithmic Language Scheme [1]
->
-
-Meevax is an implementation of Lisp-1 programming language, supporting subset
-of the [Scheme](http://www.scheme-reports.org/) (R7RS) and
-[SRFI](https://srfi.schemers.org/)s.
+> Revised7 Report on the Algorithmic Language Scheme
+
+Meevax is an implementation of Lisp-1 programming language, supporting the
+latest [Scheme](http://www.scheme-reports.org/) language standard and some
+[SRFI](https://srfi.schemers.org/)s (SRFI; Scheme requests for implementation).
+This implementation is focused on integration with modern C++ and practicality:
+it not only works as an interpreter with support for the latest Scheme
+standard, but also provides a flexible Lisp-1 kernel as a C++ library. The
+library is installed as a CMake package for [easy
+linking](./example/CMakeLists.txt), and [any C++ classes can be used from
+Lisp-1 scripts](./example/example.ss) [via simple stubs](example/example.cpp).
+
+However, as the major version indicates, this implementation is still in its
+infancy. Its performance is significantly inferior to that of common Scheme
+implementations. For example, in a microbenchmark comparison with Chibi Scheme,
+which can be embedded into C, Meevax takes more than 40x longer to compute than
+Chibi Scheme. We will try to improve the performance in future development, but
+we do not recommend using Meevax for anything other than toy programs, at least
+at this time.
### Releases
@@ -23,13 +29,32 @@ Latest release is [here](https://github.com/yamacir-kit/meevax/releases).
### Features
-- Architecture - SECD machine.
-- Modern C++ compatible dynamic typing - Meevax provides RTTI-based language
- runtime library.
+- Traditional SECD machine [[Landin 1964](#Landin-1964)].
+- Low-level hygienic macro system, known as *syntactic closures* [[Bawden and
+ Rees 1988](#Bawden-and-Rees-1988); [Hanson 1991](#Hanson-1991)] and *explicit
+ renaming* [[Clinger 1991](#Clinger-1991)]. For these, the well-known macro
+ transformers `sc-macro-transformer`, `rsc-macro-transformer`, and
+ `er-macro-transformer` from the library [`(meevax
+ macro-transformer)`](./basis/meevax.ss) are provided. Note that these are
+ non-Scheme standards.
+- C++ friendly precise garbage collection [[Kempf 2001a](#Kempf-2001a); [Kempf
+ 2001b](#Kempf-2001b)]
### Standards
-Subset of R7RS-small.
+Meevax can be used as an interpreter that supports the Scheme standard specified by the following report:
+
+- Revised4 Report on the Algorithmic Language Scheme (R4RS) [[Clinger and Rees 1991a](#Clinger-and-Rees-1991a)]
+- Revised5 Report on the Algorithmic Language Scheme (R5RS) [[Kelsey, Clinger and Rees 1998](#Kelsey-Clinger-and-Rees-1998)]
+- Revised7 Report on the Algorithmic Language Scheme (R7RS) [[Shinn, Cowan and Glecker 2013](#Shinn-Cowan-and-Glecker-2013)]
+
+Procedures for each standard are provided by the following R7RS-style libraries:
+
+| Language | Library name |
+|:--------:|--------------|
+| R4RS | [`(scheme r4rs)`](./basis/r4rs.ss)
+| R5RS | [`(scheme r5rs)`](./basis/r5rs.ss)
+| R7RS | [`(scheme base)`](./basis/r7rs.ss) [`(scheme case-lambda)`](./basis/r7rs.ss) [`(scheme char)`](./basis/r7rs.ss) [`(scheme complex)`](./basis/r7rs.ss) [`(scheme cxr)`](./basis/r7rs.ss) [`(scheme eval)`](./basis/r7rs.ss) [`(scheme file)`](./basis/r7rs.ss) [`(scheme inexact)`](./basis/r7rs.ss) [`(scheme lazy)`](./basis/r7rs.ss) [`(scheme load)`](./basis/r7rs.ss) [`(scheme process-context)`](./basis/r7rs.ss) [`(scheme read)`](./basis/r7rs.ss) [`(scheme repl)`](./basis/r7rs.ss) [`(scheme time)`](./basis/r7rs.ss) [`(scheme write)`](./basis/r7rs.ss) [`(scheme r5rs)`](./basis/r5rs.ss)
### SRFIs
@@ -123,10 +148,18 @@ See [LICENSE](./LICENSE).
## References
-- [1] A.shinn, J.Cowan, A. A. Greckler, editors, "[Revised7 Report on the Algorithmic Language Scheme](https://bitbucket.org/cowan/r7rs/raw/tip/rnrs/r7rs.pdf)", Technical report, 2013.
-
-### Resources
-
-* [Chibi-Scheme](https://github.com/ashinn/chibi-scheme)
-* [SECDR-Scheme](http://www.maroon.dti.ne.jp/nagar17/mulasame/)
-* [TinyScheme](http://tinyscheme.sourceforge.net/)
+| Authors | Year | Title | Journal Title / Publisher | Pages |
+|-------------------------------------------------------------------------------------------------------|:----:|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
+| John McCarthy | 1960 | [Recursive functions of symbolic expressions and their computation by machine, Part I](https://dl.acm.org/doi/10.1145/367177.367199) | [Communications of the ACM, Volume 3, Issue 4](https://dl.acm.org/toc/cacm/1960/3/4) | 184‑195 |
+| P. J. Landin | 1964 | [The Mechanical Evaluation of Expressions](https://academic.oup.com/comjnl/article/6/4/308/375725) | [The Computor Journal, Volume 6, Issue 4](https://academic.oup.com/comjnl/issue/6/4) | 308‑320 |
+| Peter Henderson | 1980 | [Functional Programming: Application and Implementation](https://archive.org/details/functionalprogra0000hend/mode/2up) | Prentice Hall | |
+| Alan Bawden and Jonathan Rees | 1988 | [Syntactic Closures](https://dl.acm.org/doi/10.1145/62678.62687) | [LFP '88: Proceedings of the 1988 ACM Conference on LISP and Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/62678) | 86‑95 |
+| William Clinger and Jonathan Rees (Editors) | 1991 | [Revised4 Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/382130.382133) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 3](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/3) | 1‑55 |
+| Chris Hanson | 1991 | [A Syntactic Closures Macro Facility](https://dl.acm.org/doi/10.1145/1317265.1317267) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 4](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4) | 9‑16 |
+| William Clinger | 1991 | [Hygienic Macros Through Explicit Renaming](https://dl.acm.org/doi/10.1145/1317265.1317269) | [ACM SIGPLAN LISP Pointers, Volume IV, Issue 4](https://dl.acm.org/toc/sigplan-lisppointers/1991/IV/4) | 25‑28 |
+| William Clinger and Jonathan Rees | 1991 | [Macros That Work](https://dl.acm.org/doi/10.1145/99583.99607) | [POPL '91: Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages](https://dl.acm.org/doi/proceedings/10.1145/99583) | 155‑162 |
+| Rechard Kelsey, William Clinger and Jonathan Rees (Editors) | 1998 | [Revised5 Report on the Algorithmic Language Scheme](https://dl.acm.org/doi/10.1145/290229.290234) | [ACM SIGPLAN Notices, Volume 33, Issue 9](https://dl.acm.org/toc/sigplan/1998/33/9) | 26‑76 |
+| William E. Kempf | 2001 | [A garbage collection framework for C++](https://www.codeproject.com/Articles/912/A-garbage-collection-framework-for-C) | https://www.codeproject.com/Articles/912/A-garbage-collection-framework-for-C | |
+| William E. Kempf | 2001 | [A garbage collection framework for C++ - Part II](https://www.codeproject.com/Articles/938/A-garbage-collection-framework-for-C-Part-II) | https://www.codeproject.com/Articles/938/A-garbage-collection-framework-for-C-Part-II | |
+| Michael D. Adams and R. Kent Dybvig | 2008 | [Efficient Nondestructive Equality Checking for Trees and Graphs](https://dl.acm.org/doi/10.1145/1411204.1411230) | [ICFP '08: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming](https://dl.acm.org/doi/proceedings/10.1145/1411204) | 179‑188 |
+| Alex Shinn, John Cowan and Arthur A. Gleckler (Editors) | 2013 | [Revised7 Report on the Algorithmic Language Scheme](https://standards.scheme.org/official/r7rs.pdf) | http://www.scheme-reports.org/ | |