{"action":"created","issue":{"url":"https://api.github.com/repos/emberjs/ember.js/issues/12666","labels_url":"https://api.github.com/repos/emberjs/ember.js/issues/12666/labels{/name}","comments_url":"https://api.github.com/repos/emberjs/ember.js/issues/12666/comments","events_url":"https://api.github.com/repos/emberjs/ember.js/issues/12666/events","html_url":"https://github.com/emberjs/ember.js/pull/12666","id":119809944,"number":12666,"title":"[BUGFIX release] Prevent triggering V8 memory leak bug through registry / resolver access.","user":{"login":"dgeb","id":29122,"avatar_url":"https://avatars.githubusercontent.com/u/29122?v=3","gravatar_id":"","url":"https://api.github.com/users/dgeb","html_url":"https://github.com/dgeb","followers_url":"https://api.github.com/users/dgeb/followers","following_url":"https://api.github.com/users/dgeb/following{/other_user}","gists_url":"https://api.github.com/users/dgeb/gists{/gist_id}","starred_url":"https://api.github.com/users/dgeb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgeb/subscriptions","organizations_url":"https://api.github.com/users/dgeb/orgs","repos_url":"https://api.github.com/users/dgeb/repos","events_url":"https://api.github.com/users/dgeb/events{/privacy}","received_events_url":"https://api.github.com/users/dgeb/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-12-01T21:17:26Z","updated_at":"2015-12-01T22:28:17Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/emberjs/ember.js/pulls/12666","html_url":"https://github.com/emberjs/ember.js/pull/12666","diff_url":"https://github.com/emberjs/ember.js/pull/12666.diff","patch_url":"https://github.com/emberjs/ember.js/pull/12666.patch"},"body":"This fix changes the expectations of Registry to accept a `resolver` \r\nthat’s an object with a `resolve` method instead of a straight function.\r\n\r\nThis allows us to avoid closing over access to a resolver object inside \r\na function. It also allows us to avoid setting functions which shadow \r\nprototype functions unnecessarily.\r\n\r\nSetting `Registry#resolver` to a function is still allowed but \r\ndeprecated, regardless of whether it’s through a constructor option or \r\nvia an instance override. The `resolver` function will be converted into\r\nan object with a `resolve` method and will present a single deprecation \r\nwarning on first access.\r\n\r\nThis fix also eliminates the need for application instances to override\r\ntheir registry’s `normalizeFullName` and `makeToString` methods. \r\nInstead, the fallback registry will be checked when evaluating these\r\nmethods before returning the defaults. Again, this avoids the need to\r\noverride instance functions that shadow prototype functions.\r\n\r\n[Fixes #12618]\r\n\r\n/cc @rwjblue @stefanpenner"},"comment":{"url":"https://api.github.com/repos/emberjs/ember.js/issues/comments/161116625","html_url":"https://github.com/emberjs/ember.js/pull/12666#issuecomment-161116625","issue_url":"https://api.github.com/repos/emberjs/ember.js/issues/12666","id":161116625,"user":{"login":"dgeb","id":29122,"avatar_url":"https://avatars.githubusercontent.com/u/29122?v=3","gravatar_id":"","url":"https://api.github.com/users/dgeb","html_url":"https://github.com/dgeb","followers_url":"https://api.github.com/users/dgeb/followers","following_url":"https://api.github.com/users/dgeb/following{/other_user}","gists_url":"https://api.github.com/users/dgeb/gists{/gist_id}","starred_url":"https://api.github.com/users/dgeb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dgeb/subscriptions","organizations_url":"https://api.github.com/users/dgeb/orgs","repos_url":"https://api.github.com/users/dgeb/repos","events_url":"https://api.github.com/users/dgeb/events{/privacy}","received_events_url":"https://api.github.com/users/dgeb/received_events","type":"User","site_admin":false},"created_at":"2015-12-01T22:28:17Z","updated_at":"2015-12-01T22:28:17Z","body":"Ok, thanks for the review @rwjblue. I just eliminated the ability to lazily assign `resolver` as a function (which can now only be done through the constructor)."}}