Subject: bug#17381: _GL_ATTRIBUTE_PURE in dfa.h

From: Aharon Robbins <[email-masked]>
Date: Thu, 01 May 2014 21:29:43 +0300

Hi Paul.

> > I have to copy the defines for it from dfa.c
> > into dfa.h to make it compile.
>
> It'd be better to move that stuff into custom.h, I expect.  Please see 
> below.

custom.h is for system customization to override things that Autoconf
can't figure out or gets wrong.

> > Are all the new routines in dfa.h needed by code in grep?
>
> Yes, I'm afraid so.  We wouldn't have put them there otherwise.
>
> > Can we try in the future to the gnulib-specific stuff out of the
> > header?
>
> In the long run it'd be better to have the header just work, so that you 
> don't have to copy anything from dfa.c to dfa.h or vice versa, and so 
> that you can just use grep's dfa.c and dfa.h with little or no change.

Requiring gnulib in that header makes it less attractive to other
projects that might want to use dfa as a black box.

Are there such?  I don't know. (I thought I'd heard something about
gettext using dfa but I am unsure if that is true.)

It is certainly making things more painful for me.

Does the GL_PURE stuff have to be on every declaration? Or can it
just be on the body?  What does it even mean, anyway?  Does whatever
optimization it enables *really* make a big difference, or is it just
a micro-optimization?  (Serious questions.)

> I emailed you something along those lines earlier this month; you can 
> find a copy at <http://bugs.gnu.org/17157#61>.  If you'd like me to come 
> up with a revised patch, which merges this into the latest gawk master, 
> I can do that.

Yes, I know. I am unsure if your patch, which totally eliminates the
ability to compile gawk on systems without multibyte support, is the
direction in which I wish to go.  It may be, but I haven't done the
research yet to be sure that I won't break any of the systems I support.

I just looked at the patch again.  It really doesn't do the trick;
there are lots of places where MBS_SUPPORT is checked in the gawk code
and pulling mbsupport.h out of awk.h is likely to break things.

Thanks,

Arnold