# 0.58.5.0¶

Caution

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.

## Improvements¶

• 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.

## Fixes¶

• 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.

## API¶

• 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.