mattwparas / steel

An embedded scheme interpreter in Rust
Apache License 2.0
1.15k stars 51 forks source link

Comparision to the Scheme standards #277

Open omentic opened 1 day ago

omentic commented 1 day ago

This is a cool project! Reading through the README and documentation, this calls itself a Scheme in the vein of Racket but doesn't mention how compatible it is with R5RS/R6RS/R7RS. I would assume it's not compatible, given the Racket inspiration - but it would be nice to have a comparison! Is Steel close to a superset of any of the standards?

(feel free to close this if not desired)

mattwparas commented 1 day ago

Thanks for taking an interest!

I haven't taken a stance that I will be 100% compatible through and through, however the goal is to be mostly compatible with r5rs, and eventually r7rs. If not completely compatible by default, I'd like to provide libraries that enable full compatibility. Every so often I work on porting code from https://github.com/ecraven/r7rs-benchmarks and that helps figure out where steel is at.

Its a good idea to have the compliance monitored somehow - I can probably set up the test suite to report something to the readme (just provide a dump of the results, or something). As of right now you can see the status within cogs/r5rs.scm and cogs/r7rs.scm - the r7rs one is not yet complete, but the r5rs one has a test suite ported from chibi scheme.

The results for r5rs:

Passed:  245
Skipped compilation (expected failure):  43
Failed:  0

The vast majority of those are simply due to missing library functions that won't be a huge lift to implement. The only one that might require some hefty work is implementing let-syntax.