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
>
next prev 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).