Skip to content

Latest commit

 

History

History
208 lines (168 loc) · 7.47 KB

CHANGELOG.md

File metadata and controls

208 lines (168 loc) · 7.47 KB

RABCDAsm Changelog

RABCDAsm v1.19 (????.??.??)

  • Ignore duplicate class names during dependency registration
  • Make over-estimation of uncompressed SWF size non-fatal
  • Improve robustness of zlib decompression
  • Disassemble type 0x00 as Undefined instead of Void
    • This matches the terminology used in the AVM specification.
    • Void continues to be recognized as a synonym for Undefined.

RABCDAsm v1.18 (2016.01.16)

  • Fix disassembly of pushbyte instructions (the AVM specification incorrectly lists the argument as unsigned).
  • Bump #version directive of new disassemblies to 4:
    • Versions below 4 treat pushbyte as unsigned, and throw an exception if the argument is outside the range 0 ... 255.
    • Versions 4 and above treat pushbyte as signed, and throw an exception if the argument is outside the range -128 ... 127.
  • Fix buffer reuse bugs when using macros
  • Dump floating-point numbers in hex notation if necessary to ensure precision
  • Cease emitting a number in a comment after opening script tags
  • Detect a known DMD bug in build_rabcdasm
  • Ignore invalid file size in header

RABCDAsm v1.17 (2014.09.10)

  • Do not attempt to disassemble unreachable code
  • Improve handling of disassembly errors: methods will be partially disassembled as far as possible.
  • Fix LZMA errors with uncompressable data.

RABCDAsm v1.16 (2014.04.21)

  • Fix handling of TypeName-kind Multinames with null parameters
  • Fix v1.15 regression in handling very long paths on Windows (DMD 2.066 is required when building from source for this to work)

RABCDAsm v1.15 (2014.01.11)

  • Fix building on systems with a noexec /tmp/
  • Improve compatibility with 3rd-party players
    • Don't emit forward references in TypeName-kind Multinames
  • Improve performance and memory usage

RABCDAsm v1.14 (2013.08.21)

  • Improved refid generation
  • Worked around liblzma dictionary size limitation, which prevented decompression of some LZMA-compressed files
  • Added an option to swflzmacompress to update the SWF version number
  • Added finddef instruction
  • Added unimplemented {get|set|delete}propertylate instructions
  • Documentation updates

RABCDAsm v1.13 (2012.09.29)

  • Fixed handling of truncated SWF tags

RABCDAsm v1.12 (2012.09.08)

  • Relaxed filename sanitization for names like "controller"
  • Added range validation for byte literals
  • Fixed LZMA support misdetection caused by stale rdmd cache
  • Added coerce_b, coerce_i and coerce_d opcodes
  • Fixed handling of recursively-nested function literals
  • Fixed handling of homonym non-private namespaces
    • #privatens directives are now ignored, and no longer generated
  • Improved refid generation
  • Bumped #version to 3 (v1.12 disassemblies are not backwards-compatible)
  • Documentation updates

RABCDAsm v1.11 (2012.03.15)

  • Fixed v1.10 hierarchy flattening regression
  • Improved refid generation for protected namespaces
  • Improved handling of overflown signed integers
  • Fixed metadata handling (caused by error in ABC format specification)
  • Added #version directive (v1.11 disassemblies are not backwards-compatible)
  • Removed path length limitation on Windows
  • Improved filename sanitization
  • Updated asasm.hrc
  • Documentation updates

RABCDAsm v1.10 (2012.02.29)

  • Fixed escaping of paths with empty segments

RABCDAsm v1.9 (2012.02.07)

  • Added support for LZMA-compressed SWF files
  • Added swflzmacompress
  • Fixed undiscovered private namespaces in class interfaces
  • Fixed handling of overflown integers
  • Documentation updates

RABCDAsm v1.8 (2011.07.06)

  • Fixed handling of orphan methods with multiple references
  • Treat out-of-bounds namespace/multiname indices as null
  • Documentation updates

RABCDAsm v1.7 (2011.06.14)

  • Fixed handling of invalid UTF-8 in strings
  • Fixed handling of null namespaces and multinames
  • Fixed handling of exception info in corrupted method bodies
  • Fixed handling of orphan private namespaces
  • Fixed handling of out-of-bounds class/method indices
  • Disassembler now creates one file per class and script-level method
  • Disassembler now outputs blank lines after si32 etc. instructions as well
  • abcexport now delimits the index with a dash in output filenames
  • Improved shortening of double literals
  • Documentation updates

RABCDAsm v1.6 (2011.05.13)

  • Overhaul of the structure of disassembler-generated files
    • Private namespace names and refids for nested classes are now generated from their referenced contexts
      • This also fixes problems caused by private namespaces being referenced in multiple distinct contexts
    • One #included file per script instead of per class
      • Nested classes, script initializers and other script traits are now in the same file as their main class
    • Inline methods are now in separate files, placed according to their usage context
    • Private namespaces are sorted by their autogenerated names in the .privatens.asasm file
    • No syntax changes, output is backwards-compatible
  • Improved escaping of file names
  • Output correct opcode error locations
  • Disassembler will now refuse to overwrite files
  • rabcdasm will now always generate output in the same directory as the input file
  • Failure to decode a method body is now not a fatal error
  • Aggressively try to shorten double literals to their shortest representation
  • Added the swfbinexport and swfbinreplace utilities, to aid in manipulating contents of DefineBinaryData tags
  • The package can now be built using a simple, dedicated build tool
  • Documentation updates

RABCDAsm v1.5 (2011.04.14)

  • Fixed v1.4 constant pool regression
  • Added support for memory-access and sign-extend opcodes
  • Speed optimizations
  • Documentation updates

RABCDAsm v1.4 (2011.03.07)

  • Source code ported to D2
  • Add support for forward-references for TypeName-kind Multinames
  • Correctly order classes by dependencies (extends/implements) and reference count
  • Finish Metadata support
  • Documentation updates

RABCDAsm v1.3 (2010.11.11)

  • Fixed double precision problem
    • This also fixes problems with illegal default values for function parameters (default values for integer parameters are stored as doubles, which might become out-of-range due to inadequate double precision)
  • Added Changelog
  • Documentation markdown fixes

RABCDAsm v1.2 (2010.11.06)

  • Fixed ref generation for orphan objects which were only referenced by other orphans
  • Better error handling in abcexport; warn when no DoABC tags found
  • Documentation updates

RABCDAsm v1.1 (2010.06.30)

  • Private namespaces are now referenced by auto-generated names
  • Use : to delimit namespace and name in QNames for consistency
  • Fixed relative include paths
  • Add optional byte offsets to labels, which allows lossless representation of jumps inside instructions and outside the function bounds
  • Documentation updates

RABCDAsm v1.0 (2010.05.05)

  • Initial release.