diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 000000000..8475720ba --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,370 @@ +## Changelog +### 0.9.1 +- Added `if`-block. ([#151](https://github.com/satyr/coco/issues/151)) +- Added `for`-`let`. ([#164](https://github.com/satyr/coco/issues/164)) +- Added `<>` aka _lef_. ([#180](https://github.com/satyr/coco/issues/180)) +- Gave `|>` the lowest precedence. +- Made block constructions directly dot-accessible. +- Made JS literal Markdown-esque. To include N `` ` ``, close with N+1 `` ` ``: + ```` ``` '``' ``` ```` +- Quit reusing temporary variables. +- File extensions like _co.json_, _coon_, or _cocoon_ now imply `--json`. +- Fixed: + - [#193](https://github.com/satyr/coco/issues/193) + - [#195](https://github.com/satyr/coco/issues/195) + - [#199](https://github.com/satyr/coco/issues/199) + - [#200](https://github.com/satyr/coco/issues/200) + - [gkz/LiveScript#273](https://github.com/gkz/LiveScript/issues/273) + - [gkz/LiveScript#279](https://github.com/gkz/LiveScript/issues/279) + +### 0.9.0 +- Literal `&` is now used to reference several new targets: + - Left hand of `|>` (in place of `_`). + - Current item of newly added quick map: `for [0 1] => &+2 # [2 3]` + - Subject of new `with` as proposed + in [#172](https://github.com/satyr/coco/issues/172). +- Made cascade, now `with` in disguise, require at least one `&` in body. + ([#179](https://github.com/satyr/coco/issues/179)) +- Made `let` accept `this =` on the first assignment to substitute old `with`. +- Made bodyless `catch` return the catchee. +- Made `by -1` implied on downward ranges. +- Made interpolation apply to `#&` and `#@`. +- Quit expanding `super` followed by `::` to parent method, + so that call to `super::anotherMethod` works as expected. +- Fixed: + - [#175](https://github.com/satyr/coco/issues/175) + - [#178](https://github.com/satyr/coco/issues/178) + - [#185](https://github.com/satyr/coco/issues/185) + - [#190](https://github.com/satyr/coco/issues/190) + - [#192](https://github.com/satyr/coco/issues/192) + - [coffee#1188](https://github.com/jashkenas/coffee-script/issues/1188) + +### 0.8.2 +- Fixed: + - [#165](https://github.com/satyr/coco/issues/165) + - [#168](https://github.com/satyr/coco/issues/168) + - [coffee#2496](https://github.com/jashkenas/coffee-script/issues/2496) + - [coffee#2506](https://github.com/jashkenas/coffee-script/issues/2506) + +### 0.8.1 +- Fixed [#162](https://github.com/satyr/coco/issues/162). + +### 0.8.0 +- Allowed hyphenated alphabets within identifiers as alias to their upper case: + `encode-URI-component` => `encodeURIComponent` +- Added cascade. ([#72](https://github.com/satyr/coco/issues/72) +- Changed the pipe operator to `|>`. +- Revised `=>` as another block creation operator. +- `export`/`import`/`const`/`var` can now appear anywhere. +- `catch`ed variables are now function-scoped. + ([coffee#2422](https://github.com/jashkenas/coffee-script/issues/2422)) +- Generated variables now get postfix `$` rather than prefix `__`. + +### 0.7.6 +- Added `export const`. +- Enabled object splat within brace objects via `...:`. +- Allowed array repetition to work on slices and comprehensions. +- Disallowed malformed hex/unicode escape sequence in string. +- Quit overloading `+` for array concatenation. +- `class` can be bodyless again. +- `super` no longer auto-`.call`s more than once. + +### 0.7.5 +- Implemented `implements`. ([#144](https://github.com/satyr/coco/issues/144)) +- Top-level `void`s are now simply ignored and usable like Python's __pass__. + +### 0.7.4 +- Added `import` declaration in place of the implicit `this import`: + `import a, b` => `this <<< a <<< b` +- Made `super` work in accessor methods. +- Disallowed redeclarations via `var`. +- Improved handling of nonexistent files. + +### 0.7.3 +- Node.js 0.8.x. +- Added `const` and `var`. ([#139](https://github.com/satyr/coco/issues/139)) +- Made `function` variables read-only. +- Removed `-n` shorthand for `--nodejs`. + ([#142](https://github.com/satyr/coco/issues/142)) +- Bug fixes: + - `super` with nested classes and methods + - `f a, while b then c` etc. + - and others: + [#138](https://github.com/satyr/coco/issues/138) + [#141](https://github.com/satyr/coco/issues/141) + [#143](https://github.com/satyr/coco/issues/143) + +### 0.7.2 +- Revised accessor. ([#5](https://github.com/satyr/coco/issues/5)) +- Allowed implicit array after some unary operators. +- Added named backcall: `<-:f g` => `g(:f ->)` +- Made `{[q]:p}` short for `{p: [q]:p}`. + +### 0.7.1 +- Added `export` statement. ([#121](https://github.com/satyr/coco/issues/121)) +- Made `{{q}:p}` short for `{p: {q}:p}`. +- Allowed keyword literals as object shorthand: `{true}` => `{true: true}` +- Allowed decimals and `$` in number comments. +- Removed uppercase radix prefixes and exponential notation as per + [coffee#2061](https://github.com/jashkenas/coffee-script/issues/2061). +- Labelling a function (literal or IIFE sugar) now names it. + E.g. `:f ->` compiles to `(function f(){})`. +- `super` call to a bound class now works as expected. +- All compiler-generated variables are now double-underscore prefixed. +- `--interactive` no longer implies `--bare`. + Use `-bi` when you want top-level variables to persist. + +### 0.7.0 +- Caught up Node.js 0.6.x. +- `!` against function/backcall now suppresses its auto-return. +- `superclass` now points to the constructor that the `class extends`. +- `super` now relies solely on `superclass` rather than requiring special forms like `C::m = ->`. +- `of` no longer delegates to `Array::indexOf`, making it consistent with `for`-`of` behavior. +- Inline implicit objects now close at newline or `if`/`for`/`while`/`until`. +- `--print` no longer implies `--compile`. +- `--watch` now works on Windows. + +### 0.6.7 +- Fixed [coffee#1715](https://github.com/jashkenas/coffee-script/issues/1715) etc. +- Trivial improvements. + +### 0.6.6 +- Added unary assignments: `!! = x` => `x = !!x` +- Made `a? <<< b` short for `a <<< b if a?`. +- Improved stack traces from directly run .co files. + +### 0.6.5 +- `case`/`of`/`instanceof` now works better with array slice. +- `instanceof` now rejects invalid right operands. + +### 0.6.4 +- Unary operators now spread into an array operand: `+[a, b]` => `[+a, +b]` +- `..` now points to the constructor under `class`. +- _coke_ now works from subdirectories. + ([coffee#1687](https://github.com/jashkenas/coffee-script/issues/1687)) + +### 0.6.3 +- Added pipe operator: `f! => g _` => `_ = f!; g _` +- Fixed identifier lexing as per ES5. +- Improved label handlings. +- Helper functions are now declared last. + ([coffee#1638](https://github.com/jashkenas/coffee-script/issues/1638)) + +### 0.6.2 +- Added character ranges: `[\a to \d]` => `[\a \b \c \d]` +- Added named destructuring: `{p, q}:o = f!` => `o = f!; {p, q} = o` +- Numbers can no longer start with `.`. +- `function` can no longer prefix `->`/`~>`. + Use `~function` to declare bound functions instead. + +### 0.6.1 +- Allowed line folding after `for` prepositions. +- `import`ing onto a soaked expression is now safe. +- `--json` now modifies `--ast` or `--compile`. +- Fixed [#81](https://github.com/satyr/coco/issues/81) etc. + +### 0.6.0 + +#### Additions +- Added [soak assign](https://github.com/satyr/coco/issues/71). +- Added [`?` operators](https://github.com/satyr/coco/issues/66). +- Loops can now have [`else` clause](https://github.com/satyr/coco/issues/75). +- `import x` is now short for `this <<< x`. +- `,` after `(`, `[` or another `,` now implies `void`. + +#### Changes +- Added [object slice](https://github.com/satyr/coco/issues/77). +- Added bang call: `f!` => `f()` +- Revised clone syntax from `x{}` to `^x`. +- Revised semiautovivification syntax from `.!`/`.@` to `.@`/`.@@`. +- Variable interpolations no longer require braces: + `"(#id)"` => `"(" + id + ")"` +- Spaced dots now close implicit calls. + See [coffee#1407](https://github.com/jashkenas/coffee-script/issues/1407). +- Direct calls to `super` now delegate `this`. +- [`extended` hook](https://github.com/jashkenas/coffee-script/issues/516) is back. +- `from` of `for` is now optional, meaning `from 0`. + `til`less `from` is no longer allowed. + +### 0.5.4 +- `while`/`until` can now have update clause after test clause: + `continue while f(), g()` => `for (; f(); g()) {}` +- `that` no longer triggers anaphoric conversion under `unless`/`until`. +- Disallowed `a.=b = c` `p:~ (a, b) ->` `f ..., a` etc. +- Fixed [coffee#1416](https://github.com/jashkenas/coffee-script/issues/1416). + +### 0.5.3 +- Added `do`-`while`/`until` construction. +- Added `$` flag to regexes. Same as `.source`, but more efficient. +- Suppressed implicit return on `new`ed/setter functions. +- Sped up lexer. + +### 0.5.2 +- Added `!?` (inexistence) operator. +- `function` no longer requires parens around parameters. +- `class` block is now mandatory. +- Bug fixes: + [coffee#1352](https://github.com/jashkenas/coffee-script/issues/1352) + [coffee#1354](https://github.com/jashkenas/coffee-script/issues/1354) + +### 0.5.1 +- `a.b.c?.=d.e` now works as expected. +- `a[b, c] = d` now works as expected. +- _extras/coco.js_ works again on WSH. +- `--output` implies `--compile` again. + +### 0.5.0 +- Added `**` operator. +- Overloaded `+`/`-`/`/` (in addition to `*`) for arrays and strings. +- Revised `let`: `let (a) ~>` => `let a then` +- Allowed underscores within number literals. +- Major regex changes: + - Dieted heregex: `/// re ///` => `// re //` + - Allowed leading whitespace in normal regex literals when unambiguous. + - No longer accepts invalid regexes. +- `->` is now optional when `function` is used. +- `case` accepts comma-separated tests again. +- `return`/`throw` can now take a block. +- REPL now uses _^J_ to continue lines. + +### 0.4.2 +- Enabled: + - ADI on `?.` + - ACI on `++`/`--` + - conditional destructuring assignments + - colors and tab completion in REPL +- Made leading `*`s serve like list markers. + +### 0.4.1 +- Added string/array multiplication. +- Added label support. +- Aliased `constructor` as `..`. + +### 0.4.0 +- Added `let`. Unary `do` is back at being simple call. +- Added `with`. +- Added semiautovivification. +- Made `::` a pure sugar for `prototype`, which can now directly refer to `@::` under class body. +- `?.` can now appear anywhere a normal dot can be used. +- `~.` is changed to `. ~`. +- `new` no longer accepts splatted arguments. +- `--interactive` now works with `--compile` and `--bare`. +- Renamed `--nodes` option and `.nodes` method to `--ast`/`.ast`. +- Fixed [the performance bug](https://github.com/jashkenas/coffee-script/issues/1033) wrt long method chains. +- Quit supporting Node.js 0.3.x or lower. + +### 0.3.2 +- Unrestricted ADI for identifiers beyond `@` and `::`. +- Expanded property shorthands beyond `@foo`. +- Added `typeof!`, which inspects the internal _[[Class]]_ property. +- Added shebang support. +- REPL results now evaluate more intuitively. +- Disallowed whitespace mixup for indentations. + +### 0.3.1 +- `debugger` now works anywhere. +- Revised heregex flag syntax: `///#{x}#{y}///?` -> `RegExp('' + x, y);` +- Removed `Coco.eval`. +- Made _extras/coco.js_ work as a mini-compiler on WSH. +- Added _extras/mode-coco.js_, an editing mode for [Ace](http://ace.ajax.org). +- Added `--json` option. + +### 0.3.0 + +#### Pure Additions +- Added _backcall_, a sugar to flatten nested callbacks. +- `do` block can now work as a pair of normal parentheses. +- Improved _ACI_ (automatic comma insertion): `f {} [] x` -> `f({}, [], x);` +- Improved _ADI_ (automatic dot insertion): `@@0'!'` -> `arguments[0]['!'];` +- Multiline block on the RHS of object property now works as an implicit array. +- Heregexes now support dynamic flags: `/// x #{? y } ///` -> `RegExp('x', y);` +- Enabled compound _accessigns_: `a.+=b` -> `a += a.b;` +- `...` in array destructuring (same as `...[]`) now skips items rather than `slice`ing them. ([coffee#870](https://github.com/jashkenas/coffee-script/issues/870)) +- Compilation errors now report line numbers. +- `Coco` object now emits more events for use with `--require`. + +#### Incompatible Changes +- `=>` -> `~>` +- `&.` -> `~.` +- Braceless objects no longer consume property shorthands. + ([coffee#618](https://github.com/jashkenas/coffee-script/issues/618)) +- Indentations within non-here strings are now stripped. +- [Fixed](https://github.com/jashkenas/coffee-script/issues/1050) + block comment syntax to good ol' `/* */`. +- `@0` is now `this[0]` rather than `arguments[0]`. + +### 0.2.2 +- `is not` is the new `isnt`. +- `@'++'` is now valid as a shorthand for `@['++']`. +- Commas between primitive values are now optional. +- _coke_ now automatically aliases tasks. +- _extras/coco.js_ now works as a Gecko JS Module. +- Grouped documentation suite into _doc/_ for portability. +- Rewrote _src/optparse.co_. + +### 0.2.1 +- Added numeric ranges. +- Destructuring assignments can now specify default values using logical operators. + Default arguments syntax has been changed accordingly. + (`(a || b) ->` instead of `(a ||= b) ->`) +- `do` now performs special conversions against function literals with parameters, + making it work as pseudo-`let` and Coffee 1.0.0 compliant. +- Allowed `for i from x then` as a sugar for `for i from 0 til x then`. +- Disallowed duplicate formal arguments. +- Improved syntax-highlight in _src/index.html_. + +### 0.2.0 +- Version bump for Xmas, in concert with [Coffee 1.0.0](http://news.ycombinator.com/item?id=2037801). +- `@@` is now a shorthand for `arguments`. +- `do` can now indicate a call against indented arguments. +- `and` and `or` now close implicit calls, making you write even less parens: + `f x and g y or z` -> `f(x) && g(y) || z;` +- `catch`'s variable declaration is no longer required. +- `a<[ b c ]>` is now equivalent to `a[\b, \c]` (was `a(\b, \c)`). +- `case` now requires brackets to have multiple conditions. +- Added `--nodejs` option. See [coffee#910](https://github.com/jashkenas/coffee-script/issues/910). +- Renamed `--stdio` to `--stdin`. + +### 0.1.6 +- Added character/word literal: + `\C + \++` -> `'C' + '++';` +- Retrieving multiple properties at once is now possible: + `a[b, c]` -> `[a[b], a[c]];` +- Destructuring into an object's properties is now possible: + - `a[b, c] = d` -> `a[b] = d[0], a[c] = d[1];` + - `a{b, c} = d` -> `a.b = d.b, a.c = d.c;` +- Compound assignments can now destructure: + `[@a, @b] /= c` -> `this.a /= c[0], this.b /= c[1];` + +### 0.1.5 +- Conditional control structures can now be anaphoric; + `that` within `if`, `while` or `case` block now refers to the condition value. +- Decimal numbers can now have arbitrary trailing alphabets as comments. + e.g. `9times`, `1.5s` +- Added `<<<`/`<<<<` as aliases to `import`/`import all` +- non-ASCII identifiers are now allowed. + +### 0.1.4 +- `.` and its families can now be used with numbers and strings, instead of `[]`. + `a.0.'0'` compiles to `a[0]['0']`. +- Added syntax for cloning objects; + `obj{key:val}` acts like a simple version of ES5 `Object.create`, + creating a prototypal child of `obj` and assigning to `.key` with `val`. +- default arguments can now choose to use `||`/`&&`. +- `super` under a class block now refers to the superclass. +- _.coffee_ extension is no longer supported. + +### 0.1.3 +- Compilation now prefers single quotes. +- AST now compiles faster, roughly 1.4 times than 0.1.2. +- `[]`/`{}` can now be safely used as an placeholder within array destructuring. +- Improved `--nodes` output. + +### 0.1.2 +- `...` is now prefix. +- `{0: first, (*-1): last} = array` now works. +- Added `--lex` to the `coco` utility. Removed `--lint`. +- _src/_ now has [doc view](http://satyr.github.io/coco/src/). + +### 0.1.1 +Release.