Apache Royale Blog

Apache Royale v0.9.12 released!

The Apache Royale community is pleased to announce the release of Apache Royale 0.9.12.

The Apache Royale project is the next generation of the Apache Flex SDK. It lets developers use MXML and ActionScript 3 to generate HTML/JS/CSS applications which can run natively in web browsers. The cross-compiled code can also run on platforms like Electron or Apache Cordova to build desktop or mobile applications.

This release should be considered 'beta' quality, although we're very close to a 1.0 release and we have many applications in production at this point. The purpose of this release is to continue to gather feedback about Royale's features and the project's implementation strategies, and to recruit new contributors. We hope to grow the code base into an SDK and tool chain that delivers the highest productivity when developing applications that can run on many platforms. Beta releases, however, may not handle all production needs.

Changes in 0.9.12:

Apache Royale Framework 0.9.12

  • Basic

    • Make shift click aware of the first selection in ListMultiSelectionMouseController.
    • Added ReusableDataItemRendererFactoryForCollectionView for reusable item renderers.
    • Fixed exception in StyleInheritanceWithObserverBead due to attempting to set style inheritance on non-element (e.g. Text) descendant nodes under the strand.
    • ContainerView Checks the type on adding to strand and not on every contentView access
    • Optimized closing tree nodes.
  • Core

    • Added removeDynamicSelector method. Removes a CSS selector dynamically at runtime.
    • Added support for native PointerEvent.
    • Added toDecimals utility method.
    • Fixed "click" not being converted to Royale MouseEvent.
  • Graphics

    • Fixed PathBuilder using out of range radius values when drawing rounded rectangles.
  • Icons

    • Added FontAwesome6IconType with Font Awesome 6 icons.
    • Added new icons to MaterialIconType and FontAwesome5IconType.
  • Jewel

    • Added RestrictRegExp bead, which is essentially a copy of Restrict, but with RegExp property.
    • Added RestrictValidator for validation based on StringValidator capabilities and RegExp pattern.
    • Added ability to dynamically assign itemRenderer to DataGridColumn
    • Added ability to extend and override SnackbarView in Snackbar.
    • Added ComboBoxListWidth bead to set ComboBox List width.
    • Fixed issue in DateChooser where next/previous buttons without text setup property were sized incorrectly.
    • Fixed font size alignment in RadioButton.
  • MXRoyaleBase

    • Added missing mx.messaging.Producer to MXML manifest.
    • Ensure that SecureHTTPChannel, AMFChannel, and SecureAMFChannel are included in SWC.
  • MXRoyale

    • Added event when tool tip changes.
    • Fixed tooltip getting created twice.
    • Fixed Bitmap class for embedding compatibility with Flex.
  • Network

    • Added execute() method to HttpRequestTask.
    • Fixed creation of loader in HttpRequestTask.
    • Fixed BinaryUploader POST data sent to server.
    • Made response headers accessible from URLBinaryLoader and URLStream.
  • XML

    • Improve performance of getting descendants.
    • Added index to XMLList prototype instead of instances to prevent GC thrashing.
  • Fixed broken download locations for playerglobal.swc and Adobe AIR SDK in InstallAdobeSDKs.xml script.

  • Compiler and command line tools now require Java 11 or newer to run.

  • Dozens of bugs reported, investigated, and squashed. For details of closed bug reports see GitHub Issues list.

Apache Royale Compiler 0.9.12

  • compiler: Added new --infer-types compiler option that allows the compiler to automatically detect an appropriate type for both variables and function signatures that have omitted their declared types. Type inference is based on either the initializer or return values.
  • compiler: Abstract classes now support abstract getter and setter methods.
  • compiler: Added --strict-flex-css compiler option to optionally enable CSS syntax limitations that match Flex.
  • compiler: Improved type checking for && and || binary operators and ?: ternary operator.
  • compiler: Removed obsolete "AMD" and "Goog" JavaScript backends, and finished some refactoring to make codebase easier to maintain.
  • compiler: Now requires Java 11 or newer to run. Previously required Java 8 minimum.
  • compiler: Updated various Java dependencies with security updates.
  • compiler: Fixed some Flex SDK integration tests that had been failing for a while.
  • compiler: Fix parsing of <arguments> or <request> properties for RemoteObject, WebService, or HTTPService tags in MXML.
  • compiler: Fix missing warning for duplicate function parameter names.
  • compiler: Fix missing error for multiple root nodes in <fx:Model> tag.
  • compiler: Fix missing errors for invalid MXML manifest files.
  • compiler: Fix null exception when emitting JavaScript if a variable is untyped or function doesn't have a return type
  • compiler: Fix exception for multiple intializers in an MXML field tag.
  • compiler: Fix column position of string inside metadata.
  • compiler: Fix exception when an event attribute in MXML is missing = and quotes.
  • compiler: Fix unnecessary warning when reading SWF data that contains EnableTelemetry tag without a password.
  • compiler: Fix backslash as an escape character for { and } inside MXML data binding.
  • compiler: Fix backslash characters being unescaped in property values when emitting JavaScript.
  • compiler: Fix overflow exception caused by uint values that overflowed an integer in the compiler.
  • compiler: Fix incorrect error or warning positions for CSS content inside <fx:Style> tag.
  • compiler: Fix non-string values in an MXML array sometimes getting incorrectly wrapped in quotes when emitting JavaScript.
  • compiler: Fix null exception for <fx:Style> tags that contain only comments.
  • compiler: Fix exceptions for <fx:Style> tags and defaults.css files that contain invalid CSS.
  • compiler: Fix silently ignoring errors in some invalid CSS content, if it appears at the end after valid content.
  • compiler: Fix crash when attempting to use --remove-circulars=false with a release build.
  • compiler: Added CSS support for modern syntax without commas in rgb and rgba functions.
  • compiler: Added CSS support for radial-gradient, conic-gradient, and repeating gradient functions in JS.
  • compiler: Added CSS support for several translate, rotate, scale, skew, and matrix transformation functions in JS.
  • compiler: Add CSS support for declaring custom properties (CSS variables) and using var function in JS.
  • compiler: Fix crash when [Style] is of type Object and value is passed in MXML.
  • compiler: Fix null pointer exception when omitting quoted <fx:Style> value for source attribute.
  • compiler: Fix null pointer exception when omitting quoted <fx:Binding> value for source, destination, and twoWay attributes.
  • compiler: Fix null pointer exception when omitting quoted <fx:Vector> value for fixed, and type attributes.
  • compiler: Fix missing problem for invalid twoWay value for <fx:Binding> tag.
  • compiler: Fix exception for unexpected attributes added to <fx:Array> and <fx:Vector> tags.
  • compiler: Changed to better problem message when MXML implements attribute is empty.
  • compiler: Fix exception when assigning to a property that has a getter, but not a setter.
  • compiler: Fix exception when working with certain namespace expressions.
  • compiler: Fix configuration problems not being reported when compc options are passed to mxmlc.
  • compiler: Fix source maps for fields and methods in the private namespace or custom namespaces.
  • compiler: Fixed end line and end column of numeric literal with + or - sign.
  • compiler: Fixed lines and columns of function body.
  • compiler: Added support for Friendly Call Frames in source maps.
  • compiler: Fixed missing warning for assignment in else if conditional.
  • compiler: Fixed missing warnings for assignment, return, and comparison of null, undefined, and NaN values with other values that could never possibly be compatible.
  • compiler: Fixed missing errors when calling objects as functions that can never possibly be callable.
  • compiler: Add [RoyaleCallableInstances] metadata to allow instances of a typedef class to be callable as functions. Used by jQuery externs.
  • compiler: Fixed incorrect conflicting definition error when a method in a language namespace (like public/protected) has the same name as a method in a custom namespace.
  • debugger: Fix exception when evaluating certain expressions at run-time.
  • formatter: Added insert-new-line-else configuration option.
  • formatter: Filtered out unnecessary compiler warnings.
  • formatter: Fix stack overflow on some platforms when <fx:Script> code is large enough.
  • formatter: Fix missing indent after empty object literal when collapse-empty-blocks is true (it's not a block).
  • formatter: Fix Unicode and ASCII escape sequences getting lost when formatting string literals.
  • formatter: Fix formatting for configuration constants that gate definitions (like types or fields) without braces.
  • formatter: Fix formatting for object literal inside parentheses.
  • formatter: Fix ignored formatting when file contains unresolved configuration constants.
  • formatter: Fix formatting for comments on same line as control flow that doesn't have braces.
  • formatter: Fix asformat-config.xml file being ignored.
  • formatter: Fix ignored implicit semicolon being formatted as null.
  • formatter: Fix formatting for comment between brace and else.
  • formatter: Fix formatting of unary operators that (depending on context) may also be arithmetic operators.
  • formatter: Fix formatting for switch/case inside for-each or for-in loop.
  • linter: Fix implicit semicolon incorrectly detected as an empty statement that should be removed (it can't be removed).
  • linter: Fix MXML linter being incorrectly used for .as files and AS3 linter being incorrectly used for .mxml files.
  • Building royale-compiler now requires JDK 11 or newer.

For additional information on recent issues that have been closed, see Github Issues List

You can download a binary distribution, the source code or browse our GitHub repositories. If you're a NPM user you can check Apache Royale at NPM.

As well, you can help us filing bug reports for issues you encounter in the framework or compiler.

For questions about how to use Royale, send email to mailto:users@royale.apache.org. For questions and feedback on the development of the source code in the release, send email to dev@royale.apache.org.

Enjoy! 🙂

Apache Royale v0.9.10 released!

The Apache Royale community is pleased to announce the release of Apache Royale 0.9.10.

The Apache Royale project is the next generation of the Apache Flex SDK. It lets developers use MXML and ActionScript 3 to generate HTML/JS/CSS applications which can run natively in browsers. The cross-compiled code can also run on platforms like Electron or Apache Cordova (Adobe PhoneGap) to build mobile applications.

This release should be considered 'beta' quality, although we're very close to a 1.0 release and we have many applications in production at this point. The purpose of this release is to continue to gather feedback about Royale's features and the project's implementation strategies, and to recruit new contributors. We hope to grow the code base into an SDK and tool chain that delivers the highest productivity when developing applications that can run on many platforms. Beta releases, however, may not handle all production needs.

Changes in 0.9.10:

Apache Royale Framework 0.9.10

  • RoyaleUnit
    • Added BDD-style expect() method for natural language assertions
    • Added a number of new asserts, including checks for NaN, less than, greater than, less or equal, greater or equal, within range, is of type, throws exception, and matches regular expression.
  • MXRoyale
    • Various bug fixes
  • Jewel
    • Various bug fixes
  • Dozens of bugs reported, investigated, and squashed. For details of closed bug reports see GitHub Issues list.

Apache Royale Compiler 0.9.10

  • aslint is a new command line code linter for ActionScript and MXML, with a programmatic API for use in editors and IDEs.
  • compiler: Added --watch compiler option that keeps compiler active and incrementally compiles when changes to .as and .mxml files are detected. You may exit with Ctrl+C.
  • compiler: Added support for ?? null coalescing operator to ActionScript.
  • compiler: Added support for ?. null conditional operator to ActionScript.
  • compiler: Added support for @"" verbatim strings to ActionScript.
  • compiler: Fix JS output for chained Date setter initialization, like date.minutes = date.seconds = 0.
  • compiler: Fix <![CDATA[]]> handling in MXML for properties with [CollapseWhiteSpace] metadata.
  • royaleunit-ant-tasks: The <royaleunit> Ant Task can now use Playwright to run headless tests in HTML/JS. Set the player to chromium, webkit, or firefox.
  • royaleunit-ant-tasks: Added a new commandArgs attribute to the <royaleunit> Ant Task. It may be used to pass extra command line arguments to the executable specified in the command attribute.
  • formatter: Can load configuration options with -load-config+=path/to/file.xml, similar to compiler.
  • formatter: If a file named asformat-config.xml appears in the current working directory, automatically load it with -load-config. To disable this behavior, use -skip-local-config-file=true.
  • formatter: Fix issue where more than one new line might appear at the end of a file.
  • formatter: Fix indentation between opening and closing parentheses/brackets on separate lines.
  • formatter: Fix detection of Script elements in MXML when line endings are CRLF.
  • formatter: Fix exception when file starts with UTF BOM character.
  • formatter: Fix issue where ternary operator inside if condition was formatted incorrectly.
  • formatter: Fix missing formatting for finally block.
  • formatter: If a case or default clause in a switch contains only a block, indent is not increased.
  • formatter: If formatting is skipped because compiler errors are found, display those compiler errors.

For additional information on recent issues that have been closed, see Github Issues List

You can download a binary distribution, the source code or browse our GitHub repositories. If you're a NPM user you can check Apache Royale at NPM.

As well, you can help us filing bug reports for issues you encounter in the framework or compiler.

For questions about how to use Royale, send email to mailto:users@royale.apache.org. For questions and feedback on the development of the source code in the release, send email to dev@royale.apache.org.

Enjoy! 🙂

Apache Royale v0.9.9 released!

The Apache Royale community is pleased to announce the release of Apache Royale 0.9.9.

The Apache Royale project is the next generation of the Apache Flex SDK. It lets developers use MXML and ActionScript 3 to generate HTML/JS/CSS applications which can run natively in browsers. The cross-compiled code can also run on platforms like Electron or Apache Cordova (Adobe PhoneGap) to build mobile applications.

This release should be considered 'beta' quality, although we're very close to a 1.0 release and we have many applications in production at this point. The purpose of this release is to continue to gather feedback about Royale's features and the project's implementation strategies, and to recruit new contributors. We hope to grow the code base into an SDK and tool chain that delivers the highest productivity when developing applications that can run on many platforms. Beta releases, however, may not handle all production needs.

Changes in 0.9.9:

Apache Royale Framework 0.9.9

  • MXRoyale
    • MXRoyale has been split 2 libs : MXRoyaleBase (mostly non-UI code) and MXRoyale (mostly UI code). Users of MXRoyale should see no immediate changes as the build of this swc remains the same.
    • Listen to children's resize events to fix some layout issues
    • Various fixes to measured sizes (ComboBox, and other UI components)
    • Fixes to labels in item renderers not displaying correctly
    • ComboBox prompt fixes
    • ArrayCollection.refresh() updating lists
    • Various fixes to labels in item renderers not showing correctly
    • Add option to add custom header renderers to data grids
    • Fix issues with Menu.show() when receiving non-null parent arguments
    • Improve emulation of ADG's expand/collapse behavior
  • SparkRoyale
    • ComboBox sizing improvements
  • Basic
    • Improvements to DragBead's out of bounds behavior
  • RoyaleUnit
    • Fix coercion error in MetadataRunner when expecting an exception in a test, like [Test(expected="RangeError")]
  • Reflection
    • getQualifiedSuperclassName() can find the superclass of a Class object in JS, matching the behavior of SWF
  • Examples
    • Ace example running in Maven
    • Added Jewel TriStateCheckBox example in Tour De Jewel
  • Jewel
    • Improved:
      • Added emphasized and secondary sass settings for Jewel CheckBox / Switch
    • New:
      • Added Jewel TriStateCheckBox and some associated beads: TriStateCheckBoxTooltipState, TriStateCheckBoxState
      • Added ComboBoxReadOnly bead
  • Icons
    • Icon constants have been added to MaterialIconType and FontAwesome5IconType
  • Dozens of bugs reported, investigated, and squashed. For details of closed bug reports see GitHub Issues list.

Apache Royale Compiler 0.9.9

  • asformat is a new command line code formatter for ActionScript and MXML, with a programmatic API for use in editors and IDEs.
  • Added a boolean new compiler option compiler.mxml.force-local-id - (short commandline form force-local-id). This is a quick way to avoid propagating id attributes to browser DOM in JSRoyale.
  • (JS) Added new string compiler options js-getter-prefix and js-setter-prefix to optionally specify different prefixes to use instead of 'get_' and 'set_' for accessors in the generated JavaScript. Useful for integrating with JS libraries/languages that use a different naming convention.
  • (JS) Fix for @royalesuppressexport feature which had stopped working
  • (JS) Fix for mx.managers.SystemManager subclass not being generated for applications that were not direct subclasses of the relevant application classes.
  • (JS) Improvement in output of locale properties files as ResourceBundles. Now using original Flex/SWF parsing approach for improved parity.
  • (JS) First implementation of multiple-catch support in Javascript
  • (JS) Added unsafe option for outputting literal javascript (via externally defined jsUnsafeNativeInline function)
  • Fixed <!----> in MXML being incorrectly detected as an unclosed ASDoc comment, instead of an empty regular comment.
  • (JS) Improved the generated JavaScript for if, else if, and else statements that contained only a semicolon and no braces.
  • (JS) Generated JavaScript for parseInt() passes 0 instead of undefined for radix argument to avoid number format exception.
  • (JS) Fixed several issues with generated JavaScript for E4X expressions when using js-dynamic-access-unknown-members compiler option.
  • (JS) Fixed a couple of issues with generated JavaScript when using custom namespaces.
  • Fixed missing [Event] metadata in playerglobal.swc classes generated from documentation.
  • Fixed parse exception when binding to XML.

For additional information on recent issues that have been closed, see Github Issues List

You can download a binary distribution, the source code or browse our GitHub repositories. If you're a NPM user you can check Apache Royale at NPM.

As well, you can help us filing bug reports for issues you encounter in the framework or compiler.

For questions about how to use Royale, send email to mailto:users@royale.apache.org. For questions and feedback on the development of the source code in the release, send email to dev@royale.apache.org.

Enjoy! 🙂

Older Posts