[neomutt-devel] Lua in neomutt | systematically finding segmentation faults

Richard Russon rich at flatcap.org
Wed Mar 3 17:13:29 CET 2021

Hi toogley,

> i think Lua bindings are of no use at the moment and could be removed.

They _could_ be, but I'm not going to do that.

Lua has about 360 lines of code.
It's stable and has very light dependencies in the code
(i.e. very few `#ifdef USE_LUA`)

I agree, it doesn't *do* much, but some people are using it
and importantly it doesn't make anything unstable.

> So neomutt has a few quite complicated things,
> for instance index_format

Yes, this *is* complicated, but not for the visible reasons.
The code to expand the %'s is fiendishly complicated and introduces some
ugly dependencies in the code.

> these things are not that readable
> lua bindings this could be made more readable.

One way to make them more legible would be to make them more verbose:

    %{author} %{subject}

> Such index_formats are hard to write but i think readability is not so
> important as you don't edit it probably that often.

Possibly.  But the code still needs an overhaul.

> i think it is better to spend that on other parts of neomutt, for
> instance the refactoring.


> OpenBSD is more strict about memory errors

The Address Sanitizer and Valgrind are very strict (whatever the OS).

> We could rent a builds.sr.ht machine

Well that's very kind, if you're paying :-)

> and configure it so it runs with every pull request

We already have CI running tests.

> complicated neomutt configs and see if it crashes.

It's very hard to automate NeoMutt and the complexity of the code limits
our ability to unit-test many functions.

We're working on it, but for a couple of small problems:

- 'We' is generally just me
  Few people understand the code
  Fewer still have the time to do anything about it

- Making NeoMutt modular, so that it could be tested is VERY HARD

> If it crashes, builds.sr.ht provides the ability to SSH into the build VM.

That's a very nice feature.
But I'm still not paying for it.

> We could also try to start a mail server on localhost and send mails
> with those complicated neomutt configs and see if it crashes.

Good idea, but that's a lot of work to set up.
You'll need a virtual machine, say Docker, and a very careful mail server setup.
And then lots of time to set up these complicated test scenarios.

> But unfortunately i don't have time

Therein lies the problem.

    Rich / FlatCap
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mailman.neomutt.org/pipermail/neomutt-devel-neomutt.org/attachments/20210303/80c3c30d/attachment.sig>

More information about the neomutt-devel mailing list