Kinesis SoftwareKineticFusion

[Show Table of Contents]

13 KineticFusion Change History

[Hide Table of Contents]



13.1 KineticFusion Changes Since KineticFusion 2.0

For those who are familiar with KineticFusion 2.0, the following is the list of major changes to KineticFusion since the last commercial release.

13.1.1 RVML Extensions

  • Added full support for SWC components on compilation and decompilation. This version introduces a new RVML element 'Component'. All SWFs containing known components can have all component symbols removed from the RVML on decompilation, replacing these with a simple RVML reference to the components. Also SWC components can be included automatically in any output SWF using a simple RVML component reference.
  • Added support for components where the name of the SWC is not equal to the ID of the component - extended the Component element to specify a name detailing the filename of the SWC containing the component
  • Added support for external extension Tag Libraries. The KineticFusion API is available for developers enabling the dynamic extension of RVML. External tag libraries can be created and integrated into KineticFusion by configuring the TagLibraries.xml configuration file.
  • Added support for defining global and per-document data sources, including XML documents, property files and user-defined JavaBean objects
  • Added support for Attribute Expression Language within RVML. Attribute expressions can reference and evaluate data pulled from any configured data source.
  • Added support for inline and external templates using Freemarker template engine. This allows entire sections of RVML to be scripted dynamically, with access to all dynamic data sources.
  • The RVML processor now permits a Place element to place a symbol at a depth at which a symbol already exists. It will now log a warning and add an implicit Remove action. This solves a problem when recompiling RVML from a badly-constructed SWF.
  • Support for Placing/Altering symbols on the timeline using their width and height rather than using scale attributes
  • Removed all Replace elements on RVML output and replaced them with the appropriate Remove/Place pairs. This makes it much easier to replace symbols within an RVML document with symbols of a different type that cannot be used in a Replace command
  • Added check to ensure that the number of specified advances in the RVML Segment element match the number of specified characters
  • Added support for RVML document-relative paths
  • Changed RVML namespace to update version to 3.0

13.1.2 ActionScript

13.1.2.1 Metadata

  • Added full javadoc metadata functionality to AS2.0 classes. The following Javadoc tags are available and fully checked by the KineticFusion compiler: @const - Defines a field with a single constant value that can be inlined
    • @abstract - Specifies that a class cannot be directly instantiated, or that methods must be overridden in subclasses
    • @final - Specifies that a field, method, or property cannot be overridden or, in the case of classes, cannot be subclassed
    • @const - Defines a field with a single constant value that can be inlined
    • @signature - Specifies additional valid signatures of a method for type-checking
    • @mixin - Specifies the corresponding method for a mixin field
    • @since - Defines the lowest SWF version that can use the specified class or class member
  • The corresponding intrinsic class files distributed with KineticFusion have been updated to use these constraints and the prior use of metadata.xml files to specify ActionScript 2.0 constraints in no longer supported.

13.1.2.2 Intrinsic Classes

  • Added support for new intrinsic classes of Flash 8
  • Now allows multiple paths on the System Class Path that reference Macromedia intrinsic classes. This allows users to use both the distributed KineticFusion classes and the Macromedia classes without copying class files.
  • Added support for new intrinsic class methods and properties supported in Flash 8

13.1.2.3 Code Generation

  • KineticFusion will now try different size optimization strategies if an ActionScript class or block exceeds the SWF limits
  • Reduced the size of the stored metadata in the SWF when this outputSymbolNames option is enabled
  • Added new configuration option kinesis.actionscript.warnBlockSize that defines the logging threshold for logging the executable bytecode sizes of classes and RVML ActionScript blocks
  • Improved error messages during code generation phase - errors now indicate, where possible, the source module causing the problem

13.1.2.4 ActionScript 2.0 Analysis

  • Added new warning (2015) for interface methods that are declared as private or static
  • Added additional checks and more explicit warning messages for static member constraints in ActionScript 2.0 class checking.
  • Changed ActionScript Error 3003 to non-fatal so that the Macromedia Menu class can be compiled without change. This had restricted a static method from accessing a non-static field - the level is now Error so this error is ignored when found on the System Class Path.
  • Reduced initial severity of ActionScript Error 1002 to Warning to permit decompiled ActionScript classes from Macromedia components to be recompiled without change. This frequently gave parameter mismatch errors for certain classes e.g. CollectionImpl does not implement the Collection interface.
  • Now supports classpath members that have the same case-insensitive name e.g. a package name and class name. KineticFusion will generate warnings where this occurs as this functionality may cause failures on the V6 players however it permits all V7-specific library to compile
  • Added three new warning messages (2030, 2031, 2032) for errors resulting from accessing classes or members that are not available in the specified SWF output version
  • Added new warning(1096) for constructors that have a return value

13.1.2.5 Tracing

  • Added support for trace statement replacement within ActionScript. Users can specify an ActionScript fragment in the new configuration option kinesis.actionscript.replaceTraceStatement and this is automatically used as a replacement for all trace calls. To ensure compatibility with MMC, the trace call is case-insensitive and must take a single argument. The replacement fragment allows users to specify the data included in the trace call using 5 placeholder variables:
    • __CLASS : The name of the class containing the trace statement. This is a String constant.
    • __FILE : The name of the file containing the trace statement. This is a String constant.
    • __ARG : The single argument to the original trace statement
    • __METHOD : The name of the class method containing the trace statement. This is a String constant.
    • __LINE : The line on which the trace statement was defined. This is a Number constant.

13.1.3 RVML Output

  • Added new configuration option kinesis.xml.outputBOM that, when enabled, will write a UTF-8 BOM to the beginning of all output RVML documents
  • Support for outputting the known bounds of all symbols on RVML decompilation
  • Added new configuration option kinesis.xml.colorFormat that overrides the default output color format when writing RVML
  • Added new configuration option kinesis.xml.outputUTFComment that, when enabled, will write a single-character UTF-8 comment after the XML declaration at the beginning of all output RVML documents

13.1.4 Resources

  • When relative repository locations are used when decompiling SWF movies, the repository is now relative to the output RVML document.
  • For File-type resource repositories the interpretation of the repositoryBase attribute has changed:
    • When an absolute file is specified, this is used as the repository base folder
    • When the attribute is specified but the value is empty or is not a relative file, then the repository base folder is created by appending the specified value onto the folder of the RVML document
    • When not defined, this values defaults to the value of the kinesis.repository.directory configuration property
  • Default value for overwriting resources in the repository is now 'true'. This prevents large numbers of identical resource files building up when doing multiple decompiles.

13.1.4.1 Fonts

  • Added support for TrueType (TTF) fonts within RVML and the a new system font folder for archiving TrueType fonts in a precompiled SWF format.
  • Added new configuration property 'kinesis.repository.systemFontPath'. This provides the location for storing all global fonts for the KineticFusion. All TrueType fonts converted from the command line are stored here. Fonts in this folder can be referenced by font name alone and also provide replacement font glyphs for embedded fonts when glyphs not available in RVML-specified font files
  • Font glyphs automatically located in symtem font database when not found in RVML-specified font definition
  • Added new configuration property 'kinesis.repository.defaultSystemFont' that defines the font family for replacement glyphs and metrics when a specified RVML font does not exist in the system font folder
  • Added new command-line option '-font' that will import one or more TrueType font files or folders of TrueType fonts into SWF format and store the output fonts in the KineticFusion system font folder
  • All SWF text fonts are now stored with an editable test card displaying the font in several viewing sizes

13.1.5 GUI

  • The current directory in the UI now refreshes automatically when the window gets focus
  • Compile To... and Decompile To... menus in the GUI now always start with the current folder
  • The Current Folder field in the GUI is now editable. This field automatically displays the current folder when folders are changed. When selected with the mouse, the path is highlighted and a new path can be entered. The new folder is activated on the Enter key or when hitting the 'Open Folder' button beside the field. If a file name instead of a folder is specified, the folder of the file is opened, the file is selected in the file explorer and made visible.
  • Added new toggle Menu Option in GUI to enable SWC component resolution on decompiling ('Resolve SWC Components')
  • Added new operation 'Run Again' to run the last executed operation or group of operations.
  • Added new GUI menu action 'Import TTF Font' that will import one or more TrueType font files or folders of TTF fonts into SWF format and store the output fonts in the KineticFusion system font folder
  • Table sorting in the GUI speed is much faster - existing selections are now kept and the table is scrolled automatically to highlight the last selected item.
  • On most platforms, double-clicking on a file in the explorer window will open the file in the default application

13.1.5.1 ActionScript Processing

  • Added new table for displaying all compiler output. By default, compiler output is not displayed in console window, though this can be enabled with the View->Log ActionScript to Console menu item. The table has the following features: The table can be sorted by clicking on the column header. To sort by more than one column, use CTRL-Click to select additional sort. Click more than one on a column reverses the sort order.
  • The table is refreshed after each compilation set.
  • Tool tips for all rows in warning table present cell contents except first 2 columns that present the source line
  • Semantic errors are automatically displayed at the top of the ActionScript 2.0 warning table in the GUI
  • Highlighting a single row presents the source code line in the status bar
  • On most platforms, double-clicking on a row with open the corresponding file in the default application associated with the file
  • The table can be copied to the system clipboard in Excel format
  • A new button has been added to the Analyze Classes panel to add an SWC component as a class path element. This allows users to analyze classes against intrinsic classes that are stored inside SWCs
  • Can now add multiple SWC components in a single operation when adding new class paths in the Class Analyzer GUI
  • Added new operation 'Refresh Class Hierarchy' to refresh all known classes when kinesis.actionscript.packagesAreStable option is enabled.
  • Analyze Classes will now accept class names specified as regular expressions where the '*' character will match any class name character and '**' can be used to specify both classes and packages e.g. mx.controls.** will automatically add all classes in mx.controls and all sub-packages.
  • Added new menu section for Class operations
  • Now saves GUI preferences on Class analyzer tab
  • Added support for analysing AS2.0 classes from the File Explorer window
  • Analyze Classes context menu in File Explorer window now uses all user-defined class paths from the Class Analyzer tab in resolving and compiling classes. Previously, this was restricted to only the system-defined user and system class paths.

13.1.5.2 Bookmarks

  • A new Bookmarks menu option is now available. The current folder location can be stored as a bookmark location from Bookmarks->Bookmark Current Folder. All bookmarked locations are available under the bookmark menu - when selected, it will navigate to the selected folder. There is also a new dialog: Bookmarks->Manage Bookmarks. This allows the user to add, delete or reorder bookmark locations. All bookmarks are stored as user-local preferences and are persistent between sessions until the Edit->Restore Defaults on Restart is selected.
  • Added a bookmarks panel to all GUI file choosers. This allows a user to navigate directly to a bookmarked folder from within any file chooser and to bookmark the current folder within any chooser. The panel can be hidden or displayed at any time.
  • Added minimum size checking for the file chooser and Bookmarks dialogs to prevent them from being resized too small

13.1.5.3 Splash Screen

  • Splash Screen can now be dismissed on single mouse click
  • Decreased time elapsed before Splash screen appears

13.1.6 Configuration

  • Added support for cascading configuration options. This permits users to locally override configuration options without modifying global settings
  • User-specific configuration file now defaults to .kfproperties so it will be hidden on supported OSes
  • Removed configuration option kinesis.logging.oldFormat

13.1.7 Execution

  • Changed command line format to use standard option formats
  • The command-line option 'checkclasses' will now accept now accept class names specified as regular expressions where the '*' character will match any class name character and '**' can be used to specify both classes and packages e.g. mx.controls.** will automatically add all classes in mx.controls and all sub-packages.
  • Added support for processing multiple files/folders from the command-line
  • Heap-limited caching for all ActionScript classes, SWC components, templates and other assets
  • Now prints out the location of the Error Configuration files to the java console on start up

13.1.8 Installation

  • Created new Windows installer that provides closer integration with Explorer shell
  • Added new binary executable for Windows platforms
  • Improved installation on Linux and fixed bug with output of Java preference logging messages

13.1.9 Server

  • Added new embeddable Server component functionality.
  • Developers can use their own resource locators when defining Repository elements using the Extension Library API
  • Users can create their own RVML output handlers
  • Users can create SWF movies by generating RVML SAX events
  • Individual Server instances can have different configuration profiles

13.1.10 Documentation

  • Restructured and rewrote all documentation
  • Source code of the RVML processing component of KineticFUsion is now distributed with the application
  • The public API of KineticFUsion is now full y documentated as Jaadoc and distributed with the application