"put" safety in inferred so this issue can be trivially proven wrong: void main() @safe { import std.array : Appender; Appender!(ubyte[]) a; a.put([ubyte(0)]); } Reopen with a proper test case if any. In the meantime is assumed that you must called "put" with the result of an unsafe function.