All Versions
39
Latest Version
Avg Release Cycle
78 days
Latest Release
107 days ago

Changelog History
Page 3

  • v1.2.5 Changes

    November 13, 2016
    • Add support for decltype() declarations to the Parser (issue #135)
    • Fix Generator when a FunctionPointer contains methods that start with "get" or "put" (issue #137)
    • Enhance Parser to let users skip the default values of arguments, as well as classes when one base class is skipped
    • Fix Parser not properly mapping the type of long anonymous enums
    • Take into account const on function parameters when looking up in InfoMap, and fix some incorrectly translated macros into variables
    • Add to InfoMap.defaults more names that are reserved in Java, but not in C++
    • Add via @ByPtrRef support for function pointers passed by reference, as well as support for Info.javaText with typedef
    • Make sure Parser exhausts all combinations of method parameter types even with duplicates (issue bytedeco/javacv#518)
    • Make Loader cache libraries (in ~/.javacpp/cache/ by default) instead of using temporary files (pull #120)
    • Have Parser annotate the allocate() functions and not the actual constructors (issue bytedeco/javacpp-presets#297)
    • Fix Parser handling of class, struct, or union types with variables declared in the same statement
    • Add missing platform.link to psapi required by some versions of Visual Studio (issue bytedeco/javacpp-presets#298)
    • Make sure default values placed in nullValue by the Parser have the right type (issue bytedeco/javacv#518)
    • Accelerate call to Pointer.physicalBytes() on Linux (issue #133)
    • Fix Parser incorrectly skipping over some template function declarations
    • Allow C++ types to be prefixed by class, struct, or union to work around name clashes (pull bytedeco/javacpp-presets#266)
    • Properly expand the special predefined __COUNTER__ macro (pull bytedeco/javacpp-presets#266)
    • Create all missing directories in the paths to the source files created by Generator
  • v1.2.4 Changes

    September 16, 2016
    • Insure Parser properly ignores the auto, mutable, register, thread_local, and volatile C++ keywords for storage classes
    • Fix Generator and Parser for types like std::unordered_map<std::string,std::pair<int,int> > (pull bytedeco/javacpp-presets#266)
    • Add std::forward_list, std::priority_queue, std::unordered_map, and std::unordered_set to the list of "basic/containers" in InfoMap
    • Work around linux-armhf not being properly detected with OpenJDK (issue #105)
    • Fix Parser not accepting namespace aliases with :: tokens in them (issue bytedeco/javacpp-presets#265)
    • Add "org.bytedeco.javacpp.maxphysicalbytes" system property to force calls to System.gc() based on Pointer.physicalBytes()
    • Allow strings ending with "t", "g", "m", etc to specify the number of bytes in system properties (issue #125)
    • Add Info.linePatterns to limit the lines from header files that the Parser has to process
    • Introduce "platform.compiler.hardfpu" option inside android-arm.properties to target armeabi-v7a-hard
    • Add UniquePtrAdapter and corresponding @UniquePtr annotation to support unique_ptr containers (pull bytedeco/javacpp-presets#266)
    • Fix Parser not expecting friend class declarations that start with :: (pull #122)
    • Synchronize memory allocation in Pointer to avoid OutOfMemoryError when low on memory
    • Make it clear that Indexable.createIndexer() can throw a NullPointerException (issue bytedeco/javacv#437)
    • Escape quotes when parsing default value for the nullValue of @ByRef or @ByVal (pull #119)
    • Let Parser accept identifiers in addition to integer literals for bit fields (issue #118)
    • Fix Loader.load() not renaming a library when previously loaded under a different name
  • v1.2.3 Changes

    August 01, 2016
    • Add support for data member pointers as pseudo-FunctionPointer (issue #114)
    • Change the packaging type to jar since maven-plugin causes issues with sbt and Ivy (issue #113)
    • Include new platform.compiler.debug options inside the default properties file (pull #90)
    • Always use the platform.compiler.default options unless @Platform(compiler="!default", ...) is specified
    • Move optimization options from platform.compiler.output to platform.compiler.default, allowing users to override
    • Create all missing directories in the path to the target file of Parser
    • Parse properly custom enum types, found after the ':' token in C++11
    • Output compiled libraries to user specified class path by default for input classes inside JAR files, etc
    • Add HalfIndexer to access short arrays as half-precision floating point numbers
  • v1.2.2 Changes

    July 08, 2016
    • Prevent creating unnecessary garbage when using Indexer on simple arrays with a stride of 1 (issue deeplearning4j/nd4j#1063)
    • Add "org.bytedeco.javacpp.maxretries" system property, the number times to call System.gc() before giving up (defaults to 10)
    • Deallocate native memory in a dedicated thread to reduce lock contention (issue #103)
    • Fix Javadoc links for externally referenced classes
    • Prevent Android system libraries from getting copied or extracted
    • Insert in Indexer an indexable field optionally set by the user for convenience
    • Fix potential ParserException on comments found after annotations before function declarations
    • Fix IndexerTest potentially failing with OutOfMemoryError (issue bytedeco/javacpp-presets#234)
    • Preload libraries to work around some cases when they refuse to load once renamed (issue deeplearning4j/libnd4j#235)
    • Fix compilation error on some linux-ppc64le platforms (issue deeplearning4j/libnd4j#232)
    • Make sure Generator defines JavaCPP_getStringBytes() to handle exception messages when using callbacks
  • v1.2.1 Changes

    May 26, 2016
    • Fix Loader crashing on Android (issue bytedeco/javacv#412)
    • Fix NullPointerException on "generic" platforms
    • Throw OutOfMemoryError on allocateArray() for Pointer of primitive types with size > 0 && address == 0 (issue deeplearning4j/nd4j#960)
    • Add the ability the specify, after a # character, the output filename of libraries extracted by Loader.load()
    • Consider FunctionPointer annotated with empty @Namespace as non-member function pointers (issue #99)
  • v1.2 Changes

    May 15, 2016
    • Fix NullPointerException in Builder on invalid java.home system property or inaccessible directories
    • Add parameters to Loader.load() offering more flexibility over the platform properties and library paths
    • Treat all String with Charset.defaultCharset() (or define MODIFIED_UTF8_STRING for old behavior) (issue #70)
    • Fix NullPointerException in Parser on variadic templates (issue #81)
    • Fix Loader.load() error when called right after Builder.build() within the same process
    • Lower Maven prerequisite in the pom.xml file to 3.0 (issue #93)
    • Use Info.cppTypes for all Parser type substitutions, in addition to macros and templates (issue bytedeco/javacpp-presets#192)
    • Make Parser take into account Java keywords not reserved in C++, casting issues with int64_t, and const value types in basic containers
    • Let users define NATIVE_ALLOCATOR and NATIVE_DEALLOCATOR macros to overload global new and delete operators
    • Map jint to int and jlong to long long on Windows as well as all platforms with GCC (or Clang)
    • Fix corner cases when checking for the platform in Generator and Parser
    • Link libraries with "-z noexecstack" on Linux as recommended by HotSpot (pull #90)
    • Set the internal DT_SONAME field in libraries created for Android (issue bytedeco/javacpp-presets#188)
    • Add "org.bytedeco.javacpp.maxbytes" system property, forcing a call to System.gc() when this amount of memory tracked with deallocators is reached
    • Let Parser pick up Info.annotations in the case of function pointers as well
    • Add @Convention(extern=...) value to have Generator produce FunctionPointer with other language linkage than "C"
    • Enhance the indexer package with long indexing, initially via the sun.misc.Unsafe, for now
    • Lengthen the position, limit, and capacity fields of Pointer using long
    • Prevent creating text relocations for shared libraries on Android, which are rejected by recent versions of the SDK
    • Use the outputDirectory as the compiler's working directory (pull #89)
    • Comment with first dimension of multidimensional array inside @Cast (pull #87)
    • Remove throws Exception from Pointer.close() since destructors do not typically throw exceptions (pull #86)
    • Add -nodelete flag to keep generated C++ files after compilation (pull #85)
    • Annotate functions originating from cinclude with @NoException (pull #84)
    • Call JNI_ABORT on release of const arrays (pull #83)
    • Add support for C++11 default and delete on function declarations (issue #80)
    • Add support for C++11 typed enum, with or without enumerator list (issue #78)
    • Add missing space for const types when normalizing template arguments in Parser (issue bytedeco/javacpp-presets#165)
    • Make Builder fail on ClassNotFoundException or NoClassDefFoundError instead of logging warnings
    • Allow Builder to generate native libraries with empty @Platform annotation even without user defined native methods
    • Enhance Parser to support a bit better && tokens and C++11 rvalue references (issue bytedeco/javacpp-presets#160)
    • Add properties for the linux-armhf, linux-ppc64, and linux-ppc64le platforms, and pick up macosx when os.name is darwin
    • Fix NullPointerException in Parser on unexpected forms of function pointers (issue #70)
    • Make sure Generator produces calls to sizeof() and offsetof() for all Pointer classes with allocators
    • Let Parser use adapters in the case of FunctionPointer as well (issue bytedeco/javacpp-presets#145)
    • Prepend "javacpp." to all properties associated with Maven in BuildMojo to avoid name clashes
    • Let users define the GENERIC_EXCEPTION_CLASS macro (default of std::exception) to indicate the base exception thrown by native methods
    • Split type names at :: delimiters before mapping them against templates in Parser
    • Fix swallowed InterruptedException (issue bytedeco/javacv#315)
    • Adjust a few things in Generator preventing @Virtual from working properly in some cases (issue bytedeco/javacpp-presets#143)
    • Fix TokenIndexer inserting an invalid token while expanding macros ending with a backslash (issue #63)
    • Make Parser take Info.skip into account for enum declarations as well
    • Improve the performance of BytePointer.getString() by using strlen()
    • Prevent Generator from initializing classes when preloading them, which can cause problems (issue bytedeco/javacpp-presets#126)
    • Add Info.flatten to duplicate class declarations into their subclasses, useful when a subclass pointer cannot be used for the base class as well
    • Prevent Loader from extracting libraries more than once, which can cause problems (issue bytedeco/javacpp-presets#126)
    • Make Indexer implements AutoCloseable to let us try-with-resources
    • Add missing calls to close() for InputStream and OutputStream in Loader (issue #53)
    • Remove Piper class no longer needed with Java SE 7
    • Let Parser place appropriate Info.javaText() provided by users in the case of destructors as well
    • Fix the Parser skipping over some declarations by mistake and producing invalid comments for macros
    • To let users specify ... varargs as Info.pointerTypes(), have the Parser replace them with array [] when not found on the last parameter
    • Enhance basic support for containers of the style std::vector<std::pair< ... > > with user-friendly array-based setter methods
    • Fix Generator not passing function objects even when annotating FunctionPointer parameters with @ByVal or @ByRef
    • Map bool* to boolean[] tentatively in Parser since sizeof(bool) == sizeof(jboolean) on most platforms
    • Allow Parser to generate @Cast() annotations and overloaded put() methods in basic containers too
    • Move list of basic containers and types to Info.cppTypes of the "basic/containers" and "basic/types" InfoMap entries, letting users change them at build time
    • Fix some Parser issues with typedef and forward declarations inside class definitions
    • Insure Parser maps 64-bit values in C++ enum to long variables (issue #48)
    • Fix Generator trying to cast improperly objects on return from @Virtual functions
    • Make Parser take constexpr, nullptr, and namespace aliases into account, and fix a couple of preprocessing issues with TokenIndexer
    • Fix primitive arrays and NIO buffers not getting updated on return when used as arguments with adapters (issue bytedeco/javacpp-presets#109)
    • Enhance a bit the conversion from Doxygen-style documentation comments to Javadoc-style
    • Remove class check in allocators, which prevented peer classes from being extended in Java, instead relying on super((Pointer)null) in child peer classes, and remove confusing and now unnecessary empty constructors
  • v1.1 Changes

    October 25, 2015
    • Make Generator use actual C++ operators for commonly overloaded ones instead of calling operator??() functions, for better portability
    • Fix potential race condition when deallocating Pointer objects from multiple threads
    • Add logging to Loader.loadLibrary() to help diagnose loading problems (issue #41)
    • Provide new @Platform(pragma=...) value to have Generator output #pragma directives
    • Upgrade all Maven dependencies and plugins to latest versions, thus bumping minimum requirements to Maven 3.0
    • Add new "org.bytedeco.javacpp.cachedir" system property to specify where to extract and leave native libraries to share across multiple JVM instances
    • Provide @Virtual(true) to specify pure virtual functions and prevent Generator from making undefined calls
    • Update properties for Android to detect undefined symbols at compile time, instead of getting errors only at runtime
    • Log when Pointer.deallocator gets registered, garbage collected, or deallocated manually, if Logger.isDebugEnabled() (redirectable to SLF4J)
    • Make Pointer implements AutoCloseable to let us try-with-resources, thus bumping minimum requirements to Java SE 7 and Android 4.0
    • Introduce the concept of "owner address" to integrate Pointer transparently with std::shared_ptr, etc (Thanks to Cyprien Noel for the idea!)
    • Add new "cpp11" option for the @Platform(compiler=...) value to build against the C++11 standard
    • Fix Parser support for the interface keyword of the Microsoft C/C++ Compiler
    • Let Parser pick up names from Info.pointerTypes in the case of function pointers as well
    • Add new "org.bytedeco.javacpp.nopointergc" system property to prevent Pointer from registering deallocators with the garbage collector
    • Add @Properties(names=...) value to specify a list of default platform names that can be inherited by other classes
    • Fix a couple of Parser issues on complex template types (issue #37)
    • Take into account Buffer.arrayOffset() when creating a Pointer from a buffer backed by an array (issue bytedeco/javacv#190)
    • Fix some incorrectly translated comments in Parser (issue #32)
    • Add Parser support for the std::bitset "container", and a bug involving simple types and skipped identifiers
    • Properly parse overloaded new and delete operators, friend declarations, and default constructors with an explicit void parameter (issue #31)
    • Fix a couple of potential NullPointerException in Parser (issue #30)
    • Have the Parser wrap the iterator of some standard C++ containers when useful
    • Use Clang as the default compiler for Mac OS X and iOS (via RoboVM)
    • Adjust BytePointer, CharPointer, IntPointer, and StringAdapter to work with data strings that are not null-terminated (issue #24)
    • Forbid Parser from producing abstract classes, preventing C++ factory methods and such from working properly (issue #25)
    • Fix crash when trying to create objects from abstract classes, to let the exception be thrown on return (issue #26)
    • Switch to GCC 4.9 by default on Android, probably dropping support for Android 2.2, because GCC 4.6 has been dropped from the NDK since r10e
    • Insure Generator casts properly to jweak when calling DeleteWeakGlobalRef() (issue #23)
  • v1.0 Changes

    July 11, 2015
    • Add -undefined dynamic_lookup option to Mac OS X compiler, making its native linker behave a bit better, plus search for libraries suffixed with ".so" too
    • Add missing @Platform(frameworkpath=...) value and corresponding property to set custom framework paths for the linker
    • Add Parser support for the interface keyword of the Microsoft C/C++ Compiler
    • Fix Generator performance issue on classes with a lot of methods (issue bytedeco/javacpp-presets#36)
    • Offer the Apache License, Version 2.0, as a new choice of license, in addition to the GPLv2 with Classpath exception
    • Fix NullPointerException when trying to process an interface class
    • Fix Parser errors on unnamed namespace blocks, preprocessor directives with comments, and empty macros
    • Introduce a nullValue to @ByRef and @ByVal annotations to let us specify what to do when passed null
    • Add properties for android-arm64, android-x86_64, and linux-arm64 platforms
    • Add slow but generic Indexer.putDouble() to complement existing Indexer.getDouble() (useful for testing)
    • Fix and enhance in various ways the support of Parser and Generator for function pointers, virtual functions, and abstract classes
    • Improve Parser check for const references and pointers required to output appropriate @Const annotation
    • Add Info.purify to force the Parser in producing abstract classes
    • Let StringAdapter (via the @StdString annotation) support std::string*, that is to say, pointers to strings
    • Fix Tokenizer failing on some character and string literals
    • Fix Parser errors caused by constructors in typedef struct constructs, included nested ones, and skip over pointer names too (issue bytedeco/javacpp-presets#62)
    • Generalize Info.virtualize to let non-pure virtual functions get annotated with @Virtual native
    • Make VectorAdapter work even with elements that have no default constructor
    • Add Parser support for std::pair as a sort of zero-dimensional container type
    • Fix Parser crash on empty comments (issue #14)
  • v0.11 Changes

    April 04, 2015
    • Clarify with documentation comments various constructors produced by the Parser
    • Add SharedPtrAdapter and corresponding @SharedPtr annotation to support shared_ptr containers
    • Fix a few small issues and work around a few additional corner cases with the Parser and the Generator
    • Provide UByteIndexer and UShortIndexer, treating array and buffer data as unsigned integers, for ease of use
    • Clean up Windows java.io.tmpdir even when program messes with java.class.path (issue #12)
    • In addition to direct NIO buffers, also accept as function arguments non-direct ones backed by arrays (issue bytedeco/javacpp-presets#36)
    • Fix @Virtual callback functions defined inside a @Namespace
    • Adjust TokenIndexer and Parser to handle #if, #ifdef, #ifndef, #elif, #else, and #endif preprocessor directives more appropriately, even when placed in the middle of declarations
    • Append @Documented to annotation types to have them picked up by Javadoc
    • Fix friend functions not getting skipped by the Parser
    • Add Info for __int8, __int16, __int32, and __int64 to InfoMap.defaults
  • v0.10 Changes

    December 23, 2014
    • Fix multiple "platform.preload" or "platform.preloadpath" properties not getting considered by the Loader
    • Fix some Parser exceptions on valid declarations with template arguments, macro expansions, or overloaded cast operators, and make Info.javaName usable in the case of enum
    • Disable DocLint, which prevents the build from succeeding on Java 8 (issue #5)
    • Add new indexer package containing a set of Indexer for easy and efficient multidimensional access of arrays and buffers (issue javacv:317)
    • Use Long.decode() inside the Tokenizer to test more precisely when integer values are larger than 32 bits
    • Have the Parser produce @Name("operator=") ... put(... ) methods for standard C++ containers, avoiding mistaken calls to Pointer.put(Pointer) (issue bytedeco/javacv#34)
    • Let the Parser apply Info.skip in the case of macros as well
    • Remove warning log messages when using the @Raw annotation
    • Let @Virtual @MemberGetter annotated methods return member function pointers of functions defined with @Virtual, useful for frameworks like Cocos2d-x
    • Fix NullPointerException when leaving the includePath, linkPath, or preloadPath Mojo parameter empty
    • Add Info.virtualize to have the Parser generate @Virtual abstract for pure virtual functions in the given classes
    • Add @Virtual annotation and update Generator to support callback by overriding such annotated native or abstract methods
    • Add hack for typedef void* definitions and parameters with a double indirection to them