All Versions
Latest Version
Avg Release Cycle
113 days
Latest Release

Changelog History
Page 1

  • v1.1.0 Changes


    πŸ‘· Build System Integrations

    • ⬆️ Clang upgraded to version 11.0


    • πŸ“„ Liveness: properly handle exceptional control flow
    • πŸ“„ Pulse:
    • πŸ†• NEW checker Topl(early alpha): An experimental checker framework: write your own analysis as a state machine representing a temporal property over multiple memory objects at once, eg to write a taint analysis. Topl is based on Pulse.
    • Miscellaneous improvements to cost, inferbo, nullsafe, racerd, starvation
  • v1.0.0 Changes


    πŸ‘• AL is now deprecated and may be removed in future versions.

    πŸ“„ Annotation Reachability

    • πŸ“‡ reporting format improvements (the trace is no longer included in the report text, only as metadata)

    πŸ“„ Biabduction

    • disable some less-used bug types

    πŸ“„ Eradicate

    • βœ‚ remove "Field not mutable" check

    πŸ“„ RacerD

    • 0️⃣ Now defaults to "angelic" ownership: an unknown function is assumed to return owned objects.
    • No more reports on races on paths rooted on temporary or local variables, as these are unreliably modelled.

    πŸ†• Litho Required Properties: new Java checker to check that all non-optional @Props have been specified when constructing Litho components. πŸ†• Self in Block: new Objective-C checker to detect when an Objective-C block incorrectly captures self πŸ“„ Starvation

    • πŸ†• New experimental "global" analysis mode. Enable with --starvation-whole-program

    πŸ“„ Miscellaneous improvements to most checkers, in particular Annotation Reachability, Cost Analysis, Eradicate, Inefficient Keyset Iterator, InferBO, Pulse, RacerD, Starvation, and Uninitialized Value.

    πŸ‘· Build System Integrations

    • The Gradle integration now captures Java files in parallel
    • πŸ†• New Buck integration for Java, enable with --buck-java-flavor
    • ⬆️ Clang upgraded to version 9.0

    πŸ’» Command Line Interface

    • πŸ†• New subcommand infer help to display information about checkers and issue types.
    • πŸ†• New subcommand infer debug that replaces the uses of infer explore not related to reported issues.
    • --debug no longer disables filtering, you have to pass -g -F to get the previous behaviour back.
    • All disk artefacts (except the Java type environment) are now stored in the SQLite database in infer-out/results.db. The contents of the database can be explored with infer debug.
    • πŸ”„ Changed how to select the Buck integration. The old command line interface is still supported but is now deprecated.
      • clang via "flavors", activated with --flavors, now with --buck-clang
      • clang via "compilation DB", activated with --buck-compilation-database, unchanged
      • Java via "genrule", activated with --genrule-master-mode, now with --buck-java
      • Java "without genrules", used to be activated by not specifying any other Buck mode, deleted
      • In addition, there is a new Java integration, activated with --buck-java-flavor
    • 🚚 The textual version of the report infer-out/bugs.txt has moved to infer-out/report.txt. The bugs.txt file is still created with dummy contents to allow for a smooth transition.
    • βœ‚ Removed the --report-hook option.
    • Properly terminate on Control-C instead of sometimes leaving around zombie processes.
    • Spec files (summaries) are now stored in the database. Explore with infer debug --procedures --procedures-summary.

    πŸ“š Documentation

    • πŸ“š Revamped online documentation for bug types and checkers. See the list of all issue types and the pages for each checker. The infer help command can be used locally to also get this information and more.
    • πŸ“š Access the documentation for previous and future versions online.
    • The website now uses Docusaurus 2.

    Internal Changes

    • πŸ”Œ Folded the facebook-clang-plugins sub-repo inside the infer repository; there is no more git submodule for it.
    • πŸ‘Œ Improve internal documentation of OCaml source code.
    • πŸ— Build with OCaml 4.11.1 and dune 2.7.1
    • Migrated our Python 2 code to OCaml
    • Split the infer OCaml source code into individual dune libraries.
    • πŸ‘ Better defaults for SQLite, and a write daemon to reduce contention.
    • πŸ†• New analysis schedulers that speed up the analysis phase. Enable with --scheduler callgraph or --scheduler restart.
    • πŸ— Infer no longer builds by default in "opt" mode (optimised, using OCaml’s flambda pass). The default is now "dev", which does not include as many optimisations (hence builds faster) and turns warnings into errors.
    • The starvation checker is now based on SIL instead of HIL.
  • v0.99-test

    October 07, 2020
  • v0.18.0

    June 09, 2020
  • v0.17.2

    February 25, 2020
  • v0.17.1

    December 09, 2019
  • v0.17.0 Changes

    August 06, 2019

    πŸš€ This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.


    • 0️⃣ There’s a new --inefficient-keyset-iterator checker for finding inefficient uses of Java's keyset iterators that retrieve both key and value (on by default).
    • ⚑️ Complete the set of Android thread annotations and Java nullability annotations. Updated artifacts are available on Maven Central.
    • ⏱ --starvation is now on by default. This analysis catches problems with threads not being able to make progress due to locking issues, incorrect scheduling priorities, etc. For instance, on Android calling Future.get from a UiThread without a sensible timeout will be flagged as a starvation issue.
    • New Objective-C linter for calls to @optional methods: UNSAFE_CALL_TO_OPTIONAL_METHOD, enabled by default.
    • 🐎 A new call-graph scheduler (--call-graph-schedule) improves performance of the analysis phase of Infer, especially when the number of files to analyze is less than available CPUs.
    • πŸ†“ A new flag --oom-threshold allows to throttle the analysis when the amount of free memory is below the provided threshold.
    • πŸ†• New genrule based Buck/Java integration is much faster than the previous one, use with --genrule-master-mode.
    • Infer’s internal clang is now in version 8.0.0.
    • ⚑️ Update to javalib 3.1 provides better compatibility with Java 9 and Java 11. Refer to their change log for more details.
    • 🍎 Infer can now be built and run on MacOS Mojave without fiddling with SDKROOT (although you still might need it with non-standard toolchain setup).
    • [Ξ²] Pulse is a new experimental lifetime analysis for C++, give it a try with --pulse. Beware that it doesn’t report much yet.
    • 🚚 --ownership checker was superseded by Pulse and removed.

    πŸ‘€ ... and many other fixes and improvements. For the full list of changes included see here.

    πŸš€ The facebook-clang-plugins version used for this release is facebook/facebook-clang-plugins@9386890

    The sha256 checksums of the tarballs are:

    $ shasum -a 256 infer-*-v0.17.0.tar.xz
    de972ba3043f18b29a8eff6cd7612e24f5ffaef038dc7949befeaf490931725e infer-linux64-v0.17.0.tar.xz
    1a3ef6fb51846ae63ffd7fde3b0255f75bab6157f5de1842606fa32988d101f8 infer-osx-v0.17.0.tar.xz
  • v0.16.0 Changes

    April 23, 2019

    πŸš€ This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.

    πŸš€ It's been a long time since the previous release, here are some new features and improvements you can find in this new release:

    Backend analyses:

    • 0️⃣ A brand new analysis to compute the runtime cost of methods and functions: passing --cost (off by default) to Infer will output a costs-report.json file describing, among others, the computational complexity of each function in the code using the big-O notation, eg O(1), O(list.length), ...
    • 0️⃣ The deadlock detection analysis has been ported to C++ and Objective-C and mainly focuses on self-deadlocks (taking a mutex twice). Activate with --starvation (off by default).
    • πŸ”’ The data race detector RacerD has been ported to Objective-C and detects races on fields protected by a C++ mutex. It reports "Thread Safety Violation" and "GuardedBy Violation" errors on Java and "Lock Consistency Violation" on C++ and Objective-C. Activate with --racerd (on by default).
    • A progress bar is displayed while the analysis is running
    • Countless improvements and tweaks, in particular in RacerD and in analyses for C++.


    • Infer now ships with clang version 7.0.1
    • πŸ‘Œ Support for Java up to version 11

    The sha256 checksums of the tarballs are:

    $ shasum -a 256 infer-*-v0.16.0.tar.xz
    435c415a9a22f41e7f2074b542b035b972a2a8c237d5490285d763bf333a817b infer-linux64-v0.16.0.tar.xz
    471f06c72754a45d73433623e8092bf9ea1315884b8ebff24d3f79f9a8b0380a infer-osx-v0.16.0.tar.xz

    πŸš€ The facebook-clang-plugins version used for this release is facebook/facebook-clang-plugins@36266f6.

  • v0.15.0 Changes

    June 05, 2018

    πŸš€ This is a binary release of Infer for Linux and MacOS. To use it follow these instructions.


    • switch infer license to MIT
    • publish binaries
    • [clang] lots of improvements to the frontend

    More changes in the full list of changes.

    πŸš€ The facebook-clang-plugins version used for this release is facebook/facebook-clang-plugins@f31f7c9.

    The sha256 checksums of the tarballs are:

    $ shasum -a 256 infer-*-v0.15.0.tar.xz
    f6eb98162927735e8c545528bb5a472312e5defcf0761e43c07c73fe214cb18a infer-linux64-v0.15.0.tar.xz
    0f87b8fd68b62717b8c3c143aeaea38b5102435f80fff484cb570a51cf510f9c infer-osx-v0.15.0.tar.xz
  • v0.14.0 Changes

    April 30, 2018

    πŸš€ This is a source release of Infer packaged with pre-built binaries for clang and facebook-clang-plugins for Linux and MacOS. To use it follow these instructions.


    • πŸ†• New checker: --ownership detects a subset of use-after-free issues due to bad manual memory management. This is a rough prototype of Rust-style borrow checker for C++. (enabled by default, C++)
    • πŸ†• New checker: --uninit detects uses of uninitialized values (enabled by default, C/C++/Objective-C)
    • πŸ†• New checker: --racerd now also detects inconsistent lock usage in C++. Also improved the lock domain to reduce false positives for all languages.
    • πŸ‘Œ Improved C++ support: destructors are now properly translated; addresses and pointers are handled more precisely
    • πŸ‘Œ Improved retain cycles detection (Objective-C)
    • ⬆️ Upgraded the internal clang to clang 7
    • [internal] SQLite is being used to store some of infer's analysis artefacts instead of storing them in files on disk. This improves analysis speed and reduces load on the OS.

    The sha256 checksums of the tarballs are:

    $ shasum -a 256 infer-\*-v0.14.0.tar.xz330b4bbb5fbf90c04d4c096ce0d8d713dac72925d68c0e1b55ab30e6d5201bcb infer-linux64-v0.14.0.tar.xz350767bc29acdcb86734a2009e97bdf2a3603db0fbf3f18c59fc07b416977021 infer-osx-v0.14.0.tar.xz