|
|
|
|
|
|
|
|
Features
- full support for class file format up to version 1.7
- experimental support for 'future' features (e. g. modules)
- can be used as a library, or as a command-line [dis]assembler
- support for ocamlfind
History
Version 2.0-beta (2013-03-07):- update for Objective Caml 4.00.1
- update for Camlzip 1.05
- new 'graph' command, allowing to generate the graph of classes references
from a list of archives (supported file formats: Dot, GEXF, and GraphML)
- new 'Lookup' module allowing to search for Java elements (classes,
constructors, fields, and methods) from string queries
- new 'Manifest' module providing support for archive manifest files
- new 'ArchiveBuilder' module allowing to construct archives from classes,
and handling manifest, services, and copy from other archives
- the 'flow' command can now generate output to either GEXF, or GraphML, in
addition to Dot
- improved handling of classpaths
- improved performance for class encoding (about 50% speed-up)
- improved performance for stack state computations (about 30% speed-up)
- optimization of switches (turning lookup switches into table switches if it
saves some place)
- new peephole optimizations, in order to avoid simple conversions of
constants
- API CHANGE: class types for 'traversal' objects enhanced with new methods
- API CHANGE: 'Traversal' module renamed to 'ClassTraversal'
- new 'traversal' class type allowing to fold over class elements
- new 'ArchiveTraversal' module allowing to traverse archives
- bug: incorrect handling of some 'package-info' class files
- bug #86: '-ocaml-prefix' doesn't really work
- bug #87: install shouldn't build anything
- bug #89: do not activate warnings by default
- bug #104: configure script should be executable
- bug #110: error in annotation encoding of string value
- bug #111: invalid stack frame when locals are changed in a protected block
- bug #116: invalid stack frame after "invokespecial" instruction
Version 2.0-alpha3 (2012-05-13):- support for '*.sym' and '*.war' files in classpath
- 'JAVA_HOME' environment variable used to load JDK classes
- '/usr/libexec/java_home' utility used to load JDK classes (MacOS X)
- 'Predef' module renamed to 'Predefined'
- peephole rule for optimization of load/load sequences
- no automatic detection of 'ocamljava' binary
- bug #99: wrong packing of int32 into int64
- bug: ocamlbuild plugin for ocamljava-based compilation
- bug: invalid stack maps when double/long is followed by top
- bug: invalid locals size when over 255
- bug: incorrect graph flattening when wide gotos are used
- bug: install 'cmi' file
Version 2.0-alpha2 (2011-12-21):- move from Java 1.6 to Java 1.7 as default version
- syntax extension for 'exception pattern' (BARISTA_ERROR)
- syntax extension for Unicode literals (@"string" and @'c')
- InputStream.t and OutputStream.t can now be created from functions
- better error reporting when a signature is invalid
- helper functions for serialization
- minor refactoring of code (with small impact on API)
- removed dependency to 'Str' module
- bug #73: uniform handling of depencies
- bug #83: correct construction of constant pool w.r.t. LDC instructions
Version 2.0-alpha (2011-07-15):- update for Objective Caml 3.12.1
- update for Camomile 0.8.3
- new build system (ocamlbuild-based)
- reorganization of 'src' directory
- support for Unicode in 'src/utf8' directory
- major refactoring of code (with impact on API)
- executable names changed to 'barista.byte' and 'barista.native'
- peephole optimizations
- optimization of stack frames
- optimization of exception tables
- optimization of 'transitive' jumps
- new '-optimize' command-line switch to enable peephole/jump optimizations
- support for 'invodynamic' (JSR 292)
- preliminary support for type annotations (JSR 308)
- preliminary support for Java modules (project Jigsaw / JSR 294)
- support for 'package-info' and 'module-info' class files
- support for Java serialization protocol (version 2 only)
- new implementation for i/o operations
- improved manual
- Java API has been removed
Version 1.4 (2010-02-06):- new 'StackState' module for stack/locals manipulation
- new 'ControlFlow' module for control flow information (as a graph)
- new 'Code' module for computation of stack/locals from instructions
- new '-flow' command-line switch to generate flow graph for a method
- new '-generate-stack-infos' command-line switch to generate stack elements
- switch to OCaml 3.11.2
- bug #28: support for ocamlfind
- bug #46: invalid padding size for switch instructions
- bug #47: invalid handling of '@LineNumber'
Version 1.3 (2009-09-19):- new 'Traversal' module (mappers and iterators over class definitions)
- handling of class file format versions
Version 1.2 (2009-04-17):- bug fix for LDC, LDC_W and INVOKEVIRTUAL instructions
(results in a change in the definition of the Instruction.t type)
- various fixes in Java sources (both code and documentation)
- enhanced tests
- now able to load all classes from the JDK 1.6
Version 1.1 (2008-11-09):- move from Java 1.5 to Java 1.6
- support for stack frames (StackMapTable atribute)
- support for Bisect coverage
- bug fixes
Version 1.0 (2008-05-27):- enhanced tests
- main OCaml module renamed from 'Barista' to 'BaristaLibrary'
- Ant tasks
Version 1.0-beta (2008-02-29):- minor API changes
- minor grammar changes
- Java API
Version 1.0-alpha (2007-09-09):
|
|
|
|
|
|
|
|