12:01 AM
@DavidCarlisle -- Probably, but I'll let you handle that. (I'm busy reading/correcting a guidebook on monuments to illustrious figures associated with printing.)

@barbarabeeton am I in it?

@DavidCarlisle -- Nope. O haven't seen a reference to anyone born later than about 1920, and even that is only an artist or sculptor.

@barbarabeeton shocking

@DavidCarlisle -- The two most frequently represented individuals are Gutenberg and Ben Franklin.

@barbarabeeton never heard of either of them:-)

12:09 AM
@DavidCarlisle -- I guess we'll just have to educate you.

@DavidCarlisle Now what the heck is "POTUS"?

@yo' -- "POTUS" = "President Of The United States"
Similarly, "SCOTUS" = "Supreme Court ..."

2 hours later…
2:04 AM
5

2 hours later…
3:51 AM
After browsing packages and running into ptex engine on ctan, I wonder whether it's widely used for Japanese typesetting. By the looks, it hasn't been updated for a while. What do they use to typeset Japanese anyway?
P.S. I thought xetex can be used for any language.

3 hours later…
7:22 AM
@barbarabeeton Ah ok thanks!

7:56 AM
For a package to be submitted to CTAN, I don't need a dtx and ins file, right? A sty and a tex file (plus the generated pdf) or enough, if I understand the docs correctly.

@BrainStone no, dtx is not required. I have packages without them.

@UlrikeFischer Also is there any real benefit in using them over just having a separate sty and tex file?
Stuffing everythin in one file seems kinda weird to me

@BrainStone well if you want to document code, it is better if the documentation is near the code and not in some other file. The main problem I had with dtx is that you constantly had to unpack them before you can try if the code works. But with l3build is much less painful, so I'm starting to get used to it.

Alright. Thanks :)
I think I'll take a pass on it for the first time. I find it to be fairly confusing at the moment. I'm sure I'll get back to it at some point.

8:32 AM
quack
@barbarabeeton LOL

1 hour later…
9:51 AM
@bp2017 yes ptex (and uptex) arethe dominent tex engines in Japan as far as I can tell
@bp2017 not particularly good at Japanese I think luatex (and luatexja packages are the main alternative to uptex)
@BrainStone look at latex itself, the user manual is a book, written as a separate document, the dtx files make source2e.pdf the typeset line by line documentation of the source. dtx files are optimised for the latter but for smallish packages it is often convenient to put the user manual at the start of the code documentation rather than have two separate files.

@BrainStone you can also look at my question here: tex.stackexchange.com/questions/512982/… --- I finally decided to go for separate .sty and .tex/.pdf for my two simple packages, but the makedtx can help you get started...

1 hour later…
11:14 AM
Regarding the bug with the spaces in file names, has that been fixed? And if so when can I expect that being on texlive?

@BrainStone it's in texlive sources now so you should get it today or tomorrow most likely. Do you really have spaces in your main document file???? That is so weird:-)

Yes I do
Not happy about it either, but that's the way it is

Jan 21 '14 at 12:33, by David Carlisle
@NicolaTalbot people who put spaces in filenames deserve no sympathy.
That said, it was supposed to work, you need 2019-10-01 Patch Level 3

@DavidCarlisle What do you mean with 2019-10-01 Patch Level 3? I don't really understand...
@DavidCarlisle people who don't handle special chars in filenames correctly deserve no sympathy imho

@BrainStone when you run latex, the terminal output (and lig file) should start like:
$latex \\stop This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=latex) restricted \write18 enabled. entering extended mode LaTeX2e <2019-10-01> patch level 3 11:18 AM Ah ok Just patch level 2 Since i just updated I hope it's live tomorrow @BrainStone spaces in filenames make scripting even the simplest thing like "copy the file$1 to zzz.txt " an impossibly difficult thing to do, and that's just copying...

@DavidCarlisle Not really...
I mean I've been scripting for a good decade and the shell handles that stuff quite well if used correctly

@BrainStone well you can surround $1 by quotes which works most of the time, unless $1 already contains quotes (which incidentally why it fails in PL2) so you have to check if $1 contains any quotes and remove them and then surround by quotes (which is what PL3 does) but doing that everywhere that you ever refer to a filename just so people can use spaces is a real pain @BrainStone can you show a one line bash script that does that "correctly" and then say how many bash scripts in the wild actually do that? If I need to expect a file name that might already contain quotes, I do the handling and store it in a new variable and use that as expected. @DavidCarlisle I have never even seen a filename with quotes being passed to a script Which is silly That's why you have the shell @DavidCarlisle ...I use vimtex, and I think that the author went almost crazy doing the "quoting filenames" correct across operating systems... and then people start putting quotes in file names (and I even saw a new-line, once). 11:25 AM Though in short if you're expecting a filename and it comes with quotes when it shouldn't then the caller messed up @BrainStone the reason spaces in the top level file fails in PL3 is because we added quotes everywhere specifically to allow spaces in \input and \includegraphics, but forgot to remove quotes in \jobname, if the top level file is one two.tex web2c tex passes "one two" as \jobname so we ended up with ""one two"".aux and it fails, so need to explictly loop through the filename and remove quotes, first. Don't get me wrong, I know dealing with that stuff is annoying and I tend to not handle it when working with internal scripts, POC, or WIP stuff. But anything production ready has no excuse not to @BrainStone why spaces? do you assert that everything production ready should allow newlines and quote characters in filenames, sure any restrictions have to be documented but most systems have restrictions somewhere. restrictions are ok. But they need to be documented And having spaces as a restriction is just ridiculous. That's easily 10% of user files restricted @BrainStone I don't see why filenames with spaces are less silly than spaces with quotes. Both seem pretty weird to me. But as I said the issue here was that previously top level filenames could have spaces (as the system quoted them) but in 2019-10-01 every other file could have spaces (as we quoted them) but top level files could not (as both latex and the tex system quoted them) so that was a bug, it happens, but fixing it just made tex slower for everyone 11:32 AM I had real-life filenames generated with single quotes, like example_1.png, example_1'.png, example_1''.png --- no idea if they would work or not, I told the student to rename them (they used the underscore because I told them "no spaces!" before ;-)) @Rmano single quotes work actually. web2c tex systems can not handle files with double quotes at all, double quotes are always used for space quoting and there is no escape mechanism to specify a literal " character. @DavidCarlisle Well neither can a major OS ... @JosephWright Nor can use ":" in the names, which I think it's even more surprising than spaces (think timestamps). @Rmano Oh, there's quite a long list, it's just that quote marks are notable as they are used to quote filenames for dealing with spaces @DavidCarlisle We should just use the Secret Plan code ... it already works for this @JosephWright The OS can, it just displays them weidly on the commandline C:\tmp>type ab*ef.txt abcdef.txt hello 11:46 AM @DavidCarlisle Hi, excuse me for yesterday. I have seen your message last tonight and after I have gone to the bed. I thought that the problem was only on cased and not on another complete .tex document that I then downloaded from the link placed by the user. generated by echo hello > 'ab"cd"ef.txt' The following reserved characters: < (less than) > (greater than) : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark) * (asterisk) In the meantime, good morning, everyone. @JosephWright yes I know, but that says that you can't use a " in the cmd but if (eg by using bash) you get a file with such a name, the ntfs filesystem does in fact preserve that name internally, it just scrambles it as exposing it would confuse the cmd bat scripts @DavidCarlisle That doesn't have " in the name ... 11:48 AM @DavidCarlisle In short, I understood something else. @DavidCarlisle Oh, are you cheating and not using Windows echo? @JosephWright I generated the file using bash so it is there (and the underlying filesystem can cope, it's just the windows command shell that that then hides the quotes as the command language can not deal with the file otherwise @JosephWright that was a bash echo and redirect yes. @DavidCarlisle I guess I tend to think 'Windows' = "cmd.exe" as that's the official CLI At least at present, still ... @DavidCarlisle what happens if a file name has two consecutive spaces? @UlrikeFischer Then it does: TeX tokenization is a little tricky, but once that's done, it's OK 12:08 PM @UlrikeFischer : $ pdftex '5space\space\space\space\space\space here.txt' \\bye
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(./5space     here.txt) [1{/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/u
pdmap/pdftex.map}]</usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmr10.pfb>
Output written on "5space     here.pdf" (1 page, 10330 bytes).
Transcript written on "5space     here.log".
@UlrikeFischer but I thought you were more interested in hearts than spaces
\$ pdftex ❤❤❤❤.tex \\bye
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(./❤❤❤❤.tex) [1{/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updm
ap/pdftex.map}]</usr/local/texlive/2019/texmf-dist/fonts/type1/public/amsfonts/
cm/cmr10.pfb>
Output written on ❤❤❤❤.pdf (1 page, 10330 bytes).
Transcript written on ❤❤❤❤.log.

@DavidCarlisle (if I may, @PauloCereda) ooh :-):-)

@Rmano ooh

@DavidCarlisle worth a feature request for luahbtex ;-)
@DavidCarlisle nice, does it works in \input too? (I can try later). But I think we handled this wrong, we should have setup a github project "enable spaces in file names" and wait for sponsors - @JosephWright would probably already have his mac ;-).

Er... guys...
I have a bug report...

@Rmano you are 6833 behind @PauloCereda
@PauloCereda It's not my fault
2

12:21 PM
@DavidCarlisle ooh it's close

@PauloCereda bug is?

@DavidCarlisle I have a filename with spaces in it. XeLaTeX fails with it, complaining there's no \begin{document} in it. Using a new filename without spaces works.
Let me try a MWE.

@PauloCereda your latex is too old

@DavidCarlisle I updated today...

@PauloCereda it's still too old:
1 hour ago, by David Carlisle
@BrainStone when you run latex, the terminal output (and lig file) should start like:

12:24 PM
@DavidCarlisle Oh
@DavidCarlisle so it's technically my fault?

@DavidCarlisle what's a lig file?

@Skillmon it's within acceptable typing error of a log file

@PauloCereda you have a file name with space?? Booooo.
2

@DavidCarlisle is it used to save ligatures?

12:26 PM
@UlrikeFischer <3
@DavidCarlisle :)

@PauloCereda so which comes first, PL3 or dinner time

@DavidCarlisle oh no
@DavidCarlisle I should have not fixed tex.stackexchange.com/questions/155444/… long time ago. :)

This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=latex)
restricted \write18 enabled.
entering extended mode
LaTeX2e <2019-10-01> patch level 2
No pages of output.
Transcript written on texput.log.
:( I'm lacking behind :(

@Skillmon /duck hug

@PauloCereda aaww Ɛ><3

12:34 PM
So I better /hide...
[romano:~] % pdftex
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdftex)
restricted \write18 enabled.
**

@Rmano AAAHHH

Will create a portable private install somewhere, if I find a) instrunctions and b) time...

@Skillmon oh no

@Skillmon yes, thanks. I'll oblige...

12:38 PM
Mar 8 '17 at 11:52, by Paulo Cereda
Q: Why did the L3 chicken cross the road?
A: togettotheothersideohnoiforgotspacesaregobbled

@Rmano vv
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2020/dev) (INITEX)
No pages of output.
Transcript written on texput.log.

@DavidCarlisle ooh, a time traveller.

@Skillmon timelord
He's English, after all

Just a question: if I install a portable TeXLive in a subdir (I am on Ubuntu Linux), will I be able to keep it completely independent from the distro-provided version? I need to have that, because is what my students/collegues have... I know it's a waste of space, but well...
Or should I setup a different user? (bothersome...)

12:57 PM
@Rmano you should be able to install indefinite independent versions in parallel, I have 2018 and 2019 installed on my system. You then need to change your path to use the different versions, but that is easy, you can just add a symlinked directory to your path and change the symlink if you want to change the version.

@Skillmon thanks! I'll try.

1 hour later…
2:06 PM
@DavidCarlisle, @UlrikeFischer I needed Frank's \SHOWFILES test for siunitx v3 :) (testing PDF bookmarks)

@JosephWright what does it do?

@UlrikeFischer Shows a file :)
@UlrikeFischer Here, I wanted the .out file to check the PDF bookmarks without needing a full PDF-based test
@UlrikeFischer \showoutput truncates \write lines, so it's not always usable for things being passed to secondary files

@JosephWright interesting, I didn't know that this exists, looks handy.

@UlrikeFischer Yes, I really didn't fancy a binary-based test: this way I just have to verify visually that my Unicode stuff is what it's supposed to be (it is)

@JosephWright I have been thinking about the bookmarks - I would love to extract the pdfstringdef stuff from hyperref and get it in a separate style.

2:10 PM
@UlrikeFischer Yes, that sounds good
@UlrikeFischer Something for l3str in a way: the conversion stuff is there, just need the list of exceptions. l3pdfstr?

@JosephWright yes, but I think the main work would be to extract the current code from hyperref - I fear it is not done by copying line x to y ;-)

@UlrikeFischer I was thinking I can do the test with only one pass: I'll probably adjust to get the ,out file right at end-of-ru

@UlrikeFischer and make unicode-math stop using \let :-)

@UlrikeFischer I've changed it in Github already!
@DavidCarlisle Fine by me... just need to detangle the whole thing! :(

2:25 PM
@WillRobertson does that mean that all the answers I made with Renderer=Harfbuzz are wrong now? ;-(

@WillRobertson just don't put \ifvtex guards in the wrong place and break everything....

@JosephWright regarding luahbtex: can I add a new luahbtex tag and make the tag "harftex" be a synonym?

@DavidCarlisle added to the next memoir version will require the iftex from 2019/11/07

@daleif thanks

@UlrikeFischer Sure, good plan

2:28 PM
@JosephWright ok lets try, never added a tag before ;-).

@BrainStone -- I doubt you're trying to script for several wildly different operating systems at the same time, including usually several "legacy" versions of those same systems. It's simply a marvel that there aren't more problems. Consider how many patch updates are issued for those same operating systems; and most operating systems are maintained by large commercial organizations, not a handful of devoted volunteers.

@JosephWright hm, I think it doesn't work that way. If I want luahbtex to be the "master" tag shown in new questions, I will perhaps have to rename the existing harftex tag and then create a new synonym harftex.

@WillRobertson \let\fooa=a (or \chardef\fooa=.. or any other non-expandable token would be OK if the "make plain text string/make bookmark" function recognised those and replaced by the character token, which doesn't sound impossibly difficult, but I don't think l3 currently does that does it (@JosephWright) ?

@UlrikeFischer oh no

@DavidCarlisle Er, no, not at present, but we could do it for a 'PDF string' function

2:42 PM
@UlrikeFischer given there is only a finite list of renderer names can't you do a case-insensitive comparison?

@DavidCarlisle \str_fold_case:n?

@JosephWright might be easier than getting every package to specify a pdfstring version of every math character command it defines
@JosephWright tell Will, it's his package:-)

@DavidCarlisle it is not us, it is the keyval processing of fontspec. Currently it accepts [Renderer=Harfbuzz] but complains for [Renderer=HarfBuzz].

1 min ago, by David Carlisle
@JosephWright tell Will, it's his package:-)

@DavidCarlisle ooh

2:45 PM
@DavidCarlisle Yes, that would likely be best
@UlrikeFischer That's l3keys

2:57 PM
3
@DavidCarlisle My husband gave me this cartoon ^^. He named it "David, Ulrike and the oberdiek monster"
7

@UlrikeFischer Well Bruno and I are writing the L3 replacement bits ;)

@UlrikeFischer you shouldn't be cruel to monsters:-)

@JosephWright you are probably currently in the castle ;-)

@UlrikeFischer -- sigh. Dragons always get the fuzzy end of the lollipop.

@UlrikeFischer ooh das Deutschedragon

1 hour later…
4:19 PM
@DavidCarlisle, thank you.

I am trying to figure out how \chardef works. In particular, whether it behaves like \newdimen when the same name is assigned a value, creating new register instead of reusing old one.

But after examining what \show prints when used on a \chardef name, I now know that it's not a register. I wonder if \chardef is a macro and something like
\chardef\testChar"54
\chardef\testChar"55
is akin to
\def\testMacro{T}
\def\testMacro{U}

4:31 PM
@bp2017 it's neither a macro nor a register allocation it is a specific token type a chardef token
@bp2017 in particular it is a <number> the popular \tw@ shorthand for 2 is defined by \chardef for example. as is \active used as \catcode\z=\active

4:53 PM
Apparently winter is here.

@AlanMunn ooh

5:17 PM
@AlanMunn Oooh snow!

@CarLaTeX Jon?

5:55 PM
@DavidCarlisle, thank you. Not sure if reusing \chardef name (either for different or same values) results in unwanted behavior, like accumulation (somewhere) of previous values instead of the values being discarded.

6:10 PM
@PauloCereda No, Jon is Snow, it's case sensitive :)

@CarLaTeX it's a regression bug, we should blame someone

Nice: fancyvrb has been updated and the new version sports \gdef\FancyVerbSpace{\tt }

@egreg uh-oh

@bp2017 it is a local definition like \def or \newcommand so if done in a group the old definition is placed on the save stack, but that's just general tex behaviour, nothing specific about chardef

Hey, I need some help!

Does somebody have a link to this "LaTeX-Tiger"?
I need that picture.
For a lecture.
@PauloCereda Does only have ducks....

6:21 PM
@cis quack
@cis I think it's a lion

@cis which tex tiger?

@DavidCarlisle Tigger

@DavidCarlisle Or the lion
I don't know....

@cis which lion? I was expecting a link
@cis if you mean any tex lion ctan has one with very open useage licene

Maybe, this is a DANTE-picture with this tiger (lion).

6:22 PM

@DavidCarlisle Ahh very good!

@DavidCarlisle ooh wiggly tail

@DavidCarlisle Mr. Carlisle, if you able to read german, you can do my two LaTeX-exams in a style like "Who Wants to Be a Millionaire?"
Part II: https://matheplanet.de/matheplanet/nuke/html/wwm.php?fsid=382

But attention! German language.....

6:51 PM
@cis @UlrikeFischer will confirm that my German is excellent, strangely on a par with my Japanese.

7:02 PM

@DavidCarlisle should the grffile stubs handle package options?

@UlrikeFischer as in silently do nothing with them? Not sure. I'm on a conf call until 8 (here) so only half here

@DavidCarlisle currently it errors.

@UlrikeFischer you have write access so I could blame you for the errors?
Sounds like we should add a * option that just accepts them all.

@DavidCarlisle yes, sounds ok.

7:15 PM
@UlrikeFischer or we could try harder to emulate some of the options I suppose, but I'd rather not, I'd rather it was a simple step to let people remove the package.

@DavidCarlisle I was wondering if letting it errors would force people to remove it, but then it would probably better if it errors with a more meaningful message.

@UlrikeFischer I could do it later, or do you want to do it?

@DavidCarlisle I can do it, but not now, I have to make dinner ...

@UlrikeFischer :-) I'll ping you later see where we are. As I say I'm on a mathml call at present

7:39 PM
@DavidCarlisle, that doesn't say much to me. What I need is to know whether unneeded values clog up the stack (or whatever place they're kept in) in this case (as they clog up registers when \newdimen is used on the same name). And if so, how can I prevent it or remove them (unneded values)? (I used \ifcsname to check for existing \newdimen name, but I'm not sure what can be done with \chardef's since they're not kept in registers).

@bp2017 like any local definition the old definition goes on the save stack so it can be restored at end of group.
@bp2017 you can't stop that other than doing \global\chardef

@DavidCarlisle, but there is no group. I do \chardef in the same place (in a loop).

@bp2017 everything might be in a group surely?

@DavidCarlisle, what I meant to say is my \chardef's are in the same place (in the same group).

@bp2017 if it is in a group then each definition causes the old definition to be saved on the stack
@bp2017 but that is true of everything in tex, \def count assignments, ...
@bp2017 what are you doing with the chardefed tokens, using them as characters, or using them as numbers, or something else?

1 hour later…
9:09 PM
@UlrikeFischer I added something to grffile

@DavidCarlisle you beat my by a few minutes ;-), I was just looking.

@UlrikeFischer sorry, should have pinged you first, but it's only a line. You will be impressed by my in depth testing in the test3 that I added

@UlrikeFischer wrote the test first, then made it pass. test driven development... :-)

9:25 PM
@DavidCarlisle ooh

Today I used l3benchmark and learned that \protected macros are slower than unprotected ones. I therefore started to do something really bad: I removed \protected from every internal macro which isn't called in an \edef environment (in this case, every internal macro) and only left the user-level macros \protected. Is this super bad, or only minor bad?

@Skillmon really, I haven't timed but I'm surprised it's measurable, essentially just testing one internal flag in the generated C code, compared to everything else tex does while expanding a macro
@Skillmon @JosephWright will be cross with you, whether that is bad or not depends on your point of view

test macro \testprotected:
2.53e-8 seconds (0.0806 ops)
test macro \testunprotected:
2.39e-8 seconds (0.0759 ops)
2.38e-8 seconds (0.0759 ops)
test macro \testprotected:
2.53e-8 seconds (0.0804 ops)
@DavidCarlisle both are just \empty but one is protected the other isn't. benchmarking done with \fp_set:Nn \g_benchmark_duration_target_fp { 10 }

@Skillmon I'm not entirely surprised: there is a similar trade-off in the way tl data is implemented ..
@Skillmon Minor bad I guess, but it leaves you needing to track any potential 'escape'

@Skillmon I must admit that normally I ignore the digits and just look at the order of magnitute, but if it took you 15 minutes to restructure your code not to use \protected versions you will have to use it a lot to get that time back...

9:38 PM
@DavidCarlisle just in one package (the insertionsort) for the macros inside the loop.

@Skillmon ah I guess the inner loops could get run quite a lot in sorting so we may forgive you...

@Skillmon For me, the trade-off is worth it

@UlrikeFischer should I release grffile? ctan will be missing me, I haven't released anything yet today

@DavidCarlisle It's a bit like tl being \edef\foo{\unexpanded{...}} though; yes, there is a speed hit, but it's so small as to be worth it for the clearer interfaces, etc.

@JosephWright in general tl code then definitely less I agree but if you are writing the inner loop of a sorting algorithm and you have full control of all the macros and they are going to get executed thousands of times if used at all, the tradeoffs may be different

9:42 PM
@JosephWright which trade-off? Being faster while someone might trap, or being safer while it takes longer?

@Skillmon Yes, plus the fact that saying 'make things work by expansion or \protected' is a clear line that doesn't require careful examination of code paths
@DavidCarlisle Sure, but I suspect we'd have to be talking about tasks that are really outside of TeX's scope ...

@JosephWright like writing a regex engine for example?

@DavidCarlisle I see no problem unless you want to give ctan a break ;-)

@JosephWright that was an either-or-question... You can't answer with "yes" :(

@Skillmon Well both: being faster makes it risker

9:52 PM
@UlrikeFischer I could do but seeing all the weird issues being bounced between pandoc and R studio and who knows where else, probably best to make grffile be as silent and error free as possible

@DavidCarlisle yes, probably a good idea to avoid the error message (but the rstudio problem seems to be due to an outdated oberdiek, so standard miktex problem ...)

@DavidCarlisle, here
\def\ii@SaveEachDigit#1%
{ \ifx#1\i@Terminator
\else
\stepcounter{i@SavedDigitCount}
% ---------------------------------
\expandafter\chardef
\csname
i@SavedDigit\the\value{i@SavedDigitCount}%
\endcsname
\the\numexpr
\0+#1
\relax
% ---------------------------------
\expandafter\ii@SaveEachDigit
\fi
}
what happens if I call this macro 1000's of times and each of them (times) would at least assign to \i@SavedDigit0? Does it mean that there would be thousands of \i@SavedDigit0 macro names in the stack? What happens to them? Do all of them except the last one (which is the

{ \ifx#1\i@Terminator should probably be {\ifx\i@Terminator#1 certainly looks safer that way round (and without the space)

@JosephWright so you agree that it is worth it being less stable while being faster, great!

@bp2017 and \stepcounter{i@SavedDigitCount}  should probably be \stepcounter{i@SavedDigitCount}%

9:58 PM
@Skillmon No, that's not what I said: in general, for expl3 we've picked stable/predictable if we can; it's not always easy, but it's normally sensible

@JosephWright not my fault, if you only say yes, I pick what I want :)

@bp2017 no that will not use the stack at all unless it is in a group, in which case the first use of each name would put the old definition on the stack.

10:14 PM
@UlrikeFischer grffile gone to ctan

10:33 PM
@JosephWright: l3str-convert use:
%lualatex/xelatex
\documentclass{article}
\usepackage{expl3}
\usepackage[]{qrcode}
\begin{document}
\ExplSyntaxOn
\str_set_convert:Nnnn \l_tmpa_str {Grüße~❤🦆}{}{utf8/bytes}
\exp_args:No\qrcode{\l_tmpa_str}
\ExplSyntaxOff
\end{document}

11:01 PM
@DavidCarlisle, so if I enclose the chardef within {} inside the macro (so that its inside a group) and then expand the macro with \ii@SaveEachDigit2019 and \ii@SaveEachDigit2020, the \i@SavedDigit0 (would have value of 2 in both cases) gets put on the stack twice? I don't get it, why put it on the stack twice if there is no way to access it unless \global is used? Do you mean if you put one chardef in one group and another chardef with the same name in another group they would both be on stack?
Otherwise I don't see the point of tracking chardefs (or anything) with the same name instead of overwriting them, unless they are in DIFFERENT groups (so that tex keeps track of each by putting them on stack, so that correct name can be accessed within respective group).
And it doesn't really matter whether I see the point in it or not, I just wanted to know whether additional resources are allocated unnecessarily (like when \newdimen allocates new registers even for a dimen of the same name in the same group) in the case I showed you.

11:16 PM
@bp2017 I'm clearly not explaining this well,and it's late so I'll let Knuth explain it, see if that's clearer
\ddanger The special case of ^|save size|'' capacity exceeded is one
of the most troublesome errors to correct, especially if you run into
the error only on long jobs. \TeX\ generally uses up two words of save
size whenever it performs a non-global assignment to some quantity
whose previous value was not assigned at the same level of ^{grouping}.
When macros are written properly, there will rarely be a need for
more than 100 or~so things on the ^{save stack}''; but it's possible to
make save stack usage grow without limit if you make both local and
@bp2017 if you do \def\z{} zzz {\chardef\z=1} zzz {\chardef\z=1} zzz  it gets put on the stack twice but only stack position is used as it is popped twice as well at the end of each of the groups
@bp2017 what are you doing with the chardef, it why \chardef\foo=\numexpr\0+#1\relax rather than just \let\foo=#1 ?
@bp2017 \newdimen isn't really comparable to \chardef`, the former is a tex macro, and the latter is one of the tex primitive definition commands.