Self adjusting code?

Robert Brenstein rjb at rz.uni-potsdam.de
Wed May 5 05:44:59 EDT 2004


>My first post to this list...
>
>I am a SuperCard user (for 14 years).  I am of course interested in 
>Revolution's multi-platform output.  However... in reading some of 
>your tutorials, I came across a blurb outlining a restriction on 
>making run-time changes to Revolution projects (stacks).  I am 
>interested in evolving code... projects that react to, optimize and 
>adjust to their environment... who uses them and their intent, and 
>available media, data and communications streams.  How does one do 
>this with Revolution?  I can imagine a solution involving two 
>concurrent projects... one running... the other treated as data 
>file... adjusted by the first... then, periodically, the first 
>duplicates the second (now there are three), launches the second 
>which once launched, quits and deletes the first, then, gets down to 
>the business of writing changes to it's inactive clone.  Wow, that 
>seems complex... but I can't quite imagine how else to do run-time 
>self-adjusting code.  How have you people solved this problem.
>
>
>Randall Reetz
>
>randall at thinkthink.com

Welcome :)

What you envision is possible but you really need to plan things well 
ahead. There are two basic restrictions that come in your way.

1. Standalone applications can't modify self. You can modify the code 
on the fly but the changes can't be saved into the same file. 
However, this is not a show stopper for you since your standalone can 
contain only the persistent code and all other codes can reside in 
stack files that can be modified at runtime.

2. When running as a standalone, you are not allowed to compile more 
than 10 lines of code (see the scriptLimits in Rev's docs). This 
applies to both replacement of handlers as well as execution through 
'do'. I see this as a serious issue for you since it will likely make 
the workabout from #1 useless. To work around script limits, you 
would need to break your code in really small chunks, which does not 
sound plausible for this task. A better solution would be to 
negotiate with RunRev a special license that increases the script 
limits. If you have enough funds, you can get the embedded product 
that allows you to work around this. But this is quite a costly 
option.

No problems, of course, if you are developing this for your own usage 
and can do all execution under licensed IDEs (I mean that the 
projects execute only when running in licensed IDE's -- I am using 
plural in case multiple computers are involved). Considering the 
relatively low price of Rev Express, this may be an acceptable 
approach.

Robert Brenstein


More information about the use-livecode mailing list