C++ Exceptions support in the Decompiler
The Decompiler can now emit try/catch blocks. There is now support for the C++ exception scheme in binaries compiled for x64 using Microsoft VC++.
FLIRT Manager update
Extensive update includes modernized and extended number of FLIRT signatures available for modern languages like Golang and Rust.
A new plugin (FLIRT Manager) allows easy application of multiple signatures to the database and lets you see which one gives the best results.
Updates for classic compilers (MSVC for Windows, GCC for Linux).
idalib, headless processing
Run scripts directly using IDA as a library. Both the C++ and Python APIs can be used from outside IDA to form standalone applications. If configured correctly, you get auto-completion and debugging in your favorite C++/Python IDE.
RISC-V Decompiler & Disassembler Extensions
New decompilers targeting 32- and 64-bit RISC-V code (HEXRV and HEXRV64). There is now an extended RISC-V processor module to support T-Head extension instructions (used in Xuantie and Allwinner processors).
nanoMIPS Decompiler & support
Both the MIPS disassembler and decompiler now support nanoMIPS instructions.
This is not a simple extension of the MIPS ISA but a completely new encoding of the existing MIPS instructions and addition of new ones, as well as a brand new calling convention.
nanoMIPS support is included in the MIPS decompiler (HEXMIPS); there is no need for an extra license.
License flexibility
Licenses are no longer bound to a specific platform. After buying one IDA license, it can be used on all supported platforms (Windows/Linux/macOS).
IDA Teams & Lumina are now add-ons and can be added to any subscription plan.
A custom Hex-Rays licensing server replaces the FlexNet licensing server for floating licenses.
WASM Disassembler and File Format Loader
The new disassembler for Web Assembly (WASM) supports client-side browser applications.
WASM code is embedded into its own binary file format so we include a file loader that decodes the WASM file format.
IDAPython Improvements
Most IDAPython APIs now have type annotations.
Python virtual environments (venvs) are now supported.
Objects returned in the Python API are properly zero-initialized.
idapyswitch can now be used with read-only IDA installations. Auto-completion in IDA's CLI now disregards __magic_methods__ and auto-generated SWIG methods.
Auto-completing a method call shows its prototype with type annotations and docstring (if available) in a pop-up hint.
Metadata Descriptors for Plugins
ida-plugin.json now offers a standardized entrypoint for plugins allowing authors to follow their own plugin directory structure.
UI Improvements
Modernized look and feel with updated icons, added crosshair effect in minigraph, higher-res fonts, and more.
Replacement functionality for both headers/modules is now located (mostly) in typeinf.hpp / ida_typeinf. A porting guide is available.
It is now possible to specify fixed size for structures and to enable field packing easily.
The function prototype editor (aka Y shortcut on a function name) now can toggle between the classic free-text one-line editor and a new multi-line editor featuring the usual shortcuts and controls.
The basic function prototype editor now indicates invalid prototypes via a red rectangle while typing.
A refreshed set of shortcuts that better matches the modern OS conventions can now be selected instead of the traditional shortcuts.
Unified type storage (ASMTIL)
Reestablished features to Local Types, such as structure field representation and all type manipulations. New databases only have Local Types by default and Structures and Enums are deprecated.
The new Local Types Widget allows editing structures like the classic Structures widget, or via a free-text editor.
ARM/iOS Improvements
Added support for common Apple-specific instructions and system registers commonly encountered in iOS and macOS software to see fewer instances of undefined bytes breaking disassembly and more understandable code when working with these files.
Debugger Improvements
Added support for recent Android versions and made it more robust when working with apps without debug information. If running on a recent (API28+) Android, IDA will try to guess the variable type automatically. Since in the Dalvik VM the value of a variable cannot be displayed without knowing its type, this boosts the debugging experience significantly.