00:11:16 -!- stassats [~stassats@wikipedia/stassats] has quit [Ping timeout: 245 seconds] 00:16:43 -!- echo-area [~user@123.112.232.137] has quit [Remote host closed the connection] 00:20:45 -!- Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has quit [Ping timeout: 265 seconds] 00:41:30 -!- segv- [~mb@95-91-243-185-dynip.superkabel.de] has quit [Ping timeout: 272 seconds] 00:45:25 -!- Bike [~Glossina@wl-nat109.it.wsu.edu] has quit [Ping timeout: 248 seconds] 01:11:54 Bike [~Glossina@wl-nat99.it.wsu.edu] has joined #sbcl 01:30:24 ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has joined #sbcl 01:48:14 -!- kwmiebach [~kwmiebach@xdsl-87-78-0-67.netcologne.de] has quit [Quit: Leaving] 02:12:25 ASau` [~user@p5083D0B6.dip0.t-ipconnect.de] has joined #sbcl 02:15:40 -!- ASau [~user@p54AFFE1B.dip0.t-ipconnect.de] has quit [Ping timeout: 244 seconds] 02:23:04 -!- ASau` is now known as ASau 02:54:04 Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has joined #sbcl 02:57:55 -!- ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has quit [Ping timeout: 272 seconds] 03:16:30 echo-area [~user@182.92.247.2] has joined #sbcl 03:27:49 ... I've lost quite some time to neighbo[u]r and colo[u]r today. 03:31:29 -!- Bike [~Glossina@wl-nat99.it.wsu.edu] has quit [Ping timeout: 272 seconds] 03:38:19 -!- christoph_debian [~christoph@ppp-46-244-231-19.dynamic.mnet-online.de] has quit [Read error: Operation timed out] 03:39:23 Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has joined #sbcl 03:52:40 christoph_debian [~christoph@ppp-88-217-34-154.dynamic.mnet-online.de] has joined #sbcl 04:32:17 -!- echo-area [~user@182.92.247.2] has quit [Ping timeout: 272 seconds] 04:33:41 ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has joined #sbcl 04:55:38 -!- yacks [~py@103.6.159.103] has quit [Quit: Leaving] 05:44:53 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 05:59:31 -!- oleo [~oleo@xdsl-78-35-168-216.netcologne.de] has quit [Remote host closed the connection] 06:01:57 sdemarre [~serge@91.180.77.67] has joined #sbcl 06:35:53 -!- sdemarre [~serge@91.180.77.67] has quit [Ping timeout: 246 seconds] 06:52:58 echo-area [~user@182.92.247.2] has joined #sbcl 07:08:36 angavrilov [~angavrilo@217.71.227.190] has joined #sbcl 07:19:01 -!- ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has quit [Remote host closed the connection] 07:32:53 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 248 seconds] 07:46:45 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 08:34:14 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 240 seconds] 09:29:36 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 09:34:06 -!- slyrus [~chatzilla@107.200.11.207] has quit [Read error: Connection reset by peer] 09:36:04 slyrus [~chatzilla@107.201.5.172] has joined #sbcl 09:42:47 -!- kludge` [~comet@unaffiliated/espiral] has quit [Ping timeout: 246 seconds] 09:50:28 prxq [~mommer@x2f6bdde.dyn.telefonica.de] has joined #sbcl 10:08:07 -!- echo-area [~user@182.92.247.2] has quit [Remote host closed the connection] 10:10:51 kludge` [~comet@unaffiliated/espiral] has joined #sbcl 10:12:57 stassats [~stassats@wikipedia/stassats] has joined #sbcl 10:31:29 -!- kludge` [~comet@unaffiliated/espiral] has quit [Ping timeout: 268 seconds] 10:34:38 kludge` [~comet@unaffiliated/espiral] has joined #sbcl 11:00:45 kwmiebach [~kwmiebach@xdsl-87-78-0-67.netcologne.de] has joined #sbcl 11:09:45 echo-area [~user@123.120.242.102] has joined #sbcl 11:37:07 Munksgaard [~philip@80-71-132-106.u.parknet.dk] has joined #sbcl 11:52:38 segv- [~mb@95-91-243-177-dynip.superkabel.de] has joined #sbcl 11:53:17 so on the subject of defstruct and slot names, I now no longer understand anything 11:53:44 who does? 11:54:54 "Each slot keyword argument must be a keyword whose name corresponds to the name of a structure slot" 11:55:20 I *think* this gives implementations licence to do what we currently do, which is to do slot<->symbol lookups using string= rather than symbol equality 11:55:58 if they had wanted unambiguity, they would have said "the name of the name of a structure slot" but then no-one would have understood it first time round 11:56:01 so, you can't have (defstruct x #:a #:a) 11:56:18 right 11:57:02 so that means that in sbcl it's not nonsense to have structure slots with keyword or constant names, because you can do (defstruct (x (:constructor make-x (#:t))) t) and things "work" 11:57:43 but other implementations (well, clisp at least) don't let you make BOA constructors for constant-name slots, because they (I infer) do arg matching by EQL 12:14:09 echo-are` [~user@123.120.242.102] has joined #sbcl 12:14:45 -!- fe[nl]ix [~quassel@pdpc/supporter/professional/fenlix] has quit [Remote host closed the connection] 12:14:45 -!- Blkt [~Blkt@2a01:4f8:150:80a1::aaaa] has quit [Remote host closed the connection] 12:14:53 Blkt [~Blkt@2a01:4f8:150:80a1::aaaa] has joined #sbcl 12:14:56 fe[nl]ix [~quassel@pdpc/supporter/professional/fenlix] has joined #sbcl 12:17:28 Munksgaa1d [~philip@80-71-132-106.u.parknet.dk] has joined #sbcl 12:18:57 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 12:21:47 -!- Munksgaard [~philip@80-71-132-106.u.parknet.dk] has quit [*.net *.split] 12:21:47 -!- echo-area [~user@123.120.242.102] has quit [*.net *.split] 12:22:14 -!- scymtym [~user@ip-5-147-115-29.unitymediagroup.de] has quit [Ping timeout: 244 seconds] 12:45:01 -!- kwmiebach [~kwmiebach@xdsl-87-78-0-67.netcologne.de] has quit [Ping timeout: 272 seconds] 12:45:15 kwmiebach [~kwmiebach@xdsl-87-78-238-226.netcologne.de] has joined #sbcl 12:49:41 -!- stassats [~stassats@wikipedia/stassats] has quit [Ping timeout: 248 seconds] 12:59:58 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 13:04:05 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 244 seconds] 13:15:41 LiamH [~none@129-2-129-146.wireless.umd.edu] has joined #sbcl 13:23:40 attila_lendvai [~attila_le@92.46.28.236] has joined #sbcl 13:23:40 -!- attila_lendvai [~attila_le@92.46.28.236] has quit [Changing host] 13:23:40 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 13:33:21 yacks [~py@103.6.159.103] has joined #sbcl 13:47:05 -!- Munksgaa1d [~philip@80-71-132-106.u.parknet.dk] has quit [Read error: Connection reset by peer] 13:48:12 -!- segv- [~mb@95-91-243-177-dynip.superkabel.de] has quit [Ping timeout: 268 seconds] 13:51:06 Munksgaard [~philip@80-71-132-106.u.parknet.dk] has joined #sbcl 14:00:28 gko_ [~gko@208.69.41.42] has joined #sbcl 14:04:38 -!- Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has quit [Ping timeout: 240 seconds] 14:11:00 Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has joined #sbcl 14:17:41 -!- ferada [~ferada@37.221.196.86] has quit [Quit: leaving] 14:20:19 -!- echo-are` [~user@123.120.242.102] has quit [Read error: Connection reset by peer] 14:24:07 echo-area [~user@123.120.245.118] has joined #sbcl 14:31:19 -!- LiamH [~none@129-2-129-146.wireless.umd.edu] has quit [Quit: Leaving.] 14:35:08 oleo [~oleo@xdsl-78-35-145-49.netcologne.de] has joined #sbcl 14:40:38 -!- gko_ [~gko@208.69.41.42] has quit [Ping timeout: 246 seconds] 14:41:15 gko_ [gko@114-32-172-194.HINET-IP.hinet.net] has joined #sbcl 14:41:49 teggi [~teggi@123.20.102.167] has joined #sbcl 14:58:48 fisxoj [~fisxoj@dyn-129-97-41-230.dynamic.uwaterloo.ca] has joined #sbcl 15:03:38 stassats [~stassats@wikipedia/stassats] has joined #sbcl 15:10:09 -!- gko_ [gko@114-32-172-194.HINET-IP.hinet.net] has quit [Ping timeout: 244 seconds] 15:10:25 gko_ [~gko@192.161.167.31] has joined #sbcl 15:25:25 -!- gko_ [~gko@192.161.167.31] has quit [Ping timeout: 248 seconds] 15:25:43 gko_ [gko@114-32-172-194.HINET-IP.hinet.net] has joined #sbcl 15:41:59 -!- Munksgaard [~philip@80-71-132-106.u.parknet.dk] has quit [Read error: Operation timed out] 15:50:21 -!- teggi [~teggi@123.20.102.167] has quit [Remote host closed the connection] 15:54:32 -!- gko_ [gko@114-32-172-194.HINET-IP.hinet.net] has quit [Ping timeout: 265 seconds] 15:55:22 gko_ [~gko@192.161.167.37] has joined #sbcl 15:57:36 segv- [~mb@95-91-240-255-dynip.superkabel.de] has joined #sbcl 16:17:56 nice. that's also the sanest interpretation I could think of yesterday (: 16:18:25 that kills slot-value on structures (at least for constant names), but I don't know if anyone depends on that. 16:18:52 i bet somebody does, even if it's not defined 16:19:53 what do you mean by kills ? 16:22:15 fe[nl]ix: does not work anymore, unless we move the string= logic there too, something I'm not too keen about. 16:26:52 I don't think it kills slot-value on structures 16:27:28 I'm currently thinking in terms of an exception to the slotd name initarg constraint for structure slots (only) 16:28:20 so (defstruct foo nil) works, (slot-value (make-foo :nil 3) nil) works 16:28:36 if you want to use with-slots you get to be careful yourself that you don't use the wrong variable names 16:28:45 and everyone is happy 16:29:18 similarly if you want to write boa constructors you can, you just have to use #:nil as a variable 16:29:20 with-slots is not defined for structures either, so, all bets are off 16:29:42 stassats: that why I don't really care. But if Krystof thinks string= is doable, why not? 16:30:18 I think it's at least arguable 16:30:26 having slot-value work on structures is really nice, even if not standard. i think all implementations do support it 16:30:28 doable is easy: it's already done 16:30:45 (it was already done until the strict checking undid it) 16:30:54 I thought it was on symbol equality. 16:31:32 more confusion. slot-value is on symbol equality. defstruct stuff is symbol-name 16:32:17 which is why I'm not sure what happens to slot-value on structures. 16:32:47 oh. At the moment it uses the exact slot name (the symbol) of the slot 16:32:59 but it doesn't matter if that symbol is constant or not 16:34:00 so the slot's name for defstruct purposes is handled via string=, but for clos purposes (except for :name initarg checking) via eql 16:34:33 I was thinking that if we can do slot-value lookups on structures with string=, the slot's "name" can always be an uninterned symbol if it's a constant ;) but I don't know how realistic that is. 16:39:49 LiamH [~none@aes048188.nrl.navy.mil] has joined #sbcl 16:42:03 -!- LiamH [~none@aes048188.nrl.navy.mil] has quit [Client Quit] 16:43:40 -!- slyrus [~chatzilla@107.201.5.172] has quit [Ping timeout: 264 seconds] 16:49:20 yeah, though that doesn't solve the with-slots problem (or rather, makes it a bit harder). And then things like find-slot become a bit weird, and... actually my brain hurts now 17:10:01 -!- gko_ [~gko@192.161.167.37] has quit [Ping timeout: 244 seconds] 17:11:03 -!- Bike [~Glossina@gannon-wless-gw.resnet.wsu.edu] has quit [Ping timeout: 244 seconds] 17:17:25 Bike [~Glossina@wl-nat105.it.wsu.edu] has joined #sbcl 17:23:40 Munksgaard [~philip@80-71-132-106.u.parknet.dk] has joined #sbcl 18:37:06 stassats: would you like to apply 18:37:08 lp 1249055 18:37:08 https://bugs.launchpad.net/bugs/1249055 18:37:08 ? 18:37:14 it reduces the core size :) 18:37:35 what about performance? 18:37:47 no measurable impact 18:38:03 but if there is any, it should be faster 18:39:53 restarts with control transfers are hard to benchmark since the restart has to be re-established after the control transfer for the next iteration 18:40:07 this causes restart-{bind,case} to dominate the runtime 18:45:19 if there were a way to disesteblish current restarts, there may be no need in TLX and heap allocating args 18:45:58 scymtym_: and your optimization can be also applied to single arguments 18:47:09 -!- Munksgaard [~philip@80-71-132-106.u.parknet.dk] has quit [Ping timeout: 252 seconds] 18:48:56 stassats: re single arguments to funcall instead of apply and avoid consing up the rest list? 18:49:02 right 18:49:19 ok, i will look into that 18:49:22 just have to check that the single argument is not &key or &optional 18:49:32 well, i can do that for you, i'm going to apply it 18:49:50 unless you want to get all the glory of the commit authorship 18:50:14 i don't care too much about the glory 18:51:03 i tried (and failed) to find a way to make the restart and its functions load-time constants 18:51:06 *stassats* rubs hands 18:51:35 now i tend to think that that's impossible, even if the functions are not closures 18:51:55 your patch actually lowers thing 128K here, that's great 18:52:00 on x86_64? 18:52:01 (four whole pages!) 18:52:06 yes 18:52:14 -!- Bike [~Glossina@wl-nat105.it.wsu.edu] has quit [Ping timeout: 240 seconds] 18:52:23 basically twice the amount compared to x86 18:52:30 that's nice indeed 18:53:09 it would be nice to optimize the (lambda (&optional condition) ) case 18:53:28 because at least continue restarts look like that 18:54:08 Bike [~Glossina@wl-nat109.it.wsu.edu] has joined #sbcl 18:54:22 that's too much complication, i'd rather look then optimizing all cases 18:54:58 sure, i wouldn't like the complication either 18:55:36 it needs to go out because the restarts established by the current restart-case should not be visible to the handler 18:56:16 yes 18:57:01 so, if there were another way of achieving so, it could optimize all cases 18:59:09 since restarts are currently always freshly consed, they could just have a slot for enabling/disabling 18:59:13 the only thing i don't get is why VERIFY-OR-FIX-PERFECT-SUNDAE from clhs is 3048 bytes now, but 2919 on 1.1.12.30 18:59:41 i forgot to test on a build before the patch 19:02:27 the expansion for the RESTART-CASE in V-O-F-P-S should be identical since all restarts take at least one argument 19:03:30 indeed 19:03:39 something else made the size to increase 19:05:16 probably WITH-CONDITION-RESTARTS in 69e6aef 19:05:31 sdemarre [~serge@91.176.223.179] has joined #sbcl 19:05:39 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 272 seconds] 19:14:07 with 1 argument funcall, 3048 => 2526 19:16:22 nice 19:19:05 for some reason, that's only 98K now, not 128K 19:19:16 sometimes size changes do not make sense 19:20:03 -!- fisxoj [~fisxoj@dyn-129-97-41-230.dynamic.uwaterloo.ca] has quit [Ping timeout: 252 seconds] 19:20:50 i'm looking your suggestion of avoiding the tagbody stuff altogether by "de-establishing" restarts 19:20:54 did not align to the page boundary perfectly or not 19:24:45 what would happen if there was sb-kernel:*restart-clusters* was bound to the old value in the body? 19:26:43 there might some other environment restrictions 19:27:18 that could work if there was no way of holding on to a restart instance obtained outside of the restart function and then using it inside the restart function 19:31:18 i'm not sure i understand 19:32:55 sb-kernel:*restart-clusters* affects find-restart and friends, but if the user already has the restart instance, rebinding sb-kernel:*restart-clusters* will not make that restart instance "not-established" 19:33:23 however, i'm not sure whether it is possible to hold on to a restart instance in such a way in the context of RESTART-CASE 19:34:23 the non-local exit basically means get *restart-clusters* to the state it was before entering the body 19:36:03 yes, but in (restart-case FORM CASES), FORM can modify restart instances when unwinding 19:36:15 affecting there "establishedness" 19:36:23 why does that matter? 19:36:36 i'm not sure it matters 19:37:16 with a NLX, *restart-clusters* will have the same value as before entering FORM 19:37:20 i just wanted to say that re-binding *restart-clusters* is not entirely equivalent to the control transfer 19:37:57 it's not, but it's equivalent with respect to *restart-clusters* 19:38:12 let me think for a second 19:39:09 what about (restart-case (restart-case (with-condition-restarts r1 (c1) BODY) (r2 () DO-SOMETHING-WITH r1)) (r1 ())) 19:39:20 it says "the dynamic state is unwound appropriately (so that the restarts established around the restartable-form are no longer active)" 19:39:41 does it have to be unwound fully, because of the thing in parenthesis, or only the thing in parenthesis should happen 19:40:55 DO-SOMETHING-WITH r1, which is the restart function of r2, has to be executed with "the dynamic state is unwound appropriately" 19:41:11 this includes, i think, undoing the effect of with-condition-restarts 19:41:21 which is not achieved by re-binding *restart-clusters* 19:41:30 (unless i'm totally confused) 19:41:49 it is not achieved, indeed 19:41:59 -!- segv- [~mb@95-91-240-255-dynip.superkabel.de] has quit [Ping timeout: 246 seconds] 19:42:05 nothing is achieved besides "so that the restarts established around the restartable-form are no longer active" 19:42:19 -!- Bike [~Glossina@wl-nat109.it.wsu.edu] has left #sbcl 19:42:47 -!- Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has quit [Ping timeout: 268 seconds] 19:42:59 if it is specified like that, the current behavior might even be wrong 19:43:25 because currently, the effect of with-condition-restarts is undone before executing the restart function 19:43:42 the notes in the end suggest that it's right, but notes are not normative 19:44:59 segv- [~mb@95-91-240-255-dynip.superkabel.de] has joined #sbcl 19:48:15 well, i think it's safer to unwind the whole environment 19:49:20 i just tried rebinding *restart-clusters* and i didn't see a difference in any of the restart benchmarks 19:49:36 also, the generated code is slightly larger for the cases i tested 19:50:05 so the original path plus special casing one-parameter restarts seems to be the way to go 19:50:13 s/path/patch/ 19:56:43 Vivitron [~Vivitron@c-50-172-44-193.hsd1.il.comcast.net] has joined #sbcl 19:57:30 -!- angavrilov [~angavrilo@217.71.227.190] has quit [Remote host closed the connection] 20:31:23 -!- prxq [~mommer@x2f6bdde.dyn.telefonica.de] has quit [Quit: Leaving] 20:31:38 prxq [~mommer@x2f6bdde.dyn.telefonica.de] has joined #sbcl 20:40:44 making (make-restart :name name :function ...) into (make-restart name function ...) => 2526 => 2456 20:41:03 but actually, i can turn all the keys into &optional, for even more savings 20:42:12 though that would mean specifying something at the end will not default its arguments 20:42:37 i mean, intermediates won't default 20:48:36 stassats: only test-function has a non-nil default 20:49:02 right, i'm preparing a build testing that 20:49:18 *stassats* didn't want to fill the channel with the usual mumbling 20:49:19 but map-restarts could be changed to interpret test-function = nil like (constantly t) 20:50:09 wouldn't that also avoid consing up the default test function in make-restart? 20:50:13 no, my idea was to put it to the end of &optional 20:50:46 and default interactive-function and report-function to nil in restart-bind 20:52:26 scymtym_: it's a bare function, no consing 20:53:05 stassats: yeah, i just realized 20:54:45 the only donwside is 3 arguments if only test-function is passed, all other combinations are either the same or smaller 20:54:58 and combined with not needing to parse keywords, it should be also faster 20:55:59 if you paste the patch somewhere, i can run the benchmarks 20:57:00 2526 => 2456 => 2360 20:57:17 3048 => 2360 in total 20:58:09 maybe i should somehow add a code-size dimension to the benchmarking framework 21:02:28 did I say "simple"? 21:02:32 or "easy"? 21:03:20 compiled slot-value on structs => There is no applicable method for the generic function SLOT-DEFINITION-LOCATION when called with arguments # 21:03:25 because the world hates me 21:13:38 scymtym_: http://paste.lisp.org/display/139829 21:14:33 here come conflicts with my :accept-function hack 21:15:02 stassats: on it 21:16:55 i see a similar change for %make-random-state 21:20:02 for some reason type checks for frozen types also check for layout-invalid-error, but unfrozens ones don't 21:20:23 making the size advantage for not checking subclasses minimal 21:29:31 so, if i freeze the type, and disable the layout checking for frozen types (which already happens with unfrozen types), the size goes to 2360 => 2326 21:30:39 i'm out of sane ideas now 21:31:13 slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has joined #sbcl 21:33:27 moving raw slots inline with the rest will save a lot of code. 21:34:20 what do you mean? 21:35:44 do you mean that raw slots of frozen structures don't need to use calculate the offset from the end of the slots and can use a constant? 21:37:17 stassats: http://www.techfak.uni-bielefeld.de/~jmoringe/graphs.tar.gz 21:37:39 that restart-* patch + frozen types not being checked for validity, gives me a total of 192KB core savings 21:38:20 oh come on, a tar bomb! 21:38:21 (red, green, blue) = old (runtime, bytes cosed, code size); (curry, magenta, cyan) = new (rt, bc, cs) 21:38:56 stassats: sorry, i'm in a hurry 21:39:01 have to go home now 21:41:56 -!- sdemarre [~serge@91.176.223.179] has quit [Read error: Operation timed out] 21:41:58 i see no difference in those graphs 21:42:08 well, that's at least not bad 21:42:32 asya [~user@ip-5-147-115-29.unitymediagroup.de] has joined #sbcl 21:44:31 stassats: for frozen structures, it depends on inheritance. But if raw slows were inline, that would work for all structure types. 21:45:12 so, you mean they are in the order they are specified? 21:45:30 and not from the end? 21:46:04 right. 21:46:04 the gc would have more work in this case 21:46:10 not so much. 21:46:32 the layout have to be easily understandable by C code 21:46:34 I had it working except for Lisp-side runtime bits, I think. 21:47:04 a bit-map may work 21:47:08 You just need a word-granularity bitmap. We already look in the layout object to know the number of raw slots. 21:48:07 what is the maximum number of slots? 21:48:19 the bitmap would need to be variable length 21:50:44 it would be. bignum or array of words. 21:50:47 I think I went with a bignum 22:00:04 Munksgaard [~philip@80-71-132-106.u.parknet.dk] has joined #sbcl 22:00:23 ehaliewicz [~user@50-0-51-11.dsl.static.sonic.net] has joined #sbcl 22:12:14 scymtym [~user@ip-5-147-115-29.unitymediagroup.de] has joined #sbcl 22:15:14 stassats: re graphs: in restart-bind.png, runtime is slightly better, in restart-case.png runtime is slightly better as well and code size is a smaller 22:16:14 i see another possibility, coerce-to-condition (datum arguments default-type fun-name) => coerce-to-condition (datum default-type fun-name &rest arguments) 22:17:02 i'll commit this thing first, or my source tree is a mess 22:18:31 -!- prxq [~mommer@x2f6bdde.dyn.telefonica.de] has quit [Quit: Leaving] 22:29:52 -!- slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has quit [Ping timeout: 264 seconds] 23:03:14 damn, changing coerce-to-condition doesn't reduce consing because make-condition calls GETF on it 23:06:18 it does of course reduce my test-case size, 2326 => 2207, but that's not worth it 23:07:20 time to write getf for &more 23:09:56 davazp [~user@92.251.142.137.threembb.ie] has joined #sbcl 23:22:43 condition objects are really weird 23:24:28 (sb-kernel::condition-actual-initargs (make-condition 'simple-error :let-me-invent-a-slot :ok)) => (:LET-ME-INVENT-A-SLOT :OK) 23:28:14 no wonder signalling a lot of conditions is not cheap 23:29:23 huh. That's not supposed to happen, is it? 23:29:52 i don't know what is supposed to happen with conditions anymore 23:31:35 the layout is weird, it's two lists, actual-initargs and assigned-slots 23:32:38 both are consulted when getting values 23:32:40 I'm surprised it's not just a defclass. 23:32:57 i'm not, since it has to work during cross-compilation 23:33:01 I guess another instance of the clos isn't available yet problem. 23:33:12 Wasn't someone going to fix that? :) 23:33:39 but i don't know why it doesn't use a vector + an index through the class 23:33:58 instead of what sb-kernel::condition-reader-function does 23:34:22 who made it was clearly on crack 23:35:32 quick, to the annotate! :) 23:35:42 it's from cmucl 23:35:54 i can tell without even looking up 23:37:21 Author: ram Date: Mon Aug 30 21:24:18 1993 +0000 23:37:24 "Changed conditions to be non-structure (but also non-PCL) instances that support multiple inheritance and the other required CLOS operations." 23:43:12 even a simple plist will be saner 23:44:02 It seems that it would sure be nice if the CLOS-in-bootstrap problem wasn't a problem, so that it could actually just be a class. 23:44:20 But I have this bad recollection that someone spent a bunch of time on that without getting anywhere. 23:45:00 "The consequences are unspecified if an attempt is made to assign the slots by using setf." 23:45:35 what does that even mean? 23:45:41 it might work. it might not. 23:45:58 yes, but it has ":writer can be supplied more than once for a given slot and must name a generic function." 23:46:37 Maybe it's restating "Whether a user-defined condition type has slots that are accessible by with-slots is implementation-dependent. Furthermore, even in an implementation in which user-defined condition types would have slots, it is implementation-dependent whether any condition types defined in this document have such slots or, if they do, what their names might be; only the reader functions documented by this specification may be relied 23:46:37 upon by portable code." 23:46:50 and "Accessors are created according to the same rules as used by defclass." 23:47:13 does it mean "setf slot-value" 23:47:20 I'm guessing. 23:48:24 having conditions, structures and classes being completely different is strange 23:49:19 If I had to guess at the history... 23:49:23 they wanted to make conditions be classes. 23:49:35 but then lisp impl vendors like cmucl said "OMG WE CAN'T DO THAT!!!" 23:49:37 Issue CLOS-CONDITIONS Writeup 23:51:34 Cost of Non-Adoption: "People will wonder if CLOS is really something we're committed to." 23:51:56 http://www.lispworks.com/documentation/lw51/CLHS/Issues/iss048_w.htm 23:52:01 "CLOS-CONDITIONS-AGAIN" 23:52:02 heh 23:56:02 too bad MOP was not included, this would have solved many similar concerns 23:57:43 and too bad that even CLOS wasn't universally embraced 23:57:50 slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has joined #sbcl 23:59:27 -!- Munksgaard [~philip@80-71-132-106.u.parknet.dk] has quit [Ping timeout: 252 seconds]