<commit_before>---
title: Ember.js 1.9.0 and 1.10 Beta Released
author: <NAME>
tags: Releases, Recent Posts
---

We are pleased to announce the release of both Ember.js 1.9.0 and the
first beta in the 1.10 series. This comes as the ninth cycle of our
release process that began just after 1.0 was released.

The 1.9 release represents the effort of at least 52 contributors across over 436 commits.

## The Road to Ember 2.0

In early November Tom, Yehuda, and the Ember.js Core Team shared [The Road to Ember 2.0](https://github.com/emberjs/rfcs/pull/15).
This RFC document acts as a map for the next several releases of Ember.js.

Ember.js 1.9 introduces several important deprecations that signal upcoming changes. Additionally, many view-layer internals are
refactored to take advantage of the "streams" observation pattern.

Ember.js 1.10 (beta) begins a series of releases that will
introduce new APIs while deprecating ones to be removed in 2.0.

To that end, and with much excitement, **we are extremely pleased to announce the introduction
of the HTMLBars templating engine into Ember.js 1.10**. This new rendering pipeline
marks a significant milestone for the framework, and by maintaining
complete API compatibility it demonstrates our commitment to stability without stagnation.

## New Features and Deprecations in Ember.js 1.9

#### Handlebars 2.0

As [announced in October](http://emberjs.com/blog/2014/10/16/handlebars-update.html), Ember.js 1.9
adds support for Handlebars 2.0 templates and removes support for Handlebars 1.x templates. This
change does not affect the template syntax or public API of Ember applications.

Projects using an Ember-CLI version less than 0.1.5 will require a bump
of the Handlebars dependency version:

```
bower install --save handlebars#2.0.0
```

Additionally the template pre-compiler (installed via npm)
will require an update:

```
npm uninstall --save-dev broccoli-ember-hbs-template-compiler
npm install --save-dev ember-cli-htmlbars
```

Non-CLI applications will likewise require a bump of their Handlebars dependency version.

#### Streams

Data-binding in Ember.js has traditionally been based on the concept of a key-value
observer. In Ember 1.x, KVO observers fire immediately upon the change of a value,
giving them performance characteristics that cannot be changed until Ember 2.0. In
comparison, streams distinguish change notification from value calculation. The value of
a stream can be described as "lazy", as is not computed until needed.

The addition of streams to Ember and their use throughout the view layer
improves the performance of rendering, simplifies many helpers, and prepares
Ember's codebase for HTMLBars.

Thanks to [@\_mmun](https://twitter.com/_mmun), [@ebryn](https://twitter.com/ebryn), and [@krisselden](https://twitter.com/krisselden) who wrote an Ember.js stream
implementation then updated every Handlebars helper to the new API.

#### Activate and Deactivate Events

Ember.js routes have long supported an `activate` and `deactivate` hook.
For example:

```js
// app/routes/index.js
export default Ember.Route.extend({
  activate: function(){
    collectAnalytics();
  }
});
```

Ember.js 1.9 introduces corresponding events for these hooks.

```js
// app/routes/index.js
export default Ember.Route.extend({
  collectAnalytics: function(){
    collectAnalytics();
  }.on('activate')
});
```

Thanks to [@pangratz](https://twitter.com/pangratz) for the addition of this feature.

#### pauseTest

When debugging an Ember acceptance test, it can be helpful to
pause and inspect the DOM or application state.
Ember.js 1.9 adds a new test helper for indefinitely pausing
test execution.

```javascript
test('clicking login authenticates', function(){
  visit('/');
  pauseTest();
  // The test will never proceed to execute this click
  click('a:contains(Login)');
});
```

Thanks to [@katiegengler](https://twitter.com/katiegengler) for the addition of this feature.

#### key-up and key-down actions

The `{{input}}` and `{{textarea}}` helpers in Ember emit several
actions, including `enter`, `insert-newline`, `escape-press`, `focus-in`,
`focus-out`, and `key-press`.

This release introduces `key-up` and `key-down` actions. For example:

```handlebars
{{! call the `validateName` action on the current controller
    or component scope: }}<commit_msg>Amend the 1.9 block post * Show the `pauseTest` test helper being used with `return`<commit_after>---
title: Ember.js 1.9.0 and 1.10 Beta Released
author: <NAME>
tags: Releases, Recent Posts
---

We are pleased to announce the release of both Ember.js 1.9.0 and the
first beta in the 1.10 series. This comes as the ninth cycle of our
release process that began just after 1.0 was released.

The 1.9 release represents the effort of at least 52 contributors across over 436 commits.

## The Road to Ember 2.0

In early November Tom, Yehuda, and the Ember.js Core Team shared [The Road to Ember 2.0](https://github.com/emberjs/rfcs/pull/15).
This RFC document acts as a map for the next several releases of Ember.js.

Ember.js 1.9 introduces several important deprecations that signal upcoming changes. Additionally, many view-layer internals are
refactored to take advantage of the "streams" observation pattern.

Ember.js 1.10 (beta) begins a series of releases that will
introduce new APIs while deprecating ones to be removed in 2.0.

To that end, and with much excitement, **we are extremely pleased to announce the introduction
of the HTMLBars templating engine into Ember.js 1.10**. This new rendering pipeline
marks a significant milestone for the framework, and by maintaining
complete API compatibility it demonstrates our commitment to stability without stagnation.

## New Features and Deprecations in Ember.js 1.9

#### Handlebars 2.0

As [announced in October](http://emberjs.com/blog/2014/10/16/handlebars-update.html), Ember.js 1.9
adds support for Handlebars 2.0 templates and removes support for Handlebars 1.x templates. This
change does not affect the template syntax or public API of Ember applications.

Projects using an Ember-CLI version less than 0.1.5 will require a bump
of the Handlebars dependency version:

```
bower install --save handlebars#2.0.0
```

Additionally the template pre-compiler (installed via npm)
will require an update:

```
npm uninstall --save-dev broccoli-ember-hbs-template-compiler
npm install --save-dev ember-cli-htmlbars
```

Non-CLI applications will likewise require a bump of their Handlebars dependency version.

#### Streams

Data-binding in Ember.js has traditionally been based on the concept of a key-value
observer. In Ember 1.x, KVO observers fire immediately upon the change of a value,
giving them performance characteristics that cannot be changed until Ember 2.0. In
comparison, streams distinguish change notification from value calculation. The value of
a stream can be described as "lazy", as is not computed until needed.

The addition of streams to Ember and their use throughout the view layer
improves the performance of rendering, simplifies many helpers, and prepares
Ember's codebase for HTMLBars.

Thanks to [@\_mmun](https://twitter.com/_mmun), [@ebryn](https://twitter.com/ebryn), and [@krisselden](https://twitter.com/krisselden) who wrote an Ember.js stream
implementation then updated every Handlebars helper to the new API.

#### Activate and Deactivate Events

Ember.js routes have long supported an `activate` and `deactivate` hook.
For example:

```js
// app/routes/index.js
export default Ember.Route.extend({
  activate: function(){
    collectAnalytics();
  }
});
```

Ember.js 1.9 introduces corresponding events for these hooks.

```js
// app/routes/index.js
export default Ember.Route.extend({
  collectAnalytics: function(){
    collectAnalytics();
  }.on('activate')
});
```

Thanks to [@pangratz](https://twitter.com/pangratz) for the addition of this feature.

#### pauseTest

When debugging an Ember acceptance test, it can be helpful to
pause and inspect the DOM or application state.
Ember.js 1.9 adds a new test helper for indefinitely pausing
test execution.

```javascript
test('clicking login authenticates', function(){
  visit('/');
  return pauseTest();
  // The test will never proceed to execute this click
  click('a:contains(Login)');
});
```

Thanks to [@katiegengler](https://twitter.com/katiegengler) for the addition of this feature.

#### key-up and key-down actions

The `{{input}}` and `{{textarea}}` helpers in Ember emit several
actions, including `enter`, `insert-newline`, `escape-press`, `focus-in`,
`focus-out`, and `key-press`.

This release introduces `key-up` and `key-down` actions. For example:

```handlebars
{{! call the `validateName` action on the current controller
    or component scope: }}
{'fraction_non_alphanumeric': 0.0920902666970595, 'fraction_numerical': 0.015500341919307043, 'mean_word_length': 4.474111041796632, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 12, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2550644', 'n_tokens_mistral': 2601, 'n_tokens_neox': 2417, 'n_words': 1116}