I am not sure if this is a small bug or if this is "as designed". Close it if this is working as designed. D2 code: import std.stdio, std.conv, std.string; void main() { auto a = [1, 2, 3]; writeln(a); writefln("%s", a); writeln(text(a)); writeln(format("%s", a)); } The output given by DMD 2.059head: [1, 2, 3] [1, 2, 3] [1, 2, 3] [1,2,3] I think writefln("%s") and format("%s") should give the same output. So I think here format("%s") should add a space after the comma.
*** This issue has been marked as a duplicate of issue 4532 ***