2016-09-07T00:06:34Z oleo quit (Ping timeout: 240 seconds) 2016-09-07T00:15:43Z stassats: it looks like an inlined function gets ir1 converted twice 2016-09-07T00:16:04Z stassats: (defun foo () (let (x) (declare (ignore x)) (block nil (flet ((fun () (return)) (bar (f) (funcall f))) (declare (inline fun bar)) (bar #'fun))))) 2016-09-07T00:16:31Z stassats: the second (inlining) time RETURN tries to look up the block it exit-ctran is deleted 2016-09-07T00:17:07Z stassats: so that's probably the problem with the original thing, the inline expansion stumbles upon something broken 2016-09-07T00:19:27Z stassats: (%funcall (%coerce-callable-to-fun f)) causes double conversion, (%funcall f) does not 2016-09-07T00:20:34Z hel-io joined #sbcl 2016-09-07T00:23:40Z nyef`: ... If there is a live DX cleanup in the exiting block that isn't live in the other blocks for the LVAR-USES of the result-lvar of the vestigial exit, then we can't delete the block. 2016-09-07T00:23:47Z nyef`: Err... can't delete the vestigial exit. 2016-09-07T00:23:54Z nyef`: ... I think. 2016-09-07T00:23:59Z nyef`: Does that sound right? 2016-09-07T00:24:51Z hel-io quit (Client Quit) 2016-09-07T00:24:52Z stassats: no idea 2016-09-07T00:26:01Z nyef`: Something produces a UV packet as the value of a BLOCK, then something does a DX allocation, then within that DX extent something tries to EXIT the block. 2016-09-07T00:26:23Z nyef`: That's all fine. 2016-09-07T00:27:46Z nyef`: MAYBE-DELETE-EXIT decides "hey, these are the same home lambda", so it deletes the EXIT, but because there are value semantics it inserts a vestigial cast. 2016-09-07T00:28:24Z stassats: here i have a ctran for the exit deleted, but the block entry isn't deleted 2016-09-07T00:29:32Z nyef`: That vestigial cast is in the environment of the block, I think. 2016-09-07T00:30:24Z stassats: so, even though it complains about "note: implementation limitation: couldn't inline expand because expansion refers to the optimized away object" 2016-09-07T00:30:35Z nyef`: So then IR1-OPTIMIZE-CAST notes that the cast always passes its typecheck, and calls MAY-DELETE-VESTIGIAL-EXIT to determine if the exit can go away. 2016-09-07T00:30:36Z stassats: it actually does a good job at optimizing the function 2016-09-07T00:31:21Z stassats: it knows that the block will return? but how does it know that the function will be called? 2016-09-07T00:31:48Z nyef`: And MAY-DELETE-VESTIGIAL-EXIT says "no, there are no other code paths from this USE that target this other LVAR, we can snap this link". 2016-09-07T00:31:57Z nyef`: But there's a DX case involved. 2016-09-07T00:32:20Z nyef`: And this is well before we've determined if it's an unknown-values or a normal LVAR. 2016-09-07T00:32:29Z nyef`: ... Isn't it? 2016-09-07T00:32:38Z nyef`: Almost has to be. 2016-09-07T00:32:56Z nyef`: Anyway, the DX case with the UV packet means that we shouldn't delete the cast. 2016-09-07T00:33:06Z stassats: looks like we're just talking aloud about our different bugs 2016-09-07T00:33:10Z nyef`: Not actually a stack-analysis bug after all. (-: 2016-09-07T00:33:14Z nyef`: Yeah, I think that we are. 2016-09-07T00:33:28Z stassats: it looks funny, though 2016-09-07T00:33:48Z nyef`: If we're lucky, someone will get confused for a bit before they see the explanation in the logs. 2016-09-07T00:36:05Z stassats: sometimes things are converted twice without problems 2016-09-07T00:40:32Z stassats: weird, somehow it knows what's going on without expanding the second function inline 2016-09-07T00:41:10Z stassats: that's probably the root of the problem, it figures out what to delete, but then expands one of the functions inline, and it arrives to a barren wasteland 2016-09-07T00:41:15Z stassats: with ctrans rolling around 2016-09-07T00:42:19Z nyef`: Is it trying to bodily inline at each location, or merely saying "treat this as a local function definition"? 2016-09-07T00:42:46Z nyef`: (The difference being that the latter means that you would local-call the same code if you inlined twice.) 2016-09-07T00:42:47Z stassats: i have two functions, but i see maybe-expand-local-inline attempting to inline just one 2016-09-07T00:42:59Z stassats: yet the result is correct 2016-09-07T00:43:20Z stassats: as in everything, folded 2016-09-07T00:44:09Z stassats: in http://paste.lisp.org/display/325369#1 2016-09-07T00:44:49Z stassats: only (LAMBDA () (BLOCK FUN (RETURN))) gets converted 2016-09-07T00:45:48Z stassats: it actually tries to inline FUN several times before it goes converting 2016-09-07T00:46:55Z stassats: ok, once before 2016-09-07T00:47:03Z stassats: (not (eq (functional-kind (node-home-lambda call)) :external)) stops the firs time 2016-09-07T00:48:42Z stassats: but both functions have to be declared inline 2016-09-07T00:53:24Z nyef`: ... I don't think that I'm fixing this tonight. I'm having trouble even figuring out how to describe the additional condition, let alone expressing it in code. 2016-09-07T00:54:36Z stassats: MAYBE-EXPAND-LOCAL-INLINE is called in (defun foo () (flet ((fun () 10)) (declare (inline fun)) (print #'fun))) ? 2016-09-07T00:54:37Z stassats: huh 2016-09-07T00:54:39Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-07T00:55:05Z stassats: i guess that's what (not (eq (functional-kind (node-home-lambda call)) :external)) is for 2016-09-07T00:55:21Z stassats: but it's not really a call 2016-09-07T00:57:25Z stassats: oh, it's called from a XEP 2016-09-07T00:57:25Z stassats: ok 2016-09-07T00:58:29Z stassats: that's a good piece of the puzzle 2016-09-07T01:01:24Z stassats: now i'm curious, how is (defun foo () (flet ((bar () 10)) (declare (inline bar)) (bar))) inlined without maybe-expand-local-inline 2016-09-07T01:02:07Z sjl quit (Ping timeout: 250 seconds) 2016-09-07T01:03:13Z stassats: just let converted? 2016-09-07T01:05:40Z stassats: if BAR is called twice it gets to maybe-expand-local-inline 2016-09-07T01:05:55Z stassats: and #'fun is called twice, once from its xep, the second time from FUNCALL 2016-09-07T01:05:57Z stassats: interesting 2016-09-07T01:07:20Z stassats: for the first expansion it uses the stuff converted when the whole top level form is converted 2016-09-07T01:08:14Z stassats: so it can figure what's going on but when the second expansion hits it goes haywire 2016-09-07T01:09:45Z stassats: i can trigger the not using (let (x) (declare (ignore x)) (block nil (flet ((fun () (return 10))) (declare (inline fun)) (fun) (fun)))) 2016-09-07T01:38:38Z stassats quit (Ping timeout: 250 seconds) 2016-09-07T01:47:01Z em1l joined #sbcl 2016-09-07T01:47:34Z Bike joined #sbcl 2016-09-07T01:50:34Z em1l_ quit (Ping timeout: 255 seconds) 2016-09-07T01:51:55Z DavidGu joined #sbcl 2016-09-07T02:15:27Z DavidGu quit (Ping timeout: 276 seconds) 2016-09-07T02:32:14Z karswell quit (Read error: Connection reset by peer) 2016-09-07T02:44:42Z DavidGu joined #sbcl 2016-09-07T02:51:14Z DavidGu quit (Ping timeout: 244 seconds) 2016-09-07T03:00:36Z |3b| quit (Remote host closed the connection) 2016-09-07T03:40:00Z |3b| joined #sbcl 2016-09-07T04:16:43Z rumbler31 joined #sbcl 2016-09-07T04:22:50Z rumbler31 quit (Remote host closed the connection) 2016-09-07T04:34:20Z shka_ joined #sbcl 2016-09-07T05:44:20Z scymtym quit (Ping timeout: 250 seconds) 2016-09-07T06:00:45Z rszeno quit (Quit: Leaving.) 2016-09-07T06:05:19Z schjetne joined #sbcl 2016-09-07T06:14:32Z shka_ quit (Ping timeout: 240 seconds) 2016-09-07T06:18:24Z gingerale joined #sbcl 2016-09-07T07:01:46Z gingerale quit (Remote host closed the connection) 2016-09-07T07:28:23Z scymtym joined #sbcl 2016-09-07T07:28:32Z ASau quit (Ping timeout: 240 seconds) 2016-09-07T07:34:10Z edgar-rft quit (Quit: edgar-rft) 2016-09-07T08:16:47Z scymtym: here is the packing scheme for xref info i'm experimenting with: http://paste.lisp.org/display/325420 . it is a bit complicated but saves around 3.5 MB in the --fancy x86_64 core. worth it? 2016-09-07T08:17:02Z Bike quit (Quit: wide-eyed terror) 2016-09-07T08:34:04Z rudolfochrist joined #sbcl 2016-09-07T08:48:24Z angavrilov joined #sbcl 2016-09-07T08:51:34Z Blkt_ quit (Remote host closed the connection) 2016-09-07T08:51:34Z fe[nl]ix quit (Read error: Connection reset by peer) 2016-09-07T08:51:47Z Blkt joined #sbcl 2016-09-07T08:51:48Z fe[nl]ix joined #sbcl 2016-09-07T08:57:28Z edgar-rft joined #sbcl 2016-09-07T09:11:33Z jzp quit (Ping timeout: 240 seconds) 2016-09-07T09:20:21Z gargaml joined #sbcl 2016-09-07T09:33:21Z jzp joined #sbcl 2016-09-07T09:49:15Z rudolfochrist quit (Remote host closed the connection) 2016-09-07T10:34:52Z attila_lendvai joined #sbcl 2016-09-07T10:52:13Z salva quit (Ping timeout: 265 seconds) 2016-09-07T11:10:45Z pipping joined #sbcl 2016-09-07T11:11:28Z pipping: It seems to me, the download link on sbcl.org for the openbsd row, amd64 column, http://prdownloads.sourceforge.net/sbcl/sbcl-1.2.7-x86-64-openbsd56-binary.tar.bz2 doesn't work. Replacing openbsd56 with openbsd works, though. 2016-09-07T11:16:53Z salva joined #sbcl 2016-09-07T11:18:42Z sjl joined #sbcl 2016-09-07T11:41:52Z jzp quit (Ping timeout: 240 seconds) 2016-09-07T11:49:52Z jzp joined #sbcl 2016-09-07T12:22:25Z stassats joined #sbcl 2016-09-07T12:37:10Z stassats: scymtym: i don't care what the scheme is, 3MB is worth it 2016-09-07T12:45:34Z Shinmera: 3MB is quite a bit. 2016-09-07T12:47:34Z stassats: that is for xref enabled cores, but it makes xref less of a burden 2016-09-07T12:48:19Z stassats: scymtym: if you're into optimizing bits, consider looking at debug dump 2016-09-07T12:54:29Z stassats: hell, slime now reloads contribs when it starts up, losing my custom bindings 2016-09-07T13:03:30Z stassats: ok, that fixed 2016-09-07T13:50:30Z DGASAU quit (Read error: Connection reset by peer) 2016-09-07T13:51:21Z DGASAU joined #sbcl 2016-09-07T13:52:55Z cromachina quit (Read error: Connection reset by peer) 2016-09-07T14:03:12Z scymtym: stassats: i was thinking about debug info, but this whole space optimization stuff is a distraction from the things i actually want to do in SBCL. i may still look into it later, though 2016-09-07T14:03:23Z stassats: fair enough 2016-09-07T14:05:38Z scymtym: stassats: https://github.com/scymtym/sbcl/commit/660052aca448eeed8d270a3eb8c444c46042864a 2016-09-07T14:07:32Z stassats: LOOP DO is a progn, why DO twice? 2016-09-07T14:07:42Z scymtym: obviously needs cleanup but that is the roughly the amount of changes necessary 2016-09-07T14:08:17Z scymtym: probably because of debugging so i can just delete the line 2016-09-07T14:19:35Z leo_song_ joined #sbcl 2016-09-07T14:20:35Z mgodshall quit (*.net *.split) 2016-09-07T14:20:36Z leo_song quit (*.net *.split) 2016-09-07T14:20:37Z Shinmera quit (*.net *.split) 2016-09-07T14:20:38Z mood quit (*.net *.split) 2016-09-07T14:20:38Z leo_song_ is now known as leo_song 2016-09-07T14:29:39Z stassats quit (Read error: Connection reset by peer) 2016-09-07T14:33:39Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-09-07T14:35:02Z chris2 quit (Ping timeout: 265 seconds) 2016-09-07T14:37:03Z s6502 joined #sbcl 2016-09-07T14:42:12Z mgodshall joined #sbcl 2016-09-07T14:42:12Z Shinmera joined #sbcl 2016-09-07T14:42:12Z mood joined #sbcl 2016-09-07T14:43:09Z sjl quit (Quit: WeeChat 1.3) 2016-09-07T14:44:32Z sjl joined #sbcl 2016-09-07T14:47:17Z nyef`: Okay, the ultra-conservative version of MAY-DELETE-VESTIGIAL-EXIT "works", as predicted. Now I need to figure out how to make the less conservative version work. 2016-09-07T14:49:48Z s6502 quit (Remote host closed the connection) 2016-09-07T14:55:44Z dougk_ joined #sbcl 2016-09-07T14:56:04Z stassats joined #sbcl 2016-09-07T15:22:29Z edgar-rft quit (Quit: edgar-rft) 2016-09-07T15:31:14Z Bike joined #sbcl 2016-09-07T15:42:33Z karswell joined #sbcl 2016-09-07T15:45:48Z stassats: ok, made fixnum-float comparisons non consing and fast 2016-09-07T15:45:56Z stassats: i wonder if i can extend that to all integers 2016-09-07T15:48:59Z nyef`: ... Probably? 2016-09-07T15:49:08Z nyef`: Or, at least, substantially reduce the consing. 2016-09-07T15:49:43Z stassats: i expected the unsigned-byte 64 case to not cons, but it seems there's some trouble with comparison vops 2016-09-07T15:50:02Z stassats: so i'm settling for fixnums only for now 2016-09-07T15:53:06Z nzambe quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-09-07T15:53:21Z nzambe joined #sbcl 2016-09-07T16:00:41Z stassats: ok, for float-bignum comparisons, i don't really need to do integer-/-integer division in RATIONAL 2016-09-07T16:00:53Z stassats: i can get by with a truncate 2016-09-07T16:02:04Z stassats: will wait for fixnum to get checked out and will try to tackle that one 2016-09-07T16:08:19Z stassats: optimized unoptimized user code is my favorite kind of optimization 2016-09-07T16:08:52Z stassats: now properly declared (> fixnum float) was fast, but (> bignum float) is slow no matter what you declare 2016-09-07T16:09:23Z nyef`: I'm suddenly having a sense of deja-vu. 2016-09-07T16:09:39Z stassats: some ansi tests failed, good, not having any failed tests is suspicious 2016-09-07T16:09:51Z nyef`: Also, the snarky part of me is saying something about "putting the smarts into the compiler, so that the user doesn't need to have any." 2016-09-07T16:20:37Z stassats: looks like (plusp fixnum) should be (<= fixnum 0), that's easy 2016-09-07T16:24:32Z rumbler31 joined #sbcl 2016-09-07T16:29:07Z rumbler31 quit (Ping timeout: 250 seconds) 2016-09-07T16:29:48Z stassats: another problem with zeros, i can't check if a float has no fractional part with (> (float quot) float) 2016-09-07T16:29:50Z stassats: no -0 2016-09-07T16:38:05Z stassats: can't seem to get around without an additional branch 2016-09-07T16:38:48Z stassats: or wait, i can treat 0 as a negative 2016-09-07T16:42:24Z stassats: ok, no tests failing 2016-09-07T16:48:09Z brfennpocock joined #sbcl 2016-09-07T16:49:51Z stassats: and it's in 2016-09-07T16:50:50Z dougk_ quit (Remote host closed the connection) 2016-09-07T16:54:45Z karswell quit (Remote host closed the connection) 2016-09-07T16:55:05Z pipping: I'd like to understand the implications of W^X enabled by default on OpenBSD 6.0. 2016-09-07T16:55:44Z stassats: a patch to disable it for sbcl was already merged 2016-09-07T16:55:59Z pipping: Yes, I saw that, but I think it's not the end of the story 2016-09-07T16:56:18Z stassats: will they disable that in the future? 2016-09-07T16:56:29Z pipping: If I understand correctly, sbcl violates the W^X restriction. W^X can only be disabled if the executable is marked with PT_OPENBSD_WXNEEDED and the filesystem is mounted with wxallowed. 2016-09-07T16:56:57Z pipping: What the patch does is enable PT_OPENBSD_WXNEEDED for future versions of sbcl. 2016-09-07T16:57:44Z pipping: The directory /usr/local (and nothing else) is mounted with wxallowed by default. So once sbcl 1.3.10 or whatever comes next is out, the issue can be put aside. 2016-09-07T16:58:53Z jackc-_ is now known as jackc 2016-09-07T16:59:16Z pipping: Or rather, when a binary becomes installable. 2016-09-07T17:00:17Z DGASAU quit (Read error: Connection reset by peer) 2016-09-07T17:00:21Z pipping: Because even if I try to build sbcl from git on OpenBSD, I'll hit the W^X issue, unsurprisingly. 2016-09-07T17:00:50Z DGASAU joined #sbcl 2016-09-07T17:01:06Z Xof: so someone needs to build a binary 2016-09-07T17:01:25Z pipping: Yes, but how? You'd need an old binary. But you won't be able to run that. 2016-09-07T17:01:43Z Xof: hm, also that means that end users on openBSD will need to build it from /usr/local/src or somewhere, not their own home directories 2016-09-07T17:01:48Z pipping: Unless you build the binary on openbsd 5.9 with PT_OPENBSD_WXNEEDED enabled already 2016-09-07T17:01:50Z Xof: build on an old version of openbsd 2016-09-07T17:02:01Z Xof: right 2016-09-07T17:02:25Z pipping: Alright. Guess I'll do that then. 2016-09-07T17:02:59Z Xof: alternatively cross-build from clisp or something 2016-09-07T17:03:30Z dougk_ joined #sbcl 2016-09-07T17:04:14Z Xof: in the slightly longer term we might want to adjust our paging discipline to be compatible with W^X 2016-09-07T17:04:38Z stassats: creating code objets is easy 2016-09-07T17:05:03Z stassats: or, do we share the pages with other objects? 2016-09-07T17:08:01Z nyef`: Genesis alone says that we share the pages. 2016-09-07T17:08:14Z nyef`: Long been on my list of things to possibly address. 2016-09-07T17:08:42Z nyef`: Also note that GC implies that we need to write to the pages, though not necessarily while they're executable. 2016-09-07T17:14:24Z nyef`: stassats: You really wanted to get rid of cheneygc, didn't you? 2016-09-07T17:14:40Z stassats: well, i wouldn't mind it going 2016-09-07T17:14:55Z nyef`: We currently have three platforms that require it. 2016-09-07T17:15:05Z stassats: and porting to gengc first isn't a problem 2016-09-07T17:16:12Z nyef`: I think that having two GCs is important, in that it keeps the door open for a third GC. 2016-09-07T17:16:36Z nyef`: I'm not sure where I'm going with this. 2016-09-07T17:18:08Z nyef`: I think that all of our platforms should support gencgc, as it's the better of the two GCs that we have. 2016-09-07T17:18:37Z nyef`: And that's actually something that's on my list of things to address at some point. 2016-09-07T17:24:32Z jsnell: I could swear someone just within the last couple of weeks said they had patches for allocating code on separate (non-moving) pages. very short hop from there to w^x 2016-09-07T17:24:57Z Xof: jsnell: you have a good memory! dougk said that I think 2016-09-07T17:25:15Z Xof: to be merged in a week or so 2016-09-07T17:25:52Z nyef`: Right, that's a good first step. Especially if it also covers genesis, otherwise we'll need to deal with that. 2016-09-07T17:26:52Z chris_l joined #sbcl 2016-09-07T17:27:55Z gingerale joined #sbcl 2016-09-07T17:33:52Z sjl quit (Ping timeout: 244 seconds) 2016-09-07T17:47:45Z shka_ joined #sbcl 2016-09-07T17:57:25Z chris2 joined #sbcl 2016-09-07T18:00:49Z nyef`: Oh, hell. MAY-DELETE-VESTIGIAL-CAST is getting called before the DX cleanups exist. 2016-09-07T18:17:50Z nyef`: ... And the variable itself is deleted, probably because it only has a single reference, and thus the reference gets substituted. 2016-09-07T18:18:10Z nyef`: So either before the DX cleanups exist, or after they are excised. 2016-09-07T18:28:06Z sjl joined #sbcl 2016-09-07T18:30:30Z nyef`: Okay, I can check for vars in the LEXENVs that are LEAF-DYNAMIC-EXTENT, without respect to their deletedness or not. 2016-09-07T18:31:18Z nyef`: Hrm. But what about DX functions? 2016-09-07T18:31:50Z nyef`: Going to need to come up with a new test case. 2016-09-07T18:32:19Z nyef`: (If I'm just driving this to become Even More Subtle, may as well make it Really Subtle.) 2016-09-07T18:32:58Z pipping: Xof: compiling on openbsd 5.9 gives me a binary that won't run on openbsd 6.0, unfortunately 2016-09-07T18:33:28Z pipping: sbcl: can't load library 'libc.so.84.2' 2016-09-07T18:33:58Z pipping: (it's libc.so.88.0 on 6.0) 2016-09-07T18:34:08Z joshe: openbsd bumps library versions when the ABI changes 2016-09-07T18:34:31Z pipping: well, yes, I'm not saying what they do doesn't make sense. 2016-09-07T18:34:36Z stassats: cross build 2016-09-07T18:34:56Z joshe: yes, or pkg_add clisp and do it the slow way 2016-09-07T18:35:45Z nyef`: Wait, you have an obsd 5.9 build that doesn't work? 2016-09-07T18:36:10Z pipping: nyef`: I built something on 5.9 that I can't run on 6.0, yes 2016-09-07T18:36:24Z joshe: oh, this is more wxallowed fun 2016-09-07T18:36:28Z nyef`: Rebuild the runtime on obsd 6.0, copy everything back to 5.9, sh ./make-genesis-2.sh, copy everything back to 6.0, sh ./make-target-2.sh --dump 2016-09-07T18:36:42Z nyef`: You're most of the way there. 2016-09-07T18:38:32Z pipping: Sorry, this has already taken up too much of my time; I only wanted to test my code on OpenBSD and came across this by accident. 2016-09-07T18:38:51Z joshe: can't you just pkg_add sbcl and build the current sbcl source with that? 2016-09-07T18:39:01Z pipping: joshe: no, I cannot. 2016-09-07T18:39:23Z joshe: why not? I'm fairly sure that I have 2016-09-07T18:39:48Z pipping: joshe: I explained that further up, when talking to Xof 2016-09-07T18:39:51Z joshe: you'll need the filesystem with your source (/home?) mounted with wxallowed 2016-09-07T18:41:05Z pipping: Granted, I haven't tried that bit. But from my understanding that should not suffice because the 1.2.14 binary that pkg_add would install is not marked PT_OPENBSD_WXNEEDED 2016-09-07T18:41:40Z pipping: I put the result of building on 5.9 up here: http://dev.exherbo.org/~pipping/sbcl-1.3.9-73-g90f476a-amd64-OpenBSD-5.9.tar.gz Maybe someone finds that time-saving/useful 2016-09-07T18:42:54Z joshe: on 6.0-release, you can still run such programs 2016-09-07T18:43:30Z joshe: tsuga$ uname -a 2016-09-07T18:43:30Z joshe: OpenBSD tsuga 6.0 GENERIC.MP#2319 amd64 2016-09-07T18:43:30Z joshe: tsuga$ sbcl 2016-09-07T18:43:30Z joshe: This is SBCL 1.2.14.openbsd, an implementation of ANSI Common Lisp. 2016-09-07T18:44:04Z joshe: unless you've set the kern.wxabort sysctl to 1 then you just get a warning in dmesg 2016-09-07T18:45:45Z pipping: Right. I'm afraid I've been looking at the wrong issue. 2016-09-07T18:47:52Z pipping: I observed an issue with sbcl 1.2.14 that I have on 6.0 but not 5.9 but that's down to dumping an image and running it from a filesystem that isn't mounted with wxallowed. 2016-09-07T18:47:54Z edgar-rft joined #sbcl 2016-09-07T18:48:14Z joshe: yes, that won't work 2016-09-07T18:48:52Z joshe: I have to mount my /home with wxallowed to run stumpwm, for example 2016-09-07T19:03:46Z scymtym quit (Ping timeout: 255 seconds) 2016-09-07T19:17:48Z nyef`: Okay, I may finally have this mvl+nlx+dx thing nailed to the wall, at least for the variable case. 2016-09-07T19:23:22Z nyef`: ... What the...? 2016-09-07T19:23:47Z nyef`: "The value (MACRO TRULY-THE INDEX (OR LENGTH1-CACHE (SETF LENGTH1-CACHE #))) is not of type SB!C::LEAF"? 2016-09-07T19:28:16Z nyef`: That's an odd thing to see in a LEXENV-VARS, isn't it? 2016-09-07T19:28:47Z nyef`: Hrm. Worse, it shouldn't even be trying to treat it as a leaf. 2016-09-07T19:29:33Z nyef`: clhs do 2016-09-07T19:29:33Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_do_do.htm 2016-09-07T19:31:46Z nyef`: This is weird. 2016-09-07T19:32:09Z nyef`: The DO loop should be exiting immediately, as the exit and entry lexenvs are the same in this case. 2016-09-07T19:35:38Z nyef`: ... Or the backtrace is horribly misleading. That's more likely. 2016-09-07T19:36:07Z nyef`: Yeah, okay, backtrace is misleading. 2016-09-07T19:54:36Z nyef`: I just love when something prints as #1=#1#. It's such a useful and informative printed representation. 2016-09-07T19:56:36Z nyef`: Ahh... Symbol-macro expansion. 2016-09-07T19:58:37Z nyef`: Okay, easy enough to paper over, I guess. 2016-09-07T20:01:13Z Cooler_ joined #sbcl 2016-09-07T20:10:40Z nyef`: Yup! More subtle. Swapping out LET ((Y (LIST X))) for FLET ((Y () (LIST X))) in the test case, and adding the appropriate #' bits causes the error again. (-: 2016-09-07T20:11:07Z nyef`: On the upside, I now know where to start digging, and what the solution is likely to be. 2016-09-07T20:13:35Z chris_l quit (Quit: Ex-Chat) 2016-09-07T20:14:54Z stassats: ::: Running (SLEEP :PRETTY-MUCH-FOREVER) 2016-09-07T20:15:00Z stassats: actually doesn't like 2016-09-07T20:15:01Z stassats: lie 2016-09-07T20:15:16Z stassats: on mips 2016-09-07T20:15:51Z nyef`: Heh. 2016-09-07T20:15:57Z mood: Heh, I noticed that one whizzing by when I ran the test suite a few days ago 2016-09-07T20:16:04Z scymtym joined #sbcl 2016-09-07T20:16:05Z stassats: but it's non deterministic 2016-09-07T20:16:30Z nyef`: There's something wrong with the FPU (kernel FPU emulator?) on one of my MIPS boxes, causing a failure in our test suite. 2016-09-07T20:16:37Z nyef`: I forget precisely what. 2016-09-07T20:22:02Z pkhuong: nyef`: expt = exp * log 2016-09-07T20:22:35Z pkhuong: that was the bug last time anyway 2016-09-07T20:22:53Z nyef`: It was something related to trap signalling. 2016-09-07T20:24:17Z pkhuong: oh. yeah. I can see that failing in SW emulation 2016-09-07T20:28:54Z shka_ quit (Ping timeout: 260 seconds) 2016-09-07T20:59:09Z jrm quit (Quit: ciao) 2016-09-07T20:59:37Z jrm joined #sbcl 2016-09-07T20:59:45Z gingerale quit (Remote host closed the connection) 2016-09-07T21:00:59Z sjl quit (Ping timeout: 260 seconds) 2016-09-07T21:20:54Z shrdlu68 joined #sbcl 2016-09-07T21:22:02Z shrdlu68: Hi guys :) 2016-09-07T21:22:12Z shrdlu68: (pathname "[foo") => "[Condition of type SB-KERNEL:NAMESTRING-PARSE-ERROR]" 2016-09-07T21:22:46Z nyef`: I hope that you're complaining about the specific condition class here. d-: 2016-09-07T21:23:33Z Shinmera: shrdlu68: And..? 2016-09-07T21:25:37Z eschatologist quit (Quit: ZNC 1.6.3+deb1 - http://znc.in) 2016-09-07T21:27:41Z eschatologist joined #sbcl 2016-09-07T21:35:15Z shrdlu68: nyef`: Shinmera No, it's just that I tries that one ecl (the only other lisp I have on this machine), and there were no conditions. 2016-09-07T21:43:44Z shrdlu68: Ah, never mind, I've sorta figured it out. 2016-09-07T22:00:11Z nyef`: Does this sound right for NEWS: "bug fix: correctly handle the case of a non-local exit within a function terminating the extent of dynamic-extent functions and variables in the presence of multiple values (lp#1463127)"? 2016-09-07T22:01:22Z Xof: "PS if you understand this NEWS entry, why didn't you fix it yourself?" :-) 2016-09-07T22:01:31Z nyef`: Heh. 2016-09-07T22:01:40Z nyef`: Also, is it worth me trying to put together test cases for this? 2016-09-07T22:01:48Z Xof: yes *please* 2016-09-07T22:02:03Z Xof: I get twitchy when I see bug fix patches without test cases 2016-09-07T22:02:05Z nyef`: Heh. Fair enough. 2016-09-07T22:02:17Z Xof: (and nobody wants me to get twitchy) 2016-09-07T22:02:32Z nyef`: Especially when it touches deep magic like MAY-DELETE-VESTIGIAL-EXIT ? 2016-09-07T22:04:30Z shrdlu68 left #sbcl 2016-09-07T22:04:43Z hel-io joined #sbcl 2016-09-07T22:05:28Z nyef`: I just do a (with-test (:name whatever) (checked-compile '(lambda () broken-code) :allow-warnings t)) in compiler.pure.lisp for this? 2016-09-07T22:10:06Z nyef`: Hrm. Or even just COMPILE instead of CHECKED-COMPILE. 2016-09-07T22:15:28Z angavrilov quit (Remote host closed the connection) 2016-09-07T22:20:07Z nyef`: Okay, checking to make sure that the new test cases blow up without the fix. 2016-09-07T22:25:18Z hel-io quit 2016-09-07T22:35:21Z shrdlu68 joined #sbcl 2016-09-07T22:37:23Z shrdlu68: Now I'm getting "too many dots in the name". 2016-09-07T22:37:44Z shrdlu68: (namestring (make-pathname :directory "/foo/bar/" :name "[foo.bar.baz.1")) 2016-09-07T22:37:46Z nyef`: And fix committed. 2016-09-07T22:37:50Z nyef`: One more bug down. 2016-09-07T22:42:00Z ktt9 quit (Ping timeout: 276 seconds) 2016-09-07T22:49:06Z scymtym: shrdlu68: if you want the namestring in order to interface with other programs, try SB-EXT:NATIVE-NAMESTRING instead 2016-09-07T22:49:27Z nyef`: Looks like the last known bug on this level is lp#308918 ("out-of-extent return not checked in safe code"). 2016-09-07T22:52:29Z stassats: shrdlu68: and sb-ext:parse-native-namestring 2016-09-07T22:53:25Z shrdlu68: scymtym: That works, but I still don't understand the nature of the condition... 2016-09-07T22:53:31Z stassats: shrdlu68: your problem is actually from :Directory "/foo/bar" 2016-09-07T22:55:50Z stassats: so, (namestring (make-pathname :directory '(:absolute "foo" "bar") :name "[foo.bar.baz" :type "1")) 2016-09-07T22:57:20Z stassats: but for pathnames you get from somewhere external just use parse-native-namestring and native-namestring 2016-09-07T22:59:25Z scymtym: there actually is an inconsistency, though: :name "foo.bar" (without :type) has no namestring ("too many dots" because it wouldn't be able to roundtrip), :directory "foo/bar", however, has a namestring despite the fact that it cannot roundtrip 2016-09-07T22:59:28Z stassats: looks like i can do float-bignum comparison without any consing, although it'll require some work 2016-09-07T22:59:42Z shrdlu68: stassats: Ah, makes sense now. Thanks. 2016-09-07T22:59:53Z stassats: scymtym: it can't? 2016-09-07T23:00:36Z stassats: indeed, // doesn't do anything 2016-09-07T23:01:13Z stassats: well, i'd rather remove too many dots thing 2016-09-07T23:02:21Z scymtym: will that not lead to :name "foo.bar" =namestring> "foo.bar" =pathname> :name "foo" :type "bar"? 2016-09-07T23:02:44Z stassats: and what of it? 2016-09-07T23:02:59Z scymtym: maybe nothing 2016-09-07T23:03:46Z stassats: take (make-pathname :directory "/foo/bar" :name "foo/bar") 2016-09-07T23:03:53Z stassats: so, this dot thing is silly 2016-09-07T23:03:55Z scymtym: i just thought that was reason. like "too many dots given the absence of :type to produce a lossless namestring" 2016-09-07T23:04:26Z scymtym: that's true, doing it for one particular case is pointless 2016-09-07T23:07:18Z stassats: ccl escapes the dots 2016-09-07T23:07:53Z stassats: but :directory "/foo/bar" is parsed 2016-09-07T23:07:57Z stassats: wasn't there a bug? 2016-09-07T23:08:01Z stassats: ticket 2016-09-07T23:08:43Z stassats: by me, even http://trac.clozure.com/ccl/ticket/1203 2016-09-07T23:08:46Z stassats: recently fixed 2016-09-07T23:10:26Z stassats: (make-pathname :directory '(:absolute "foo/bar") :name "foo.bar.dasd") gets escaped, though 2016-09-07T23:12:00Z stassats: anyway, i'd rather just remove the dot requirement, unless there's something in CLHS (i doubt, and that's the trouble with pathnames) 2016-09-07T23:16:48Z karswell joined #sbcl 2016-09-07T23:17:17Z shrdlu68: stassats: What about the matching square brackets? 2016-09-07T23:18:01Z stassats: shrdlu68: what about them? 2016-09-07T23:18:27Z shrdlu68: (namestring "[foo") invokes "parse error in namestring: #\[ with no corresponding #\]" 2016-09-07T23:18:36Z shrdlu68: What's the rationale behind this? 2016-09-07T23:18:49Z stassats: try the same thing in your shell 2016-09-07T23:19:24Z shrdlu68: Did. `touch [foo` work just fine. 2016-09-07T23:19:38Z stassats: % ls [foo 2016-09-07T23:19:40Z stassats: zsh: bad pattern: [foo 2016-09-07T23:21:27Z shrdlu68: Works fine in bash. But I get it, escaping is needed. 2016-09-07T23:21:41Z stassats: well, it works fine until it doesn't 2016-09-07T23:22:01Z stassats: it could ignore that 2016-09-07T23:22:08Z stassats: but you still have to use parse-native-namestring 2016-09-07T23:23:05Z shrdlu68: Ok. 2016-09-07T23:28:54Z abbe quit (Ping timeout: 276 seconds) 2016-09-07T23:31:00Z abbe joined #sbcl 2016-09-07T23:36:59Z shrdlu68 left #sbcl 2016-09-07T23:54:33Z abbe quit (Ping timeout: 258 seconds)