JavaCpp v1.5.5 Release Notes

Release Date: 2021-03-08 // 7 months ago
    • Ensure System.gc() never gets called with "org.bytedeco.javacpp.nopointergc" (issue tensorflow/java#208)
    • Add Info.immutable to disable generating setters for public data members (pull #461)
    • Map String to char* with Charset.forName(STRING_BYTES_CHARSET) when that macro is defined (pull #460)
    • Fix Loader.ClassProperties not always getting overridden correctly when defined multiple times
    • Allow Loader.load() to also rename executables on extraction to output filenames specified with the # character
    • Add @AsUtf16 annotation to map java.lang.String to unsigned short* (array of UTF-16 code units) (pull #442)
    • Add BasicStringAdapter and corresponding @StdBasicString, @StdU16String, and @StdU32String annotations (pull #448)
    • Fix Parser failures on try blocks as function body, nested class templates, and aliases to namespaces starting with ::
    • Prevent Loader from failing to find, load, or link libraries multiple times
    • Fix Pointer.getPointer() methods sometimes calling the wrong constructor (issue bytedeco/javacv#1556)
    • Prevent Android from trying to load PointerBufferPoolMXBean by using it via reflection (pull #447)
    • Fix Android build properties for NDK r22 and move legacy to android-*-gcc.properties (pull #444)
    • Add support for Mac on ARM processors
    • Fix Loader not searching for libraries in more than one package
    • Prevent Builder from linking with -framework JavaVM when a path to the JVM library is found
    • Replace requires with requires static in JPMS .platform module (pull #436)
    • Let Parser output Info.javaText even for template declarations with no instances
    • Prevent Tokenizer from using long literals for unsigned integers of 16 bits or less
    • Ensure Parser considers >= and <= as single tokens to prevent failures
    • Make Parser use Info.cppTypes to override the type of enum values
    • Fix Parser not using the correct Info.pointerTypes for const& declarations
    • Use pthreads in Generator to detach automatically native threads on exit for Linux and Mac as well
    • Let Loader.load() always succeed on optional libraries only available with extensions
    • Fix Builder.addProperty() incorrectly appending values together

Previous changes from v1.5.4

    • Fix Parser not producing PointerPointer parameters for FunctionPointer subclasses
    • Let Builder copy even those platform.executable files without prefix or suffix
    • Add missing declaration for GetCurrentThreadId() in Generator when NO_WINDOWS_H is defined
    • Process #undef directives to allow redefining macros with Parser (issue bytedeco/javacpp-presets#935)
    • Pick up in Parser methods specified with override, in addition to virtual (issue #419)
    • Let Parser create a separate Java peer class when Info.pointerTypes is different for types prefixed with const
    • Fix Generator for @Virtual methods protected in subclasses by casting to superclass (issue #419)
    • Add missing values to Info.Info(Info) and fix incorrect Info.skipDefaults(boolean) (issue #420)
    • Add PointerBufferPoolMXBean to track allocations and deallocations of Pointer (pull #413)
    • Change the @Platform(executable=... property to an array and allow bundling multiple files per class
    • Prevent Builder unnecessarily linking with -framework JavaVM to fix GraalVM Native Image on Mac (issue #417)
    • Add Pointer.getPointer() methods as shortcuts for new P(p).position(p.position + i) (issue #155)
    • Fix Generator for cases when a FunctionPointer returns another FunctionPointer
    • Fix Parser failure with auto keyword of C++11 used as placeholder type specifier or for trailing return type (issue #407)
    • Add Builder.configDirectory option to let Generator output files that GraalVM needs for AOT compilation (issue eclipse/deeplearning4j#7362)
    • Fix Parser error on template<> containing non-type parameters without names (issue bytedeco/javacpp-presets#889)
    • Bundle also the vcruntime140_1.dll and msvcp140_1.dll redist files from Visual Studio
    • Fix Builder for different "java.home" path returned by latest JDKs from Oracle (pull #400)
    • Refactor Builder a little to work around issues with Gradle
    • Log as warnings SecurityException thrown on Loader.getCacheDir() instead of swallowing them
    • Fix memory leak that occurs with "org.bytedeco.javacpp.nopointergc" (issue bytedeco/javacpp-presets#878)
    • Take into account platform.library.path when extracting executables and their libraries on Loader.load() (issue bytedeco/javacv#1410)
    • Move init code for Loader.getPlatform() to Detector to avoid warning messages (issue #393)
    • Add HyperslabIndex class with offsets, strides, counts, and blocks parameters (pull #392)
    • Add Index class to allow overriding how the index is calculated in Indexer (issue #391)