Subject: bug#36677: [PATCH] Don't truncate backtraces

From: David Pirotte <[email-masked]>
Date: Sun, 21 Jul 2019 19:59:43 -0300

Hello Mark,

> > This change was prompted by recent discussion on the Guix lists:
> >   https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00207.html
> > In Guix, the truncation of stack traces frequently obscures
> > important information due to the long filenames.  

> I'm sympathetic to this problem, but simply disabling the truncated
> printing during backtraces is not workable.  It is quite often the case
> that some of the structures printed in backtraces are *huge*, or even
> cyclic.

I am very pleased to read that you think it is important to enable truncated
printing as a default for backtrace, I think so to. But maybe Guile could provide an
easy mechanism to overwrite these defaults, using procedures, or parameters? (not
depending on an 'external' variable I mean (*)

I wrote "these defaults", "procedures or parameters", using plural, because I think
that the default should also enable truncated printing for the repl and the
raised exception system, what do you think?

I wrote about this a couple of times, and as a gentle ping, here is my last email
about this request, which is a good summary which also points to other discussion on
this topic:

	https://lists.gnu.org/archive/html/guile-devel/2019-05/msg00034.html

David.

(*)	if an easy mechanism would depends on variables, let's make these Guile
variable then. like GUILE_BACKTRACE_PRINTER_TO_USE_N_COLUMN_AT_MOST
 (or what ever, I am not the best to name things ...),
GUILE_REPL_PRINTER_TO_USE_N_COLUMN_AT_MOST and
GUILE_RAISED_EXCEPTION_SYSTEM_TO_USE_N_COLUMN_AT_MOST, with -1 meaning no
truncated printing ...

But I would prefer procedures to set these, 'keeping' the default to be what
truncated-print uses as defined 'now', in  (ice-9 pretty-print), so we could use
them in our repl, our .guile, or the global init.scm setting, and change that on the
fly as we wish ... as for the procedure names, or one procedure and two args, one
for the parmeter to set, one for the value ... let's think about it ...