freenode/lisp - IRC Chatlog
Search
15:47:52
bobross
phoe: After some fiddling the error stops when not using '(usocket:socket-close socket)' on the client, and the request can be read by looping read-byte
15:49:24
bobross
Yep I agree. I would have thought you could read a "TCP message" completely with a single command?
15:50:27
phoe
I think there might be some sort of weirdness happening if you pull the carpet from under cl+ssl while it does its work - that's why I suggested first closing the tls-stream and then closing the socket stream
15:53:25
bobross
Still getting the same error in that case. But from how I interpret the documentation https://common-lisp.net/project/cl-plus-ssl/ the stream should be closed automatically
15:55:45
bobross
TwoNotes: so since it is a byte stream it is not possible to "read the single TCP message" without reading byte by byte and detecting the end of the message?
15:56:49
phoe
ultimately, TCP is a stream protocol, meaning that you get a stream of bytes instead of a stream of messages
15:57:11
phoe
that's different than e.g. UDP, where each packet is its own message, or SCTP, which has a concept of messages.
16:00:41
phoe
when working with raw TCP sockets and nonetheless doing messaging over the stream, usually you read whatever you can and then check if you can "pop" a complete message off the stream
16:01:19
phoe
if you do so, you copy it from the buffer, send into the system, and flush the buffer to remove the already processed bytes
16:01:39
TwoNotes
protocols built on top of TCP define their own 'message' boundaries. Some use prefix byte counts
16:02:10
bobross
So what you mean is that I create in Lisp a "buffer" (e.g. array), read byte by byte, stop at some point, convert the message to e.g. string, then handle it?
16:02:55
TwoNotes
Yes. Just remember that when you start doing that, the end of your 'message' may not have yet arroived over the stream.
16:03:25
TwoNotes
A TCP impolementation that delivers data to you two bytes ata time is perfectly valid.
16:03:58
bobross
Right, but they are guaranteed to be in the correct order due to the protocol right?
16:09:20
bobross
Thank you both very much. Btw I get an error when trying (read-line ...) https://bin.privacytools.io/?043fafaff2b73aab#hGRcZWXG7y/LsZvbrlBxJAr2aRkQWeOS7c8qPxjxON4=
16:12:44
bobross
I will try a similar approach to read-line-crlf in https://github.com/cl-plus-ssl/cl-plus-ssl/blob/master/example.lisp I guess
16:15:32
phoe
https://github.com/cl-plus-ssl/cl-plus-ssl/blob/2b823f11ec69f32ebb94bb96031682009374d4f7/test.lisp#L181
16:20:18
phoe
you could try passing :external-format '(:utf-8 :eol-style :crlf) to the created stream and use characters/strings
16:20:20
bobross
I'm trying to implement a Gemini server following the protocol, which says all headers must be UTF-8
16:20:59
bobross
Oh I see. I will try that later, thank you! Really need to go to walk my dog. I might drop by later.
16:51:59
rogersm
On windows, .dll files should be put in one of the directories listed in the PATH environment variable.
17:25:23
bobross
phoe: Reading/writing through the TLS stream seems to work using ":external-format '(:utf-8 :eol-style :crlf)" as you suggested!
17:58:54
emacsomancer
for SBCL compiled binaries, what is the source of a "Can't find core file relative to ...." error?
18:04:47
max3
"a Symbol identifying the kind of expression. A symbol is an interned string identifier (more discussion below)."
18:18:00
axion
We wanted all of our game algorithms in one repository/system, so there is only a single system now.
18:18:15
pjb
minion: memo for beach: quicksort optimization (branchless Lomuto partitioning): https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubble-sorts-comeback.html
18:22:53
axion
There was a backwards-incompatible change with all my Quicklisp releases anyway, in that I adopted reverse domain name notation for system/package names, now that PLN is widespread enough, as some of my systems and packages were rather generic and not fair to the ecosystem and Lisp image
19:00:35
emacsomancer
maybe related to the "can't find file relative to core..." errors, does uiop:run-program expect a full path (for a compiled binary)? [e.g. is (uiop:run-program "bash") ok, or should it be (uiop:run-program "/usr/bin/bash") ? ] - I would have assumed it would just check the relevant $PATH
19:15:13
phoe
wait a second though - could you paste the full error along with the stacktrace anywhere?
19:16:38
emacsomancer
phoe: I'm getting reports from someone else, so this is all I have currently: http://dpaste.com/0PNDSZ8
19:17:27
emacsomancer
(I'm still wondering if asdf:progam-op shouldn't be sufficient - e.g. next browser (which is relatively complex with a number of moving pieces) builds everything with asdf:progam-op)
19:19:54
emacsomancer
when I build and run on my own system, they run find, no matter where I run them from
20:13:31
bobross
phoe: Another update... Successfully managed to load a file with an external Gemini client now :D
20:27:14
_death
hmmm.. define-modify-macro in the clhs takes a parameter named "function" which is a symbol.. but I don't see anything saying it should be the name of a function.. since it shows an equivalency I claim it should work with names of other kinds of operators as well, say (define-modify-macro andf (&rest args) and) .. apparently the message introducing d-f-m ( http://cl-su-ai.lisp.se/msg05411.html ) uses that name and it's just been kept
20:27:15
_death
as-is.. I don't yet understand the define-setf-expander ("define-setf-method") example there btw..
20:30:42
bobross
Will do! I am planning to make the source code available when I feel it's in a good state... Will let you know at that point
20:43:40
Bike
_death: the define-setf-method thing seems to be defining a destructurer. like (let (x y) (setf (cons x y) (list 1 2 3)) (values x y)) => 1, (2 3)
20:48:41
_death
that makes sense.. but what functionality does get-destructuring-backquote-setf-method give (as opposed to get-setf-method/expansion) .. maybe it's more like (setf `(,x ,y) ...) ?
20:51:30
pfdietz
Xach: I will deal with that finalize-inheritance problem in sel within the next couple of days. It's problematic.
20:56:55
_death
Bike: I guess it was still not exposed.. it's a good question whether get-destructuring-backquote-setf-method is actually get-setf-expansion
21:38:35
scymtym
lessandro`: the channel topic has links to multiple websites with logs. one is https://irclog.tymoon.eu/freenode/%23lisp
21:44:22
pve
hi, is something like #\Newlin|e| allowed syntax? (it works on sbcl and gives #\Newline)
21:50:58
phoe
"When the token x is more than one character long, the x must have the syntax of a symbol with no embedded package markers. In this case, the sharpsign backslash notation parses as the character whose name is (string-upcase x)"
21:56:25
phoe
oh right, if I understand correctly, then the \ in #\Newline is re-interpreted as a single escape
3:20:48
minion
beach, memo from pjb: quicksort optimization (branchless Lomuto partitioning): https://blog.reverberate.org/2020/05/29/hoares-rebuttal-bubble-sorts-comeback.html