All Versions
Latest Version
Avg Release Cycle
91 days
Latest Release
293 days ago

Changelog History
Page 2

  • v1.4.3 Changes

    October 15, 2018
    • Add support for linux-mips64el with (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 and 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 and (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 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 Changes

    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,, and
    • 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 Changes

    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 Changes

    January 17, 2018
    • Output to log all commands executed for Builder.buildCommand via ProcessBuilder
    • Switch architecture in 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
  • v1.3.4._skil

    December 10, 2017
  • v1.3.3 Changes

    July 25, 2017
    • Call malloc_trim(0) after System.gc() on Linux to make sure memory gets released (issue bytedeco/javacpp-presets#423)
    • Make public the Pointer.formatBytes() and Pointer.parseBytes() static methods
    • Use Integer.decode() instead of parseInt() on integer literals to support hexadecimal and octal numbers
    • Add Builder.encoding option to let users specify I/O character set name (issue bytedeco/javacpp-presets#195)
    • Prevent race condition that could occur in Loader.cacheResource() (pull #188)
    • Fix potential compile errors with Android caused by superfluous typedef from Generator (issue #186)
    • Fix Parser translation of strings containing the "::" subsequence (issue #184)
    • Prevent Parser from overwriting target classes when nothing was parsed
    • Fix Parser error on member variables with initializers plus Info.skip() (issue #179)
    • Fix Parser incorrectly recognizing values as pointers when const is placed after type (issue #173)
    • Add Parser support for C++11 using declarations that act as typedef (issue #169)
    • Let Parser accept variables initialized with parentheses (issue #179)
    • Fix Parser confusion between attributes and namespace-less templates (issue #181)
    • Fix issue with Loader.getCallerClass() when a SecurityManager cannot be created (issue #176)
    • Make it possible to rename enumerators of C++ enum class (issue #180)
    • Make the arbitrary resources available to process executed with Builder.buildCommand via the BUILD_PATH environment variable
    • Prevent Parser from outputting setters for const member pointers
    • Add support for arrays of function pointers
    • Let users bundle arbitrary resources, have them extracted in cache, and used as include or link paths (pull #43)
    • Fix potential formatting issues with OutOfMemoryError thrown from Pointer
    • Fix Loader.getCallerClass() not using the output from the SecurityManager (pull #175)
    • Fix Parser not considering empty class, struct, or union declarations as opaque forward declarations
    • Provide ByteIndexer and BytePointer with value getters and setters for primitive types other than byte to facilitate unaligned memory accesses
    • Add a BuildMojo.buildCommand parameter that lets users execute arbitrary system commands easily with ProcessBuilder
  • v1.3.2 Changes

    March 10, 2017
    • Add new "org.bytedeco.javacpp.cachedir.nosubdir" system property to restore old behavior (issue #167)
    • Prevent Pointer from copying array data from NIO buffers that are also direct (issue bytedeco/javacpp-presets#380)
    • Fix SharedPtrAdapter and UniquePtrAdapter of the Generator for const types (issue #166)
    • Prevent Loader from loading system libraries, which causes problems on Android 7.x (issue bytedeco/javacv#617)
    • Make Parser strip return type annotations when naming FunctionPointer (issue #162)
    • Let Pointer log debug messages when forced to call System.gc()
    • Fix Parser handling of std::map and of documentation comments containing the "*/" sequence
    • Add portable and efficient totalPhysicalBytes(), availablePhysicalBytes(), totalProcessors(), totalCores(), totalChips() methods
    • Avoid Loader issues with spaces, etc in paths to library files (issue deeplearning4j/nd4j#1564)
    • Prevent Generator from creating duplicate using statements (pull #158)
    • Make Pointer.asBuffer() thread-safe (issue #155)
  • v1.3.1 Changes

    December 24, 2016
    • Fix broken outputDirectory property and corresponding -d command line option (issue #153)
    • Add Loader.extractResources() and cacheResources() methods to extract or cache all resources with given name
    • Fix potential issues with Parser repeating the @ByPtrPtr or @ByPtrRef annotations on parameters
    • To support Scala singleton objects better, consider as static methods from objects that are not Pointer
    • Allow Loader.extractResource() and cacheResource() to extract or cache all files from a directory in a JAR file
    • Create version-less symbolic links to libraries in cache on those platforms where it is useful to link easily
    • Use as fallback in Loader.getCacheDir(), and throw a clear exception on failure
  • v1.3 Changes

    December 07, 2016
    • Print memory sizes in a human-readable format with Pointer.formatBytes()
    • Map standard malloc(), calloc(), realloc(), and free() functions (issue #136)