Just out of curiosity: does PicoLisp have some mechanism for dumping the
process image (or some equivalent effect) so you can save a PicoLisp
process in a certain state and restart it there.
On 04/28/2017 08:54 AM, Alexander Burger wrote:
> On Fri, Apr 28, 2017 at 08:08:35AM -0800, Christopher Howard wrote:
>> Sounds like quite a project in and of itself.
> You might consider to take ErsatzLisp (or miniPicoLisp), and throw out all I/O
> functionality, and other system accesses like Runtime...exec().
> ♪♫ Alex
>> On 04/27/2017 10:18 PM, Joh-Tob Schäg wrote:
>>> I thought about the same.
>>> My insights are:
>>> You can 'let all relevant symbols with alternative functions or just
>>> NIL. Adresses 1 & 2
>>> You might want to change the repl in a way that if for example the
>>> symbols car and list are evaluated they return a meaningless number. (It
>>> might be possible to calculate the offset and execute arbitrary lisp
>>> code.) 1 & 2
>>> And alternative would be to rewrite the picolisp eval function and only
>>> let it load Symbols from a certain namespace/symbol to function property
>>> Regarding 3: the best way to archieve that is putting the execution of
>>> this code in a 'later. You can either cancel them after a certain time
>>> via kill while your game world goes on (ask regenaxer how the open pipe
>>> is handled or wait for the result) 3 execution time aspect.
>>> To controll the space aspect you need rewrite picolisp in picolisp and
>>> maintain your own free list or let all functions the user can call
>>> either increase a counter on each allocation and throw an error if the
>>> number of allocations exhausts the virtual machine capacity.
>>> Am 28.04.2017 04:18 schrieb "Christopher Howard"
>>> <christopher.how...@qlfiles.net <mailto:christopher.how...@qlfiles.net>>:
>>>> Hi list, I was wondering if there would be a practical way to safely
>>>> contain a picolisp interpreter (or some subset of commands) inside
>>>> another picolisp program. E.g., suppose you have a computer game
>>>> programmed in PicoLisp, and the main character found a computer terminal
>>>> that allowed him to run some commands or program something in PicoLisp
>>>> The obvious safety concerns here are:
>>>> (1) You either want to disable disk access, or make it so that disk
>>>> access pulls from a virtual disk in the game.
>>>> (2) You don't want the user to be changing memory in the game itself,
>>>> only his virtual memory.
>>>> (3) You don't want the user to be able to exhaust memory or blow the
Christopher Howard, Computer Assistant
Alaska Satellite Internet
3239 La Ree Way, Fairbanks, AK 99709
907-451-0088 or 888-396-5623 (toll free)