00:18:22 LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has joined #sbcl 00:24:01 -!- LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has quit [Ping timeout: 248 seconds] 00:39:00 LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has joined #sbcl 00:49:32 -!- LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has quit [Ping timeout: 256 seconds] 01:03:25 Fare [~tunes@78.251.120.48] has joined #sbcl 01:41:17 -!- Thra11 [~thrall@43.119.125.91.dyn.plus.net] has quit [Quit: kthxbai] 03:11:18 -!- Fare [~tunes@78.251.120.48] has quit [Ping timeout: 276 seconds] 03:39:50 LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has joined #sbcl 03:45:58 Fare [~fare@78.251.120.48] has joined #sbcl 03:58:22 -!- Fare [~fare@78.251.120.48] has quit [Read error: Operation timed out] 04:08:03 -!- pipping [~pipping@exherbo/developer/pipping] has quit [Remote host closed the connection] 04:08:17 pipping [~pipping@tchaikovsky.exherbo.org] has joined #sbcl 04:13:19 Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has joined #sbcl 04:19:54 -!- Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has quit [Read error: Connection reset by peer] 04:20:27 Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has joined #sbcl 04:24:21 -!- Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has quit [Read error: Connection reset by peer] 04:48:22 -!- LiamH [~none@rrcs-24-43-226-3.west.biz.rr.com] has quit [Ping timeout: 256 seconds] 05:23:07 attila_lendvai [~attila_le@95.56.70.184] has joined #sbcl 05:23:07 -!- attila_lendvai [~attila_le@95.56.70.184] has quit [Changing host] 05:23:07 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 05:27:57 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Client Quit] 05:39:54 -!- akovalenko [~user@95.72.99.20] has quit [Ping timeout: 272 seconds] 06:10:00 -!- rbarraud [~rbarraud@125-239-32-133.jetstream.xtra.co.nz] has quit [Excess Flood] 06:10:41 rbarraud [~rbarraud@125-239-32-133.jetstream.xtra.co.nz] has joined #sbcl 06:23:29 angavrilov [~angavrilo@217.71.227.190] has joined #sbcl 06:51:44 prxq [~mommer@mnhm-590c0c8f.pool.mediaWays.net] has joined #sbcl 07:37:45 tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has joined #sbcl 07:45:33 akovalenko [~user@95.73.120.3] has joined #sbcl 07:54:10 -!- ASau [~user@176.0.116.78] has quit [Ping timeout: 272 seconds] 08:24:25 attila_lendvai [~attila_le@87.247.13.54] has joined #sbcl 08:24:25 -!- attila_lendvai [~attila_le@87.247.13.54] has quit [Changing host] 08:24:25 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 08:25:56 -!- tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has quit [Quit: Leaving.] 09:31:45 -!- rbarraud [~rbarraud@125-239-32-133.jetstream.xtra.co.nz] has quit [Ping timeout: 260 seconds] 10:16:56 cow-orker [~foobar@pogostick.net] has joined #sbcl 10:58:23 Fare [~fare@78.251.110.145] has joined #sbcl 11:05:05 -!- Fare [~fare@78.251.110.145] has quit [Ping timeout: 260 seconds] 11:08:10 wbooze [~wbooze@xdsl-78-35-167-51.netcologne.de] has joined #sbcl 11:10:53 edgar-rft [~GOD@HSI-KBW-149-172-63-75.hsi13.kabel-badenwuerttemberg.de] has joined #sbcl 11:19:16 Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has joined #sbcl 11:23:45 -!- Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has quit [Ping timeout: 260 seconds] 11:26:23 Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has joined #sbcl 11:29:29 -!- Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has quit [Read error: Operation timed out] 11:48:41 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Quit: Leaving.] 13:03:32 Thra11 [~thrall@43.119.125.91.dyn.plus.net] has joined #sbcl 13:06:41 attila_lendvai [~attila_le@89.218.1.92] has joined #sbcl 13:06:45 -!- attila_lendvai [~attila_le@89.218.1.92] has quit [Changing host] 13:06:45 attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has joined #sbcl 13:15:10 -!- attila_lendvai [~attila_le@unaffiliated/attila-lendvai/x-3126965] has quit [Ping timeout: 260 seconds] 14:31:26 gko [~user@114-34-168-13.HINET-IP.hinet.net] has joined #sbcl 14:49:39 tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has joined #sbcl 15:07:16 -!- tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has quit [Quit: Leaving.] 15:19:40 leoc [~leoc.git@p57B9AD5F.dip.t-dialin.net] has joined #sbcl 15:33:06 slyrus [~chatzilla@adsl-76-254-45-27.dsl.pltn13.sbcglobal.net] has joined #sbcl 15:35:01 -!- wbooze [~wbooze@xdsl-78-35-167-51.netcologne.de] has quit [Ping timeout: 245 seconds] 15:42:49 wbooze [~wbooze@xdsl-87-79-194-189.netcologne.de] has joined #sbcl 16:13:56 huangjs [~huangjs@199.180.254.36] has joined #sbcl 16:29:03 tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has joined #sbcl 17:11:59 -!- tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has quit [Quit: Leaving.] 17:20:08 -!- edgar-rft [~GOD@HSI-KBW-149-172-63-75.hsi13.kabel-badenwuerttemberg.de] has quit [Quit: bleeding] 17:42:01 ASau [~user@46.115.102.139] has joined #sbcl 18:28:15 -!- slyrus [~chatzilla@adsl-76-254-45-27.dsl.pltn13.sbcglobal.net] has quit [Ping timeout: 240 seconds] 18:32:56 Qworkescence [~quad@unaffiliated/quadrescence] has joined #sbcl 18:41:34 Thra11_ [~thrall@87.114.31.98] has joined #sbcl 18:44:59 -!- Thra11 [~thrall@43.119.125.91.dyn.plus.net] has quit [Ping timeout: 252 seconds] 18:48:09 Thra11 [~thrall@46.208.88.185] has joined #sbcl 18:49:27 -!- Thra11_ [~thrall@87.114.31.98] has quit [Ping timeout: 244 seconds] 19:27:35 rbarraud [~rbarraud@125-239-32-133.jetstream.xtra.co.nz] has joined #sbcl 19:36:56 -!- huangjs [~huangjs@199.180.254.36] has quit [Ping timeout: 252 seconds] 19:43:09 huangjs [~huangjs@199.180.254.36] has joined #sbcl 20:00:00 -!- prxq [~mommer@mnhm-590c0c8f.pool.mediaWays.net] has quit [Quit: Leaving] 20:00:18 prxq [~mommer@mnhm-590c0c8f.pool.mediaWays.net] has joined #sbcl 20:05:37 slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has joined #sbcl 21:00:31 Can someone remind me of the layout of structs? 21:01:11 e.g. the layout of (defstruct p a b), and if that's different from (defstruct q (a 0 :type fixnum) (b 0 :type fixnum)) 21:33:50 what do you mean by "layout"? if "in-memory", why do you need to know? 21:34:09 Krystof: is "just curious" a bad answer? 21:34:21 not at all! 21:34:48 it's just a question of how I should phrase the answer, and what detail might be most useful 21:35:12 (I believe that :type fixnum slots will be laid out as tagged data, that is, the layout will be compatible with untyped version) 21:35:23 I mean, the answer to the "e.g." is [header|layout-struct|a|b] and "no different" 21:37:03 Krystof, Curious and to be a little less ignorant of how things get optimized 21:37:28 so there's a really nifty space optimization with untagged data which is violently clever 21:38:08 back in the dawn of time, what happened was that untagged slots (e.g. :type double-float) would get collected into a raw-vector, which had its own (pointer) normal slot 21:38:55 leoc` [~leoc.git@p57B9A631.dip.t-dialin.net] has joined #sbcl 21:39:16 if you move slots around, it's important to have a layer of indirection because of the need to be able to subclass structures with untagged slots 21:39:59 then someone (lichtblau, I think) noticed that you could gain the same basic layout but without the pointer indirection by filling tagged slots in order from the start of the struct, and untagged slots in reverse order from the end of the struct 21:40:23 then as long as the untagged slots were accessed using obj+length-index calculations, subclassing would work just fine 21:41:04 /then/ lichtblau again noticed that, well, that was all well and good but it could be even better if the tagged slots were at positive indexes in the object and the untagged ones at negative indexes 21:41:33 this all needs a certain amount of support from the garbage collector, to know which slots to treat as roots and also how to move structure objects 21:42:01 right 21:42:15 -!- leoc [~leoc.git@p57B9AD5F.dip.t-dialin.net] has quit [Ping timeout: 240 seconds] 21:43:00 what (data type) is header/layout-struct, and what do they contain? 21:43:04 I can't remember which bits of this are actually implemented :-( 21:44:52 header is a low-8-bits that says "I'm a struct"; layout-struct is a structure which describes the layout of the object. (You can get hold of one with e.g. (sb-kernel:%instance-layout #p"") 21:47:41 One of the other reasons I ask is because I remember nikodemus suggesting I use conses for something, which takes N (= 2?) bytes for something, and a struct of two fields takes N+2 (??, was it 4 bytes?) to represent an equivalent cons (e.g. (defstruct kons kar kdr)) 21:48:04 My only issue with using conses for two-field structs is the lack of any sort of type identity 21:49:51 it was probably N+2 words, not bytes 21:50:05 yes words 21:55:20 Krystof, what did you mean by "untagged slot"? 21:57:07 Qworkescence: values like machine words or floats can be stored without any boxing/tagging in structs when appropriately type declared. 21:57:25 fantastic 21:57:44 but, we need some cooperation from the GC for that to work. 21:58:36 I believe a bitmap per type to know which words are descriptors and which aren't would be even better though 21:59:39 is my observation that classes and structs are equally fast in recent SBCLs just my imagination? 22:01:17 It depends on what you do. On contemporary x86, the difference may well be marginal in most cases. 22:03:35 i have a generic arithmetic defined on pairs of numbers. It does not seem to make a difference if I store them in structs or classes. And I do a lot of that arithmetic. The difference seems to be less than 1%. 22:03:42 (eye metric) 22:04:38 come to think of it, the numbers are generic. 22:05:41 -!- Thra11 [~thrall@46.208.88.185] has quit [Quit: kthxbai] 22:05:44 prxq, what do you mean "generic arithmetic"? 22:06:50 if they are :type t or :type number, the cost difference of structs vs classes can indeed become invisible 22:17:48 t, actually 22:18:10 Qworkescence: overloaded +, -, *, tan, sin, etc. 22:18:55 -!- wbooze [~wbooze@xdsl-87-79-194-189.netcologne.de] has quit [Quit: none] 22:19:39 Qworkescence: it's for automatic differentiation. c.f. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.91.7210 22:20:19 wbooze [~wbooze@xdsl-87-79-194-189.netcologne.de] has joined #sbcl 22:21:00 prxq: oohh, does it handle matrix calculus efficiently, before I roll my own 80% solution? 22:22:33 pkhuong: not really. I do differentiate Cholesky decompositions, but they are small so I haven't worried about efficiency yet. 22:22:38 pkhuong: what do you need? 22:23:22 I have to differentiate stuff like \sum f(a_i x + b_i). 22:24:20 -!- qlkzy [qlkzy@2a01:7e00::f03c:91ff:feae:4a4a] has quit [Quit: ZNC - http://znc.sourceforge.net] 22:24:34 (Most of the work is in GEMV) 22:25:02 prxq, i was going to write my own automatic diff 22:25:30 prxq, you know CL-GENERIC-ARITHMETIC exists, yeah? 22:27:20 qlkzy [qlkzy@2a01:7e00::f03c:91ff:feae:4a4a] has joined #sbcl 22:30:00 -!- qlkzy [qlkzy@2a01:7e00::f03c:91ff:feae:4a4a] has quit [Client Quit] 22:30:02 Qworkescence: no, I use a honed version of Fateman's stuff 22:30:38 pkhuong: If you want, I can send you a tarball with my stuff. 22:31:15 which email address? 22:31:28 prxq, (maybe pkhuong), I also started implementing dual numbers for auto diff here: https://bitbucket.org/tarballs_are_good/lisp-random/src/b9f69558595a79c3a5c21fc6ff6c30e6ab66a1ee/dual-number.lisp?at=default 22:31:50 pvk@pvk.ca please. I don't know when I'll have time for continuous stuff again, but it can always be useful. 22:32:37 Qworkescence: I've got reverse diff too. Just somehow don't get arround to publish :/ 22:32:48 pkhuong: in a minute. 22:33:56 that strange moment when #sbcl temporarily turns into #cl-numerics. 22:34:05 :)))) 22:35:43 I gratuitously use unicode in that file, if that's your thing 22:37:59 Qworkescence: btw, re your symbolic function work. I can't remember who it was (jacques carette or oleg, I guess), but someone in the haskell community is basically using dynamic dispatch to make it so the same (normally-compiled) function can either compute values, or build an expression graph. The trick is nothing too complicated, and looks a lot like higher-order abstract syntax. 22:38:43 Fare [~fare@men75-12-88-183-198-131.fbx.proxad.net] has joined #sbcl 22:39:24 I say, why not build both! 22:59:10 -!- prxq [~mommer@mnhm-590c0c8f.pool.mediaWays.net] has quit [Quit: Leaving] 23:12:38 lol 23:42:15 -!- slyrus [~chatzilla@173-228-44-92.dsl.static.sonic.net] has quit [Ping timeout: 240 seconds] 23:45:11 tcr [~tcr@84-72-21-32.dclient.hispeed.ch] has joined #sbcl