[PD] Very large patches unstable?
Matteo Sisti Sette
matteosistisette at gmail.com
Wed Dec 2 13:59:18 CET 2009
IOhannes m zmoelnig escribió:
> hmm, so what is your suggestion to solve the problem?
Unfortunately I am not a C++ developer so I cannot study the source code
and give practical, specific, useful suggestions.
The only suggestions I can give are the obvious ones:
- fix the bugs
- design things with an eye on optimization and scalability.
Regarding the second point, just from what I have "heard" (i.e. I can't
speak with full knowledge of the facts), I think a lot of things in PD
are not implemented in the most optimized way, that is for example,
double linked lists are used where more efficient data structures could
be used. I guess efficiency is considered often "not to be an issue"
just because it is (implicitely) considered unlikely that a user will
put a few thousands objects with a dozen of levels of nesting
(abstractions inside abstractions).
I simply guess that in some cases, an implementation that is O(n^2) is
chosen just because it is the easiest one, where a O(nlogn) is possible.
The implicit assumption is that n won't ever be big enough to make a
difference. Sometimes that assumption is reasonable, sometimes it is
not. I can't suggest anything more specific than just ask yourself, when
you (I'm saying 'you' meaning PD developers) take such decisions: "Is it
really safe to assume 'n' won't ever be big enough? Isn't it worth using
a more efficient data structure? Can I really assume that it would be
'foolish' to have n>[some value here]? Or maybe not?"
That is about "pushing the limits". That accounts for cases where big
numbers get unmanageable for efficiency reasons (either of time or of
memory, but usually time), that is things get slow when they COULD be
BUT, that does not account for crashes. When PD (or any program)
crashes, there's no philosophical reasoning about pushing/hitting/going
beyound the limits that can justify that. When there's a crash, there's
simply a bug. Some pointer goes out of the bounds of allocated memory,
or maybe an integer wraps to negative values and is used as an array
index, or whatever. That is, someone forgot to write a line of code that
does a check; or, there is some kind of leak (memory leak, for example),
which is simply due to an oversight in writing code, and probably that
only becomes evident when numbers (of things doing things) get large.
Etcetera. Those are bugs, oversights, it is not a matter of allowing to
go beyound limits.
Allowing the user to go beyound limits doesn't mean allocating N bytes
and then allowing the user to address locations that don't exist. It
doesn't mean using N bits for a number and allowing the user to
introduce a number that exceeds 2^N.
Allowing to go beyound the limits means designing things in such a way
that they can be used in ways that the developer haven't thought about.
And wherever a physical, numerical, well-defined limit still exists,
which is unavoidable, it MUST be documented.
> in many it does the latter (which
> is the strength of Pd, i believe).
Of course it does. That's why I love it. But sometimes I have the
impression that though that is the philosophy, it is not fully expressed
in the implementation.
> rather i would have people who reach them, report here and provide
> examples how to reach these limits, so they can be fixed.
That's what I always do whenever I can. If I had the skills, I would
even try to locate the problem in the source code, but I don't have
them. So I just report the bugs and, if I can, provide some example patch.
Sometimes however the bugs are too difficult to isolate, so the only
patch I could send with the report, would be the "complete" patch, and
usually I can't do that because I develop patches for artists (i.e. not
for myself) so I can't "make them publish" even if I would like to. If
they were mine, I would, but I can't "trust" people "on behalf of" other
However in some cases I did manage to isolate the bug, report it, and
even get it fixed.
I know it feels bad to receive a bug report without an easy way to
reproduce the bug. In those cases, I try to give as much information as
I can in order to give some "clue" to the developers.
> "i find Pd frustrating because it is so unstable" is for me a highly
> frustrating statement.
Well, since the subject was touched, I just thought I would just share
my opinion. I am happy, and sorry at the same time, that I have
transmitted you my frustration.
Note that I keep using PD after all. Perhaps I should sometimes share
also the great joys and satisfactions it gives me, and not only the
frustrations which are a small percentage. I tend to be somewhat
"practical" and write only when there's an issue to be solved; that
implies being unintentionally "negative".
Matteo Sisti Sette
matteosistisette at gmail.com
More information about the Pd-list