Skip to content

feat: fast C++ DAG engine and pip_* functional API#57

Merged
rpahl merged 145 commits into
mainfrom
fast_dag
Jun 8, 2026
Merged

feat: fast C++ DAG engine and pip_* functional API#57
rpahl merged 145 commits into
mainfrom
fast_dag

Conversation

@rpahl

@rpahl rpahl commented Jun 8, 2026

Copy link
Copy Markdown
Owner

This PR replaces the original R-based dependency resolution with a high-performance and for pipelines optimized C++ implementation of a DAG and introduces a modern pip_* functional API.

Core Changes

  • C++ DAG engine (src/dag.cpp, 882 lines): All graph operations (node/edge add/remove, topological ordering, reachability queries) now run at C++ speed via Rcpp external pointers and .Call interface. This eliminates the R object overhead for dependency resolution.
  • New and improved pip_* API: Functional API replacing the R6 Pipeline class — pip_new(), pip_add(), pip_run(), pip_replace(), pip_clone(), pip_bind(), etc.
  • Execution modes (auto/split/reduce/plain): Native support for map-reduce style workflows where steps can split output into named partitions and downstream steps auto-map over them.
  • Backward compatibility: Legacy pipe_* functions and Pipeline R6 class preserved as deprecated aliases (R/aliases.R, R/pipelineR6.R).

New Features

  • pip_view() — create filtered pipeline views (by dependencies, tags)
  • pip_tag() / pip_untag()
  • [[ extract operator for pipelines
  • Comprehensive revision of all vignettes to match new API

Other

  • MIT license, updated CI workflows, dependabot config, kilo.json, lintr/styler config
  • Extensive test suite (~10K+ lines) covering C++ DAG, pip_* API, aliases, execution modes, and recursive runs

rpahl added 30 commits March 15, 2026 14:29
- Created a new `Dag` class in `dag.cpp` to manage a directed acyclic graph (DAG) structure.
- Implemented methods for adding nodes and edges, as well as retrieving the size and topological order of the DAG.
- Added unit tests for the `Dag` class in `test_dag.R` to verify node addition and size functionality.
rpahl added 24 commits June 6, 2026 21:03
…y; enhance tests for grouped output handling
Update README.Rmd vignette titles and descriptions for clarity.
Refactor _pkgdown.yml to reorganize the reference section into more
logical categories (Getting started, Modify steps, Pipeline composition,
Inspection and views, Locking and tagging, and S3 methods) and update
function names to reflect the new `pip_` prefix convention.
@rpahl rpahl self-assigned this Jun 8, 2026
@rpahl rpahl merged commit aca87ac into main Jun 8, 2026
7 checks passed
@rpahl rpahl deleted the fast_dag branch June 8, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant