CrashTestDummy2 has quit [Ping timeout: 252 seconds]
CrashTestDummy3 has joined #commonlisp
zacts has joined #commonlisp
<recordgroovy>
I've read how to add a library to Quicklisp, and it seems pretty straightforward. Any common mistakes newbies make that isn't usually covered in FAQ?
CrashTestDummy has quit [Ping timeout: 272 seconds]
<Xach>
recordgroovy: making a new unit test library
<Xach>
i think that case is mentioned though
<recordgroovy>
haha, I assure you it's not a unit test library, lol
<recordgroovy>
nor is it a new base64 library
zacts has quit [Quit: Client closed]
<Xach>
recordgroovy: what is it?
taiju has joined #commonlisp
<recordgroovy>
I plan to fork sha1 if my PR gets denied so that I can use it with projects that depend on cl-base64
<recordgroovy>
Found out this morning someone made the exact same PR about 18 months ago, so I'm expecting this one to close too.
<recordgroovy>
(This is part of a two-stage process to remove ironclad entirely from clack and websocket-driver, because fukamachi depends on the entire crypto toolkit just for SHA1 hashes)
taiju has quit [Ping timeout: 272 seconds]
waleee has quit [Ping timeout: 255 seconds]
Oladon has joined #commonlisp
stylewarning has joined #commonlisp
notzmv has quit [Ping timeout: 258 seconds]
mason has quit [Quit: leaving]
mason has joined #commonlisp
peterhil has quit [Ping timeout: 272 seconds]
karlosz has joined #commonlisp
karlosz has quit [Client Quit]
pjb has quit [Ping timeout: 255 seconds]
paulapatience has quit [Remote host closed the connection]
lisp123 has joined #commonlisp
char has joined #commonlisp
tyson2 has quit [Remote host closed the connection]
whoschen has quit [Remote host closed the connection]
<beach>
contrapunctus: I don't think I have seen it. Reading now...
<beach>
Looks very similar.
<beach>
I'll read it more carefully later. Today is Monday and Monday mornings are chaotic around here. From a brief look, it looks more theoretical and less pragmatic than CLOSOS. I am especially looking for the cost of invoking an external function.
SAL9000 has quit [*.net *.split]
phoe has quit [*.net *.split]
stylewarning has quit [*.net *.split]
phoe_ has joined #commonlisp
stylewarning has joined #commonlisp
SAL9000 has joined #commonlisp
|3b| has quit [*.net *.split]
danieli has quit [*.net *.split]
ryanbw has quit [*.net *.split]
contrapunctus has quit [*.net *.split]
jealousmonk has quit [*.net *.split]
spec has quit [*.net *.split]
contrapunctus has joined #commonlisp
|3b| has joined #commonlisp
ryanbw has joined #commonlisp
danieli has joined #commonlisp
jealousmonk has joined #commonlisp
jsatk has quit [*.net *.split]
pl has quit [*.net *.split]
totoro has quit [*.net *.split]
mister_m has quit [*.net *.split]
travv0 has quit [*.net *.split]
mister_m has joined #commonlisp
pl has joined #commonlisp
travv0 has joined #commonlisp
jsatk has joined #commonlisp
totoro has joined #commonlisp
totoro has quit [Changing host]
totoro has joined #commonlisp
<beach>
I would have liked to see a discussion of the efficiency of the mechanisms being used.
rdrg109 has quit [*.net *.split]
les has quit [*.net *.split]
hexology has quit [*.net *.split]
dale has quit [*.net *.split]
gko has quit [*.net *.split]
dbotton has quit [*.net *.split]
lonjil has quit [*.net *.split]
dcx has quit [*.net *.split]
drmeister has quit [*.net *.split]
polygon-op has quit [*.net *.split]
zups has quit [*.net *.split]
victor has quit [*.net *.split]
cpape has quit [*.net *.split]
cpape` has joined #commonlisp
polygon-1p has joined #commonlisp
lonjil has joined #commonlisp
drmeister has joined #commonlisp
rdrg109 has joined #commonlisp
gko has joined #commonlisp
zups has joined #commonlisp
les has joined #commonlisp
dbotton has joined #commonlisp
dale has joined #commonlisp
dale has quit [Changing host]
dale has joined #commonlisp
victor has joined #commonlisp
hexology has joined #commonlisp
dcx has joined #commonlisp
Oladon has quit [Quit: Leaving.]
recordgroovy has quit [Ping timeout: 265 seconds]
spiaggia has joined #commonlisp
shka has joined #commonlisp
char has quit [Ping timeout: 265 seconds]
CrashTestDummy2 has joined #commonlisp
CrashTestDummy3 has quit [Ping timeout: 268 seconds]
amb007 has quit [Ping timeout: 252 seconds]
cjb has quit [Quit: rcirc on GNU Emacs 28.0.50]
CrashTestDummy3 has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 255 seconds]
lottaquestions has quit [Ping timeout: 240 seconds]
<beach>
WSCL won't include any extensions to the standard. It will only specify behavior that is unspecified or undefined in the standard, and that nearly all implementations agree upon.
<pjb>
I don't like type-error on index out of bound. Everything can be a type-error then!
<pjb>
program-error? Wrong your code was of the wrong type! (the type valid-program).
<pjb>
end-of-file? wrong, your stream was of the wrong type (the type stream-of-sufficient-length).
<pjb>
Types are idiotic.
<pjb>
I like types less and less with time…
<beach>
I see.
<beach>
I think type error is fine, but as a superclass of the real condition type to be signaled.
<beach>
But then, I can't specify that without extensions.
<pjb>
or program-error if it's determined at compilation-time.
<beach>
Sure.
hendursaga has joined #commonlisp
hendursa1 has quit [Ping timeout: 244 seconds]
dsk has joined #commonlisp
<contrapunctus>
pjb: what do you prefer, instead of types? 🤔
Lord_of_Life_ has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 246 seconds]
Lord_of_Life_ is now known as Lord_of_Life
waleee has joined #commonlisp
CrashTestDummy3 has joined #commonlisp
CrashTestDummy2 has quit [Ping timeout: 276 seconds]
<pjb>
contrapunctus: not to replace them, but to stress them less.
<beach>
There are no standardized types that are subclasses of TYPE-ERROR are there?
polygon-1p is now known as jackdaniel
jackdaniel has quit [Changing host]
jackdaniel has joined #commonlisp
lisp123 has joined #commonlisp
<beach>
I think this discussion suggests another project: Create a set of subclasses of standard condition classes for common error situations. Provide excellent English-language condition reporters for them.
<beach>
And provide initargs and accessors as usual, and create documentation for those.
lisp123 has quit [Ping timeout: 255 seconds]
<pjb>
two things are needed: good English, and enough data in the slots to make them usable automatically in handlers and restarts…
<pjb>
And for the specification, where they're signaled from. Allowing conditions to be signaled deep from the bowels of the implementation can be a problem for automatic handling.
<beach>
Well, the creator of such a library can not dictate how the conditions are going to be used by Common Lisp implementations.
<beach>
They can suggest, of course.
cmack has quit [Ping timeout: 268 seconds]
yitzi has joined #commonlisp
Colleen has quit [Quit: Colleen]
Colleen has joined #commonlisp
kpoeck has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
peterhil has joined #commonlisp
dsk has quit [Ping timeout: 255 seconds]
random-nick has joined #commonlisp
VincentVega has joined #commonlisp
silasfox has joined #commonlisp
yitzi has quit [Remote host closed the connection]
<beach>
Oops, forgot to update the edit history. Done now.
char has quit [Ping timeout: 276 seconds]
<shka>
beach: honestly, i would also propose that the rank of the array must match the number of incidences passed, but this is arguably stretching it
<beach>
*sigh*
<beach>
As I have said at least twice, that is a separate planned issue.
<beach>
Coming up in fact. Working on it right now.
amb007 has quit [Ping timeout: 256 seconds]
<shka>
oh, ok, sorry
<beach>
I wonder why people give me remarks precisely on what I didn't ask for and never give any remarks on what I explicitly asked for.
<beach>
What I was explicitly asking people to do was to run the examples in implementations at their disposal and tell me the result.
<Bike>
" There are no standardized types that are subclasses of TYPE-ERROR are there?" there's simple-type-error, and i think that's it, based on class-direct-subclasses
<beach>
I think you are right.
<Bike>
the one and two calls result in type errors in clasp head and ccl 1.12
ec has quit [Ping timeout: 244 seconds]
amb007 has joined #commonlisp
<Bike>
unsurprisingly
<Bike>
my main thought on this is that there are probably a lot of things like this in the standard, and so writing out this whole issue format for each one will get tedious
<etimmons>
Along with a script to replicate using Docker (in case you have that installed, but don't want to install the impls natively)
<beach>
Bike: I agree it is tedious, but as jcowan pointed out, this is pretty serious stuff as it has to do with proposed changes to a language that is quite well designed already. I definitely want to avoid accidentally suggesting precise behavior if (for instance) it may not be practical in some implementations and/or on some backends.
makomo has joined #commonlisp
<Bike>
sure, i'm just wondering if you couldn't consolidate some changes
<beach>
etimmons: I was totally counting on help with these things, myself concentrating on the proposed issues.
<Bike>
let's see, what could be specified to signal type errors but isn't. compile, compiler-macro-function, macro-function, proclaim. special-operator-p actually does already have the language for some reason
VincentVega has quit [Ping timeout: 255 seconds]
<Bike>
gonna make a slightly more complete list...
<beach>
Great!
<Bike>
a lot of these definitely make the "simple omission" theory pretty convincing
<Bike>
e.g. error should signal a type-error if it's not given a condition designation, but signal doesn't have to
<beach>
Oh? Really?
<Bike>
signal has "Exceptional conditions: None"
<beach>
Oh, I see what you mean.
<Bike>
error has, uh, "None", and then "Signals an error of type type-error if datum and arguments are not designators for a condition. " under it
<beach>
Let see, "signals an error" what does that mean?
<beach>
I guess no matter the safety level.
VincentV` has quit [Ping timeout: 255 seconds]
<Bike>
i think that would be the reading, yeah, although the terminology section says it should read "An error is signaled" i guess
<beach>
Yeah, and as jcowan pointed out, that terminology needs cleaning up too.
<Bike>
oh, jcowan already mentioned coalescing things too
<beach>
I told scymtym I would try to write an issue per day for a while. I think I have a large source of inspiration now. Thanks to everyone. And feel free to write up some issues yourself. It takes only a few minutes.
ec has joined #commonlisp
dsk has quit [Ping timeout: 256 seconds]
ec has quit [Remote host closed the connection]
ec has joined #commonlisp
taiju has quit [Remote host closed the connection]
taiju has joined #commonlisp
peterhil has quit [Ping timeout: 256 seconds]
peterhil has joined #commonlisp
waleee has joined #commonlisp
<jmercouris>
What’s the reason for wscl?
<jmercouris>
If all implementations are today conforming, why write it?
<jackdaniel>
take (aref <x> 1 2) ; standard (by ommision) doesn't say what happens when <x> is not an array
<jackdaniel>
in other words (aref 42 1 2) is an undefined behavior; undefined behavior means - may segfault and it is conforming
<jmercouris>
So we are trying to eliminate UB?
<lotuseater>
maybe i miss that out above, but what does WS in WSCL stand for?
<Bike>
"well specified"
<Bike>
jmercouris: at least in safe code
<lotuseater>
ahh, i see ^^ thx
<jmercouris>
I see
<jackdaniel>
not having undefined behaviors in safe code is a good quality
<Bike>
and some things are still undefined
<jmercouris>
I’ve heard not crashing is good
<jackdaniel>
on the other hand for foolhardy code with safety 0 it should be fine to segfault
<beach>
jmercouris: Crashing is way better than silently giving the wrong answer, which is a possibility for undefined behavior.
<beach>
jmercouris: Look at the mess that C is in. Basically all compilers take advantage of undefined behavior in the standard to do the worst possible thing in the name of performance. I would like to see a standard for Common Lisp where I can honestly say that the *language* is safe. Currently I can't.
<shka>
more specifically, it is likely that all CL implementations signal type-error in such situation already
<shka>
so this behavior is already practical, yet unwritten, standard
<beach>
jmercouris: The fact that all major implementations that we have today are conforming is not good enough. First, "all major" does not mean "all" because we are probably not even aware of all the Common Lisp implementations out there. Second, some implementation may have missed some cases, and they might want to fix those problems.
<beach>
Third, existing implementation may accidentally reintroduce undefined behavior in future releases. Fourth, I am hoping that one day implementations will be able to say that they do not conform to just the Common Lisp standard, but also to the stricter WSCL standard.
<jmercouris>
Hm, well you’ve convinced me
<beach>
Great!
<jmercouris>
Too bad I have no reasonable value to offer
<jmercouris>
I’ll just keep making CL more popular via my applications
<beach>
Sure you do if you want o.
<beach>
to
<jmercouris>
I can think of many more people who are more technically competent
<beach>
jmercouris: So you are saying you are not competent, and you have no ambition to become competent?
<beach>
jmercouris: It is really very simple...
<jmercouris>
I’m constantly in the process of becoming competent:-)
<beach>
jmercouris: You read the dictionary items in the Common Lisp HyperSpec, which you need to read anyway if you are an application programmer.
<beach>
jmercouris: Then you think hard about what might go wrong.
cage has joined #commonlisp
<jmercouris>
Hm, seems straightforward enough
<beach>
jmercouris: And if the entry doesn't say what happens when something is wrong, then you have an issue.
<jmercouris>
I’ll keep my eyes peeled then
<beach>
Excellent.
<beach>
jmercouris: Like this thing that it is undefined behavior if the entry mentions that an argument must be a certain type, and then no further information is given.
<Bike>
oh, and also i want to mention that for some slightly obscure cases, i expect implementations might not conform. for example, there are many condition accessor functions, e.g. stream-error-stream, that aren't specified to signal a type error. if an implementation just uses define-condition/defclass, the error for the wrong type will be method not found instead of type error.
<jmercouris>
I see
<beach>
Bike: Good point.
<beach>
jmercouris: Let me just show you one simple example...
<beach>
jmercouris: So you see, I didn't do anything particular there. I just checked a few random dictionary entries, and on the third one, I found digit-char-p.
<beach>
jmercouris: I am pretty sure you could have done the exact same thing.
<beach>
jmercouris: You may of course not have any desire to do something like that, but I don't think you can use incompetence as an excuse.
<jmercouris>
Fair enough :-D
lisp123 has quit [Ping timeout: 256 seconds]
<beach>
Bike: But some of those already do, right?
<jmercouris>
beach: reading through the entry, I can't imagine what it does if char is indeed not a character
<jmercouris>
my first instinct is it returns nil
<jmercouris>
the reason why I say that is it says "test whether char is a digit in the specified radix"
<jmercouris>
I imagine that a potato is not in fact a digit in the specified radix
<beach>
jmercouris: Exactly, and so the general phrase in 1.4.4.3 applies.
<jmercouris>
and thefore it should return nil
<beach>
jmercouris: Nope, that's not what 1.4.4.3 says.
<beach>
This dictionary entry says that char is a character.
<jmercouris>
OK I see that
<jmercouris>
that complements how this is supposed to read
<jmercouris>
in that case indeed, undefined...
<beach>
Yep.
<jmercouris>
You could probably just make a test suite rather than writing a spec
<jmercouris>
or maybe not, I don't know, I'm just thinking, if it /should/ signal a type error
<jmercouris>
you can check that it does
<beach>
A test suite will be a very nice complement.
<beach>
But I also want a document meant for the application programmer so that it is known what behavior is expected from a conforming implementation.
<beach>
The test suite would be valuable to implementors, just like the ANSI test suite is for the Common Lisp standard.
<Bike>
beach: some of them specify a type error should be signaled on some type problems but not others, if that's what you mean
<shka>
sneaky beach has other reason fo WSCL
<shka>
namely: what if you are making a new implementation?
<shka>
and currently WIP implementations include SICL and Clasp
<beach>
Bike: Yes, that's what I mean.
<beach>
shka: And BOCL.
<shka>
lol, yes
<shka>
i forgot about this one
<beach>
That's an important one, because it is not meant to be used for application programming, so it could exploit all the undefined behavior.
<shka>
CL, "dead" language has 3 new implementations being developed at this very moment
<shka>
AND multiple maintained implementations
<shka>
heh
copec has joined #commonlisp
frgo has quit [Ping timeout: 256 seconds]
peterhil has quit [Ping timeout: 256 seconds]
Inline has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
amb007 has joined #commonlisp
<jackdaniel>
and swapping
dsk has joined #commonlisp
Josh_2 has joined #commonlisp
<Josh_2>
Hello
<Josh_2>
How do I clear all current sessions in hunchentoot?
derelict has joined #commonlisp
tyson2 has joined #commonlisp
<Josh_2>
Oh wait dw, I remembered, just gotta set tbnl::*session-db* to nil
varjag has joined #commonlisp
treflip has left #commonlisp [ERC (IRC client for Emacs 27.2)]
<lotuseater>
can anyone tell me the difference calling a symbol from a package with one and two colons?
<jackdaniel>
lotuseater: if the symbol is accessible with one colon, then that means that this symbol is exported from said package
<jackdaniel>
when you use two colons then the reader doesn't care whether the symbol is exported or not
jeosol has quit [Quit: Ping timeout (120 seconds)]
<aeth>
Generally, you don't want to use ::s outside of tests. Generally. Some things just aren't exported when they should be, though. E.g. nobody seems to export their types. I guess nobody uses CHECK-TYPE or DECLARE etc. anywhere.
<aeth>
I blame Python. Duck typing. :-p
dsk has quit [Ping timeout: 256 seconds]
<aeth>
Meanwhile, I'll gladly lose some performance to fail early if it means I don't have to hunt down a random NIL that happened 30 functions ago in my program.
<jcowan>
Ah yes, the old NIL pointer problem!
makomo has quit [Quit: WeeChat 3.0.1]
<pjb>
lotuseater: (read-from-string "CL-USER:FOO") #| ERROR: Reader error: No external symbol named "FOO" in package #<Package "COMMON-LISP-USER"> . |# (read-from-string "CL-USER::FOO") #| --> foo ; 12 |#
* Xach
steps away from the topic for 20 years again
lisp123 has quit [Ping timeout: 276 seconds]
makomo has joined #commonlisp
silasfox has quit [Ping timeout: 256 seconds]
silasfox has joined #commonlisp
peterhil has joined #commonlisp
shka has quit [Ping timeout: 255 seconds]
amb007 has quit [Ping timeout: 276 seconds]
mjanssen has joined #commonlisp
kakuhen has joined #commonlisp
amb007 has joined #commonlisp
silasfox_ has joined #commonlisp
silasfox has quit [Ping timeout: 272 seconds]
frgo has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
frgo has quit [Remote host closed the connection]
frgo has joined #commonlisp
frgo has quit [Ping timeout: 256 seconds]
amb007 has quit [Ping timeout: 255 seconds]
tyson2 has quit [Ping timeout: 256 seconds]
shka has joined #commonlisp
peterhil has quit [Quit: Must not waste too much time here...]
pegaso has joined #commonlisp
silasfox_ has quit [Ping timeout: 256 seconds]
peterhil has joined #commonlisp
amb007 has joined #commonlisp
akoana has joined #commonlisp
amb007 has quit [Ping timeout: 256 seconds]
peterhil has quit [Quit: Must not waste too much time here...]
amb007 has joined #commonlisp
tfb has joined #commonlisp
peterhil has joined #commonlisp
shka has quit [Ping timeout: 276 seconds]
tyson2 has joined #commonlisp
tfb has quit [Ping timeout: 276 seconds]
amb007 has quit [Ping timeout: 255 seconds]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 272 seconds]
amb007 has joined #commonlisp
<contrapunctus>
I need to persist some tree-structured data, but I want to be able to read and write to it incrementally, rather than all at once. What would you folks suggest? Writing an incremental reader/writer for s-expressions, object prevalence, CXML, or something else?