<div>+ coder5506@, jayk123@, rodney.m.bates@</div><div> </div><div>Hi!</div><div> </div><div> </div><div>1)  </div><div> <span style="background-color:#ffffff;color:#24292f;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">I hope that I can help with "Windows 10 utf-8 as default code page"</span></div><div><div> </div><div>Details:</div><div>https://github.com/modula3/cm3/issues/774#issuecomment-966031587</div></div><div> </div><div> </div><div>2)</div><div>> <span style="background-color:#ffffff;color:#57606a;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">right-to-left text in a left-to-right</span></div><div> </div><div><div><span style="background-color:#ffffff;color:#24292f;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">I love solve problems "step by step".</span>  <span style="background-color:#ffffff;color:#24292f;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">"UNICODE corporation" _</span><em style="background-color:#ffffff;box-sizing:border-box;color:#24292f;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">must_</em><span style="background-color:#ffffff;color:#24292f;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"> solve own problem without us ( Modila-3 teams)</span></div></div><div><div> </div><div>Details:</div><div>https://github.com/modula3/cm3/issues/774#issuecomment-966030903</div></div><div> </div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div>= =</div><div><div><code style="border-radius:6px;box-sizing:border-box;color:rgb( 87 , 96 , 106 );font-family:'ui-monospace' , 'sfmono-regular' , 'sf mono' , 'menlo' , 'consolas' , 'liberation mono' , monospace;font-size:11.9px;font-style:normal;font-weight:400;margin:0px;padding:0.2em 0.4em 0.2em 0.4em;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">'é'</code><span style="background-color:#ffffff;color:#57606a;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"> (* is a syntax error </span><em style="background-color:#ffffff;box-sizing:border-box;color:#57606a;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">)<br style="box-sizing:border-box" /><code style="border-radius:6px;box-sizing:border-box;font-family:'ui-monospace' , 'sfmono-regular' , 'sf mono' , 'menlo' , 'consolas' , 'liberation mono' , monospace;font-size:11.9px;margin:0px;padding:0.2em 0.4em 0.2em 0.4em">"é"</code> (</em><span style="background-color:#ffffff;color:#57606a;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"> two bytes, 195 and 169 </span><em style="background-color:#ffffff;box-sizing:border-box;color:#57606a;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">)<br style="box-sizing:border-box" /><code style="border-radius:6px;box-sizing:border-box;font-family:'ui-monospace' , 'sfmono-regular' , 'sf mono' , 'menlo' , 'consolas' , 'liberation mono' , monospace;font-size:11.9px;margin:0px;padding:0.2em 0.4em 0.2em 0.4em">W'é'</code> (</em><span style="background-color:#ffffff;color:#57606a;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"> is again a syntax error </span><em style="background-color:#ffffff;box-sizing:border-box;color:#57606a;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">)<br style="box-sizing:border-box" /><code style="border-radius:6px;box-sizing:border-box;font-family:'ui-monospace' , 'sfmono-regular' , 'sf mono' , 'menlo' , 'consolas' , 'liberation mono' , monospace;font-size:11.9px;margin:0px;padding:0.2em 0.4em 0.2em 0.4em">W"é"</code> (</em><span style="background-color:#ffffff;color:#57606a;float:none;font-family:'-apple-system' , 'blinkmacsystemfont' , 'segoe ui' , 'helvetica' , 'arial' , sans-serif , 'apple color emoji' , 'segoe ui emoji';font-size:14px;font-style:normal;font-weight:400;text-decoration-style:initial;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"> is again two bytes, 195 and 169 *)</span></div><div>= =</div></div><div> </div><div>11.11.2021, 04:19, "Hendrik Boom" <hendrik@topoi.pooq.com>:</div><blockquote><p>On Wed, Nov 10, 2021 at 06:19:30PM -0600, Rodney Bates wrote:</p><blockquote> <br /> <br /> On 11/10/21 2:54 PM, Rodney Bates wrote:<br /> ><br /> ><br /> > On 11/10/21 12:03 PM, Eric Sessoms wrote:<br /> > ><br /> > > reference: <a href="https://modula3.github.io/cm3/reference/complete/html/2_6_5Text_character.html" rel="noopener noreferrer">https://modula3.github.io/cm3/reference/complete/html/2_6_5Text_character.html</a> <<a href="https://modula3.github.io/cm3/reference/complete/html/2_6_5Text_character.html" rel="noopener noreferrer">https://modula3.github.io/cm3/reference/complete/html/2_6_5Text_character.html</a>><br /> > ><br /> > > As I understand it, |CHAR| is 8-bit Latin-1, |TEXT| is a sequence of |CHAR|. |WIDECHAR| though not specified, must be UCS-2 because at the time Unicode was 16-bits, UTF-16 didn't exist, and UCS-2 didn't need a name to distinguish it because that's all there was.<br /> > ><br /> > > However I'm finding that in practice |CHAR|, |TEXT|, and |WIDECHAR| are all UTF-8.<br /> > ><br /> > CHAR is 8-bit ISO latin-1, per Modula3.  WIDECHAR got added by Critical Mass<br /> > in their day, and was 16-bit, no doubt UCS-2 in current language. The language definition only says it has 65536 values and these are the first of the Unicode<br /> > code points.<br /> ><br /> > I changed it to be full Unicode a few years back, but never altered the language<br /> > reference.  It occupies 32 bits but is like a subrange going only up to<br /> > 16_1FFFF.  So WIDECHAR and arrays thereof amount to UTF-32.  For internal use,<br /> > there are many places where a fixed-length encoding is essential, including<br /> > a number of places in the scanner.<br /> ><br /> > There are a number of encoders, decoders, and Rd/Wr counterparts in<br /> > m3-libs/libunicode, for reading and writing streams.  They include some<br /> > extra ones for original Critical Mass WIDECHAR, etc.<br /> ><br /> > None of this is currently used in the compiler.  It is entirely ISO Latin 1,<br /> > as you have seen.  I have often thought of changing this, but got stopped by<br /> > questions about where to stop.  Do we accept additional letters in identifiers?<br /> > How far to go, how many languages?  Maybe only those in Latin-1? What about the compiler's internal files like .M3EXPORTS, etc. Debug info?<br /> ><br /> > A pretty conservative compromise would be to accept additional code points<br /> > only in comments and literals.  I think this already happens within Latin1.<br /> ><br /> > > 'é' (* is a syntax error *)<br /> > > "é" (* two bytes, 195 and 169 *)<br /> > > W'é' (* is again a syntax error *)<br /> > > W"é" (* is again two bytes, 195 and 169 *)<br /> ><br /> > This surprised me at first, because this is a Latin-1 character. But if the<br /> > source code were in UTF-8, it would occupy two bytes.  We would need a compiler<br /> > option to read source in either Latin-1 or UTF-8, and users would have to<br /> > get this in sync with what their editor was writing.<br /> ><br /> > There are already escape sequences in character and text, wide and narrow, that<br /> > allow other code points to be specified, if you know their numeric codes.<br /> ><br /> > Note that TEXT values are internally a potential dynamic mix of fragments in either<br /> > 8-bit or 32-bit representation, depending on what you built the TEXT value from.<br /> > Unless you go inside, to the TEXT subtypes in m3-libs/m3core/src/text/Text*,<br /> > this is all abstracted and hidden behind the Text interface and language<br /> > builtins on TEXT.  This came from Critical Mass and I just expanded it to<br /> > 32-bit characters.<br /> ><br /> > Pickles also have support for Unicode WIDECHAR.  The procedures in Rd and Wr<br /> > are as Critical Mass made them, i.e., although the program variables are<br /> > WIDECHAR, the values read/written in the stream are always exactly two bytes.<br /> > But UniRd and UniWr handle streams in any of a variety of representations.<br /> ><br /> > Of course, you can always stuff any values into a CHAR or WIDECHAR and so<br /> > your own variable-length encoding/decoding.<br /> ><br /> > > It seems pretty clear that the scanner simply has no knowledge of character encodings<br /> > ><br /> > > <a href="https://github.com/modula3/cm3/blob/master/m3-sys/m3front/src/misc/Scanner.m3#L666" rel="noopener noreferrer">https://github.com/modula3/cm3/blob/master/m3-sys/m3front/src/misc/Scanner.m3#L666</a> <<a href="https://github.com/modula3/cm3/blob/master/m3-sys/m3front/src/misc/Scanner.m3#L666" rel="noopener noreferrer">https://github.com/modula3/cm3/blob/master/m3-sys/m3front/src/misc/Scanner.m3#L666</a>><br /> > ><br /> > > such that if the source text is UTF-8, everything is going to be UTF-8. And I can't find anywhere that Modula-3 prescribes the input character set for source files.<br /> > ><br /> ><br /> > Latin-1.  See the last sentence in 2.8.12.  Perhaps it needs to be more explicit.<br /> <br /> Thinking about this a bit more, in light of Unicode's distinction between<br /> code points as an abstraction and multiple alternative representations,<br /> it makes sense to me to interpret the language's statement to mean the<br /> source character set consists of the code points that are in Latin-1,<br /> leaving the representation up to implementations.</blockquote><p><br />A source-code vulnerability has recently been discovered that probably<br />exists in all programming languages accepting the full Unicode.<br /><br />It consists of using the direction-alternating code points -- the ones<br />that are used to embed pieces of right-to-left text in a left-to-right<br />context.<br /><br />Thses code points can be used in a sneak way so that what's seen in an<br />editor is a different sequence of characters than are in the file.<br />Look at the source code all you want, and it looks clean.<br />But the compiler sees the text in a different order, with posibly a<br />completely different meaning.<br /><br />If we are redefining the character set used in programs, we'll have to<br />take measures against this kind of attack.<br /><br />-- hendrik</p><blockquote> <br /> > > Historically this has probably not been an issue for Windows users, with the default CP-1252 being identical to ISO-8859-1 for printable characters, but as of Windows 10 the default encoding is changing to UTF-8, so this is going to become an issue for everybody.<br /> > ><br /> > > —<br /> > > You are receiving this because you are subscribed to this thread.<br /> > > Reply to this email directly, view it on GitHub <<a href="https://github.com/modula3/cm3/issues/774" rel="noopener noreferrer">https://github.com/modula3/cm3/issues/774</a>>, or unsubscribe <<a href="https://github.com/notifications/unsubscribe-auth/ABSVZNHVAYR7H2UV4GTEMM3ULKXXXANCNFSM5HYQ7WQQ" rel="noopener noreferrer">https://github.com/notifications/unsubscribe-auth/ABSVZNHVAYR7H2UV4GTEMM3ULKXXXANCNFSM5HYQ7WQQ</a>>.<br /> > ><br /> ><br /> </blockquote><p> </p><blockquote> _______________________________________________<br /> M3devel mailing list<br /> <a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /> <a href="https://m3lists.elegosoft.com/mailman/listinfo/m3devel" rel="noopener noreferrer">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a></blockquote><p><br />_______________________________________________<br />M3devel mailing list<br /><a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /><a href="https://m3lists.elegosoft.com/mailman/listinfo/m3devel" rel="noopener noreferrer">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a></p></blockquote>