Dyalog / ride

Cross-platform IDE for Dyalog APL
https://dyalog.github.io/ride
MIT License
202 stars 31 forks source link

RIDE v4.4: change needed re MA and RM #698

Closed FionaDyalog closed 3 years ago

FionaDyalog commented 3 years ago

Changes made to the IDE that need to be reflected in the RIDE (confirmed by Morten):

IDE:

The text has changed in the pop-up tips on the tracer toolbar, and in the HINTs (bottom of the session) for the menu items. The display of these descriptions in the “Keyboard Shortcuts” section of the configure dialog has been changed too. The actual text on the menu items has not changed for fear of making them too wide.

aplteam commented 3 years ago

I wonder what exactly the difference between un-pause and continue is...

On Thu, 6 May 2021, 10:30 FionaDyalog, @.***> wrote:

Changes made to the IDE that need to be reflected in the RIDE (confirmed by Morten):

IDE:

  • Changed MA “Resume all threads (in tracer)” to “Un-pause all paused threads”
  • Changed RM “Resume execution (in tracer)” to “Continue execution of all threads”

The text has changed in the pop-up tips on the tracer toolbar, and in the HINTs (bottom of the session) for the menu items. The display of these descriptions in the “Keyboard Shortcuts” section of the configure dialog has been changed too. The actual text on the menu items has not changed for fear of making them too wide.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Dyalog/ride/issues/698, or unsubscribe https://github.com/notifications/unsubscribe-auth/AD5XJHPO6VATWC7POPGWSDLTMJHQXANCNFSM44GSALOA .

mkromberg commented 3 years ago

Threads can be paused by the user explicitly, or as a result of "pause on error". A paused thread will suspend at the next thread switch point, which could be in the middle of a line (in a ⎕FHOLD, for example). Un-pause all threads allows these threads to be scheduled again.

"Suspended" threads (interrupted or stopped due to an error) need to be restarted with a →⎕LC, which "restarts" the line. To be precise, "Resume execution" will do →⎕LC for suspended threads AND unpause paused threads.

We struggled for a long time to come up with short phrases to describe this, perhaps we should just have given up.

e9gille commented 3 years ago

For what it's worth, I think I finally understand the difference having looked at the issues with these commands in RIDE, but I can't think of better descriptions either.

If you have multiple threads running and "Pause on error" is set, when you interrupt or a thread signals an error, all threads are paused and one thread is suspended.

At this point I have the following options:

  1. Continue execution of all threads (RM)
  2. Continue execution of all other threads (MA), leaving the suspended thread in a "stopped/suspended" state (with tracer perhaps still open).
  3. Continue execution of only the suspended thread. (→⎕LC)

Is this right?

mkromberg commented 3 years ago

MA is only "continue all other threads" in the example where you have a single suspended thread. You could quite easily have more, for example after a service thread has crashed and then a client thread times out waiting for it and also crashes.