bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: documentation structure (was: attribute: add comments)


From: Paul Eggert
Subject: Re: documentation structure (was: attribute: add comments)
Date: Sun, 10 May 2020 14:13:47 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

On 5/10/20 1:24 PM, Bruno Haible wrote:

> I view ATTRIBUTE_PURE, ATTRIBUTE_CONST as mainly an optimization hint. They
> produce diagnostics only if the attribute has been misplaced, or you can let
> the compiler suggest to you where these attribute would make sense. But what
> would be the diagnostics that are useful to the developer, independently of
> optimization?

Some developers - even in C - prefer a more functional style of programming, and
these attributes are useful cues to the reader that the function lacks side
effects etc. To developers in this category, knowing whether a function is pure
or const can be more important than optimization.

> And for ATTRIBUTE_LEAF, I cannot imagine any useful diagnostics at all

I goofed; I shouldn't have added that to the list. There are a few useful
diagnostics (if a function has aliases, one should be a leaf if the other is)
but they don't come up much.

>> The section "Attributes for specific kinds of functions" is only about 
>> compiler
>> diagnostics
> 
> True. But it is about kinds of functions that are so rare (probably less than 
> 2%
> of all functions). The intent of having it in a separate section is that the
> reader can rapidly skip this section when it's not interesting to them.

Fine, but ATTRIBUTE_FORMAT etc. also apply only to a few functions, no?
> the reader would be a "standards lawyer" (familiar with the way standards
> are usually written) in order to understand what you mean by "extensions to 
> C".

Fair enough.

> Similarly, when I had wording regarding "side effects" and you replaced it
> with "observable state": I think "observable state" is a term from the
> standards, but ask a computer science junior what "observable state" is?
> I bet the term "side effects" is generally more understood.

Using "observable state" makes it easier to document the distinction between
ATTRIBUTE_CONST and ATTRIBUTE_PURE, something that has tripped me up more than
once.  I stole the term "observable state" from the GCC manual and I imagine it
uses the term for the same reason.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]