All Versions
41
Latest Version
Avg Release Cycle
91 days
Latest Release
797 days ago

Changelog History
Page 1

  • v1.5.7 Changes

    February 11, 2022
    • Add Loader.clearCacheDir() along with new ClearMojo and -clear command line option
    • Speed up Loader on Windows when there are no symbolic links or library versions (pull #512)
    • Enhance Pointer.physicalBytes() by excluding shared pages from memory-mapped files, etc (issue #468)
    • Fix Parser not correctly encoding files of top-level classes produced with @Properties(target=..., global=...)
    • Add Pointer.interruptDeallocatorThread() method to make JavaCPP classes eligible for GC (discussion bytedeco/javacpp-presets#1115)
    • Let Parser output the content of Info.javaText in the case of FunctionPointer as well
    • Fix TokenIndexer failure on macros using the concat ## operator with empty arguments (issue #525)
    • Let Parser support arrays of anonymous struct or union containing another one (discussion #528)
    • Prevent Parser from outputting duplicate Pointer constructors for basic containers
    • Fix Generator compiler errors on callback functions returning objects without default constructors
    • Ensure Builder copies resources only from the first directories found in the paths
    • Add Loader.getCanonicalPath() to work around bugs in File.getCanonicalPath() on Windows (pull #519)
    • Add FunctionPointer and @Virtual methods missing from config files required by GraalVM Native Image
    • Let Tokenizer convert characters using ASCII escape sequences '\x...' to normal hexadecimal values 0x...
    • Fix Parser incorrectly mapping default function arguments containing multiple template arguments
    • Fix Parser failures on variadic templates calling sizeof...() and on variables initialized from template values
    • Prevent Parser from failing on nonexistent header files contained in @Platform(exclude=...)
    • Add classOrPackageNames parameter to CacheMojo (pull #510)
  • v1.5.6 Changes

    August 02, 2021
    • Add missing export to module-info.java file for presets package (pull #508)
    • Add @NoException(true) value to support overriding virtual noexcept functions
    • Bundle more DLLs from UCRT to fix the systems presets on Windows
    • Fix Pointer.sizeof() method for subclasses of subclasses for primitive types (issue bytedeco/javacpp-presets#1064)
    • Throw more accurate UnsatisfiedLinkError when Loader.load() fails to find JNI libraries
    • Let Parser check Info.skipDefaults also for types to ignore default constructors (issue #493)
    • Fix Parser failure on enum declarations without enumerators
    • Let Generator use the third element of @Cast(value) on return values passed to adapters (issue tensorflow/java#345)
    • Prevent Generator from swallowing exceptions caught on Buffer.array() (pull #504)
    • Add enum classes as well as resources missing from config files required by GraalVM Native Image
    • Let Parser annotate && parameters with new @ByRef(true) value used by Generator to call std::move()
    • Fix Parser overlooking anonymous class, struct or union with comments after } (issue #501)
    • Add Info.beanify to have Parser generate JavaBeans-style getters and setters (pull #495)
    • Allow Parser to use Info.javaNames for function names containing parameters as well (issue #492)
    • Fix Parser producing incorrect calls to function templates with non-type parameters (issue #491)
    • Add missing presets/package-info.java required for OSGi and add profile for M2Eclipse (pull #490)
    • Remove unnecessary mutex lock for pthreads on callbacks in Generator (pull #489)
    • Fix @AsUtf16 handling for setter methods paired with getters in Generator (pull #488)
    • Allow defining NO_JNI_DETACH_THREAD to avoid overhead from pthreads on callbacks (issue #486)
    • Pick up @Allocator, @CriticalRegion, @NoException in Generator from @Properties(inherit=classes) as well (issue #484)
    • Add support for Deleter of pointer types to UniquePtrAdapter
    • Add @Platform(pattern=...) annotation value to allow matching with regular expressions as well
    • Allow Parser to consider function pointers declared with using but without indirections
    • Let Parser map to annotations whole expressions starting with the __attribute__ keyword
    • Fix Parser sometimes failing to create template instances with default arguments (issue #478)
    • Enhance Parser to handle typedef correctly in the case of enum as well (issue #477)
    • Upon Pointer.getPointer(Class<P>) scale position, limit, and capacity with sizeof() (pull #476)
    • Fix Parser incorrectly translating non-documentation comments as part of documentation comments (issue #475)
    • Set Pointer.maxPhysicalBytes to 4 * Runtime.maxMemory() by default as workaround for Android, memory-mapped files, ZGC, etc (issue #468)
    • Ensure synchronized code in Pointer gets skipped with "org.bytedeco.javacpp.nopointergc" (issue tensorflow/java#313)
    • Add protected Pointer.offsetAddress() and use it for getPointer() instead of position()
    • Fix potential infinite loop in Parser when processing class, struct, or union declarations
    • Have Parser wrap the erase() methods of basic containers with iterators to allow removing from maps
    • Let Parser output the content of Info.javaText in the case of basic containers as well
    • Fix Parser failure on arguments containing multiple array accesses ending with ]]
    • Fix Parser incorrectly considering some array definitions with expressions as multidimensional
    • Log loading errors of optional jnijavacpp as debug messages instead of warnings (issue tensorflow/java#189)
    • Fix memory leak in Pointer.releaseReference() with "org.bytedeco.javacpp.nopointergc" (issue awslabs/djl#690)
    • Fix Parser not stripping annotations from Info.pointerTypes when creating Java peer classes
    • Fix Parser not inheriting constructors with existing Info or with nested templates
    • Add support for std::tuple, std::optional, and std::variant basic containers and fix various Parser failures
    • Add parameter for Loader.load() to return path of a specific executable (pull #466)
    • Use std::uninitialized_copy in VectorAdapter to make sure copy constructors get called (pull #465)
  • v1.5.5 Changes

    March 08, 2021
    • 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
  • v1.5.4 Changes

    September 09, 2020
    • 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)
  • v1.5.3 Changes

    April 14, 2020
    • Deprecate but also fix Indexer.rows(), cols(), width(), height(), and channels() (pull #390)
    • Fix Parser producing invalid wrappers for basic containers like std::set<std::pair<...> >
    • Add compiler options for C++98, C++03, C++14, and C++17 to platform properties files (pull #389)
    • Remove default compiler options from linux-armhf.properties that work mostly only for Raspberry Pi
    • Add Generator support for enum classes with boolean values (issue #388)
    • Fix Parser outputting invalid Java code for enum of boolean, byte, and short types (issue #388)
    • Pick up in Generator the @Namespace annotation from paired method too for global getters and setters (issue #387)
    • Add presets for jnijavacpp and javacpp-platform artifact to fix issues at load time (issue bytedeco/javacv#1305)
    • Prevent potential NullPointerException in Loader.checkVersion() (pull #385)
    • Allow using Charset to avoid UnsupportedEncodingException from BytePointer (pull #384)
    • Add static Pointer.isNull(Pointer p) helper method, for convenience
    • Add MoveAdapter and corresponding @StdMove annotation to support objects that require std::move from C++11
    • Always use File.pathSeparator when passing multiple paths via the BUILD_PATH environment variable
    • Fix Parser not picking up Info for declarations with decltype() specifier
    • Fix Pointer losing its owner when mistakenly ignoring deallocators for const values returned from adapters
    • Remove unnecessary declared Exception from Indexer.close() signature (pull #382)
    • Make sure Parser recognizes base classes of struct as public by default
    • Fix Parser error on initializer lists containing C++11 style { ... } for template instances
    • Change the default mapping of jboolean to BooleanPointer instead of BoolPointer
    • Fix Parser error on function declarations with ... varargs as single parameter
    • Make Parser skip over &&-qualified functions automatically since they cannot be supported
    • Fix Parser annotating pointer cast operator methods with incorrect @Cast (issue #379)
    • Allow Parser to inherit constructors from template classes with using
    • Make Parser honor Info.skip for anonymous struct or union as well
    • Optimize Pointer.sizeof() method of subclasses for primitive types
    • Let users override Info.enumerate on a per-enum basis and allow attributes after enum class
    • Fix Parser not considering identifiers as type names when placed directly after friend or in template<>
    • Check for defined NO_WINDOWS_H macro in Generator to skip #include <windows.h>
    • Provide UIntIndexer and ULongIndexer, treating array and buffer data as unsigned 32- or 64-bit integers, for convenience (issue #376)
    • Fix Parser not evaluating using namespace with respect to the current block (issue #370)
    • Fix exception in Loader when running jlink image with JDK 13+ (pull #375)
    • Fix errors with @Virtual @Name("operator ...") in Generator by using Java names for C++ (issue #362)
    • Apply in Parser missing const to parameters of @Virtual functions using adapters
    • Use in Generator C++11 override keyword for @Virtual functions (pull #373)
    • Speed up Loader.load() by caching results returned from Loader.findLibrary() (issue #287)
    • Pick up Info correctly in Parser also for anonymous function pointers with const parameters
    • Make Parser apply Info.translate in the case of enumerators as well
    • Fix compiler failures in Builder with platform properties containing relative paths
    • Let Parser rename types using Info.javaNames in addition to valueTypes and pointerTypes (pull #367)
    • Include in the defaults of InfoMap mappings missing for the std::array and jchar types
    • Fix various Parser failures with attributes on constructors, empty macros, enum classes, friend classes, inherited constructors, and keywords in parameter names
    • Add to Parser support for C++11 attributes found within [[ and ]] brackets
    • Consider Pointer values maxBytes or maxPhysicalBytes suffixed with % as relative to Runtime.maxMemory() (pull #365)
    • Prevent Parser from considering constexpr operator declarations as const types
    • Fix on Loader.load() the default library name of classes without @Properties(target=..., global=...)
    • Prevent Parser from outputting asPointer() cast methods with multiple inheritance (issue #360)
    • Add CacheMojo to help extract binaries and resources used by command line tools outside of the JVM
    • Fix Android build properties for NDK r20b (pull #357)
  • v1.5.2 Changes

    November 05, 2019

    November 5, 2019 version 1.5.2

    • Provide ByteIndexer with value getters and setters for unsigned byte or short, half, bfloat16, and boolean types as well
    • Introduce PointerScope.extend() to prevent deallocation on the next call to close()
    • ๐Ÿ‘‰ Make Generator avoid ambiguous conversion errors from UniquePtrAdapter to std::unique_ptr (pull #353)
    • ๐Ÿ›  Fix Parser using fully qualified names for @Name annotations of nested classes (issue #352)
    • Add Parser support for macro expansion of __VA_ARGS__
    • ๐Ÿ›  Fix Builder not processing all classes when given .** as input (issue bytedeco/javacv#1311)
    • Introduce reference counting in Pointer and retrofit PointerScope to use it
    • ๐Ÿ›  Fix Parser incorrectly inheriting default constructors multiple times with using
    • ๐Ÿ‘ Allow in Parser fully qualified names as Info.valueTypes for enumerators as well
    • 0๏ธโƒฃ Perform template substitution in Parser also for default argument values (pull #343)
    • Introduce PointerScope.forClasses to limit the Pointer classes that can be attached to a given instance
    • โž• Add support for custom Allocator to VectorAdapter and custom Deleter to UniquePtrAdapter
    • ๐Ÿ‘ Enable support for OSGi bundles (pull #332)

    September 5, 2019 version 1.5.1-1

    • ๐Ÿ‘‰ Use the native thread ID as name on AttachCurrentThread() (pull #339)
    • ๐Ÿ‘‰ Make sure we canRead(), canWrite(), and canExecute() what Loader.getCacheDir() returns
    • Prevent Generator from copying data unnecessarily when returning Java arrays from adapters (issue #317)
    • ๐Ÿ›  Fix Parser issues when casting const pointers or enumerating anonymous enum declarations
    • โž• Add Info.objectify to map global functions without using the static modifier, similarly to Scala companion objects
    • ๐Ÿ‘ Allow once more abstract subclasses of FunctionPointer (issue #318)
  • v1.5.1 Changes

    July 09, 2019
    • Make sure Generator ignores deallocators on const values returned from adapters (issue #317)
    • Accelerate Loader.extractResource() for directories already cached, also preventing failures (issue #197)
    • Avoid Parser writing allocateArray() when single int, long, float, or double constructor already exists (issue bytedeco/javacv#1224)
    • Expose all platform properties to process executed with Builder.buildCommand via environment variables, with names uppercase and all . replaced with _
    • Let Parser add @Name or @Namespace annotations to non-translated enumerators as well
    • Make Parser pick up the names of type aliases for function pointers declared with using and prevent NullPointerException
    • Fix Parser failing on lambda expressions found inside member initialization lists of constructors
    • Add special support for constexpr variables in Parser by disabling their member setters automatically
    • Fix Parser not placing & and * at the right place inside template arguments containing function declarations
    • Support more basic containers in Parser by comparing their names in a case-insensitive manner and add annotations missing from index types
    • Fix Generator taking the @By* annotation of the paired method for the index instead of the value argument of a setter
    • Fix Parser sometimes considering global C++ identifiers starting with :: as if they were local
    • Change default value for Pointer.maxPhysicalBytes to Pointer.maxBytes + Runtime.maxMemory() (pull #310)
    • Add Loader.getVersion() and checkVersion() to get versions of Maven artifacts and check against JavaCPP (issue #194)
    • Fix compile errors caused by Generator occurring with callback functions returning a value by reference
    • Make Builder expand entries from the user class path with * as basename to all JAR files in the directory
    • Prevent Loader from creating symbolic links pointing to themselves by comparing with Path.normalize() (pull #307)
    • Fix Loader.cacheResource() with the "jrt" protocol as used by jlink (pull #305)
    • Fix compiler error with SharedPtrAdapter and UniquePtrAdapter in callback functions (pull #304)
    • Start Pointer.DeallocatorThread with setContextClassLoader(null) as required by containers (issue deeplearning4j/deeplearning4j#7737)
    • Add -print command line option to access platform properties externally, for example, inside build scripts
    • Add to InfoMap default pointer and value types for ssize_t, char16_t, char32_t, std::u16string, and std::u32string
    • Support multiple instances of FunctionPointer subclasses, up to the value in @Allocator(max=...) (issue bytedeco/javacpp-presets#683)
    • Allow suffixing library names with : to specify exact relative paths to libraries, ignoring any additional prefix or suffix
    • Prevent Loader.load() from trying to load library files that do not exist or to create symbolic links to them
    • Let Loader.load() extract libraries suffixed with ##, but still ignored for copying by Builder
    • Make sure Loader.load() also initializes classes that are passed explicitly
    • Fix Loader.createLibraryLink() incorrectly truncating library versions when there is one before and another after the suffix
    • Iterate extensions of libraries or executables on Loader.load() in reverse to be consistent with properties overriding
    • Allow prefixing library names with : to have Loader consider them as filenames with prefix and suffix already included
    • Add Loader.loadGlobal() to load symbols globally as often required by Python libraries (issue ContinuumIO/anaconda-issues#6401)
  • v1.5.1-1 Changes

    September 05, 2019
    • Use the native thread ID as name on AttachCurrentThread() (pull #339)
    • Make sure we canRead(), canWrite(), and canExecute() what Loader.getCacheDir() returns
    • Prevent Generator from copying data unnecessarily when returning Java arrays from adapters (issue #317)
    • Fix Parser issues when casting const pointers or enumerating anonymous enum declarations
    • Add Info.objectify to map global functions without using the static modifier, similarly to Scala companion objects
    • Allow once more abstract subclasses of FunctionPointer (issue #318)
  • v1.5 Changes

    April 10, 2019
    • Have Parser output setter as dummy parameter name for setter methods to clarify usage
    • Add Indexer.strides(long... sizes) and use as default strides when not specified by the user
    • Add long... constructors, getters, and setters to CLongPointer and SizeTPointer for convenience
    • Fix some Generator issues with FunctionPointer passed or returned @ByPtrPtr
    • Use ModiTect to compile module-info.java with JDK 8 and preserve backward compatibility
    • Add platform.executable and platform.executablepath properties to bundle executables and extract them with Loader.load()
    • Create symbolic links for all libraries preloaded by Loader as they get loaded to satisfy libraries like MKL
    • Prevent ClassCastException in Loader on illegal system properties (issue #289)
    • Fix Parser not replacing all type names of the base class with Info.flatten (issue #288)
    • Let BuildMojo return to the Maven project the detected host platform as ${javacpp.platform.host}
    • Have BuildMojo output a JPMS friendly name for the platform and extension back to the Maven project as ${javacpp.platform.module}
    • Add Builder.clean option to delete the outputDirectory before generating files
    • Let Parser pick up Info explicitly for all constructors by considering their names as functions (issue #284)
    • Fix Parser not always generating files using the simple names of classes
    • Add a BuildMojo.targetDirectories parameter to allow setting multiple directories where to find generated Java files
    • Add Parser support for attributes appearing after struct declarations (issue bytedeco/javacpp-presets#685)
    • Fix Parser overlooking Info for constructors inside namespaces or templates (issue #284)
    • Fix Parser applying some Info.annotations at the wrong place (issue #284)
    • Make Parser behave the same with @Properties having only one out of global or target value set
    • Enhance UniquePtrAdapter with the ability to move pointers out with the && operator
    • Let Parser map constructors also for abstract classes with Info.virtualize
    • Fix Parser taking the global package as the target package even when both are set
    • Consider @Properties(global=..., helper=...) class names without "." as relative to target (pull bytedeco/javacpp-presets#669)
    • Use regex in Parser to translate more Doxygen commands into Javadoc tags (pull #278 and pull #281)
    • Do not let Parser map operator=() when prefixing container name with const (pull #280)
  • v1.4.4 Changes

    January 11, 2019
    • Allow users to override platform properties via system properties starting with "org.bytedeco.javacpp.platform."
    • Have BuildMojo output its class path back to the Maven project as ${javacpp.platform.artifacts}
    • Fix potential NullPointerException in Loader.findResources() under the bootstrap class loader
    • Add size() and stride() methods to Indexer for convenience
    • Let Parser skip over C++11 style { ... } member initializer lists (pull bytedeco/javacpp-presets#642)
    • Fix Parser not picking up Info for cast operator declarations with const, &, or * (issue bytedeco/javacpp-presets#377)
    • Add validation for Builder.environmentVariables to prevent NullPointerException in executeCommand()
    • Update android-arm-clang.properties and android-x86-clang.properties to API level 21 (Android 5.0) for consistency and forward compatibility
    • Replace calls to Class.getResource() with Loader.findResource() to work around issues with JPMS (pull #276)
    • Enhance Loader.findResources() with Class.getResource() and search among parent packages
    • Take longest common package name among all user classes for the default output path of Builder
    • Add Bfloat16Indexer to access short arrays as bfloat16 floating point numbers
    • When Indexer.sizes.length != 3, return -1 for rows(), cols(), width(), height(), and channels() (pull #275)
    • Synchronize Loader.cacheResources() on Runtime to avoid OverlappingFileLockException with multiple class loaders (issue bytedeco/javacpp-presets#650)
    • Annotate BuildMojo as threadSafe
    • Fix Generator errors for @StdString and other @Adapter on @Virtual return values
    • Use simple name from @Properties(target=..., global=...) class as default for @Platform(library=...) name
    • Make sure Generator does not use position of @Opaque Pointer output parameters with @Adapter (pull bytedeco/javacpp-presets#642)
    • Prevent Builder from trying to use Pointer as library name for the output
    • Add Builder.generate option and corresponding ParseMojo to prioritize parsing header files
    • Fix Parser mapping of const function pointer variable declarations
    • Enhance Loader.cacheResource() with support for HTTP connections
    • Add module-info.java and create a multi-release JAR to comply with JPMS (pull #252)
    • Prevent Parser from outputting twice the same Info.javaText by using it as declaration signature
    • Provide default Info for std::string* and std::wstring* mapping to BytePointer, and CharPointer and IntPointer
    • Ensure Parser skips over attributes of friend declarations or function definitions that are not used
    • Do not let Parser output @Override when overloading a method with less parameters using default arguments
    • Allow Builder to execute javac and java for convenience, and remove "." from class path (issue #192)
    • Enhance support for java.nio.Buffer by taking into account offset, position, limit, and capacity on function calls
    • Make sure Parser always uses the short version of identifiers for Java class declarations
    • Prevent Parser from inheriting constructors with using when not accessible or of incomplete template instances
    • Add default Info to map noexcept attribute from C++11 to @NoException annotation
    • Fix Parser failures on variadic function template arguments ... and destructor attributes (pull bytedeco/javacpp-presets#622)
    • Add @Properties(global=...) value to allow Parser to target Java packages (pull #252)
    • Fix Generator output for @Const parameters of function pointers