← Back to all sparks
M

magrittr

DEVOPS
Velocity0.0

Pipe operators for R that make data transformation code read left to right

magrittr rewrote its pipe in C, then base R shipped one and the releases stopped

pipe-operatorfunctional-programmingtidyverselegacydormant
Current state
magrittr gave R the %>% operator and, in 2020, rewrote it in C for speed, lazy evaluation and clean backtraces — explicitly shaped to resemble the pipe R itself was likely to adopt. R 4.1 then shipped |> natively, and magrittr's release history effectively ends: an eager pipe variant in 2.0.2 and a memory-protection fix in 2.0.3, nothing since.
Where it's heading
The package's direction was set by its own success. Having proven the idiom and then aligned its semantics with what base R would do, there is little left to add, and the wider ecosystem has been migrating to the native pipe — finetune switched, lintr now requires it by default. magrittr's remaining role is compatibility for the enormous body of code already written against %>%.
Prediction
The entries do not support a prediction of new features; four years without a release points to a package that is finished rather than one between cycles.

Recent moves

  1. 4y ago

    C-level protection issue in %>% fixed

    A memory-protection correction in the C pipe implementation, and the last release in this feed.

    View source ↗
  2. 4y ago

    Eager pipe %!>% for sequential evaluation

    Adds an eager counterpart to the now-lazy pipe, with the notes steering users toward force() instead where possible. A small counterweight to the semantics 2.0.0 introduced.

    View source ↗
  3. 5y ago

    Calling-environment and freduce() fixes

    Two follow-up fixes to the 2.0.0 rewrite, including a regression in freduce() on long lists.

    View source ↗
  4. 5y ago

    Pipe rewritten in C with lazy evaluation

    ⚡ SPARK

    The release that redefined what %>% does. Rewriting the pipe in C for minimal overhead and clean backtraces came with lazy evaluation of piped expressions — which is what lets errors and warnings be handled by trailing pipe calls, and what makes return() inside a pipeline an error.

    View source ↗
  5. 11y ago

    New operators, lambda syntax and functional sequences

    The 2014 CRAN release that established the vocabulary beyond the basic pipe. Included here as the historical floor of this feed rather than as recent activity.

    View source ↗