jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.5, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
n01 has joined #lisp
<margaritamike> Any emacs plugins commonly recommended by the CL community for auto complete and documentation and whatnot?
m0w has quit [Ping timeout: 250 seconds]
<margaritamike> Or does SLIME just have everything I will ever need pretty much for experimental programming?
wusticality has joined #lisp
<Xach> slime is good
wusticality has quit [Ping timeout: 268 seconds]
<jasom> margaritamike: the most used non-slime emacs package I've seen used for lisp is paredit, though I prefer adjust-parens to paredit myself.
<margaritamike> I see I see :)
<margaritamike> I will probably start with SLIME
<margaritamike> If I can write a plugin to use this library in elisp to parse Kattis problems for common lisp, it will be very useful :)
<Xach> paredit is very nice
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
zmv is now known as notzmv
wusticality has joined #lisp
isBEKaml has joined #lisp
edcragg has joined #lisp
wxie has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
isBEKaml has quit [Quit: WeeChat 2.3]
xkapastel has joined #lisp
dale has quit [Quit: dale]
shifty has joined #lisp
mrcom has quit [Read error: Connection reset by peer]
<pfdietz> Is ilisp still a thing? I used that for years.
mrcom has joined #lisp
<Xach> that is a good question
<Xach> i used it for a year or so
Jahnertz has joined #lisp
jack_rabbit_ has quit [Ping timeout: 260 seconds]
Jahnertz has quit [Read error: Connection reset by peer]
ober has joined #lisp
Jahnertz has joined #lisp
<Xach> it kept getting out of sync with lisp, for me. i was using a new and weird implementation at the time.
buhman has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #lisp
buhman has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
FreeBirdLjj has quit [Ping timeout: 250 seconds]
mhd2018 has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
iovec has quit [Quit: Connection closed for inactivity]
makomo has quit [Ping timeout: 250 seconds]
pjb has quit [Ping timeout: 252 seconds]
dale has joined #lisp
robotoad has quit [Quit: robotoad]
FreeBirdLjj has joined #lisp
robotoad has joined #lisp
Essadon has quit [Quit: Qutting]
dtornabene has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
Lord_of_Life has quit [Ping timeout: 245 seconds]
sjl_ has quit [Ping timeout: 244 seconds]
Lord_of_Life has joined #lisp
wxie has quit [Ping timeout: 250 seconds]
space_otter has joined #lisp
kushal has quit [Remote host closed the connection]
kushal has joined #lisp
_whitelogger has joined #lisp
slyrus2 has quit [Ping timeout: 246 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
djeis[m] has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 240 seconds]
space_otter has quit [Remote host closed the connection]
scottj has joined #lisp
jkordani has quit [Read error: Connection reset by peer]
razzy has quit [Ping timeout: 250 seconds]
FreeBirdLjj has joined #lisp
Jahnertz has quit [Remote host closed the connection]
<beach> Good morning everyone!
FreeBirdLjj has quit [Ping timeout: 268 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
<LdBeth> Morning
<LdBeth> What do lispers use for email?
ober has left #lisp ["ERC (IRC client for Emacs 26.1)"]
n01 has quit [Ping timeout: 245 seconds]
m0w has joined #lisp
<buhman> I check hackernews everyday to make sure my ultra-edgy email client isn't too popular. I'm currently writing my own using an obscure esolang you've never heard of.
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
<LdBeth> S-Lang?
wigust has quit [Quit: ZNC 1.7.1 - https://znc.in]
vlatkoB has joined #lisp
space_otter has joined #lisp
<LdBeth> Seed7?
<notzmv> buhman: lmao
sauvin has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
mrcom has quit [Read error: Connection reset by peer]
Oladon has joined #lisp
mrcom has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
<buffergn0me> LdBeth: GNU Emacs something-or-other. I like mu4e.
<verisimilitude> I also just use Emacs.
<verisimilitude> I'd like to eventually read the RFCs and implement my own email software.
<buffergn0me> It would be nice to have a Common Lisp alternative to offlineimap/mbsync, esp considering that IMAP was first written in InterLisp. Too many projects...
rippa has joined #lisp
<verisimilitude> I'm of the opinion there's not many good reasons to use an FFI library if the program can be written in Common Lisp, buffergn0me.
<verisimilitude> It's simply ridiculous to on one hand praise Lisp and then use non-Lisp libraries for trivial things, although this varies.
<buffergn0me> verisimilitude: 100% agree
<verisimilitude> I've mentioned this before, but I was surprised to find that almost all CL libraries that enabled terminal manipulation were just bindings to Ncurses. The few that didn't weren't comprehensive enough to be much use.
<buffergn0me> That's not surprising. Video terminal control is extremely tedious to do, there are so many different terminals and control sequences and all kinds of exceptions and broken behavior
<verisimilitude> It made a nice slogan for the library I wrote, though: Risking memory leaks shouldn't be necessary to control a terminal.
<verisimilitude> I just target ECMA-48; the little termcap and terminfo games are just unnecessary.
<buffergn0me> verisimilitude: What is your library?
slyrus1 has joined #lisp
<verisimilitude> You may find it here: http://verisimilitudes.net/2018-04-04
<verisimilitude> It's still being developed, but I've been using it well.
dale has quit [Quit: dale]
<verisimilitude> Feel free to tell me what you think.
atgreen_ has quit [Ping timeout: 246 seconds]
Oladon has quit [Quit: Leaving.]
rnmhdn has joined #lisp
space_otter has quit [Remote host closed the connection]
Zelmin has quit [Ping timeout: 250 seconds]
<verisimilitude> On that note, I just noticed a bug the most recent change added that I'll be correcting.
<verisimilitude> It's just two lines I forgot to delete.
razzy has joined #lisp
Jahnertz has joined #lisp
atgreen_ has joined #lisp
grumble has quit [Killed (Sigyn (BANG!))]
dtornabene has quit [Quit: Leaving]
grumble has joined #lisp
FreeBirdLjj has joined #lisp
<phoe> LdBeth: I use Thunderbird. I'm lazy.
nanoz has joined #lisp
mrcom has quit [Quit: This computer has gone to sleep]
mrcom has joined #lisp
makomo has joined #lisp
_whitelogger has joined #lisp
nchambers has joined #lisp
elderK has joined #lisp
rnmhdn has quit [Ping timeout: 250 seconds]
pfdietz has quit [Ping timeout: 250 seconds]
pfdietz has joined #lisp
iovec has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
bendersteed has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #lisp
shifty has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
kajo has quit [Ping timeout: 272 seconds]
wusticality has quit [Ping timeout: 246 seconds]
<LdBeth> Good to know about these, thank you all
beach has quit [Ping timeout: 252 seconds]
random-nick has joined #lisp
beach has joined #lisp
mhd2018 has joined #lisp
shka_ has joined #lisp
pjb has joined #lisp
varjag has joined #lisp
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
wusticality has joined #lisp
Jahnertz has quit [Read error: Connection reset by peer]
nanoz has quit [Ping timeout: 250 seconds]
wusticality has quit [Ping timeout: 272 seconds]
nchambers has quit [Quit: WeeChat 2.2]
d4ryus has quit [Quit: WeeChat 2.3]
<phoe> Which implementations support extensible sequences? Is that SBCL only?
wigust has joined #lisp
d4ryus has joined #lisp
dmiles has quit [Ping timeout: 246 seconds]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
atgreen_ has quit [Ping timeout: 250 seconds]
Zaab1t has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
dmiles has joined #lisp
robotoad has quit [Ping timeout: 245 seconds]
orivej has joined #lisp
robotoad has joined #lisp
<jackdaniel> abcl too
robotoad has quit [Client Quit]
<phoe> Thanks.
yvy has joined #lisp
rnmhdn has joined #lisp
wusticality has joined #lisp
wusticality has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 250 seconds]
froggey has quit [Ping timeout: 272 seconds]
froggey has joined #lisp
elderK has quit [Quit: WeeChat 1.9]
rnmhdn has quit [Ping timeout: 246 seconds]
marvin2 has joined #lisp
wusticality has joined #lisp
akoana has joined #lisp
rnmhdn has joined #lisp
wusticality has quit [Ping timeout: 240 seconds]
shenghi has quit [Ping timeout: 246 seconds]
xkapastel has joined #lisp
shenghi has joined #lisp
themsay has joined #lisp
rnmhdn has quit [Ping timeout: 245 seconds]
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
themsay has quit [Read error: Connection reset by peer]
themsay has joined #lisp
FreeBirdLjj has joined #lisp
wxie has joined #lisp
razzy has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #lisp
FreeBirdLjj has quit [Ping timeout: 246 seconds]
FreeBirdLjj has joined #lisp
dddddd has quit [Ping timeout: 245 seconds]
varjag has quit [Ping timeout: 250 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
wusticality has joined #lisp
wusticality has quit [Ping timeout: 250 seconds]
FreeBirdLjj has joined #lisp
dddddd has joined #lisp
pfdietz has quit [Ping timeout: 250 seconds]
pfdietz has joined #lisp
makomo has quit [Ping timeout: 246 seconds]
lemoinem has quit [Read error: Connection reset by peer]
lemoinem has joined #lisp
hiroaki has joined #lisp
wxie has quit [Ping timeout: 250 seconds]
razzy has joined #lisp
robdog_ has joined #lisp
Essadon has joined #lisp
wusticality has joined #lisp
rnmhdn has joined #lisp
wusticality has quit [Ping timeout: 246 seconds]
atgreen_ has joined #lisp
Oddity has quit [Ping timeout: 240 seconds]
rnmhdn has quit [Ping timeout: 268 seconds]
wigust- has joined #lisp
rumbler31 has quit [Remote host closed the connection]
wigust has quit [Ping timeout: 250 seconds]
yvy has quit [Read error: Connection reset by peer]
yvy has joined #lisp
wusticality has joined #lisp
hiroaki has quit [Ping timeout: 244 seconds]
themsay has quit [Ping timeout: 268 seconds]
wusticality has quit [Ping timeout: 250 seconds]
isBEKaml has joined #lisp
makomo has joined #lisp
yvy has quit [Ping timeout: 244 seconds]
mhd2018 has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Mr-Potter has joined #lisp
pierpal has joined #lisp
robdog_ has quit [Remote host closed the connection]
Mr-Potter_ has joined #lisp
Mr-Potter_ has quit [Remote host closed the connection]
Mr-Potter has quit [Ping timeout: 250 seconds]
wusticality has joined #lisp
Oddity has joined #lisp
shifty has quit [Ping timeout: 246 seconds]
wusticality has quit [Ping timeout: 245 seconds]
robdog has quit [Ping timeout: 240 seconds]
Lord_of_Life_ has joined #lisp
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life_ is now known as Lord_of_Life
isBEKaml has left #lisp ["WeeChat 2.3"]
m0w has quit [Ping timeout: 244 seconds]
rnmhdn has joined #lisp
kushal has quit [Ping timeout: 256 seconds]
wusticality has joined #lisp
ceevusee has joined #lisp
wusticality has quit [Ping timeout: 268 seconds]
kushal has joined #lisp
Oladon has joined #lisp
ceevusee has quit [Ping timeout: 268 seconds]
RedNifre has joined #lisp
<RedNifre> sorry, what was the name for the lisp channel again?
<RedNifre> could somebody add it to the channel topic?
<sjl> verisimilitude: if you're going to suggest your library to people, you should mention its license on the page
<RedNifre> ah, it's ##lisp
<pjb> RedNifre: http://cliki.net/IRC
khisanth__ has quit [Ping timeout: 268 seconds]
rnmhdn has quit [Ping timeout: 272 seconds]
<iskander> hi guys, i have a question about uiop/image:argv0
<iskander> i'm debugging a LISP application which uses this function
<iskander> it works if run the executable
<iskander> but if i run the application inside Wmacs+SLIME, then it returns nil
<iskander> the LISP code uses uiop/image:argv0 to calculate some filesystem paths
<iskander> therefore, the application doesn't work correctly if run inside Emacs+SLIME if uiop/image:argv0 returns nil
<iskander> one workaround i found is to redefine uiop/image:argv0 inside the package uiop
<iskander> and make it return a correct path
<iskander> i was wondering is there a better way to handle this ?
<iskander> i'm new to LISP so that's why i'm asking, i googled it but couldn't find anything
<verisimilitude> I already do that with the cliki page, but I suppose I can make that change on my website as well, sjl, even though I figured people who cared would actually look at the license in the program, since that's the only one that legally matters.
RedNifre has quit [Quit: code code code]
<sjl> verisimilitude: sure, technically the only thing that matters is the one in the code, but it's still polite to let people know before they download it
khisanth__ has joined #lisp
<verisimilitude> That change has been made, sjl.
<sjl> Cool, thanks.
<verisimilitude> I appreciate your feedback.
nowhere_man has quit [Ping timeout: 252 seconds]
Oddity has quit [Ping timeout: 245 seconds]
ceevusee has joined #lisp
marvin2 has quit [Ping timeout: 245 seconds]
m0w has joined #lisp
ceevusee has quit [Remote host closed the connection]
grumble is now known as SeasonsGreetings
orivej has quit [Ping timeout: 272 seconds]
orivej has joined #lisp
orivej has quit [Ping timeout: 240 seconds]
atgreen_ has quit [Ping timeout: 268 seconds]
bars0 has joined #lisp
orivej has joined #lisp
emar has joined #lisp
rnmhdn has joined #lisp
khisanth_ has joined #lisp
varjag has joined #lisp
nowhere_man has joined #lisp
khisanth__ has quit [Ping timeout: 244 seconds]
Oddity has joined #lisp
atgreen_ has joined #lisp
varjag has quit [Ping timeout: 250 seconds]
atgreen_ has quit [Read error: Connection reset by peer]
<drmeister> My talk at the llvm developers meeting was posted on hacker news as a "Best talk 2018" - how nice!
varjag has joined #lisp
nowhere_man has quit [Ping timeout: 252 seconds]
makomo has quit [Quit: WeeChat 2.2]
* phoe gives applause
<phoe> I enjoyed listening to that
<phoe> iskander: oh right, I know why
<phoe> argv0 is only set after you deploy your application.
<phoe> iskander: are you trying to reach some resources relative to the Lisp binary?
<iskander> yes, the LISP application launches another application
<phoe> iskander: and the application is bundled with the deployed Lisp image, correct?
<iskander> right, the program is split into 2 applications communication via xml-rpc
<phoe> iskander: I believe people on #lispgames have found a solution to that - accessing assets from deployed application. But, basically: define a global variable that is set to false (default) if you are running from Slime.
<phoe> As a part of run hooks on your deployed application, set that variable to true.
<phoe> When you access the path to your application, if that variable is false, return a static path - something like "/usr/bin/foo/bar".
<phoe> If that variable is true, you can use argv0 and operate relative to that.
orivej has quit [Ping timeout: 272 seconds]
<iskander> that was also my idea to solve it :)
<phoe> Either do all of that, or try using Shinmera's Deploy system that automates this. https://github.com/Shinmera/deploy
<phoe> I think it had a solution to that problem somewhere
<phoe> If not, ask on #lispgames - I remember people dealing with that problem there to access game assets
<iskander> thanks
robotoad has joined #lisp
xkapastel has quit [Quit: Connection closed for inactivity]
<phoe> Hey people - I need some support with SPLIT-SEQUENCE because I don't understand the results it gives me.
<phoe> Could someone verify that they get the same results with the four SPLIT-SEQUENCE calls I've posted there? I might have messed up something on my end.
dddddd has quit [Remote host closed the connection]
<phoe> Oh yes - I messed up! I see it now.
nowhere_man has joined #lisp
<phoe> Still - setting :REMOVE-EMPTY-SUBSEQs causes the index returned by SPLIT-SEQUENCE to vary. I do not know if this is something intended - it certainly is not intuitive to me.
<pjb> Yes, I think the returned indices must change.
<phoe> To me, :COUNT 0 means that it might want to return immediately without doing any processing at all.
<pjb> for :REMOVE-EMPTY-SUBSEQs I don't know.
<pjb> I think it should change too.
<pjb> compare (split-sequence:split-sequence 'x '(1 2 3 x x 4 5 6 x x 7 8 9 x 10) :count 2 :from-end nil :remove-empty-subseqs t) with (split-sequence:split-sequence 'x '(1 2 3 x x 4 5 6 x x 7 8 9 x 10) :count 2 :from-end nil :remove-empty-subseqs nil)
Zaab1t has quit [Quit: bye bye friends]
m0w has quit [Ping timeout: 240 seconds]
<phoe> (split-sequence 0 #(0) :count 0) ;=> NIL, 0
<phoe> (split-sequence 0 #(0) :count 0 :remove-empty-subseqs t) ;=> NIL, 1
<pjb> Seems logical.
<phoe> Why does it do anything if :COUNT is zero?
<pjb> count is only the number of results, it doesn't change the behavior.
<pjb> So when count is 0, you could still get different parsing behavior depending on the other arguments, even if the main result is the same. But the index of parsed so far is different.
<phoe> I see.
<pjb> At least, there's some consistency. We've infered a consistent rule for :count.
<pjb> The docstring could be improved.
<phoe> pjb: could you suggest an improvement?
rnmhdn has quit [Ping timeout: 246 seconds]
<phoe> I'm ears-deep in code now and can't really think of docstrings. I could use some help with writing one.
<pjb> Saying that: count limits the number of subseqs in the main resulting list.
notzmv has quit [Ping timeout: 240 seconds]
<phoe> pjb: could I ask you to integrate that remark with the docstrings and the project's README.md, or is it too much for you at the moment?
<phoe> I actually think that README.md already mentions what you said.
<phoe> "The count argument, if supplied, limits the number of subsequences in the first return value; if more than count delimited subsequences exist in sequence, the count leftmost delimited subsequences will be in order in the first return value, and the second return value will be the index into sequence at which processing stopped."
marvin2 has joined #lisp
nchambers has joined #lisp
<iskander> quation about sbcl sockets: do i need to do something special to to handle fd events ? it seems that my xml-rpc server doesn't receive any data
<phoe> iskander: try using usockets instead?
<phoe> they're a simpler and cross-implementation wrapper over implementation-defined sockets
<iskander> :( s-xml-rpc uses sbcl sockets
<phoe> and a little bit higher-level
<phoe> oh
<phoe> ouch
<iskander> i think i need to call event loop somehow
<pjb> phoe: I'm not in maintainer mode on split-sequence.
<iskander> i see an open listeneing socket but i can't receive data
<phoe> pjb: I mean, you could comment on the issue I've made there.
<phoe> iskander: You could perhaps ask #sbcl for SBCL-specific support if no one here can answer.
<pjb> Oh, ok.
<iskander> already there :)
emar has quit [Quit: WeeChat 2.3]
_whitelogger has joined #lisp
bars0 has quit [Quit: leaving]
Jesin has joined #lisp
<phoe> <3
SeasonsGreetings is now known as SeasonsBeatings
<iskander> i need to call (sb-sys:serve-events) in a loop, i wonder how usocket does it
random-nick has quit [Ping timeout: 245 seconds]
<iskander> aha, usocket either creates a threads which executes socket function in blocking mode or just blocks in the current thread
<iskander> so basically the same
<phoe> iskander: or make a loop
<phoe> (loop (sb-sys:serve-all-events 0) (non-blocking-application-logic-here)
<phoe> )
<phoe> note that there is a timeout option there
<phoe> either use that kind of event loop, or go multithreaded
<iskander> that was my loop: (loop (sb-sys:serve-event)) but your loop looks nicer :)
<phoe> iskander: well, that is going to block
<phoe> serve-event without a timeout should block methinks
<phoe> also, you might want to put some very small timeout in there
<phoe> otherwise I guess you'll get a busy loop with 100% CPU usage
<iskander> serve-event without a timeout unblocks as soon as a socket becomes readable e.g.
<iskander> hmm, i'm currently running this loop, no cpu load
<iskander> i think serve-event w/o parameter just blocks until some socket becomes actibve and then unblocks, otherwise it sleeps
<iskander> if i call serve-event only once it blocks until i send something to socket
<iskander> i wonder how this works when LISP application is deployed, who calls thos event loop ?
shifty has joined #lisp
psqueak has joined #lisp
xkapastel has joined #lisp
<phoe> Oh - good
<phoe> there's no busy loop there.
<phoe> Basically - you need to call that event loop somewhere
<phoe> Unless your application is only driven when something comes to it from the external world, you need to be able to return control from the serve-event call to your own code
jsjolen has joined #lisp
<jsjolen> Early Christmas present: Common Lisp is available at Kattis now, https://open.kattis.com/help/lisp
<phoe> SBCL 1.4.5 is not the freshest, but nonetheless, yay!
m0w has joined #lisp
nchambers is now known as Rudolph
random-nick has joined #lisp
<phoe> Okay - the first draft of the SPLIT-SEQUENCE overhaul is done.
slyrus1 has quit [Quit: slyrus1]
<phoe> I'll need a *very* good review on that one.
<jsjolen> phoe: I *just* read the source of SPLIT-SEQUENCE. Why is an overhaul needed?
<phoe> jsjolen: aeth noticed quadratic behavior for lists.
<jsjolen> Aha
<phoe> And then I might have got a little bit carried away with refactoring and writing tests.
<phoe> The goal for the list parser I wrote was no unnecessary consing.
<jsjolen> A worthy goal :-)
<pfdietz> is it up somewhere for testing?
<phoe> pfdietz: I linked up my fork up there
<pfdietz> Ah I see
<phoe> I also wrote more tests for it, including a fuzzer.
<pjb> What about (gensym (string '#:length)) -> (make-symbol "length") we don't care here about |length42| or LENGTH42.
<pjb> phoe: check-bound walks a 1 million cells list when you want to split-sequences only :end 10 ?
<phoe> pjb: yep, it seems so.
<pjb> (when ,end (check-type ,end unsigned-byte "a non-negative integer or NIL")) This is wrong.
<pjb> (check-type ,end (or null unsigned-byte) "a non-negative integer or NIL") ; this does what it says.
<phoe> Yep
<phoe> Fixing it now
<pjb> You can write (remove nil '(a b nil c d) :test nil :test-not 'eql) #| --> (nil) |#
<phoe> pjb: What do you mean? Where?
<pjb> ie, test test and test-not, not test-p and test-not-p.
<pjb> check-test in api.lisp
<pjb> Well, called from split-sequence, etc.
<phoe> pjb: I don't get it.
Oladon has quit [Quit: Leaving.]
<pfdietz> Ran your tests with COVER enabled. SPLIT-VECTOR, SPLIT-VECTOR-IF, SPLIT-VECTOR-IF-NOT are not called.
<phoe> pfdietz: Huh? I wonder how that is possible.
hiroaki has joined #lisp
<pjb> this is wrong.
<phoe> SPLIT-SEQUENCE should call SPLIT-VECTOR if its argument is a vector.
<pjb> I would declare split-list-from-end split-list-from-start and -internal inline too.
<pfdietz> Ah, could be that inlining turns off the coverage.
<pjb> possibly.
<phoe> pjb: OK, I'll do that.
<phoe> pjb: why is it wrong though?
<pjb> (nreverse (copy-list list)) -> (reverse list) !
<pjb> because we should allow :test nil :test-not 'eql or :test 'eql :test-not nil
<phoe> pjb: oh right!
<pfdietz> There are two uncovered branches: SPLIT-VECTOR-FROM-START when COUNT is NIL, and SPLIT-LIST-INTERNAL when END is NIL.
<pfdietz> Excuse me, when COUNT is not nil
SeasonsBeatings is now known as SeasonsGreetings
<phoe> pfdietz: hm. The fuzzer should take that into account.
<pfdietz> ;+ :REACH (COVER::DEFUN SPLIT-SEQUENCE::SPLIT-VECTOR-FROM-START (SP <5>
<pfdietz> ; + :REACH (AND COUNT (>= SPLIT-SEQUENCE::NR-ELTS COUNT)) <20>
<pfdietz> ; - :EVAL-ALL (>= SPLIT-SEQUENCE::NR-ELTS COUNT) <23>
<pfdietz> ;+ :REACH (COVER::DEFUN SPLIT-SEQUENCE::SPLIT-LIST-INTERNAL (SPLIT- <11>
<pfdietz> ; - :EVAL-ALL (LENGTH LIST) <27>
<pfdietz> ; + :REACH (OR SPLIT-SEQUENCE::END (LENGTH LIST)) <24>
<phoe> pfdietz: I completely don't understand what you just posted
<pfdietz> That is output from COVER; the ; - lines are uncovered branches
<pjb> phoe: now, since we are nreversing or copying the whole list (again, copy-list -> subseq if you want want to optimize the 1e6-long list vs :end small, or something else to optimize :count small.), you could as well (coerce list 'vector) and use split-vector…
<pfdietz> In the first first case, it reached the (and count (>= ...)) expr, but never evaluated the second form in the and.
<phoe> pjb: I don't want to - coercing vectors to lists will cons.
<pjb> copy-list more.
<pjb> twice more.
<phoe> okay - I'm overwhelmed.
<phoe> Too much information at once.
<phoe> I cannot multithread like that.
Rudolph has quit [Quit: WeeChat 2.2]
<pjb> Of course, we have to be careful about the result, since then subseq would produce vectors while we'd want list (or not: I'd propose additionnal API to specify the type of results '(list list) '(list vector) '(vector list) or '(vector vector)…
<phoe> pfdietz: could you run the same tests against the original split-sequence? I copied this code from the original repository's master branch.
<phoe> My tests should work perfectly on the original code - if they don't, it's a bug.
<phoe> If that branch does not get called, it might be an issue with the original code.
<phoe> pjb: I do not want to change the API. SPLIT-SEQUENCE is very widely used and I don't want to risk changing the API while also refactoring its backend side.
<pjb> adding.
<phoe> Maybe in the future.
<pjb> ok.
<phoe> pfdietz: I'll look at the SPLIT-LIST-INTERNAL branch.
<pjb> So, for example, the inner split sequence could be a single optimized function working with a vector, and producing a vector of subseq positions.
<pjb> Then we can process this vector and vector of subseq positions to produce either the list of subvectors, or the list of sublists, in the most efficient way.
<phoe> pfdietz: SPLIT-LIST-INTERNAL sets END to (LENGTH LIST) if END is NIL.
<pfdietz> Ok, making things notinline and rebuilding causes better coverage, but more uncovered branches inside those previously uncalled functions.
<pfdietz> I'll push a branch up to github for you.
<pjb> The only case that wouldn't be covered by this optimization is the 0<<start or end<<length of list.
<phoe> pfdietz: a branch where?
lavaflow has quit [Ping timeout: 268 seconds]
<pfdietz> Hold on...
<pjb> There, you have a temp-space vs copying-time.
<pfdietz> Are the extended sequence functions tested?
<phoe> pfdietz: No, not yet. I have not tested that part.
<pfdietz> Ok, so they were not covered, which is correct.
<phoe> It is a copy of vector functions, except the sequence types have been changed.
<phoe> I would need to define an extended sequence for them, which I haven't yet done because I haven't been feeling brave enough for that.
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<pjb> phoe: for example, an option would be to provide displaced arrays for the subseqs. There's also nsplit-sequence.
<phoe> pjb: anyway, I don't understand. Right now, my list version should not cons anything beyond what it needs. Coercing a list into a vector and then coercing subvectors into lists conses up a whole intermediate vector that is unnecessary if we want lists as result types.
<phoe> So, actually, the list version conses less than the vector version.
<phoe> s/less/less intermediate data/
<pfdietz> The branch is called coverage
<pjb> phoe: if you (nreverse (copy-list list)) -> (reverse list), then in both case it will copy the whole list, and split it. In the from-end, it reverses the whole list, and it reverses the sublists. That's 1 copy and 3 or 4 walkings.
<pjb> And the copy uses cons which takes twice the space of vectors.
<phoe> pjb: I copy the list only once and then destructively split it into sublists. These sublists are then returned.
<pjb> Copying to vectors would be faster and use less memory.
<phoe> The list I get from REVERSE is destroyed and turned into output.
<pjb> And the spliting algorithm on vectors is faster.
<phoe> Sure, but the API returns lists and I will not change this at the moment.
<phoe> I don't want to take a step that's too big at once.
<pfdietz> The vector version could use displacement. :)
<pjb> For internal functions, since you already copy stuff, you can copy it to more optimized data structure for more optimized algorithms.
<phoe> Sigh, and here I thought that I improved over the existing code. Optimize one thing, another two pop up. Optimize two things, another four pop up. Optimize four things... :(
<pjb> :-)
<pjb> You can already push that; just take note of the ideas for future work.
<pfdietz> phoe: you could also use sb-cover, which is perhaps less intrusive.
<phoe> pjb: yes, except I cannot multithread like that. I am focusing on what I'm doing right now in code; I'm afraid that I will lose your ideas in the process.
<phoe> pfdietz: I'm merging your branch into my master right now.
<pjb> Just copy-and-paste the irc buffer, and later split it out into issues.
<pfdietz> Those package names, not good.
<phoe> pfdietz: I've merged your branch into my master.
<phoe> Once again - how do I run coverage on this?
<pfdietz> You push :split-sequence/cover to *features*.
<pfdietz> You recompile all the .lisp files, and load the fasls.
<pfdietz> Run the test suite.
<pfdietz> Then (cover:report)
<pfdietz> You need to have COVER loaded
<pfdietz> (ql:quickload :cover)
<pfdietz> That's all
<phoe> Ha
<phoe> I tried to (asdf:load-system :split-sequence :force t :verbose t)
<phoe> It didn't work.
<pfdietz> ?
<phoe> Okay
<phoe> It loaded
<phoe> cover:*line-limit*
<phoe> That is settable
<pfdietz> I just put in a ticket for COVER to not print those package names.
<phoe> I still don't know how to read this coverage report.
<phoe> I might be too spent to do that today.
<phoe> I've spent the whole day on rewriting all of this code. (:
<pfdietz> It's basically a list of branch points from the code.
<pfdietz> Did you run the tests?
<phoe> Oh
<phoe> One second
<pfdietz> Your report looks like nothing was run
meepdeew has joined #lisp
<phoe> I ran the tests
<phoe> I must have broken something
<pfdietz> Each line that starts with ; - is an uncovered branch point. There should be 14.
<phoe> I get the same report even after I run the tests
<pfdietz> I wonder if that caused all the functions to be recompiled. Or maybe an older versions of split-sequence is being loaded from elsewhere?
nowhere_man has quit [Read error: Connection reset by peer]
<pfdietz> Maybe just use sb-cover. It's more integrated with sbcl.
nowhere_man has joined #lisp
dddddd has joined #lisp
<phoe> pfdietz: could you download my fork's master branch?
<phoe> The report contains 20 points.
<phoe> Did I screw something up?
<pfdietz> Looks good here
<phoe> Huh
<phoe> What is your SBCL version?
<pfdietz> Different from what I did before, maybe you changed something...
psqueak has quit [Remote host closed the connection]
<phoe> Yes, I merged it with a commit or two I've made in meantime.
<phoe> So I might have screwed something up compared to your branch.
shka_ has quit [Ping timeout: 240 seconds]
<pfdietz> So, some differences in detail. 17 uncovered branch points (and anything hidden below those)
orivej has joined #lisp
vlatkoB has quit [Remote host closed the connection]
nowhere_man has quit [Ping timeout: 252 seconds]
orivej has quit [Ping timeout: 250 seconds]
<phoe> I need to pause for tonight. It's been a marathon, and I'm glad to have run it,.
<phoe> pfdietz: could you post your report?
<pfdietz> I did
<pfdietz> The earlier one, at least
<margaritamike> Is there an existing common lisp API for ecommerce
<phoe> margaritamike: what do you mean, ecommerce?
<pfdietz> That's the newer one (without package names on symbols)
mhd2018 has joined #lisp
<phoe> pfdietz: thanks.
<phoe> I am curious about the SPLIT-VECTOR calls. Can you run my tests against the old SPLIT-SEQUENCE code?
<phoe> Literally download the old SPLIT-SEQUENCE and replace the tests.lisp file with mine.
<pfdietz> Was that inlined? Because that screws up coverage.
<phoe> Uh. I have no idea.
<pfdietz> It's basically copying the code in and recompiling.
<phoe> Yes, I see.
<phoe> I'm a little bit lost.
<pfdietz> Having coverage on for a DEFMACRO has a similar behavior.
<pfdietz> The coverage points are introduced after the inlined lisp code is grafted in at the call site, so each inlined version of the function gets its own set of coverage points. I don;t know how sb-cover handles this.
psqueak has joined #lisp
<phoe> Well. Sounds like declaring everything notinline would help.
<phoe> I think everything over there is already declared notinline by your changes...
<phoe> Hang on, let me push a commit.
hiroaki has quit [Ping timeout: 244 seconds]
<phoe> pfdietz: please run coverage now. There should be two uncovered points less.
<phoe> pfdietz: one more commit. Should be three points less now.
<pjb> margaritamike: there are components, such as auth2 or soap. There's a library to parse some asn.1 (used in edifact and other ecommerce protocols). You might find also a few libraries for newer services such as paypal or stuff like that, but perhaps not in quicklisp. In anycase, nothing comprehensive or integrated all batteries included.
<pjb> margaritamike: So you've got here the opportunity to do something great.
troydm has quit [Ping timeout: 252 seconds]
Lycurgus has joined #lisp
nowhere_man has joined #lisp
<aeth> In case anyone is wondering where the code is, the link was a few hours and quite a few lines ago: https://github.com/phoe-trash/split-sequence
<phoe> aeth: thanks.
FreeBirdLjj has quit [Remote host closed the connection]
nchambers has joined #lisp
<aeth> phoe: The indentation seems messed up in list.lisp
<aeth> As in, it doesn't match what M-q gives
<phoe> aeth: one second
<phoe> Which line?
<aeth> Well that's weird, I pasted it and it does match
<phoe> welp
<aeth> Something still seems odd about that cond
shifty has quit [Ping timeout: 250 seconds]
<phoe> That cond has exactly three branches and they seem to align on my machine
<aeth> yeah
<phoe> pfdietz: I seem to have fixed coverage issues.
isBEKaml has joined #lisp
<phoe> (and used sb-cover instead of cover)
slyrus1 has joined #lisp
orivej has joined #lisp
_whitelogger has joined #lisp
<phoe> Fuck. #lisp hasn't been logged since October.
<phoe> pjb: please write down your notes for further improvement of SPLIT-SEQUENCE somewhere. I am too tired to do that right now in a sensible way.
<isBEKaml> phoe: Does the discord allow logging or connection to IRC?
<isBEKaml> I understand there's a discord server for Lisp that's currently active
<phoe> isBEKaml: there are bridges between Discord and IRC.
<phoe> I don't think the general consensus here is to bridge with Discord though.
<isBEKaml> phoe: bidirectional bridge? Or one-way?
<phoe> isBEKaml: no idea what you mean. One-way? Which way to what way?
<isBEKaml> If logging's allowed, I guess you could use discord purely for logging?
<isBEKaml> Discord admins can block users from writing to that bridged IRC channel?
<isBEKaml> Kinda like announcement channels on discord, where only admins can post
<no-defun-allowed> sounds like a way too convoluted way to just bring in another bot
<isBEKaml> dunno, man. We have way too many channels for communication :-)
<phoe> I'd rather bring back the old logging bot
<isBEKaml> slack, discord, irc, matrix.... uff
<phoe> so all the logs stay in one place and are dumped into text files
<nchambers> whitequark's bot is a pretty good logbot
<isBEKaml> botbot.me also does that quite well for rust
<isBEKaml> I think admins need to register this channel
varjag has quit [Quit: ERC (IRC client for Emacs 26.1)]
nchambers is now known as Rudolph
isBEKaml has quit [Quit: WeeChat 2.3]
Oladon has joined #lisp
<phoe> we already have a bot
<phoe> someone just needs to bring it back here after the channel was put on mandatory +R
jsjolen has quit [Read error: Connection reset by peer]
troydm has joined #lisp
<phoe> Okay. I've done it.
dogenpunk has quit [Ping timeout: 250 seconds]
khisanth_ has quit [Ping timeout: 250 seconds]
Rudolph has quit [Quit: WeeChat 2.2]
khisanth_ has joined #lisp
<aeth> There are three log bots for #lisp
<aeth> one of them still works
<aeth> *at least one of them
<aeth> It's the CCL one that has problems
<aeth> phoe: The one of the three that I'm aware of that's the most reliable is also the one of the three that isn't in the topic. https://irclog.tymoon.eu/freenode/%23lisp
m0w has quit [Ping timeout: 252 seconds]
<phoe> woah!
phoe changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.4.14, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
<phoe> there - this should be much better.
<aeth> phoe: Perhaps create a page on cliki for #lisp log websites and link to that so it's never stale and always complete and doesn't take too much of the topic?
<aeth> (Well, a table would probably be better, since these sites log more than one channel.)
<phoe> aeth: please do it. I'm too tired today to visit cliki.
<phoe> CLiki is freely editable, so you will have no trouble.
* phoe evaluates (sleep (* 60 60 8))
<phoe> good night, #lisp
<phoe> thanks for the support
<no-defun-allowed> night phoe
random-nick has quit [Read error: Connection reset by peer]
slyrus1 has quit [Ping timeout: 240 seconds]
SlashLife has quit [Ping timeout: 252 seconds]
SlashLife has joined #lisp
pierpal has quit [Ping timeout: 244 seconds]
SlashLife has quit [Excess Flood]
SlashLife has joined #lisp
SlashLife has quit [Excess Flood]
SlashLife has joined #lisp
SlashLife has quit [Excess Flood]
m0w has joined #lisp