Closed
Description
It is desperately needed. Some requirements:
- Default implementations must not ever block the Rust scheduler
- Should support posix streams, files, sockets, etc.
- Should support streams built around uv (non blocking)
Work items:
- Design and implement I/O error handling strategy #6163 Error handling
- String encoding/decoding and I/O #6164 String encoding/decoding
- Implement non-blocking TCP #6165 Non-blocking TCP
- Benchmark single-threaded, non-blocking TCP performance #6166 Benchmark single-threaded TCP performance
- Non-blocking File
- Non-blocking UDP
- Non-blocking Unix
- Non-blocking stdio
- Implement blocking file I/O using new I/O subsystem #6168 Blocking File
- Platform-backed, non-scheduler/runtime entangled IO #9488 non-scheduler/runtime-coupled IO
- Blocking TCP
- Blocking UDP
- Blocking Unix
- Blocking stdio
- Replace core::io with blocking implementation of core::rt::io #6169 Remove old core::io
- DeflateStream
- Memory streams
- Implement HTTP client and server library #6167 HTTP
- Pipe adapters
- Base64 adapters
- Add timers to core #6435 Timers
- Add a uv backend to core::run #6436 Reimplement
core::run
- Iterators and I/O
- Need a solution for select / async events #6842 async i/o
- Add buffered I/O #8953 buffered I/O
- DNS name resolution more than getaddrinfo() #8925 DNS
Completeness
- io::file needs to get expanded to be "fully functional" #10131 finish io::file
- io::FileStat needs to be less platform-dependent #10130 FileStat needs polishing.