Releases: Framework-R-D/phlex
Releases · Framework-R-D/phlex
Phlex v0.1.0
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 algorithmsPHLEX_REGISTER_PROVIDERS(...)opener for registering data-product providers- Anything in the top-level
phlexnamespace
Any interface (namespaces, functions, classes, etc.) that contains the strings experimental, internal, or detail should not be directly used.
Phlex v0.1.0 is the first prototype release of the Phlex framework. The purpose of the v0.1.0 release is to allow early adopters of Phlex to exercise its basic functionalities, which include:
- Specifying C++ algorithms as operators to the
transform,observe,fold, andunfoldhigher-order functions - Specifying Python algorithms as operators to the
transformandobservehigher-order functions - Executing
phlexprograms using Jsonnet/JSON runtime configurations that load compiled plugins - Configuring a Phlex-provided driver to produce a user-defined hierarchy (a tree) of data layers
- Writing data products with basic types to Phlex output files through FORM
- Accessing data-cell information through
phlex::handle<T>objects for data products being used by algorithms
Instructions for building code that uses Phlex and running simple Phlex jobs can be found in the phlex-examples repository.
Specific Features
Phlex v0.1.0 provides the following capabilities:
- API to register algorithms for C++ and Python
- Phlex executable
- Configuration
- Supported language is Jsonnet
- Ability to configure which modules are loaded (includes ability to configure which algorithms specified in the module are registered)
- Ability to configure a Phlex-provided driver regarding which layers should be emitted
- Product specification
- C++ language type
- Global product "name"
- Data layer
- Higher-order functions
- Transform (C++, Python)
- Observer (C++, Python)
- Fold (C++)
- Unfold (C++)
- Access to product information (including data-cell ID) through handles
- Algorithms that can access multiple data products from the same data layer
- Python algorithm that can consume a data product produced by a C++ algorithm
- C++ algorithm that can consume a data product produced by a Python algorithm
- C++ providers that can emit C++ data products
Included Pull Requests
- Optionally build with experimental FORM integration by @greenc-FNAL in #1
- Place form subdirectory at the top level by @knoepfel in #2
- Include formatting info for
std::atomic<>by @greenc-FNAL in #3 - Space between quotes and suffix is deprecated in C++23 by @greenc-FNAL in #4
- Tweak CMake style to match Cetmodules by @greenc-FNAL in #6
- More
spdlog/fmtfixes/improvements by @greenc-FNAL in #5 - Initial form prototype by @gemmeren in #8
- Remove dependence on boost backtrace by @wddgit in #12
- Remove set functions by @gemmeren in #13
- Form updates by @gemmeren in #11
- Ensure that ReadVector runs after WriteVector by @knoepfel in #23
- Continuous Integration on github Actions by @aolivier23 in #25
- Allow py:phlex to work without installing header files (use source instead) by @pcanal in #28
- Use configuration for I/O, plus general cleanup by @barnaliy in #22
- Apply clang-format 20 by @knoepfel in #26
- Warn only once per build directory about missing DOT by @pcanal in #30
- Ask github clangformat action's shell to not interpret comment by @pcanal in #31
- Remove for_each(...) registration API by @knoepfel in #34
- Adjust registration API for predicates and observers by @knoepfel in #35
- Remove need for
detail::port_names(...)by @knoepfel in #37 - Use Boost PFR in
node_catalogby @knoepfel in #38 - Change observer/predicate API to use input_family(...) by @knoepfel in #39
- Verify that a data product can be a vector of abstract types by @knoepfel in #40
- Use
simple_ptr_mapand other cleanups by @knoepfel in #41 - Apply clang-format to concept definitions by @knoepfel in #42
- Use different implementation for
when(...)clause by @knoepfel in #43 - FORM container config by @aolivier23 in #36
- Workflow lint tweaks and rename for clarity by @greenc-FNAL in #47
- Actions for cmake-format by @greenc-FNAL in #48
- Turn reusable parts of cmake-build into composite actions by @greenc-FNAL in #51
- Add support and preliminary configuration for clang-tidy by @greenc-FNAL in #49
- Update CI container with dev tools by @greenc-FNAL in #55
- Refactoring to avoid unnecessary includes and minimize template instantiations by @knoepfel in #44
- Copilot instructions by @greenc-FNAL in #52
- Remove now-unnecessary inputs and conditional actions by @greenc-FNAL in #58
- Allow generator specification for actions by @greenc-FNAL in #56
- Add support and actions for coverage monitoring by @greenc-FNAL in #50
clang-tidy-checkshould use composable actions to retain context by @greenc-FNAL in #59- Fix
coverage.shpath normalization by @greenc-FNAL in #64 - Add logic to bypass unneeded container load/workflow by @greenc-FNAL in #62
- Fix filtering race condition by @knoepfel in #65
- Resolve
[clang-diagnostic-error]issues when runningclang-tidyby @greenc-FNAL in #69 - Update and use image; fix/improve clang-tidy use by @greenc-FNAL in #77
- Disable CMake module scanning to prevent
clang-diagnostic-errorby @greenc-FNAL in #79 - Preliminary integration with Cetmodules 4 by @greenc-FNAL in #7
- Integrate clang-tidy with PR comments by @google-labs-jules[bot] in #80
- Improve coverage test reporting by @greenc-FNAL in #63
- Tweaks to clang-tidy configuration by @knoepfel in #82
- Create and schedule weekly CodeQL checks by @greenc-FNAL in #83
- Do not override clang-tidy header filter on command line by @knoepfel in #84
- [clang-tidy] Disable strict nodiscard and implicit Boolean conversion checks by @knoepfel in #88
- Update registration for transforms, folds, unfolds, and output modules by @knoepfel in #60
- maintenance/copilot instructions markdown by @greenc-FNAL in #89
- Adjust header guards to use LLVM style by @knoepfel in #93
- Remove unused code when forming graph by @knoepfel in #92
- Overhaul coverage tooling for GCC and Clang by @greenc-FNAL in #94
- Improvements to CI image, including installation of Ruff by @greenc-FNAL in #97
- Fix schema issue by @greenc-FNAL in #98
- Re-work image generation by @greenc-FNAL in #100
- Fix reference to removed image in coverage workflow by @greenc-FNAL in #103
- Adjust unfold so that it doesn't need a multiplexer by @knoepfel in #95
- Restore erroneously-removed sourcing of
entrypoint.shby @greenc-FNAL in #115 - Clang-tidy configuration adjustment by @knoepfel in #102
- Produce PR comment with summary on new or resolved alerts by @greenc-FNAL in #114
- Handles are valid upon construction by @knoepfel in #96
- R...