* The compiled output is pretty-printed instead of minified.
* Comments are passed through in-place to JavaScript.
* All functions are named functions, so instead of a stacktrace full of "anonymous", you can situate yourself.
* There's a "no special functions" rule -- CoffeeScript translates directly into JS without a standard library, which means that theres a one-to-one correspondence between your source code and its JavaScript equivalent, so it's not too hard to untangle.
That said, the temporary variable that we need to generate for some features are a little ugly, and sometimes we need to generate extra safety checks because we don't know certain things at compile time (such as, for example if a range counts upwards or down). Any suggestions for how to make the compiled JS more easily readable would be warmly welcomed.