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]