|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | rolling |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.
CONTRIBUTING
|
memfd_buffer_backend repositoryshared_buffer shared_buffer_backend shared_buffer_backend_msgs shared_buffer_backend_py |
ROS Distro
|
Repository Summary
| Checkout URI | https://github.com/dskkato/memfd_buffer_backend.git |
| VCS Type | git |
| VCS Version | lyrical |
| Last Updated | 2026-09-27 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| shared_buffer | 0.1.0 |
| shared_buffer_backend | 0.1.0 |
| shared_buffer_backend_msgs | 0.1.0 |
| shared_buffer_backend_py | 0.1.0 |
README
shared_buffer_backend
shared_buffer_backend is a rosidl::Buffer backend that shares memory between
compatible ROS 2 endpoints on Linux and Windows. Linux uses anonymous memfd
allocations; Windows uses session-local named file mappings.
See the user guide for an illustrated overview, setup steps,
and C++ / Python examples. The guide is a standalone site ready to be served
with GitHub Pages directly from the docs/ directory.
Attribution
This repository is developed and maintained outside the Open Source Robotics
Foundation (OSRF). Its implementation was developed with reference to the
OSRF rosidl_buffer_backends
implementation.
Packages
-
shared_buffer: shared-memory allocation, pooling, handles, Linux FD brokering, and Windows named-mapping import. -
shared_buffer_backend_py: Python zero-copy bindings for the shared-memory backend (installs theshared_bufferPython module). -
shared_buffer_backend: rosidl buffer backend plugin. -
shared_buffer_backend_msgs: descriptor message used for inter-process import.
Python zero-copy access
The shared_buffer_backend_py package exposes Python buffer-protocol access
through the shared_buffer Python module. NumPy is optional and consumes the
standard memoryview without copying:
import numpy as np
from shared_buffer import allocate_buffer, read_buffer, write_buffer
buffer = allocate_buffer(1024)
with write_buffer(buffer) as view:
array = np.frombuffer(view, dtype=np.uint8)
array[:] = 7
del array # Derived views must be released before leaving the scope.
message.data = buffer
view = read_buffer(received_message.data)
array = np.frombuffer(view, dtype=np.uint8)
process(array)
Read views are read-only. Their read lease is retained by derived buffer objects
and released automatically when the last view is destroyed. Write views are
exclusive and are finalized when the scope closes; a derived write view must not
escape the scope, and closing raises BufferError while one remains alive.
Benchmark
The benchmark package, benchmark results, report, and figures are maintained
in the separate shared_buffer_backend_benchmark
repository.