Subject: how to stop the annotation of lists by filenames?
From: Oliver Kullmann
Date: Thu, 29 May 2008 13:58:08 +0100
Hi,
it seems that the standard behaviour of Maxima is,
that when a list is created by a function defined
in a file, then this list is annotated with the
full path to this file and the linenumber of
the creating expression.
It seems further that this "feature" is undocumented:
I searched through the whole of the Maxima documentation,
and I also tried to read the source files, but I couldn't
find any place where this behaviour is mentioned.
Nevertheless it causes big trouble:
Apparently the run time is not so much affected
(it seems around 10% overhead), but file sizes
can explode:
To keep the results of massive computations, I use
"save" every 30 minutes. Now this results in file just
consisting of lines like
(in-package :maxima)
(DSKSETQ |$t65|
'((MLIST SIMP
(51
"/home/kullmann/csoliver/SAT-Algorithmen/OKplatform/OKsystem/Transitional/ComputerAlgebra/Satisfiability/Lisp/Backtracking/DLL_solvers.mac"
SRC $DLL_SIMPLEST_ST 48))
((%PHP SIMP) 1 1)
((MLIST SIMP
(51
"/home/kullmann/csoliver/SAT-Algorithmen/OKplatform/OKsystem/Transitional/ComputerAlgebra/Satisfiability/Lisp/Backtracking/DLL_solvers.mac"
SRC $DLL_SIMPLEST_ST 48))
((%PHP SIMP) 1 2)
((MLIST SIMP
(51
"/home/kullmann/csoliver/SAT-Algorithmen/OKplatform/OKsystem/Transitional/ComputerAlgebra/Satisfiability/Lisp/Backtracking/DLL_solvers.mac"
SRC $DLL_SIMPLEST_ST 48))
Performing the same computation with the function read from the command line results
in a file which has less than 10% of the original size. This is actually only for
small examples: The real applications would create files with 100 of MBs (instead of
tens of MBs).
Of course, writing these bloated files hurts also run time. And on that particular
machine the paths are not particularly long, but in other circumstances (created
in deeply nested directories for test purposes, for example), they could be
much longer, making the situation still worse.
I hope it is clear that this "feature" is really a show stopper for me.
It was mentioned earlier on this list, that this behaviour serves debugging
purposes: I can only imagine that it is some left-over, from the time of
implementing Maxima lists??
Now how to stop this annotation? I have no clue which component in Maxima
is responsible here (I assume it's Maxima? seems to be related to "MLIST",
and I couldn't find anything about such thing in the CLisp implementation
notes).
Hopefully only a few definitions in the core Maxima implementation need to
be changed, and then I could do this specifically for my Maxima implementation,
if no one is willing to provide a general option to turn off this
annotation (though I definitely think that all users would benefit
from getting rid off this).
I hope somebody can help!
Oliver
P.S. Perhaps it is "load" which is responsible? I load only Maxima-files;
can something else instead of "load" be used, which would kind of
"anonymise" the functions (so that they cannot be traced back)?