Subject: bug#54433: 29.0.50; Invalid read syntax: "#<" with async-bytecomp

From: Alan Mackenzie <[email-masked]>
Date: Fri, 18 Mar 2022 21:28:32 +0000

Hello, Thierry.

On Fri, Mar 18, 2022 at 13:37:43 +0000, Thierry Volpiatto wrote:
> Alan Mackenzie <[email-masked]> writes:

> > Hello, Michael.

> > On Fri, Mar 18, 2022 at 00:50:17 +0100, Michael Heerdegen wrote:
> >> Alan Mackenzie <[email-masked]> writes:

> >> > Could you please give a recipe for this situation, preferably starting
> >> > from emacs -Q?  I don't know how to use async-bytecomp.el, for
> >> > example.

> >> Here is the issue:

> >> https://github.com/jwiegley/emacs-async/issues/153

> > Thanks.  I've read it, now.

> >> But I don't think async or async-bytecomp is related to this issue at
> >> all.  It only hits an issue with vanilla Emacs.  I think it's not
> >> necessary for you to have a look at async, unless you are interested,
> >> also because I have a recipe for emacs -Q:

> >> Byte compile lisp/calendar/appt.el (I did that with B from dired); after
> >> that:

> >> byte-optimize--dynamic-vars ->
> >> (#<symbol original-date at 24141> #<symbol number at 24125>)

> >> The problem for async-bytecomp is then only that a result like this is
> >> not `read'able after being printed.

> > I made a mistake in my last post.  There's actually no reason
> > byte-optimize--dynamic-vars shouldn't contain symbols with position.
> > That's what it accumulates.  It is also meant to be a private variable
> > in the byte compilation (hence the "--" in its name).

> > Why is async-bytecomp copying byte-optimize--dynamic-vars?  There seems
> > to be no reason.

> You are right, there is no reason for this particular one and also the
> private ones, however we used in the past to load all byte-* variables
> for a reason I don't remember, IMO it is not needed anymore to load byte-* vars
> private or not, so I removed this.

I think that all the byte-* variables are connected with byte
compilation.  But I also think that they are (?nearly?) all internal
variables, so it shouldn't be needed to copy them to an aynchronous
thread (?or process?).

> > Maybe any variables with "--" in their symbols should be filtered out
> > of the copying operation.

> Name space problem, byte-* vars and functions have no fixed prefix (not
> always).
 
OK.  I think you're saying that there are other variables with "--" that
you _do_ need to copy.

> > Also, is printing followed by reading really the best way to get a copy
> > of a Lisp object?  There are several Lisp types, possibly most of them,
> > whose printed representation can't be read; things like buffers,
> > windows, processes, .....  I think only the really common objects, like
> > lists, vectors, strings, numbers have readable printed representations.

> >> Thierry has removed that variable from the list of handled variables for
> >> now which circumvents the problem.

> > I've had at least two Cc:s to Thierry at <[email-masked]>
> > bounce with "address does not exist".  Do you know if Thierry has
> > changed his address, or could it just be Google playing more silly
> > games?

> My fault I didn't update my mail address in async source files, will do
> soon, sorry for this.

Well, we're back in communication again.  :-)  I've heard good things
about posteo.

> Thanks.

> -- 
> Thierry

-- 
Alan Mackenzie (Nuremberg, Germany).