Bug#1040440: groff: new upstream version 1.23.0 available

2023-07-08 Thread Colin Watson
Thanks for this; I'll get working on integrating it.

On Wed, Jul 05, 2023 at 05:30:53PM -0500, G. Branden Robinson wrote:
> o The an (man) and doc (mdoc) macro packages no longer remap the -, ',
>   and ` input characters to Basic Latin code points on UTF-8 devices,
>   but treat them as groff normally does (and AT troff before it did)
>   for typesetting devices, where they become the hyphen, apostrophe or
>   right single quotation mark, and left single quotation mark,
>   respectively.  This change is expected to expose glyph usage errors in
>   man pages.  See the "PROBLEMS" file for a recipe that will conceal
>   these errors.  A better long-term approach is for man pages to adopt
>   correct input practices; the man pages groff_man_style(7),
>   groff_char(7), and man-pages(7) (subsection "Generating optimal
>   glyphs"; from the Linux man-pages project) contain such instructions.
>   Doing so also improves man page typography when formatting for PDF.
> 
>   If you maintain a generator of man(7) or mdoc(7) documents (such as a
>   tool that converts other formats to them), and need assistance, please
>   contact the gr...@gnu.org mailing list and describe your situation.

Do you have any opinions on what I should do with this, in
debian/mandoc.local?  In the past, this has been one of those lose-lose
situations where I agree with the typographical concerns but have ended
up yielding to the weight of practical considerations in the
distribution.

  .  \" Debian: Strictly, "-" is a hyphen while "\-" is a minus sign, and the
  .  \" former may not always be rendered in the form expected for things like
  .  \" command-line options.  Uncomment this if you want to make sure that
  .  \" manual pages you're writing are clear of this problem.
  .  \" if '\*[.T]'utf8' \
  .  \"   char - \[hy]
  .
  .  \" Debian: "\-" is more commonly used for option dashes than for minus
  .  \" signs in manual pages, so map it to plain "-" for HTML/XHTML output
  .  \" rather than letting it be rendered as "".
  .  ie '\*[.T]'html' \
  .char \- \N'45'
  .  el \{\
  .if '\*[.T]'xhtml' \
  .  char \- \N'45'
  .  \}

(It has of course been a while.  Maybe we should try again at Debian's
scale.)

> o The "utf8" output device now maps the input characters '^' (caret,
>   circumflex accent, or "hat") and '~' (tilde) to U+02C6 (modifier
>   letter circumflex accent) and U+02DC (small tilde), respectively, for
>   consistency with groff's other output devices.  This change is
>   expected to expose glyph usage errors in man pages.  See the
>   "PROBLEMS" file for a recipe that will conceal these errors.  A better
>   long-term approach is for man pages to adopt correct input practices;
>   the man pages groff_man_style(7), groff_char(7), and man-pages(7)
>   (subsection "Generating optimal glyphs"; from the Linux man-pages
>   project) contain such instructions.  Doing so also improves man page
>   typography when formatting for PDF.

I'm surprised by the tilde change, and I suspect many other people will
be too.  You're quite right that it was already that way for PDF, but I
expect there'll be a lot of references to configuration files in
people's home directories that will be tripped up by this.  Perhaps we
should conceal these new errors in Debian for now?

> o The "sgr" device control command, which dynamically configured support
>   for ISO 6429/ECMA-48 SGR escape sequences (and restored traditional
>   overstriking behavior if disabled), has been removed.  It took effect
>   only at page boundaries.  grotty's "-c" command-line option and the
>   GROFF_NO_SGR environment variable remain supported.

As you're aware:

  .  \" Debian: Disable the use of SGR (ANSI colour) escape sequences by
  .  \" grotty.
  .  if '\V[GROFF_SGR]'' \
  .output x X tty: sgr 0

I added this with the note "because most pagers either fail to cope with
it or need special options to do so".  However, that was in 2002 ... so
I think it's about time to retire this Debian-specific customization.

(I expect some greybeard complaints along the lines of
https://bugs.debian.org/312935, but at least the environment variable
exists.)

> o The semantics of the environment variable SOURCE_DATE_EPOCH to groff,
>   support for which was added in 1.22.4, were not established at that
>   time with respect to time zone selection, prompting divergent
>   interpretations; Debian and distributions derived from it have for
>   several years patched groff to implicitly use UTC as the time zone
>   when interpreting the current time (or SOURCE_DATE_EPOCH) as a local
>   time.  While a convenient and defensible choice for reproducible build
>   efforts, it runs against the grain of user expectations.  Systems
>   programmers like time zone-invariant, monotonically increasing clocks;
>   the broader user base usually prefers a clock that follows an
>   applicable civil calendar.  groff programs now reckon
>   SOURCE_DATE_EPOCH with respect to the local time 

Bug#1040440: groff: new upstream version 1.23.0 available

2023-07-05 Thread G. Branden Robinson
Package: groff
Version: 1.22.4-10
Severity: normal

[Bertrand has tagged and uploaded groff 1.23.0 as of an hour or so ago,
and reported it to the groff development list, but not as of this
writing, yet announced it to info-gnu.  I'm filing this report on my own
initiative as an impatient Debian-using jerk.]  The following text is an
announcement based on the "ANNOUNCE" file in groff's Git repository but
will only resemble, and not be identical to, Bertrand's official
announcement.]

We are pleased to announce the availability of groff 1.23.0.  Obtain it
from the GNU mirror network,

  https://ftpmirror.gnu.org/groff/groff-1.23.0.tar.gz

or, if the network is for some reason inoperative, directly from GNU.

  https://ftp.gnu.org/gnu/groff/groff-1.23.0.tar.gz

Ensure the integrity of your download by checking this source code
archive's cryptographic signature; see "Obtaining groff" below.

What is groff?
==

groff (GNU roff) is a typesetting system that reads plain text input
files that include formatting commands to produce output in PostScript,
PDF, HTML, or DVI formats or for display to a terminal.  Formatting
commands can be low-level typesetting primitives, macros from a
supplied package, or user-defined macros.  All three approaches can be
combined.

A reimplementation and extension of the typesetter from AT Unix, groff
is present on most POSIX systems owing to its long association with Unix
manuals (including man pages).  It and its predecessor are notable for
their production of several best-selling software engineering texts.
groff is capable of producing typographically sophisticated documents
while consuming minimal system resources.

  https://www.gnu.org/software/groff/

Changes
===

Changes since the most recent release candidate, 1.23.0.rc4, comprise
about 200 commits' worth of changes to documentation, including over
1,000 lines of updates to each of doc/groff.texi (our Texinfo manual)
and the man pages groff_mm(7) and eqn(1).

Since groff 1.22.4 was released in December 2018, 28 people have made a
total of over 4,500 commits.

$ git shortlog --summary 1.22.4..1.23.0
14  Bertrand Garrigues
14  Bjarni Ingi Gislason
 2  Bruno Haible
 6  Colin Watson
 1  Cynthia A. E. Livingston
 1  Damian McGuckin
31  Dave Kemper
29  Deri James
 2  Dorai Sitaram
 1  Edmond Orignac
 1  Eric Allman
  4778  G. Branden Robinson
 1  George HELFFRICH
33  Ingo Schwarze
 1  John Gardner
 4  Keith Bostic
25  Keith Marshall
 2  Michael J. Karels
 1  Nate Bargmann
 3  Nikita Ivanov
 1  Paul Eggert
71  Peter Schaffter
 1  Samanta Navarro
 1  T. Kurt Bond
 3  Tadziu Hoffmann
 1  Thomas Dupond
 2  ivan tkachenko
 1  наб

(Some possibly surprising names in the above are due to a rebase of
groff me(7) against 4.4BSD.)

Headline features nominated by our development community include:
  * a new 'man' macro, "MR", for formatting man page cross references;
  * hyperlinked text in terminals via the ECMA-48 OSC 8 escape sequence;
  * a new 'rfc1345' macro package, contributed by Dorai Sitaram,
enabling use of RFC 1345 mnemonics as groff special characters;
  * a new 'sboxes' macro package, contributed by Deri James, enabling
'ms' documents to place shaded and/or bordered rectangles underneath
any groff page elements (PDF output only);
  * 'mom' 2.5, a macro package contributed by Peter Schaffter;
  * the 'ms' package's new strings to assist subscripting;
  * Italian localization, including hyphenation patterns and macro
package string translations, thanks to Edmond Orignac; and
  * new hyphenation patterns for English.

For more on these and other feature changes, see "News" below.

Much attention has been given to fixing bugs, improving diagnostic
messages, and correcting and expanding documentation.  The previous
release shipped with three automated unit tests; this one ships with
over 160 unit and regression tests.

As of this writing, per the GNU Savannah bug tracker, the groff project
has resolved 431 problems as fixed for the 1.23.0 release.  Some of the
bugs we've corrected were over 30 years old.

Classifying these issues by type and the component of the project to
which they apply, we find the following.

  Type  Component
    -
  Build/installation   39   Core  102
  Crash/unresponsive   11   Driver: grohtml 7
  Documentation   111   Driver: gropdf 10
  Feature change   41   Driver: grops   2
  Incorrect behavior  131   Driver: grotty  4
  Lint 15   Driver: others/general  7
  Rendering/cosmetics  10   Font: devpdf1
  Test  6   Font: devps 3
  Warning/suspicious behavior  67