All Versions
38
Latest Version
Avg Release Cycle
72 days
Latest Release
168 days ago

Changelog History
Page 1

  • v1.5.4

    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

    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

    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

    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

    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

    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

    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
  • v1.4.3

    October 15, 2018
    • Add support for linux-mips64el with linux-mips64el.properties (pull #268)
    • Enhance Generator with @ByPtr for primitive types and @NoException for FunctionPointer methods
    • Add BooleanPointer and BooleanIndexer to access arrays of boolean values with sizeof(jboolean) == 1
    • Let Parser skip over static_assert() declarations of C++11
    • Fix android-arm-clang.properties and android-x86-clang.properties for builds with NDK r18 (pull #263)
    • Add to default InfoMap missing int value type and IntPointer pointer type for wchar_t
    • Add Loader.getLoadedLibraries() method for debugging purposes and fix flaky BuilderTest (issue #245)
    • Call PointerScope.attach() as part of Pointer.deallocator(), instead of init(), to support custom deallocators as well
    • Fix Parser failing when a value of an std::pair basic container is also an std::pair (issue bytedeco/javacpp-presets#614)
    • Fix build issues with android-arm and recent versions of the NDK (pull #256)
    • Add platform.preloadresource property to be able to preload libraries from other Java packages
    • Make Builder accept multiple options for platform.link.prefix and platform.link.suffix (pull #250)
    • Let Loader rename JNI libraries when "already loaded in another classloader" (issue deeplearning4j/deeplearning4j#6166)
    • Add new @CriticalRegion annotation to allow zero-copy access to data of Java arrays (pull #254)
    • Allow Builder to create links for resource libraries even when no Java classes are built
    • Fix Loader.cacheResource() creating a subdirectory named "null" when caching a top-level file
    • Update README.md with references to newly published Basic Architecture of JavaCPP and Mapping Recipes for C/C++ Libraries
    • Prevent Parser from appending annotations to setter methods of variables and for basic containers to satisfy the Generator
    • Have Parser wrap the insert() and erase() methods of basic containers to allow modifying lists and sets
    • Let Parser create mutable instances of map containers without const prefix (issue bytedeco/javacpp-presets#595)
    • Fix Parser sometimes ignoring define of const containers (pull bytedeco/javacpp-presets#547)
    • Explain the purpose of the intern() methods generated for Java enums
    • Clarify that Loader.load() can throw UnsatisfiedLinkError when interrupted
    • Synchronize Loader.loadLibrary() to fix potential race condition (pull #246)
  • v1.4.2

    July 17, 2018
    • Add Loader.getJavaVM() method to get the JNI JavaVM object as required to initialize some libraries
    • Fix Parser from outputting accessors not available with std::forward_list or std::list
    • Use pthread_setspecific() in Generator to detach automatically native threads on exit for Android (pull #243)
    • Fix issues with anonymous classes by calling getEnclosingClass() instead of getDeclaringClass()
    • Add android-arm-clang.properties, android-arm64-clang.properties, android-x86-clang.properties and android-x86_64-clang.properties
    • Search in linkpath before preloadpath to avoid copying or loading unwanted libraries
    • Fix Builder not bundling libraries containing a # fragment only useful at load time
    • Make Parser take into account implicit constructors even when inheriting some with using declarations
    • Pick up Parser translation of enum and macro expressions from Info.javaNames
    • Let Parser define Info.pointerTypes also for partially specialized templates with default arguments
    • Tweak Pointer.formatBytes() to increase the number of digits returned (issue #240)
    • Enhance InfoMap and StringAdapter with default mappings and casts for std::wstring
    • Templatize StringAdapter to allow other character types like wchar_t and add corresponding @StdWString annotation
    • Prevent Loader from creating symbolic links to rename libraries, which does not always work
    • Fix memory leak that occurs with "org.bytedeco.javacpp.nopointergc" (issue #239)
    • Make Generator use GENERIC_EXCEPTION_TOSTRING macro on GENERIC_EXCEPTION_CLASS instead of the default what()
    • Fall back on Android-friendly System.loadLibrary() in Loader.load() instead of "java.library.path" (issue bytedeco/javacv#970)
    • Add to Java enums an intern() method and use it in toString() to return non-null strings
    • Add PointerScope to manage more easily the resources of a group of Pointer objects
    • Fix Parser failing on const void*& or similar function arguments, and on constructors of class templates
    • Add Info.skipDefaults to have the Parser ignore default function arguments and prevent method overloading
    • Accelerate copy and extraction of resources by using larger buffers for file operations
    • Fix Parser incorrectly referring to function arguments with impossibly qualified names
    • Allow using new Info().enumerate() to map all C++ enum to Java enum types by default
    • Fix Parser issues surrounding enum classes, anonymous namespaces, and pure virtual classes
    • Avoid synchronized on first call to physicalBytes() in Pointer.deallocator() to reduce contention (pull #232)
  • v1.4.1

    March 29, 2018
    • Enhance Loader.createLibraryLink() by allowing to create symbolic links in other directories
    • Fix Parser failing on enum declarations where the first line is a macro (issue #230)
    • Make call to Pointer.physicalBytes() thread safe and remove lock (issue #231)
    • Add Info.enumerate to let Parser map C++ enum classes to Java enum types (issue #108)
    • Prevent Loader from loading twice copies of the same DLL (issue deeplearning4j/deeplearning4j#4776)
    • Add a BuildMojo.targetDirectory parameter to set a directory containing Java files generated by buildCommand
    • Fix missing jnijavacpp.cpp when processing classes from different packages (issue #228)
    • Enhance Loader.addressof() by making it try harder to find symbols on Linux and Mac OS X
    • Add get() and toString() methods to basic containers defined in Parser
    • Fix Parser ignoring Info.define and other information for macros actually defined
    • Fix SharedPtrAdapter and UniquePtrAdapter failing to take ownership of temporary objects
    • Fix properties for android-arm64 and android-x86_64 platforms that need API level 21
    • Add "org.bytedeco.javacpp.pathsfirst" system property to let users search "java.library.path", etc before the class path
    • Add Parser support for _Bool, _Complex, _Imaginary, complex, imaginary types from C99
    • Fix Generator incorrectly splitting type names for template arguments containing function types
    • Fix NullPointerException in Builder when copying resources for static libraries
    • Let Generator pick up @NoException annotations from super classes as well
    • Add -stdlib=libc++ option to iOS properties, required by clang++ to support C++11 (pull #221)
    • Make it possible to define read-only containers with Parser by prepending const (issue #223)
    • Fix Parser failure of variable or function declarations on names starting with ::, among other various small issues
    • Access elements of basic containers defined in Parser with at() instead of operator[] (issue #223)
    • Add third element to @Const annotation to support virtual const functions (pull #224)
    • Create more symbolic links to libraries preloaded by Loader to satisfy libraries like MKL
    • Work around in Builder the inability to pass empty arguments on Windows
    • Catch more exceptions that can occur in Loader when caching resources (pull #226)
    • Add .a as an allowed library extension for iOS so they can get bundled
    • Fix Parser failing on variables with direct list initialization { ... } (issue #223)
    • Allow Parser to map and cast function pointers to Pointer