All Versions
36
Latest Version
Avg Release Cycle
67 days
Latest Release
203 days ago

Changelog History
Page 1

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

    January 17, 2018
    • 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)
  • v1.3.4_skil

    December 10, 2017