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

From: Thierry Volpiatto <[email-masked]>
Date: Fri, 18 Mar 2022 13:37:43 +0000

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.

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

Thanks.

-- 
Thierry