Skip to content

Phlex v0.4.3

Latest

Choose a tag to compare

@knoepfel knoepfel released this 08 Oct 19:11
· 75 commits to main since this release
6530065

Important

This is a prototype release. It is known to have incomplete functionality with respect to the Phlex conceptual design; backwards compatibility of API is not guaranteed. The following API is intended for use:

  • PHLEX_REGISTER_ALGORITHMS(...) opener for registering physics algorithms
  • PHLEX_REGISTER_PROVIDERS(...) opener for registering explicit data-product providers
  • PHLEX_REGISTER_SOURCE(...) opener for registering a user-defined input source
  • PHLEX_REGISTER_DRIVER(...) opener for registering a user-defined framework-driver function
  • PHLEX_REGISTER_RESOURCES(...) opener for registering resource plugins
  • Anything in the top-level phlex namespace

Interfaces in phlex::experimental may change; interfaces containing internal or detail should not be directly used.


Phlex v0.4.3 is a patch release that adds a safeguard against an unsupported unfold configuration present in Phlex v0.4.2:

  • Unfolds accepting inputs from differently-named layers could leave higher-layer products cached and prevent folds partitioned by those layers from emitting results

No new features are introduced. Such configurations now fail during algorithm registration with an explicit diagnostic rather than proceeding with incorrect processing behavior. Users whose workflows include multi-layer unfold inputs must restructure those inputs to use a single layer; support for multi-layer unfolds is planned for Phlex v0.5.

Instructions for building code that uses Phlex and running simple Phlex jobs can be found in the phlex-examples repository.

Note

Phlex v0.4.3 uses C++23. You will need a compiler with sufficient C++23 support to build and install this release (GCC 15, LLVM 21, etc.).


Bug Fixes

  1. Reject unsupported multi-layer unfold inputs (#961)

As reported in #955, a nested unfold whose object also accepts a product from a higher layer could prevent that layer from flushing, leaving products and fold accumulators cached without emitting the expected results. Unfold registration now throws std::invalid_argument when the input products span more than one distinct layer name. The diagnostic identifies the unfold node and its input layers. Multiple inputs from the same layer remain supported.

This is a temporary restriction, not an implementation of multi-layer unfold support. As a workaround, users can perform the multi-layer work in a transform and pass its result to an unfold with single-layer inputs.


Included Pull Requests

Full Changelog: v0.4.2...v0.4.3