Subject: bug#63586: closed (Re: bug#63588: 29.x: dotimes (possible) problem)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 06 Sep 2023 20:11:03 +0000

Your bug report

#63588: 29.x: dotimes (possible) problem

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
63588: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63588
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#63588: 29.x: dotimes (possible) problem
From: Stefan Kangas <[email-masked]>
To: Mattias Engdegård <[email-masked]>
Cc: Eli Zaretskii <[email-masked]>, [email-masked], [email-masked], [email-masked], Stefan Monnier <[email-masked]>
Date: Wed, 6 Sep 2023 13:10:40 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 29.1

Mattias Engdegård <[email-masked]> writes:

> 19 maj 2023 kl. 19.47 skrev Eli Zaretskii <[email-masked]>:
>
>> Feel free to suggest a NEWS entry, and thanks.
>
> There is now a NEWS entry in emacs-29. Do modify it as you like.

It seems like that was all that needed doing here, so I'm closing this.

Subject: 29.x: dotimes (possible) problem
From: [email-masked]
To: [email-masked]
Date: Fri, 19 May 2023 17:10:44 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

hello

the dotimes macro behaves differently in 29.x with respect to previous
versions

Basically: changing the value of the loop variable in the body of
dotimes does not seem to have any effect, where for versions <29.x it
used to.

Here is a minimal stretch of dummy code clarifying the problem I'm
reporting.

emacs-29.0.91 (or 29.0.90)
==========================

(dotimes (ii 10)
(insert (format "%2d " ii))
(when (= ii 4)(setq ii 11))
)
==>  0  1  2  3  4  5  6  7  8  9 

emacs-28.2 (or any version <29.x)
=================================

(dotimes (ii 10)
(insert (format "%2d " ii))
(when (= ii 4)(setq ii 11))
)
==>  0  1  2  3  4 

The ability to jump out of the loop by pushing the loop variable over
the upper limit is something that I happen to use in my scripts, so
29.x breaks them somehow

Of course, there are very many other equivalent ways to
accomplish the same result, but I don't see why this one
shouldn't be supported (any longer)

Is the changed behavior intentional? Am I missing some blatant point here?

AFAICS, changing the value of the loop variable from inside the loop
body is supported by any other language which I know about

thank you very much in advance for any hint/feedback

ciao
-gabriele