00:05:12 -!- rpg [~rpg@216.243.156.16.real-time.com] has quit [Quit: rpg] 01:22:41 -!- christoph_debian [~user@oteiza.siccegge.de] has quit [Ping timeout: 240 seconds] 01:25:30 -!- homie [~levgue@xdsl-78-35-154-95.netcologne.de] has quit [Ping timeout: 265 seconds] 01:26:00 -!- wbooze [~wbooze@xdsl-78-35-154-95.netcologne.de] has quit [Ping timeout: 265 seconds] 01:32:50 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 01:35:27 -!- psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has quit [Remote host closed the connection] 01:35:37 -!- galdor [galdor@def92-10-88-162-192-107.fbx.proxad.net] has quit [Ping timeout: 240 seconds] 01:36:33 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 01:36:41 galdor [galdor@def92-10-88-162-192-107.fbx.proxad.net] has joined #sbcl 01:37:42 -!- psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has quit [Remote host closed the connection] 01:38:16 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 01:40:03 rbarraud__ [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has joined #sbcl 01:40:27 -!- rbarraud_ [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has quit [Ping timeout: 244 seconds] 01:41:03 -!- clop [~jared@moat3.centtech.com] has quit [*.net *.split] 01:41:03 -!- Neronus [christian@heraklit.ayous.org] has quit [*.net *.split] 01:45:57 clop [~jared@moat3.centtech.com] has joined #sbcl 01:45:57 Neronus [christian@heraklit.ayous.org] has joined #sbcl 02:34:57 -!- dlowe [dlowe@digital.sanctuary.org] has quit [Quit: ZNC - http://znc.sourceforge.net] 02:35:57 dlowe [dlowe@digital.sanctuary.org] has joined #sbcl 03:25:14 wbooze [~wbooze@xdsl-78-35-190-65.netcologne.de] has joined #sbcl 03:44:06 attila_lendvai [~attila_le@37.99.78.215] has joined #sbcl 03:44:07 -!- attila_lendvai [~attila_le@37.99.78.215] has quit [Changing host] 03:44:07 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 04:23:28 rbarraud [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has joined #sbcl 04:24:21 -!- rbarraud__ [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has quit [Ping timeout: 265 seconds] 04:40:46 -!- kanru [~kanru@66.207.208.98] has quit [Ping timeout: 265 seconds] 04:52:57 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 05:10:35 kanru [~kanru@173.243.46.194] has joined #sbcl 05:42:38 -!- psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has quit [Quit: Leaving.] 07:29:14 -!- Kryztof [~user@81.174.155.115] has quit [Ping timeout: 246 seconds] 07:37:58 attila_lendvai [~attila_le@87.247.39.220] has joined #sbcl 07:37:59 -!- attila_lendvai [~attila_le@87.247.39.220] has quit [Changing host] 07:37:59 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 08:16:36 echo-area [~user@182.92.247.2] has joined #sbcl 08:24:32 -!- echo-area [~user@182.92.247.2] has quit [Remote host closed the connection] 08:25:43 echo-area [~user@182.92.247.2] has joined #sbcl 08:38:15 -!- easye [~user@213.33.70.157] has quit [Remote host closed the connection] 08:38:30 easye [~user@213.33.70.157] has joined #sbcl 08:41:54 -!- echo-area [~user@182.92.247.2] has quit [Remote host closed the connection] 08:43:50 echo-area [~user@182.92.247.2] has joined #sbcl 08:51:52 prxq [~mommer@mnhm-4d012985.pool.mediaWays.net] has joined #sbcl 09:07:00 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 248 seconds] 09:07:10 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 09:27:37 -!- echo-area [~user@182.92.247.2] has quit [Ping timeout: 240 seconds] 09:31:23 echo-area [~user@182.92.247.2] has joined #sbcl 09:39:08 -!- rbarraud [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has quit [Ping timeout: 248 seconds] 10:07:27 -!- prxq [~mommer@mnhm-4d012985.pool.mediaWays.net] has quit [Quit: Leaving] 10:12:24 -!- echo-area [~user@182.92.247.2] has quit [Remote host closed the connection] 10:40:28 -!- antoszka [~antoszka@unaffiliated/antoszka] has quit [Ping timeout: 248 seconds] 11:27:42 antoszka [~antoszka@unaffiliated/antoszka] has joined #sbcl 11:47:15 stassats [~stassats@wikipedia/stassats] has joined #sbcl 12:50:00 -!- Vivitron [~Vivitron@pool-98-110-213-33.bstnma.fios.verizon.net] has quit [Quit: trivial-irc-0.0.3] 12:50:14 Vivitron [~Vivitron@pool-98-110-213-33.bstnma.fios.verizon.net] has joined #sbcl 13:20:51 -!- kanru [~kanru@173.243.46.194] has quit [Ping timeout: 265 seconds] 13:28:05 rpg [~rpg@216.243.156.16.real-time.com] has joined #sbcl 13:29:23 -!- flip214 [~marek@unaffiliated/flip214] has quit [Remote host closed the connection] 13:30:02 flip214 [~marek@86.59.100.100] has joined #sbcl 13:30:03 -!- flip214 [~marek@86.59.100.100] has quit [Changing host] 13:30:03 flip214 [~marek@unaffiliated/flip214] has joined #sbcl 13:36:37 -!- wbooze [~wbooze@xdsl-78-35-190-65.netcologne.de] has quit [Ping timeout: 240 seconds] 13:40:41 -!- stassats [~stassats@wikipedia/stassats] has quit [Ping timeout: 244 seconds] 13:41:55 psilord [~psilord@23-25-144-217-static.hfc.comcastbusiness.net] has joined #sbcl 13:44:00 kanru [~kanru@66.207.208.98] has joined #sbcl 13:57:12 antgreen [~user@bas3-toronto06-1176449589.dsl.bell.ca] has joined #sbcl 14:07:30 wbooze [~wbooze@xdsl-78-35-168-12.netcologne.de] has joined #sbcl 14:09:16 -!- wbooze [~wbooze@xdsl-78-35-168-12.netcologne.de] has quit [Read error: Connection reset by peer] 14:20:51 -!- rpg [~rpg@216.243.156.16.real-time.com] has quit [Quit: rpg] 14:23:00 wbooze [~wbooze@xdsl-78-35-168-12.netcologne.de] has joined #sbcl 14:38:34 gko [~user@114-34-168-13.HINET-IP.hinet.net] has joined #sbcl 14:50:24 -!- kanru [~kanru@66.207.208.98] has quit [Ping timeout: 252 seconds] 14:59:53 kanru [~kanru@66.207.208.98] has joined #sbcl 15:05:16 milanj [~milanj_@79-101-138-51.dynamic.isp.telekom.rs] has joined #sbcl 15:42:37 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 15:51:08 -!- antgreen [~user@bas3-toronto06-1176449589.dsl.bell.ca] has quit [Read error: Connection reset by peer] 15:55:24 -!- gko [~user@114-34-168-13.HINET-IP.hinet.net] has quit [Quit: ERC Version 5.3 (IRC client for Emacs)] 15:56:51 stassats [~stassats@wikipedia/stassats] has joined #sbcl 16:06:04 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 16:06:15 christoph_debian [~user@oteiza.siccegge.de] has joined #sbcl 16:11:03 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 276 seconds] 16:11:18 attila_lendvai [~attila_le@87.247.61.29] has joined #sbcl 16:11:18 -!- attila_lendvai [~attila_le@87.247.61.29] has quit [Changing host] 16:11:18 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 16:29:00 antgreen [~user@bas3-toronto06-1176449589.dsl.bell.ca] has joined #sbcl 16:29:54 i wonder if it's entirely possible to make SBCL not wakeup at all when idling in slime 16:32:29 mailboxes seem to be quiet 16:33:16 stassats: not with the recent switch to spinlocks 16:33:46 -!- milanj [~milanj_@79-101-138-51.dynamic.isp.telekom.rs] has quit [Ping timeout: 244 seconds] 16:34:31 pkhuong: well, at least it's not showing anywhere near the top in powerop 16:34:36 and doesn't call any syscalls 16:36:09 the only thing slime seems to be waking up to is to check for interrupts 16:38:32 milanj [~milanj_@79-101-138-51.dynamic.isp.telekom.rs] has joined #sbcl 16:39:40 even if enable immediate execution of them, without queuing 16:41:12 the definition of condition-timed-wait is rather silly (macrolet ((foo () (cond ((member :sb-lutex *features*) ...) (t ...)))) (foo)) 16:41:23 i wonder what happened to feature-expressions 16:53:40 pkhuong: i see that mailboxes are using futexes 16:56:15 stassats: when available. 16:56:42 well, i only care about linux right now 16:57:31 futexes will still wake the process up randomly. 16:58:27 sbcl+slime wakes up 25 times a second right now, so, as long as it's an infrequent random 16:59:06 and i care because, i usually leave sbcl in slime running all the time, and it's keep eating CPU, which is not nice on a laptop 17:15:48 how are you measuring the problem / the wakeup frequency? 17:15:59 ... how can it wake if not through a syscall or busy loop? when you say interrupt, do you mean interrupt==signal or interrupt==interrupt-thread or something else? is the timer.lisp stuff involved? 17:16:15 lichtblau: powertop, and TIME+ column in top 17:16:26 [h]top 17:18:49 lichtblau: interrupt in slime just means executing something while something else is busy 17:19:29 i'm a little vague because i'm not sure for exactitude 17:20:21 basically, it has a variable *pending-slime-interrupts*, which has functions, and it checks it every 0.2 seconds and executes them 17:22:18 and i'm not yet sure to the nature of how this variable is updated 17:24:40 hmm, are the exhaust tests (in normal, non-akovalenko) SBCL failing with a nasty, test-suite-driver-killing alert window for anyone else, too, or has something weird happened to my windows? 17:25:24 looks like through interrupt-thread, but it doesn't want to execute them immediately to not leave its mailbox implementation in an inconsistent state, so that's why it has a 0.2 second timeout on waiting for mailboxes and checks for interrupts 17:26:38 what are the exhaust tests? 17:28:46 exhaust.impure.lisp 17:29:20 *stassats* disables the said check for interrupts, and C-c C-c stops working until i execute something at the REPL, but the amount of interrupts went down to 5/s 17:29:34 so, my understanding of it, and the cause of it are correct 17:32:08 lichtblau: sorry, i'm not really willing to reboot to windows 17:33:01 I can understand that! :-) 17:34:08 *stassats* started sprof to see where the other 5 interrupts/s are coming from 17:37:28 erm, are we in a freeze? (Just double-checking since jsnell seems to have shifted to releasing mid-month.) 17:37:49 lichtblau: not that i've heard 17:40:27 OK. Will disable those tests then. (Not that I think anyone except eslaughter and akovalenko cares about windows anyway...) 17:40:55 and the other 5 are from auto-flush-loop, which sleeps for 0.2 seconds 17:41:04 the math checks out 17:42:29 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 17:43:31 disabling auto-flush, no more interrupts, now to figure out how to make everything work back while introducing the minimal amount of wake-ups 17:46:48 if i succeed, we can advertise SBCL as being Green 17:47:00 that will surely bring along more users 17:49:11 the Green[*] Lisp technology 17:49:14 [*] except on non-futex platforms [**] conditions apply 17:50:02 even not using futexes surely could be better than what slime is currently doing 17:51:06 it's okay, there's no tools to measure wakeups on non-linux platforms. 17:51:18 So it doesn't matter! 17:51:29 foom: what about the amount of time used by the process? 17:51:41 -!- antgreen [~user@bas3-toronto06-1176449589.dsl.bell.ca] has quit [Remote host closed the connection] 17:51:56 foom: doesn't top show something on darwin? 17:52:37 i've noticed constant spinning in top a long time ago, without using powertop 17:52:50 and even by doing (time (sleep 10)) and seeing too much consing 17:53:47 well, sure, if it's actually doing something substantial when it wakes up. 17:54:44 reminds me that I ought to see if dtrace is usable for SBCL at all 17:55:11 but if it's more like while(!done) { usleep(500000); }, it's harder to notice. 17:55:25 i find dtrace almost unusable, period. 17:55:36 it was pretty sad when they removed strace from osx. 17:56:07 er, dtruss, I meant. 17:56:18 (the thing which is supposedly the equivalent to strace, built on top of dtrace) 17:56:49 it uses deadlines to break from a wait, which conses a new condition each time to signal it 18:18:15 -!- SHUPFS [~user@S0106001111de1fc8.cg.shawcable.net] has quit [Remote host closed the connection] 18:44:55 foom: in what way do you find them unuseable ? 18:46:46 fe[nl]ix: dtruss is a pale imitation of strace. It basically doesn't decode the syscall arguments for anything, basically. 18:47:25 Obviously, with a sufficient amount of work, you could add it all to its dtrace script, but...nobody has actually done so. 18:47:32 antgreen [user@nat/redhat/x-wafvzqzhwzbkyqtd] has joined #sbcl 18:51:42 good. one more reason not to ever use OSX :) 19:24:35 Quadresce [~quad@unaffiliated/quadrescence] has joined #sbcl 19:26:44 edgar-rf_ [~GOD@HSI-KBW-078-043-123-191.hsi4.kabel-badenwuerttemberg.de] has joined #sbcl 19:34:13 -!- Quadrescence [~quad@unaffiliated/quadrescence] has quit [*.net *.split] 19:34:14 -!- edgar-rft [~GOD@78.43.123.191] has quit [*.net *.split] 19:34:14 -!- joshe [~joshe@opal.elsasser.org] has quit [*.net *.split] 19:54:49 gabnet [~gabnet@186.23.67.86.rev.sfr.net] has joined #sbcl 20:05:08 -!- stassats [~stassats@wikipedia/stassats] has quit [Ping timeout: 248 seconds] 20:07:02 -!- psilord [~psilord@23-25-144-217-static.hfc.comcastbusiness.net] has quit [Quit: Leaving.] 20:26:49 rbarraud [~rbarraud@222-155-139-54.jetstream.xtra.co.nz] has joined #sbcl 20:26:58 didi [~user@unaffiliated/didi/x-1022147] has joined #sbcl 20:29:47 How do I kill a process that I spawned using `(sb-ext:run-program ... :wait nil)'? I'm trying `(sb-ext:process-kill *my-process* 9)' but `(sb-ext:process-alive-p *my-process*) => T'. 20:30:58 didi: what's that process's state? 20:31:39 (sb-ext:process-status *bar*) => :RUNNING 20:33:02 didi: you'll need to kill the (process-pid) 20:33:19 and even then it's possible that's alive as in not reaped yet (zombie) 20:33:32 Hum. 20:33:37 flip214: process-kill extracts the pid. 20:33:49 didi: look in ps or top. 20:33:52 oh, ok. sorry for the noise. 20:34:57 I bet you still need to wait for it after killing it 20:35:35 try (sb-ext:process-wait *my-process*) afterwards 20:35:41 then check the status 20:35:42 pkhuong: I've been messing with this for a while so I can see two process running, but I can't tell when those were created. 20:35:50 dlowe: I will. 20:36:43 dlowe: Oh well, the REPL is stuck. 20:36:53 C-c C-c. 20:37:10 And still :RUNNING. 20:38:05 I don't know if this is relevant, but it's a python script. 20:38:16 not relevant. 20:38:20 OK. 20:39:14 is the process actually still running when you check ps? 20:39:42 can you match (process-pid *my-process*) to a running process? 20:39:59 Ah, good idea. 20:40:06 One second, please. 20:40:17 if the process is still running, it didn't get the signal 20:40:24 signal 9 is not ignorable or catchable 20:41:36 Ah ha. It's running, but it's kinda broke. `[phython] ' 20:42:42 Yeah, it's a zombie. Bad zombie. 20:45:40 so a process-wait should fix that 20:46:05 try (process-wait *my-process* :check-for-stopped t) 20:48:01 -!- gabnet [~gabnet@186.23.67.86.rev.sfr.net] has quit [Quit: Quitte] 20:48:34 mgsk [~Mark@li357-97.members.linode.com] has joined #sbcl 20:52:25 dlowe: My `process-wait' does not accept keywords, although apparently `check-for-stopped' seems like an optional parameter. I did try it but the REPL froze again. 20:52:57 -!- antgreen [user@nat/redhat/x-wafvzqzhwzbkyqtd] has quit [Remote host closed the connection] 20:53:15 -!- mgsk [~Mark@li357-97.members.linode.com] has quit [Client Quit] 20:54:36 SHUPFS [~user@S0106001111de1fc8.cg.shawcable.net] has joined #sbcl 20:59:57 well, it's waiting for it to die 21:00:13 I don't know what to tell you, except to do (sb-posix:wait (process-pid *my-process*)) 21:00:19 which isn't the greatest 21:04:37 joshe [~joshe@opal.elsasser.org] has joined #sbcl 21:08:22 dlowe: Nah, that's OK. It's not a big deal. I'm just playing with it. Thank you. 21:09:41 psilord [~psilord@c-69-180-173-249.hsd1.mn.comcast.net] has joined #sbcl 21:19:07 tsuru`` [~charlie@adsl-98-87-46-111.bna.bellsouth.net] has joined #sbcl 21:20:25 -!- tsuru` [~charlie@adsl-74-179-29-34.bna.bellsouth.net] has quit [Ping timeout: 246 seconds] 21:26:24 -!- phua [~phua@160.79.132.254] has quit [Read error: Connection reset by peer] 21:26:59 Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has joined #sbcl 21:27:29 how come this doesn't return a constant list: (defconstant +foo+ 1) (defun foo () `(,+foo+)) 21:27:37 is that a missed optimization, or is somehow required? 21:28:32 It'd have to happen in the reader macro... 21:29:15 Why? 21:29:21 backq-list could have a deftransform 21:30:17 true. 21:32:19 -!- Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has quit [Ping timeout: 260 seconds] 21:33:03 Is it true? If it's true, I'll try to come up with a patch 21:35:25 might even try and see if we still have an optimiser bug that breaks when the back-foo functions are inline. 21:35:29 But yeah, sounds right. 21:42:03 don't think you can have both transform and inline, can you? 21:42:23 the transform can transform into list, if it fails to transform into quote, though, I expect. 21:42:41 myeah, that's likely good enough. 21:43:21 oh wait, backquote itself uses multiple operations. 21:44:19 At least, the FIXME could be fixed: we don't conses these &rest lists up anymore (: 21:44:54 Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has joined #sbcl 21:47:10 oh geez, this is really complicated. :( 21:47:23 foom: that bad? 21:48:53 I'm just trying to understand backq.lisp for the first time. It seems much more convoluted than I would have thought it would be. 21:49:00 Fare [~Fare@216.239.55.82] has joined #sbcl 21:49:54 -!- Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has quit [Ping timeout: 264 seconds] 21:51:17 What happens if you just add straight constant-folding transforms for back-foo? 21:55:52 -!- Fare [~Fare@216.239.55.82] has quit [Read error: Operation timed out] 21:57:21 how could that work? 21:58:38 you can't normally turn (list 1 2) into (quote (1 2)) 22:00:07 turn it into (lambda (...) (declare (ignore ...)) '(1 2))? 22:03:44 Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has joined #sbcl 22:08:48 tsuru``` [~charlie@adsl-98-87-44-167.bna.bellsouth.net] has joined #sbcl 22:09:00 -!- tsuru`` [~charlie@adsl-98-87-46-111.bna.bellsouth.net] has quit [Read error: Operation timed out] 22:09:42 -!- Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has quit [Ping timeout: 264 seconds] 22:18:57 The problem is that it turns some things into (backq-append (backq-list ...) ...) 22:19:25 worst case, you don't get those right. 22:19:41 They wouldn't be worse than before, right? 22:19:42 That's true...I guess I can just give up on the non-simple cases. 22:19:44 right. 22:19:57 okay, I'll try just the trivial thing. :) 22:21:23 except...there's a backq-nconc. 22:21:50 oh fuck. 22:21:58 is that only for ,.? 22:22:00 yea. 22:22:28 that's asking for trouble if it's nconc-ing a backquoted list. backquote doesn't guarantee any freshness. 22:22:39 this is in the backquote implementation. 22:22:45 so...it does guarantee it. :) 22:22:48 Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has joined #sbcl 22:23:01 well, not if we only use backq-nconc for ,. 22:23:51 ` itself knows that it produces fresh lists, and thus knows that it's safe to call nconc on its own lists. 22:26:43 k. 22:27:24 -!- kanru [~kanru@66.207.208.98] has quit [Ping timeout: 276 seconds] 22:27:56 -!- Mazingaro [~Tetsuja@host113-237-dynamic.6-87-r.retail.telecomitalia.it] has quit [Ping timeout: 245 seconds] 22:29:48 foom: and it pprints right? 22:29:53 or, wait, maybe it's not even a problem after-all. It might not ever call that on its own lists. It's hard to follow. :) 22:35:03 Fare [fare@nat/google/x-ouimbhvtuerxsvhm] has joined #sbcl 23:03:53 Hum, I'm not getting how this whole external process work. I have a python script which I wanna run, send a string to it and read a string in return. Using this code I'm only successfully getting a freeze REPL. :^( 23:10:33 tsuru```` [~charlie@adsl-74-179-198-209.bna.bellsouth.net] has joined #sbcl 23:12:54 -!- tsuru``` [~charlie@adsl-98-87-44-167.bna.bellsouth.net] has quit [Ping timeout: 276 seconds] 23:17:21 -!- drl [~lat@110.139.229.172] has quit [Read error: Operation timed out] 23:18:44 didi: use inferior-shell 23:19:46 except maybe for the sending a string ... which you can do by piping echo into your script. 23:19:48 didi: classic deadlock. Try flushing the output. 23:20:43 I didn't add universal input processing to inferior-shell just like i have universal output processing. Yet. 23:30:12 drl [~lat@110.139.229.172] has joined #sbcl 23:30:14 Ah ha! Go pkhuong! 23:30:19 pkhuong: Thank you. 23:30:58 Fare: What is this `inferior-shell' you talk about? 23:32:25 a portable CL library to execute other programs and get their output 23:32:59 Fare: Uh, nice. 23:33:46 (inferior-shell:run `(pipe (echo ,(* 6 7)) ("/tmp/foo.py")) :output :string) 23:35:10 Fare: Nice. I'll take a look at it, thanks. Also, it's on quicklisp, which is sweet. 23:35:10 why write 6 lines of SBCL-only code when you can write one line of portable code? 23:35:29 True.