Skip to content

Changelog r16 beta2

Ryan Prichard edited this page Oct 26, 2017 · 2 revisions

Changelog

Report issues to GitHub.

For Android Studio issues, follow the docs on the Android Studio site.

Announcements

  • The deprecated headers have been removed. Unified Headers are now simply The Headers.

    For migration tips, see Unified Headers Migration Notes.

  • GCC is no longer supported. It will not be removed from the NDK just yet, but is no longer receiving backports. It cannot be removed until after libc++ has become stable enough to be the default, as some parts of gnustl are still incompatible with Clang. It will be removed when the other STLs are removed in r18.

  • libc++ is out of beta and is now the preferred STL in the NDK. Starting in r17, libc++ is the default STL for CMake and standalone toolchains. If you manually selected a different STL, we strongly encourage you to move to libc++. For more details, see this blog post.

  • Support for ARM5 (armeabi) is deprecated. It will no longer build by default with ndk-build, but is still buildable if it is explicitly named, and will be included by "all" and "all32". Support for ARM5 has been removed in r17.

    Both CMake and ndk-build will issue a warning if you target this ABI.

NDK

  • ndk-build and CMake now link libatomic by default. Manually adding -latomic to your ldflags should no longer be necessary.
  • Clang static analyzer support for ndk-build has been fixed to work with Clang as a compiler. See https://github.com/android-ndk/ndk/issues/362.
  • Clang now defaults to -Oz instead of -Os. This should reduce generated code size increases compared to GCC.
  • GCC no longer uses -Bsymbolic by default. This allows symbol preemption as specified by the C++ standard and as required by ASAN. For libraries with large numbers of public symbols, this may increase the size of your binaries.
  • Updated binutils to version 2.27. This includes the fix for miscompiles for aarch64: https://sourceware.org/bugzilla/show_bug.cgi?id=21491.
  • Improved compatibility between our CMake toolchain file and newer CMake versions. The NDK's CMake toolchain file now completely supercedes CMake's built-in NDK support.
  • ndk-stack now works for arm64 on Darwin.

libc++

APIs

Known Issues

  • This is not intended to be a comprehensive list of all outstanding bugs.
  • Issue 360: thread_local variables with non-trivial destructors will cause segfaults if the containing library is dlcloseed on devices running M or newer, or devices before M when using a static STL. The simple workaround is to not call dlclose.
  • Issue 374: gabi++ (and therefore stlport) binaries can segfault when built for armeabi.
  • Issue 399: MIPS64 must use the integrated assembler. Clang defaults to using binutils rather than the integrated assembler for this target. ndk-build and cmake handle this for you, but make sure to use -fintegrated-as for MIPS64 for custom build systems.