Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
As of comment 4480e64, Chez Scheme can support Racket CS on a platform where there's no native-code backend and where code generation beyond libffi's is disallowed. Then again, since interpreted mode is a factor of 20 slower, it's not so practical. This commit makes a no-native-backed Racket CS somewhat more practical by adding a "pbchunks" mode that compiles some bytecode to C. That compilation path makes sense for the static code that is built into the Racket CS executable, which includes the layers from Chez Scheme primitive through the Racker expander. This strategy is analogous to the "cify" mode of non-JIT Racket BC, which compiles the Racket macro expander to C. One difference between pbchunks and cify is that Racket BC's primitives are already implemented in C, so cify applies only to the expander's implementation. Compilation with pbchunks applies even to the implementation of Scheme primitives. (Neither applies to Racket-level code that is run via no-JIT Racket BC with cify or no-native-backend Racket CS with pbchunks.) That difference explains the relative performance I find on my machines for `racket -cl racket/base`: pure native interpreted cify/pbchunks Racket CS x1 x20 x4 Racket BC x1 x5 x1 The x4 is not great, but the end result is that building a Racket distirbution with pbchunks Racket CS feels at least practical, while pure interpreted Racket CS took longer than I was willing to wait.
- Loading branch information
Showing
50 changed files
with
2,907 additions
and
907 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.