ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Picolisp latest found at http://www.software-lab.de/down.html | check also http://www.picolisp.com for more information
shpx has joined #picolisp
shpx has quit [Client Quit]
karswell has quit [Remote host closed the connection]
karswell has joined #picolisp
rob_w has joined #picolisp
mtsd has joined #picolisp
karswell has quit [Remote host closed the connection]
karswell has joined #picolisp
jibanes has quit [Ping timeout: 240 seconds]
jibanes has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
Nistur has quit [Ping timeout: 256 seconds]
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
Nistur has joined #picolisp
mtsd has quit [Remote host closed the connection]
mtsd has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<tankf33der> hi all
<tankf33der> Regenaxer: here ?
<Regenaxer> yes
<tankf33der> this is task from you.
<tankf33der> archlinux works, centos7 no output.
<tankf33der> cant understand why.
<tankf33der> hm
<tankf33der> archlinux pil32 and pil64 works
<tankf33der> centos 7 pil32 and pil64 no output.
<Regenaxer> Strange
<tankf33der> each process eats cpu, but no output.
<Regenaxer> There are no special system calls, only locking in dbSync
<Regenaxer> Can you debug? Single-step and or trace?
<Regenaxer> Debug first one of the processes, then the other
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<tankf33der> openbsd works.
<Regenaxer> Look with debugger
<Regenaxer> no guessing
<Regenaxer> That's what a debugger is for ;)
<Regenaxer> Set a '!' breakpoint after (fork)
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<aw-> tankf33der: hi
<aw-> Regenaxer: hi
<tankf33der> hi all
<Regenaxer> yes, hi tankf33der :) and hi aw-!
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<aw-> Regenaxer: can you suggest a better way to write this:
<aw-> (make
<aw-> (for (L Mylist L)
<aw-> (link (cons (pack (pop 'L)) (pack (pop 'L)) ) ) ) )
<aw-> where Mylist is something like '(a b c d e f g)
<Regenaxer> (++ L)
<aw-> oh yes i keep forgetting ++
<Regenaxer> :)
<Regenaxer> Mapping functions cannot used due to the 2-steps, so 'for' is fine
<Regenaxer> 'cut' might be considered
<aw-> yes i tried various mapping functions..
<aw-> (cut 2 Mylist) ?
<Regenaxer> (pack (cut 2 'L))
<Regenaxer> or cons
<Regenaxer> Is 'pack' needed?
<aw-> no it's not
<aw-> that was just in my example
<Regenaxer> ok
<Regenaxer> 'cut' produces a little more garbage than '++'
<aw-> right
<aw-> ok thanks
orivej has quit [Ping timeout: 265 seconds]
mtsd has quit [Remote host closed the connection]
mtsd has joined #picolisp
styx has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
styx has quit [Quit: styx]
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
orivej has joined #picolisp
mtsd has quit [Read error: Connection reset by peer]
mtsd has joined #picolisp
<tankf33der> Regenaxer:
<tankf33der> with debugger you meant this one?
<tankf33der> # First process
<tankf33der> (! (seed *Pid)) # Ensure local random sequence
<tankf33der> (unless (fork)
<tankf33der> i see this:
<tankf33der> ((seed *Pid))
<tankf33der> 2942 SIG-11
<tankf33der> !
<Regenaxer> A littl different: (! seed *Pid)
<Regenaxer> or better: (! unless (fork)
<Regenaxer> and then step into it using (d)
<Regenaxer> Just the seed call is probably not interesting
<Regenaxer> hmm wait
<Regenaxer> (! unless is before the fork, so it debugs both children
<Regenaxer> then better stop at (! loop and go down
<Regenaxer> Debugging both children is not good because both stop in the repl and you don't know which keystroke goes where
<tankf33der> (loop (let (B1 (pickBucket) B2 (pickBucket)) (dbSync) (let (V1 (; B1 val) V2 (; B2 val)) (cond ((> V1 V2) (dec> B1 'val) (inc> B2 'val)) ((> V2 V1) (dec> B2 'val) (inc> B1 'val)))) (commit 'upd)))
<tankf33der> ! 437 264 954 450 469 35 181 453 268 411 79 623 541 701 685 -- Total: 6551
<tankf33der> hangs
<tankf33der> cant enter anything
<tankf33der> yes, i dont understand what i doing.
<Regenaxer> Where do these numbers come from? They are not part of the code
<Regenaxer> next stop after (loop will be (let
<Regenaxer> then (dbSync) etc
<Regenaxer> always going down into subexpressions
<Regenaxer> ! 437 264 ... can't be
<Regenaxer> 437 is not a function
<tankf33der> this is what i see
<tankf33der> here
<Regenaxer> It stopped at (loop ?
<Regenaxer> Then you entered (d) ?
<Regenaxer> at the ! prompt
<Regenaxer> Then ENTER to continue, will stop at the next break at (let
<Regenaxer> I'm surprised you never used the debugger. It is the main workhorse for such debugging
mtsd has quit [Remote host closed the connection]
mtsd has joined #picolisp
mtsd has quit [Client Quit]
sriram_ has joined #picolisp
<sriram_> Hi..continuing my questions about lib/pdfPage.l. My recollection from the other day is that misc/pdfPage.l does not use svg> +PdfPage
<sriram_> but today ...reading lib/pdfPage.l drawpage: (de drawPage () (inc (:: cnt)) (csDrawImage (sesId (pack "!mk.svg?" (ht:Fmt This (: cnt)))) ....
<sriram_> i.e drawPage calls mk.svg
<Regenaxer> Hi sriram_!
<sriram_> mk.svg is defined as (de mk.svg (Page) (httpHead "image/svg+xml" 0) (ht:Out *Chunked (svg> Page (; Page zoom))) )
<sriram_> Hi Regenaxer!
<sriram_> so mk.svg calls svg> +PdfPage
<Regenaxer> Iirc the issue was html>
<Regenaxer> it is not called here
<sriram_> thats true
<sriram_> html> calls svg> and so I thought both html> and svg> are not used
<sriram_> but I guess html> is unused but svg> is used?
<Regenaxer> looks like
<sriram_> also what is the significance of naming some methods with a . e.g mk.svg or fonts.svg
<Regenaxer> These are functions to be used as URLs, in the form "!mk.svg"
<Regenaxer> Some browsers look at the extension to determine the type
<Regenaxer> mime type
<sriram_> ok..also a little puzzled by the naming...the code uses a canvas element
<sriram_> but uses svg> methods....but a <svg> html is not being used...if i understand correctly?
<Regenaxer> What do you mean with canvas?
<sriram_> misc/pdfPage.l creates a <canvas> element rather than an <svg> element?
<Regenaxer> An <svg> *element* is not needed
<Regenaxer> It generates SVG *code*
<Regenaxer> to be sent to some renderer
<Regenaxer> The canvas is only for drawing in the browser
<sriram_> (digesting :) )
<sriram_> so the output of svg> is not used for drawing on the canvas?
<Regenaxer> no, it is the draw> method, using no svg
<tankf33der> hang.
<sriram_> but draw> calls drawPage which calls mk.svg which calls svg>
<sriram_> (de drawPage () (inc (:: cnt)) (csDrawImage (sesId (pack "!mk.svg?" (ht:Fmt This (: cnt)))) ....
<sriram_> (de mk.svg (Page) (httpHead "image/svg+xml" 0) (ht:Out *Chunked (svg> Page (; Page zoom))) )
<Regenaxer> No, it does not *call* it
<sriram_> true
<Regenaxer> it makes a link to "!mk.svg?"
<sriram_> it gives it mk.svg as a parameter (but for what purpose)
<Regenaxer> T
<Regenaxer> tankf33der, right, so it seems a lock problem
<Regenaxer> (dbSync)
<Regenaxer> 'lock' or 'dbSync' are not covered by the unit tests
<sriram_> as far as i can see, csDrawImage sets the src of the canvas to be (sesId (pack "!mk.svg?" (ht:Fmt This (: cnt)))
<Regenaxer> yes, the Img soure argument
<Regenaxer> So you are right
<sriram_> right in what way?
<Regenaxer> At the bottom the canvas is filled with an image generated by SVG
<Regenaxer> Now I remember
<Regenaxer> This is necessary
<sriram_> at the bottom?
<Regenaxer> all drawing must be done in the same way
<Regenaxer> bottom of the code
<Regenaxer> all drawing must be done with exactly the same method
<tankf33der> Regenaxer: archlinux works, maybe centos problem
<Regenaxer> otherwise we don't get WYSIWYG
<Regenaxer> tankf33der, ok
<Regenaxer> you could test manually with 'ctl'
orivej has quit [Ping timeout: 240 seconds]
<Regenaxer> In one terminal (ctl "file" (key))
<Regenaxer> And in a second one also
<Regenaxer> or just (ctl "file") in the second
<Regenaxer> second will hang until you type any key in the first
<sriram_> drawPage calls csDrawImage with two parameters (more than two but I am puzzled about these 2).
<sriram_> Param 1: (sesId (pack "!mk.svg?" (ht:Fmt This (: cnt)))
<sriram_> Param2 : a list of drawing commands
<sriram_> drawPage sets param 1 to image src
<sriram_> and calls renderCanvas on the second parameter
<Regenaxer> T
<sriram_> no svg is used in the rendercanvas, they are just commands like csDrawRect etc
<Regenaxer> drawPage calls csDrawImage with 4 params
<Regenaxer> with Img X Y and Lst
andyjpb has joined #picolisp
andyjpb has quit [Client Quit]
<sriram_> yes, i did not mention X and Y
<sriram_> or even dX and dY
<Regenaxer> yes, but omitted here
<sriram_> correct
<sriram_> i am puzzled by how the src argument works....and why svg> is needed when renderCanvas already drew the canvas
<Regenaxer> The browser fetches the image from the server
<sriram_> ah so a dynamic url is created and stored
<sriram_> for that session
<Regenaxer> yes
<Regenaxer> Where did you find renderCanvas?
rob_w has quit [Remote host closed the connection]
<Regenaxer> ah
<Regenaxer> in .js, yes
<sriram_> if (cmd[4]) renderCanvas(cvs, cmd[4]);
<sriram_> yes
<Regenaxer> T
<sriram_> thats what puzzling me ...the whole "framework"... the rendercanvas draws the list and also constructs an url
<sriram_> is the canvas updated immediately then?
<Regenaxer> yes, because drawPage is called by draw>
<Regenaxer> which is called by drawCanvas which triggers itself
<Regenaxer> either periodically or when needed
<sriram_> ok...so the canvas is drawn by rendercanvas and a url is stored in the canvas image src field. so now if i click on the canvas, that url is invoked?
<Regenaxer> It is invoked whenever the browser needs to refresh the view
<Regenaxer> so also upon mouse clicks, yes
<Regenaxer> # Draw (drawCanvas Id Dly)
<Regenaxer> # Click (drawCanvas Id Dly 1 X Y)
<Regenaxer> # Double (drawCanvas Id Dly 2 X Y)
<Regenaxer> # Start (drawCanvas Id Dly 0 X Y X2 Y2)
<Regenaxer> # Move (drawCanvas Id Dly -1 X Y X2 Y2)
<sriram_> and for this it does not suffice to save the list that was used to render the canvas, but svg> is used to update the canvas
<Regenaxer> The list is not saved I think, as it may change all the time
<Regenaxer> (drawPage) is called whenever something happens
<Regenaxer> or something was changed
<sriram_> the "url" consists of session id, !mk.svg and a count
<Regenaxer> T
<sriram_> not sure how this is used though to update the image (sorry for the long questions)
<tankf33der> Regenaxer: will you add lock and dbSync to tests ?
<Regenaxer> tankf33der, this is difficult I think, that's why I omitted them
<Regenaxer> Or do you see a way?
<Regenaxer> With forking processes, and checking their wait behavior
<tankf33der> dbsync with and without forks.
<Regenaxer> timeouts etc
<Regenaxer> yes
<tankf33der> but it will always success
<Regenaxer> I'm not sure how to really test this
<Regenaxer> sriram_, no problem!
<Regenaxer> When the browser wants to update the image, it calls the URL. Very simple
<sriram_> ok... so the first time, a url is generated, and the image is drawn on the canvas
<sriram_> from then on, on any interaction with canvas, mouse click etc, the the url is called, which uses svg> +PdfPage to generate the output
<Regenaxer> in fact each time, but always the same URL
<sriram_> so essentially svg commands are being used to draw on the canvas element
<sriram_> and also (in addition to url), draw> +PdfPage is also being called by drawCanvas periodically to update the canvas element
<Regenaxer> yes, an on mouse clicks
<Regenaxer> not periodically in *this* application
<sriram_> that is what i think is puzzling to me.....both draw> and svg> methods are used to update canvas
<Regenaxer> svg> generates only SVG code, which is used by the browser to fill into th canvas as an image
<Regenaxer> The browser expects an image from the url
<Regenaxer> When it calls it, it receives SVG code
<Regenaxer> ok as an image for the browser it seems :)
<sriram_> yes, but draw> explicitly draws the image on the canvas using csDraw commands, so why are both ways needed
<Regenaxer> draw> is called first
<Regenaxer> only if it calls (drawPage) the rest happens
<Regenaxer> for example while dragging, (drawPage) is *not* called
<Regenaxer> only the dragged object is drawn into the canvas directly
<sriram_> ah good...on a click though drawPage is called
<Regenaxer> yes, looks like
<sriram_> on a click, the dots and the selected rectangle are drawn and the url is updated (based on : cnt)
<Regenaxer> dragging does call (drawPage) too, it seems, but only if the zoom was changed (?)
<sriram_> thats right, and in the default case, none of the above also drawPage is called
<Regenaxer> not zoom but scrolling
<Regenaxer> (: cnt) is only needed to force the browser to fetch the new image
<sriram_> perhaps this may help clarify for me..
<Regenaxer> otherwise it caches it, regardless of no-cache etc
<sriram_> on a clock, drawPage is called, which draws the dots and the selected rectangle if any, the image url is updated
<sriram_> and then.....what happens next is unclear
<sriram_> (i mean on a click :) )
<Regenaxer> on top level drawCanvas is called, not drawPage
<Regenaxer> it may be periodically or on events
<sriram_> ok..yes, drawCanvas was called on the mouse click, and the url was updated, the image was drawn explicitly by drawPage
<Regenaxer> T
<sriram_> but when is the image url used then? i.e when is the svg> method used. I am thinking that when there is an event that does not call drawPage to generate a new url, or does not explicitly draw on the canvas?
<sriram_> perhaps when csPost is called?
<sriram_> or does that result in a call to drawCanvas
<Regenaxer> csPost is needed to POST back to the server
<Regenaxer> it does an XmlHttpRequest to the server
<Regenaxer> post() function in JS
<tankf33der> at the same time misc/stress.l works on centos
<Regenaxer> tankf33der, right, stress.l uses a lot of locking
<tankf33der> the same dbsync-commit pair
<tankf33der> maybe ulimit on my centos
<Regenaxer> hmm, then it would rather crash if it were some ulimit
<tankf33der> the difference stress fork-do-steps-bye
<tankf33der> in atomic fork work in loop
<Regenaxer> tankf33der, so you think too many processes?
<tankf33der> in atomic only several
<tankf33der> in stress 40
<Regenaxer> T
<tankf33der> did you try atomic on your linux server ?
<tankf33der> and why archlinux works.
<Regenaxer> No, I did not try this code now
<Regenaxer> I suppose I did when I wrote it
<sriram_> i am thinking the svg> is used when the entire image needs to be redrawn (what events cause this?) otherwise portions of it are redrawn (e.g drawPage or draw>) using direct csXXX calls
<sriram_> hence the need for two different pieces of code
<Regenaxer> Hmm, I don't see two different pieces (?)
<sriram_> well...by two different pieces I meant svg> which draws whole canvas as image using svg commands, and drawPage, or draw> which use individual canvas.js commands e.g csDrawRect to draw on canvas
<Regenaxer> It is always drawCanvas -> draw> -> drawPage -> "!mk.svg?"
<sriram_> but drawPage draws on canvas directly too (e.gcsDrawDots) if i am not misunderstanding
<Regenaxer> drawPage only *passes* these commands in the Lst
<sriram_> yes...and renderCanvas does the drawing of the list
<sriram_> is it not?
<Regenaxer> yes
<Regenaxer> drawPage runs on the server
<Regenaxer> and the SVG is ran in the client JS
<Regenaxer> no
<sriram_> ?
<Regenaxer> the csXXX is running in the client JS
<sriram_> yes, as canvas.js commands
<Regenaxer> T
beneroth has joined #picolisp
<sriram_> so there are two paths for drawing on canvas...as an image in its entirety, or by individual renderCanvas js commands
<sriram_> yes?
<Regenaxer> yes
<beneroth> hi :)
<Regenaxer> Hi beneroth! :)
<sriram_> beneroth> hi...:)
<sriram_> thats what i was meaning by the two different pieces...the code in the server has two different options to draw in the client
<Regenaxer> hmm, but csDrawImage is also just a csXXX command
<sriram_> via svg, and via renderCanvas. I was thinking the former is used only when the entire image needs to be drawn, otherwise the latter is used to make minor updates e.g font changes
<Regenaxer> I think it is always completely drawn, only not at interactions like dragging
grp has joined #picolisp
<Regenaxer> (drawPage) is called by draw> only when necessary
<Regenaxer> depending on the changes of contents
<Regenaxer> but then always all is redrawn
<sriram_> all is redrawn by the url you mean? even if the url is not updated by drawPage, since drawPage is not called?
<Regenaxer> by (drawPage)
<Regenaxer> (drawPage) draws the page ;)
<sriram_> :) yes...but drawPage is not called in some cases, so in those cases, only a portion of the image is drawn?
<Regenaxer> yes, via a call to the server URL
<Regenaxer> I think only the dragged rectangle and such things
<Regenaxer> interactions which do not go into the final result
<sriram_> ah I understand now...temporary interactions
<Regenaxer> yes
<sriram_> now I understand why you felt there is only one (dominant) mechanism
<Regenaxer> it is only called by draw> whenever necessary
<sriram_> always all is redrawn (via drawPage) unless it is an intermediate step
<Regenaxer> a user interaction would be too slow if it would redraw all the time
<Regenaxer> yes
<Regenaxer> eg a click always redraws
<Regenaxer> first clause in the cond
<sriram_> yes
<Regenaxer> ((gt0 F) # Click
<Regenaxer> But drag does not always
<sriram_> drawPage just draws the dots and the selected rectangle
<sriram_> and the ruler
<Regenaxer> yes, passed in Lst
<Regenaxer> right
<Regenaxer> all these are not part of the resulting document
<Regenaxer> They are below or on top of the document data
<Regenaxer> not sure which one
<tankf33der> Regenaxer: what was the test for lock for cygwin ?
<sriram_> but drawPage does not draw all the rectangles that are on the canvas, just the selected one
<tankf33der> maybe centos is broken
<Regenaxer> you can use a DB and (lock) or easier (ctl ...)
<Regenaxer> Is Centos not a Linux?
<tankf33der> redhat based
<tankf33der> linux
<Regenaxer> OK
<tankf33der> modern, wide used, bla-bla
<Regenaxer> :)
<sriram_> was wondering why drawPage does not draw all rectangles that are on the canvas, instead it just draws : sel
<Regenaxer> yes, cause (: sel) is not part of the document
<Regenaxer> The other rects are there
<sriram_> oh i see...so drawPage just draws what is not there in the document
<Regenaxer> Not "draws" but passes in the Lst
<Regenaxer> ok
<Regenaxer> it draws in this sense
<sriram_> the image will be drawn first by the updated url, and then the extra items passed in the list will be drawn by renderCanvas?
<sriram_> or perhaps other way around
<sriram_> no...i think i understand now
<sriram_> when the src field is set, the url is used at that time to draw the image from the url
<Regenaxer> ok :) It gives the source to JS, so it is not clear when it is drawn
<sriram_> and then later the list commands are handled by renderCanvas
<Regenaxer> right
<Regenaxer> Might well be that JS handles this in parallel
<Regenaxer> draws while the image is loading (fetched)
<sriram_> yes, but so should just keep in mind that csDrawImage results in the url being fetched (svg> executed to draw permanent portion of image) and the Lst commands processed by renderCanvas to show temporary portions.
<sriram_> At the end of csImageDraw the composite image is visible on canvas
<Regenaxer> yep
<sriram_> ok good! thanks, I have a much better understanding now...will go back to source..thanks a lot :)
<Regenaxer> great :)
<Regenaxer> I'm away for a while
alexshendi has joined #picolisp
alexshendi has quit [Read error: Connection reset by peer]
jibanes has quit [Ping timeout: 256 seconds]
jibanes has joined #picolisp
<beneroth> tankf33der, problems with pil on CentOS ?
<beneroth> I'm interested. I'm planning a deployment on CentOS / RedHat servers later this year.
karswell has quit [Read error: Connection reset by peer]
<tankf33der> beneroth: what is your current os for pil?
<beneroth> debian and ubuntu
<tankf33der> run this on ubuntu:
<tankf33der> and debian
<tankf33der> it should print lines of digit until Ctrl-C
<tankf33der> lines of digits
<tankf33der> archlinux works
<beneroth> Ubuntu 14.04.5 LTS: works. Total is always 7321, correct?
<beneroth> well different total per run, but always same total during one run
<Regenaxer> tankf33der: Works on Android, prints lines like 43 81 751 659 553 583 632 728 856 101 659 912 254 579 159 -- Total: 7550
<Regenaxer> Here total is always 7550
Regenaxer has left #picolisp [#picolisp]
<tankf33der> beneroth: ok, debian?
<beneroth> wrong Ctrl+ C :P
Regenaxer has joined #picolisp
<Regenaxer> oops
<Regenaxer> Depends on the seed
<beneroth> tankf33der, Debian 7.11: appears to get stuck after 5 or a few more lines of output :O
<beneroth> 3 processes sleeping, 1 reading
<tankf33der> aha, like centos
<beneroth> not stuck, strace shows stuff going on
<beneroth> ah yes, just slow
<beneroth> 777 213 647 296 668 287 793 925 439 791 247 594 707 372 522 -- Total: 8278
<beneroth> 0 0 0 0 0 0 0 8278 0 0 0 0 0 0 0 -- Total: 8278
<beneroth> 195 195 196 196 195 195 195 5544 195 195 195 196 194 196 196 -- Total: 8278
<beneroth> before the middle line, it got stuck for long
<beneroth> 49 48 49 49 49 49 49 2573 51 4681 436 49 49 48 49 -- Total: 8278
<beneroth> 0 0 0 0 0 0 0 2779 0 5141 358 0 0 0 0 -- Total: 8278
<beneroth> 0 0 0 0 0 0 0 909 0 7369 0 0 0 0 0 -- Total: 8278
<tankf33der> its ok
<beneroth> then it got faster
<beneroth> weird
<beneroth> what are your thoughts on this?
<Regenaxer> Yes, timing differs
<beneroth> pil 17.12.30
<Regenaxer> Running here both on Android and Debian
karswell has joined #picolisp
<Regenaxer> here 18.6.11 both
<beneroth> which debian version, Regenaxer ? prolly newer here, eh
<Regenaxer> (today! ;)
<beneroth> I mean you probably have the newer debian, too?
<Regenaxer> Buster
<Regenaxer> ie Debian testing
<Regenaxer> with some things from Sid
<beneroth> and your debian has sytemD, I guess?
<beneroth> weird
<tankf33der> maybe kernel?
<Regenaxer> yes
<beneroth> nice idea with (seed *Pid) :)
<Regenaxer> Still running both, no hang
<tankf33der> archlinux always prints with same speed
<tankf33der> 4.16 kernel
<Regenaxer> Hmm, Android hangs now
<Regenaxer> ah, no
<Regenaxer> just took time
<beneroth> ubuntu (worked) kernel: 3.13.0-106-generic
<Regenaxer> yes, Debian with constant speed
<Regenaxer> but not Android
<beneroth> debian (problem) kernel: 3.2.0-5-amd64
<Regenaxer> I insert a time print
<Regenaxer> (let Lst (collect 'key '+Bucket) # Get all buckets
<Regenaxer> (println (- (time) (swap (0) (time))))
<Regenaxer> (for This Lst
<Regenaxer> ...
<Regenaxer> Prints the number of seconds (ignore first print)
<Regenaxer> Debian is between 0 and 6
<Regenaxer> Android is between 3 and 33
<beneroth> more background processes popping in and out of existence on android, I would guess
<beneroth> possible issue, or not?
<Regenaxer> Where should these processes come from? I don't observe such fluctuations in speed normally
<tankf33der> there is processes
<tankf33der> only huge number of locks between 3 forks
<tankf33der> if kernel 4.16 works then its not issue
<Regenaxer> Android is SELinux, perhaps locks are more expensive?
<tankf33der> tomorrow i will check centos 6
<tankf33der> and kernel 2.6
<tankf33der> and will check selinux on centos 7
<tankf33der> good idea
<Regenaxer> BTW, with Android 7 I'm no longer allowed to make hardlinks in my *own* directory !! :(
<tankf33der> no selinux on archlinux
<Regenaxer> Android gets more and more restrictive
<beneroth> wow
<tankf33der> and strange that stress works on centos 7
<tankf33der> its the same idea
<Regenaxer> yeah
<Regenaxer> Gives wrong results if locks don't work
<tankf33der> beneroth: misc/stress.l
<beneroth> tankf33der, thx
<beneroth> 13jan16abu is fine?
<Regenaxer> Yes, parts relevant here did not change I think
<tankf33der> yea
<beneroth> ubuntu:
<beneroth> 1 2 (1233 . 1203)
<beneroth> {3} (999 . {642}) dat +A {1}
<beneroth> user1m56.425s
<beneroth> real2m21.810s
<beneroth> {3} (999 . {735}) key +A {1}
<beneroth> sys3m30.727s
<beneroth> (I put time before the command)
<Regenaxer> Looks good
<beneroth> whats the output?
<beneroth> ah output from cmp
<Regenaxer> It is (dbCheck) and timings
<beneroth> oh
<Regenaxer> Without locks (dbCheck) fails
<beneroth> hopefully :D
karswell has quit [Ping timeout: 256 seconds]
<Regenaxer> For sure :)
<Regenaxer> 40 processes modifying the same few data
<beneroth> nice
<beneroth> running it on the debian now
<Regenaxer> misc/stress.l exists with minor modifications since pil has a DB
<Regenaxer> It complained a while until I had the IPC and locking right :)
<beneroth> :)
<beneroth> test-driven development, good :)
<Regenaxer> exactly
<beneroth> debian passes, too
<beneroth> the one which looks weird when running atomic.l
<beneroth> tankf33der, so similar to your centos
<Regenaxer> The code looks good, doesn't it?
<Regenaxer> atomic
<tankf33der> code is good
<Regenaxer> T
<beneroth> so something wrong with the turtle underneath it :(
<Regenaxer> But as 'val' has no index, not so very many things are modified
<Regenaxer> indexes involve more db changes
<beneroth> so different I/O behaviour?
<Regenaxer> just more
karswell has joined #picolisp
<Regenaxer> And dbCheck *has* something to check, ie the consistency of the trees
<Regenaxer> as done in stress.l
<Regenaxer> Total sum is also a good check thougf
<Regenaxer> though
karswell_ has joined #picolisp
orivej has joined #picolisp
karswell has quit [Ping timeout: 256 seconds]
grp has quit [Quit: box shutting down...]
alexshendi has joined #picolisp
sriram_ has quit [Quit: Page closed]
alexshendi has quit [Read error: Connection reset by peer]
freemint has joined #picolisp
freemint has quit [Ping timeout: 256 seconds]
styx has joined #picolisp
gfdsm has joined #picolisp
styx has quit [Ping timeout: 256 seconds]