Hi,

is there a way that )DUMP preserves function fidelity - that is - keep empty lines and indents? It would improve readability a lot by eg. separating code and next comment by a space line.

Best Regards
Hans-Peter

Am 08.11.20 um 20:07 schrieb Dr. Jürgen Sauermann:
Hi everybody,

I am currently doing some rework of the *)SAVE* and *)LOAD* commands.

Before updating GNU APL from SVN the next time (and in the near future), please make sure
that you have made a backup of all your workspaces.

If you prefer*)DUMP* over *)SAVE* to store your workspaces, then you are fine because
nothing will be changed there.

If you normally *)SAVE* your workspaces, then please note the following.

A. *)SAVE* and *)LOAD* are intended for short term storage, i.e. the )SAVEd workspace   should be be *)LOAD*ed with the same (SVN-) version of the interpreter. Even tthough I am   trying my best to keep these commands backward-compatible, I cannot guarantee
that I will always succeed.

B. The only advantage of *)SAVE* over *)DUMP* is that it stores the )SI stack. This is
   sometimes necessary when:

B1. sending a workspace for trouble-shooting (and only if the )SI stack is relevant), or
B2. to interrupt APL code troubleshooting and continue the next day.

In contrast to the old days (where a )SAVEd  APL session) could be completely restored) this is no longer the case. There are more and more components that do not allow their state to be serialized, and as a consequence the workspace )LOADed will increasingly differ from the workspace )SAVEd before. That, in
turn, will make the*)LOAD* and *)SAVE* commands more and more meaningless.

C. If you want to stay with *)SAVE* then I would recommend the following procedure
for updating GNU APL:

C1. *)DUMP* the workspace as a precaution for one of the subsequent steps failing. C2.  If appropriate: *)SIC*. This will not only make the saved workspace smaller but will        also significantly reduce the probability that something will go wrong later.
C3. *)SAVE* the workspace.
C4.  update the interpreter (typically from *SVN*).
C5. *)LOAD* the workspace again and check that it still works.
C6.*  )SAVE* the workspace again.
C7.  repeat the steps above (except C4 ) for all your workspaces.

D. The reason for the ongoing changes is that a specific case (a derived function lurking      on the )SI stack) is currently not handled properly by *)SAVE* and *)LOAD*. Currently you      get a warning if that happens, but in the long run this should work. That is somewhat      difficult, though, and therefore it will take a while before this is fixed.

Best Regards,
Jürgen





Reply via email to