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
orivej has joined #picolisp
orivej_ has quit [Read error: Connection reset by peer]
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 258 seconds]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
orivej_ has quit [Ping timeout: 246 seconds]
orivej has quit [Ping timeout: 240 seconds]
razzy has joined #picolisp
freemint has quit [Quit: Leaving]
rob_w has joined #picolisp
mtsd has joined #picolisp
zillion has joined #picolisp
zillion has quit [Ping timeout: 245 seconds]
zillion has joined #picolisp
<Nistur> mornin' all
zillion has quit [Ping timeout: 245 seconds]
<mtsd> Hello Nistur
<mtsd> Hello everyone else too
zillion has joined #picolisp
* Nistur gives mtsd a cookie
zillion68 has joined #picolisp
<beneroth> morning Nistur, hello mtsd :)
* Nistur passes out a cookie to beneroth too
zillion has quit [Ping timeout: 245 seconds]
<Nistur> I'll be out of cookies at this rate
<mtsd> Thanks Nistur :)
* beneroth is happy
<Nistur> :P
<beneroth> Nistur, no worries, clients send the cookies back, usually :P
<Nistur> ;)
zillion68 has quit [Remote host closed the connection]
<Regenaxer> Hello all
orivej has joined #picolisp
<razzy> Hello all
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
<aw-> hi
<aw-> Regenaxer: when I call (close *Sock) on a TCP socket, it returns the FD number to confirm it was closed, but it still appears in /prod/<pid>/fd/; what could cause that?
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
<aw-> they appear to be in CLOSE_WAIT 19328/picolisp status
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
<Regenaxer> Hi aw-! Hmm, no idea atm
<Regenaxer> Is the other side still connected
<aw-> hmm indeed, other side disconnected
<Regenaxer> and still in /proc ?
<aw-> i do (close *Port) and then (close *Sock)
<Regenaxer> yes, close *Port can be earlier
<Regenaxer> it is only for listening I think
<Regenaxer> If you connect again, do you get the same socket fd again? I would expect so
<Regenaxer> You could also call shutdown()
<Regenaxer> I don't call it in pil, but in httpGate I do iirc
<Regenaxer> Still strange, I would expect the fd to disappear from /proc after closing it
<aw-> no, different socket fd each time
<Regenaxer> I see
<Regenaxer> yeah, must be, if still in /proc
<beneroth> Nistur, haha nice one
<aw-> OK Regenaxer that gave me an idea
<aw-> thanks
<aw-> i might have fixed it
<Regenaxer> Ah, cool! How?
<aw-> i copied the code from misc/chat
<aw-> i realized the code after the (loop) was occuring in the child, so i adjusted my code to work that way
<Regenaxer> ok
<Regenaxer> Does the fd disappear from /proc then?
<Regenaxer> So it was the parent
<Regenaxer> that still had it open?
<aw-> yes
orivej has quit [Quit: No Ping reply in 180 seconds.]
<aw-> it was the parent that had the sockets open
<Regenaxer> Good, makes sense
<aw-> just poorly coded ;)
<Regenaxer> Happens :)
<aw-> i copy your example and it works as intended haha
<aw-> ok maybe now I'll release this
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
razzy has quit [Quit: Connection closed]
orivej has quit [Ping timeout: 256 seconds]
orivej_ has joined #picolisp
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
orivej has joined #picolisp
rob_w has quit [Remote host closed the connection]
<beneroth> aw-, awesome, very nice!
orivej has quit [Ping timeout: 256 seconds]
cyborg_ar has quit [Ping timeout: 260 seconds]
cyborg_ar has joined #picolisp
<aw-> ;)
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #picolisp
mtsd has quit [Quit: Leaving]
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej_ has quit [Ping timeout: 260 seconds]
rob_w has joined #picolisp
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
razzy has joined #picolisp
razzy has quit [Ping timeout: 240 seconds]
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej has joined #picolisp
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
<Regenaxer> aw-: Thanks for publishing picolisp-kv ! :)
<beneroth> absolutely
<beneroth> I actually thought before that pilDB might offer itself as an alternative Redis implementation
<beneroth> but my Redis understanding is rather superficial
razzy has joined #picolisp
<beneroth> s/offer/lend
<razzy> hi i have trouble makinch changes in pil21 and|or compilling lastest version. when compiling lastest version it says https://www.heypasteit.com/clip/0IUSK8
<razzy> i will read logs to check even late answers
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
zillion has joined #picolisp
orivej has joined #picolisp
orivej_ has quit [Ping timeout: 264 seconds]
razzy has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
zillion has quit [Remote host closed the connection]
zillion has joined #picolisp
zillion has quit [Remote host closed the connection]
orivej has quit [Read error: Connection reset by peer]
orivej has joined #picolisp
razzy has joined #picolisp
razzy has quit [Client Quit]
razzy has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #picolisp
orivej has quit [Ping timeout: 246 seconds]
bitmapper has joined #picolisp
<bitmapper> how is pil21 doing?
<Regenaxer> Progressing ... :)
<Regenaxer> razzy: No idea what this error means
<razzy> Regenaxer i will continue to explore pil21
<Regenaxer> ok, good
<razzy> Regenaxer, question unrelated to posted error: I was trying to modify src and i was unable to compile even with slightest changes
<Regenaxer> Hmm, yes, it is not simple
<Regenaxer> You must know how the source maps to the llvm architecture
<Regenaxer> ssa (static single assignment)
<razzy> any good literature?
<Regenaxer> I have all my knowledge from this single reference: https://llvm.org/docs/LangRef.html
<razzy> Regenaxer and file to start with in /pil21/src ?
<razzy> thx.
<Regenaxer> src/lib/llvm.l is the compiler, it generates llvm from the sources. The sources are all loaded by loading src/main.l
<Regenaxer> in src/main.l you see other (load ...)s
<Regenaxer> So I must say that I cannot explain easily how to write pil21 sources
<Regenaxer> they are *not* picoLisp, same syntax but different semantics
<razzy> i was under the impression that pil21 is at least partially building itself
<Regenaxer> It is completely building itself
<razzy> why are you saying that sources have different semantics
<Regenaxer> PicoLisp sources map to cells and symbols
<Regenaxer> Pil21 sources map to ssa items
<Regenaxer> statically assigned values
<razzy> um, i will think about it
<Regenaxer> Let me try to find a simple example
<Regenaxer> in main.l:
<Regenaxer> (de NIL bye ((i32 . N))
<Regenaxer> (unless (val $InBye)
<Regenaxer> (set $InBye YES)
<Regenaxer> (unwind null)
<Regenaxer> ...
<Regenaxer> 'bye' is then a label in the binary
<Regenaxer> 'unless' generates a jump instruction
<Regenaxer> (val $InBye) is a load from a global
<Regenaxer> and (set $InBye is a store
<Regenaxer> then 'unwind' is called
<Regenaxer> To understand it, you must look at main.l and base.ll at the same time
<Regenaxer> base.ll contains the source statements as comments
<Regenaxer> The above is:
<Regenaxer> define void @bye(i32) {
<Regenaxer> $1:
<Regenaxer> ; # (unless (val $InBye) (set $InBye YES) (unwin
<Regenaxer> %1 = load i1, i1* @$InBye
<Regenaxer> br i1 %1, label %$3, label %$2
<Regenaxer> ; # (val $InBye)
<Regenaxer> $2:
<Regenaxer> ; # (set $InBye YES)
<Regenaxer> store i1 1, i1* @$InBye
<Regenaxer> ; # (unwind null)
<Regenaxer> call void @unwind(i8* null)
<Regenaxer> So the above pil21 soure directly maps to the *.ll source
<razzy> i will think about it. afk, empty battery
razzy has quit [Quit: Connection closed]
<beneroth> Regenaxer, +Aux relations with some of the aux'ed properties being NIL is fine, correct?
<Regenaxer> yes, the values
<Regenaxer> They may also be set or cleared later
<Regenaxer> The index will always be updated accordingly
<beneroth> good
<beneroth> because I have here some properties which would make sense to have a +Ref on, but I find an index on every property a bit much. so I +Aux them together according to their usual use (they have a strong but not strict relation)
<Regenaxer> ok if they have a natural order
<Regenaxer> like (date time)
<beneroth> hmmm
<beneroth> +Number and +Link
<Regenaxer> So the index is sorted by number
<beneroth> +Link: a rather static number of objects
<Regenaxer> if you don't know the number you must traverse the whole tree
<beneroth> the alternative would be to have +Ref indexes for each of them
<Regenaxer> yeah
<beneroth> the range of values for both is rather small
<Regenaxer> but these indexes are smaller each
<beneroth> T
<beneroth> right
<beneroth> well the number of objects with this properties is huge
<beneroth> but the indexed values are just low two digit count
<Regenaxer> So perhaps index only the link, and simply search for the number in the results?
<beneroth> there is certainly also a business need to find all objects with a certain number irrespective of the link
<Regenaxer> slower but smaller :)
<beneroth> but usually the query would be for both
<Regenaxer> with known number?
<beneroth> yeah
<beneroth> all with number 7
<beneroth> or all with Link {XX}
<Regenaxer> ok, then +Aux is perfect
<Regenaxer> The second is not possible then
<Regenaxer> or all with Link {XX}
<beneroth> both number or link might be missing, but only for a very small number of records (new ones)
<beneroth> ok
<beneroth> so two separate indexes
<Regenaxer> I think this is easiest
<beneroth> and when we want to query with number and link, then we use select/3
<beneroth> simplest for sure :)
<Regenaxer> right
<beneroth> thanks for your advice :)
<Regenaxer> The best would be +Aux +Ref +Number with link PLUS just the indexed link
miskatonic has joined #picolisp
<Regenaxer> then all 3 ways can be searched directly
<Regenaxer> fastest but biggest
<beneroth> Regenaxer, ah you mean (foo (+Ref +Link)) and (bar (+Aux +Ref +Number) (foo)) ?
<Regenaxer> yes
<Regenaxer> searches only number, number + link, and link only
<beneroth> will do that
<beneroth> yeah perfect
<beneroth> each an optimal BTree
<Regenaxer> Not so very big I think
<Regenaxer> yeah
<beneroth> and even so, it's okay
<beneroth> storage and RAM should not be an issue
<Regenaxer> perfect :)
<beneroth> it's small values, so small entries, just many of them :)
<beneroth> but not string indexing or such :)
<Regenaxer> right, number indexing is fast
<Regenaxer> i.e. number comparisons
<beneroth> it all boils down to comparison of raw nums, technically, right?
<Regenaxer> yes
<beneroth> just in case of strings, pretty quickly this will be technicall bignums (chained)
<Regenaxer> ideally short nums
<beneroth> so short string, short values, short nums :)
<beneroth> +Link are short anyway
<Regenaxer> yes, still strings are compared by characters
<Regenaxer> nums in a single piece
<beneroth> okay
<Regenaxer> short ones
<beneroth> of course
<Regenaxer> bignums are expensive too
<Regenaxer> comparison must start at the tail (most significant words)
<beneroth> well this one should replace a previous (badly programmed) application which was quite slow (just because of bad programming)
<Regenaxer> good, then no problem ;)
<beneroth> aye
<beneroth> only bad thing is
<beneroth> as of now I use a simple forking server without keeping session processes around, so not much of caching in pil ram
<beneroth> this I will change asap after initial version
<Regenaxer> ok
<beneroth> I guess that will make a huge difference, but I guess/hope the initial version will be good enough even with one-shot forking architecture
<Regenaxer> Perhaps use a server without forking at all?
<beneroth> yes that is the plan
<beneroth> fixed number of workers
<Regenaxer> if not many acccesses in parallel
<beneroth> not many probably, maybe a few dozen users at the same time, at least initially
<beneroth> maybe more later
<beneroth> one process per core :-)
<beneroth> or a few more, in case they're waiting on IO
<Regenaxer> I experimented with non-forking server some time age. Single process only: http://ix.io/2pmm
<beneroth> hehe
<beneroth> good cache usage :)
<Regenaxer> yes
<beneroth> yeah maybe one should start this way
<Regenaxer> The file is from Dec 2008
<beneroth> and then add processes whenever some slowness could be seen
<beneroth> though IO could make it busy
<Regenaxer> T
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Read error: Connection reset by peer]
orivej_ has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej has quit [Ping timeout: 264 seconds]
orivej has joined #picolisp
orivej has quit [Quit: No Ping reply in 180 seconds.]
orivej has joined #picolisp
orivej_ has joined #picolisp
orivej has quit [Ping timeout: 264 seconds]
rob_w has quit [Ping timeout: 258 seconds]
rob_w has joined #picolisp
rob_w has quit [Remote host closed the connection]
orivej_ has quit [Ping timeout: 256 seconds]
Nistur has quit [*.net *.split]
DerGuteMoritz has quit [*.net *.split]
casaca has quit [*.net *.split]
aw- has quit [*.net *.split]
elioat has quit [*.net *.split]
lodsw has quit [*.net *.split]
bitmapper has quit [*.net *.split]
masak has quit [*.net *.split]
patrixl has quit [*.net *.split]
twelvemonkeys has quit [*.net *.split]
libertas has quit [*.net *.split]
anddam has quit [*.net *.split]
f8l has quit [*.net *.split]
pointfree has quit [*.net *.split]
Regenaxer has quit [*.net *.split]
anjaa has quit [*.net *.split]
root____ has quit [*.net *.split]
emacsomancer has quit [*.net *.split]
mario-goulart has quit [*.net *.split]
ChanServ has quit [*.net *.split]
Blukunfando has quit [*.net *.split]
inara has quit [*.net *.split]
miskatonic has quit [*.net *.split]
tankf33der has quit [*.net *.split]
michelp has quit [*.net *.split]
viaken has quit [*.net *.split]
joebo has quit [*.net *.split]
twelvemonkeys has joined #picolisp
miskatonic has joined #picolisp
inara has joined #picolisp
Blukunfando has joined #picolisp
masak has joined #picolisp
bitmapper has joined #picolisp
tankf33der has joined #picolisp
anddam has joined #picolisp
libertas has joined #picolisp
patrixl has joined #picolisp
casaca has joined #picolisp
root____ has joined #picolisp
Regenaxer has joined #picolisp
anjaa has joined #picolisp
joebo has joined #picolisp
lodsw has joined #picolisp
Guest92206 has joined #picolisp
DerGuteMoritz has joined #picolisp
aw- has joined #picolisp
viaken has joined #picolisp
Nistur has joined #picolisp
ChanServ has joined #picolisp
elioat has joined #picolisp
pointfree has joined #picolisp
_whitelogger has joined #picolisp
miskatonic has quit [Quit: ERC (IRC client for Emacs 24.5.1)]
patrixl has quit [Ping timeout: 246 seconds]
patrixl has joined #picolisp