From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/107670 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Alan Bowen Newsgroups: gmane.comp.tex.context Subject: Re: new version Date: Wed, 10 Jun 2020 11:05:58 -0400 Message-ID: References: <324b4c24-bbce-e37c-f75f-3d5925852a18@xs4all.nl> Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2131376115916504194==" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="36274"; mail-complaints-to="usenet@ciao.gmane.io" To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Wed Jun 10 17:10:55 2020 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jj2NS-0009Iz-24 for gctc-ntg-context-518@m.gmane-mx.org; Wed, 10 Jun 2020 17:10:54 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id DD6EF1631FE; Wed, 10 Jun 2020 17:06:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id w9kFUMnaP0Uy; Wed, 10 Jun 2020 17:06:12 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id C6C151631EF; Wed, 10 Jun 2020 17:06:12 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id BD00B1631EF for ; Wed, 10 Jun 2020 17:06:11 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H5lI0pES3iyS for ; Wed, 10 Jun 2020 17:06:10 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.218.47; helo=mail-ej1-f47.google.com; envelope-from=bowenalan03@gmail.com; receiver= Original-Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id A1F541631DA for ; Wed, 10 Jun 2020 17:06:10 +0200 (CEST) Original-Received: by mail-ej1-f47.google.com with SMTP id o15so2925215ejm.12 for ; Wed, 10 Jun 2020 08:06:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=rW6gpzPrx9+blyYRJAXXPQOOqEBp4kWJBhhRJQ2Xd+M=; b=VXtj2f3STk8V9QLlcpJgI9gGuswordbhH+YqlqZGw65Jg2H/bL4ELb//9sPfqDw6n7 lp+Gah+0/WFes/NrmZ7wNqZAu1dIPvO3v++/pMXBtjqFquItAs/y61wx3c+DOj/ydGgl G1xIXbVIzB8BoD0HjEK3NrTWIprjlK+pajatSHkfhehRwneZKt2dBivyTFwRxBWZoi57 vUFFIBUUurbVmQ8l0MLlRFn2hmoxXLrYoYmaGGC4xBLPqrNm5AQiDruigB1H5W6tAEdy Finzx3Qy7U8JHDMQ/C3w34C6cIggYp9tzai5Hf0Ll51KZxiLIa2hIzh62l0pSHowJrOP DnHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=rW6gpzPrx9+blyYRJAXXPQOOqEBp4kWJBhhRJQ2Xd+M=; b=Qxr77lfXQwlYMCy5n/NrORieA0G6PmD9auCXe4NKyrg1JhSu4Q/vuLH1wxx3lEp12d QCdcYITTKfk8zabwcqyV1CJW5gB38y+IEkRYPSOm2oVmGEQWhSxZY5FHIQ+/K7uGnBhj 40ZZUswUlDXlsfAfQfNkMkDOAHE6nxfGJNV/X0BMA9KrdcQPeP5S9kgcs7DpDUa0N2wL jtjMsPNBTPKyaQ6upNitucKjw89pDx086W6ltteud8EBAS6qV42F21zSJ3K83xeH6q7D mYbHMIpY101o6vIzzYsOIwdDTl/N3wubbtnNngzMrfL0I7OKTsYrlfcaQ9wxUiS6+2vl Wqaw== X-Gm-Message-State: AOAM533U+ckz4ho3ruPcFUp+q/o25AglKAtuOqUmpoUwHpPdou1Vi3VI 3TTwfYK9v1myPe4qVZjvr8Jr6zpBsTZ2aEHqNjpCQLSx X-Google-Smtp-Source: ABdhPJxah9J+W30ScIZ7yVtvEYIPuL3MkhMbazccPWif9WLVEcwJcEhVjPjM2RDVxJgGTeSWSj5NTO5h2Xrcgf3AvOo= X-Received: by 2002:a17:906:dbda:: with SMTP id yc26mr3718848ejb.82.1591801570019; Wed, 10 Jun 2020 08:06:10 -0700 (PDT) In-Reply-To: <324b4c24-bbce-e37c-f75f-3d5925852a18@xs4all.nl> X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:107670 Archived-At: --===============2131376115916504194== Content-Type: multipart/alternative; boundary="000000000000224def05a7bc2f24" --000000000000224def05a7bc2f24 Content-Type: text/plain; charset="UTF-8" The problem with vertical spacing in \frac and \over is fixed. Many thanks, Hans! Alan On Wed, Jun 10, 2020 at 4:03 AM Hans Hagen wrote: > Hi, > > I uploaded a new version. There have been no changes to the typesetting > machinery although we're still in the process of finetuning some updated > low level macros. There was a fix in the font machinery (thanks to Kai) > but that will probably go unnoticed as the issue has been there for years. > > Now, that doesn't mean that nothing has been changed. First of all there > is a new data related mechanism. After Wolfgang had updated the > definition files it became official. It was on the agenda for a while > but finally a nice solution surfaced. > > The new thing is luatables that obey grouping. Normally what you do at > the lua end is kind of global, but there can be cases where you really > want it to behave like tex: obeying \bgroup/\egroup, { } etc. The > examples given below show that you can create them at the tex end and > access them in tex as well as lua. > > \starttext > > \dorecurse {100} { > \setdatavalue{#1}{#1} > } > > \start \tttf \darkred \raggedright \dorecurse {100} { > #1=\scratchcounter\getdatavalue{#1}\the\scratchcounter > } \par \stop \blank > > \start \tttf \darkgreen \raggedright \dorecurse {100} { > #1=\thedatavalue{#1}% > } \par \stop \blank > > \bgroup \tttf > \newluatable\testtable > \setluatable\testtable{ foo = 123, bar = "456", oof = "rab" } > % \inspectluatable\testtable > \darkblue > foo = \getfromluatable\testtable{foo}\par > bar = \getfromluatable\testtable{bar}\par > oof = \getfromluatable\testtable{oof}\blank > \bgroup > \useluatable\testtable > \setluatable\testtable{ foo = 123123, bar = "456456" } > % \inspectluatable\testtable > \darkmagenta > foo = \getfromluatable\testtable{foo}\par > bar = \getfromluatable\testtable{bar}\par > oof = \getfromluatable\testtable{oof}\blank > \startluacode > local t = context.luatables.get("testtable") > print(t.foo,t.bar,t.oof) > \stopluacode > \egroup > \darkyellow > foo = \getfromluatable\testtable{foo}\par > bar = \getfromluatable\testtable{bar}\par > oof = \getfromluatable\testtable{oof}\blank > \startluacode > local t = context.luatables.get("testtable") > print(t.foo,t.bar,t.oof) > \stopluacode > % \inspectluatable\testtable > \egroup > > \bgroup \tttf > \newluatable\moretable > \setluatable\moretable{ 1, "foo" } > \darkblue > [1] = \getfromluatable\moretable{1}\par > [2] = \idxfromluatable\moretable 2 \blank > \bgroup > \useluatable\moretable > \setluatable\moretable{ foo = 123123, bar = "456456" } > \darkmagenta > [1] = \getfromluatable\moretable{1}\par > [2] = \idxfromluatable\moretable 2 \blank > \startluacode > local t = context.luatables.get("moretable") > print(t[1],t[2]) > \stopluacode > \egroup > \darkyellow > [1] = \getfromluatable\moretable{1}\par > [2] = \idxfromluatable\moretable 2 \blank > \startluacode > local t = context.luatables.get("moretable") > print(t[1],t[2]) > \stopluacode > \egroup > > \stoptext > > This is only available in lmtx (until i see a real reason to cook up an > alternative for mkiv, which is unlikely as no context code depends on > this being available, at least not now). The datavalue macro you see > there can be used to create massive amounts of numeric variable > independent of counters, not that we really need it, but it was very > cheap to implement. > > At the engine level there also have been some changes but these should > not be visible for users. We just mention: > > - extensions to the macro definition and expansion mechanisms (for > instance optional arguments, optional delimiters, and silent error > recovery; there will be some explanation in the evenmore document and at > some point - when stable - in the manual) .. this permits some cleaner > low level code; only things were done that had no impact on performance > (as macro definition and expansion is used a lot) and didn't make the > code messy (it actually became cleaner) > > - some additional substring (ok, tex has no string, just tokens) parsing > capabilities with optional tokens, which again permits a bit cleaner low > level code > > - a slightly reorganized handling of tokens (one of tex's basic data > structures) in the lua token interface so that we get a more meaningful > and robust subsystem (basically getting rid of funny numbers) ... this > also will be discussed in an evenmore chapter .. not that users need it > (i think) > > - as a side effect (or necessity) some low level recoding (and > abstraction) had to happen but as far as we can see it works ok (i admit > it was a slow, tedious job with lots of intermediate testing on the > suite to make sure nothign was broken) .. in the end it was all doable > because most of the preparation was already done over the last years > > - in the process we got rid of a traditional tex data structure that was > left over from the 32 bit times but no longer needed in our 64 bit > luatex/luametatex universe (i might backport that simplification to > luatex some day) ... it discards some checking and saves the same amount > of memory that we had on the early day pc's (where we ran whole tex jobs > in that amount) > > Of course ... all kind of small improvenments ... hopefully for the best, > > Hans > > > ----------------------------------------------------------------- > Hans Hagen | PRAGMA ADE > Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > ----------------------------------------------------------------- > > ___________________________________________________________________________________ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > http://www.ntg.nl/mailman/listinfo/ntg-context > webpage : http://www.pragma-ade.nl / http://context.aanhet.net > archive : https://bitbucket.org/phg/context-mirror/commits/ > wiki : http://contextgarden.net > > ___________________________________________________________________________________ > --000000000000224def05a7bc2f24 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The problem with vertical spacing in \frac and \over is fi= xed. Many thanks, Hans!

Alan

On Wed, Jun 10, 2020 at = 4:03 AM Hans Hagen <j.hagen@xs4all.= nl> wrote:
Hi,

I uploaded a new version. There have been no changes to the typesetting machinery although we're still in the process of finetuning some update= d
low level macros. There was a fix in the font machinery (thanks to Kai) but that will probably go unnoticed as the issue has been there for years.<= br>
Now, that doesn't mean that nothing has been changed. First of all ther= e
is a new data related mechanism. After Wolfgang had updated the
definition files it became official. It was on the agenda for a while
but finally a nice solution surfaced.

The new thing is luatables that obey grouping. Normally what you do at
the lua end is kind of global, but there can be cases where you really
want it to behave like tex: obeying \bgroup/\egroup, { } etc. The
examples given below show that you can create them at the tex end and
access them in tex as well as lua.

\starttext

\dorecurse {100} {
=C2=A0 =C2=A0 =C2=A0\setdatavalue{#1}{#1}
}

\start \tttf \darkred \raggedright \dorecurse {100} {
=C2=A0 =C2=A0 =C2=A0#1=3D\scratchcounter\getdatavalue{#1}\the\scratchcounte= r
} \par \stop \blank

\start \tttf \darkgreen \raggedright \dorecurse {100} {
=C2=A0 =C2=A0 =C2=A0#1=3D\thedatavalue{#1}%
} \par \stop \blank

\bgroup \tttf
=C2=A0 =C2=A0 =C2=A0\newluatable\testtable
=C2=A0 =C2=A0 =C2=A0\setluatable\testtable{ foo =3D 123, bar =3D "456&= quot;, oof =3D "rab" }
=C2=A0 =C2=A0% \inspectluatable\testtable
=C2=A0 =C2=A0 =C2=A0\darkblue
=C2=A0 =C2=A0 =C2=A0foo =3D \getfromluatable\testtable{foo}\par
=C2=A0 =C2=A0 =C2=A0bar =3D \getfromluatable\testtable{bar}\par
=C2=A0 =C2=A0 =C2=A0oof =3D \getfromluatable\testtable{oof}\blank
=C2=A0 =C2=A0 =C2=A0\bgroup
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\useluatable\testtable
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\setluatable\testtable{ foo =3D 123123, b= ar =3D "456456" }
=C2=A0 =C2=A0 =C2=A0 =C2=A0% \inspectluatable\testtable
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\darkmagenta
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0foo =3D \getfromluatable\testtable{foo}\p= ar
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0bar =3D \getfromluatable\testtable{bar}\p= ar
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0oof =3D \getfromluatable\testtable{oof}\b= lank
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\startluacode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0local t =3D context.luatabl= es.get("testtable")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0print(t.foo,t.bar,t.oof) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\stopluacode
=C2=A0 =C2=A0 =C2=A0\egroup
=C2=A0 =C2=A0 =C2=A0\darkyellow
=C2=A0 =C2=A0 =C2=A0foo =3D \getfromluatable\testtable{foo}\par
=C2=A0 =C2=A0 =C2=A0bar =3D \getfromluatable\testtable{bar}\par
=C2=A0 =C2=A0 =C2=A0oof =3D \getfromluatable\testtable{oof}\blank
=C2=A0 =C2=A0 =C2=A0\startluacode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0local t =3D context.luatables.get("t= esttable")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0print(t.foo,t.bar,t.oof)
=C2=A0 =C2=A0 =C2=A0\stopluacode
=C2=A0 =C2=A0% \inspectluatable\testtable
\egroup

\bgroup \tttf
=C2=A0 =C2=A0 =C2=A0\newluatable\moretable
=C2=A0 =C2=A0 =C2=A0\setluatable\moretable{ 1, "foo" }
=C2=A0 =C2=A0 =C2=A0\darkblue
=C2=A0 =C2=A0 =C2=A0[1] =3D \getfromluatable\moretable{1}\par
=C2=A0 =C2=A0 =C2=A0[2] =3D \idxfromluatable\moretable 2 \blank
=C2=A0 =C2=A0 =C2=A0\bgroup
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\useluatable\moretable
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\setluatable\moretable{ foo =3D 123123, b= ar =3D "456456" }
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\darkmagenta
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[1] =3D \getfromluatable\moretable{1}\par=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0[2] =3D \idxfromluatable\moretable 2 \bla= nk
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\startluacode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0local t =3D context.luatabl= es.get("moretable")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0print(t[1],t[2])
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0\stopluacode
=C2=A0 =C2=A0 =C2=A0\egroup
=C2=A0 =C2=A0 =C2=A0\darkyellow
=C2=A0 =C2=A0 =C2=A0[1] =3D \getfromluatable\moretable{1}\par
=C2=A0 =C2=A0 =C2=A0[2] =3D \idxfromluatable\moretable 2 \blank
=C2=A0 =C2=A0 =C2=A0\startluacode
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0local t =3D context.luatables.get("m= oretable")
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0print(t[1],t[2])
=C2=A0 =C2=A0 =C2=A0\stopluacode
\egroup

\stoptext

This is only available in lmtx (until i see a real reason to cook up an alternative for mkiv, which is unlikely as no context code depends on
this being available, at least not now). The datavalue macro you see
there can be used to create massive amounts of numeric variable
independent of counters, not that we really need it, but it was very
cheap to implement.

At the engine level there also have been some changes but these should
not be visible for users. We just mention:

- extensions to the macro definition and expansion mechanisms (for
instance optional arguments, optional delimiters, and silent error
recovery; there will be some explanation in the evenmore document and at some point - when stable - in the manual) .. this permits some cleaner
low level code; only things were done that had no impact on performance (as macro definition and expansion is used a lot) and didn't make the <= br> code messy (it actually became cleaner)

- some additional substring (ok, tex has no string, just tokens) parsing capabilities with optional tokens, which again permits a bit cleaner low level code

- a slightly reorganized handling of tokens (one of tex's basic data structures) in the lua token interface so that we get a more meaningful and robust subsystem (basically getting rid of funny numbers) ... this
also will be discussed in an evenmore chapter .. not that users need it (i think)

- as a side effect (or necessity) some low level recoding (and
abstraction) had to happen but as far as we can see it works ok (i admit it was a slow, tedious job with lots of intermediate testing on the
suite to make sure nothign was broken) .. in the end it was all doable
because most of the preparation was already done over the last years

- in the process we got rid of a traditional tex data structure that was left over from the 32 bit times but no longer needed in our 64 bit
luatex/luametatex universe (i might backport that simplification to
luatex some day) ... it discards some checking and saves the same amount of memory that we had on the early day pc's (where we ran whole tex job= s
in that amount)

Of course ... all kind of small improvenments ... hopefully for the best,
Hans


-----------------------------------------------------------------
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0Hans Hagen | PRAGMA ADE
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Ridderstraat 27 | 80= 61 GH Hasselt | The Netherlands
=C2=A0 =C2=A0 =C2=A0 =C2=A0 tel: 038 477 53 69 | www.pragma-ade.nl | www.= pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________= ________
If your question is of interest to others as well, please add an entry to t= he Wiki!

maillist : ntg-cont= ext@ntg.nl / http://www.ntg.nl/mailman/listinfo/nt= g-context
webpage=C2=A0 : http://www.pragma-ade.nl / http://context.aanhet.net=
archive=C2=A0 : https://bitbucket.org/phg/context-m= irror/commits/
wiki=C2=A0 =C2=A0 =C2=A0: http://contextgarden.net
___________________________________________________________________________= ________
--000000000000224def05a7bc2f24-- --===============2131376115916504194== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --===============2131376115916504194==--