A performance enhancement introduced in BranchCreator may reveal latent bugs in derived classes. If a derived class implements computeBranchSet() it is now essential that it also implements computeBranchSetNames() appropriately. It is no longer sufficient to rely on the set names existing on the main input.


  • Stats app :

    • Added -context argument to specify additional context variables for the processes being measured.

    • Improved accuracy of timings produced by -scene and -image.

  • CameraTool : Improved performance when moving lights/cameras in look-through mode.

  • Instancer/Parent :

    • Improved performance when computing sets which do not exist on the prototypes/children.

    • Improved interactive performance by reducing likelihood of cache eviction for set hashes.

  • SetFilter : Improved interactive performance for CameraTool/TransformTool by enabling use of cached values.


  • Viewer :

    • Fixed bug that caused the Inspector to grow very wide when inspecting long strings.

    • Fixed bug that caused a second click to be required to apply edits when closing an Inspector edit window by clicking outside the popup.

  • NumericPlugValueWidget : Fixed bug that caused plug values to be set to 0 if editing completed with invalid text.

  • StringPlugValueWidget : Fixed bug that could cause plug values to be overwritten when editing multiple plugs and focus was lost without change, or the value state changed to mixed via external action.

  • TypedObjectPlug : Fixed serialisation of values for which repr() is not available (#106).

  • Editor : Fixed bug that caused child widgets to lose focus when the mouse re-enters an Editor that already has focus.

  • Stats app : The -canceller argument is now honoured when using -task to measure task execution time.


  • Serialisation : Added objectToBase64() and objectFromBase64() methods to provide base64 encoding and decoding for all IECore::Objects.

  • NumericWidget : Fixed bug that caused editingFinished to be called with the wrong reason when the widget was left with an invalid value. Invalid is now passed in these cases.

  • PlugValueWidget : Improved support for legacy widgets in PlugValueWidget.create when used to create widgets for single plugs supplied in a set.

  • NameLabel : Added support for multiple graph components in the constructor, added setGraphComponents/getGraphComponents methods.

  • LabelPlugValueWidget, NameValuePlugValuePlug : Added support for multiple plugs.

  • SceneAlgo : Added Python binding for historyIDContextName(). Woe betide you if you find a need for it.