Today, the Ember project is releasing Ember.js, Ember Data and Ember CLI
version 2.10.0.
This also kicks off the 2.11 beta cycle for all sub-projects. We encourage our
community (especially addon authors) to help test these beta builds and report
any bugs before they are published as a final release in six weeks' time. The
ember-try addon is a great way to
continuously test your projects against the latest Ember releases.
Starting with this release, we will be publishing a single, unified release
blog post summarizing all the changes for all three sub-projects in one place.
You can read more about our general release process here:
Ember.js
Ember.js is the core framework for building ambitious web applications.
Changes in Ember.js 2.10
Ember.js 2.10 is the first release to include Glimmer 2,
a ground-up rewrite of Ember's rendering engine.
Despite all the changes that took place under-the-hood, we are committed to
making this a drop-in, completely backwards compatible upgrade for virtually
all Ember.js users. Over the past few months, we have been hard at work
to make this a reality.
Thanks to everyone in the community who took the time to test their apps and
addons against the Glimmer 2 alpha and beta builds, this has been one of the
most rigorously tested releases in the history of the Ember project. We are
quite confident that upgrade will go smoothly for most apps. However, if you
encounter any issues, please do report them to the issue tracker.
While this release is focused on compatibility and does not expose any new
capabilities, the new rendering engine has unlocked a lot of new frontiers
for us, creating a much better foundation for adding new features as well as
room for future performance impovements. With the initial integration now out
of the way, we are quite excited to return our efforts to those areas in
upcoming releases.
Other notable changes
In addition to the Glimmer 2 integration, a few other notable changes are also
included in this release.
First, Trent Willis, Nathan Hammond
and Alex Speller have contributed a series of
patches to address some long-standing issues and edge cases in the routing
layer, particularly in the area of query params.
Second, thanks to Robert Jackson, we now use
WeakMap
to store object metadata on
browsers that supports them. A pleasant side-effect of this internal change is
that Ember no longer adds an __ember_meta__
property to every object.
Finally, it has come to our attention that it is quite common for developers to
accidentally mutate the arguments passed into a helper. This is problematic as
these objects are often shared or reused, causing subtle issues that are very
difficult to debug.
To help track down these kind of issues, these objects are now frozen
in the debug build before they are passed into helpers. As a result, you will
get an error if you attempt to modify these objects directly. It is recommended
that you clone these objects (e.g. using Object.assign
and Array#slice
)
before making any modifications to them.
(It has been brought to our attention that the last change might have an
unintended consequence.
A fix is being worked on by Matthew Beale. Please
refer to the linked issue for a detailed description and suggested workaround.)
For more details on the changes in Ember.js 2.10, please review the
Ember.js 2.10.0 release page.
Upcoming changes in Ember.js 2.11
Currently, no new features are planned for 2.11. However, there are a few
notable changes:
- Similar to the change to helper arguments, concatenated properties (such as
classNames
andclassNameBindings
) are now frozen
in debug builds to help track down unintended mutations. - The legacy
render
helper (i.e.{{render 'foo'}}
) has been deprecated. - The private
Component#renderToElement
API has also been deprecated.
For more details on the upcoming changes in Ember.js 2.11, please review the
Ember.js 2.11.0-beta.1 release page.
Ember Data
Ember Data is the offical data persistence library for Ember.js applications.
Changes in Ember Data 2.10
Ember Data 2.10 represents the work of more than 10 direct contributors with
over 20 commits.
There have been no user facing changes in Ember Data 2.10. Under the
hood, Chris Thoburn has instrumented
Ember Data with internal tools making it easier to track the
performance of Ember Data. This instrumentation is stripped from
production builds and should have no impact on existing
applications.
Chris also
improved the messaging
around assertions and warnings when an adapter responds with no id
for a record.
For more details on the changes in Ember Data 2.10, please review the
Ember Data 2.10.0 release page.
Upcoming changes in Ember Data 2.11
Ember Data 2.11 is already shaping up to be a big release with many
performance and documentation improvements.
HasMany Computed Property Keys
One of the performance improvements included in Ember Data
2.11 fixes an issue where changes to the records of a
DS.hasMany()
caused unnecessary work. As a result,
Ember Data would over-eagerly invalidate computed
properties that depended on these hasMany
relationships. Due to the
nature of the fix application code depending on a relationship array
without watching the contents of that array may need to be updated. For
example you may need to update computed property keys that depended on
record.someHasManyRelationshipName
to record.someHasManyRelationshipName.[]
.
Deprecations in Ember Data 2.11
Ember Data now issues deprecation warnings for
store#serialize()
. Instead, it is recommended that you use
record.serialize()
in place of
store.serialize(record)
.
store#lookupAdapter()
and store#lookupSerializer()
have also been
deprecated starting in Ember 2.11. These methods were never publicly
documented. In their place we recommend you use store#adapterFor()
and store#serializerFor()
respectively.
store#recordIsLoaded()
is deprecated in favor of
store#hasRecordForId()
, as the logic in these two methods has been
identical since
March 2015.
All of the deprecated methods mentioned above will be supported until
Ember Data 3.0. Until then they will log a deprecation warning to
encourage use of the recommended replacement APIs.
Move ds-improved-ajax
out of beta
channel
The ds-improved-ajax
implemented in
PR #3099 aims to provide
public hooks on the rest
adapter for customizing requests. For example
to specify the HTTP method or
provide custom HTTP headers per request. This feature has been available
in beta builds since the 2.8 beta cycle.
Unfortunately, this feature slipped into the code base without going
though a proper RFC process. Despite being enabled in the beta channel
for a while now, we decided that it should be disabled again in favour
of a feature which has gone though the RFC process and benefited from
valuable community feedback.
We are aware that it is quite rare for a feature to be backed out from
the beta channel but we consider the ability to do so a strength of
our release process. We would like to thank everyone who took the time
to test their applications against the beta channel and we would
highly appreciate your feedback on the proposed replacement to this
functionality in
RFC #171.
For more details on the upcoming changes in Ember Data 2.11, please review the
Ember Data 2.11.0-beta.1 release page.
Ember CLI
Ember CLI is the command line interface for managing and packaging Ember.js
applications.
Upgrading Ember CLI
You may upgrade Ember CLI separately from Ember.js and Ember Data! To upgrade
your projects using yarn
run yarn upgrade ember-cli
. To upgrade your
projects using npm
run npm install --save-dev ember-cli
. After running the
upgrade command run ember init
inside of the project directory to apply the
blueprint changes. You can view those changes for applications here
and addons here.
Changes in Ember CLI 2.10
Ember CLI 2.10 no longer supports Node.js 0.10 per the
Ember Node.js LTS Support policy.
Further, it is the last release which will officially support Node.js 0.12
which will be removed from support at the end of this year.
Please make sure you begin your migration to a newer version of Node.js as soon
as possible.
Sorting of package.json
In order to guarantee consistency with npm
and other tools Ember CLI now
sorts package.json
in accordance with the upstream patterns.
This may result in changes in execution order of the addons in your application
which should be non-breaking. If you experience issues you will
need to specify before
and/or after
in your addon.
Concatenation
Concatenation of assets has been implicit based upon file-system ordering. An
update to broccoli-concat
which changed the walk order of the file system to
guarantee consistency and stable concatenation broke the implicit reliance we
had on that ordering. To ensure that we remain backwards compatible
we have changed our invocation pattern to reproduce the intended behavior.
Child modules without specific ordering will now be sorted lexicographically
inside of your assets.
We also moved to a system-independent line separator
to guarantee that builds are reproducible across different operating systems.
npm
Upgrade
Dan Freeman has updated our bundled npm
dependency
to npm@3
. This will change the resulting node_modules
folder layout inside
of your application when you run ember install
. This will likely only cause
problems if you tried to guess at the path to a module based upon install
behavior. If you need to identify the path to a module inside of the node
JavaScript world be sure you're using require.resolve('module-name');
.
Testing Addons
Ember CLI 2.10 removes Ember.js 1.13 from the default testing matrix in the
addon blueprint. Given that we now have two LTS releases in the Ember.js 2.x
series, we no longer feel that supporting Ember.js 1.13 is a reasonable
default for newly-created addons. You may continue to support Ember.js 1.13 in
your addons by adding it back into the testing matrix.
For more details on the changes in Ember CLI 2.10 and detailed upgrade
instructions, please review the Ember CLI 2.10.0 release page.
Upcoming changes in Ember CLI 2.11
In our continous incremental progress toward making bower
optional inside of
Ember CLI we have moved to include Ember.js itself via
ember-source
–provided via npm
.
In 2.11 we will no longer have any packages provided by bower
in a brand
new Ember.js application!
Ember CLI 2.11 will not officially support Node.js 0.12 per the
Ember Node.js LTS Support policy.
Please make sure you begin your migration to a newer version of Node.js as soon
as possible.
We have a litany of other smaller improvements in this release:
- We bundle a new and improved version of
ember-welcome-page
, the learning
team's addon for providing a quick start introduction for users. - We watch the
vendor
folder by default,
making rebuilds work for changes in that directory. - Stefan Penner made it so we do a better job at cleanup upon exit of Ember CLI
preventing pollution of thetmp
folder inside of your applications. - Robert Jackson dramatically reduced the number of merge steps inside of the build,
speeding up the build process.
For more details on the changes in Ember CLI 2.11.0-beta.1 and detailed upgrade
instructions, please review the Ember CLI 2.11.0-beta.1 release page.
Thank You!
As a community-driven open-source project with an ambitious scope, each of
these releases serve as a reminder that the Ember project would not have been
possible without your continued support. We are extremely grateful to our
contributors for their efforts.