Outlander PHEV Bounces Back After several months in the red, sales bounced back in July, growing 23% YoY to 3.501 units, making it the best selling month in tem months. This sudden bump in sales is due to the launch of the restyled Mitsubishi Outlander PHEV, which sold 2.383 units, a number that sets a new monthly record for a single model and places it in #30 in the general ranking.
With the Leaf selling half (694 units) of what it did a year ago, the Outlander PHEV is back at the race for #1, it is still 875 units behind Nissan's hatch, but if the current leader doesn't rebound (The rumoured 30kWh...), Mitsu will take its restyled plug-in SUV to the leadership before year end. Looking at the brands ranking, Nissan (44%) lost share over Mitsubishi (41%), and next month might even see a leadership change.
A final mention to the FCEV Toyota Mirai, 41 units were registered last month, not much, but it's a starting point, let's see how things develop from here.
Pl
Japan
July
2015
%
Pl '14
1
Nissan Leaf
694
6.185
41
1
2
Mitsubishi Outlander PHEV
2.383
5.310
35
2
3
Toyota Prius Plug-In e)
130
1.110
7
3
4
BMW i3 e)
100
700
5
6
5
Mitsubishi I-Miev
73
414
3
4
6 7 8 9 10 10
Tesla Model S e) Nissan e-NV200 / Evalia Mitsubishi Minicab Miev Mit. Minicab Miev Truck BMW i8 e) Honda Accord Plug-In
Roughly every six weeks, we create a new branch of V8 as part of our release process. Each version is branched from V8’s git master immediately before Chrome branches for a Chrome Beta milestone. Today we’re pleased to announce our newest branch, V8 version 4.6, which will be in beta until it is released in coordination with Chrome 46 Stable. V8 4.6 is filled will all sorts of developer-facing goodies, so we’d like to give you a preview of some of the highlights in anticipation of the release in several weeks.
The spread operator makes it much more convenient to work with arrays. For example it makes imperative code obsolete when you simply want to merge arrays.
// Merging arrays // Code without spread operator let inner = [3, 4]; let merged = [0, 1, 2].concat(inner, [5]);
// Code with spread operator let inner = [3, 4]; let merged = [0, 1, 2, ...inner, 5];
Another good use of the spread operator to replace apply().
// Function parameters stored in an array // Code without spread operator function myFunction(a, b, c) { console.log(a); console.log(b); console.log(c); } let argsInArray = ["Hi ", "Spread ", "operator!"]; myFunction.apply(null, argsInArray);
// Code with spread operator function myFunction (a,b,c) { console.log(a); console.log(b); console.log(c); }
let argsInArray = ["Hi ", "Spread ", "operator!"]; myFunction(...argsInArray);
new.target
new.target is one of ES6's features designed to improve working with classes. Under the hood it’s actually an implicit parameter to every function. If a function is called with the keyword new, then the parameter holds a reference to the called function. If new is not used the parameter is undefined.
In practice, this means that you can use new.target to figure out whether a function was called normally or constructor-called via the new keyword.
function myFunction() { if (new.target === undefined) { throw "Try out calling it with new."; } console.log("Works;"); }
// Will break myFunction();
// Will work let a = new myFunction();
When ES6 classes and inheritance are used, new.target inside the constructor of a super-class is bound to the derived constructor that was invoked with new. In particular, this gives super-classes access to the prototype of the derived class during construction.
Reduce the jank
Jank can be a pain, especially when playing a game. Often, it's even worse when the game features multiple players. oortonline.gl is a WebGL benchmark that tests the limits of current browsers by rendering a complex 3D scene with particle effects and modern shader rendering. The V8 team set off in a quest to push the limits of Chrome’s performance in these environments. We’re not done yet, but the fruits of our efforts are already paying off. Chrome 46 shows incredible advances in oortonline.gl performance which you can see yourself below.
TypedArrays are heavily used in rendering engines such as Turbulenz (the engine behind oortonline.gl). For example, engines often create typed arrays (such as Float32Array) in JavaScript and pass them to WebGL after applying transformations.
The key point was optimizing the interaction between the embedder (Blink) and V8.
There’s no need to create additional handles (that are also tracked by V8) for typed arrays when they are passed to WebGL as part of a one-way communication.
On hitting external (Blink) allocated memory limits we now start an incremental garbage collection instead of a full one.
Freeing of unused memory chunks is performed on additional threads concurrent to the main thread which significantly reduces the main garbage collection pause time.
The good thing is that all changes related to oortonline.gl are general improvements that potentially affect all users of applications that make heavy use of WebGL.
V8 API
Please check out our summary of API changes. This document gets regularly updated a few weeks after each major release.
Developers with an active V8 checkout can use 'git checkout -b 4.6 -t branch-heads/4.6' to experiment with the new features in V8 4.6. Alternatively you can subscribe to Chrome's Beta channel and try the new features out yourself soon.