Apache Royale 0.9.9
===================

- Improvements/Additions in Basic/Jewel and Flex Emulation components
- New compiler options for better release optimizations
- Many other compiler improvements and bugfixes.

- Dozens of bugs reported, investigated, and squashed. For details of
  closed bug reports see https://github.com/apache/royale-asjs/issues?q=is%3Aissue+is%3Aclosed

Apache Royale 0.9.8
===================

- Improvements/Additions in Basic/Jewel and Flex Emulation components
- Improvements/Fixes to RoyaleUnit
- Fixed some parity issues between maven and ant builds
- Additions and fixes in maven archetypes
- Improvements in source-maps (compiler)
- Improvements in support for js minification (compiler)
- Binding improvements (compiler, framework)
- Many other compiler improvements and bugfixes.

- Dozens of bugs reported, investigated, and squashed. For details of
  closed bug reports see https://github.com/apache/royale-asjs/issues?q=is%3Aissue+is%3Aclosed

Apache Royale 0.9.7
===================

- Many additional components available.
- Emulations of many existing Apache Flex components are operational.
- Improvements to the Maven builds.
- Dozens of bugs reported, investigated, and squashed. For details of
  closed bug reports see https://github.com/apache/royale-asjs/issues?q=is%3Aissue+is%3Aclosed

Apache Royale 0.9.6
===================

- Compiles faster
- Many additional components available.
- Emulations of many other components available.
- For applications targeting JavaScript, you can now incorporate the
  vast resources available in existing, free JavaScript libraries.
- Dozens of bugs reported, investigated, and squashed. For details of
  closed bug reports see https://github.com/apache/royale-asjs/issues?q=is%3Aissue+is%3Aclosed


Apache Royale 0.9.4
===================

This release contains:
-A new component set called Jewel.
-Components that will eventually emulate popular Apache Flex APIs, including RemoteObject.
-A version of Tour De Flex partially migrated to Apache Royale.

Apache Royale 0.9.2
===================

This release contains:

- Virtual item renderer management for fixed row height vertical lists
- Improved Theme support. The compiler will copy all resources in "assets" 
  folder to target
- JSON deserialization to ActionScript objects
- JSON2ASVO utility to generate ActionScript Value Objects from a JSON result

Apache Royale 0.9.1
===================

This release contains:

- Fixes to NPM packaging 
- GitHubCommitsLogViewer example that provides the source code for a tutorial in the documentation
- NestedStringItemRenderer for displaying data from sub-objects in DataGrids

Apache Royale 0.9.0
===================

Apache Royale is an SDK that provides the capability to cross-compile MXML 
and ActionScript applications to HTML/JS/CSS so they can run in a browser
without Flash.

Apache Royale was previously released by the Apache Flex project.  You can
see RELEASE_NOTES for earlier releases in the Apache Flex releases.

This RELEASE_NOTES file is used for the top-level source and binary package.  The
individual folders (royale-compiler, royale-typedefs, royale-asjs) each have their own
RELEASE_NOTES file specific to the contents of those folders.

Please report new issues to our bugbase at:

    https://github.com/apache/royale-asjs/issues

                                          The Apache Royale Project
                                          <https://royale.apache.org/>
