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

2017-05-03 Thread Alexander Burger
On Wed, May 03, 2017 at 09:18:22PM +0200, Alexander Burger wrote:
> On Wed, May 03, 2017 at 10:24:59AM -0800, Christopher Howard wrote:
> > 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.
> 
> Not completely I think. What comes close would be pretty-printing the values 
> of
> all symbols (omitting circular structures which otherwise would cause a hang):
> 
>(out "save.l"
>   (for "S" (all)
>  (unless (circ? (val "S"))
> (pp "S") ) ) )

Having said this, I must say that I do not see a use-case.

PicoLisp starts blindingly fast by 'loadi'ng source files. And for persistence
we use the database (i.e. external symbols).

♪♫ Alex

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


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

2017-05-03 Thread Christopher Howard
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.
> 
> 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
> 

-- 
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 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