Execution Engine Changelog

Below you can find the changelog for the Execution Engine.

Execution Engine v1.8.0 | inference v1.1.1

Note

Additive change + one breaking change due to bug fix with minimal expected impact.

This release extends the Execution Engine so that steps gated by control flow (e.g. after a ContinueIf block) can run even when they have no data-derived lineage -- i.e. when they do not receive batch-oriented inputs from upstream steps. Existing workflows are unaffected.

What changed:

  • Control flow lineage -- The compiler now tracks lineage that comes from control flow steps. A new notion of control flow lineage support is used when a step has no batch-oriented data inputs but is preceded by control flow steps.
  • Loosened compatibility check -- Previously, verify_compatibility_of_input_data_lineage_with_control_flow_lineage raised an error for any step that had control flow predecessors but no data-derived lineage. That check is now relaxed.
  • New step patterns -- Steps that are triggered only by control flow and do not consume batch data now run correctly.
  • Batch.remove_by_indices with nested batches (behavioral fix) -- Nested Batch elements are now recursively filtered when removing indices.

Execution Engine v1.7.0 | inference v0.59.0

Warning

Breaking change regarding step errors in workflows. Workflow blocks interacting with Roboflow platform which fail due to client misconfiguration will now raise ClientCausedStepExecutionError instead of StepExecutionError.

Scenarios affected:

  • Block using Roboflow model defines invalid model ID -- now raises ClientCausedStepExecutionError with status code 400.
  • Block using Roboflow model defines invalid API key -- now raises ClientCausedStepExecutionError with status code 401.
  • Block using Roboflow model defines model which does not exist -- now raises ClientCausedStepExecutionError with status code 404.
Note

It is possible to bring back the legacy behaviour by setting DEFAULT_WORKFLOWS_STEP_ERROR_HANDLER=legacy.

Execution Engine v1.6.0 | inference v0.53.0

Note

This release introduces upgrades and new features with no changes required to existing workflows. Some blocks may need to be upgraded to take advantage of the latest Execution Engine capabilities.

Key changes:

  • Auto Batch Casting -- When a SIMD input receives scalar data, the Execution Engine automatically casts it into a batch. This removes the previous limitation that caused compilation errors.
  • Dimensionality collapse blocks may now operate on scalars.
  • Blocks can now create output batches from scalars or collapse batches into scalars.
  • New manifest method get_parameters_enforcing_auto_batch_casting(...) for blocks that decrease dimensionality without defining batch-oriented inputs.

Execution Engine v1.5.0 | inference v0.38.0

  • Exposed new parameter executor in the init method of BaseExecutionEngine class for injecting a ThreadPoolExecutor. This improves performance by reducing thread spawning.

Execution Engine v1.4.0 | inference v0.29.0

  • Added new kind -- secret to represent credentials.
  • Fixed issue with results serialization introduced in v1.3.0.
  • Fixed Execution Engine bug with preparing inputs for steps where accepts_empty_input() was being ignored for non-SIMD steps.

Execution Engine v1.3.0 | inference v0.27.0

  • Introduced kind serializers and deserializers, decoupling Workflows plugins from the Execution Engine.
  • Workflows Compiler and Execution Engine were enhanced to support batch-oriented inputs of any kind.
  • New input type WorkflowBatchInput introduced (superset of WorkflowImage and WorkflowVideoMetadata).
  • New selector type annotation Selector(...) introduced to replace the older annotation types.
  • New manifest methods: get_parameters_accepting_batches() and get_parameters_accepting_batches_and_scalars().

Execution Engine v1.2.0 | inference v0.23.0

  • The video_metadata kind has been deprecated. The image kind has been extended to support the same metadata as video_metadata.
  • New class methods WorkflowImageData.copy_and_replace(...) and WorkflowImageData.create_crop(...) introduced.