public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Martin Liška" <mliska@suse.cz>
To: Eli Zaretskii <eliz@gnu.org>
Cc: joseph@codesourcery.com, gcc@gcc.gnu.org, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH] Port GCC documentation to Sphinx
Date: Wed, 30 Jun 2021 12:11:03 +0200	[thread overview]
Message-ID: <57743e51-04d5-ec2e-b684-54f0321ef0bd@suse.cz> (raw)
In-Reply-To: <83a6n8obh4.fsf@gnu.org>

On 6/29/21 6:57 PM, Eli Zaretskii wrote:
>> From: Martin Liška <mliska@suse.cz>
>> Date: Tue, 29 Jun 2021 12:09:23 +0200
>> Cc: GCC Development <gcc@gcc.gnu.org>, gcc-patches@gcc.gnu.org
>>
>> On 6/28/21 5:33 PM, Joseph Myers wrote:
>>> Are formatted manuals (HTML, PDF, man, info) corresponding to this patch
>>> version also available for review?
>>
>> I've just uploaded them here:
>> https://splichal.eu/gccsphinx-final/
> 
> Thanks.

Hey!

> 
> I'm an Info junkie, so I grabbed gcc.info from there and skimmed
> through it.  Please allow me a few unsolicited comments:

I really welcome them!

> 
> 1. It sounds like Sphinx is heavily biased towards HTML format, and as
>     result uglifies the Info format?

Hopefully not :)

> 
> For example, many cross-references (AFAIU introduced as part of
> migration to Sphinx) make the text illegible in Emacs.  Example:
> 
>    This standard, in both its forms, is commonly known as `C89', or
>    occasionally as `C90', from the dates of ratification.  To select this
>    standard in GCC, use one of the options *note -ansi *note -std
>    .‘=c90’ or *note -std.‘=iso9899:1990’; to obtain all the diagnostics
>    required by the standard, you should also specify *note -pedantic.
>    (or *note -pedantic-errors. if you want them to be errors rather
>    than warnings).  See *note Options Controlling C Dialect.
>    [...]
>    An amendment to the 1990 standard was published in 1995.  This amendment
>    added digraphs and ‘__STDC_VERSION__’ to the language, but otherwise
>    concerned the library.  This amendment is commonly known as `AMD1'; the
>    amended standard is sometimes known as `C94' or `C95'.  To select this
>    standard in GCC, use the option *note -std.‘=iso9899:199409’ (with,
>    as for other standard versions, *note -pedantic. to receive all
>    required diagnostics).
> 
> Or how about this:
> 
>    `Overall Options'
> 
>         See Options Controlling the Kind of Output.
> 
>         *note -c. *note -S. *note -E. *note -o. ‘`file'’
>         *note -dumpbase. ‘`dumpbase'’ *note -dumpbase-ext.
>         ‘`auxdropsuf'’ *note -dumpdir. ‘`dumppfx'’ ‘-x’ ‘`language'’
>         *note -v. *note -###. *note –help.‘[=`class'[,...]]’
>         *note –target-help. *note –version. *note -pass-exit-codes
>         . *note -pipe. *note -specs.‘=`file'’ *note -wrapper
>         .‘@`file'’ *note -ffile-prefix-map.‘=`old'=`new'’ *note
>         -fplugin.‘=`file'’ ‘-fplugin-arg-’‘`name'=`arg'’
>         ‘-fdump-ada-spec’‘[-`slim']’ *note -fada-spec-parent.‘=`unit'’
>         *note -fdump-go-spec.‘=`file'’
> 
> In the first line, the emphasis became quotes, which sounds sub-optimal.
> In the second line, the hyperlink was lost.
> And the rest is not really readable.
> 
> Compare this with the original:
> 
>    _Overall Options_
>         *Note Options Controlling the Kind of Output.
> 	    -c  -S  -E  -o FILE  -x LANGUAGE
> 	    -v  -###  --help[=CLASS[,...]]  --target-help  --version
> 	    -pass-exit-codes  -pipe  -specs=FILE  -wrapper
> 	    @FILE  -ffile-prefix-map=OLD=NEW
> 	    -fplugin=FILE  -fplugin-arg-NAME=ARG
> 	    -fdump-ada-spec[-slim]  -fada-spec-parent=UNIT  -fdump-go-spec=FILE
> 
> (Admittedly, Emacs by default hides some of the text of a
> cross-reference, but not hiding them in this case produces an even
> less legible text.)

If I'm correct, it's exactly what's documented in Sphinx FAQ here:
https://www.sphinx-doc.org/en/master/faq.html#displaying-links

and there's a suggested Emacs code snippet that should help with links.
Does it help?

> 
> In general, it is a well-known rule that Texinfo documentation should
> NOT use @ref{foo} as if @ref will disappear without a trace, leaving
> just the hyperlink to 'foo'.  Looks like the rewritten manual uses
> that a lot.
> 
> This "see" consistently gets in the way throughout the entire manual.
> A few more examples:
> 
>     -- Option: -flocal-ivars
> 
>         Default option value for *note -fno-local-ivars.
>     ...
>         For example *note -std.‘=gnu90 -Wpedantic’ warns about C++ style
>         ‘//’ comments, while *note -std.‘=gnu99 -Wpedantic’ does not.
>     ...
>         If this option is not provided but *note -Wabi.‘=`n'’ is, that
>         version is used for compatibility aliases.
>     ...
>         Below *note -std.‘=c++20’, *note -fconcepts. enables
>         support for the C++ Extensions for Concepts Technical
>         Specification, ISO 19217 (2015).
>     ...
>    gcov [ *note -v. | *note –version. ] [ ‘-h’ | *note –help. ]
> 
> 
> 2. The translation of @var produces double-quoting in Info, here's an
>     example:
> 
>    The usual way to run GCC is to run the executable called ‘gcc’, or
>    ‘`machine'-gcc’ when cross-compiling, or ‘`machine'-gcc-`version'’ to
>    run a specific version of GCC.
> 
> vs, the old
> 
>     The usual way to run GCC is to run the executable called 'gcc', or
>    'MACHINE-gcc' when cross-compiling, or 'MACHINE-gcc-VERSION' to run a
>    specific version of GCC.
> 
> I think the new variant is less readable and more confusing, because
> it isn't clear whether the quotes are part of the text.  Here's an
> extreme example:
> 
>    ‘@`file'’
> 
>         Read command-line options from ‘`file'’.  The options read are
>         inserted in place of the original ‘@`file'’ option.  If ‘`file'’
>         does not exist, or cannot be read, then the option will be treated
>         literally, and not removed.

I can confirm that, so e.g.
Show :samp:`Samp with a {variable}.`

is transformed into:
Show @code{Samp with a @emph{variable}.}

Default info formatting is selected as:

@definfoenclose strong,`,'
@definfoenclose emph,`,'

We can adjust 'emph' formatting to nil, what do you think?

> 
> 3. Some cross-references lost the hyperlinks:
> 
>    See option-index, for an index to GCC’s options.
> 
>    ("option-index" was a hyperlink to the corresponding index section).

That's removed in latest version.

> 
> 4. Menus lost the short descriptions of the sub-sections.  Example:
> 
>    * Designated Initializers
>    * Case Ranges
>    * Cast to a Union Type
>    * Mixed Declarations, Labels and Code
>    * Declaring Attributes of Functions
> 
> vs
> 
>    * Designated Inits::    Labeling elements of initializers.
>    * Case Ranges::         'case 1 ... 9' and such.
>    * Cast to Union::       Casting to union type from any member of the union.
>    * Mixed Declarations::  Mixing declarations and code.
>    * Function Attributes:: Declaring that functions have no side effects,
> 			  or that they can never return.
> 
> Looks like some bug to me.
> 
> Note also that nodes are now called by the same name as the section,
> which means node names generally got much longer.  Is that really a
> good idea?

Well, I intentionally removed these and used simple TOC tree links
which take display text for a section title.

> 
> 5. There's some strange bug with symbols inside parentheses.  For
>     example:
> 
>    In GNU C and C++, you can use function attributes to specify certain
>    function properties that may help the compiler optimize calls or check
>    code more carefully for correctness.  For example, you can use
>    attributes to specify that a function never returns ( ‘noreturn’ ),
>    returns a value depending only on the values of its arguments ( ‘const’
>    ), or has ‘printf’ -style arguments ( ‘format’ ).
> 
> See the extra blanks inside parens?  The old format was nicer:
> 
>    In GNU C and C++, you can use function attributes to specify certain
>    function properties that may help the compiler optimize calls or check
>    code more carefully for correctness.  For example, you can use
>    attributes to specify that a function never returns ('noreturn'),
>    returns a value depending only on the values of its arguments ('const'),
>    or has 'printf'-style arguments ('format').
> 
> 6. Something's wrong with the second footnote below:
> 
>       ---------- Footnotes ----------
> 
>       (1)
>    https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt
> 
>       (2) (1) A ‘call-used’ register is a register whose contents can be
>    changed by a function call; therefore, a caller cannot assume that the
>    register has the same contents on return from the function as it had
>    before calling the function.  Such registers are also called
>    ‘call-clobbered’, ‘caller-saved’, or ‘volatile’.
> 
> Why does the 2nd footnote have 2 note numbers?

I can confirm the following code snippet:

Note1: ([#]_)
Note2: ([#]_)

.. [#] Future versions of GCC may zero-extend, or use a target-defined ``ptr_extend`` pattern.  Do not rely on sign extension.
.. [#] I am note 2.

emits the following texinfo:

Note1: (@footnote{@w{(1)}
Future versions of GCC may zero-extend, or use a target-defined @code{ptr_extend} pattern.  Do not rely on sign extension.
})
Note2: (@footnote{@w{(2)}
I am note 2.
})

Seems correct to be, but it's likely not. Let me investigate that.

> 
> 7. Lines that shouldn't be broken, are:
> 
>    ‘`type' __sync_fetch_and_add (`type' *ptr, `type' value, ...)’  ‘`type'
>    __sync_fetch_and_sub (`type' *ptr, `type' value, ...)’  ‘`type'
>    __sync_fetch_and_or (`type' *ptr, `type' value, ...)’  ‘`type'
>    __sync_fetch_and_and (`type' *ptr, `type' value, ...)’  ‘`type'
>    __sync_fetch_and_xor (`type' *ptr, `type' value, ...)’  ‘`type'
>    __sync_fetch_and_nand (`type' *ptr, `type' value, ...)’
> 
> vs
> 
>    'TYPE __sync_fetch_and_add (TYPE *ptr, TYPE value, ...)'
>    'TYPE __sync_fetch_and_sub (TYPE *ptr, TYPE value, ...)'
>    'TYPE __sync_fetch_and_or (TYPE *ptr, TYPE value, ...)'
>    'TYPE __sync_fetch_and_and (TYPE *ptr, TYPE value, ...)'
>    'TYPE __sync_fetch_and_xor (TYPE *ptr, TYPE value, ...)'
>    'TYPE __sync_fetch_and_nand (TYPE *ptr, TYPE value, ...)'

Yes, I can confirm that, it's on my TODO list right now.

Thanks for useful comments.
Martin

> 
> HTH
> 


  parent reply	other threads:[~2021-06-30 10:11 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1446990946.2994.192.camel@surprise>
     [not found] ` <e7f490fc-ab76-5bc5-5e94-1d9f00f34b62@suse.cz>
2021-05-13 11:45   ` RFC: Sphinx for GCC documentation Martin Liška
2021-05-31 13:25     ` GCC documentation: porting to Sphinx Martin Liška
2021-05-31 15:49       ` Michael Matz
2021-06-01  7:31         ` Martin Liška
2021-06-01 13:31           ` Michael Matz
2021-06-02  7:36             ` Martin Liška
2021-06-02 16:05               ` Joel Sherrill
2021-06-02 16:44                 ` Joseph Myers
2021-06-03 12:26                   ` Martin Liška
2021-06-03 17:16                     ` Joseph Myers
2021-06-04  7:27                       ` Martin Liška
2021-06-02 17:27       ` Joseph Myers
2021-06-10 14:06         ` Martin Liška
2021-06-10 16:49           ` Joseph Myers
2021-06-11 14:33             ` Martin Liška
2021-06-11 15:50               ` Joseph Myers
2021-06-11 18:48                 ` Koning, Paul
2021-06-23 13:13                 ` Martin Liška
2021-06-23 16:00                   ` Joseph Myers
2021-06-24 14:08                     ` Martin Liška
2021-06-25 13:11                       ` Martin Liška
2021-06-25 13:14                         ` Martin Liška
2021-06-28 10:23                         ` Arnaud Charlet
2021-06-28 10:44                           ` Martin Liška
2021-06-29 15:54                             ` Arnaud Charlet
2021-06-30  7:52                               ` Martin Liška
2021-08-10 15:43                                 ` Martin Liška
2021-08-27  9:31                                   ` Martin Liška
2021-06-28 12:01                         ` [PATCH] Port GCC documentation " Martin Liška
2021-06-28 15:33                           ` Joseph Myers
2021-06-29 10:09                             ` Martin Liška
2021-06-29 10:50                               ` Richard Earnshaw
2021-06-30  4:47                                 ` Martin Liška
2021-06-30 10:14                                   ` Richard Earnshaw
2021-06-30 11:58                                     ` Martin Liška
2021-06-29 16:57                               ` Eli Zaretskii
2021-06-29 18:01                                 ` Eli Zaretskii
2021-06-30 10:11                                 ` Martin Liška [this message]
2021-06-30 10:46                                   ` Martin Liška
2021-06-30 13:09                                   ` Eli Zaretskii
2021-07-01 12:44                                     ` Martin Liška
2021-07-01 13:33                                       ` Eli Zaretskii
2021-07-01 14:14                                         ` Martin Liška
2021-07-01 15:06                                           ` Michael Matz
2021-07-02  9:40                                             ` Martin Liška
2021-07-02 10:32                                               ` Eli Zaretskii
2021-07-01 15:44                                           ` Eli Zaretskii
2021-07-01 16:04                                             ` Martin Liška
2021-07-01 16:58                                               ` Eli Zaretskii
2021-07-02  9:30                                                 ` Martin Liška
2021-07-02 10:31                                                   ` Eli Zaretskii
2021-07-02 13:23                                                     ` Martin Liška
2021-07-02 23:53                                     ` Hans-Peter Nilsson
2021-07-05  9:17                                       ` Richard Sandiford
2021-07-05 12:14                                         ` Eli Zaretskii
2021-07-05 13:03                                           ` Richard Sandiford
2021-07-12 13:25                                       ` Benefits of using Sphinx documentation format Martin Liška
2021-07-12 13:39                                         ` Eli Zaretskii
2021-07-12 13:53                                           ` Jonathan Wakely
2021-07-12 14:05                                             ` Jonathan Wakely
2021-07-12 14:16                                               ` Eli Zaretskii
2021-07-12 14:34                                                 ` Martin Liška
2021-07-12 17:09                                                   ` Eli Zaretskii
2021-07-12 14:12                                             ` Eli Zaretskii
2021-07-12 14:30                                               ` Martin Liška
2021-07-12 14:54                                                 ` Matthias Kretz
2021-07-12 17:03                                                   ` Eli Zaretskii
2021-07-12 17:15                                                     ` Jonathan Wakely
2021-07-12 17:23                                                       ` Eli Zaretskii
2021-07-12 17:33                                                         ` Jonathan Wakely
2021-07-13  6:24                                                       ` Richard Biener
2021-07-13 11:52                                                         ` Eli Zaretskii
2021-07-13 12:46                                                           ` Richard Biener
2021-07-13 12:55                                                             ` Eli Zaretskii
2021-08-09 12:12                                                           ` Martin Liška
2021-07-13 14:19                                                         ` Jonathan Wakely
2021-07-12 14:52                                               ` Jonathan Wakely
2021-07-12 14:54                                                 ` Jonathan Wakely
2021-07-12 17:14                                                   ` Eli Zaretskii
2021-07-12 15:03                                                 ` Jonathan Wakely
2021-07-12 16:00                                                   ` Gavin Smith
2021-07-12 16:15                                                     ` Jonathan Wakely
2022-07-05 12:27                                                       ` Copiable anchor links in gcc manual Gavin Smith
2022-07-05 13:28                                                         ` Jonathan Wakely
2021-07-12 14:37                                           ` Benefits of using Sphinx documentation format Martin Liška
2021-07-12 17:12                                             ` Eli Zaretskii
2021-07-12 16:36                                         ` David Malcolm
2021-07-12 18:23                                           ` Koning, Paul
2021-06-30 12:26                                 ` [PATCH] Port GCC documentation to Sphinx Martin Liška
2021-06-30 13:28                                 ` Martin Liška
2021-06-30 13:38                                   ` Eli Zaretskii
2021-06-30 14:04                                     ` Martin Liška
2021-06-30 15:43                                       ` Eli Zaretskii
2021-07-01 12:31                                         ` Martin Liška
2021-07-12 17:18                               ` Martin Sebor
2021-08-09 12:18                                 ` Martin Liška
2021-07-13 14:54                               ` Tamar Christina
2021-08-09 13:29                                 ` Martin Liška
2021-06-02 20:41       ` GCC documentation: porting " Martin Sebor
2021-06-03 10:56         ` Martin Liška
2021-06-04 15:10           ` Martin Sebor
2021-06-10  9:07             ` Martin Liška
2021-06-10 13:18               ` Martin Liška
2021-06-10 23:48                 ` Martin Sebor
2021-06-11 14:34                   ` Martin Liška
2021-06-04  7:55     ` RFC: Sphinx for GCC documentation Tobias Burnus
2021-06-04 14:24       ` Koning, Paul
2021-06-07 13:30         ` Martin Liška
2021-06-07 21:26           ` Bernhard Reutner-Fischer
2021-06-08  7:43             ` Martin Liška
2021-06-07 13:28       ` Martin Liška
2021-06-07 14:19         ` Tobias Burnus
2021-06-10 10:32           ` Martin Liška

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=57743e51-04d5-ec2e-b684-54f0321ef0bd@suse.cz \
    --to=mliska@suse.cz \
    --cc=eliz@gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gcc@gcc.gnu.org \
    --cc=joseph@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).