Comments (3)
Look at the Java byte code format [1] for ideas, although Java byte code seems a bit low level. Basically, the primitive expressions in Scheme need to have corresponding byte codes, while nearly everything else is derived from those primitive expressions. The built-in procedures for the various types will continue to be implemented in Go for sake of performance.
Consider the impact this may have on the (read) and (eval) procedures; perhaps eval would perform JIT compilation to byte code.
Consider writing the compiled byte code to a file to avoid compiling the same code repeatedly. See the Java class file format for ideas [2].
[1] http://en.wikipedia.org/wiki/Java_bytecode
[2] http://en.wikipedia.org/wiki/Java_class_file
from bakeneko.
Using Eli Bendersky's "bob" [1] Scheme compiler/interpreter written in Python (ignoring the C++ version for now) as a guide for implementing the equivalent in Go.
[1] https://github.com/eliben/bobscheme
from bakeneko.
Fixed in commit cdbc261.
from bakeneko.
Related Issues (20)
- Support record type definitions (R7RS 5.5)
- Implement type predicates
- Support inclusion (include[-ci]) R7RS 4.1.7
- Test: quasiquotation yielding itself
- case/cond must support '=>' alternate expression
- Provide basic hash tables (SRFI 69)
- Tests written in Scheme using a Scheme test framework HOT 1
- Test tail call optimization in byte code interpreter HOT 1
- Byte code (de)serialization HOT 1
- Profile the compiler and byte code VM
- Consider the various SRFI implementations HOT 1
- Test nested lambda calls in compiled code
- Recycle frequently created objects (e.g. environment)
- Implement quasi-quotation support (R7RS 4.2.8) HOT 1
- Compile bundled Scheme and save to disk
- Test quasiquotation on lists/vectors that are self-referential
- Test Pair.Map() on improper lists
- Not all new character types supported
- Write a byte code verifier
- Dividing large values appears to go awry
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bakeneko.