<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>As recently announced, kindly inviting everybody to contribute /
review / comment on <a class="moz-txt-link-freetext" href="https://github.com/openjdk/jdk/pull/21730">https://github.com/openjdk/jdk/pull/21730</a>.
Thank you!</p>
<p>-Markus Karg</p>
<p><br>
</p>
<div class="moz-cite-prefix">Am 09.02.2025 um 19:34 schrieb Markus
KARG:<br>
</div>
<blockquote type="cite"
cite="mid:48bd29a1-4aa3-44e0-8beb-d8f28c9b4806@headcrashing.eu">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>Thank you, everybody. As no more comments arrived in the past
eight weeks, I assume that there is implicit agreement with my
latest arguments (see below), so next I will provide a PR to
continue discussion with real Java code at hand.</p>
<p>-Markus</p>
<p><br>
</p>
<div class="moz-cite-prefix">Am 01.12.2024 um 19:23 schrieb Markus
Karg:<br>
</div>
<blockquote type="cite"
cite="mid:004501db441e$18e46310$4aad2930$@eu">
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<meta name="Generator"
content="Microsoft Word 12 (filtered medium)">
<style>@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman","serif";}code
{mso-style-priority:99;
font-family:"Courier New";}pre
{mso-style-priority:99;
mso-style-link:"HTML Vorformatiert Zchn";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}span.HTMLVorformatiertZchn
{mso-style-name:"HTML Vorformatiert Zchn";
mso-style-priority:99;
mso-style-link:"HTML Vorformatiert";
font-family:"Courier New";}span.E-MailFormatvorlage21
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}span.E-MailFormatvorlage22
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}span.E-MailFormatvorlage23
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}div.WordSection1
{page:WordSection1;}ol
{margin-bottom:0cm;}ul
{margin-bottom:0cm;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">As
Thanksgiving is over, and as work towards 24-RDP1 should
mostly be done, I think it is a good time to resume our
now.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">To kick-off,
below I am repeating my last response to Chen. Kindly
asking everybody to chime in, so we can find a feasible
and beneficial conclusion in this area.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">-Markus<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"
moz-do-not-send="true"><span style="color:#1F497D"><o:p> </o:p></span></a></p>
<div>
<div
style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
Markus Karg [<a class="moz-txt-link-freetext"
href="mailto:markus@headcrashing.eu"
moz-do-not-send="true">mailto:markus@headcrashing.eu</a>]
<br>
<b>Gesendet:</b> Sonntag, 27. Oktober 2024 09:44<br>
<b>An:</b> 'core-libs-dev'<br>
<b>Betreff:</b> Request for Comments: Adding bulk-read
method "CharSequence.getChars(int srcBegin, int
srcEnd, char[] dst, int dstBegin)"<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Courier New"">>Hi
Markus,<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Courier New"">>Should
we drop the srcBigin/srcEnd parameters, as they can be
replaced by a subSequence(srcBegin, srcEnd) call?<o:p></o:p></span></p>
<p class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">Chen,
I do understand your idea and while originally I had the
same in mind (it really <i>is</i> appealing!), I came up
with a draft using the <b>original</b> </span><span
style="font-size:10.0pt;font-family:"Courier New"">String.getChars()</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
signature instead, due to the following drawbacks:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3"><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">There
might exist (possibly lotsof) </span><span
style="font-size:10.0pt;font-family:"Courier New"">CharSequence.getChars(int,
int, char[], int)</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
implementations already, as this problem (and the idea
how to solve it) is anything but new. At least such
implementations are </span><span
style="font-size:10.0pt;font-family:"Courier New"">String</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
</span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuilder</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
and </span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuffer</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">.
If we come up with a different signature, then <b>none</b>
of these already existing performance boosters will get
used by </span><span
style="font-size:10.0pt;font-family:"Courier New"">Reader.of(CharSequence)</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
automatically - at least until they come up with alias
methods. Effectively this leads to (possibly lots) of
alias methods. At least it leads to alias methods in </span><span
style="font-size:10.0pt;font-family:"Courier New"">String</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
</span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuilder</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
</span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuffer</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
and </span><span
style="font-size:10.0pt;font-family:"Courier New"">CharBuffer</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">.
In contrast, when keeping the signature copied from </span><span
style="font-size:10.0pt;font-family:"Courier New"">String.getChars</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
chances are good that (possibly lots of) implementations
will <i>instantly</i> be supported by </span><span
style="font-size:10.0pt;font-family:"Courier New"">Reader.of(CharSequence)</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
without alias methods. At least, </span><span
style="font-size:10.0pt;font-family:"Courier New"">String</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
</span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuilder</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
and </span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuffer</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
will be.<o:p></o:p></span></li>
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3"><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">Since
decades people are now very used to </span><span
style="font-size:10.0pt;font-family:"Courier New"">StringBuilder.getChars(int,
int, char[], int)</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">,
so (possibly a lot of) people might simply <i>expect</i>
us to come up with that lengthy signature. These people
might be rather confused (if not to say frustrated) when
we now force them to write an intermediate </span><span
style="font-size:10.0pt;font-family:"Courier New"">subSequence(int,
int)</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
for something that was "such simple" before.<o:p></o:p></span></li>
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo3"><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">Custom
implementations of </span><span
style="font-size:10.0pt;font-family:"Courier New"">CharSequence.subSequence</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
could come up with the (performance-wise "bad") idea of
creating <b>copies</b> instead of views. At least it
seems like </span><span
style="font-size:10.0pt;font-family:"Courier New"">AbstractStringBuilder</span><span
style="font-size:12.0pt;font-family:"Times New Roman","serif"">
is doing that, so chances are "good" that custom libs
will do that, too. For example, because they need it for
safety. Or possibly, because they have a technical
reason that <i>enforces</i> a copy. That would
(possibly massively, depending on the actual class)
spoil the idea of performance-boosting this RFC is all
about.<o:p></o:p></span></li>
</ul>
<p class="MsoNormal"><span style="color:#1F497D">-Markus<o:p></o:p></span></p>
</div>
</blockquote>
</blockquote>
</body>
</html>