- Fixed a permissions issue with Windows pipes.
- Documented some non-obvious behavior regarding pipe cloning.
- Internally to the Pipe struct, raw handles are now wrapped in Arc. Cloning a Pipe results in a weak reference rather than a naive copy of the raw handle. This allows for all clones to be properly invalidated when a handle is closed. Note that this does NOT contain any internal Mutex.
- Minor breaking change -
Pipe::close()
now takesself
instead of&mut self
, ensuring that references to closed pipes can't sit around.
- Added the
tokio_channels
feature, which provides exactly the same functionality as channels using tokio's async API instead of std threads.
- No longer delete autocreated pipes on Unix by default. This creates more consistent behavior between unix and Windows.
- Added the
channels
feature.
- Removed a rogue print statement when closing a static pipe.
- Windows pipes will now attempt to recover from a disconnected client.
- Fixed a possible deadlock scenario by using a lock-free hashmap.
- Added a close function that can be called explicitly. Pipes are not longer implicitly closed on drop.
- Unix version will now create pipes if they don't exist when calling
open
. This is to be more consistent with the Windows implementation.
- Fixed a double flush
- Finally got reads working correctly for windows and linux pipes. The solution is complex so more testing is stil needed.
- Static pipe print macros now return results. It's better than panicking.
- Fixed bug that prevented writers from being initialized before readers on Windows.
- General stability improvements.
- Removed dependence on the
windows_named_pipe
crate. Everything is done through winapi on the windows side now. Will likely keep nix on the Linux side as it's sufficiently low-level for any potential purposes of this crate. - Fixed a bug where compilation failed if the
rand
feature was disabled.
- Removed the
Pipe::close()
method. The drop trait now does all the work that once did. - Renamed some internal interfaces to be more clear.
- Added the
Pipe::name()
method rand
is now optional (default) feature, as its only purpose is a single method that generates a pipe with a random name.- Documentation updates.
- Windows paths now use raw strings.
- Documentation cleanup.
- Made static_pipe a default feature.
- Replaced all non-idiomatic I/O interfaces with standard traits (Read, Write, etc). Interfaces should be much more stable now. Static pipes are the exception here, more changes will likely come down the road.
- Slightly better testing and documentation.
- Fixed a bug with static pipes that prevented their use entirely.
- API improvements, better tests, bug fixes, documentation fixes.
- Implemented static pipes.
- Added a Pipe::with_name function that allows for better platform independance.
- Added more documentation.
- Initial commit. Lacks features, and likely contains significant bugs. More testing is needed.