ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: https://irclog.whitequark.org/picolisp/ | Check also http://www.picolisp.com for more information
freemint has joined #picolisp
freemint has quit [Remote host closed the connection]
freemint has joined #picolisp
freemint has quit [Ping timeout: 260 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 260 seconds]
aw- has joined #picolisp
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 244 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 260 seconds]
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
<tankf33der> 10B bigtest loop was very optimistic from me
<tankf33der> stopped after 20h run.
<Regenaxer> 10B ?
<tankf33der> 10 billion
<Regenaxer> ah
<Regenaxer> I made about 60 runs
<tankf33der> wrong it was 32h run. i think its ok
<tankf33der> wrong, it was 32h run.
freemint has joined #picolisp
freemint has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 260 seconds]
<beneroth> Regenaxer, how does lock synchronize over multiple processes? tell mechanism? or via db file?
freemint has joined #picolisp
freemint has quit [Ping timeout: 260 seconds]
aw- has quit [Ping timeout: 256 seconds]
<Regenaxer> No, it is a feature of the Unix file system
<Regenaxer> fcntl(2)
<Regenaxer> It is called file record locking
<beneroth> ah, I see
<Regenaxer> So lock itself does not synchronize
<beneroth> right (lock) is just a fcntl on the root file?
<Regenaxer> not only the root
<beneroth> I mean the (lock) function, not write lock during (commit)
<Regenaxer> It depends on the arg to (lock)
<Regenaxer> yes
<Regenaxer> It may lock one given object in one file only
<beneroth> how so?
<Regenaxer> (dbSynv) locks the root file though
<beneroth> aye
<Regenaxer> (lock '{AB123})
<beneroth> but (lock 'sym) locks.. just one file?
<Regenaxer> yes
<beneroth> still using fcntl?
<beneroth> ok
<Regenaxer> yep
<beneroth> but still the whole file
<Regenaxer> no
<beneroth> not block level
<beneroth> ?
<Regenaxer> no, it is block
<beneroth> fcntl can lock on block level?
<Regenaxer> fcntl takes a start and end byte
* beneroth does man fcntl 2
<Regenaxer> F_SETLK, F_SETLKW, and F_GETLK
<beneroth> I see!
<beneroth> makes sense
<beneroth> great
<Regenaxer> a good mechanism
<beneroth> absolutely, very useful for databases of any kind
<Regenaxer> which cygwin never got right afaik
<Regenaxer> Let alone Java or WebAsm ;)
<beneroth> it still operates on the fd, so it is kinda a cooperative lock insofar as it requires all processes to share the same fd (so be forked from each other) ?
<Regenaxer> Not necessarily
<Regenaxer> only the same file
<beneroth> you know it doesn't apply to webasm because all storage is on trusted servers via API (server from google, that is...)
<Regenaxer> but it is cooperative, yes
<Regenaxer> not mandatory
<Regenaxer> ah, I see
<beneroth> I mean two processes started completely independently from each other
<Regenaxer> never really looked at WebAsm ;)
<Regenaxer> yes, that is fine
<Regenaxer> Pil needs sister processes only for 'tell'
<beneroth> webasm is probably still trying to get locale storage working.. but no good solution available yet, afaik (besides cookies)
<beneroth> Regenaxer, I mean the fcntl lock is only known to processes using the same fd, so not independent processes which happen to open the same file...
<beneroth> or do I misunderstand?
<Regenaxer> It works also for independent processes
<Regenaxer> They open the file individually
<beneroth> ok, I see
<Regenaxer> I never did that though
<beneroth> never got into that sizes=
<beneroth> ?
<beneroth> block-level locking might be interesting to scale pilDB up to huge sizes
<beneroth> or more like, concurrent writing
<beneroth> but then separate cooperative instances is probably easier and more robust
<Regenaxer> You experimented with that iirc
<beneroth> in my head, never put it in practice
<beneroth> :P
<Regenaxer> The instances may use some tell via named pipes
<beneroth> haven't had the need yet
<beneroth> T
freemint has joined #picolisp
<beneroth> bbl
orivej has joined #picolisp
<freemint> TIL: Some old Lisps had GOTOs which are totally irritating to read.
<Regenaxer> yeah, in the PROG body
<Regenaxer> The pil21 source lang has 'goto' too
<freemint> You are right, i didn't notice that, in my defense th complete function was one big prog
<Regenaxer> Those old Lisps had for flow control only COND, PROG + GOTO, and recursion
freemint has quit [Ping timeout: 260 seconds]
orivej has quit [Ping timeout: 260 seconds]
freemint has joined #picolisp
emacsomancer has quit [Read error: Connection reset by peer]
<tankf33der> i did it
<tankf33der> even so i found bug in pil21 bigint
<tankf33der> >> is broken.
emacsomancer has joined #picolisp
<tankf33der> http://ix.io/2lzV
<tankf33der> FYI
<tankf33der> + is also broken
<tankf33der> http://ix.io/2lzZ
<tankf33der> afk.
karswell has quit [Ping timeout: 246 seconds]
<beneroth> thanks tankf33der :)
<Regenaxer> Cool! I'll check. Thanks tankf33der!
<Regenaxer> Right, '>>' does not return 0
<Regenaxer> and '+' gives wrong value
<Regenaxer> Can reproduce, will debug during the next days
<Regenaxer> Great help! :)
orivej has joined #picolisp
aw- has joined #picolisp