In Part 1, I explained why my Scheme interpreter, Schetoo, has the ability to fail or restart any instruction. In Part 2, I showed how it automatically checks that instructions do all necessary checks before they have any side effects. Those two posts described raising exceptions with longjmp, but didn’t really explain how the interpreter catches exceptions.
Posts Tagged ‘kbscheme’
Posted by kernelbob on January 4, 2011
Posted by kernelbob on January 2, 2011
In the first half of 2010, I wrote a Scheme interpreter which I called Schetoo. It is a sequel to an interpreter called kbscheme, which I worked on off-and-on in 2008 and 2009. Both are written in C.
I undertook these projects to learn more about Scheme, interpreters, and garbage collection. Along the way, I came up with an interesting technique to make interpreter implementation less error-prone. That’s what I want to write about today.
Posted by kernelbob on January 9, 2010
The Scheme interpreter project is “on hold”. Maybe it’s “finished”. It’s time to take stock, see what I learned, what I accomplished, and what I could have done better.
Posted by kernelbob on January 1, 2010
I’m officially putting my Scheme interpreter project “on hold” for a while. Progress has slowed to a virtual stop. It’s not because I’ve lost interest, but because I’m lost.
Simultaneously learning to think in Scheme, implementing hygienic macros through syntax-case, and (re)designing the core interpreter has proven to be too much. I haven’t been able to hack my way through it.
Someday I’ll pick the project up again. I’m still very interested in it. Maybe I’ll continue from the same code base, and maybe I’ll start over.
Posted by kernelbob on November 15, 2009
I got to work on my Scheme interpreter this weekend. Real life had interfered for about three weeks straight.
Posted by kernelbob on October 15, 2009
I’ve written here before about my efforts to write a Scheme interpreter from scratch. The last update was in May, but I’m still working on it. I’ve made 60 git commits since then. The major thing I’m trying to do is implement macros, but I’m having a hard time of it. No matter. When they’re done, I’ll understand macros thoroughly.
Posted by kernelbob on May 21, 2009
I haven’t ‘blogged about my Scheme interpreter in ages. Development stopped from January through March, but I’ve been working on it again. Here are links to the earlier articles.
- Scheming, part 6
- Scheming, part 5
- Announcing kbscheme
- Scheming, part 3
- Scheming, part 2
- Scheming, part 1
- Not another Scheme interpreter!
The biggest new development is the reader. Most developers call them parsers, but Lisp people call them readers. I have written six readers for Scheme now, and I’ve effectively completed a class in advanced parsing theory. The current reader works very well, and I do not want to write another.
Posted by kernelbob on November 28, 2008
That’s the big news. Lots of little tweaks and cleanup, but call/cc is the big deal. I’d designed the evaluator to handle call/cc way back when, so it wasn’t a major rewrite. It was just a matter of figuring out exactly what it had to do.
Posted by kernelbob on November 22, 2008
I published my scheme interpreter on gitorious. Now you can follow along. It needed a name, so I called it kbscheme. Not a brilliant name but it’ll do.
Here’s the project blurb.
This vanity project is yet another implementation of the Scheme programming language.
- I want to learn Scheme.
- I want to write something in C. I’ve been using higher level languages and my C is rusty.
- I want to write a garbage collector. They’ve always fascinated me, but I’ve never written one.
- I have some research ideas about garbage collection that I want to explore.
- a production-quality Scheme interpreter
- full implementation of the language
Check it out, Brandon.
Hint to the git-ignorant (as I was very recently). Go to the repositories/mainline page and click on the “More info…” links, Those will show the exact commands needed to copy (clone) the tree onto your local disk.
Actually, I’m still git-ignorant. Gotta work on that…