Cocoon 2.2.0 – V8 Update is here!

We have some important updates. The main one is the new Canvas+ Android Javascript V8 virtual machine integration.

Canvas+ Android V8 update

Canvas+ Android uses the v8 Javascript engine internally. We haven’t updated it in a long time as it requires quite a big code update inside Cocoon. As the previous version was a bit old already (v3.5), after the summer we decided to take the time to update v8 to a more recent version (v5.4) and now it’s ready to be used in the latest Canvas+ plugin v2.6.0 that is available in Cocoon v2.2.0.

What can I expect from this update?

The main two things that you’ll notice with this update are:

  • Better performance in JS. This version delivers a number of key improvements in memory footprint and startup speed. These primarily help accelerate initial script execution and reduce page load.
  • ECMAScript ES6 support.

Better performance includes many different specific performance improvements like:

  • TypedArray performance improvements. TypedArrays are heavily used in rendering engines. For example, engines often create typed arrays (such as Float32Array) in JavaScript and pass them to WebGL after applying transformations.
  • Idle garbage collection scheduling. Garbage collection operations are scheduled during idle times on the main thread which unblocks the compositor and results in smoother rendering.
  • Improvements in specific Javascript features: executing loops like for-in, Object.assign, Promise and RegExp instantiation, calling Object.prototype.hasOwnProperty, Math.floor, Math.round and Math.ceil, Array.prototype.push, Object.keys, Array.prototype.join & Array.prototype.toString, Flattening repeat strings e.g. ‘.’.repeat(1000), etc

There are a lot more things, theseare just the main ones. You can read further in the V8 release notes here.

As v2.6.0 includes lots of new features and is quite an update we have also released a new v2.5.x branch release, Canvas+ v2.5.4 that includes the previous V8 version but with all the bug fixes that are also included in v2.6.0 so in case you find any issues with v2.6.0, you can still switch back to v2.5.4.

If you want to use v2.5.4, you’ll need to manually set that Canvas+ plugin version in you project config.xml:

<plugin name="com.ludei.canvasplus.android" spec="2.5.4"/>

The V8 update is a Canvas+ Android only feature.

New Cocoon v2.2.0

We have released a new Cocoon v2.2.0 that includes fixes and updates in all the Cocoon core plugins and Canvas+ v2.6.0. When choosing Cocoon v2.2.0 you’ll be automatically using the updated plugin set. The main plugin improvements are:

  • Canvas+ 2.6.0 with bug fixes and the V8 update
  • Webview+ update with lots of bug fixes for the iOS Webview+ and Developer App integration.

As always, you can use this Cocoon version by just changing the Cocoon version in your project:

Of course you can still use previous versions of Cocoon and you’ll only be using 2.2.0 automatically in case you have set the Cocoon version to latest.

Architecture selection

This is something that has been requested several times in the past. At the moment when building a Cocoon app for Android both, armv7 and x86 where being built, since this release you can select if you want to build armv7, x86 or both architectures.

This will save both final APK size and also compilation time so you no longer need to wait twice the time in case you only need one architecture or you are just testing.

2.5.4 & 2.6.0 Bugfixes and improvements

Apart from the Canvas+ Android v8 update we have been working on bug fixes for both Canvas+ Android and iOS.

These are the main ones:

  • Now the Canvas+ internal webview uses the accelerated environment by default in iOS.
  • Reduced APK size as ARM architecture has been removed from Canvas+ Android 2.6.0.
  • Fixed hang when the App is suspended and an Audio pause is received.
  • Updated iOS device ID list reported by getDeviceInfo().
  • Fixed iOS internal webview so JS execution is not paused when the webview is not showing.
  • Fix crash when texture is disposed twice: this happens when texture loader thinks that texture is still alive but the new image was not loaded or is empty, and tries to dispose the current texture. (ie. When using image.src=“” to dispose images)
  • Fixed Local Storage data write to the internal plist with proper encoding. This might cause local storage corruption.
  • Fixed issue with font-size and line-height in fonts definition parsing.
  • Enable NPOT textures by default. This will be noticeable in some memory saving when allocating textures that are not POT.
  • Audio loading issues. Some audios might not be loaded correctly with slow connections.

Let us know what you think about this new update!

Canvas+ Plugin 2.2 Update

We have updated the Canvas+plugin version (for both iOS and Android)  with some bugfixes and new features.

To get this new features you just need to compile with the latest Cocoon version in the cloud.

Canvas+ improvements

  • Added support for Cookies in Android XHR.
  • window.location.href = URL to work.
  • Made getAttribute to return null if the attribute is not found. Previously it returned an empty string.
  • Improved XHR related error messages.
  • Added postMessage support to window.
  • Support for the anchor tag/element.
  • Added “hasAttribute” and “classList” to every node.
  • Added search to location.
  • Added JSON support for XHR connections and fixed a bug that was passing “undefined” to user and password in XHR open commands (did break connections in Android with JQuery).
  • Added minor modifications to make Canvas+ more JQuery and Construct2 (non CocoonJS export) friendly.
  • Added srcElement to every event instance.
  • Added DOMParser, querySelector and querySelectorAll.
  • Added getElementsByClassName.

Canvas+ extensions

  • Added secure text option for the text dialog
  • When a canvas object is disposed from javascript, dispose the context too.
  • Added XHR Dispose.
  • Only allow input capture on canvas and image HTML Elements.

Canvas+ bug fixes

  • Store vertexAttribPointerData in the WebGL defender. These fixes some conflicts with canvas2d and wangle renderer (specially on Pixi V3).

Cordova related

  • Added support for Cordova online/offline events.

Hope you enjoy this new Canvas+ version!

Cocoon Beta Update

This week we have deployed a new Cocoon cloud version and these are some of the main things we have been working on.

Features:

  • Help links: We have added help links in places where we think you may need more information.
  • Compilation errors: Now the compilation status icon is also clickable when a compilation fails and it will open a dialog with the compilation log.
  • Projects order: The project list is ordered by last compilation time instead of creation date.
  • Platform version: The cordova platform version is now shown in the platform settings top right corner, so you know which cordova version are you using. The cordova version is attached to the Cocoon version that you can configure in the project settings.
  • Plugin parameters: We have added support for plugin parameters in the compiler so the plugin will receive the parameters you set in a plugin when installing.

Bugfixes:

  • Webview+ cache: The Webview+ cache was not being cleared between launches when using the Developer App. It’s now fixed.
  • Local zip file in Webview+ iOS: Using local zip files with Webview+ in iOS was not working correctly. Now local and remote zip files should work correctly along with remote urls.
  • AdColony plugin iOS: We have fixed an issue with AdColony plugin for iOS that was crashing at compile time because a dependency was missing.
  • Support for queryselector in Canvas+: We have added support for queryselector in Canvas+ because some plugins like the whitelist plugin need it.

You can expect a new release next week with some new features and more bug fixes. In the meantime please keep on sending bugs, feature requests or any kind of feedback, that’s gold for us!.

Thanks for using Cocoon!

The Cocoon Team