Still wish the Linux kernel had zero-copy IPC with pipes. vmsplice(1) can zero-copy data into the pipe, but the destination process cannot vmsplice(1) the data out of the pipe without incurring a copy.
It is possible to implement a simple shared memory queue which does not requires syscalls unless empty or full, and the time saved avoiding system calls (and expensive VM manipulation) might be more than the cost of copying data in and out for many applications.