FORM RNTuple Draft - #635
Conversation
runtime dispatch problems that were stopping RNTuple code from being used.
choosing a technology from the command line to match form_module. The form_basics test still needs an update.
…ming testing commit. Bugs had to do with types for which no TClass exists and calling functions in the wrong order.
… technology because phlex's clang-tidy configuration rightly complains about initialization of a global variable throwing an exception.
…ild directory can ignore this if I'm not careful to reset it.
…to match the rest of phlex. Added a comment clarifying why this can't be done for RField read container. Removed non-functional ROOT_RField_read_container::setAttribute().
|
@phlexbot format |
|
31 fixed, 0 new since branch point (db22b8a) ✅ 31 CodeQL alerts resolved since the previous PR commit
✅ 31 CodeQL alerts resolved since the branch point
Review the full CodeQL report for details. |
This comment was marked as outdated.
This comment was marked as outdated.
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #635 +/- ##
==========================================
+ Coverage 83.27% 83.96% +0.69%
==========================================
Files 162 170 +8
Lines 5912 6605 +693
Branches 670 798 +128
==========================================
+ Hits 4923 5546 +623
- Misses 796 819 +23
- Partials 193 240 +47
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 7 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
|
Awaiting Framework-R-D/action-configure-cmake#5 for final test run |
…nullptr. Also took out the container commit in form_storage_test when this happens because a commit without a fill is an error.
|
@phlexbot format |
Format Fixes Applied✅ clang-format fixes pushed (commit 6c9615c) |
This comment was marked as outdated.
This comment was marked as outdated.
Clang-Tidy Check ResultsFound 6048 issue(s); none are newly introduced by this patch. All issues by check:
See inline comments for details. Comment |
…ivier23/phlex into form_rntuple_for_inactive_pr
Clang-Tidy Check ResultsFound 6358 issue(s); none are newly introduced by this patch. All issues by check:
See inline comments for details. Comment |
|
looks good to me |
Adding an early draft of RNTuple for FORM. This PR adds the capability to write data products to a file using RNTuple instead of TTree, but it is disabled by default through a CMake flag. The goal is for the RNTuple backend to become part of our maintenance routine while we prepare it for v0.4.
CI / Workflows
form-rntuple-storageinput to.github/actions/configure-cmake/action.yaml, exposed as envFORM_RNTUPLE_STORAGE, and pass-DFORM_USE_RNTUPLE_STORAGE="$FORM_RNTUPLE_STORAGE"to cmake..github/workflows/cmake-build.yamland.github/workflows/coverage.yamlto reference the branch-local configure-cmake action (aolivier23/phlex/.github/actions/configure-cmake@form_rntuple_for_inactive_pr) for the PR..github/actions/*reference@main). Author notes a checklist item to revert action refs toFramework-R-D/phlex@mainbefore merge.Build system
FORM_USE_RNTUPLE_STORAGEadded toform/CMakeLists.txt(default OFF).form/root_storage/CMakeLists.txtrefactored to:FORM_USE_RNTUPLE_STORAGEis enabled,USE_RNTUPLE_STORAGEcompile definition,ROOT::ROOTNTuplein link deps when enabled.FORM_USE_ROOT_STORAGEandFORM_USE_RNTUPLE_STORAGEare enabled.Code — RNTuple storage implementation (experimental / draft)
form::detail::experimental::ROOT_RField_Read_ContainerImp.ROOT::RNTupleReader, constructsROOT::RNTupleView<void>, bounds-checks ids, allocates per-entry buffers, performs type-fallback for streamer/type mismatches, converts ROOT exceptions tostd::runtime_error, and returns per-entry data via caller pointer.ROOT_RField_Write_ContainerImp: per-field RField write container; supportsforce_streamer_field, lazily creates writer/entry on first fill, binds raw pointers, and commits via parent writer.ROOT_RNTuple_Write_ContainerImp: parent/association for RNTuple writing. Constructor/destructor present; core methods (setupWrite,fill,commit) are currently stubbed or throw — write-side functionality incomplete.form/util/factories.hppextended to return RNTuple read/write implementations (ROOT_RNTuple_Write_ContainerImp,ROOT_RField_Read_ContainerImp,ROOT_RField_Write_ContainerImp) when the detected ROOT minor indicates RNTuple support.Tests
test/form/CMakeLists.txtupdated to:ROOT_RNTUPLEinFORM_TEST_TECHNOLOGIESwhen enabled,_${TECH},TEST_PROPERTIESresource lock forform_storage_test_${TECH},form_module_rntuplecet_testconditioned onFORM_USE_ROOT_STORAGE AND FORM_USE_RNTUPLE_STORAGE.test/form/form_test_rntuple.jsonnetadded to exerciseROOT_RNTUPLEwrite path.form_root_schema_write_test.cppandform_root_schema_read_test.cppmodified to accept a technology string argument and write technology-specific log files.test/form/form_storage_test.cppexpanded with additional lifecycle and error-handling tests, including a new TEST_CASE asserting unsupported attributes throwstd::runtime_error.Code quality / maintenance notes