I wonder if it would be a good idea to have logging or debug prints that simply lie about being pure so you can use them there.
Something like this: == extern(C) pure void puts(const char*); pure void hello() { puts("hello world from pure land\n"); // compiles } ==