Here are some of the things we've been discussing as potential features to be added in our PlayScript Roadmap.
Please understand that our focus is first and foremost on providing a full IJW cross mobile/web solution for our own games, so some of these features may be a while in coming (or never come at all). However we'll post them here as potential features to get a little bit of feedback.
PlayScript Goals
------------------------
Primary Goal:
* Provide a high performance cross web/mobile solution for building games with advanced tooling for all platforms (IDE, debugger, profiler)
Secondary Goals:
* Extend the AS3 language with advanced features found in other languages
* Provide additional language features that make common game programming tasks easier and more performant
* Deliver performance and app-size and battery usage competitive with native code
* Provide language features that facilitate integration with advanced tooling, editors, and remoting
PlayScript Roadmap
-----------------------------
Short Term
1. Improved compatibility with ActionScript
a. Most ActionScript source code should compile with minor modifications for unsupported features.
b. Runtime library support to cover most common runtime classes (65 core classes identified)
2. Easily installable binaries and add-ins for Xamarin Studio
a. Installable IDE plugins for all platforms (Windows, Mac, Android, iOS)
b. Installable compiler binaries.
3. Validation of performance and compiler/runtime coverage
a. Test compiler/runtime on actual game code in the wild
4. Deep dive on performance
a. Ensure that all runtime core classes (Vector, Array, etc.) are high performance
b. Reduce use of dynamic language features, identify use of dynamic via warnings in code
c. Introduce either unmanaged code extensions or intrinsics for optimizing hotspots
d. Validate app size, memory usage, linker efficiency, etc.
e. Optimize hotspots of common open source runtime libraries (Starling/Away3D) with unsafe code, direct opengl calls, etc.
Mid Term (Proposed)
1. Add SWF/SWC compile target for PlayScript to allow use of PlayScript language features on the Flash platform
2. Move both C++ target and JS target from experimental to alpha state
a. Validate with demos of Starling/Away 3D
3. Add additional game oriented language features
a. Add vector basic types for float2, float3, float4, double2, double3, double4, int2, int3, int4. with hardware acceleration
b. Add matrix basic types (i.e. float4x4 and double4x4) with hardware acceleration
c. Add extensions to support fast direct binary data serialization/caching
d. Add "not null" extension to reference types (i.e. MyObject! object) to identify and prevent null reference errors.
4. Add language extensions to provide advanced toolabilit/serialization support
a. Add the [Proxyable] extension to support simplified editor/data tooling on game classes (think CoreData on OSX)
b. Add [Serialized] extension to support simple binary caching/serialization on game classes (think Pickle in python, but with high performance binary native support)
Long Term (Proposed)
1. Add "native" support to language
a. Packages or classes marked with 'native' keyword are compiled using C++ ABI and are not managed/garbage collected.
b. "native" classes by default do not have bounds checks, memory zero, null checks and require explicit reference counting or memory release
c. "native" classes are implemented using each platforms native sandbox (mobile->native code, flash->domain opcodes, javascript->asm.js)
d. Any "native" package or class can optionally be compiled either native or managed.
2. ASM.JS support for all "native" code
a. Any native classes are compiled to ASM.JS and run in the native sandbox on JS environments.
3. Direct LLVM target
a. An LLVM target to bypass the C++ target and go directly to LLVM native code.
4. Inline assembler support
a. Support inline .NET IL code for .NET environment
b. Support inline LLVM
c. Support inline ARM code
Please feel free to comment on this roadmap and let us know what you think.