JavaCPP v1.4 Release Notes

Release Date: 2018-01-17 // about 6 years ago
    • Output to log all commands executed for Builder.buildCommand via ProcessBuilder
    • Switch architecture in android-arm.properties to ARMv7-A
    • Fix Parser not producing @Cast annotations for types with Info.cast() on operator(), as well as failing on using operator statements
    • Fix Parser issue with multiple container types (std::vector, etc) getting mixed up when mapped to adapters (@StdVector, etc)
    • Fix "Negative Buffer Capacity" errors happening in subclasses on Pointer.asBuffer() (issue deeplearning4j/deeplearning4j#4061)
    • Prevent JNI_OnLoad() from failing when Loader.putMemberOffset() cannot find a class
    • Throw clear error message when Loader.load() gets called on a class not supporting current platform
    • Create symbolic links to libraries preloaded by Loader as needed on Mac for renamed libraries
    • Update platform properties to support recent versions of the Android NDK
    • Fix Generator issues with @ByPtrPtr return of String or Pointer types (issue bytedeco/javacpp-presets#499)
    • Define clear(), empty(), pop_back(), and push_back() for resizable basic containers in Parser (issue bytedeco/javacv#659)
    • Add "nowarnings" option for the @Platform(compiler=...) value to suppress all warnings
    • Have Builder generate base JNI functions into jnijavacpp.cpp for better iOS support (issue #213)
    • Output single value setters for containers in Parser to avoid surprises (issue #217)
    • Add Parser support for C++11 using declarations inheriting constructors (issue bytedeco/javacpp-presets#491)
    • Fix compiler error when defining std::set or std::unordered_set with Parser
    • Make Parser honor Info.skip() for enumerators and function pointers as well
    • Add LoadEnabled interface to allow classes to modify their ClassProperties at runtime
    • Move sizeof() and offsetof() data to global variables to prevent StackOverflowError in JNI_OnLoad() (issue bytedeco/javacpp-presets#331)
    • Propagate within Parser type information from macros to other macros referencing them
    • Add support for JNI_OnLoad_libname() naming scheme for iOS via new platform.library.static=true property
    • Improve the clarity of error messages on Parser failures
    • Fix Parser issues with multiple typedef declarations in a single statement
    • Require Info.annotations("@Name") to pick up alternate names from attributes
    • Add @Platform(exclude=...) annotation value to remove header files from inherited @Platform(include=...
    • Fix a few issues with Parser, including missing PointerPointer member setters (issue bytedeco/javacpp-presets#478)
    • Fix potential race conditions and various issues with Loader that could prevent libraries like MKL from working properly
    • Add Loader.addressof() to access native symbols, usable via optional ValueGetter/ValueSetter in FunctionPointer
    • Add BuildEnabled interface to allow InfoMapper classes to participate in the build
    • Try to use symbolic links in Loader.load() for output filenames specified with the # character (useful for libraries like MKL)
    • Fix Parser incorrectly resolving type definitions with classes of the same name in parent namespaces
    • Fix Generator compile errors for const template types of @Adapter classes using the @Cast annotation
    • Call Loader.createLibraryLink() when executing the user specified Builder.buildCommand as well
    • Introduce new platform.extension property to manage more than one set of binaries per platform
    • Catch SecurityException in Loader.getCacheDir() (pull #198)