From e9ccab5308d2b6fec79e36c355c03aad4e1e5dec Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Sun, 4 Jun 2023 19:46:50 +0200 Subject: 2023-06-04 16:40:00 --- .../documents/general/manuals/luametatex.pdf | Bin 1470739 -> 1505488 bytes doc/context/documents/general/qrcs/setup-de.pdf | Bin 845187 -> 845252 bytes doc/context/documents/general/qrcs/setup-en.pdf | Bin 848873 -> 848819 bytes doc/context/documents/general/qrcs/setup-fr.pdf | Bin 843810 -> 843645 bytes doc/context/documents/general/qrcs/setup-it.pdf | Bin 844906 -> 844777 bytes .../documents/general/qrcs/setup-mapping-de.pdf | Bin 319172 -> 319137 bytes .../documents/general/qrcs/setup-mapping-en.pdf | Bin 316827 -> 316907 bytes .../documents/general/qrcs/setup-mapping-fr.pdf | Bin 320303 -> 320375 bytes .../documents/general/qrcs/setup-mapping-it.pdf | Bin 318817 -> 318773 bytes .../documents/general/qrcs/setup-mapping-nl.pdf | Bin 318196 -> 318217 bytes doc/context/documents/general/qrcs/setup-nl.pdf | Bin 840853 -> 840533 bytes .../general/manuals/lowlevel/lowlevel-macros.tex | 51 +++++++++++++++++++++ .../manuals/luametatex/luametatex-enhancements.tex | 32 +++++++++++++ .../general/manuals/luametatex/luametatex.tex | 8 +++- .../sources/general/manuals/ontarget/ontarget.tex | 1 + 15 files changed, 91 insertions(+), 1 deletion(-) (limited to 'doc') diff --git a/doc/context/documents/general/manuals/luametatex.pdf b/doc/context/documents/general/manuals/luametatex.pdf index a6c0d6c42..9115f400d 100644 Binary files a/doc/context/documents/general/manuals/luametatex.pdf and b/doc/context/documents/general/manuals/luametatex.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf index 376c18b26..8a03859f6 100644 Binary files a/doc/context/documents/general/qrcs/setup-de.pdf and b/doc/context/documents/general/qrcs/setup-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf index 0a88e801a..989f3e3b8 100644 Binary files a/doc/context/documents/general/qrcs/setup-en.pdf and b/doc/context/documents/general/qrcs/setup-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf index 2789cbecb..19a367c9c 100644 Binary files a/doc/context/documents/general/qrcs/setup-fr.pdf and b/doc/context/documents/general/qrcs/setup-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf index 3d249de41..4620bb0ad 100644 Binary files a/doc/context/documents/general/qrcs/setup-it.pdf and b/doc/context/documents/general/qrcs/setup-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf index 8f41b3565..8db14d6cd 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-de.pdf and b/doc/context/documents/general/qrcs/setup-mapping-de.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf index ad70efa10..a200514a5 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-en.pdf and b/doc/context/documents/general/qrcs/setup-mapping-en.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf index bc5c4b275..106c0220a 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf and b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf index 9807d106c..9279ec27f 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-it.pdf and b/doc/context/documents/general/qrcs/setup-mapping-it.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf index 5bb2d68af..ec6e61d10 100644 Binary files a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf and b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf differ diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf index 2962780a1..618bd1915 100644 Binary files a/doc/context/documents/general/qrcs/setup-nl.pdf and b/doc/context/documents/general/qrcs/setup-nl.pdf differ diff --git a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex index 83e43818f..cbb52f25c 100644 --- a/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex +++ b/doc/context/sources/general/manuals/lowlevel/lowlevel-macros.tex @@ -991,6 +991,57 @@ in turn only needs incrementing a reference counter. \stopsectionlevel +\startsectionlevel[title=Passing parameters] + +When you define a macro, the \type {#1} and more parameters are embedded as a +reference to a parameter that is passed. When we have four parameters, the +parameter stack has four entries and when an entry is eventually accessed a new +input level is pushed and tokens are fetched from that list. This has some side +effects when we check a parameter. This can happen multiple times, depending on +how often we access a parameter. Take the following: + +\startbuffer +\def\oof#1{#1} + +\tolerant\def\foo[#1]#*[#2]% + {1:\ifparameter#1\or Y\else N\fi\quad + 2:\ifparameter#2\or Y\else N\fi\quad + \oof{3:\ifparameter #1\or Y\else N\fi\quad + 4:\ifparameter #2\or Y\else N\fi\quad}% + \par} + +\foo \foo[] \foo[][] \foo[A] \foo[A][B] +\stopbuffer + +\typebuffer + +This gives: + +\startpacked \tttf +\inlinebuffer +\stoppacked + +as you probably expect. However the first two checks +are different from the embedded checks because they can check against the +parameter reference. When we expand \type {\oof} its argument gets passed to the +macro as a list and when the scanner collects the next token it will then push +the parameter content on the input stack. So, then, instead of a reference we get +the referenced parameter list. Internally that means that in 3 and 4 we check for +a token and not for the length of the list (as in case 1 & 2). This means that + +\starttyping +\iftok{#1}\emptytoks Y\else N\fi +\ifparameter#1\or Y\else N\fi +\stoptyping + +are different. In the first case we have a proper token list and nested +conditionals in that list are okay. In the second case we just look ahead to see +if there is an \type {\or}, \type {\else} or other condition related command and +if so we decide that there is no parameter. So, if \type {\ifparameter} is a +suitable check for empty depends on the need for expansion. + +\stopsectionlevel + \stopdocument % freezing pitfalls: diff --git a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex index ba320440b..0cafa118f 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex-enhancements.tex @@ -2512,6 +2512,38 @@ Unit equivalent to ten Toves or one Edith. \stopsection +\startsection[title=Registers] + + +\startsubsection[title={32 bit floats}] + +The engine has native float registers which means that we have a similar set of +primitives as for dimensions and integers: \prm {float}, \prm {floatdef}, \prm +{floatexpr} and \prm {iffloat}. In the context if an integer a rounded value is +used, in the context of a dimensions the floating point number is interpreted as +points. Internally floats are stored as so called posits, which gives more accuracy +for smaller values. + +\stopsubsection + +\startsubsection[title={32 bit posits}] + +{\em This is a playground. It will stay but might evolve.} + +\stopsubsection + +\startsubsection[title={Extra features}] + +There are \prm {ifabsnum}, \prm {ifabsdim} and \prm {ifabsfloat} that compare +absolute values of quantities. The primitives \prm{ifzeronum}, \prm{ifzerodim}, +\prm{ifzerofloat} do a fast test for zero. The \prm {ifintervalnum}, \prm +{ifintervaldim} and \prm {ifintervalfloat} primitives take a delta and two values +and check if these values overlap within the ranges dedicated by the delta. + +\stopsubsection + +\stopsection + \startsection[title=Expressions] \startsubsection[title={Rounding and scaling}] diff --git a/doc/context/sources/general/manuals/luametatex/luametatex.tex b/doc/context/sources/general/manuals/luametatex/luametatex.tex index a86846628..834b73133 100644 --- a/doc/context/sources/general/manuals/luametatex/luametatex.tex +++ b/doc/context/sources/general/manuals/luametatex/luametatex.tex @@ -1,5 +1,7 @@ % language=us runpath=texruns:manuals/luametatex +% \pushoverloadmode \let\cdef\edef \let\cdefcsname\edefcsname \popoverloadmode + % \enabledirectives[backend.pdf.inmemory] % \setupalign[profile] @@ -110,7 +112,11 @@ % because the amount of output which is sensitive for refresh delays set. The new % target is now 50 pages per second for this manual but on this laptop that is % unlikely to happen any time soon. With tabulateusesize and tabulatesparseskips -% experiments enabled we needed 8.1 second and 44.3 pps. +% experiments enabled we needed 8.1 second and 44.3 pps.% 368 pages may/june 2023: +% +% no constant definitions : 8.55 +% constant \*!whatever : 8.47 +% also constant \current* : 8.36 % \enableexperiments [tabulateusesize] % \enableexperiments [tabulatesparseskips] diff --git a/doc/context/sources/general/manuals/ontarget/ontarget.tex b/doc/context/sources/general/manuals/ontarget/ontarget.tex index 888a73f41..20512f934 100644 --- a/doc/context/sources/general/manuals/ontarget/ontarget.tex +++ b/doc/context/sources/general/manuals/ontarget/ontarget.tex @@ -28,6 +28,7 @@ \component ontarget-registers \component ontarget-fairphone % \component ontarget-mathsizes + \component ontarget-constants \stopbodymatter \stopdocument -- cgit v1.2.3