Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Alexander Burger
Hi Jon,

> How many percent (very roughly) of the PicoLisp functions are depending on
> this 'native' function? If it's less than say 10%, one could probably find
> an alternative solution for these "natives", or just ignore them. I'm only
> guessing.

The interpreter itself doesn't depend on 'native' at all. The base
system runs fine without it.

Only add-ons like floating point math, or the OpenGL library, do need
it.

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


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Jon Kleiser
Hi Alex,

> Hi Jon,
>
>> implementation based on node.js. Would it be an idea to first write
>> a PicoLisp assembler (equivalent to the one used in 64-bits PL) in
>> JavaScript, so one could rip off all (or most of) the assembly code
>> that 64-bits PL is written in? It seems like it could be a fun thing
>> to do, at least for those who have some time available ... ;-)
>
> Yes, it would indeed be fun. But I think very difficult.
>
> To have it run in the JavaScript environment, it would be necessary to
> bring the assembler to output JavaScript code, or to write an emulator
> of the PicoLisp machine (see http://software-lab.de/doc64/asm) in
> JavaScript.
>
> I spent a lot of time contemplating to write such an emulator in C, and
> finally gave up because there is no way to implement the 'native'
> function in C, which is the most interesting feature of pil64. In
> JavaScript it is probably even more difficult than in C.
>
> Cheers,
> - Alex

How many percent (very roughly) of the PicoLisp functions are depending on
this 'native' function? If it's less than say 10%, one could probably find
an alternative solution for these "natives", or just ignore them. I'm only
guessing.

/Jon

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


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Alexander Burger
Hi Jakob,

> Please have a look at my picolisp in hardware suggestion. Hope I am
> not rambling too much, but the deadline scared me into writing down
> something at least.

Great! Many thanks!
- Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Jakob Eriksson



On March 6, 2012 at 6:16 PM Thorsten  wrote:

>
> Done, maybe Rudy should have a look if I didn't mess up his original
> intetions, otherwise Alex could delete the reply now.

Please have a look at my picolisp in hardware suggestion. Hope I am
not rambling too much, but the deadline scared me into writing down
something at least.


best regards,
Jakob
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Thorsten
Alexander Burger  writes:

Hi Alex, hi Rudy, 

> BTW, Thorsten is now in the process of inserting Rudy's reply into the
> Ideas-Page, and then we'll probably can delete that reply.

Done, maybe Rudy should have a look if I didn't mess up his original
intetions, otherwise Alex could delete the reply now. 
-- 
cheers,
Thorsten

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


Re: Google Summer of Code (GSoC) 2012

2012-03-06 Thread Alexander Burger
In any case, time is getting short:

The Mentoring organization application deadline is 9th of march, that's
three days from now.

So if anybody has a proposal for an idea, (s)he should hurry to post it
on the ideas page.

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


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Alexander Burger
Hi Jakob,

> Off topic: http://picolisp.com/5000/-2-22.html
> 
> 
>  * how do I edit pages on that wiki?

You register, and then experiment with the help page.


>  * I never understand under which topic an article belongs, which brings me to
> the URL,
>it would be nice if the URL reflected the topic of the Wiki page.

Most URLs have names like "http://picolisp.com/5000/!wiki?gsoc"; or
"http://picolisp.com/5000/!wiki?ideasPage";.

The problem with the above page is that it is a "Reply" which Rudy made
to the GSoC page. Such replies have no title.

BTW, Thorsten is now in the process of inserting Rudy's reply into the
Ideas-Page, and then we'll probably can delete that reply.

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


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Alexander Burger
Hi Jon,

> implementation based on node.js. Would it be an idea to first write
> a PicoLisp assembler (equivalent to the one used in 64-bits PL) in
> JavaScript, so one could rip off all (or most of) the assembly code
> that 64-bits PL is written in? It seems like it could be a fun thing
> to do, at least for those who have some time available ... ;-)

Yes, it would indeed be fun. But I think very difficult.

To have it run in the JavaScript environment, it would be necessary to
bring the assembler to output JavaScript code, or to write an emulator
of the PicoLisp machine (see http://software-lab.de/doc64/asm) in
JavaScript.

I spent a lot of time contemplating to write such an emulator in C, and
finally gave up because there is no way to implement the 'native'
function in C, which is the most interesting feature of pil64. In
JavaScript it is probably even more difficult than in C.

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


Re: PicoLisp assembler in JavaScript?

2012-03-06 Thread Jakob Eriksson



On March 6, 2012 at 4:10 PM Jon Kleiser  wrote:

> JavaScript, so one could rip off all (or most of) the assembly code that
> 64-bits PL is written in? It seems like it could be a fun thing to do,
> at least for those who have some time available ... ;-)

I think it's a wonderful idea.
Off topic: http://picolisp.com/5000/-2-22.html


 * how do I edit pages on that wiki?
 * I never understand under which topic an article belongs, which brings me to
the URL,
   it would be nice if the URL reflected the topic of the Wiki page.

best regards,
Jakob
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


PicoLisp assembler in JavaScript?

2012-03-06 Thread Jon Kleiser

Hi,

I noticed Rudy's recent article "The Browser 'IS' The Data Base" 
, re. a possible PicoLisp 
implementation based on node.js. Would it be an idea to first write a 
PicoLisp assembler (equivalent to the one used in 64-bits PL) in 
JavaScript, so one could rip off all (or most of) the assembly code that 
64-bits PL is written in? It seems like it could be a fun thing to do, 
at least for those who have some time available ... ;-)


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


Re: Segfault on Linux Mint 12 x64

2012-03-06 Thread Alexander Burger
Hi Mansur,

> I have Linux Mint 12 x64 (based on Ubuntu) on my laptop + picoLisp
> x64 ver. 3.0.9.4 (testing release)
> gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
> 
> I get segfault when I run ./dbg, then enter (traceAll) or (ht:Prin "&")

I think I know. I saw the same on Ubuntun 11.10, and I think Mint is
based on that.

The Ubuntu package maintainers somehow messed up the linking, so that
dynamic libraries are not correctly loaded. I debugged it with 'gdb'
back then, and saw it crashed in dlopen() IIRC. The Debian versions (on
which Unbuntu is based) always worked correctly.

Please try Ubuntu 12.4 (preliminary version), or Debian testing, if
possile.

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


Re: Segfault on Linux Mint 12 x64

2012-03-06 Thread Henrik Sarvell
Did you compile everything?

Sometimes I've had problems with other binaries than PL itself (which
I always compile on the given system) when I've just copied them.


On Tue, Mar 6, 2012 at 5:26 PM, Mansur Mamkin  wrote:
> Hi Alex!
>
> I have Linux Mint 12 x64 (based on Ubuntu) on my laptop + picoLisp x64 ver.
> 3.0.9.4 (testing release)
> gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)
>
> I get segfault when I run ./dbg, then enter (traceAll) or (ht:Prin "&")
>
> I tried strace:
> --- (traceAll) ---
> .. skipped ...
> write(1, "\n", 1)                       = 1
> open("lib/ext", O_RDONLY)               = 3
> read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\0\0\0\0\0\0"..,
> 832) = 832
> fstat(3, {st_mode=S_IFREG|0775, st_size=6304, ...}) = 0
> getcwd("/home/mtm/picoLisp", 128)       = 19
> mmap(NULL, 2101624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
> 0x7f46b011b000
> mprotect(0x7f46b011c000, 2093056, PROT_NONE) = 0
> mmap(0x7f46b031b000, 8192, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7f46b031b000
> close(3)                                = 0
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> Process 2893 detached
> -
> --- (ht:Prin "&") ---
> .. skipped ...
> open("lib/ht", O_RDONLY)                = 3
> read(3,
> "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\21\0\0\0\0\0\0"..., 832)
> = 832
> fstat(3, {st_mode=S_IFREG|0775, st_size=18608, ...}) = 0
> getcwd("/home/mtm/picoLisp", 128)       = 19
> mmap(NULL, 2113920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
> 0x7fab3867
> mprotect(0x7fab38672000, 2097152, PROT_NONE) = 0
> mmap(0x7fab38872000, 12288, PROT_READ|PROT_WRITE,
> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fab38872000
> close(3)                                = 0
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> Process 2884 detached
> -
>
> The same version of PL works fine on CentOS 6.2 x64,
> so maybe that's not PL issue.
> If you have no idea about it at the moment, there is no big trouble, I can
> just migrate to CentOS.
>
> Regards,
> Mansur
>
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe


Segfault on Linux Mint 12 x64

2012-03-06 Thread Mansur Mamkin

Hi Alex!

I have Linux Mint 12 x64 (based on Ubuntu) on my laptop + picoLisp x64 
ver. 3.0.9.4 (testing release)

gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

I get segfault when I run ./dbg, then enter (traceAll) or (ht:Prin "&")

I tried strace:
--- (traceAll) ---
.. skipped ...
write(1, "\n", 1)   = 1
open("lib/ext", O_RDONLY)   = 3
read(3, 
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\t\0\0\0\0\0\0"..., 832) 
= 832

fstat(3, {st_mode=S_IFREG|0775, st_size=6304, ...}) = 0
getcwd("/home/mtm/picoLisp", 128)   = 19
mmap(NULL, 2101624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 
0) = 0x7f46b011b000

mprotect(0x7f46b011c000, 2093056, PROT_NONE) = 0
mmap(0x7f46b031b000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7f46b031b000

close(3)= 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 2893 detached
-
--- (ht:Prin "&") ---
.. skipped ...
open("lib/ht", O_RDONLY)= 3
read(3, 
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\21\0\0\0\0\0\0"..., 
832) = 832

fstat(3, {st_mode=S_IFREG|0775, st_size=18608, ...}) = 0
getcwd("/home/mtm/picoLisp", 128)   = 19
mmap(NULL, 2113920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 
0) = 0x7fab3867

mprotect(0x7fab38672000, 2097152, PROT_NONE) = 0
mmap(0x7fab38872000, 12288, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fab38872000

close(3)= 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 2884 detached
-

The same version of PL works fine on CentOS 6.2 x64,
so maybe that's not PL issue.
If you have no idea about it at the moment, there is no big trouble, I 
can just migrate to CentOS.


Regards,
Mansur

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


Re: Structuring a GUI project to avoid stop - starts

2012-03-06 Thread Alexander Burger
Hi Konrad,

> If I'm understanding this correctly the simple way to do this is to
> put the logic for each page in its own file. so instead of (de report
> ..) I would have a report.l file that just contains the guts of what
> I'm coding.

Right.

The family demo program is not a good example for that, as it puts for
simplicity everything into a single file, and uses functions for each
object GUI frame instead of external files.


A better example is the "app/" demo. All our production apps follow this
layout. There is a "main.l" which loads the system libraries, contains
some global definitions, and loads app-specific "er.l", "lib.l" and
"gui.l" files. These files change rarely after the first version of the
application is done.

But if the model in "er.l" changes, it is better to stop the server,
delete the database files, and start again (resulting in the execution
of the init code). This is easier than doing the model changes
in-memory, and editing the database to reflect the new structures.

When "lib.l" (general utility functions) and "gui.l" (the menu structure
dialogs, and other GUI related functions) change, I simply enter (load
"xxx/lib.l") in the REPL. Or I use (edit 'foo) followed by a (ld).

90 percent of the application code resides in object GUI forms (e.g. in
the "app/" demo these are "role.l", "user.l", "sal.l", "cusu.l",
"item.l" and "ord.l") and other pages (most typically reports or special
actions like data im- and exports). For these files, nothing at all has
to be done. I just reload the page in the browser.

To keep some context in such files, I often use 'once' to avoid repeated
code execution. Other 'load'ed code takes care to avoid repeated effects
by using 'push1' instead of 'push' (as in e.g. "lib/form.l" and
"socialshareprivacy/lib.l") and similar measures. In that way I try to
organize each file (except "er.l") in such a way that it can be
re-loaded at any time.


> Reloading model.l is not really an issue for me. Besides at the moment
> if it does change ir porably means that the underlying database also
> needs to be nerfed and recreated becasue I've made large changes to
> the the entity structures. THough this is not likely at this stage

Exactly.

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


Re: Construct sequences of URL-Strings - need help

2012-03-06 Thread Thorsten
Alexander Burger  writes:

Hi Alex,

> isn't this what you mean?
>
>(de replaceUrlWildcard (U W)
>   (let Y (split (chop U) "*")
>  (glue " "
> (mapcar
>'((X) (pack (car Y) X (cadr Y)))
>W ) ) ) )
>
>(replaceUrlWildcard
>   "http://software-lab.de/doc/ref*.html";
>   '("A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P"
>  "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" ) )
>
>-> "http://software-lab.de/doc/refA.html 
> http://software-lab.de/doc/refB.html ...
>
> Side note: Though the result of 'pack' is the same, I would recommend
> (cadr Y) instead of (cdr Y), to reflect the result of 'split'.
>
>
>> An external program reads the URL's like this:
>> 
>> ,--
>> | (setq UrlStrings_ref (prin "\"" (replaceUrlWildcard U_ref W_ref) "\""))
>
> If you use 'print' instead of 'prin' here, you don't need to supply the
> double quotes yourself:
>
>: (print "abc") 
>"abc"-> "abc"
>
> gives the same _output_ as
>
>: (prin "\"" "abc" "\"")
>"abc"-> "\""
>
>
>> Yes, I don't where these 4  quotes come from - do they have a
>> special
>> meaning in Picolisp? I don't remember ... 
>
> If the reader sees two double quotes in sequence, it returns NIL
> (representing the empty string)
>
>: (list "a" "" "b")
>-> ("a" NIL "b")
>
> Therefore,  read as two NILs
>
>: (list "a"  "b")
>-> ("a" NIL NIL "b")
>
> which in turn disappear in the 'pack'
>
>(pack '("a" NIL NIL "b"))
>-> "ab"


just for the record, this from your PM:

   ,--
   | (de replaceUrlWildcard (U W)
   |(let Y (split (chop U) "*")
   |   (mapcar
   |  '((X) (pack "\"" (car Y) X (cadr Y) "\""))
   |  W ) ) )
   `--

and then: 

   ,---
   | (apply call
   |(replaceUrlWildcard Uxxx Wyyy)
   |"pandoc"  "-s" "-S"  "-o" "/home/tj/picolisp-ref.org" )
   `---

did the job perfectly - thanks.

-- 
cheers,
Thorsten

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