This commit is contained in:
Justin Ethier 2015-07-22 21:48:16 -04:00
parent 9f72e6699d
commit 9124eb712f
2 changed files with 13 additions and 17 deletions

View file

@ -4,35 +4,35 @@ R<sup>7</sup>RS Compliance
Section | Status | Comments Section | Status | Comments
------- | ------ | --------- ------- | ------ | ---------
2.2 Whitespace and comments | | 2.2 Whitespace and comments | Partial | No datum or block comments
2.3 Other notations | | 2.3 Other notations | |
2.4 Datum labels | | 2.4 Datum labels | No |
3.1 Variables, syntactic keywords, and regions | | 3.1 Variables, syntactic keywords, and regions | |
3.2 Disjointness of types | | 3.2 Disjointness of types | Yes |
3.3 External representations | | 3.3 External representations | |
3.4 Storage model | | No immutable types at this time. 3.4 Storage model | | No immutable types at this time.
3.5 Proper tail recursion | Yes | 3.5 Proper tail recursion | Yes |
4.1 Primitive expression types | | 4.1 Primitive expression types | |
4.2 Derived expression types | | 4.2 Derived expression types | |
4.3 Macros | | 4.3 Macros | |
5.1 Programs | | 5.1 Programs | Yes |
5.2 Import declarations | | 5.2 Import declarations | |
5.3 Variable definitions | | 5.3 Variable definitions | Partial | `define-values` is not implemented yet.
5.4 Syntax definitions | | 5.4 Syntax definitions | |
5.5 Record-type definitions | | 5.5 Record-type definitions | |
5.6 Libraries | | 5.6 Libraries | Partial | Support is "good enough" but need to make it more robust
5.7 The REPL | Yes | 5.7 The REPL | Yes |
6.1 Equivalence predicates | | `eqv?` is not implemented, it is just an alias to `eq?` 6.1 Equivalence predicates | Yes | `eqv?` is not implemented, it is just an alias to `eq?`
6.2 Numbers | | 6.2 Numbers | Partial | Integers and reals are supported, but most numeric functions are missing at this time.
6.3 Booleans | Yes | `#true` and `#false` are not recognized by parser. 6.3 Booleans | Yes | `#true` and `#false` are not recognized by parser.
6.4 Pairs and lists | Yes | `member` functions are predicates, `member` and `assoc` do not accept `compare` argument. 6.4 Pairs and lists | Yes | `member` functions are predicates, `member` and `assoc` do not accept `compare` argument.
6.5 Symbols | Yes | 6.5 Symbols | Yes |
6.6 Characters | Partial | No unicode support, `char-ci` predicates are not implemented. 6.6 Characters | Partial | No unicode support, `char-ci` predicates are not implemented.
6.7 Strings | | 6.7 Strings | Partial | Many functions are missing. Need to sync up with r7rs.
6.8 Vectors | Yes | 6.8 Vectors | Yes |
6.9 Bytevectors | | 6.9 Bytevectors | |
6.10 Control features | | 6.10 Control features | |
6.11 Exceptions | | 6.11 Exceptions | Partial | Need to check against r7rs
6.12 Environments and evaluation | | 6.12 Environments and evaluation | Partial |
6.13 Input and output | | 6.13 Input and output | |
6.14 System interface | | 6.14 System interface | |

8
TODO
View file

@ -28,16 +28,12 @@ Working TODO list:
- GC improvements - GC improvements
- is dhalloc limit good enough? - is dhalloc limit good enough?
- should expand size of heap if there is not enough room to fit all the "kept" objects - should expand size of heap if there is not enough room to fit all the "kept" objects
get a test case for this, should be simple enough to write a program that exhausts memory
- eval - eval
there is no concept of macro expansion, probably other deficiencies as well there is no concept of macro expansion, probably other deficiencies as well
almost certainly will break when running the self-hosted compiler... almost certainly will break when running the self-hosted compiler...
no, I think this is ok. may want to unify macros with compiler side though
- stack traces - not required but may be essential
if we can record function names in cgen, then it is not too much
of a stretch to create a circular buffer of string ptr's and then
add to this buffer each time a function is called. then print the
buffer out in the default exception handler (or such).
- support for application of pure varargs functions, EG: - support for application of pure varargs functions, EG:
((lambda test (write test)) 1 2 3 4) ((lambda test (write test)) 1 2 3 4)