Re: Picolisp within Picolisp (for games, etc.)? Or, PicoLisp VM?

2017-04-28 Thread Alexander Burger
On Fri, Apr 28, 2017 at 08:08:35AM -0800, Christopher Howard wrote:
> Sounds like quite a project in and of itself.

Indeed.

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
> > list.
> > 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"
> > >:
> >>
> >> 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

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Picolisp within Picolisp (for games, etc.)? Or, PicoLisp VM?

2017-04-28 Thread Christopher Howard
Sounds like quite a project in and of itself.

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
> list.
> 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"
> >:
>>
>> 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
> stack.
>>
>> --
>> https://qlfiles.net
>>
>> --
>> UNSUBSCRIBE: mailto:picolisp@software-lab.de
> ?subject=Unsubscribe
> 

-- 
Christopher Howard, Computer Assistant
Alaska Satellite Internet
3239 La Ree Way, Fairbanks, AK 99709
907-451-0088 or 888-396-5623 (toll free)
fax: 888-260-3584
mailto:christop...@alaskasi.com
http://www.alaskasatelliteinternet.com

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: Picolisp within Picolisp (for games, etc.)? Or, PicoLisp VM?

2017-04-28 Thread Joh-Tob Schäg
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 list.
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>:
>
> 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
stack.
>
> --
> https://qlfiles.net
>
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe