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): ------------------------------- - first public version