From 11d38a7e520f485206b7b010f64127d864194e4c Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 28 Jul 2020 11:10:51 -0700 Subject: [PATCH] std.fmt.format: small optimization to avoid runtime bloat When there are no format parameters, it simply calls `writeAll`. This has the effect of no longer emitting a compile error for using `{}` and not having any parameters, however, at this point in the development process of Zig I think that tradeoff is worthwhile. On the other hand, it might be OK to simply define formatting to work this way. It's a common pattern to use the formatting function's format string `"like this", .{}` instead of `"{}", .{"like this"}`, which can lead to accidentally putting control characters in the formatting string, however, with this change that works just fine. --- lib/std/fmt.zig | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig index c9ba3b3470..df222daddd 100644 --- a/lib/std/fmt.zig +++ b/lib/std/fmt.zig @@ -88,6 +88,8 @@ pub fn format( if (args.len > ArgSetType.bit_count) { @compileError("32 arguments max are supported per format call"); } + if (args.len == 0) + return writer.writeAll(fmt); const State = enum { Start,