Text output =========== Idea: Make output streams look like strings! Advantages: + Easy to use / understand + Can be buffered + Can be outputted when buffer is full + C++ programmers will find it familiar ("os <<" vs "os +=") Disadvantage: - Does not support translation properly! Failures to flush the buffer when performing an += operation causes an asynchronous failure. Failures could be configured in 3 modes: 1. Cause the whole "isolated arena" to fail (typically the whole process, or the request in servers), just like a divison by zero or integer overflow. 2. Defer the error until .close() or .flush() is called (and perhaps have a .signal_errors() function) 3. Ignore the error. These 3 may need to have separate types, but "converting" to a lower number is fine. In case 1, a "risky" block should be required at both the += and close/flush calls, and in case 2, only in the close/flush calls. Example: func write_stuff(arena, string name, int numbers) { own OutputStream os = .open_console_out(arena) os += "Hello " + name + "\n" for int i in .range(0, numbers-1) { os += i + ": Test\n" } os.close() }