From: Rocky Bernstein <rocky@gnu.org>
To: Alan Mackenzie <acm@muc.de>
Cc: Stefan Monnier <monnier@iro.umontreal.ca>,
emacs-devel <emacs-devel@gnu.org>
Subject: Re: Correct line/column numbers in byte compiler messages [Was: GNU is looking for Google Summer of Code Projects]
Date: Thu, 19 Mar 2020 16:56:45 -0400 [thread overview]
Message-ID: <CANCp2ga-7bpRJ+7chvxv4QkmG-zpWmdtmRVNuZtm920vsDHQ9Q@mail.gmail.com> (raw)
In-Reply-To: <20200319203449.GA4180@ACM>
[-- Attachment #1: Type: text/plain, Size: 3508 bytes --]
On Thu, Mar 19, 2020 at 4:35 PM Alan Mackenzie <acm@muc.de> wrote:
> Hello, Stefan.
>
> On Thu, Mar 19, 2020 at 13:35:08 -0400, Stefan Monnier wrote:
>
> [ .... ]
>
> > It should be easy (much smaller than a summer project) to change the C
> > code so that a bytecode offset can be extracted from the backtrace.
>
> > The harder and more interesting part is how to propagate source
> > information (line numbers and/or lexical variable names and location)
> > to byte-code. There are many parts to this, so it's definitely
> > possible to get some summer project(s) out of it. E.g. one such
> > project is to change the reader so it outputs "fat cons cells" (i.e.
> > cons-cells with line-num info), then arrange for that info to survive
> > `macroexpand-all` and `cconv.el`. That could already be used to give
> > more precise line numbers in bytecompiler warnings.
>
> "More precise line numbers" is a misconstruction, even though I've used
> such language myself in the past. Line numbers don't come from a
> physical instrument which measures with, say +-1% accuracy. CORRECT
> line (and column) numbers are what we need.
>
A bytecode offset is exact and accurate. Right now this information
unavailable. I think the interpreter uses C pointers stored in a register.
So just recording the bytecode offset is a little bit of a slowdown, but
not that much. I doubt it would even register as %1 slower.
But just that would open the way for improvements. This is doable by a
Summer student - Stefan thinks it trivial. But tas you point out there is
overhead in getting it accepted and into GNU Emacs.
Having access to the bytecode offset in a traceback there next are several
options. At the lowest level there is just showing that along with a
disassembly of the bytecode.
And that I believe that is also doable by a summer student.
Going further are a number of options that folks have mentioned so I won't
expand on that.
> You will recall that the output of correct line/column numbers for byte
> compiler messages is a solved problem. I solved it and presented the
> fix in December 2018. This fix was rejected because it made Emacs
> slightly slower.
>
> In the 3½ years I've been grappling with this problem, I've tried all
> sorts of things like "fat cons cells". They don't work, and can't work.
> They can't work because large chunks of our software chew up and spit
> out cons cells with gay abandon (I'm talking about the byte compiler and
> things like cconv.el here). More to the point, users' macros chew up and
> spit out cons cells, and we have no control over them. So whilst we
> could, with a lot of tedious effort, clean up our own software to
> preserve cons cells (believe me, I've tried), this would fail in users'
> macros.
>
> Since then I've worked a fair bit on creating a "double" Emacs core, one
> core being for normal use, the other for byte compiling. There's a fair
> amount of work still to do on this, but I know how to do it. The problem
> is that I have been discouraged by the prospect of having this solution
> vetoed too, since it will make Emacs quite a bit bigger.
>
> I don't think it is fair to give this problem to a group of summer
> coders. It is too hard a problem, both technically and politically.
>
Ok. So do you have a suggestion for what a summer student might do?
>
> [ .... ]
>
> > Stefan
>
> --
> Alan Mackenzie (Nuremberg, Germany).
>
[-- Attachment #2: Type: text/html, Size: 4502 bytes --]
next prev parent reply other threads:[~2020-03-19 20:56 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-19 15:10 GNU is looking for Google Summer of Code Projects Rocky Bernstein
2020-03-19 17:35 ` Stefan Monnier
2020-03-19 17:56 ` Andrea Corallo
2020-03-19 18:05 ` Andrea Corallo
2020-03-19 18:19 ` Rocky Bernstein
2020-03-19 21:26 ` Stefan Monnier
2020-03-19 21:45 ` Andrea Corallo
2020-03-19 23:07 ` Rocky Bernstein
2020-03-19 20:34 ` Correct line/column numbers in byte compiler messages [Was: GNU is looking for Google Summer of Code Projects] Alan Mackenzie
2020-03-19 20:43 ` Andrea Corallo
2020-03-20 19:18 ` Alan Mackenzie
2020-03-21 11:22 ` Andrea Corallo
2020-03-21 15:30 ` Correct line/column numbers in byte compiler messages Alan Mackenzie
2020-03-21 16:28 ` Andrea Corallo
2020-03-21 18:37 ` Andrea Corallo
2020-03-21 20:19 ` Alan Mackenzie
2020-03-21 21:08 ` Andrea Corallo
2020-03-21 23:39 ` Andrea Corallo
2020-03-22 11:26 ` Alan Mackenzie
2020-03-19 20:56 ` Rocky Bernstein [this message]
2020-03-19 22:05 ` Correct line/column numbers in byte compiler messages [Was: GNU is looking for Google Summer of Code Projects] Stefan Monnier
2020-03-20 19:25 ` Alan Mackenzie
2020-03-19 21:41 ` Stefan Monnier
2020-03-19 22:09 ` Stefan Monnier
2020-03-20 20:10 ` Alan Mackenzie
2020-03-20 21:23 ` Rocky Bernstein
2020-03-20 21:27 ` Clément Pit-Claudel
2020-03-20 23:46 ` Stefan Monnier
2020-03-20 21:30 ` Stefan Monnier
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CANCp2ga-7bpRJ+7chvxv4QkmG-zpWmdtmRVNuZtm920vsDHQ9Q@mail.gmail.com \
--to=rocky@gnu.org \
--cc=acm@muc.de \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/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.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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).