Regarding IOBuffer, the current documentation (https://docs.julialang.org/en/stable/stdlib/io-network/) says:
Create an IOBuffer, which may optionally operate on a pre-existing array. If the readable/writable arguments are given, they restrict whether or not the buffer may be read from or written to respectively. By default the buffer is readable but not writable. The last argument optionally specifies a size beyond which the buffer may not be grown.
OK, clear enough. But then:
julia> b=IOBuffer() IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=Inf, ptr=1, mark=-1) julia> write(b,"abc") 3 julia> print(String(b)) abc
Which I guess implies that it is writable after-all? Furthermore:
julia> write(b,"def") 3 julia> print(String(b)) abcdef
Which seems to be appending, which seems to contradict the default options…is there something I am missing conceptually here?