From f43f5eac00d1049a2b658de6d4f1d994a0745927 Mon Sep 17 00:00:00 2001 From: preciz Date: Fri, 14 Aug 2026 14:27:58 +0200 Subject: [PATCH] Precompute ANSI escape sequences at compile time Build named ANSI sequences once while defining their functions instead of interpolating their static components at runtime. Reuse the resulting literal in format_sequence/1 as well. Assisted-by: Antigravity:Gemini-3.7-Flash --- lib/elixir/lib/io/ansi.ex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/elixir/lib/io/ansi.ex b/lib/elixir/lib/io/ansi.ex index b12ea3e3e36..3b99a02faa5 100644 --- a/lib/elixir/lib/io/ansi.ex +++ b/lib/elixir/lib/io/ansi.ex @@ -111,13 +111,15 @@ defmodule IO.ANSI do end defsequence = fn name, code, terminator -> + sequence = "\e[#{code}#{terminator}" + @spec unquote(name)() :: String.t() def unquote(name)() do - "\e[#{unquote(code)}#{unquote(terminator)}" + unquote(sequence) end defp format_sequence(unquote(name)) do - unquote(name)() + unquote(sequence) end end