[Rd] certain pipe() use cases not working in r-devel

Tomas Kalibera tom@@@k@||ber@ @end|ng |rom gm@||@com
Tue Feb 20 19:18:33 CET 2024


On 2/18/24 00:23, Jennifer Bryan wrote:
> I've now tested with:
>
> > R.version.string
> [1] "R Under development (unstable) (2024-02-16 r85931)"
> and all of the previously mentioned examples now work as expected on 
> macOS.
>
> Thanks for the quick fix,

Thanks for the testing,
Tomas

> Jenny
>
> On Thu, Feb 15, 2024 at 8:02 AM Tomas Kalibera 
> <tomas.kalibera using gmail.com> wrote:
>
>
>     On 2/14/24 23:43, Jennifer Bryan wrote:
>     > Hello,
>     >
>     > I've noticed a specific type of pipe() usage that works in
>     released R, but
>     > not in r-devel.
>     >
>     > In 4.3.2 on macOS, I can write to a connection returned by
>     pipe(), i.e.
>     > "hello, world" prints here:
>     >
>     >> R.version.string
>     > [1] "R version 4.3.2 (2023-10-31)"
>     >> con <- pipe("cat")
>     >> writeLines("hello, world", con)
>     > hello, world
>     >
>     > But in r-devel on macOS, this is silent no-op, i.e. "hello,
>     world" does not
>     > print:
>     >
>     >> R.version.string
>     > [1] "R Under development (unstable) (2024-02-13 r85895)"
>     >> con <- pipe("cat")
>     >> writeLines("hello, world", con)
>     > My colleague Lionel Henry confirms he sees the same results on
>     linux.
>     > This particular example with cat doesn't work on Windows, so I
>     don't have
>     > any useful observations for that OS.
>     >
>     > You might say this is a weird example or use case. The actual
>     usage where I
>     > discovered this is the way folks read/write the clipboard on
>     macOS using
>     > pbcopy/pbpaste (and, in very similar ways, on linux using xsel
>     or xclip).
>     > This is mentioned in the "Clipboard" section of the connections
>     help topic.
>     >
>     > In 4.3.2 on macOS, I can successfully roundtrip with the clipboard:
>     >
>     >> pb_write <- pipe("pbcopy")
>     >> writeChar("hello clipboard!", pb_write, eos = NULL)
>     >> pb_read <- pipe("pbpaste")
>     >> readChar(pb_read, 16)
>     > [1] "hello clipboard!"
>     >
>     > In r-devel, it appears that the write operation silently does
>     nothing:
>     >
>     >> pb_write <- pipe("pbcopy")
>     >> writeChar("hello clipboard!", pb_write, eos = NULL)
>     >> pb_read <- pipe("pbpaste")
>     >> readChar(pb_read, 16)
>     > character(0)
>     >
>     > If the clipboard is populated through other means, I can
>     > use readChar(pipe("pbpaste"), ...) to read the clipboard even in
>     r-devel.
>     > So this seems to be specific to writing to the connection.
>     >
>     > Is this change in behaviour intentional and will it be present
>     in the next
>     > release of R? FWIW, I did a crude search of the source of all
>     CRAN packages
>     > and there are quite a few currently using pipe() for clipboard
>     access on
>     > *nix.
>
>     This should be fixed now in R-devel. Thanks for the report and
>     thanks to
>     Ivan for the debugging. It would be great if you could test on
>     your end
>     with different examples and report any other issues.
>
>     Thanks
>     Tomas
>
>     >
>     > -- Jenny
>     >
>     >       [[alternative HTML version deleted]]
>     >
>     > ______________________________________________
>     > R-devel using r-project.org mailing list
>     > https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list