惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News | PayPal Newsroom
Application and Cybersecurity Blog
Application and Cybersecurity Blog
O
OpenAI News
S
Security @ Cisco Blogs
宝玉的分享
宝玉的分享
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
TaoSecurity Blog
TaoSecurity Blog
Help Net Security
Help Net Security
Latest news
Latest news
NISL@THU
NISL@THU
S
Security Affairs
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
AI
AI
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
AWS News Blog
AWS News Blog
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
I
InfoQ
Schneier on Security
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
The Exploit Database - CXSecurity.com
IT之家
IT之家
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
腾讯CDC
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
N
News and Events Feed by Topic
L
LINUX DO - 最新话题
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
H
Heimdal Security Blog
S
SegmentFault 最新的问题

Ember.js Blog

Ember 7.0 Released Announcing the Official TypeScript Types Public Preview Accessibility Working Group Update The 2020 Ember Roadmap Countdown to The New Year - Built-in Addons Countdown to The New Year - Ember Exam Countdown to The New Year - Ember Code Snippet Countdown to The New Year - Ember Changeset Countdown to The New Year - Ember In Viewport Countdown to The New Year - Ember CLI Update Countdown to The New Year - Ember Template Invocation Location Countdown to The New Year - Ember CLI TypeScript Countdown to The New Year - Ember Bootstrap and Ember Paper Countdown to The New Year - Ember CSS Modules Countdown to The New Year - Ember Mapbox GL Countdown to The New Year - Ember Shepherd Countdown to The New Year - Ember Template Lint Countdown to The New Year - Ember Composable Helpers Countdown to The New Year - Ember Leaflet Countdown to The New Year - Ember Intl Countdown to The New Year - Ember Test Selectors Countdown to The New Year - Ember Power Select Countdown to The New Year - Ember Simple Auth Countdown to The New Year - Ember SVG Jar Countdown to The New Year - Ember Page Title Countdown to The New Year- Ember A11Y Testing Countdown to The New Year - Ember Angle Brackets Codemod Countdown to The New Year - Ember CLI Sass Countdown to The New Year - Ember Animated Countdown to The New Year - Ember Auto Import Countdown to The New Year - Ember Concurrency Countdown to The New Year - Ember Tether Countdown to The New Year - Ember Modifier Countdown to The New Year - Ember CLI Mirage Countdown to The New Year - Ember Sortable Coming Soon in Ember Octane - Part 5: Glimmer Components Coming Soon in Ember Octane - Part 4: Modifiers Coming Soon in Ember Octane - Part 3: Tracked Properties Coming Soon in Ember Octane - Part 2: Angle Brackets & Named Arguments Preview Weekend: 2019 Ember Community Survey Coming Soon in Ember Octane - Part 1: Native Classes First Annual DecEmber Event! 2018 Ember Community Survey 2017 Ember Community Survey Announcing The Glimmer 2 Alpha Upcoming deprecation of baseURL in Ember CLI 2.7 2016 Ember Community Survey Announcing Ember Core Team Face to Face, January 2016 Ember.js 1.13.0 and 2.0 Beta Released Another Ember 2.x Status Update Ember.js 1.12 and 1.13 Beta (Glimmer!) Released Ember.js 1.11.1 Released Ember.js 1.11.0 and 1.12 Beta Released Ember.js 1.10.0 and 1.11 Beta Released Compiling templates with Ember 1.10 Core Team Meeting Minutes - 2014/08/01 Core Team Meeting Minutes - 2014/08/14 Core Team Meeting Minutes - 2014/09/12 Cleaning Up Github Issues Core Team Meeting Minutes - 2014/07/11 Core Team Meeting Minutes - 2014/07/25 Core Team Meeting Minutes - 2014/06/13 Core Team Meeting Minutes - 2014/06/20 Core Team Meeting Minutes - 2014/06/27 Core Team Meeting Minutes - 2014/06/06 Core Team Meeting Minutes - 2014/04/25 Core Team Meeting Minutes - 2014/04/04 Ember 1.5.0 and 1.6 Beta Released Core Team Meeting Minutes - 2014/03/07 Core Team Meeting Minutes - 2014/03/14 Core Team Meeting Minutes - 2014/03/21 Core Team Meeting Minutes - 2014/02/28 Core Team Meeting Minutes - 2014/02/21 Core Team Meeting Minutes - 2014/02/14 Ember 1.4.0 and 1.5 Beta Released Core Team Meeting Minutes - 2014/01/27 Core Team Meeting Minutes - 2014/01/31 Core Team Meeting Minutes - 2014/02/07 Core Team Meeting Minutes - 2014/01/17 Core Team Meeting Minutes - 2014/01/03 Ember 1.3.0 and 1.4 Beta Released Core Team Meeting Minutes - 2013/12/20 Core Team Meeting Minutes - 2013/12/06 Ember 1.2.0 and 1.3 Beta Released Ember 1.1.2 Released Ember 1.1.1 and 1.2 Beta Released Ember 1.0 Released Ember 1.0 RC8 Released Ember 1.0 RC7 Released Ember 1.0 RC6.1, RC5.1, RC4.1, RC3.1, RC2.1 RC1.1 Released Ember 1.0 RC6 Ember 1.0 RC5 Ember 1.0 RC4 Ember 1.0 RC3 Announcing the Ember.js Security Policy Ember 1.0 RC2 Ember 1.0 RC Ember 1.0 Prerelease 2 Ember 1.0 Prerelease
Glimmer
2015-05-05 · via Ember.js Blog

After months of work, Glimmer is landing in Canary today.

What this means:

  • The test suite passes.
  • We have tested Glimmer on our own apps, and, for the most part, apps boot and run correctly.
  • There are still known issues (see below), including with the test helpers.
  • At this point, we need community help to identify compatibility issues not covered by the test suite.
  • We expect to continue improving compatibility with the pre-Glimmer engine for some time, as new issues come to light.

Glimmer is the new rendering engine the Ember community has been working on for the past several months. It is the first ground-up change to the templating engine since SproutCore 2.0, and takes advantage of the groundwork laid by HTMLBars to dramatically improve re-rendering performance. It also sets the stage for more performance improvements during the 2.x series, and React-inspired improvements to the Ember programming model. Best of all, we are landing Glimmer in Ember 1.13, compatible with the full public API of Ember 1.x.

It's also worth noting that while our apps feel faster, not every performance benchmark will necessarily show marked improvement. There will be more on this below, but the Glimmer refactor focused primarily on dramatic improvements to re-rendering performance and programming model improvements.

Initial render of component-heavy pages shows some improvement in most of our tests, but you should expect to see the biggest improvements when re-rendering lists, especially when you are not using deprecated functionality.

Once we land Glimmer, you will probably see a variety of different benchmarks testing various aspects of Ember. We expect to see benchmarks showing that there are still pathologically slow scenarios in Ember, especially in areas that we did not focus on improving. We expect to continue to improve performance across Ember throughout the 2.x series, and discuss that more below.

Also note that while we took great pains to support features present in Ember 1.12 (including many long-deprecated features), that compatibility often comes with significant performance costs. In some cases, seemingly similar constructs (e.g. {{#each posts as |post|]} vs. {{#each posts itemController='post' as |post|}}) have significantly different internal implementation, and the Ember 2.0 version has vastly better performance.

Finally, there will be an upcoming guide in the next week or so that describes the new features of the Glimmer engine (attrs, new lifecycle hooks, keys in #each), but at the moment we are focusing on compatibility with 1.x and testing the 1.x API with existing applications.

Please follow these instructions to test Ember-CLI apps with Canary:

Known Issues

There are several known issues that you should consider when evaluating Glimmer:

  • There are still a few memory leaks that we have identified and are quickly addressing.
  • The concept of controller in templates and actions in Ember 1.x was fairly nuanced. Glimmer started with a simpler model and layered compatibility on top. There are known gaps in the compatibility layer that we are still addressing.
  • There are still a number of issues in the testing helpers (especially the faux unit tests that use "isolated containers") that are causing apps that work correctly to fail tests. We are working to fix the test helpers, and should have that work done before we release 1.13 beta.
  • There are likely a number of not-yet-known compatibility issues in Glimmer. You should assume that the vast majority of issues you encounter when testing Glimmer over the next few weeks will be addressed before the final release.
  • The compatibility layer is quite slow in some areas, making the overall Glimmer engine slower than we would like. We have plans to improve overall performance through the canary and beta cycle, and then in the 2.0 release cycle.
  • In general, the Glimmer effort was an attempt to improve re-rendering performance, especially in large lists. It also laid the groundwork for significant performance work in initial render and throughout the framework, but that work is not yet done. Expect to see continued performance improvements in Ember throughout the 2.x cycle as a result of this change.

The most critical of these caveats should be addressed before we release 1.13 beta, and we expect to continue work on the remaining issues throughout the 1.13 beta cycle.

Because of the magnitude of this change, and the proximity to the Ember 2.0 "cruft removal" pass, we plan to aggressively fix reported bugs during the 1.13 beta period. There will be another post describing our 1.13 and 2.0 release plans with more precision in the next few weeks.

Performance Gains

The biggest performance gains in Glimmer come from moving to a simpler rendering model, built on top of HTMLBars.

First, this allowed us to remove all internal views for constructs like {{foo}}, {{#if bar}} and even in {{#each posts as |post|}}. This view removal has an impact on initial render, because these constructs are very common in real-world templates.

Second, as we have discussed extensively, this allows us to significantly improve the performance of re-rendering, which makes it practical to re-render lists with entirely new arrays with very good performance. Previously, achieving reasonable performance was very difficult, and even when possible, came with significant bookkeeping overhead.

Interestingly, we have found that when testing real apps, the performance gains are much more widespread than we expected, in large part because of the simplification of the overall model.

Glimmer's performance in real applications has pleasantly surprised us, exceeding the improvements we've seen in benchmarks designed to stress-test pathological cases.

When upgrading to Glimmer, please pay attention to the real-world performance of your application in production mode and after clearing any deprecations with performance warnings.

Deprecated Features

Throughout the 1.x series, Ember has deprecated features we intended to remove in 2.0. That process has continued with Ember 1.13, which will contain Glimmer.

However, it's worth noting that Glimmer is the first major change to many parts of the view layer since SproutCore 2! As a result, perfect compatibility, especially in private APIs, was more challenging.

During the process of building Glimmer, we found various semantics of "controller"s to be the most challenging. For the most part, this is because the concept of controller has a number of different meanings depending on context (routes, {{render}}, {{#each posts itemController='post'}}, {{#each posts itemController='post' as |post|}}, {{#with someController}}, etc.).

Controllers and components both manage a template's "context" (called "self" in Glimmer) and serve as a target for actions. Mirroring these semantics, which are effectively derived from implementation details of Ember 1.x's rendering engine, has been a challenge. We're confident they are very close, but encourage you to open an issue if they have changed.

Glimmer, through HTMLBars, has a much clearer concept of "scope", and features like {{yield}} work directly with that scope object. We were able to get the Ember test suite passing by implementing the old semantics on top of the new scope concept, but we are aware that we have gaps in our implementation.

Please let us know if you find controller semantics that we have implemented incorrectly. Bug reports would help, JSBins would help more, and pull requests with failing tests would help even more.

Finally, for the best experience with Glimmer, you should try to move your application away from itemController, {{render}} and other constructs that manipulate the controller from the template. We know that this is not always possible (our applications all still make use of some cases of these features), which is why we worked so hard on compatibility.

That said, you'll get better performance and a quicker upgrade path to 2.0 if you work on eliminating uses of these features soon. Implementing them correctly added enough complexity that we will want to move somewhat aggressively in 2.x to enable us to further improve performance.