Re: Lout typesetting questions

William Bader <[email protected]> Mon, 10 Nov 2025 00:04:48 +0000
Newsgroups gmane.comp.type-setting.lout
Message-ID <PA3P190MB2438F229822980CD203CB8AFC4C1A@PA3P190MB2438.EURP190.PROD.OUTLOOK.COM>
--_000_PA3P190MB2438F229822980CD203CB8AFC4C1APA3P190MB2438EURP_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi,

To add to what others have already replied.

> 2. Does anyone have a public document (or HTML5 public page, or some publ=
ic email on some public and still accessible in 2025 archived mailing list)=
 describing the organization of the C files (the file names z[0-9]*.c are n=
ot very user or developer friendly).

The files have comments at the top and some comments in the code. Lout is o=
nly about 50k lines long, so it is easily readable.

> 3. Is Lout multi-threaded? (I believe it is not)

I'm not sure that it could be multi-threaded because the document needs to =
be processed sequentially to know where each line breaks.

Do you have a document that takes lout a long time to process?

> 3. Did anyone tried to use the Boehm garbage collector in Lout?

Lout is I/O-bound and does not use an excessive amount of memory, so there =
wouldn't be much to gain from modifying memory its allocation system.

The C level and the lout object level both explicitly allocate and free ite=
ms as needed, so garbage collection is not needed.

Do you have a document that shows a problem with memory usage?

> 4. Did anyone tried to extend Lout with some plugin machinery (like recen=
t GCC have)?
> 5. Did anyone experimented some Lout extensions adding a [turing-complete=
] scripting language inside it

Before doing that, what specifically do you need to do?

You might want to look at how Scribus uses python, for example https://wiki=
.scribus.net/canvas/Category:Scripts and https://impagina.org/scribus-scrip=
ter-api/

Scribus can take the name of a python script on its command line, and then =
it runs the script in an environment that provides a scribus module that le=
ts you create documents. There are example scripts for making calendars and=
 for doing a mail-merge.

Regards, William

________________________________
From: [email protected] <lout-users-=
[email protected]> on behalf of Basile Starynke=
vitch <[email protected]>
Sent: Sunday, November 9, 2025 6:22 AM
To: [email protected] <[email protected]>
Subject: Lout typesetting questions

Hello all (I am French)

I just did git clone https://git.sr.ht/~mcepl/lout/ (on Linux/Debian/testin=
g, not interested by other OSes) and I have a few questions about it.

1. Is GNU lout still some active open source project?

2. Does anyone have a public document (or HTML5 public page, or some public=
 email on some public and still accessible in 2025 archived mailing list)
describing the organization of the C files (the file names z[0-9]*.c are no=
t very user or developer friendly).

3. Is Lout multi-threaded? (I believe it is not)

3. Did anyone tried to use the Boehm garbage collector in Lout?

4. Did anyone tried to extend Lout with some plugin machinery (like recent =
GCC have)? Is there any philosophical objection if I try to add one?

5. Did anyone experimented some Lout extensions adding a [turing-complete] =
scripting language inside it (Like LuaLaTeX has)? I dream of a Lout
extended with GNU guile (perhaps might work on it once I understood Lout in=
ternal organization)

Regards
--

Basile STARYNKEVITCH                            <[email protected]>
8 rue de la Fa=EFencerie                       http://starynkevitch.net/Bas=
ile/
92340 Bourg-la-Reine                         https://github.com/bstarynk
France                                https://github.com/RefPerSys/RefPerSy=
s
                  https://orcid.org/0000-0003-0908-5250


--_000_PA3P190MB2438F229822980CD203CB8AFC4C1APA3P190MB2438EURP_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
Hi,</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
To add to what others have already replied.</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
&gt; 2. Does anyone have a public document (or HTML5 public page, or some p=
ublic email on some public and still accessible in 2025 archived mailing li=
st) describing the organization of the C files (the file names z[0-9]*.c ar=
e not very user or developer friendly).<br>
<br>
The files have comments at the top and some comments in the code. Lout is o=
nly about 50k lines long, so it is easily readable.</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
&gt; 3. Is Lout multi-threaded? (I believe it is not)<br>
<br>
I'm not sure that it could be multi-threaded because the document needs to =
be processed sequentially to know where each line breaks.</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
Do you have a document that takes lout a long time to process?</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
&gt; 3. Did anyone tried to use the Boehm garbage collector in Lout?<br>
<br>
Lout is I/O-bound and does not use an excessive amount of memory, so there =
wouldn't be much to gain from modifying memory its allocation system.<br>
<br>
The C level and the lout object level both explicitly allocate and free ite=
ms as needed, so garbage collection is not needed.<br>
<br>
Do you have a document that shows a problem with memory usage?</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
&gt; 4. Did anyone tried to extend Lout with some plugin machinery (like re=
cent GCC have)?</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
&gt; 5. Did anyone experimented some Lout extensions adding a [turing-compl=
ete] scripting language inside it</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
Before doing that, what specifically do you need to do?</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
You might want to look at how Scribus uses python, for example <a href=3D"h=
ttps://wiki.scribus.net/canvas/Category:Scripts">
https://wiki.scribus.net/canvas/Category:Scripts</a>&nbsp;and <a href=3D"ht=
tps://impagina.org/scribus-scripter-api/">
https://impagina.org/scribus-scripter-api/</a></div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
Scribus can take the name of a python script on its command line, and then =
it runs the script in an environment that provides a scribus module&nbsp;th=
at lets you create documents. There are example scripts for making calendar=
s and for doing a mail-merge.<br>
<br>
</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
Regards, William</div>
<div style=3D"font-family: Calibri, Helvetica, sans-serif; font-size: 12pt;=
 color: rgb(0, 0, 0);" class=3D"elementToProof">
<br>
</div>
<hr style=3D"display: inline-block; width: 98%;">
<div id=3D"divRplyFwdMsg">
<div style=3D"direction: ltr; font-family: Calibri, sans-serif; font-size: =
11pt; color: rgb(0, 0, 0);">
<b>From:</b>&nbsp;[email protected] =
&lt;[email protected]&gt; on behalf =
of Basile Starynkevitch &lt;[email protected]&gt;<br>
<b>Sent:</b>&nbsp;Sunday, November 9, 2025 6:22 AM<br>
<b>To:</b>&nbsp;[email protected] &lt;[email protected]&gt;<br>
<b>Subject:</b>&nbsp;Lout typesetting questions</div>
<div style=3D"direction: ltr;">&nbsp;</div>
</div>
<div style=3D"font-size: 11pt;" class=3D"elementToProof">Hello all (I am Fr=
ench)<br>
<br>
I just did git clone <a data-auth=3D"NotApplicable" class=3D"OWAAutoLink" i=
d=3D"OWAd44ce506-9f0e-4119-30d2-a48149a8f9e1" href=3D"https://git.sr.ht/~mc=
epl/lout/">
https://git.sr.ht/~mcepl/lout/</a>&nbsp;(on Linux/Debian/testing, not inter=
ested by other OSes) and I have a few questions about it.<br>
<br>
1. Is GNU lout still some active open source project?<br>
<br>
2. Does anyone have a public document (or HTML5 public page, or some public=
 email on some public and still accessible in 2025 archived mailing list)&n=
bsp;<br>
describing the organization of the C files (the file names z[0-9]*.c are no=
t very user or developer friendly).<br>
<br>
3. Is Lout multi-threaded? (I believe it is not)<br>
<br>
3. Did anyone tried to use the Boehm garbage collector in Lout?<br>
<br>
4. Did anyone tried to extend Lout with some plugin machinery (like recent =
GCC have)? Is there any philosophical objection if I try to add one?<br>
<br>
5. Did anyone experimented some Lout extensions adding a [turing-complete] =
scripting language inside it (Like LuaLaTeX has)? I dream of a Lout<br>
extended with GNU guile (perhaps might work on it once I understood Lout in=
ternal organization)<br>
<br>
Regards<br>
--<br>
<br>
Basile STARYNKEVITCH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;[email protected]&gt;<br>
8 rue de la Fa=EFencerie&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp; <a data-auth=3D"NotApplicable" class=3D"OWAAutoLink" id=3D"OWAf3f3f3=
f1-2a5b-82d0-68f5-1c080bd48185" href=3D"http://starynkevitch.net/Basile/">
http://starynkevitch.net/Basile/</a>&nbsp;<br>
92340 Bourg-la-Reine&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp; <a data-auth=3D"NotApplicable" class=3D"OWAAutoLink" id=3D"O=
WAc73464c2-b4ac-25d9-56e4-87e94ffbbb7a" href=3D"https://github.com/bstarynk=
">
https://github.com/bstarynk</a><br>
France&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a data-auth=3D"NotApplicable" c=
lass=3D"OWAAutoLink" id=3D"OWAce12a7e9-ee8e-6993-255b-31bcef8d6382" href=3D=
"https://github.com/RefPerSys/RefPerSys">
https://github.com/RefPerSys/RefPerSys</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp; <a data-auth=3D"NotApplicable" class=3D"OWAAuto=
Link" id=3D"OWA976c6e42-4836-260d-efc3-c9e733ff0dbf" href=3D"https://orcid.=
org/0000-0003-0908-5250">
https://orcid.org/0000-0003-0908-5250</a><br>
<br>
</div>
</body>
</html>

--_000_PA3P190MB2438F229822980CD203CB8AFC4C1APA3P190MB2438EURP_--