CSXXX-The Implementation of Embedded Scripting Languages
John Ousterhout's Tool Command Language (Tcl) started a rush to embed
programming languages inside of other programming languages, usually
to provide extension languages for C programs.
Perl, Python, Scheme, and PostScript can all be embedded, and languages like
S-Lang, Lua, Obliq, and Visual Basic are designed expressly for embedding.
There are also Ivy, xlisp, Gorby, GUILE, Emacs Lisp, and I could go
The exact syllabus for the seminar will depend on the interests of the
participants, but I expect to cover the following topics:
If done well, this analysis could result in a good survey paper.
- Quick review of the fundamental technologies: parsing, generating IR
or bytecodes, interpretive systems in general, and run-time support,
especially memory management.
- Analysis and classification of existing embedded languages according
to the language paradigms used and the features included, without
reference to the implementations.
- Analysis of the implementations of existing embedded languages,
- What are the relative costs in implementation complexity of different
components (parser, bytecodes, run-time types, memory management,
interface to C)?
- How can we classify and understand the interface between the embedded
language and the host program?
Can we understand, qualitatively or quantitatively, the implementation
burden for hooking up to an embedded language?
- Are there meaningful performance differences between embedded
We may also, depending on the interests of the participants, take it
on ourselves to improve an aspect of the implementation of embedded
I have already spotted an opportunity in memory management that I
think is easily reachable by a small seminar.
Finally, if we lose our senses entirely, we may design and implement
our own (small) embedded language.
Participants should have at least superficial exposure to program
translation (compiler front ends) and automatic memory management
Experience with interpreters is not necessary; we'll review the
necessary material in the first week or two.