Kinesis SoftwareKineticFusion

[Show Table of Contents]

13 KineticFusion Change History

[Hide Table of Contents]



13.2 Change Log

13.2.1 Release 3.1.0b4 (09 July 2006)

13.2.1.1 Bug Fixes

  • Changed SWF output of Shape symbols to fix undocumented restriction in Flash 9,0,16 players that caused movies to crash. Note: while this is filed under bugs, it is not a KineticFusion bug (thanks, Adobe)

13.2.2 Release 3.1.0b2 (16 January 2006)

13.2.2.1 Bug Fixes

  • Fix bug in decompiling when calculating export frames for symbols that are exported multiple times within an SWF.
  • Fixed bug with allowing bitmap operations on non-MovieClip symbols

13.2.3 Release 3.1.0 (Unreleased)

13.2.3.1 Added or changed features

  • Added support for timeline filters and blending in RVML
  • Added support for antialias settings for Text and Editfield elements
  • Added support for bitmap caching of movie clips and buttons on the timeline
  • Added support for new gradient center displacements
  • Added support for line styles consisting of gradients or images fills
  • Added support for new line attributes 'cap', 'join' and 'constrainScale'
  • Added new fillAccess flag on the Movie attribute to permit either network or local file access
  • Added support for new font hinting information in Flash 8
  • Added support for writing out all relevant kerning information in fonts for Flash 8
  • Added support for reading and writing SWF metadata
  • Added support for slice9Grids for MovieClips
  • SWF fonts are now stored in Flash 8 format with a test card in both uppercase and lowercase
  • Refactored much of the code for greater efficiency and optimized ActionScript parsing and code generation

13.2.3.2 Bug Fixes

  • Fixed bug in Beta 2 with placing graphic symbols on timeline in Flash 8
  • Fixed error with correctly interpreting fscommand2 when outputting FlashLite
  • Fixed bug caused by writing too much data in single ActionScript push statement.
  • Fixed bug with decompiling of prototype assignments
  • Added new check when decompiling SWFs containing illegal jump statements resulting from branches that exceeded 32K. Rather than abort, KineticFusion now flags the error on screen and in the output RVML.
  • Fixed location of intrinsic ExternalInterface.as class. This was located in the wrong package

13.2.4 Release 3.0.2 (20 November 2005)

13.2.4.1 Bug Fixes

  • Fixed bug when outputting object IDs on movie clip timelines.
  • Fixed bug with short file names on component path
  • Updated license text to clarify licensing problems

13.2.5 Release 3.0.1 (24 October 2005)

13.2.5.1 Bug Fixes

  • Fixed format of ActionScript warning message 2029 - now include name of missing class member
  • Fixed compile error when creating new objects from inline function constructors
  • Fixed error when previous class path could not be found on startup
  • Fixed 'Class not found' compilation error when compiling certain source code handlers
  • Fixed RVML input error when KerningPair elements specified

13.2.6 Release 3.0.0 (10 October 2005)

13.2.6.1 Added or changed features

  • Server: Added new method in KineticFusionServerType to generate RVML SAX events from decompiled SWF movies. This enables both the creation of an RVML DOM without the need to externalize the RVML, and it enables the SAX event output to be feed directly into a ServerSAXHandlerType to regenerate the SWF
  • Server: Added new interface UserResourceManagerType that enables users to define their own resource storage and retrieval. Instances of UserResourceManagerType can be used when processing both SWF movies and RVML documents
  • Server: Moved all repository-related parameters into a new RepositoryParameterType to localize the specification of repository behaviour
  • Server: Added new "Server" value to the repositoryType attribute of the RVML Repository element to identify a set of resources to be managed by a user-specified resource manager
  • Server: Rewrote and expanded all Server API examples
  • Server: All RVML and SWF processing method now throw a KineticFusionException. This is generally used as a wrapper for exceptions that get thrown during the processing operation as well as a few top-level error conditions
  • Support for the @since tag has been removed to provide greater compatibility with Macromedia Flash. Instead, KineticFusion ships with separate class folders for each Flash player version. KineticFusion will automatically use the relevant path depending on the RVML output version (or ActionScript version when analyzing classes). Additionally, this change ensures that the class folders of Flash 8 can be referenced without change.
  • Added check for bad files on class path- when too many non-ActionScript files found on class path then the class path is ignored
  • Ignores all folders on class path beginning with '.' character or 'CVS'. This reduces overhead from Subversion and CVS management folders
  • All decompiled resource repositories are named based on the output RVML document. Previously the SWF movie file name was used however it is more consistent that a reospitory is associated with the RVML document.
  • All relative resource repositories are relative to the location of the output RVML file. Previously, the repositories were relative to the input SWF movie however this now enables different RVML documents to ensure exclusive ownership of referenced resources and makes it easier to treat an RVML document and resources as a single unit
  • GUI Context Menu can now be invoked over blank areas within the File Window
  • Added support for 'add' identifier in Flash 8 classes
  • Fixed bug with extraction of components when decompiling as ActionScript 1.0. Because components are referenced only within (unanalyzed) scripts they were not exported in the correct frame. A new attribute 'exportFrame' is not added to the Components element when decompiling as ActionScript 1.0.
  • Added new configuration option kinesis.logging.format that enables the format of output log messages to be modified. Currently, the only additional supported format is 'netbeans' that outputs all file locations in a format that the NetBeans output window can translate to hyperlinks.
  • Added new warning (4082) when a specified integer constant is implicitly converted to a floating-point number. SWF integers are 32-bit numbers and all other numbers are automatically converted to floats. In Flash, this conversion is carried out silently. Floating point numbers cannot be used for bit operations such as AND('&') or OR('|'). If it is intended that the reported number represent a floating point number it should be specified with an explicit decimal point.

13.2.6.2 Documentation

  • Server: Added documentation on new SWF processing features
  • Server: Added documentation on overriding resource storage

13.2.6.3 Bug Fixes

  • Optimized code generation of increment/decrement operation on register expressions
  • Fixed bug with last character of a Font fontRange attribute.
  • Modified error message output when parsing font ranges to present better context information
  • Fixed bug with SVG path element ignoring illegal attributes
  • Fixed bug with evaluation of trace statement arguments that referenced local class members
  • Fixed error message with referencing non-static elements inside inline functions defined within static blocks
  • No longer generates a compile warning when a class name has the same case-insensitive name as a variable as long as the class resides in a package. The package is resolved at compile-time and no conflicts are possible at runtime.

13.2.7 Release 3.0.0b10 (13 September 2005)

13.2.7.1 Added or changed features

  • Server: Configuration API totally rewritten - each property is now represented by a single property instance and all changes to the instance are immediately updated in the KineticFusion application
  • Server: Added new ConfigurationTest.java containing JUnit tests illustrating the operation of new Configuration interface
  • Server: Added class analysis functionality
  • Added new configuration option kinesis.actionscript.warnBlockSize that defines the logging threshold for logging the executable bytecode sizes of classes and RVML ActionScript blocks
  • KineticFusion will now try different size optimization strategies if an ActionScript class or block exceeds the SWF limits
  • Improved error messages during code generation phase - errors now indicate, where possible, the source module causing the problem

13.2.7.2 Documentation

  • Server: Added new chapter (chapter 5) on the Server component
  • Server: Moved all Javadoc documentation from Chapter 4 to chapter 5
  • Server: Removed list of available properties from ConfigurationManagerType javadoc and moved to a new page in the server component documentation. This is generated automatically to ensure that all information is up-to-date
  • Added more documentation on configuration value precedence (Introduction to Configuration)
  • Added missing documentation of configuration options:
    • kinesis.actionscript.useMetadata
    • kinesis.xml.shortPlaceElements
    • kinesis.xml.outputOptionalBounds
    • kinesis.logging.logActionScriptToConsole
  • Added documentation on new configuration option kinesis.actionscript.warnBlockSize

13.2.7.3 Bug Fixes

  • Fixed bug with checking of interface methods - this had included static methods from the Object class.
  • Fixed bug with defining ToShape in MorphShape symbols
  • Changed name of property kinesis.actionscipt.unicodeConstants to kinesis.actionscript.unicodeConstants (note missing 'r'....)

13.2.8 Release 3.0.0b9 (05 September 2005)

13.2.8.1 Added or changed features

  • Can now add multiple SWC components in a single operation when adding new class paths in the Class Analyzer GUI
  • Added new configuration option kinesis.xml.outputBOM that, when enabled, will write a UTF-8 BOM to the beginning of all output RVML documents
  • 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
  • Compile To... and Decompile To... menus in the GUI now always start with the current folder
  • 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 (2015) for interface methods that are declared as private or static
  • Added new warning(1096) for constructors that have a return value
  • Reduced the size of the stored metadata in the SWF when this outputSymbolNames option is enabled
  • Added check to ensure that the number of specified advances in the RVML Segment element match the number of specified characters
  • Added support for new intrinsic classes of Flash 8
  • Added support for new intrinsic class methods and properties supported in Flash 8

13.2.8.2 Documentation

  • Documentation has been completely restructured and rewritten. Information is presented in chapters, more examples have been added
  • A new Table of Contents can be accessed from anywhere in the documentation for quick navigation
  • Inline navigation links between document pages and levels have been added
  • Added new GUI screenshots
  • PDF version of documentation is now available separately

13.2.8.3 Bug Fixes

  • Server: Added support for programmatic access to 'replaceTraceStatements' configuration property
  • Fixed name mangling of decompiled fonts - this caused a problem with some HTML EditField symbols
  • Console now remains displayed when the -k option is specified when illegal arguments are specified
  • Decompiler now automatically ignores setters with no parameters - this could happen when recompiling an RVML document from ActionScript 1.0 representation where the Void parameter is not stored in the SWF
  • Fixed bug with Slash ID support being enabled for files #include'd in an SWF of version less than 7
  • Fixed bug resulting in incorrect warning when class member with a version higher that that of the current output references another class or member with a similar version
  • Fixed error in decompiling SWFs that declared exported symbols that did not exist in the actual SWF
  • Fixed bug with specifying relative paths on the command line
  • Fixed bug that permitted Segment elements to be specified with no characters. Now all Segment elements must have at least one character specified
  • Default encoding for unidentified documents changed from ASCII to ISO-8859-1
  • Fixed error line numbers when outputting parse error on metadata comments

13.2.9 Release 3.0.0b8 (04 August 2005)

13.2.9.1 Added or changed features

13.2.9.2 Bug Fixes

  • Fixed bug importing TrueType font when font had more than 32,000 defined glyphs
  • Fixed bug with decompiling of streaming sound embedded in MovieClip symbols
  • Fixed error trace when specified RVML resource does not exist. Missing resources are now reported directly to the user
  • Fixed Windows installer problem caused by error message windows when installed on non-English locales

13.2.10 Release 3.0.0b7 (15 July 2005)

13.2.10.1 Added or changed features

13.2.10.2 Bug Fixes

  • Server: Fixed bug with inability to add LogEventAppenders or create KFSaxHandlerType instances. These features had been removed on obfuscation during building. All functionality is now available.
  • Fix bug with OS X Quit menu not saving application setting before exit
  • Fixed Windows installer so that installed configuration files are readable by users with limited privileges
  • Fixed bug on OS X that caused errors when launching external file handlers
  • Fixed bug that disallowed assignment of a class method to a field within field initialisation code
  • References to this and super are no longer permitted within static class members in AS 2.0
  • Static and instance members with the same name are now permitted at different locations in a class hierarchy - normal scoping rules apply
  • Fixed bug with error output when selecting 'No' to a file overwrite request in the GUI
  • Fixed problems with ErrorConfiguration.properties - the deployed configuration file was missing 17 message ID and details
  • Fixed bug with detecton of different X and Y scaling values for large symbols that were scaled very small. The X and Y scaling values are now combined only if the proportional difference between them, rather than the numeric difference, is negligible
  • Buttons in 'Manage Bookmarks' dialog no longer expand when dialog is resized
  • Fixed bug when misinterpreting an mtasc main block for an AS2.0 class
  • Fixed bug in decompiling mtasc do-while loops
  • Fixed bug in processing missing glyphs that resulted in an exception trace

13.2.11 Release 3.0.0b6 (22 June 2005)

13.2.11.1 Added or changed features

  • Added new command-line option '-font' that will import one or more TTF font files or folders of TTF fonts into SWF format and store the output fonts in the KineticFusion system font folder
  • Added new GUI menu action 'Import TTF Font' that will import one or more TTF font files or folders of TTF fonts into SWF format and store the output fonts in the KineticFusion system font folder
  • Added new configuration property 'kinesis.repository.systemFontPath'. This provides the location for storing all global fonts for the KineticFusion. All TTF 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
  • 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
  • All SWF text fonts are now stored with an editable test card displaying the font in several viewing sizes
  • Increased the speed of font processing significantly during both compiling and decompiling
  • Font glyphs automatically located in system font database when not found in RVML-specified font definition
  • User-specific configuration file now defaults to .kfproperties so it will be hidden on supported OSes
  • Changed RVML namespace to update version to 3.0
  • 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.2.11.2 Bug Fixes

  • Resolved some GUI issues that may have cause unstable GUI behaviour under certain conditions
  • Fixed bug with support for Image smoothing
  • Fixed bug with assigning methods to return values of functions
  • Fixed bug with reported error during decompilation of classes
  • Fixed bug preventing intrinsic classes in SWC components from being cached
  • Font glyph bound information is no longer written to an SWF - this is not used, and increases the size of an output SWF, sometime significantly.
  • Fixed wrapping of Glyph vector operations with Edges element on RVML output. This is no longer supported.

13.2.12 Release 3.0.0b5 (limited)

13.2.12.1 Added or changed features

  • 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.
  • 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
  • Change have been made to the table sorting functionality of the file explorer table and the warning table: when sorted the existing selections are now kept.
  • Table sorting in the GUI should be much quicker than before. In addition, the windows is scrolled to highlight the last selected item.
  • 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.
  • 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
  • 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
  • Improved installation on Linux and fixed bug with output of Java preference logging messages

13.2.12.2 Bug Fixes

  • Fixed 24-hour time display in File Explorer window
  • Fixed context menus on OS/X systems
  • Fixed support for file activation on OS/X
  • Fixed typing errors in rvml.dtd
  • Fixed bug with being able to select multiple folders in directory tree

13.2.13 Release 3.0.0b4 (limited)

13.2.13.1 Added or changed features

  • Added support for analysing AS2.0 classes from the File Explorer window
  • Added new toggle Menu Option in GUI to enable SWC component resolution on decompiling ('Resolve SWC Components')
  • Splash Screen can now be dismissed on single mouse click
  • Tool tips for all rows in warning table present cell contents except first 2 columns that present the source line
  • 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.
  • 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 prints out the location of the Error Configuration files to the java console on start up
  • 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

13.2.13.2 Bug Fixes

  • Fixed bug in Windows installer with locating JRE when only JDK installed
  • Fixed bug with disappearing column headers on first instantiation of warning table
  • Fixed bug with false reporting of class member hiding when multiple members with the same case-insensitive name reside at different locations in the hierarchy
  • Fixed bug in Windows Installer with Launch KineticFusion option on final screen

13.2.14 Release 3.0.0b3 (limited)

13.2.14.1 Added or changed features

  • Changed command line format to use standard option formats
  • Added support for processing multiple files/folders from the command-line
  • Added new binary executable for Windows platforms
  • Created new Windows installer that provides closer integration with Explorer shell
  • Decreased time elapsed before Splash screen appears
  • Added new menu section for Class operations
  • Added new operation 'Refresh Class Hierarchy' to refresh all known classes when kinesis.actionscript.packagesAreStable option is enabled.
  • Added new operation 'Run Again' to run the last executed operation or group of operations.
  • 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.
  • 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.

13.2.14.2 Bug Fixes

  • Fixed bug with usage of (deprecated) inline style elements for shapes
  • Fixed bug in ActionScript decompiling with function parameters that have no defined names
  • Fixed bug with output of source line in HTML
  • Fixed bug when back-tabbing though message table
  • Fixed bug when kinesis.actionscript.packagesAreStable is changed externally
  • Fixed bug with restoring application setting when disk is removed

13.2.15 Release 3.0.0b2 (limited)

13.2.15.1 Added or changed features

  • 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.
    • Highlighting a single row presents the source code line in the status bar
    • The table can be copied to the system clipboard in Excel format
    • On most platforms, double-clicking on a row with open the corresponding file in the default application associated with the file
  • On most platforms, double-clicking on a file in the explorer window will open the file in the default application
  • Added new configuration option kinesis.xml.colorFormat that overrides the default output color format when writing RVML
  • Removed configuration option kinesis.logging.oldFormat

13.2.15.2 Bug Fixes

  • Fixed bug with relative include locations specified using the src attribute

13.2.16 Release 3.0.0b1 (limited)

13.2.16.1 Added or changed features

  • Added support for external 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 simply configuring the TagLibraries.xml configuration file.
  • Full support for SWC 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 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.
  • Heap-limited caching for all ActionScript classes, SWC components, templates and other assets
  • Support for Placing/Altering symbols on the timeline using their width and height rather than using scale attributes
  • Support for outputting the known bounds of all symbols on RVML decompilation
  • Added support for cascading configuration options. This permits users to locally override configuration options without modifying global settings
  • Added support for RVML document-relative paths

13.2.17 Release 2.0.08 (04 April 2005)

13.2.17.1 Added or changed features

  • Added support for extracting classes from MTASC-compiled SWFs compiled with -separate flag
  • Increased performance of SWF symbol decompiler with many anonymous symbols
  • Added greater support for MTASC bytecode on decompilation
  • Removed warning messages when decompiling while(true){...} loops
  • Removed warning message when decompiling loops that only exit via return statements
  • Modified decompiled RVML so that ActionScript log settings are no longer automatically embedded in the RVML

13.2.17.2 Bug Fixes

  • Fixed bug with support for optimized pixel fonts. Pixel fonts are now round-tripped successfuly.
  • Added support for MTASC-compiled SWFs compiled with -separate flag
  • Increased performance of SWF symbol decompiler with many anonymous symbols
  • Fixed repository naming bug when swf had multiple '.' characters in its name
  • Fixed bug with decompilation of optimized V6 code containing empty return statements
  • Fixed bug with processing of unary plus operator - unary plus operator is now ignored when compiling for Version 5 and higher
  • Fixed bug with decompiling function expressions outside of assignment expressions

13.2.18 Release 2.0.07 (07 March 2005)

13.2.18.1 Added or changed features

  • Increased the speed of ActionScript parsing significantly

13.2.18.2 Bug Fixes

  • Fixed error reporting for externally included files
  • Fixed bug with auto-semicolon insertion when required on first line before a #include
  • Fixed bug with for statements containing missing clauses
  • Fixed bug with constant pools greater than 64K caused by over-optimisation. The application will now select the optimal string candidates for inclusion in the ActionScript constant pool while ensuring the size is always within limits
  • Removed warning message when optimising functions. Variables referenced in inner function blocks are now processed silently unless a global reference to the variables exists prior to the declaration

13.2.19 Release 2.0.06 (18 February 2005)

13.2.19.1 Added or changed features

  • Added support for FlashLite FSCommand2 calls

13.2.19.2 Documentation

  • Updated deployed KineticFusion.properties file to add property defaults for:
    • kinesis.actionscript.storeDuplicateSystemClasses
    • kinesis.actionscript.storeDuplicateUserClasses.

13.2.19.3 Bug Fixes

  • Fixed support for compiling property methods to get around bug with Flash Player 7 in dealing with super() calls
  • Fixed bug that caused some installations to not pick up changes to the ErrorConfiguration.properties file. Now all changes should be picked up dynamically without exiting the application
  • Fixed bug with correctly decompiling certain AS2.0 classes due to ambiguous import statements being generated.
  • Fixed handling of property setters with a Void type - these setters are now ignored
  • Fixed RVML bug when shape bounds attribute not present. Now value automatically defaults to 'auto' when not specified
  • Fixed bug with representation of lowest negative number
  • Fixed decompilation bug that resulted in fields being duplicated in child classes in certain situations
  • Fixed compilation warning relating to unknown class 'prototype' fields
  • Changed font names on decompilation for fonts whose name contains illegal XML characters

13.2.20 Release 2.0.05 (13 December 2004)

13.2.20.1 Added or changed features

  • Added AS2.0 analysis for unreachable code within all statement blocks - message 1080
  • Added AS2.0 analysis for missing return values within all methods and functions. Added 10 new log messages (1081-1090), 5 for when an explicit return type is specified and 5 for when no return type is specified
  • Added AS2.0 analysis for function blocks with an unspecified return type that specifies a return value for only a subset of all possible execution paths - message 1091
  • All subclasses of the MovieClip intrinsic class are no longer automatic dynamic classes unless marked so explicitly. This mirrors the change introduced by Macromedia in the MX 2004 7.2 updater
  • Added two additional acceptable method signatures to LoadVars.sendAndLoad() metadata
  • Added two new ActionScript 2.0 decompilation properties:
    • kinesis.actionscript.storeDuplicateSystemClasses
    • kinesis.actionscript.storeDuplicateUserClasses.
    When set to false, then all classes that are found in the SWF that also exist on the specified class path are discarded. This is very useful when a developer wishes to give priority to classes on their System or User class path and do not want KineticFusion to hide these classes with decompiled class definitions.
  • Now processes inline scripts to resolve optimized references to class properties
  • All RVML errors and inline ActionScript log messages now have the full name of the RVML file in the log message to ease tracking of problems
  • Added support for compilation of compound statements inside case expressions of switch statements.
  • Added fix on decompilation for FreeHand shapes that have incorrect shape bounds

13.2.20.2 Bug Fixes

  • Fixed bug with reporting ambiguous references to import identifiers.
  • Fixed bug that logged warning messages during parsing even if the enableWarningMessages flag was false. When enableWarningMessages is false, all parser messages with a Warning level are disabled.
  • Fixed but with checking the inheritance chain for classes where the compiler failed to recognise that a class instance implemented an interface during parameter type-checking.
  • Now permits class definitions to be followed by optional semi-colons.
  • Fixed potential problem with inline ActionScript log messages where line number may have been one line less than the source file (the reported line text remains unchanged)
  • Fixed bug with potential inclusion of method stubs in certain interfaces during decompilation
  • Fixed bug with mislabelling of user class path components as system class path components. This resulted in non-fatal errors on user class paths being ignored. This has now been fixed and all classes on the user class path are governed by the ErrorConfiguration.properties file and the enableWarningMessages property
  • Added explicit check for casts when decompiling SWFs containing a SkinElement.registerElement symbol. The initialisation code for this performed an explicit cast of a Function to an Object, when the required parameter was, in fact, a Function. As this resulted in an error on compilation, KineticFusion now automatically removes this cast.
  • Changed distributed TextField class to make it dynamic

13.2.21 Release 2.0.04 (15 November 2004)

13.2.21.1 Added or changed features

  • The 'name' attribute of the RVML Alter and Remove elements are now optional. When specified, the symbol ID of the symbol at the specified depth is checked against that specified to ensure they are the same. Without the 'name' attribute, only the specified depth is checked to ensure that a valid symbol exists.

13.2.21.2 Bug Fixes

  • Added explicit semantic check for hoisted variables in AS2.0 functions that are referenced before they are initially declared. KineticFusion will always resolve these values to 'undefined' however the MM compiler can resolve these to arbitrary values depending on project settings
  • Fixed bug with decompilation of optimised V6 function code resulting in NullPointerException due to certain opcodes not being correctly detected and removed.
  • Fixed bug with decompilation of classes referenced using array syntax. This could potentially result in class properties with illegal member names.All identifiers are now checked for correctness before being added to class structure.
  • Fixed bug with decompilation of SWFs containing multiple fonts with the same Font name. Previously, the font names were augmented to make these unique - this has been changed so that font names remain the same but font definitions are still stored as multiple unique font resources
  • Improved decompilation of interfaces. Interfaces will now automatically be defined with all the common members of their implementing classes. This now also applies to interfaces that that may only have child interfaces, not implementing classes
  • Made error 1075 which prohibited the instantiation of interfaces, editable. While this is a useless and, indeed, dangerous error there is code within the MM Databinding classes that does instantiate interfaces. Hence this error can now be downgraded for users that do not wish to edit decompiled code before recompiling
  • Added text (Fixed Level) at beginning of all log messages that cannot be edited within the the ErrorConfiguration.properties file
  • Fixed decompilation bug where property accessors used as base functions for new operations
  • Increased priority of 'import' scope when compiling to immediately under priority of current class scope and modified decompilation to ensure that import identifiers that clash with local class symbols under V6 or v7 are discarded
  • Fixed bug with parsing of 'set' property methods where the return type was not Void. This bug caused an warning to be reported but the declaration to be ignored. The declaration is now added to the specified class.
  • Fixed bug with reporting of error location when reporting case-insensitive redefinition of built-in literal values (e.g. var True =5;)

13.2.22 Release 2.0.03 (24 September 2004)

13.2.22.1 Added or changed features

  • KineticFusion can now automatically output all logged text to a user-specified file.
  • Parsing and semantic error output for ActionScript processing now default to the same output format for enhanced readibility and external processing
  • Added three new logging configuration options: kinesis.logging.logFile, kinesis.logging.appendFile and kinesis.logging.oldFormat for controlling the implementation of new logging features
  • Added support for passing in AS2.0 class file names to KineticFusion on the command line. The application will automatically derive the class name from configured class paths.
  • Renamed decompiled register variables from '$regX' to 'localVar_X' for readibility

13.2.22.2 Bug Fixes

  • Removed writing of Administrator/root protected resources which required application user to have administration privileges
  • Fixed bug with writing __KFImplements() synthetic function
  • Fixed bug that caused the return type of certain functions to be mistyped as functions
  • Fixed bug with parent classes inheriting members of subclasses when analysing sub classes. This resulted in class members being permitted in a parent class that only belonged to a child
  • Fixed bug in ActionScript decompiler in which certain for..in loops could be over-optimised creating output errors

13.2.23 Release 2.0.02 (28 August 2004)

13.2.23.1 Bug Fixes

  • Fixed bug with storing file location preferences - KineticFusion now remembers the previous file chooser folders between applications
  • Fixed decompilation of switch statements at end of optimised V6 functions
  • Fixed processing of '~' bit operator field on decompilation
  • Removed restrictions on static field initializers in AS2.0 classes and made all static field initialiser messages non-fatal
  • Added 'forceOutput="true"' attribute for all fonts containing metric information. Metric information, used for positioning in dynamic fields, is also required when static text is referenced in TextSnapshot.hitTestTextNearPos() calls. This attribute can be deleted by a developer if this method is not used and no HTML font tags reference the font.

13.2.24 Release 2.0.01 (10 August 2004)

13.2.24.1 Added or changed features

  • Added sorting for GUI explorer columns on mouse-clicks. Using Ctrl-Click adds compound sorting features
  • Added support for IMode MFi sound format type
  • Reformatted Explorer columns for better presentation of file dates and sizes
  • Automatically consults installation KineticFusion.properties if configuration not found on classpath or home folders

13.2.24.2 Bug Fixes

  • Assigning a untyped value to a method now generates a warning instead of an error by default
  • Fixed incorrect detection of EOF on some ActionScript inputs
  • Fixed bug in naming of extracted sound streams
  • Fixed bug decompiling SWFs with unnamed fonts
  • Fixed bug with potential failing of decompilation giving rise to 'Jump' Errors
  • Fixed bug with incorrect output of NaN numbers
  • Fixed problem with visibility of abstract and final class metadata
  • Fixed bug with detecting correct abstract method signature under certain circumstances
  • Fixed bug where multiple compound assignments of var statements got truncated during hoisting on class analysis
  • Copied ExportSymbol.swf and ImportExportSymbol.swf to parent directory so examples are visible in HTML documentation
  • Fixed copyright placement on online examples

13.2.25 Release 2.0 (26 July 2004)

13.2.25.1 Added or changed features

  • Added support for full compilation of AS2.0 classes
  • Added new GUI panel for semantic analysis of AS2.0 classes
  • Added new command line options for semantics analysis of AS2.0 classes
  • Decompiles AS2.0 to external repository and adjusts all fields and visibility references to ensure consistency
  • Added new ActionScript properties for AS 2.0 support
  • Added local variable 'hoisting' inside AS2.0 functions, automatically moving all local variable declarations to the head of functions
  • Added new ActionScriptSettings element to define global ActionScript setting for a single RVML document, including support for V7 timeout and recursion limits
  • Added configurable AS2.0 analysis messages for customization of compiler output
  • Generate errors when case-insensitive literals used in AS2.0 support
  • For AS1.0, Added new 'synthetic' functions __KFCast(), __KFExtends(), __KFImplements() to circumvent the inability of AS1.0 to represent the new V7 format features. These will be automatically recompiled back into their most natural form on compilation with KineticFusion
  • Added support for new 'tabIndex' attribute on timeline 'Place', 'Alter', 'Replace' elements
  • Added support for new timeline 'TabIndex' element
  • Removed 'Strict semicolon support' option for ActionScript scripts. Automatic semicolon insertion is now fully supported and permanently enabled
  • Renamed property 'kinesis.actionscript.optimiseFunctions' to 'kinesis.actionscript.optimizeFunctions' to standardize on American English representation
  • Aded more meaningful message on optimization when variable referenced before it is locally defined
  • Added a new configuration option 'kinesis.preload'. When true, this will preload the KineticFusion application and initialise the ActionScript 2.0 compiler
  • Split out all type-checking error messages. All semantic checking of type compatibility will now generate one of two warning messages: one when the checked type is unknown, and one when the checked type is incompatible. This allows users to ensure strict-typing when types are known. The warning level of message for incompatible types have been escalated to Error, but these can be downgraded by a user.
  • Added automatic saving of GUI configuration on termination. On restart, the location and size are restored to setting previously used by the user. The RVML and SWF selection directories are restored, and any user-defined class paths and selected classes are restored in the Class Analyzer window.
  • Created full set of KineticFusion intrinsic classes to remove dependency on Macromedia Flash 2004™ installation.
  • Added resolution of arithmetic and Math expressions at compile time.
  • Changed semantics of conditional AND and conditional OR expressions so they resolve to arbitrary types instead of Boolean, and added warning message, for cases where this is undesired.
  • Added support for abstract classes. Abstract classes cannot be directly instantiated and must be sub-classed. Abstract classes do not have to explicitly define methods inherited from interfaces however all such methods must be implemented by sub-classes. Note: these classes will not be compatible with the Macromedia compiler and should be used with caution.
  • Added support for abstract methods. Abstract methods are method signatures with the 'abstract' qualifier. These methods must not have a specified function body. Classes are compiled using the abstract signatures however such classes cannot be directly instantiated. All classes containing abstract methods must be declared abstract. All extending classes must provide an implementation of the abstract method or also be declared abstract. Note: this is not compatible with the Macromedia compiler and should be used with caution.
  • Added support for constant fields. These are denoted with the 'const' keyword, instead of 'var' and must be initialised with a compile-time derivable constant. All 'const' field values will be automatically folded into referencing code. Values cannot be assigned to 'const' field values outside initialisation. Note: this is not compatible with the Macromedia compiler and should be used with caution.
  • Added support for final classes. Final classes cannot be sub-classed. These can be identified with the 'final' keyword qualifier. Note: this is not compatible with the Macromedia compiler and should be used with caution.
  • Added support for final class members. These can be identified with the 'final' keyword qualifier. Final class members cannot be overridden in a sub-class. Note: this is not compatible with the Macromedia compiler and should be used with caution.
  • Added new configuration option to remove ActionScript trace() statements on output
  • Repository directories are now only created on-demand, when appropriate symbol type is being stored.
  • Users can now specify repository locations relative to the SWF being decompiled
  • Added new metadata.xml configuration file support for adding metadata to classes
  • Removed unnecessary configuration properties and added configuration documentation
  • Split SWF encoding properties into input-encoding and output-encoding
  • Improved command-line application startup time
  • Metadata files are scanned before processing each RVML movie or AS2.0 class list when using GUI. There is no need to restart the GUI after changing any metadata files.
  • Error message configuration file is scanned before processing each RVML movie or AS2.0 class list when using GUI. There is no need to restart the GUI after changing the priority of any error message.
  • Added proof-of-concept support for SWC components in RVML
  • Added new RVML attributes 'latency' and 'sampleCount' to MP3 sounds converted by Flash
  • Remembers selected application panel in GUI between restarts
  • Symbols on button layers now assigned default symbol name based on button and layer name
  • Added checks to prevent assignments to packages and package members
  • Changed GUI implementing an explorer-style interface for all compile/decompile operations. Now multiple documents can be selected and translated in a single operation
  • Added support for processing directories of RVML and SWF movies from the command line
  • Added support for calling the main KineticFusion class from ant build files
  • Added support for ExcludeClass tag under ActionScriptSettings tag for removing specified classes from output SWF movies
  • Added support for excluding entire packages from compiled SWF movies using ExcludeClass tag with names matching "package.*"
  • UI directory contents view updated after all compilation operations
  • Added support for extraction of intrinsic class hierarchies from SWC component archives.
  • Added shortcuts to Windows Installers for application, documentation, website, and uninstaller
  • Added shortcut information for installers run on non-windows platforms

13.2.25.2 Bug Fixes

  • Fixed bug with output of PNG images
  • Fixed bugs arising from implementation of 'Automatic Semicolon Insertion' in ActionScript scripts
  • Fixed bug with rendering of new V7 ActionScript features
  • Only splits sounds streams when sound gaps exceed bit reservoir threshold
  • Fixed bug in decompilation of some With blocks
  • Fixed bug in handling of With blocks for ActionScript function optimization
  • Fixed bug with decompilation of comma operator conditions in do-while blocks with continue statements
  • Fixed bug in decompilation when new operator given wrong precedence
  • Fixed bug with decompilation of inline assignments (a.e = b.f = c.g) under certain conditions
  • Fixed bug with auto boundaries of linear shapes. Maximum line width is now used to alter shape boundaries.
  • Fixed error with some XML parsers not recognising UTF-X BOM marker at the start of an XML document
  • Added check to ensure a maximum of 255 registers used when optimising functions
  • Fixed bug in recognising AS2.0 syntax in Version 6 movies
  • Enabled supported for import directives in Timeline scripts
  • All bugs reported against function optimisation have been resolved.
  • Removed instances of 'double not' operators during code generation.
  • Added additional checks for eval statements when optimising functions
  • Now generates warnings when compiled ActionScript exceeded limits of SWF format.
  • Fixed NullPointerException when Invalid LHS of expression found.
  • Fixed bug in rendering certain cubic curves
  • Fixed bug with non-semicolon-terminated return statement in ActionScript
  • Fixed bug with exporting sound streams to RVML when defined in Movie Clips
  • Fixed bug when symbol defined with same name as global symbol
  • Fixed bug with extracting certain lossless images to PNG format
  • Fixed bug with Apha channel in import/exporting PNG images
  • FIxed buf when calculating automatic shape bounds in shapes with inline styles
  • Fixed bug in V5 setProperty() decompilation
  • Fixed #include processor so now checks for recursive include references
  • Fixed bug in code generation when using inline assignments in optimized functions under certain conditions
  • Fixed bug in setProperty when eval operators used
  • Fixed bug with rendering MP3 sounds converted by Flash by adding addition metadata
  • Improved decompilation of V6-optimised functions and inline statements
  • Fixed bug with decompilation of standalone conditional statements
  • Fixed bug with decompilation of switch constructs in SWFs incorrectly produced by the Macromedia Flash compiler
  • Fixed problem with certain mal-formed SWF files from Articulate Presenter SWF converter
  • Fixed problem with exporting fonts from SWF movies containing 'code-less' font fragments with same font characteristics

13.2.25.3 Documentation

  • Updated RVML documentation to include information on new elements: ActionScriptSettings, ClassPath, IncludePath, IncludeClass, ASProperty, TabIndex
  • Updated documentation to add information on new tabIndex attribute of Place, Alter, Replace elements
  • Updated RVML DTD to reflect changes in RVML
  • Updated RVML Schema to reflect changes in RVML
  • Documented element KerningPair for defining font metrics
  • Added FAQ documentation for new AS2.0 changes
  • Documented new configuration properties - see properties documentation for full list
  • Revamped documentation layout
  • Converted RVML reference to frame-based layout
  • Added new documentation on class metadata
  • Added new documentation on configuration
  • Added RVML documentation on new Sound attributes
  • Added new user documentation on GUI and usage

13.2.26 Release 1.0.5

13.2.26.1 Added or changed features

  • Added popup-menu in GUI for clearing or copying the content of the console pane
  • Automatically creates font metrics for all embedded fonts
  • Added decompilation support for Flash Player™ 7.0 ActionScript extensions including try/catch/finally blocks and optimised function blocks
  • Added compilation support for try/catch/finally blocks in Flash 7
  • Added beta support for Flash 6.0.65 ActionScript function optimisation. A new property 'kinesis.actionscript.optimiseFunctions' has been added that, when set to 'true', will optimise all functions to use registers for parameters and local values providing a significant performance increase at runtime.
  • Added support for comma operator ion ActionScript decompilation
  • Fixed support for compilation and decompilation of function objects

13.2.26.2 Bug Fixes

  • Fixed support for compilation and decompilation of function objects
  • Fixed RVML number representation in European locales
  • Fixed bug where statements were output in wrong order in specific circumstances
  • Fixed bug with wrong interpretation of pre-and post operator expressions in specific circumstances
  • Fixed bug in Slash Identifier support that caused infinite loop in specific circumstances

13.2.27 Release 1.0.4

13.2.27.1 Added or changed features

  • Optimised ActionScript so compilation time has been reduced by approximately 60%
  • Added support for nested #include directives in ActionScript. A new property 'kinesis.actionscript.includePath' has been added that uses similar syntax to the Java classpath specification except the mandatory separator is a semicolon. If not specified, then the application class path is used. When a #include directive is found, this path is searched in specified order for the required file. Once found, all subsequent nested #include directives will initially be loaded relative to the position of the parent file. Only if the include file is not found relative to the parent file is the include path property used to locate the file. This allows multiple nested hierarchies of script files to be used.
    This include path is also used when resolving src attributes for ActionScript elements. When a relative URL is specified as the src attribute on FrameActions, MovieClipActions, InitClipActions, or ButtonActions elements then the url is automatically converted to a single-line script consisting of a #include directive with the file extracted from the specified src attribute.
  • Added optional support for Slash Identifiers in ActionScript. A new property 'kinesis.actionscript.slashIDSupport' has been added that enables and disables support for Slash Identifiers. See the properties documentation for more information.
  • Added optional support for Automatic Semicolon insertion in ActionScript. A new property 'kinesis.actionscript.strictSemicolonSupport' has been added that enables and disables support for automatic semicolon insertion. See the properties documentation for more information.
  • Added several ActionScript code generation optimisations
  • Automatically adjusts all Depth 0 references dynamically in input SWF movies
  • Added namespace support for all output and input RVML documents. The namespace identifier used in RVML is http://www.kineticfusion.org/RVML/1.0. All examples have been updated to include this addition.
  • Added 4 new RVML elements:
    • A Title text element can be specified for an RVML document
    • A Desc text element can be specified for an RVML document and all symbols
    • A Metadata element can be specified for an RVML document and all symbols that allow the inclusion of arbitrary XML fragments.
    • An InitialText element that replaces the previous text content of an EditField element. This allows for easy indexing on EditField text and removes potential whitespace specification problems when other metadata elements are specified.

    See the rvml.dtd document for more information on where these elements can be used.
  • All examples have been updated to include these new specifications.
  • All Title and Desc elements can be roundtripped through SWF. In a future release, all Metadata will also be safely roundtripped.
  • A new property 'kinesis.actionscript.outputMetadata' has been added that enables and disables output of the new metadata tags to SWF. See the properties documentation for more information.
  • Reduced memory usage when handling lossless images. In addition, processing time for all movies containing lossless images has been greatly reduced on both compilation and decompilation where images are stored in SWF format. All lossless images should be stored in this format unless required for external processing.

13.2.27.2 Bug Fixes

  • Fixed bug in ActionScript Multiline comment support
  • Fixed bug with small linear gradients that would disappear at certain resolutions
  • Fixed decompiler error when decompiling compound assignment expressions i.e. a = b = c;
  • Fixed compiler bug with inline assignments used in same expression as post-increments i.e. while ( a =(b = c++)){...}
  • Fixed decompilation bug with 'continue' statement at logical end of while loop
  • Application properties can now be overridden correctly on the command-line
  • Fixed bug with EmptyFrame Element - it used to count such frames incorrectly and add additional frames throwing off frame counting scripts.

13.2.27.3 Documentation

  • Updated RVML documentation to enhance legibility and provide easier means of accessing relevant examples
  • Added easier navigation to and from examples
  • Added overall examples description page
  • Added FAQ documentation
  • Update documentation on Video element to indicate that certain attributes are optional
  • Update documentation on EditField element to indicate that initial text has been moved to the child element InitialText

13.2.28 Release 1.0.3

13.2.28.1 Added or changed features

  • Added extra 'src' attribute to ButtonActions, FrameActions, MovieClipActions and InitClip to allow for the inclusion of ActionScript from external URLs rather than having it inlined. Content of these attributes is ignored when this attribute is defined. Note that InitClip elements can still only be defined once per MovieClip symbol.
  • Changed cardinality of ButtonActions, FrameActions and MovieClipActions so that multiple elements may be specified.
  • Enabled property OutputSymbolNames by default.
  • Removed default Transform attributes on SWF decompilation
  • Added support for Segments of length 255 (previous max was 127)

13.2.28.2 Bug Fixes

  • Fixed clipping of advances in TextSegment output from SWF
  • Fixed output of binaryCodes attribute for Segment when no font information available
  • Fixed output of knownCodes attribute for Font when no font information available
  • Allow Symbols to be placed on depth 0 from SWF
  • Recovers gracefully when invalid End-Of-Movie marker found.
  • Fixed bug where LoadVariablesNum() in AS was getting mapped to LoadMovieNum()
  • Fixed default scale value in Transform (was 0, now 1)
  • Removed unsupported command line options from 'Usage:...' output

13.2.28.3 Documentation

  • Added explanation of application configuration to Readme.html
  • Added maximum size clarification to Segment element
  • Updated RVML.dtd to reflect new cardinality of ButtonActions, FrameActions and MovieClipActions
  • Fixed ShapeTransform element attlist typo where second 'translateX' attribute should have read 'translateY'
  • Updated documentation of Movie element to reflect actual bounds or rate, width and height attributes

13.2.29 Release 1.0.2

13.2.29.1 General

  • Added 3 XML validation properties
  • Added new shorthand rotate and scale attributes to Transform element
  • Documentation Changes:
  • Fixed imageType attribute of Image in documentation (used to be format)
  • Changed ClipActions element name to MovieClipActions
  • Changed FromShape and ToShape child elements to only include Edges
  • Changed attributes of RadialGradient
  • Added parameter holders to KineticFusion.bat
  • Fixed error in command line parameters description