Hi all,

Just a quick summary of things merged in via recent commit.  See below for
"How do I get things 'how they were' ?" if you want to switch off any of
the new stuff.

More reliable actionscript support.
The new settings provide greater compatibility. But they can also be tuned
out (Hello world is a good example, and it is smaller now in gzipped format
for release build, than it was before)
-More things will 'just work' when porting from older actionscript libs.
Vector behaviour is virtually identical to swf, other types of implicit
type coercions are generated by default (but avoidable by config), and
certain uses of int, uint and Class are more reliable and avoid compiler or
runtime errors compared to before.
Reflection now has PAYG/opt-in support for including top level as3 types
(Array, Number, int, Vector etc). These roughly match the results you see
with reflection in swf (actually reflection info for these swf items quite
light). This is via a plugin style setup that is only included in release
build if you use it. See here:
https://github.com/apache/royale-asjs/blob/c6379b85d8aa9d164d49b09402a23f30cb4aee3a/frameworks/projects/Reflection/src/main/royale/org/apache/royale/reflection/ExtraData.as#L127
This same approach could be used with externs reflection data if it could
be generated in a similar format, e.g. to provide possible reflection pack
support for sets of javascript native classes.
I plan to use the same ExtraData class to add support for Vector to
AMFBinaryData, Vector is a low level type that has its own serialization
rules. In this way there will also be no hard dependency on vector support
in AMFBinaryData and it is therefore opt-in/PAYG via the ExtraData class.

How do I get things 'how they were' ?
maven (via additionalCompilerOptions):
            -js-complex-implicit-coercions=false;
            -js-vector-index-checks=false;
            -js-resolve-uncertain=false;
            -js-vector-emulation-class=Array;
(note that you should also now be able to have these on separate lines in
the pom - I find this much easier to read)

ant:
in compile-js-config.xml example
    [js-complex-implicit-coercions]false[/js-complex-implicit-coercions]
    [js-resolve-uncertain]false[/js-resolve-uncertain]
    [js-vector-index-checks]false[/js-vector-index-checks]
    [js-vector-emulation-class]Array[/js-vector-emulation-class]
(angle brackets are substituted here with square brackets above in case
they mess with some email clients)

The first 3 options above have doc comment directives (@royalesuppress... )
so they can be tuned off or on inside method definitions also.

Fixes
Vector-as-Array emulation now supports insertAt/removeAt (same as Array)
vectorEmulationClass receives the fully qualified name as the string
parameter for the elementType


Other
-Added a lot of compiler tests for the vector emulation options and default
vector implementation
-RoyaleUnit: I ported a start of the manualtest unit tests to RoyaleUnit.
@josh... these are actually language tests, but I thought they could not
run in the Language project because it does not have all dependencies to
run the tests themselves, perhaps I am wrong about that? I put them in Core
for now, and they do run correctly in both swf and JS. But please tell me
what you prefer for these (maybe they do need to go in Language...). Also I
made some small changes in the js ant scripts for tests to correctly clean
the test folder.
-Added more reflection unit tests (manualtests)
-Started to collate unit tests for XML and updated code to fix some
observed issues (compiler and framework).
-Hello world is approx 600 bytes smaller after gzip compression than it was
before

I might have forgotten some things, I will add extra info tomorrow if I
recall more. Please ask questions if you have them.

Reply via email to