Jump to >

Review Board 4.0.5 Release Notes

Release date: February 8, 2022

See the rbintegrations 2.0.2 release notes for new features and fixes for CircleCI, Jenkins, and Travis CI.


  • Added a dependency on diffx >= 1.0, < 2.0.

  • Updated the ReviewBoard[mysql] dependency to cap the mysqlclient package at < 1.5 on Python 2.7.

  • Updated the Djblets dependency to >= 2.3, < 3.0.

  • Updated the rbintegrations dependency to >= 2.0.2, < 3.0.

  • Removed the explicit pinned dependencies for bcrypt and pyparsing on Python 3.

    These may still be provided by other dependencies.

New Features

  • Added compatibility with Python 3.10.

    There are some issues with third-party dependencies that we’ve been working around. If you hit any new issues with 3.10, please let us know.

  • Added experimental extension support for defining ACLs when viewing diffs.

    Extensions can now implement policies that limit who can view particular diffs, allowing companies to bring over any existing access control policies they may have repositories into Review Board.

    This is done by implementing a FileDiffACLHook, which takes a DiffSet and a user and returns whether the user has access to the diff.

    This feature is experimental and subject to changes. You’ll need to enable this feature by setting the following to your conf/settings_local.py file:

        'reviews.diff_acls': True,

    This will be enabled by default in 5.0.

    See the FileDiffACLHook documentation for usage and an example using p4 protect.

  • Added experimental support for the DiffX file format.

    DiffX is our proposed standard for a modern, backwards-compatible diff format, designed to address many shortcomings and bridge the gap between many of the vendor-specific diff formats that exist.

    Review Board now features a built-in parser for DiffX files. For now, this is only used by some in-progress SCM implementations that are still in development. In time, we plan to update all our existing SCMs to support it natively and to use it in RBTools.

    This will make it easier to develop deeper integrations between Review Board, RBTools, and in-house scripts.

    See the DiffX website for more details.


  • Added FileDiffACLHook for defining diff access policies.

  • Expanded capabilities of diff parsers.

    BaseDiffParser was introduced as a new base class, which allows subclasses full control over the diff parsing mechanics.

    Subclasses (including DiffParser) can now store additional metadata for use in file fetching and the API through the ParsedDiff, ParsedDiffChange, and ParsedDiffFile classes used to represent parsed diff results.

    New SCMs are encouraged to generate DiffX files and use DiffXParser to parse them.

  • Updated Repository.get_file() and Repository.file_exists() to take new context parameters.

    These contain a FileLookupContext instance, which provide the base commit ID and any metadata parsed from a custom diff parser or a DiffX file.

    The old base_commit_id argument is still provided, but deprecated.

  • Updated SCMTool.popen() to take arbitrary keyword arguments to pass to subprocess.Popen.

Bug Fixes


  • Fixed compatibility with mysqlclient 2.1+ on Python 3.

  • Fixed issues that could lead to failed upgrades when upgrading from early Review Board 1.7 (or earlier) databases.

    You will need to manually upgrade django_evolution to 2.1.3 or higher. We will require this version in Review Board 4.0.6.


  • The Search Settings page now validates configuration before allowing settings to be saved.


  • Fixed issues with TLS support for Active Directory.

    When enabling TLS support, Review Board will now always try ldaps:// URIs instead of ldap:// by default. The default port of 636 will be used as well, unless a port is explicitly provided.

    If 636 is the port used, TLS will be enabled automatically.

    Some additional changes were made to enhance compatibility, including opting into LDAP 3. Please let us know if this impacts your setup in any way.


  • Fixed an error rendering Markdown files on Python 3.


  • Fixed showing the Change review request field when using Perforce.


  • Anahita Mohapatra

  • Christian Hammond

  • David Trowbridge

  • Marcus Boay

  • Qin Zhang