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.
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?
<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!
<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.
<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)
<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
<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
<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.
<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.
<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.
<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
<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]