If you want to get in-depth on Cheney on the MTA, I'd reccomend Peter Bex's article on the Chicken GC (http://www.more-magic.net/posts/internals-gc.html), and the original paper, "CONS should not CONS its arguments, part II: Cheney on the MTA". But I'll do my best to sum it up here.
Cheney on the MTA is a really neat hack that allows for cheap continuations, realtively efficient C compilation of Scheme code, and an effective garbage collection scheme.
Effectively, with CMTA, you have a generational GC, but the first generation is stack allocated. When the stack allocations run out of space, all the data is copied out to the heap, into the second generation of GC. This is super effective because most data is only allocated for a short time, so it never goes out to heap, and your accesses are closer together, and also on the stack, so there's less chance of a cache miss. But it gets better: In Scheme, a program's continuation (think basically its instruction pointer and stack state) can be reified as an actual data structure. However, since you're GCing the stack already, this doesn't causr any overheard, or at least not nearly as much as it does in, say, Guile, which has to copy the stack every single time a continuation is created.
The reason it's called Cheney on the MTA is because it uses Cheney's algorithm for GC, and because it's using the stack to hold data, popping the stack would invalidate program state, so it never returns.
What never returning has to do with the MTA is a cultural alusion that would take too long to explain here. But that's never stopped me before.
It's a reference to a song called "M.T.A", originally created for Walter O' Brian's campaign in 1949 (Boston's subway was known as the MTA at the time). It became a hit when recorded by The Kingston Trio in 1959. Looking up the song is left an excercise to the reader.
Unofficially, the song is known as "Charlie on the MTA," hence the title of the paper. And yes, this is where the CharlieCard gets its name.
The song is fairly entrenched in the area: I grew up in Connecticut, and know the lyrics from memory. And on one of several trips to Boston, I've seen at least one person expect to have to pay on their way out of the subway system because of the song :-).
Oh let me tell you a story about a function named *recursive* on a tragic and faithful time,
It was called with 3 long ints, popped the stack and set a jumpbuf, called itself on the SGI.
But did it ever return? No, it never returned, and its value is still unknown,
It may run forever on the SGI mainframe, it's the function that never returned.
Well that function ran a check to see when the stack would overflow, it ran almost past they say,
But when it got there the function called a longjump on the jumpbuf,
It just wasn't returning that day.
But did it ever return? No it never returned, and its value is still unlearned
It may run forever on the SGI mainframe, it's the function that never returned.
Man, GLS makes this look so easy. It's actually kind of hard.