# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.65.4] - 2023-02-10
### Fixed
- Ordering of dependency node compute for AG fan-out with shared dependencies

## [2.65.3] - 2023-02-10
### Removed
- Remove a workaround now useless and affecting perf, as real fix has been merged

## [2.65.2] - 2022-12-20
### Fixed
- Crash fix when resizing a GPU buffer

## [2.65.1] - 2022-12-19
### Fixed
- Write back to Usd.

## [2.65.0] - 2022-12-16
### Added
- Initialize setting to ensure defaults are set properly the first run

## [2.64.8] - 2022-12-15
### Fixed
- Performance for processing of large node fan-in (action graph)

## [2.64.7] - 2022-12-12
### Fixed
- Previous fix is crashing in master. Reseting it to a state where it is actually stable on master

## [2.64.6] - 2022-12-09
### Fixed
- Invalidate any soon-to-be stalled pointers before deleting nodes

## [2.64.5] - 2022-12-08
### Fixed
- Accessing the size of an inexistent array was returning 1

## [2.64.4] - 2022-12-06
### Fixed
- Don't assign the node's database until *after* its bucket has been invalidated.

## [2.64.3] - 2022-12-03
### Fixed
- Fixed crash when loading resolved string attributes

## [2.64.2] - 2022-11-29
### Changed
- GraphContext::invalidateBucket() now also invalidates the databases of downstream nodes.
### Fixed
- OM-75593 Fixed DataModel::copyAttributeInternal for array attribute that used to set array size to 0 when src and dst
  was the same.

## [2.64.1] - 2022-11-22
### Added
- Documentation link in how-tos for running a minimal Kit with OmniGraph
- Documentation for the various types of node implementations and what they are for

## [2.64.0] - 2022-11-17
### Changed
- Improved attach time overhead of OmniGraph for stages that do not contain OmniGraph prims

## [2.63.0] - 2022-11-14
### Added
- IGraphContext 3.3 -> 3.4: getVariableInstanceDataHandle, getVariableInstanceConstDataHandle

## [2.62.7] - 2022-11-11
### Fixed
- Do not reinitialize node's bucket to empty bucket.

## [2.62.6] - 2022-11-07
### Fixed
- potential crash on detach stage in same update that nodes are removed

## [2.62.5] - 2022-09-07
### Changed
- Fixes OM-62261 `og.OmniGraphInspector().as_json` Returns Bad Json

## [2.62.4] - 2022-10-20
### Fixed
- Made the category check more lenient, ignoring empty descriptions

## [2.62.3] - 2022-10-19
### Changed
- Fix for AG dependency logic

## [2.62.2] - 2022-10-08
### Changed
- Fix for evaluation of event inputs to latent nodes

## [2.62.1] - 2022-09-29
### Fixed
- Inconsistent evaluation of nodes with fan-in

## [2.62.0] - 2022-09-23
### Changed
- Extended attribute type values are now persisted to USD as customData
- Dynamic extended attribute types are now persisted to scoped customData as well as deprecated unscoped

## [2.61.4] - 2022-09-21
### Fixed
- A bug in action graph logic related to fan-in

## [2.61.3] - 2022-09-08
### Added
- Fixed a bug in action graph traversal logic

## [2.61.2] - 2022-09-06
### Changed
- Gave a better error message for deprecated node type presence

## [2.61.1] - 2022-08-31
### Fixed
- Changed an error into an info message since it is usually harmless

## [2.61.0] - 2022-09-01
### Added
- Added isValid() methods to OG Obj ABI structs

## [2.60.0] - 2022-08-30
### Removed
- Temporary hack for Python node late delayed default value setting
### Added
- Extra information to flag when the node type definition is responsible for deletion of default data memory

## [2.59.2] - 2022-08-25
### Added
- Architectural decision for splitting off the extensions into a separate repo
- Added isValid() methods to OG Obj ABI structs
### Fixed
- Made Fabric dump of connections provide a default when presented with bad data
### Changed
- Updated the apply_change_info script to preserve local branch edits of extension.toml

## [2.59.1] - 2022-08-25
### Fixed
- Fixes ReadOnly array attribute sometimes having a dangling pointer

## [2.59.0] - 2022-08-25
### Added
- Support for new setting that turns deprecations into errors
- New macro for flagging use of deprecated code path
- Deprecation messages for code paths not using schema prims

## [2.58.2] - 2022-08-18
### Fixed
- Added missing call to tell nodes created from a Prim that they already have a default set

## [2.58.1] - 2022-08-15
### Changed
- Allow write variable to operate even if role types differs

## [2.58.0] - 2022-08-12
### Changed
- Node path is now added to console-logged messages
- Node path is no longer added to messages captured on nodes

## [2.57.4] - 2022-08-11
### Changed
- Handles auto conversion in data model

## [2.57.3] - 2022-08-08
### Added
- Warning when schema prims are loaded when the setting is disabled.

## [2.57.2] - 2022-08-05
### Fixed
- action evaluator for cycles in connections

## [2.57.1] - 2022-08-04
### Fixed
- Avoided multiple `__metadata__bundle__` tokens in a path

## [2.57.0] - 2022-08-03
### Changed
- OGN Bundle wrapper `size` and `abi_primHandle` are marked as deprecated.

### Added
- Two methods to OGN Bundle wrapper: `attributeCount` and `childCount`.

## [2.56.0] - 2022-08-02
### Added
- Update OGN Bundle wrapper to use IBundle2

## [2.55.0] - 2022-08-02
### Added
- /persistent/omnigraph/enablePathChangedCallback to deprecate INode::registerPathChangedCallback
- /persistent/omnigraph/disableInfoNoticeHandlingInPlayback optimization setting
### Changed
- pathChangedCallback will now trigger once per OG update with accumulated changes instead of immediately

## [2.54.0] - 2022-07-28
### Added
- Added `IDirtyID` interface
- Added `BundleAttrib` class and `BundleAttribSource` enumeration
- Added `BundlePrim`, `BundlePrims`, `BundlePrimIterator` and `BundlePrimAttrIterator`
- Added `ConstBundlePrim`, `ConstBundlePrims`, `ConstBundlePrimIterator` and `ConstBundlePrimAttrIterator`

## [2.53.1] - 2022-07-28
### Fixed
- Fixed handling of empty strings in operator< and operator> of ogn::base_string

## [2.53.0] - 2022-07-22
### Added
- IBundle2 - remove_attributes_by_name and remove_child_bundles_by_name

## [2.52.1] - 2022-07-27
### Fixed
- Fixed data model for storing attribute metadata in IBundle2

## [2.52.0] - 2022-07-27
### Changed
- valueChanged callback handling

## [2.51.3] - 2022-07-23
### Fixed
- Fixed dirty_push graphs being re-run during playback when time has not advanced

## [2.51.2] - 2022-07-22
### Fixed
- Registration order of TfNotice handler for OG

## [2.51.1] - 2022-07-21
### Fixed
- OM-56991 Ill-formed sdf paths

## [2.51.0] - 2022-07-21
### Changed
- Undo revert and fix bug in evaluation of nodes with dynamic execution attribs

## [2.50.0] - 2022-07-19
### Fixed
- IBundle2 reviewed ABI, reviewed copy and link for attributes and bundles

## [2.49.0] - 2022-07-18
### Changed
- Reverted the changes in 2.48.0

## [2.48.1] - 2022-07-18
### Added
- Better ReadPrimAttribute error reporting

## [2.48.0] - 2022-07-15
### Changed
- Action graph fan-out of execution wires are now evaluated in parallel instead of sequence

## [2.47.1] - 2022-07-12
### Changed
- Changed node create to write extended attributes to USD prior to node creation

## [2.47.0] - 2022-07-08
### Added
- 'deprecated' .ogn keyword for attributes
- IInternal / omni.graph.core._internal
- IInternal::deprecateAttribute() / omni.graph.core._internal.deprecate_attribute()
- IAttribute::isDeprecated() / omni.graph.core.Attribute.is_deprecated()
- IAttribute::deprecationMessage() / omni.graph.core.Attribute.deprecation_message()
- 'internal' attribute metadata keyword

## [2.46.0] - 2022-07-08
### Fixed
- Fixed memory leak coming from NodeType objects
### Changed
- INodeType 1.6 -> 1.7
- fileFormatVersion attribute on OmniGraph objects only writes to USD if it has changed
### Added
- INodeType::destroyNodeType to deallocate a node type object

## [2.45.2] - 2022-07-07
### Fixed
- IConstBundle2 and IBundle2 broken logging system

## [2.45.1] - 2022-07-06
### Added
- Ability to raise an error/warning for a node through (new) static methods of the database

## [2.45.0] - 2022-06-30
### Added
- Metadata support for IBundle2 interface

## [2.44.3] - 2022-06-30
### Changed
- USD write back is now performed just once per frame per Fabric cache

## [2.44.2] - 2022-06-28
### Fixed
- Checked newly added nodes for file format version upgrade requirements

## [2.44.1] - 2022-06-28
### Changed
- Ensured nodeContextHandle is initialized correctly

## [2.44.0] - 2022-06-29
### Changed
- Deprecated IScheduleNode::getNode, INodeType::getScheduleNodeCount, INodeType::getScheduleNodes

## [2.43.1] - 2022-06-29
### Added
- A compile switch to disable OGN database caching

## [2.43.0] - 2022-06-28
### Fixed
- Array attributes not keeping a single copy of their data/size pointers as intended
- Few places using P2AM directly instead of DataModel
- Debugging features of DataModel
- usdToCache overwritting connection informations
- Bad performance of getLocalAttributeHandle
### Added
- OGN Database caching at the node level
- Tracking of changes that might invalidate this caching
- Gives a chance to DataModel to prepare buckets of nodes at load time, in order to prevent useless rebucket later

## [2.42.0] - 2022-06-23
### Added
- clearContents method to IBundle2 interface

## [2.41.0] - 2022-06-22
### Added
- Faster check for deprecated node types
### Removed
- Unused core node animation/OgnPointsWeight
- Unused core node animation/OgnTextGenerator
- Unused core node animation/OgnTimeSampleArray
- Unused core node animation/OgnTimeSamplePoints
- Unused core node animation/OgnXformDeformer
- Unused core node animation/OgnXformSRT
- Unused core node animation/OgnXformToFastCache
- Unused core node core/OgnFetch
- Unused core node core/OgnGather
- Unused core node core/OgnScatter
- Unused core node core/OgnSlang
- Unused core node core/OgnTime
- Unused core node core/OgnTimeSample
- Unused core node core/OgnXtoY
- Unused core node math/OgnVectorElementDecompose
- Unused core node math/OgnVectorElementSet

## [2.40.4] - 2022-06-22
### Changed
- Fix for output attribute being resolved by downstream connection

## [2.40.3] - 2022-06-22
### Added
- Architectural decision records support
- Added ADR for the decision around how to present the Python API surface

## [2.40.2] - 2022-06-21
### Changed
- Optimized attribute look up

## [2.40.1] - 2022-06-17
### Changed
- Added extra validity checks to bundle data access
### Added
- Finished off the documentation for versioning, both internal and external

## [2.40.0] - 2022-06-17
### Added
- IGraph::getEvaluationName
### Changed
- When using schemaPrims, OmniGraph now responds to changes made to graph settings in USD.

## [2.39.0] - 2022-06-16
### Changed
- ForceWriteBack mechanism (that was used to write back prim data to USD) is now soft deprecated behind a setting
### Added
- A per attribute tracking system that allows to write back to USD at single attribute definition

## [2.38.3] - 2022-06-16
### Fixed
- cpp wrapepr getAttributesR template function, internally it wasn't casting to NameToken*.

### Changed
- Outputs for `IBundle2::create*`, `IBundle2::link*` and `IBundle2::copy*` are optional.

## [2.38.2] - 2022-06-15
### Fixed
- Handled the one missing colorama reference

## [2.38.1] - 2022-06-14
### Fixed
- When removing the last attributes on a path, DataModel was failling to move it properly to the empty bucket

## [2.38.0] - 2022-06-13
### Added
- CreateGraphAsNodeOptions structure
- GraphEvaluationMode enum
- IGraph::getEvaluationMode
- IGraph::setEvaluationMode
- IGraph::createGraphAsNode(GraphObject&, const CreateGraphAsNodeOption*)
### Deprecated
- IGraph::createGraphAsNode(GraphObject&, const char*, const char*, const char*, bool, bool, GraphBackingType, GraphPipelineStage)

## [2.37.1] - 2022-06-13
### Fixed
- Crash fix when trying to convert an invalid "FlatCacheBundle" to a value

## [2.37.0] - 2022-06-13
### Added
- Temporary support for flagging values already set for Python initialize

## [2.36.0] - 2022-06-08
### Added
- Pre-render evaluation functions

## [2.35.0] - 2022-06-07
### Added
- Support for the generator setting for Python optimization

## [2.34.3] - 2022-06-03
### Fixed
- Copy on Write for Child bundles

## [2.34.2] - 2022-06-02
## Changed
- Allow arguments arrayDepthsBuf and tuplesBuf for resolvePartiallyCoupledAttributes() to be null pointers

## [2.34.1] - 2022-06-01
### Fixed
- Input execution attribute are now reset to Disabled state when node enters latent state
- Bug making bundle connection to legacy prim

## [2.34.0] - 2022-05-30
### Changed
- Connections between nodes are now not stored in fabric anymore
- We now rely only on connections expressed in the Object Oriented Layer in OmniGraph core
- DataModel now don't have to do extra logic to interpret FC connections as toppological connection or upstream reference
### Added
- Ability to access and set default value on an attribute
- Interfaced this new feature with python
- Using this new feature in python OGN generator
### Fixed
- Bug preventing to clear an attribute array in python
### Removed
- Some useless dependencies/visibility to PathToAttributeMap

## [2.33.11] - 2022-05-27
### Changed
- Deprecated the GraphContext::updateToUsd() code path with useSchemaPrims off
### Fixed
- Fixed the FlatCache dump in GraphContext, broken when FlatCache was upgraded
- Fixed the graph population phase in PluginInterface to walk all graphs, not just the first one

## [2.33.10] - 2022-05-26
### Fixed
- Fixed memory leak with variables
- Fixed errors caused by removing variables from Fabric

## [2.33.9] - 2022-05-24
### Fixed
- Attributes on bundle not properly materialized, attempt 2

## [2.33.8] - 2022-05-18
### Fixed
- Attributes on bundle not properly materialized

## [2.33.7] - 2022-05-17
### Fixed
- Fixed reparenting graph to previous parent which otherwise corrupted fabric state and left nodes without properties

## [2.33.6] - 2022-05-17
### Fixed
- Duplicate bundle connections on rename

## [2.33.5] - 2022-05-16
### Fixed
- Connection-compatibility check for execution attributes

## [2.33.4] - 2022-05-16
### Changed
- Makes dynamic bundle works in python

## [2.33.3] - 2022-05-16
### Changed
- Fix type not properly registered in FC when adding new attributes

## [2.33.2] - 2022-05-13
### Changed
- Makes bundle works on node not backed by USD

## [2.33.1] - 2022-05-12
### Changed
- Array attribute are now using ABI, giving a chance to the framework to perform CoW and DS

## [2.33.0] - 2022-05-11
### Changed
- Refactoring of data model: centralized all FlatCache accesses in one place
- MBiB now uses connections instead of bucket tagging
### Added
- Lazy pointer retrieval (for read and write) in OGN layer
- Array attribute and bundles are now passed by reference from node to node
- Copy on Write: Array attributes/Bundle content are copied when mutated
- ABI entry for batch attribute copy from one bundle/prim to another
### Fixed
- Fixed som API for data retrieval in OGN layer that where missbehaving when used
### Removed
- Data stealing prototype

## [2.32.2] - 2022-05-11
### Fixed
- Fixed read time node with pull evaluator when time changes outside of playback (e.g. timeline tool)

## [2.32.1] - 2022-05-06
### Fixed
- Fixed instances loaded from references requiring a stage reload to evaluate correctly

## [2.32.0] - 2022-05-05
### Changed
- Refactored settings to handle interdependencies
### Fixed
- Changed std::is_pod to std::is_trivial for C++20 compatibility
### Added
- Added architectural diagram of the OmniGraph extension interdependencies
- Internal diagram of the schema prim code path dependencies
- Adding callbacks in settings to handle interdependencies

## [2.31.3] - 2022-05-04
### Fixed
- Fixed a bit too agressive type unresolution on input attributes

## [2.31.2] - 2022-05-03
### Fixed
- Default variable values not always getting set to instances with no overrides

## [2.31.1] - 2022-05-02
### Fixed
- bug resolving values in certain extended attribute connections

## [2.31.0] - 2022-04-29
### Changed
- Passed graph prim for more targeted FlatCache initialization
- Bumped file format to 1.4
- Made file format calls more tolerant of useSchemaPrims settings

## [2.30.3] - 2022-04-25
### Changed
- Only flush USD to flatcache when we are parsing the first root graph, otherwise previous changes to flatcache may be overwritten

## [2.30.2] - 2022-04-28
### Fixed
- Removed the obsolete parts of the unit tests

## [2.30.1] - 2022-04-26
### Fixed
- Fix situation with bad type resolution

## [2.30.0] - 2022-04-22
### Added
- `OmniGraphDatabase.getGraphTarget`
- IGraphContext 3.1->3.2
  - `IGraphContext.getGraphTarget`

## [2.30.0] - 2022-04-25
### Removed
- Removed the unimplemented IDataReference class
- Removed the obsolete TestComputeGraph.cpp unit test
### Changed
- Stopped building the obsolete nodes
- Moved the generated substitutions.rst file to the build area

## [2.29.4] - 2022-04-21
### Changed
- "ui:"-prefixed attributes present on Node prims are no longer read as OG attributes

## [2.29.3] - 2022-04-19
### Fixed
- Rare crash that occurred when using string-based node attributes

## [2.29.2] - 2022-04-14
### Fixed
- __updateSimStepUsd__ disableUsdUpdates is respected

## [2.29.1] - 2022-04-08
### Fixed
- Auto conversion bug for native tuple

## [2.29.0] - 2022-04-08
### Changed
- Passed graph prim for more targeted FlatCache initialization
- Bumped file format to 1.4
- Made file format calls more tolerant of useSchemaPrims settings

## [2.28.0] - 2022-04-08
### Changed
- input attribute types are no longer inferred from output attribute types.
- type resolution and unresolution will no longer propagate upstream.

## [2.27.0] - 2022-04-08
### Added
- Added IGraphContext::getAbsoluteSimTime() function
- Added ComputeGraph::updateV2() function which updates the absoluteSimTime

## [2.26.3] - 2022-04-07
### Fixed
- Graph::writeTokenSetting() was failing to update the token if it already existed but was empty.
### Changed
- Graph::writeTokenSetting() no longer updates the token or issue a warning if the new value is the same
  as the existing one.

## [2.26.2] - 2022-04-05
### Fixed
- Fixes issues where ForceWriteBack token on newly created Nodes
  would not be respected unless the Prim of the Node was selected

## [2.26.1] - 2022-03-31
### Fixed
- Fixed issue when using OG in MGPU: forces use of Device 0 in StaticScheduler

## [2.26.0] - 2022-03-31
### Added
- `PrimHandle` and `ConstPrimHandle` renamed to `BundleHandle` and `ConstBundleHandle`.
  `PrimHandle` and `ConstPrimHandle` remain as aliases to `BundleHandle` and `ConstBundleHandle`.
- `IConstBundle2` - ONI const bundle interface, successor of carbonite `IBundle`.
- `IBundle2` - ONI bundle interface, successor of carbonite `IBundle`.
- `IBundleFactory` - ONI factory to create instances of `IConstBundle2` and `IBundle2` interface.
- Initial implementation of `IConstBundle2`, `IBundle2` and `IBundleFactory`.
- `ComputeGraph` 2.6 -> 2.7.
- `ComputeGraph::getBundleFactoryInterface` method added to instantiate bundle factory.
- `IPath` new methods: `appendPath` and `getPathElementCount`.

## [2.25.2] - 2022-03-25
### Fixed
- Fixed issue where type resolution on node with coupled attribute would not work
- Fixed auto type conversion not working on coupled attributes

## [2.25.1] - 2022-03-25
### Fixed
- dynamic scheduler will now evaluate execution subgraphs

## [2.25.0] - 2022-03-23
### Added
- IGraph 3.6 -> 3.7
  - getEventStream - accessor to retrieve a graphs event stream
- IGraphEvent enum type
- IGraphEvent.eCreateVariable, raised when a variable is created through the ABI
- IGraphEvent.eRemoveVariable, raised when a variable is removed through the ABI

## [2.24.0] - 2022-03-16
### Added
- Setting /persistent/omnigraph/enableLegacyPrimConnections. When enabled, this will restore legacy behavior for OG Prim nodes:
  - Entire stage is searched for connections between Nodes and Prims, any connected
    Prims will be brought into FC, and corresponding OG Prim nodes created with all
    attributes.
  - Terminal nodes will be automatically synced to FC every frame
  - This setting is not exposed in the UI. It is a temporary setting until legacy code can be migrated to no longer use Prim connections.

## [2.23.8] - 2022-03-15
### Fixed
- Fixed issue where ComputeGraphs in sublayers may not correctly load

## [2.23.7] - 2022-03-14
### Fixed
- Auto type conversion was not correctly computed on load

## [2.23.6] - 2022-03-14
### Fixed
- Bug in default string attribute initialization

## [2.23.5] - 2022-03-09
### Added
- Added a check to make sure that literalOnly attributes cannot be connected to other attributes

## [2.23.4] - 2022-03-08
### Fixed
- Cleanup of graph deletion

## [2.23.3] - 2022-03-08
### Changed
- Modified the node type registration/deregistration process to avoid static destructor ordering problems and allow multiple initialize/release calls

## [2.23.2] - 2022-03-07
### Fixed
- Removed unnecessary migration of bundle connection members to a copied bundle

## [2.23.1] - 2022-03-05
### Fixed
- __RenderVar__ prim data will be automatically loaded into FC when they are part of an OG network

## [2.23.0] - 2022-03-04
### Changed
- Removed the _updateTerminalNodesOnly_ setting, the default of _updateToUSD_ is now False.
  OG will now only sync Prims FC->USD with the _ForceWriteBack_ token when _updateToUSD_
  is False. When the setting is True, it will sync all Prims.
- Added _settingsVersion_ setting

## [2.22.3] - 2022-03-04
### Changed
- OG will no longer automatically load non-OG Prim data into FC during stage attach.

## [2.22.2] - 2022-03-02
### Fixed
- Added support for omni.graph.nodes.ReadTime to lazy (dirty_push) evaluator

## [2.22.1] - 2022-02-18
### Changed
- Bug fix in path attribute monitoring: properly retarget subpath when reparenting happens higher in the hierarchy

## [2.22.0] - 2022-02-18
### Added
- Added tests for schema-based prims
- Added test case base class factory method
### Fixed
- Fixed handling of the schema-based prims
- Removed use of deprecated OmniGraphHelper from some scripts

## [2.21.4] - 2022-02-18
### Changed
- Bug fix accessing a deleted entry in a map

## [2.21.3] - 2022-02-17
### Changed
- Added proper support for path role (that keep track of the target)

## [2.21.2] - 2022-02-16
### Changed
- Changed Fabric Cache creation to new `create2` to allow RingBuffers to have CUDA enabled

## [2.21.1] - 2022-02-15
### Fixed
- Categories on several nodes

## [2.21.0] - 2022-02-15
### Added
- Added support for update_usd flag to the data_view and SetAttr command
### Fixed
- Ignored the Expression node for the warning on nodes without namespaces
- Avoided a crash when the fileFormatVersion attribute could not be found

## [2.20.0] - 2022-02-13
### Changed
- Prim nodes will no longer have OG attributes automatically added
- Prim node authored USD attributes added to FC
- Removed support for special attribute OGN_NonUSDConnections

## [2.19.0] - 2022-02-11
### Added
- Added OmniGraphDatabase.getVariable

## [2.18.0] - 2022-02-10
### Added
- Added setting for using schema prims for graphs and nodes.
- Added use of the omniGraphSchema library for graph and node prims (protected by the setting).

## [2.17.0] - 2022-02-08
### Changed
- Added support for auto conversion between attributes.

## [2.16.1] - 2022-02-07
### Changed
- Moved carb logging out of Database.h and into Node::logComputeMessage.

## [2.16.0] - 2022-02-05
### Added
- IGraph 3.5 -> 3.6
  - Added IGraph::createVariable
  - Added IGraph::removeVariable
  - Added IGraph::findVariable
- IVariable
  - Added IVariable::getDisplayName and IVariable::setDisplayName
  - Added IVariable::getCategory and IVariable::setCategory
  - Added IVariable::getTooltip and IVariable::setTooltip
  - Added IVariable::getScope and IVariable::setScope
  - Added IVariable::isValid

## [2.15.1] - 2022-02-04
### Fixed
- Edge cases in action graph evaluator for fan-in and fan-out of execution attributes

## [2.15.0] - 2022-02-02
### Added
- IGatherPrototype 1.1 -> 2.0
  - Changed the signature of _gatherPaths_
  - Added _getGatheredRepeatedPaths_

## [2.14.0] - 2022-02-01
### Added
- ComputeGraph 1.0 -> 1.1
  - Added *IOmniGraphTest::setTestFailure*
  - Added *IOmniGraphTest::testFailureCount*
- Python bindings at the module level
  - Added *set_test_failure*
  - Added *test_failure_count*
- Added deregistration macro for earlier deregistration of node types (done in a backwards compatible way)

## [2.13.0] - 2022-01-31
### Changed
- IVariable.getPath renamed to IVariable.getSourcePath

## [2.12.0] - 2022-01-28
### Fixed
- Error status change callbacks weren't firing during normal evaluations.
- Bumping the minor version # since features which use the callbacks will not
  work without this change.

## [2.11.0] - 2022-01-26
### Added
- INode 4.1 -> 4.2
  - Added INode::logComputeMessage
  - Added INode::getComputeMessageCount
  - Added INode::getComputeMessage
  - Added INode::clearOldComputeMessages
- IGraph 3.4 -> 3.5
  - Added IGraph::registerErrorStatusChangeCallback
  - Added IGraph::deregisterErrorStatusChangeCallback
  - Added IGraph::nodeErrorStatusChanged
  - Added IGraph::getVariableCount
  - Added IGraph::getVariables
- Created the IVariable type

### Changed
- OmniGraphDatabase::logWarning and logError now log compute messages
  whenever they are different from the node's previous evaluation. Previously
  they would only log a given error once per session and node type.

## [2.10.1] - 2022-01-19
### Changed
- Fixed a bug in attribute resolution propagation logic

## [2.10.0] - 2022-01-18
### Changed
- Extended attributes will now be returned to an unresolved state upon disconnection if the topology of the graph
  does not prevent it.

## [2.9.0] - 2022-01-17
### Added
- INode 4.0 -> 4.1
  - Added INode::getComputeCount
  - Added INode::incrementComputeCount

## [2.8.0] - 2022-01-13
### Added
- IGraphRegistry 1.1 -> 1.2
  - Added _IGraphRegistry::getRegisteredType_

## [2.7.0] - 2022-01-06
### Modified
- _GraphContextObj.context_ has been replaced with _GraphContextObj.contextHandle_. The old member was a
  pointer to an internal OG class. The new member is a POD handle which can be used with OG ABI functions.

## [2.6.1] - 2021-12-30
### Modified
- _INode::resolvePartiallyCoupledAttributes_ checks more type resolution error conditions.

## [2.6.0] - 2021-12-21
### Added
- IAttributeData 1.3 -> 1.4
  - Added _IAttributeData::getDataRGpuAt_
  - Added _IAttributeData::getDataWGpuAt_
  - Added _IAttributeData::getDataReferenceRGpuAt_
  - Added _IAttributeData::getDataReferenceWGpuAt_

## [2.5.1] - 2021-12-16
### Changed
- Action Graph evaluator now uses `og.ExecutionAttributeState.LATENT_FINISH`
  to indicate when a latent node is finished.

## [2.5.0] - 2021-12-10
### Added
- Created the INodeCategories interface
- ComputeGraph 2.4 -> 2.5
  - Added _ComputeGraph::getNodeCategories_

## [2.5.1] - 2021-12-08
### Fixed
- Fix RuntimeAttribute getXX templates to avoid an MSVC compiler bug

## [2.4.0] - 2021-12-07
### Added
- IGraph 3.3 -> 3.4
  - Added _IGraph::isGlobalGraphPrim_
- Modified RuntimeAttribute to include PtrToPtrKind template, with default for backward compatibility

## [2.3.0] - 2021-12-06
### Added
- Added _INodeEvent::eAttributeTypeResolve_

## [2.2.1] - 2021-12-02
### Fixed
- Fix bug where renaming a graph doesn't rename the wrapper node, resulting in new graphs overwriting old graphs
## [2.2.0] - 2021-11-26
### Added
- Python Bindings 2.1.0 -> 2.2.0
  - Added Python api `Graph.get_parent_graph`
- Ignore connections to ComputeGraph prims for the new OmniGraph UI.

## [2.1.0] - 2021-11-26
### Added
- IAttributeType 1.2 -> 1.3
  - Added _IAttributeType::isLegalOgnType_

## [2.0.3] - 2021-11-25
### Added
- INodeType 1.5 -> 1.6
  - Added _INodeType::getName_

## [2.0.2] - 2021-11-24
### Fixed
- Fix for handling of referenced OmniGraph Graphs

## [2.0.1] - 2021-11-18
Exposing attribute optional flag.
### Added
- IAttribute 1.8 -> 1.9
  - Added _IAttribute::getIsOptionalForCompute_
  - Added _IAttribute::setIsOptionalForCompute_

## [2.0.0] - 2021-11-12
Major change to deprecate functionality that has been on the chopping block for a while now.
### Removed
- Removed _PlugFlags_
- Removed _kPlugFlagNone_
- Removed _kPlugFlagFollowUpstream_
- INode 3.1 -> 4.0
  - Retired _getPlug_
  - Retired _stashPlug_
  - Retired _getStashedPlugCount_
  - Retired _getStashedPlug_
- IGraphContext 2.1 -> 3.0
  - Retired _getAttribute_
  - Retired _getAttributeWithAttr_
  - Retired _getAttributeGPU_
  - Retired _getElementCount_

## [1.4.1] - 2021-11-10
- Fixed bugs where renaming the global graph breaks connections and where bundles don't work in global graphs

## [1.4.0] - 2021-11-10
### Added
- New Interface ISchedulingHints
  - Added _ISchedulingHints::getComputeRule_
  - Added _ISchedulingHints::setComputeRule_

## [1.3.1] - 2021-11-08
### Changed
- ISchedulingHints 1.0 -> ONI
  - Kept same functionality, implemented as ONI interface instead of Carbonite interface

## [1.3.0] - 2021-11-04
### Added
- INode 3.1 -> 3.2
  - Added _INode::requestCompute_

## [1.3.0] - 2021-10-27
### Added
- IGraph 3.2 -> 3.3
  - Added _IGraph::evaluate_

## [1.2.0] - 2021-10-18
### Changed
- Prim nodes now not created unless attribute-connected to OG node
### Added
- IGraph 3.1 -> 3.2
  - Added _IGraph::getFlatCacheUserId_
- IAttribute 1.8 -> 1.9
  - Added _IAttribute::ensurePortTypeInName_
  - Added _IAttribute::getPortTypeFromName_
  - Added _IAttribute::removePortTypeFromName_

## [1.1.0] - 2021-10-13
### Added
- IAttribute 1.7 -> 1.8
  - Added _IAttribute::isValid_
- INode 3.0 -> 3.1
  - Added _INode::isValid_
- IGraph 3.0 -> 3.1
  - Added _IGraph::isValid_
- IGraphContext 2.0 -> 2.1
  - Added _IGraphContext::isValid_

## [1.0.6] - 2021-10-08
### Added
- FileFormatVersion 1.1 -> 1.2
  - Added support for scoped graphs in the editor

## [1.0.5] - 2021-10-07
### Added
- IBundle 1.3 -> 1.4
  - Added _IBundle::addAttributes_
  - Added _IBundle::removeAttributes_

## [1.0.4] - 2021-09-30
### Added
- Created ISchedulingHints 1.0
  - Added _ISchedulingHints::getThreadsafety_
  - Added _ISchedulingHints::setThreadsafety_
  - Added _ISchedulingHints::getDataAccess_
  - Added _ISchedulingHints::setDataAccess_
- INodeType 1.4 -> 1.5
  - Added _INodeType::getSchedulingHints_
  - Added _INodeType::setSchedulingHints_

## [1.0.3] - 2021-09-29
### Added
- ComputeGraph 2.3 -> 2.4
  - Added _ComputeGraph::getGraphCountInPipelineStage_
  - Added _ComputeGraph::getGraphsInPipelineStage_
  - Added _GraphBackingType::kGraphBackingType_None_

## [1.0.3] - 2021-09-23
### Added
- IGraph 2.1 -> 3.0
  - Changed the signature of _IGraph::createGraphAsNode_
  - Added _IGraph::getGraphBackingType_
  - Added _IGraph::getPipelineStage_

## [1.0.3] - 2021-09-21
### Added
- IGatherPrototype 1.0 -> 1.1
  - Added _getGatherArray_
  - Added _getGatherArrayGPU_
  - Added _getGatherPathArray_
  - Added _getGatherArrayAttributeSizes_
  - Added _getGatherArrayAttributeSizesGPU_
  - Added _getElementCount_

## [1.0.3] - 2021-09-16
### Added
- IAttribute 1.6 --> 1.7
  - Added _IAttribute::isDynamic()_
  - Added _IAttribute::getUnionTypes()_

## [1.0.3] - 2021-09-15
### Added
- IAttributeData 1.2 --> 1.3
  - Added _IAttributeData::cpuValid()_
  - Added _IAttributeData::gpuValid()_

## [1.0.3] - 2021-08-30
### Added
- IGraph 2.0 --> 2.1
  - Added _IGraph::reloadFromStage()_

## [1.0.2] - 2021-08-18
### Added
- INode 2.0 -> 2.1
  - Added _INode::getEventStream_

## [1.0.2] - 2021-08-09
### IGatherPrototype 1.0
- Added _IGatherPrototype::gatherPaths_
- Added _IGatherPrototype::getGatheredPaths_
- Added _IGatherPrototype::getGatheredBuckets_
- Added _IGatherPrototype::getGatheredType_

## [1.0.2] - 2021-07-26
### Changed
- INode 1.6 --> 2.0
  - Changed the signature of _INode::createAttribute_

## [1.0.2] - 2021-07-16
### Added
- INodeType 1.3 -> 1.4
  - Added _INodeType::removeSubNodeType()_

## [1.0.2] - 2021-07-14
### Changed
- IGraph 1.3 -> 2.0
  - Changed the signature of _IGraph::createSubgraph_

## [1.0.2] - 2021-07-12
### Added
- IGraph 1.2 -> 1.3
  - Added _IGraph::createGraphAsNode_

## [1.0.2] - 2021-07-04
### Added
- INode 1.5 -> 1.6
  - Added _INode::getWrappedGraph()_
### Changed
- ComputeGraph 2.2 -> 2.3
  - Changed the semantics of getGraphCount, getGraphs, getGraphContextCount, getGraphContexts

## [1.0.2] - 2021-07-01
### Added
- INode 1.4 -> 1.5
  - Added _INode::registerPathChangedCallback()_
  - Added _INode::deregisterPathChangedCallback()_

## [1.0.2] - 2021-06-21
### Added
- IAttribute 1.5 -> 1.6
  - Added _IAttribute::getPortType()_

## [1.0.2] - 2021-06-11
### Added
- IBundle 1.2 -> 1.3
  - Added _IBundle::removeAttribute_
- IGraphContext 1.3 -> 1.4
  - Added _IGraphContext::getTimeSinceStart()_

## [1.0.2] - 2021-06-10
### Added
- INodeType 1.2 -> 1.3
  - Added _INodeType::getSubNodeTypeCount_
  - Added _INodeType::getAllSubNodeTypes_
- IDataStealinPrototype 1.0
  - Added _IDataStealingPrototype::actualReference_
  - Added _IDataStealingPrototype::moveReference_
  - Added _IDataStealingPrototype::enabled_
  - Added _IDataStealingPrototype::setEnabled_

## [1.0.2] - 2021-06-01
### Changed
- INode 1.3 -> 1.4
  - Modified _INode::registerConnectedCallback_
  - Modified _INode::registerDisconnectedCallback_
  - Modified _INode::deregisterConnectedCallback_
  - Modified _INode::deregisterDisconnectedCallback_

## [1.0.2] - 2021-05-31
### Added
- IGraph 1.1 -> 1.2
  - Added _IGraph::registerPreLoadFileFormatUpgradeCallback_
  - Added _IGraph::registerPostLoadFileFormatUpgradeCallback_
  - Added _IGraph::deregisterPreLoadFileFormatUpgradeCallback_
  - Added _IGraph::deregisterPostLoadFileFormatUpgradeCallback_

## [1.0.2] - 2021-05-05
### Added
- IGraph 1.0 -> 1.1
  - Added _IGraph::inspect()_
- IAttributeData 1.1 -> 1.2
  - Added _IAttributeData::getDataReferenceR()_
  - Added _IAttributeData::getDataReferenceRGpu()_
  - Added _IAttributeData::getDataReferenceW()_
  - Added _IAttributeData::getDataReferenceWGpu()_
- IAttributeType 1.0 -> 1.1
  - Added _IAttributeType::inspect()_
  - Added _IAttributeType::baseDataSize()_
  - Added _IGraphRegistry::inspect()_
  - Added _IGraphRegistry::registerNodeTypeAlias()_
  - Added _INodeType::inspect()_
- INode 1.2 -> 1.3
  - Added _INode::resolveCoupledAttributes()_
  - Added _INode::resolvePartiallyCoupledAttributes()_
- INode 1.1 -> 1.2
  - Added _INode::getNodeTypeObj()_
- IGraphContext 1.1 -> 1.2
  - Added _IGraphContext::inspect()_

## [1.0.1] - 2021-04-07
### Added
- Created the interface IAttributeType for working with the Type struct

## [1.0.0] - 2021-03-01
### Initial Version
- Started changelog with initial released version of the OmniGraph core
