String template always requiring a processor

Remi Forax forax at
Thu Oct 27 21:10:10 UTC 2022

----- Original Message -----
> From: "Guy Steele" <guy.steele at>
> To: "Jim Laskey" <james.laskey at>
> Cc: "amber-spec-experts" <amber-spec-experts at>
> Sent: Thursday, October 27, 2022 9:35:49 PM
> Subject: Re: String template always requiring a processor

> I agree that, because one can always use the RAW processor (which simply passes
> back the string template itself), always requiring a processor syntactically
> seems like a good way to go.
> —Guy

I believe RAW can be written

  private static final TemplateProcessor RAW = template -> template;

>> On Oct 27, 2022, at 3:19 PM, Jim Laskey <james.laskey at> wrote:
>> We’ve been having a rethink after recent concerns expressed by several experts
>> over the current string template design leading beginners down the path only to
>> stubble over "string templates are not strings”. Our original view was that
>> users would soon learn to insert the STR, but after consideration, having the
>> surprise hit them at runtime is not a compelling selling point.
>> Consequently, we are changing things up to follow Tagir’s suggestion of always
>> requiring a processor; i.e., no naked StringTemplates. As a result, IDEs can
>> flag the problem when editing or have inspection insert the STR automatically.
>> For most users, STR would have been used anyway. So, this change really only
>> affects those requiring the unprocessed string template (me and one or two
>> other people). In those cases, users can use the RAW processor.
>> Making it easier for IDEs to detect and correct will help mute the grumbling
>> about naked StringTemplates not being string interpolation. As stated in the
>> JEP, making Java safe and secure is the goal. This is the way.

Hi Jim, thanks for listening,

>> Cheers,
>> — Jim


More information about the amber-spec-experts mailing list