<div>Hi!</div><div> </div><div>(</div><div> </div><div><div><span style="background-color:#ffffff;color:#201f1e;font-size:15px">VVM>>> </span>About hi memory using by current "21bit char in 4 byte":</div><div><span style="background-color:#ffffff;color:#201f1e;font-size:15px">VVM>>> </span>21*3 = 63bit, set bit number 64 to zero.</div><div><span style="background-color:#ffffff;color:#201f1e;font-size:15px">VVM>>> </span>I.e. we can implement "packed string": 3 21bit WIDECHARs in 8 bytes.</div><div><br /></div></div><div> What about this?</div><div>)</div><div> </div><div> </div><div><div><span style="background-color:#ffffff;color:#201f1e;font-size:15px">VVM>>> And keep WIDECHAR as "default for current OS".</span></div><div> </div></div><div>I think about analog of types for integer.<br />I.e. there are implementations char types that always 1/2/4 bytes and types flexible size depends OS.</div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div> </div><div>22.03.2021, 07:24, "Jay K" <jayk123@hotmail.com>:</div><blockquote><div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="background-color:#ffffff;color:#201f1e;font-size:15px"> > And keep WIDECHAR as "default for current OS".</span></div><div><div> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I am not convinced this is useful.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">In particular, nobody uses it on Unix anyway.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">The 16bit definition on Windows should be useful, it just never was done.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">Maybe I'll fix that soon, but, I do wonder, again, if we should have char16 and char32, and then deprecate WIDECHAR.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">Does anyone really use it?</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">It might be just as well to keep widechar at 16bit even on Unix, and introduce char32, and consider widechar==char16.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I don't know, maybe much ado about what will never change..</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> - Jay</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><hr style="width:98%" /><div><font color="#000000" face="Calibri, sans-serif" style="font-size:11pt"><strong>From:</strong> <a href="mailto:vvm@tut.by" rel="noopener noreferrer">vvm@tut.by</a> <<a href="mailto:vvm@tut.by" rel="noopener noreferrer">vvm@tut.by</a>><br /><strong>Sent:</strong> Sunday, March 21, 2021 10:39 AM<br /><strong>To:</strong> Jay K <<a href="mailto:jayk123@hotmail.com" rel="noopener noreferrer">jayk123@hotmail.com</a>>; m3devel <<a href="mailto:m3devel@elegosoft.com" rel="noopener noreferrer">m3devel@elegosoft.com</a>><br /><strong>Subject:</strong> Packed strings as 3 21bit WIDECHARs in 8 bytes Re: [M3devel] refactoring cm3 into just one package?</font><div> </div></div><div><div>Hi!</div><div> </div><div> </div><div>1)</div><div> </div><div>About hi memory using by current "21bit char in 4 byte":</div><div>21*3 = 63bit, set bit number 64 to zero.</div><div> </div><div>I.e. we can implement "packed string": 3 21bit WIDECHARs in 8 bytes.</div><div> </div><div> </div><div>2) </div><div> </div><div>> <span style="font-family:'calibri' , 'helvetica' , sans-serif;font-size:16px">C++ now has char16 and char32. Perhaps Modula-3 should too?</span></div><div> </div><div> Why not?</div><div> </div><div>And keep WIDECHAR as "default for current OS".</div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div>21.03.2021, 12:06, "<a href="mailto:vvm@tut.by" rel="noopener noreferrer">vvm@tut.by</a>" <<a href="mailto:vvm@tut.by" rel="noopener noreferrer">vvm@tut.by</a>>:</div><blockquote><div>Hi!</div><div> </div><div> </div><div> Small remark:</div><div> </div><div>> <span style="font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> 4 represents Unix "widespread" </span></div><div> </div><div> I was builded this variant for Windows AMD64_NT.</div><div>See "Issue #47" near "sage.com.ua".</div><div>And update it to level "release 2021-03-12".</div><div> </div><div> Libunicode was successfully compied.</div><div>Its tests are work.</div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div>21.03.2021, 10:34, "Jay K" <<a href="mailto:jayk123@hotmail.com" rel="noopener noreferrer" target="_blank">jayk123@hotmail.com</a>>:</div><blockquote><div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="margin:0px">  >  Using .cmd scripts require using MS VS 2012 ( VC110). </span><div style="margin:0px">  > Analogs of some .sh scriprs rewrited to .py aren't found.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div> To answer some of it:</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">  Olaf presumably wrote the .sh files.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">  I was on Windows. I rewrote them in .cmd.  I recall someone wrote similar or additional ones.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">  Then I was on Mac.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">   I had multiple frustrations:</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">    cmd is definitely a horrible language. It is "builtin" yes, but otherwise is horrible.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">      Really. Avoid it at much cost. Please let's not argue this. I haved use it a ton. Trust me.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">    I suspect sh is a horrible language too, but I am less experienced with it.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">      I am a little more open to discussing this, educate me, but this is not likely the right forum.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="color:#000000;font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">      In particular it seems too string based, not enough typing.</span></div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">    I wanted *one* portable workflow, that I could understand and maintain and hopefully not just me.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       (Who among the .cmd maintainers also would maintain the .sh, or vice versa?)</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       Those are both fuzzy things. sh is "portable" to Windows, just install Cygwin (or WSL).</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       Heck, it is portable to MS-DOS (djgpp).</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       I <strong>should</strong>​ be able to maintain sh, but, if I have/had freedom on the matter, I chose Python. At least back then.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       I later became somewhat disenchanted with Python, but maybe here it is ok.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">       It is certainly preferable to .cmd in any case.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">So I rewrote again in Python and have been using these ever since on Unix and Windows.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I would really prefer to delete *.sh and *.cmd but people always protest that they like them.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">If you find something missing and desired in the *.py let me know, or try.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I admit pylib.py is a bit monolithic ("easier to reuse") but I still think it isn't horrible. Or maybe I got coded into a corner and another rewrite is needed. I do think the parameter handling is probably backwards -- it should take out what it knows is for the Python and pass through everything else by default to cm3, instead of the nickel and dime maintanence where I keep adding pass throughs. I was slowed down (years?) getting to that realization though by the unicode size problem which I just fixed.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">We should probably try to use Quake and/or Modula-3 here more instead, really.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I think Quake is up to this task actually. I spent a fair amount of time redoing all the config files also. &#x1f642;</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">  (Esp. the "Cartesian refactoring" into architecture + OS, all the ".common" files).</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">Quake may not be general purpose but it isn't horrible either. (The variable look ups are slow though, alas, I think multiple hash table lookups, one per nested scope..but it is fast enough).</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">For building the entire system, approximately, drop m3makefile's that connect all the packages.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">For iterating over specific packages/groups, maybe trivial also.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">Granted, Quake is super obscure and time spent learning it will not reap much benefit.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">Python is at least "more useful" in the wide world.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="background-color:#ffffff;font-size:14px">> How turn on "wide char" / 21bit UNICODE in 4 bytes feature on Win 32?</span></div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="background-color:#ffffff;font-size:14px">Look here and you can figure it out:</span></div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmodula3%2Fcm3%2Fcommit%2Fc408284c5bc858218e9242f73a34263168544c61&data=04%7C01%7C%7C07b3dff9fba6487436eb08d8ec559598%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637519199627807920%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=qE5ccXy5m2amBRSrYOEb99CsvupzRmHymIiX%2F%2F3fRQ8%3D&reserved=0" rel="noopener noreferrer" target="_blank">Rework widechar size initialization. · modula3/cm3@c408284 (github.com)</a> </div><div> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">There is no perfect answer here, as to the size of widechar. 1, 2, and 4 all make sense.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> 1 represents a rebellion against widechar, and the world has mostly rebelled against it or never accepted it </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> 2 represents Windows widespread use, and Java, and .NET.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">     This is both not-huge-like-4, and perhaps the victim of early adoption, when 2 seemed like eough.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> 4 represents Unix "widespread" use, or at least the typedef that nobody uses, and perhaps what Windows should use.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> As well, portability would be good. C and C++ already lack portability here, due to the windows:2 vs. unix:4 schism. </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> C++ now has char16 and char32. Perhaps Modula-3 should too?</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"><span style="color:#000000;font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> - Jay</span></div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div><hr style="width:98%" /><div><font color="#000000" face="Calibri, sans-serif" style="font-size:11pt"><strong>From:</strong> <a href="mailto:vvm@tut.by" rel="noopener noreferrer" target="_blank">vvm@tut.by</a> <<a href="mailto:vvm@tut.by" rel="noopener noreferrer" target="_blank">vvm@tut.by</a>><br /><strong>Sent:</strong> Sunday, March 21, 2021 6:50 AM<br /><strong>To:</strong> Jay K <<a href="mailto:jayk123@hotmail.com" rel="noopener noreferrer" target="_blank">jayk123@hotmail.com</a>>; m3devel <<a href="mailto:m3devel@elegosoft.com" rel="noopener noreferrer" target="_blank">m3devel@elegosoft.com</a>><br /><strong>Subject:</strong> Re: [M3devel] refactoring cm3 into just one package?</font><div> </div></div><div><div>Hi!</div><div> </div><div> </div><div> We can compare how we do some things today and will be do in future.</div><div> </div><div>  As example:</div><div> </div><div>How turn on "wide char" / 21bit UNICODE in 4 bytes feature on Win 32?</div><div> </div><div> In correlated ReadMe described only Unix / Cygwin / MinGW way with .sh files.</div><div> </div><div> Using .cmd scripts require using MS VS 2012 ( VC110).</div><div> </div><div> Analogs of some .sh scriprs rewrited to .py aren't found.</div><div> </div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div>20.03.2021, 21:31, "Jay K" <<a href="mailto:jayk123@hotmail.com" rel="noopener noreferrer" target="_blank">jayk123@hotmail.com</a>>:</div><blockquote><div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt">I was thinking..<div> </div><div>sysutils m3scanner m3middle m3objfile m3linker m3back m3quake m3front cm3</div><div> </div><div>Might as well we combine these into just one or two packages?</div><div>I understand the need to break software up into coherent</div><div>reusable pieces, and I have no intention to change the graph</div><div>among these, but is this more than necessary splitting?</div><div> </div><div>Plus, you know, linkers can split up static libs.</div><div> </div><div>I say two because: Move it all into a lib, and then link executables to it.</div><div>So some of it can be reused outside of cm3, some is.</div><div>We'd have cm3lib and cm3, or cm3 and cm3exe.</div><div>m3tools cm3ide etc. would import the library.</div> The executable would just be one line that calls library.</div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> </div><div style="color:rgb( 0 , 0 , 0 );font-family:'calibri' , 'helvetica' , sans-serif;font-size:12pt"> - Jay</div></div>,<p style="margin-bottom:0;margin-top:0">_______________________________________________<br />M3devel mailing list<br /><a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer" target="_blank">M3devel@elegosoft.com</a><br /><a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C07b3dff9fba6487436eb08d8ec559598%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637519199627817917%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=%2BNalPBznWGVBwrVEnEsLoJJkKDxyoONbD171XO4ucFU%3D&reserved=0" rel="noopener noreferrer" target="_blank">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a></p></blockquote></div></div></div></blockquote>,<p style="margin-bottom:0;margin-top:0">_______________________________________________<br />M3devel mailing list<br /><a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer" target="_blank">M3devel@elegosoft.com</a><br /><a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C07b3dff9fba6487436eb08d8ec559598%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637519199627827915%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=H1uwmdl7NngrxDYZ5k1Y6dy6zcyK9O%2BjbZHOCdxN21c%3D&reserved=0" rel="noopener noreferrer" target="_blank">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a></p></blockquote></div></div></div></blockquote>