The master now poll the database for pending tasks when running buildbot in multi-master mode.

The algorithm to match build requests to slaves has been rewritten pull request 615.
The new algorithm automatically takes locks into account, and will not schedule a build only to have it wait on a lock.
The algorithm also introduces a canStartBuild builder configuration option which can be used to prevent a build request being assigned to a slave.

buildbotstop and buildbotrestart now accept --clean to stop or restart the master cleanly (allowing all running builds to complete first).

The IRC bot now supports clean shutdown and immediate shutdown by using the command 'shutdown'.
To allow the command to function, you must provide allowShutdown=True.

The treeStableTimer for AnyBranchScheduler now maintains separate timers for separate branches, codebases, projects, and repositories.

SVN has a new option preferLastChangedRev=True to use the last changed revision for got_revision

The build request DB connector method getBuildRequests can now filter by branch and repository.

A new SetProperty step has been added in buildbot.steps.master which can set a property directly without accessing the slave.

The new LogRenderable step logs Python objects, which can contain renderables, to the logfile.
This is helpful for debugging property values during a build.

'buildbot try' now has an additional option --property option to set properties.
Unlike the existing option --properties option, this new option supports setting
only a single property and therefore allows commas to be included in the property
name and value.

The Git step has a new config option, which accepts a dict of git configuration options to
pass to the low-level git commands. See Git for details.

In ShellCommand ShellCommand now validates its arguments during config and will identify any invalid arguments before a build is started.

Master-side support for P4 is available, and provides a great deal more flexibility than the old slave-side step.
See pull request 596.

Master-side support for Repo is available.
The step parameters changed to camelCase.
repo_downloads, and manifest_override_url properties are no longer hardcoded, but instead consult as default values via renderables.
Renderable are used in favor of callables for syncAllBranches and updateTarball.

Builder configurations can now include a description, which will appear in the web UI to help humans figure out what the builder does.

GNUAutoconf and other pre-defined factories now work correctly (bug #2402)

The split_file function for SVNPoller may now return a dictionary instead of a tuple.
This allows it to add extra information about a change (such as project or repository).

The workdir build property has been renamed to builddir.
This change accurately reflects its content; the term "workdir" means something different.
workdir is currently still supported for backwards compatability, but will be removed eventually.

The Blocker step has been removed.

Several polling ChangeSources are now documented to take a pollInterval argument, instead of pollinterval.
The old name is still supported.

StatusReceivers' checkConfig method should no longer take an errors parameter.
It should indicate errors by calling error.

Build steps now require that their name be a string.
Previously, they would accept anything, but not behave appropriately.

The web status no longer displays a potentially misleading message, indicating whether the build
can be rebuilt exactly.

The EC2 and libvirt latent slaves have been moved to buildbot.buildslave.ec2 and buildbot.buildslave.libirt respectively.

Pre v0.8.7 versions of buildbot supported passing keyword arguments to buildbot.process.BuildFactory.addStep, but this was dropped.
Support was added again, while still being deprecated, to ease transition.

The fix for Twisted bug #5079 is now applied on the slave side, too.
This fixes a perspective broker memory leak in older versions of Twisted.
This fix was added on the master in Buildbot-0.8.4 (see bug #1958).

The --nodaemon option to buildslavestart now correctly prevents the slave from forking before running.