https://github.com/biojulia/bufferio.jl
The buffer is the interface
https://github.com/biojulia/bufferio.jl
Last synced: 8 months ago
JSON representation
The buffer is the interface
- Host: GitHub
- URL: https://github.com/biojulia/bufferio.jl
- Owner: BioJulia
- License: mit
- Created: 2025-08-18T06:35:40.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-10-15T09:31:53.000Z (8 months ago)
- Last Synced: 2025-10-17T12:55:30.075Z (8 months ago)
- Language: Julia
- Homepage:
- Size: 706 KB
- Stars: 17
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# BufferIO.jl
[](https://biojulia.dev/BufferIO.jl/dev/)
[](https://github.com/BioJulia/BufferIO.jl/releases/latest)
[](https://codecov.io/gh/BioJulia/BufferIO.jl)
BufferIO is an alternative IO interface in Julia inspired by Rust, designed around exposing buffers to users for them to explicitly copying to and from.
Compared to `Base.IO`, the interfaces in this package are generally:
* Lower level
* Faster
* Easier to reason about
* Better specified, with more well-defined semantics
* Free from slow fallback methods that trash your performance
This package also provides a basic set of types which allows easy interoperation between `Base.IO` types the new buffered interface.
## Comparison with other packages
#### BufferedStreams.jl
BufferedStreams.jl speeds up the existing `Base.IO` interface for unbuffered types by providing and internal buffer.
However, the package does not provide an interface for reading/writing from the buffer directly,
BufferedStreams also provide concrete types, but no abstract interface.
Finally, it does not attempt to improve on the interface of `Base.IO`.
#### TranscodingStreams.jl
TranscodingStreams.jl provides buffering, but does so through a specific `Buffer` type instead of through an interface.
It is also centered around *transcoding* and not IO in general. Its interface is both more complex and less documented than this package. Finally, it exposes the `Base.IO` interface instead of an alternative interface.
## Questions?
If you have a question about contributing or using BioJulia software, come on over and chat to us on [the Julia Slack workspace](https://julialang.org/slack/), or you can try the [Bio category of the Julia discourse site](https://discourse.julialang.org/c/domain/bio).