libera/#sbcl - IRC Chatlog
Search
18:59:18
stassats`
but actually, the hash-table to cache forms instead of compiling hashes everything into the same place, so compiling is actually faster
19:30:45
Gleefre
Ok, I was trying to understand what's going wrong in call_into_lisp. I found that it breaks at this line on arm64:
19:34:31
stassats`
if that's what it takes to test four functions, i can't imagine what it would take to test everything
19:38:15
stassats`
pdietz: just trying all permutations https://github.com/sbcl/sbcl/blob/master/tests/cmp-combinations.pure.lisp#L15
20:58:37
semz
I've started to see "xyz lambdas converted" in the first TIME output after compiling something, even if the timed code shouldn't explicitly compile anything; is this just an artifact or does SBCL defer something here?
1:03:16
karlosz
i think its actually wrong to signal a full warning when doing something like (defun foo (x) (foo x y))
1:03:24
karlosz
self call argument mismatches should not signal a full warning unless its actually being compiled as a self call (i.e. speed > debug or block compilation)
1:03:58
karlosz
because it's actually possible to redefine the function before the self call happens
1:07:59
karlosz
anyway, the language allows it, and we usually pay attention to issues with late binding
1:08:52
karlosz
some insane package manuevers were found by someone doing some python to cl stuff, so i bet things like that could happen with autogenerated code anyway
1:09:46
karlosz
stassats: also true, but it has a semantic difference to the compiler: code which produces wanrings means that the compiled code doesn't work anymore
1:10:14
stassats`
python cl stuff can do (declare (notinline foo)) if they want to go crazy and not get warnings
1:10:33
karlosz
anyway, you see a bunch of comments in the system like this: https://github.com/sbcl/sbcl/blob/f14cf6277d2e96b840fad3cf02cdbef14ff4c482/src/compiler/ir1tran-lambda.lisp#L1284
1:14:31
stassats`
(defun bar (x)) (defun foo (x) (bar x y)) getting a full warning but (defun foo (x) (foo x y)) not getting a full warning does not make any sense
1:22:56
karlosz
i'd just like to rationalize style-warning vs warning in this respect since late binding has something to do with it
1:23:43
stassats`
Within a function named F, the compiler may (but is not required to) assume that an apparent recursive call to a function named F refers to the same definition of F, unless that function has been declared notinline. The consequences of redefining such a recursively defined function F while it is executing are undefined.
1:24:11
karlosz
i wanted to bring some order into this by allowing the user to make derive-function-types only propagate in the same file to conform with that ansi statement
1:24:38
karlosz
but according to that paragraph we could also just turn block compile to true by default
1:25:06
karlosz
yeah exactly the paragraph you quoted implies we could just recognize self calls always and we'd be happy
1:32:37
karlosz
maaybe consistent/inconsistent is not the right word, but it's definitely unclear how much we actually commit to the "same file means same function definitions" allowed by ANSI