# Changelog > **Tags:** > - [Breaking Change] > - [Spec Compliancy] > - [New Feature] > - [Bug Fix] > - [Documentation] > - [Internal] > - [Polish] > Semver Policy: https://github.com/babel/babylon#semver _Note: Gaps between patch versions are faulty, broken or test releases._ See the [Babel Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md) for the pre-6.8.0 version Changelog. ## v6.11.3 (2016-10-01) ### :eyeglasses: Spec Compliancy Add static errors for object rest (#149) ([@danez](https://github.com/danez)) > https://github.com/sebmarkbage/ecmascript-rest-spread Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right. ```js let { x, y, ...z } = { x: 1, y: 2, z: 3 }; // x = 1 // y = 2 // z = { z: 3 } ``` #### New Syntax Errors: **SyntaxError**: The rest element has to be the last element when destructuring (1:10) ```bash > 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3}; | ^ # Previous behavior: # x = { x: 1, y: 2, z: 3 } # y = 2 # z = 3 ``` Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think. **SyntaxError**: Cannot have multiple rest elements when destructuring (1:13) ```bash > 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3}; | ^ # Previous behavior: # x = 1 # y = { y: 2, z: 3 } # z = { y: 2, z: 3 } ``` Before y and z would just be the same value anyway so there is no reason to need to have both. **SyntaxError**: A trailing comma is not permitted after the rest element (1:16) ```js let { x, y, ...z, } = obj; ``` The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense. --- get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell)) ```js // valid function something({ set = null, get = null }) {} ``` ## v6.11.2 (2016-09-23) ### Bug Fix - [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo ```js // regression with duplicate export check SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13) 20 | 21 | export const { rhythm } = typography; > 22 | export const { TypographyStyle } = typography ``` Bail out for now, and make a change to account for destructuring in the next release. ## 6.11.1 (2016-09-22) ### Bug Fix - [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez ```javascript export toString from './toString'; ``` ```bash `toString` has already been exported. Exported identifiers must be unique. (1:7) > 1 | export toString from './toString'; | ^ 2 | ``` ## 6.11.0 (2016-09-22) ### Spec Compliancy (will break CI) - Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo ```js // Only one default export allowed per module. (2:9) export default function() {}; export { foo as default }; // Only one default export allowed per module. (2:0) export default {}; export default function() {}; // `Foo` has already been exported. Exported identifiers must be unique. (2:0) export { Foo }; export class Foo {}; ``` ### New Feature (Syntax) - Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88 ```js // AST interface ClassProperty <: Node { type: "ClassProperty"; key: Identifier; value: Expression; computed: boolean; // added } ``` ```js // with "plugins": ["classProperties"] class Foo { [x] ['y'] } class Bar { [p] [m] () {} } ``` ### Bug Fix - Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper ```js declare class X { a: number; static b: number; // static c: number; // this was being marked as static in the AST as well } ``` ### Polish - Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88 ```js // Used to error with: // SyntaxError: Assigning to rvalue (1:0) // Now: // Invalid left-hand side in assignment expression (1:0) 3 = 4 // Invalid left-hand side in for-in statement (1:5) for (+i in {}); ``` ### Internal - Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez - Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo ## 6.10.0 (2016-09-19) > We plan to include some spec compliancy bugs in patch versions. An example was the multiple default exports issue. ### Spec Compliancy * Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu) > It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists) For example: ```js // this errors because it uses destructuring and default parameters // in a function with a "use strict" directive function a([ option1, option2 ] = []) { "use strict"; } ``` The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to. ### New Feature * Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer) Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8 Looks like: ```js var a : {| x: number, y: string |} = { x: 0, y: 'foo' }; ``` ### Bug Fixes * Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder) * Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper) * Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper) ### Misc * Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder) * Fix Contributing guidelines [skip ci] (Daniel Tschinder) ## 6.9.2 (2016-09-09) The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller. ## 6.9.1 (2016-08-23) This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops. ### Bug Fixes - Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez - Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez - Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper - Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez - Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez ## 6.9.0 (2016-08-16) ### New syntax support - Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer (Be aware that React is not going to support this syntax) ```js