jashkenas/coffee-script — Issue #2080: library language features/extensions...
Author: flynx
Created: 2012-01-30 23:17:07+00:00
State: open

This is just a suggestion of a possible direction for coffee-script extension.

Make language extensions (like *iced*) live in a library instead of parallel forks/branches of the compiler.

benefits:

* will make extending the language and experimenting simpler
* will eventually make the core clean and more modular
* let people experiment more with different ideas
* keep the ecosystem united (people wanting to experiment will not move away from the upstream and most changes will make it upstream faster and in a cleaner manner)

the considerations that need to be made to make this worth while / convenient:

* standardize a set of *stable* or *official* extensions that will be available by default
* auto-install on first use (optional -- can be an extension in itself)
* clear context rules (to avoid conflicts) -- I'd make this *affect only the file containing the declaration*
* clear style/syntax guide-lines (to avoid conflicts)
* clear syntax (IMO this has to be syntax), and I'd make it verbose-ish to be more noticeable by the person reading the code:

```
// beginning of file...
use CoffeeScript extension ICED

// user code...
...
```

X-posted: