io 0.0.8

IO streams implemented from the ground up.

To use this package, put the following dependency into your project's dependencies section:


IO Streams Build Status

This is a POSIX and Windows compatible IO stream library for D.

The primary purpose of this package is to provide a better API than what is currently available in the D standard library. Secondly, it is meant to be fast. All file operations are implemented using the low-level system calls provided by the operating system.


  • File streams
  • Memory mapped files
  • Pipes
  • Temporary files
  • Generic stream buffering
  • Text serialization to streams


Sorting Lines

import io, std.array, std.algorithm;

void main()

Temporary Files

import io;

void main()
    // Create a temporary file to write to. This returns the path to the file
    // and its file handle. The file is automatically deleted when the file
    // handle is closed. The file handle is closed when it falls out of scope.
    auto temp = tempFile();

    // Print to standard output.
    println("Temporary file path: ", temp.path);

    // Write an arbitrary array to the stream.
    temp.file.write("Hello world!");

    // Seek to the beginning.
    temp.file.position = 0;

    // Read in 5 characters.
    char[5] buf;;
    assert(buf == "Hello");

Memory Maps

import io;
import std.parallelism, std.random;

void main()
    // Creates a 1 GiB file
    auto f = File("big_random_file", FileFlags.writeNew);
    f.length = 1024^^3; // 1 GiB

    // Fill the file with random data using a memory map.
    auto map = f.memoryMap!size_t(Access.write);
    foreach (i, ref e; parallel(map[]))
        e = uniform!"[]"(size_t.min, size_t.max);


Documentation can be found here.


Boost license

Jason White
0.0.8 2016-Jun-18
0.0.7 2016-Apr-29
0.0.6 2016-Apr-23
0.0.5 2016-Apr-13
0.0.4 2016-Feb-06
Show all 9 versions
Download Stats:
  • 0 downloads today

  • 2 downloads this week

  • 13 downloads this month

  • 616 downloads total