* Logging started Thu, 22 Jul 2004 17:23:02 +0000 @1090516983 -dircproxy- You connected @1090516983 -kornbluth.freenode.net- You joined the channel @1090517024 log rolled over, previous log is at http://www.gwydiondylan.org/~housel/irc/dylan-hd @1090517778 Riastradh: can you please spell it? ;-) @1090518088 'I' 't.' @1090518097 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION ducks. @1090519025 housel: what? the error messages are identical. are you sure the commit was completed? *sigh* i guess ill have to dive into that python code. @1090519057 or are there any other volunteer? @1090519060 s @1090519203 -dircproxy- You disconnected @1090524420 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090524771 -dircproxy- You connected @1090524810 re @1090524824 Morning all @1090524828 There are newer versions of the script... I guess I should update it @1090524831 morning Peter @1090525073 Would it helpful if I renamed the unsafe copy-bytes to %copy-bytes and changed the order of the parameters of the function and all calls to it to match the other copy-bytes? @1090525136 I don't think either one is unsafe @1090525360 -dircproxy- You disconnected @1090525566 -dircproxy- You connected @1090525635 it's probably best to just stop using the System library unless absolutely necessary @1090525643 This methods from \src\d2c\runtime\dylan aren't unsafe? @1090525645 define method copy-bytes (dest :: , dstart :: , src :: , sstart :: , count :: ) => (); @1090525646 call-out("memmove", void:, ptr: %%primitive(vector-elements, dest) + dstart, ptr: %%primitive(vector-elements, src) + sstart, int: count); @1090525647 System module of the Dylan library I mean @1090525648 end method; @1090525667 oh... you're right, that's unsafe @1090525715 in which case doing what you propose makes sense @1090525775 Which order of parameters do you prefer? I think src, dst is probably better. And it would match fundev. @1090525826 matching fundev (and copy-bytes in common-dylan:byte-vector) is probably more important @1090525851 but dst, src is actually the "preferred" Dylan order @1090525888 If my opinion matters, I prefer the current order. @1090525918 But there's two current orders. :-) @1090525998 It would be best to change them both to dst, src but we'd have to have a flag day, and hunt down all current consumers of Common-Dylan copy-bytes @1090526034 sounds dangerous to me @1090526062 I'm volunteering to do it. I know there's a lot of occurrences, but it's not that many. @1090526084 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION hiccups. @1090526086 in both code bases? and in Monday too? @1090526760 commit by housel to fundev: Bug: 7003 @1090526760 Always use the dynamic linking protocol for the glue file since it now @1090526760 contains the export fixups. @1090527723 Actually it looks to me as if the copy-bytes(src, dst) from byte-vector.dylan is not called from any gd code. But changing FunDev to dst, src might be a big chore, plus any clients such as Monday which you mentioned which might be using copy-bytes(dst, src) would have to be changed too. @1090528132 if you check out GD_2_5 as of today, the io library uses copy-bytes(src, dst) in several places now @1090528490 -kornbluth.freenode.net- b0gg1e (~stepn@p3E992613.dip.t-dialin.net) joined the channel @1090528529 -kornbluth.freenode.net- b0gg1e (~stepn@p3E992613.dip.t-dialin.net) left the channel @1090528849 Re. @1090528869 [andreas!andreas@cantor.gwydiondylan.org] ACTION is sitting in the c-base, with Hugh Greene as a visitor. @1090529345 just out of curiosity, why is dst, src the preferred order? isn't it a bit counter-intuitive? @1090529496 Hi Carl! I guess it's because the destination is on the left hand side of an assignment... @1090529536 And Hugh says also because the first argument is usually the one being operated on. @1090529543 I've never found it intuitive for the target to be after the source. I don't know why. @1090529559 hmm. i probably missed some context somewhere @1090529631 map-into! is a good example of another function with the arguments in the right order @1090529665 (sorry, that should be map-into) @1090529809 i don't understand the comment about left hand side, andreas. where's the left hand side in copy-bytes(dst, src)? @1090529833 It's in lhs := rhs. @1090529878 how does that relate to copy-bytes? @1090529923 [cgay!~cgay@ita4fw1.itasoftware.com] ACTION is probably being really dense @1090529939 Well, not at all, except that the order of arguments is the same. @1090530012 hrm. i'm not thrilled about that as a reason to give copy-bytes the unintuitive order of arguments :) @1090530054 It *is* intuitive! :) But I guess this is a little endian against big endian discussion... @1090530094 [andreas!andreas@cantor.gwydiondylan.org] ACTION has problems with newio: there's a "#define foo foo", where foo is an enum value. @1090530097 i'm probably letting English influence my Code thinking too much @1090530126 The Smalltalk approach is nice: mandatory keywords for parameters. @1090530157 for -setter's i see the need for that order (since there may be multiple non-dst arguments) @1090530209 Ok, time for me to go home. Night! @1090530254 g'morning :) @1090530796 andreas, Smalltalk would have the exact same problem. Smalltalk arguments, too, are positional; it just _looks_ like they're keyword arguments. @1090530847 From the Harlequin library-design document: @1090530849 * Functions should take their most important arguments first. @1090530849 * For "copying" functions, the "destination" argument should precede the "source" argument, such as Dylan's replace-subsequence! function. @1090530891 So, somebody wasn't paying attention when it came time to write copy-bytes @1090533314 -kornbluth.freenode.net- brucehoult (~Bruce_Hou@metnet.met.co.nz) joined the channel @1090533649 morning bruce @1090533828 morning Peter @1090533928 hmm .. that wasa fast rsync... @1090533952 Morning Bruce @1090533964 morning! @1090533977 you feel olike answering the guy on gd-hackers? @1090534005 he's not a list memberr, but I let that message through since it didn't look like the rest of the spam @1090534018 I didn't see any mail other than Paul Potts. @1090534067 there was a guy saying Dylan looked interesting but the latest shootout showed it to be slower than Python and Perl and how could that be? @1090534093 of course all *previous* shootout tables haven't included Dylan at all @1090534159 you're doing good work getting Dylan versions of that stuff. I hope you're also comparing the speed to the C and/or C++ versions and letting this chan know when they are significantly different :-) @1090534171 The new version of the matrix benchmark (which hasn't appeared on alioth yet) is only 50% slower than the C version... at least discounting startup time. :-) @1090534204 then that's fine because they discount startup time @1090534229 Not in the default view. I think Brent is going to fix that though. @1090534243 I'm in two minds about the low number of iterations being used @1090534258 on the one hand it makes it hard to see how we're doing against the other fast languages. @1090534293 for the other benchmarks, the main problem is the streams library. I don't know if the newio is going to improve things. @1090534298 but on the other hand if it mashes them all together into 0.02 seconds or something then that probably reflects the reality of the speed difference for most programs @1090534371 Well I'm sure people are open to changing the number of iterations. I think other people want it bumped up too. @1090534385 if it doesn't then we should write the extra ten lines of code (or whatever) to call directly through to an efficient layer such as write() @1090534441 at this point showing that the speed is possible is proabbly mroe important than doing something in 2 lines vs 20 @1090534500 The minus for increasing the number of iterations is that you won't be able to tell how slow the really slow languages are... because they will all the tests will timeout at 30 seconds for that test. The whole complete set of tests X languages takes a long time for the server to run. @1090534607 I should proofread what I type better. @1090534652 I didn't know there was a timeout @1090534675 The tests time out at 30 seconds I think. @1090534749 hmm. 29 tests by 51 language implementations @1090534770 I still haven't received that email from gd-hackers that you mentioned. @1090534772 up to 750 minutes if all test hit the timeout @1090534881 I'm curious how the new-io grafted in from FunDev will perform. But looking at the code, I'm not that optimistic that it will be fast in it's current state. @1090534921 http://www.gwydiondylan.org/pipermail/gd-hackers/2004-July/005146.html @1090534921 dunno @1090534922 that mail was about 12 hours ago @1090534963 Okay, I'll reply to him. @1090535261 I think the streams API should be changed slightly. For example, take @1090535262 read (stream, n, #key on-end-of-stream) => (sequence-or-eof) @1090535264 I don't see a real purpose for the on-end-of-stream key. Why not just return #f?. Then the return type can be tighted up to false-or(). @1090535547 I think read-element should keep the on-end-of-stream key, but for streams such as byte-file-streams or byte-character-file-streams, on-end-of-stream should be set to false. Then the return type for read-element over those types of streams can be tightened up to false-or() or false-or() @1090535658 false-or() isn't a usefully tight type. is wide open @1090535728 yes, but the return type could be made even tigher for byte-file-streams ,etc. @1090535792 I don't know if it is, but read-element is crying out to be inlined, in which case d2c will easily figure out that the return type is type-union(singleton(on-end-of-stream:), stream.element-type) @1090535815 .. just as it already does with the default: value for element @1090535913 I didn't think about it doing that. @1090536187 In the methcall shootout benchmark, did you replace the main() with begin/end to save lines of code? *wondering why you made the change* @1090536280 [housel!housel@cantor.gwydiondylan.org] ACTION notes that debugging in FunDev is easier if you have a main function @1090538183 uhh ... yeah I always code with the main program in begin/end @1090538211 yes, on somethign that is counting lines of code as a goodness measuer it does save one line, but I just prefer it that way anyway :-) @1090539238 Okay... I guess I prefer it the other way. Using begin/end at the top level seems unsanitary to me. hehe @1090539388 well I'm a Pascal guy from way back :-) @1090539437 and all the scripting languages let you just put code at the top level. If we do things right we can show the scripting guys that Dylan is nearly as terse as them, while having C performance @1090539503 the only reason you even need begin/end is so you can use "let". If you don't mind define variable/constant then you can dispense with begin/end as well @1090539684 in d2c it's better to make it a single TLF, too. @1090540351 The list benchmark which uses 's is 100 times slower than C. I'm looking into the problem. @1090541654 looks as if the class needs a lot of work @1090541699 even when d2c knows the exact type (), it still does a GF dispatch on push-last and on the forward-iteration-protocol and so forth @1090541946 commit by phinely to examples: job: 7045 @1090541946 Some imrpovements but no measurable speed increase. @1090541946 The benchmark is still *really* slow. @1090541946 It's losing type info after calling reverse!. @1090541946 I think a lot of methods need to be implemented/sealed for , such as reverse! @1090542083 The last 40% of deque.dylan is commented out. I think a lot of that stuff should be restored. @1090542330 and the functions specialized for instead of @1090544436 re @1090544497 I think using top-level code is fine if you have a single file program, but not when you string hundreds of files together. Then you can't easily tell whether all the top-level code is being evaluated before the main code. @1090544551 I much prefer the Apple Dylan / C/C++ way, where you tell the linker which function to call after evaluating all top-level forms/code. @1090544604 (And there's some reasonable default name, like "main".) @1090545012 hmmm... looks like my newio merge ended up backing out a bunch of changes on GD_2_5... I'll have to go through and put them back. @1090545062 also, the linux build is broken. im looking into that. seems to be some problem with a melange interface. @1090545412 hm. in glibc, _PC_PATH_MAX, among others, is defined in a nameless enum as _PC_PATH_MAX, followed by a "#define _PC_PATH_MAX _PC_PATH_MAX". melange doesnt like this and produces "define constant $_PC_PATH_MAX = $_PC-PATH-MAX;". @1090545466 I think andreas fixed this sort of problem, but I suspect I may have accidentally backed the fix out. @1090545495 seems so. @1090545601 I'll go through every file changed by transaction 542 and look for unwarranted changes @1090545640 -dircproxy- You disconnected @1090547042 -dircproxy- You connected @1090547994 commit by phinely to examples: job: 7045 @1090547994 sealed make and initialize: help performance a little, but not much @1090548216 I'd be surprised if anyone in our group has ever used @1090548237 I guess it's a better fit to that particular task than , but not by much @1090548299 I guess I'll work on fixing @1090548331 if you're allowed to build the same-order list by adding to the front and then calling reverse! (standard Lisp & Dylan idiom) then has no real disadvantage @1090548361 sure. it sould be easy enough. I'm happy to go over it in the weekend too. (that starts in 4 hours from now...) @1090548391 I'll look at the other issues of exporting the names of the concrete implementation classes too @1090548418 maybe even see if I can improve and/or implement limited collections @1090548431 then we can do a relase (we're overdue for one) and say we're using that for the shootout @1090548518 I don't think is exported though it says it should be. @1090548545 How do you "remove each individual item from left side (head) of L2 and append to right side (tail)" with a list easily? @1090548582 you add to the front and then reverse! it @1090548609 of course you can't do that if you want the list to be available to be used in between times @1090548639 where did the comments int he Dylan code come from? Is there an actual spec for the tasks somewhere? @1090548646 I think we should stick with and fix . @1090548652 sure @1090548659 http://shootout.alioth.debian.org/bench/lists/ @1090548716 It's described there. I think I stole the actual comments from the lisp version. @1090548973 The last 40% of deque.dylan is commented out even in the initial version in CVS, so it's hard to track why exactly it was commented out. I assume most of the code that's commented out is correct. It should be specialized on though. I'll hack on it tomorrow or next week. @1090549002 no, if it's OK I'll fix it @1090549034 I know very well what to look for by now @1090549138 brucehoult: I was looking at the limited collections sources. If you're going to work on it, let me know if you'd like any help. @1090549170 Out of curiousity, how are you going to change it? @1090549199 cpage: what would be really good is a set of unit tests based on the actual DRM spec of how limited collections should behave @1090549215 i.e. how substitutable they are, type tests etc @1090549217 The existing testworks stuff doesn't do that? @1090549221 no idea @1090549234 haven't looked at it @1090549243 It's a little hard to tell exactly what it's doing. It would be nice if there were a way to define tests declaratively to make them more transparent. @1090549259 someone *comparing* the exisitng tests against the specs to see if the test are correct would be a good thing :-) @1090549278 and it would be nice to have reference results in cvs so testworks can tell wether there where new failures... @1090549316 Well, I was already looking at them to figure out what it was they were already reporting about limited collections, so I'll keep at that. @1090549324 cool @1090549375 prom: And then we could set up automated build/test cycles on a server that's triggered by CVS commits. :-) @1090549392 cpage: we kinda had that on cantor. but its broken. @1090549400 And it could send mail about changes in results. @1090549401 cpage: ill try to revive it on the new box. @1090549419 cpage: it could also check for bootstrap requirement violation. @1090549423 the way we do it here is a cron job that does a cvs update, and then does a build IFF the cvs update actually found any changed files @1090549442 brucehoult: cantor has a "tinderbox" for it. @1090549450 yeah @1090549456 Adobe had (probably still has) a system where commits go to some kind of holding area and don't actually get committed to shared sources until tests pass or are examined by a human. @1090549468 all I know about that is I've often found cantor with a load average of 20+ as a result of tinderbox @1090549481 yepp, thats tinderbox ;) @1090549504 presumably it doesn't actually check whetehr the previoous incarnation has finished before starting a new one? @1090549528 i havent looked at it yet. @1090549541 And I suppose you'd want it to do that for HEAD and the next release branch? @1090549597 and if tinderbox reports the results anywhere I don't know where that is @1090549607 well. the requirements are different. the current GD_2_5 has to bootstrap with 2.3, 2.3 has to bootstrap with something older (???). then normal builds for both branches. @1090549627 brucehoult: there is a link on the website. @1090549665 prom: I just mean generally speaking, wouldn't you want an automated build/test server to operate on head as well as any major branches? @1090549689 BI->connect(dbname=tbox) failed: could not connect to server: Connection refused at Tinderbox3/DB.pm line 20 @1090549864 cpage: yes, of course. ill try to do that on the new box. @1090549869 Actually, I'm unclear on why HEAD is used the way it is. I'm used to a setup where active development is on a branch and when that branch is "shipped" it is merged into HEAD. @1090549901 cpage: yeah, its a little chaotic. @1090549911 But then, I've been using Perforce, which makes it easier to use branches than CVS, I've been told. @1090550003 What has been the deciding factor on what to put in GD_2_5 vs. HEAD? @1090550168 cpage: i think that depends on how many versions are actively supported @1090550176 cpage: i dont know what was deciding. its messed up. but we can merge 2.5 back to HEAD when 2.4 is out. @1090550183 (after tagging 2.4) @1090550192 I'm more used to development being done on HEAD and then a branch made in order to support a delivery made to a customer @1090550206 yes, thats how it should be. @1090550213 brucehoult: That makes sense when you only have one product and one team working on it. @1090550222 cvs doesnt work very well the other way round. @1090550239 Most of my career has been at companies that have multiple teams working on multiple versions of shared stuff, going into multiple, separate products. @1090550317 And when each ships, they merge their branches into the shared trunk. @1090550330 And then new projects branch off of that. @1090550342 ok, fair enough @1090550368 That assumes an easy way to branch and merge, of course. @1090550400 I haven't looked at branching and tagging in CVS in detail yet. @1090550408 I think that's basically just a way to be able to have several people work on a new feature that isn't ready yet, rather than just having it existing in one developer's uncommitted changes in his checkout @1090550426 The scheme I described? @1090550447 so branches are short-lived and exist in order to develop a specific thing @1090550449 yes @1090550471 Sort of, but the scale is much larger than a single developer working on a single, in-progress feature. @1090550479 that's my point @1090550528 I'm talking about situations where there are three or four teams working on groups of feature sets that don't go into the other products until those products ship and start another product cycle, maybe two years later. @1090550545 everything is fundamentally committed on the trunk once it's completed @1090550586 Yeah, when you put it that way I see your point. @1090550627 that's the reasonable development use of branches @1090550635 and then there's the support use of branches @1090550651 a customer has your program, finds a bug, and wants it fixed @1090550675 If I were setting this up in Perforce, I'd have a GD_2_5 branch and a GD_2_4 (or GD_2_3_x) branch. @1090550678 they don't want the latest version -- or you don't want to give it to them for fee. They want exactly what they already have, except with that one bug fixed. @1090550682 I just found all the unwarranted changes... I'll check the fixes in when the build passes and my house guests leave @1090550684 (iterate as desired) @1090550730 brucehoult: Right. So how does that relate to how you'd set things up in CVS for Gwydion? @1090550765 House guests? Why are you wasting your time on us? :-) @1090550766 rigth now I'd do it exactly how it is @1090550786 Treating 2.3.x and 2.4 as equivalent to head? @1090550790 btw, i think that the whole cvs needs reorganization anyway. we need something that supports moves. and we need to split stuff up into sepparate modules to allow one big unified dylan system. @1090550809 when we decide to ship 2.4 we'll tag that (currently the head) and make a branch for minor bugfix updates @1090550823 and merge gd_2_5 back to the head and develop that on the head @1090550828 yepp @1090550837 prom: Can you explain what you mean by "modules" and "unified dylan system"? @1090550862 so after that point the only things going onto the 2_4 branch will be (pretty much) bitrot fixes @1090550879 brucehoult: I guess. I was thinking the current work on 2.4 *was* maintenance work on 2.3. @1090550880 cpage: well, what i basically mean is that there should be only one instance of every library in cvs. and that, if possible, both systems should share the build system. @1090550904 cpage: which becomes possible thanks to peter, who re-implemented jam in dylan. @1090550922 prom: Oh, your stress is on unifying d2c and FD? @1090550956 cpage: not right now. first, we should do the procedure bruce described and clean up the stuff in its current position. @1090550988 prom: I'm confused. @1090551052 prom: I was just wondering what you meant by "unified dylan system." I wasn't proposing anything. @1090551109 cpage: nothing to be confused about. the idea is to: (1) release 2.4 (2) tag 2.4 (3) create a bugfix branch for 2.4 (4) merge GD_2_5 to HEAD (5) start working on getting rid of multiple versions of libraries and the different build systems. @1090551150 for example, there should be no duim source in the "src" module. this belongs where the rest of duim goes. @1090551196 In fact, isn't "src" named too generically now? @1090551229 yes, it is. i thought about using a different name in this sentence... but it might have been confusing ;) @1090551229 Or should FD be moved into "src"? @1090551259 (Actually, I guess it's too generic even if FD is in there. Libraries have source. :-) @1090551263 i am not yet sure about the exact module layout. it should depend on library dependencies i guess. @1090551291 there will be some libraries that both FD and GD need for bootstrap. like fd streams. @1090551434 maybe "base"/"common", "gwydion-dylan", and "functional-dylan". or something like that. how the build infrastructure should look like for this also needs figuring out. @1090551465 but i think we really dont want several versions of libraries in the repository... @1090551534 "shared"? I think "common" sounds a little too much like "common-dylan", a specific library. @1090551548 Or "bootstrap", if it's really for bootstrapping. @1090551563 building FD with such a source set is also not trivial. many FD libraries do/could work on GD. these shouldnt be in the FD tree, so you can use them with GD without getting the FD source. @1090551593 cpage: "bootstrap" sounds like a good name for the base module. @1090551638 cpage: it could contain basic bootstrapping infrastructure (using a bootstrap binary to compile a dylan impl, use bootstrap c-source to compile....) @1090551646 for all implementations... @1090551673 but i am not sure whether the basic libraries should go there too. @1090551740 cpage: brucehoult: I guess. I was thinking the current work on 2.4 *was* maintenance work on 2.3. @1090551774 well, no. For example I would be intending to work on the collections stuff (including limited collections) on the HEAD @1090551797 that is to say, on 2.3.x -> 2.4 @1090551799 I didn't realize HEAD *was* 2.4 until recently. @1090551808 HEAD is 2.3.x @1090551824 it is 2.3. it will be 2.4. @1090551829 we'll call it 2.4 when we're happy to freeze it as a stable release forever @1090551833 I think it depends on what "is" is. @1090551854 2.5 is a different unstable branch, already in development @1090551879 I might say that if the goal is to develop 2.4, then HEAD is 2.4 in progress. @1090551890 we *could* take 2.3.x and call it 2.4 today. could have at any point in the last several years, I fact @1090551921 ie., there's a difference between having a tag named "GD_2_4" and having committed changes that will eventually be tagged "GD_2_4". @1090551929 perhaps wee've been thinking we should do it until it fully impelment the DRM spec, but that's not going to happen now @1090551961 there is currently no tag or branch called GD_2_4 @1090551969 there *is* a branch called GD_2_5 @1090551984 Right. But you're telling me that HEAD is going to be shipped as 2.4? @1090551990 yep @1090551999 So, HEAD is 2.4, if you see what I mean. @1090552007 standard practice and terminology in the open soruce world @1090552011 right @1090552022 okay @1090552046 odd versions are under active development ("unstable") @1090552072 That seems odd to me (pun intended.) @1090552074 even versions are touched only to fight platform bitrot and/or serious bugs ("stable") @1090552083 cpage: linux does it the same way. @1090552149 I'm used to: #.0 major release, #.# enhancements, #.#.# minor bug fixes and focused but important enhancements. @1090552212 "4.0.1" would be a bug fix to 4.0. "4.1" would be enhancements to 4.0. No meaning for even/odd. @1090552227 Anyway, I get it now. @1090552389 Actually, maybe I don't. Is there a website that explains it? @1090552491 the only real confusion is assuming that "stable" == "good" @1090552499 it just means "not changing" @1090552508 Surely a 2.4 could require fixes? @1090552512 so we have 2.2 as the current stable release @1090552559 I guess the idea is that odd versions are actually "in development"? @1090552588 right @1090552601 I'm used to a scheme where you identify "development" builds apart from "release" builds. But I guess open source has something in between, where you "release" a "development" build. @1090552601 as in "someone could commit something that breaks it at any time" @1090552645 In which case, committing to HEAD makes sense. @1090552801 So, when 2.4 is released ("announced", I guess), it will be tagged, GD_2_5 will be merged into HEAD, at which point it continues to be "unstable", and it will eventually be tagged as a stable GD_2_6, and head builds become version 2.7? @1090552821 right @1090552850 And is it unusual that there's a GD_2_5, or would there be a GD_2_7 and GD_2_9 branch in the future? @1090552851 I'd say that development was started on 2.5 rather prematurely @1090552857 but that's ok :-) @1090552938 And is it unusual for Gwydion to actually branch a stable release to do bug fixes? @1090552988 (I imagine for Gwydion, you'd usually just put fixes in HEAD and let people use that.) @1090553408 so far HEAD has been something that can be bootstrapped from scratch. but once HEAD becomes 2.5 it won't be, at least for a while @1090553425 you'll have to get 2.4 in order to mindystrap @1090553462 .. so we'll have to branch 2.4 for bitrot fixes as OS X 10.4 comes out and breaks our old binaries, or Mandrake 11, or whatever @1090553668 heh @1090553681 I notice you didn't mention Linux :-) @1090553701 Has Mac OS X been particularly problematic? @1090554001 mandrake is linux @1090554096 we've had tons of problems with linux binaries from one distribution not working on other distributions, or versions of the same distribution. @1090554127 it's been especially bad with RedHat and Mandrake, both of which do things their own way @1090559345 -dircproxy- You disconnected @1090562370 -dircproxy- You connected @1090569672 -kornbluth.freenode.net- pritlove_ (~pritlove@port-212-202-174-201.dynamic.qsc.de) joined the channel @1090570261 -kornbluth.freenode.net- ^self (~fn@66.209.66.105) joined the channel @1090570261 -kornbluth.freenode.net- mmc` (~ercmarusk@host31-145.pool80180.interbusiness.it) joined the channel @1090579361 Morning! @1090580072 -kornbluth.freenode.net- pritlove_ (~pritlove@port-212-202-174-201.dynamic.qsc.de) joined the channel @1090583035 re. @1090584024 Moin Gabor! @1090585938 mornin gabor, andreas @1090585962 *sigh* peter seems to have been busy with his guests. @1090587734 Hi prom... @1090591986 -dircproxy- You disconnected @1090592265 -dircproxy- You connected @1090592706 -kornbluth.freenode.net- wm3 (~wm3@sodans.usata.org) joined the channel @1090592721 -kornbluth.freenode.net- wm3 (~wm3@sodans.usata.org) left the channel @1090593075 -kornbluth.freenode.net- wm3 (~wm3@sodans.usata.org) joined the channel @1090594408 how can I eject a CDrom on a sparc-solaris workstation? @1090594449 there should be a menu option in the windowing environment @1090594457 (IIRC) @1090594544 found the "eject" command, it worked :-) @1090594775 commit by housel to src Makegen,1.24.2.4,1.24.2.5: Job: gd25 @1090594775 * Restore GD_2_5 changes that were somehow removed during the gd-2-3-newio @1090594775 merge, including some RCS header removals. @1090594775 * Remove other remaining RCS headers. @1090594775 commit by housel to src: Job: gd25 @1090594776 * Restore GD_2_5 changes that were somehow removed during the gd-2-3-newio @1090594778 merge, including some RCS header removals. @1090594780 * Remove other remaining RCS headers. @1090594936 ah! yeeha! ;) @1090594979 ill update, re-strip configure.in and continue with my cleanups. @1090596042 hm. i think ill remove stuff caring about d2c_target. this is not stupid gcc that can only target one kind of system. @1090596119 (its not used anyway because cross compilation is not really implemented.) @1090596379 Ok, I'll go home. See you! @1090596610 cya @1090597440 -dircproxy- You disconnected @1090600709 hm. i still have this _PC_PATH_MAX problem. melange just doesnt get the enum that is used to define it. or the fact that there is a macro "#define _PC_PATH_MAX _PC_PATH_MAX". @1090602425 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1090604033 -dircproxy- You connected @1090604106 I fixed that once... but maybe it only got fixed on HEAD and on the branch @1090604209 housel: yes, that sounds plausible. ill try a 2.3 melange. @1090604507 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090604677 yeah, works. @1090604788 I think it's the change made 2003-10-31 that fixed it @1090604804 but there have been a lot of melange improvements made on HEAD that need to be merged @1090604867 yeah. but the branch structure makes merging a little more difficult... @1090604939 true @1090605257 hm. the last merge seems to have been HEAD_20031018_merged. @1090605337 you want to do another one? @1090605351 ill try. @1090605788 hm. a lot of work. but its a lot less when ignoring platform/. which, i think, could be removed from GD_2_5. @1090605899 why? @1090605984 housel: because it does not belong to the GD system itself. @1090606083 that needs to be discussed perhaps @1090606098 housel: with all that FD source in cvs, we will have to categorize this in some meaningful matter. separating gui code is a means for doing that. @1090606137 but we can't do to code until it becomes cross-platform @1090606199 housel: yes. but i wonder if anybody really uses gd-duim. especially from GD_2_5. @1090606238 andreas is developing the gtk2 backend in the 2.5 branch... @1090606298 housel: yes, but he liked the idea of moving this to a different place. @1090606579 that's a problem for later... could you do the merge without platform/? or maybe just melange? @1090606635 yes. but merging the rest later will be a little bit harder because you have to merge the subdirectories one-by-one. @1090606780 hm. i could also try merging GD_2_5 to a HEAD checkout. then we could tag and branch off 2.4. and merge GD_2_5 to HEAD. this would allow doing bugfixes in GD_2_4 and merging them normally. @1090606850 BTW the usual convention is that branches are lowercase and use '-' separators, while tags are uppercase @1090606878 so it should be gd-2-4 @1090606975 there are more tags in CVS using underscore as a separator. but apart from that unimportant detail, yes. @1090606998 ill see how difficult it would be. @1090607332 hm. that doesnt look too hard. @1090607358 a lot of conflicts, but a good part of them is caused be keyword tag removals. @1090607366 by even @1090607423 -kornbluth.freenode.net- rhashem (~gtg990h@ip68-100-67-72.dc.dc.cox.net) joined the channel @1090609352 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090610736 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090610786 i made a quick merge. i guess i still missed something, but merging GD_2_5 to head soon looks doable. @1090610913 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090610932 good @1090610982 er, let's try this again. Sorry for the outage folks; looks like JohnCompanies temporarily reverted cl.net to an old image. No clue why. @1090611136 I'll commit my outstanding changes in my HEAD working copy and create the gd-2-4 branch, ok? @1090611166 or maybe we should ask everyone else first if they have any changes to commit @1090611265 hm. yeah, asking is better. ill need a while for a clean, understood merge anyway. i dont think anybody will have changes over the whole tree, so the conflicts i would get later should be ok. @1090611406 I'll send a message to gd-hackers @1090611410 yepp. @1090614842 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090615751 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090615938 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090615961 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090615984 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090616001 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090616047 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090621459 Riastradh: in case you're still interested, a second-stage bootstrap of FunDev on linux requires 246797 lines of Dylan source @1090621484 re @1090621485 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090621525 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090621626 A full Windows "internal" release compiles 669317 lines of Dylan source @1090624961 [prom!~prom@217.13.206.33] ACTION rests his head on his laptop. cvs could suck a star back out of a black hole. @1090625342 quite @1090626806 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090632249 -dircproxy- You disconnected @1090634957 -dircproxy- You connected @1090635182 commit by housel to fundev: Bug: 7003 @1090635182 Still more goodies from the Perforce jam 2.5 Jambase. @1090635254 commit by housel to fundev: Bug: 7003 @1090635254 Various fixes, and an implementation of the DylanLibraryCSources rule. @1090635306 commit by housel to fundev: Bug: 7003 @1090635306 One C library per line, please. @1090635629 -dircproxy- You disconnected @1090644531 -dircproxy- You connected @1090657303 commit by bruce to examples: Job: 7045 @1090657303 made ackerman menthod local @1090664961 -kornbluth.freenode.net- cpage_ (~Chris@adsl-67-113-3-220.dsl.snfc21.pacbell.net) joined the channel @1090674864 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-41-162.dynamic.qsc.de) joined the channel @1090676887 -kornbluth.freenode.net- mmc` (~ercmarusk@host31-145.pool80180.interbusiness.it) joined the channel @1090682963 re @1090683504 commit by housel to fundev: Bug: 7003 @1090683504 Fix typos in last commit. @1090683600 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-41-162.dynamic.qsc.de) joined the channel @1090683713 -dircproxy- You disconnected @1090683792 -dircproxy- You connected @1090692578 -dircproxy- You disconnected @1090692694 -dircproxy- You connected @1090696582 -kornbluth.freenode.net- rhashem (~gtg990h@ip68-100-67-72.dc.dc.cox.net) left the channel @1090699164 re channel @1090700188 hi prom @1090700837 I'm getting *so* close to getting a Win32 VC6 release to work on the fundev-2-1-jam branch @1090700884 cool. @1090700920 [prom!~prom@217.13.206.33] ACTION is taking a quick look at openntpd. a new ntpd by the openbsd people. @1090700981 but ill return to my merging work soon. @1090700990 nifty... I've seen a lot of complaints about the current xntpd, especially wrt documentation @1090701017 not only documentation... the config-files, especially ACLs where sometimes the exact opposite of what id like to have ;) @1090701026 actually its just one file. @1090705210 hi @1090705216 hi hannes @1090705249 hi peter @1090707785 -dircproxy- You disconnected @1090708488 commit by housel to fundev: Bug: 7003 @1090708488 Properly handle target-specific LINKFLAGS defaulting/overriding. @1090710343 commit by housel to fundev: Bug: 7003 @1090710343 * Remove the "build.exe" (standalone build-system) tool. @1090710343 * Temporarily disable hd2c and interpreter, since they are currently written @1090710343 to require ccl-linker, which no longer exists. @1090710727 -dircproxy- You connected @1090710791 commit by housel to fundev: Bug: 7003 @1090710791 Fix a bug with DylanLibraryCLibraries for executables, and make various @1090710791 cleanups. @1090711094 -dircproxy- You disconnected @1090711762 -dircproxy- You connected @1090723760 -kornbluth.freenode.net- brucehoult (~bruce@202.0.59.207) joined the channel @1090723969 -kornbluth.freenode.net- arauko (~arauko@arauko.fedora-es) joined the channel @1090724058 -kornbluth.freenode.net- arauko (~arauko@arauko.fedora-es) left the channel @1090724076 -kornbluth.freenode.net- arauko (~arauko@arauko.fedora-es) joined the channel @1090724767 hello @1090724963 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-41-162.dynamic.qsc.de) joined the channel @1090725341 hi @1090725481 brucehoult, how are you? @1090725498 new to dylan here, just taking a look at it :-) @1090725499 I'm well, thank you. And yourself? @1090725506 pretty well thanks @1090725523 well if you've got any questions about Dylan, please ask @1090725545 this channel often stays pretty quiet, but there are usually people monitoring it @1090725583 it can take 20 or 30 minutes for someone to notice a question though :-) @1090725644 ooh no question (yet) @1090725652 just taking a look at the site @1090725656 ok @1090725659 thanks @1090725693 well, here it goes one, is it pure OOP? @1090725694 what programming languages are you familiar with, and what operating system do you use? @1090725710 lisp, some schem and smalltalk @1090725719 linux @1090725721 Dylan supports a quite pure form of OO programming, but doesn't enfore it. @1090725728 good @1090725745 Dylan also supports quite pure functional programming but doesn't enforce *that* either @1090725767 nice... @1090725781 it is a project ongoing right? @1090725801 compared to many pure functional languages, Dylan is mostly missing matching/destructuring @1090725813 yes, we're actively working on it @1090725824 oh thats nice @1090725834 in fact we're actively working on *two* open source compilers at the moment @1090725853 nice @1090725859 the "Gwydion" d2c compiler originally from CMU @1090725862 what platforms? @1090725881 and the "Functional Developer" compiler, originally from Harlqeuin @1090725898 d2c runs on anything Unix-ish, including OS X and Cygwin @1090725902 so, Dylan is like a CLOS and Haskell all together? :-) @1090725928 FunDev runs on Windows (has an IDE and debugger) and is experimental as a commaline line compiler on Linux @1090725961 not really like Haskell, no. Dylan is strict, not lazy. And it doesn't have the pattern matching stuff. @1090726006 if you're used to CLOS, you'll know that you can use Generic Function dispatch for some of the same things that ML/Haskell pattern matching is used for, but not all @1090726056 i see now @1090726100 Dylan is object-all-the-way-down like Smalltalk. Most of the semantics are like Scheme, but it's missing full call/cc. The standard library is based omostly n Common Lisp/CLOS, but modernized. @1090726160 and with a "conventional" Algol/Pascal/C syntax rather than s-exps @1090726171 We like it, but not everyone does :-( @1090726211 yes, thats what im watching @1090726218 it seems a pretty interesting syntax @1090726249 it looks a clean syntax at first @1090726256 good :-) @1090726299 in fact, the syntax of all the built in "statements" is actually macros in the standard library @1090726360 so a lot of the syntax is constrained to fit what the macro parsing expects @1090726424 get it @1090726437 you use macros in CL? @1090726568 hmm. I'm having trouble getting to the web server @1090726574 yeah... @1090726620 wierd. no problem sshing in, and the load average is 0.00 and there's plenty of ram @1090726635 0_0 @1090726706 restarted apache, didn't seem to help @1090726788 ok, works now @1090726802 what was the problem?? @1090726806 don't know @1090726826 I don't think anything I did fixed it @1090726908 since the server is in Germany and I'm in New Zealand there could be any number of things going wrong in between @1090726967 right @1090727018 here d2c's source code implementing all the standard statement types as macros: http://www.gwydiondylan.org/cgi-bin/viewcvs.cgi/src/d2c/runtime/dylan/macros.dylan?rev=1.21.2.4&content-type=text/vnd.viewcvs-markup @1090727028 i check @1090727050 not a bad example I think @1090727067 nice @1090727123 the macros for "while" and "until" are instructive @1090727165 and \& and \| @1090727247 ha, im new to this, i gotta read it carefully :-) @1090727316 have you read _On Lisp_ ?? @1090727472 no, not yet @1090727522 ah. Well, Paul Graham claims that syntax extensibility via powerful macros is perhaps THE most important feature in a programming language @1090727602 He also says that it's important that macros are actually programs, so that you can use the full power of the language to manipulate the source code. @1090727668 However, Dylan's macros are less powerful than Common Lisp's in that they are only pattern matching and replacement, but all the same nearly 100% of the macros in _On Lisp_ can be written in Dylan too @1090727760 ok I'll get of the soapbox now and let you ask questions when you're ready :) @1090733527 commit by housel to fundev: Bug: 7003 @1090733527 Remove the temporary restriction of $(LIBPATH) to $(PERSONAL_LIBDIR) only. @1090733527 Improve the efficiency of the library use transitive closure code. @1090736144 -kornbluth.freenode.net- CIA-2 (~CIA@to.je.spocco.com) joined the channel @1090736657 -kornbluth.freenode.net- brucehoult (~bruce@202-0-61-92.adsl.paradise.net.nz) joined the channel @1090741475 -kornbluth.freenode.net- brucehoult_ (~bruce@202-0-60-98.adsl.paradise.net.nz) joined the channel @1090744824 -kornbluth.freenode.net- brucehoult_ (~bruce@202-0-61-113.adsl.paradise.net.nz) joined the channel @1090746525 -kornbluth.freenode.net- brucehoult_ (~bruce@202-0-60-82.adsl.paradise.net.nz) joined the channel @1090746669 re @1090746730 brucehoult's bit about implementing On Lisp macros in Dylan was interesting. I wonder what number of real-world Lisp macros can't be done in Dylan, and how much of a loss that is, if any. @1090747041 it's a real loss, but a small one in practise, i think @1090747068 Are there any widely-used Lisp macros that can't be done in Dylan? @1090747125 BTW, I've read JRB's (?) paper on extended macros, but he doesn't really have examples, so I'm unclear on what that might look like in Dylan. @1090747486 this one?: http://www.ai.mit.edu/~jrb/Projects/dexprs.htm @1090747549 I thought you or someone said that a system similar to this was actually used internally in fundev? @1090748003 Yes, that. Yes, I read that to, but it was somebody else who said so. @1090748023 Carl? @1090748091 The dexprs page says "The rewrite-rule only extensions are available in fundev...". @1090748303 I think that means "availabe to end users" @1090748568 morning @1090762379 morning. @1090765828 commit by housel to fundev: Bug: 7003 @1090765829 Complete the implementation of default build script selection in @1090765829 the Environment Options... dialog. @1090767204 *sigh* cvs. *cough* *puke* @1090774711 hang in there... it's going away soon @1090775952 housel: yeah... i hope so. @1090779772 -kornbluth.freenode.net- alexpotanin (~alex@csdhcp-16-172.cs.purdue.edu) joined the channel @1090779800 -kornbluth.freenode.net- alexpotanin (~alex@csdhcp-16-172.cs.purdue.edu) left the channel @1090787511 -kornbluth.freenode.net- alexpotanin (~alex@st-james.mcs.vuw.ac.nz) joined the channel @1090787572 -kornbluth.freenode.net- alexpotanin (~alex@st-james.mcs.vuw.ac.nz) left the channel @1090787926 -kornbluth.freenode.net- CIA-2 (~CIA@to.je.spocco.com) joined the channel @1090793833 -kornbluth.freenode.net- roh (~roh@217.13.206.33) joined the channel @1090795964 re @1090796056 The template macro call extension from the d-exprs paper is really nice. I think d2c should support it. @1090796117 I think the syntax is a little unfortunate, though. "?@" seems a little heavy from a type-setting perspective. Then again, perhaps you want them to stand out. @1090796200 -kornbluth.freenode.net- brucehoult_ (~Bruce_Hou@metnet.met.co.nz) joined the channel @1090796209 When the DRM gets revised, this is one change I really want to see in there. @1090796259 It's fairly simple and straightforward, and a clear win. @1090797251 Perhaps oddly, though, I can't find an example of it in use in the fundev sources. @1090800415 commit by housel to fundev: Bug: 7003 @1090800415 Quote file and directory names in build actions so that names containing @1090800415 spaces can be handled properly. @1090800447 That's always handy. :-) @1090800626 commit by housel to fundev: Bug: 7003 @1090800626 * Libraries included from system libraries are always system libraries. @1090800626 * Quote file and directory names in build actions so that names containing @1090800626 spaces can be handled properly. @1090811698 http://www.gwydiondylan.org/~housel/Environment-Options.png is the new Build page of the Environment Options dialog @1090811718 It replaces the radio button selectors for "GNU Linker" and "Microsoft Linker" @1090812570 "It" in particular referring to the "Build script" group at the bottom of the page @1090814577 commit by housel to fundev: Bug: 7003 @1090814578 Add a filter type for Jam build scripts. @1090825109 commit by housel to fundev: Bug: 7003 @1090825110 Okay, so maybe creating build.log files in the build directory is a good @1090825110 idea after all. @1090827338 commit by bruce to src: Job: 7071 @1090827338 Some tweaks to @1090828313 commit by bruce to examples: Job: 7045 @1090828313 These tweaks make list.dylan four times as fast. @1090828313 Still a factor of 20 needed to match C. @1090829584 Why is there an option to save databases? Why not save them all the time? @1090829631 [Asks the guy who may have helped create that option.] @1090829678 [And who is disappointed that he doesn't have a better recollection of which parts of the IDE he did.] @1090831434 -kornbluth.freenode.net- brucehoult (~bruce@202-0-61-61.adsl.paradise.net.nz) joined the channel @1090841259 darn @1090841298 all the top languages in the "List Processing" (deque) task in the Shootout essentially cheat relative to us @1090841365 our program does it the honest way, allocating 10000 list elements and stringing them together, and letting them get garbage collected afterwards. And as a result we spend 60% of our time in GC. @1090841448 the C and ocaml programs allocate fixed-size arrays as a unit. The C program makes linked lists inside that. the ocaml one operates it as a circular buffer. @1090841480 cmucl does it honestly, except that they help the GC by explicitly using their own free list @1090841683 [brucehoult!~bruce@202-0-61-61.adsl.paradise.net.nz] ACTION considering switching the Gwydion runtime to a stretchy circular-buffer representation @1090843630 ok, given the API in the DRM, I don't see why the CMU guys implemented using doubly-linked lists in the first place -- there is no call whatsoever for efficient insertion/removal in the middle of the thing @1090844219 -kornbluth.freenode.net- gabor (root@cantor.gwydiondylan.org) joined the channel @1090844241 re. @1090844253 moin! @1090844281 hi bruce! @1090845964 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090849644 bruce, exactly. The STL deque is a linked list of fixed-sized vectors. @1090849767 BTW, the STL spec is very hard-line about the performance characteristics of the various containers. Although the DRM isn't silent on the issue, it might be useful to spell out the expectations more explicitly. @1090852993 -kornbluth.freenode.net- gabor (root@cantor.gwydiondylan.org) left the channel @1090853156 re @1090853171 -kornbluth.freenode.net- gabor (root@cantor.gwydiondylan.org) joined the channel @1090853532 commit by housel to fundev: Bug: 7003 @1090853532 Use the new build-system's targets and interfaces. @1090854360 morning @1090854652 -dircproxy- You disconnected @1090854881 -dircproxy- You connected @1090856723 -dircproxy- You disconnected @1090858169 moin! @1090860354 -dircproxy- You connected @1090861490 -dircproxy- You disconnected @1090862278 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090863532 -dircproxy- You connected @1090864466 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090864644 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090864918 -kornbluth.freenode.net- lisppaste (~lisppaste@common-lisp.net) joined the channel @1090871463 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090871472 hi Peter @1090871510 hi Peter @1090871518 wow... there's an echo in here. @1090871547 :-) @1090871721 What's the URL for the archive of this IRC channel? Wondering if I missed any interesting conversations over the weekend. @1090871732 there are two... @1090871745 one is mine, http://www.gwydiondylan.org/~housel/dylan.txt @1090871760 The other is a bit more sophisticated: http://meme.b9.com/ @1090871873 Thanks! @1090876527 Optimization/performance question: Defining a sealed domain over inititalize for a class seems to lead to a slight but measurable performance increase when calling "make", even when there is no initialize method defined for the class in question. Do you know why this is? @1090876574 yes @1090876616 are you going to tell him? @1090876627 oh, yeah .. right @1090876662 if you don't provide an initialize method then one might be provided later by another library @1090876685 sealing the domain tells the compiler it may assume that won't happen @1090876695 so it inlines the default one @1090876756 ... which does nothing @1090876776 Peter: do you think a circular list inside a stretchy vector would be an adequate implementation for ? or linked list of bigger chunks? @1090876793 I suspected this part: " if you don't provide an initialize method then one might be provided later by another library" @1090876825 if it's a stretchy then it'll probably never shrink @1090876853 Call me Pete from now on to reduce name confusion. :-) @1090876881 or we could go to last names... @1090876909 [housel!housel@cantor.gwydiondylan.org] ACTION reads the DRM description for @1090876924 Pete is good. @1090876930 it only has to suppot pusing and popping from both ends, and iteration @1090876950 well, and element() being efficient wouldn't be a bad thing @1090876992 a stretchy provides all those easily. the cost is basically an extra add and possible wrapping compared to a regular vector @1090877073 actually, another possibility would be to not wrap, but just keep the used data centered somewhere in a stretchy, with free space at both ends. @1090877091 that would suck if all the pushing was at one end and all the popping at the other though @1090877211 did you look at the FD implementation? @1090877215 Hows do STL implementations reclaim used space in the vectors? @1090877228 I haven't yet looked at other implementations @1090877262 just got to the point of going "this one *sucks*, no matter how I micro-optimize it" and went to bed @1090877270 is basically a vector that wraps around, and gets reallocated when the needs to stretch @1090877342 where is that from? @1090877347 fundev? @1090877360 fundev/Sources/dylan/deque.dylan @1090877376 cool. I'll look tonight. @1090877386 [brucehoult!~bruce@202-0-61-61.adsl.paradise.net.nz] ACTION going to work @1090878906 -kornbluth.freenode.net- brucehoult (~Bruce_Hou@metnet.met.co.nz) joined the channel @1090878945 Concerning my previous question, Bruce said "so it inlines the default one"... which implies that the compiler is generating a specific method for "make" for a particular class, right?... Which isn't totally obvious to me, though I'm not surprised that some magic is going on. @1090878982 well, st the least make() has to allocate memory @1090879249 every class that's defined has a maker function generated by the compiler @1090879269 ... I think @1090879705 [housel] is basically a vector that wraps around, and gets reallocated when the needs to stretch @1090879717 nope ... it doesn't wrap around @1090879756 it has spare space at the start and end, and the elements are copied along by half the length of the spare space at the other end when there is no space at one end @1090879816 it seems wrapping around would be better, though @1090879867 if it's being used as a FIFO, yes @1090879898 makes reallocating a little harder, but not that bad @1090879923 I think a FIFO is the main thing you'd want to use it for @1090879942 (more thought, but probably only one line of code more) @1090879983 wrapping puts more conditional code in every access. Unless you keep it as a power of two in size :-) @1090880020 oh well ... after work... @1090880074 I'm surprised there's not a plain class in the collections @1090880132 what would a plain be? @1090880212 items are pushed into the back and removed from the front @1090880282 I doubt could be implemented significantly more efficiently than though, so there's probably little point @1090880326 or build your own with s @1090880393 That's why I did... some old code I have in the contributions directory. @1090880564 An implementation like thatfor queue expanded to support deque operations makes push-last, push, pop constant time. But pop-last is linear time. @1090880665 3 out of 4 ain't bad, right? :-) @1090880683 languages such as perl/python/ruby seems to just use a as the only array type @1090880717 STL has both and @1090880719 I don't know what they do intermally with it, but they all support push and pop from both ends @1090880801 For perl/python/ruby there is probably no performance difference. But for C++ and us, there is an overhead for using vs. , though the difference is small. @1090881746 i don't see a difference with vs . One of those vs , sure @1090881773 what implementation does STL use for that is faster than ? @1090881878 commit by phinely to examples: job: 7045 @1090881878 removed useless line and return value from "initialize" method @1090882112 I haven't looked at the STL implementations. Assuming that both are vector implementations, I assume that the code for is somewhat more complex. It would have some more checks in it, which slows down the queue operations by a very small but measurable amount. C++ programmers are into optimizing small but measurable amounts. :-) @1090882377 I can't see how push_back and pop would be simplified by not having push and pop_back @1090882503 according to the comments in the STL headers, template class queue isn't a real container class, but more of an adapter that wraps a container class @1090883352 ammend my previous remark to point out that I meant "given a vector implementation". Obviously it can matter with e.g. a singly-linked list with head and tail pointers (as in phinely's) @1090883390 guess you're right. @1090883438 Here's another STL implementation with source: http://www.stlport.org/download.html In it, queue is just a header file. @1090883489 I suspect there aren't many implementations of STL... that's the primary one @1090883584 The link that lead me to it implied it was just used in the Borland compiler. @1090883666 I don't think there are very many people who would not be instantly repulsed at the very thought of implementing STL. @1090883736 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090883739 Just looking at the code gives me a headache. :-) @1090883823 ah... I wasn't paying enough attention... There's STLport (used by Borland and by Sun Forte), and the HP/SGI one (used in GCC, and in MSVC with mods by P. J. Plaugher) @1090884382 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090887678 -kornbluth.freenode.net- CIA-2 (~CIA@to.je.spocco.com) joined the channel @1090887848 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1090888750 hi @1090888781 any objections against gauss.gwydiondylan.org for the new server (sun e450)? @1090889198 I kinda like the repeat of the "g" sound. @1090889295 People I know generally use SGI as the authoritative source for STL: http://sgi.com/tech/stl/ @1090889359 Although looking at the implementations would be useful, it's important to stress that the STL specification says what the performance characteristics must be, without requiring a particular implementation. @1090889409 (Of course, the specification is ultimately rigged so the implementations will be reasonably close to one another.) @1090889457 I haven't read this yet, but this seems to be the overview of the whole performance issue: http://sgi.com/tech/stl/complexity.html @1090889961 The description of STL deque, with comparisons to vector: http://sgi.com/tech/stl/Deque.html @1090892207 -dircproxy- You disconnected @1090895017 -kornbluth.freenode.net- cgay_ (~cgay@h00a0c5e1f619.ne.client2.attbi.com) joined the channel @1090896870 -dircproxy- You connected @1090904585 commit by housel to fundev: Bug: 7003 @1090904585 * Don't exit when handling a warning during build. @1090904585 * Pass the build directory to make-jam-state(). @1090904787 commit by housel to fundev: Bug: 7003 @1090904787 * Do more thorough checks to make sure that we can still use the cached @1090904787 jam state. @1090904787 * Implement the Exit and Echo built-in rules using conditions. @1090904787 * Fix the computation of the project "root" directory to match other @1090904788 parts of the environment. @1090904860 -dircproxy- You disconnected @1090905199 -dircproxy- You connected @1090913345 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090914386 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090915123 -kornbluth.freenode.net- brucehoult (~bruce@202.0.59.246) joined the channel @1090917804 -kornbluth.freenode.net- brucehoult_ (~bruce@202.0.59.129) joined the channel @1090927115 -kornbluth.freenode.net- CIA-2 (~CIA@to.je.spocco.com) joined the channel @1090928355 -kornbluth.freenode.net- brucehoult (~bruce@202-0-60-208.adsl.paradise.net.nz) joined the channel @1090943380 -dircproxy- You disconnected @1090947765 commit by housel to fundev: Bug: 7003 @1090947765 Fix line endings. @1090947798 -dircproxy- You connected @1090950248 -kornbluth.freenode.net- sprout (~Snak@drop242.drizzle.com) joined the channel @1090953724 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1090956478 commit by housel to fundev: Bug: 7003 @1090956478 Un-break error handling. @1090957702 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1090957735 morning @1090957750 Morning everyone @1090959157 hi @1090959193 [hannes!hannes@cantor.gwydiondylan.org] ACTION is configuring the replacement server for cantore... @1090959343 nifty @1090959862 yep, FreeBSD-CURRENT ;) @1090960087 re chan @1090960114 hi prom @1090960123 (CURRENT because its sparc64....(add more dots here)) @1090961408 not that anybody needs an excuse for running FreeBSD-CURRENT :-) @1090962126 ok. i thought thats different on freebsd. in the debian-world, everybody uses unstable. @1090964755 -kornbluth.freenode.net- brucehoult (~Bruce_Hou@metnet.met.co.nz) joined the channel @1090965903 bruce: hi @1090967933 hi prom :-) @1090968925 N'abend! @1090969040 moin! @1090969092 ohmigod I just saw the most horrid C++ "feature" @1090969118 I'm not even sure if it's real, so I'm going to try an example to be sure... @1090969120 That's a pretty strong sentence. @1090969272 hi andreas @1090969463 bruce, hannes. @1090969480 [andreas!andreas@cantor.gwydiondylan.org] ACTION is checking mail one last time before heading for holidays tomorrow morning. @1090970130 brucehoult pasted "funk C++" at http://paste.lisp.org/display/1959 @1090970186 you can substitute the entire body of a constructor with a try/catch @1090970210 the initializers for superclasses/members go after the "try" and before the "{". The body of the constructor goes in the try block @1090970222 Funky indeed. @1090970241 the exception is automatically rethrown after you handle it -- the object it's properly constructed so your caller can't proceed either no matter how you clean up @1090970320 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION hiccups. @1090970372 it's *almost* as if you can have any single statement as the function body, except that there is the special syntax for the initializers between "try" and "{" @1090970380 which mimetypes do we need for mailing list on our new server? @1090970409 text/plain, multipart/mixed, multipart/alternative, sth more? @1090970482 hannes: that sounds about right @1090970500 Does that mean "no text/html" is enforced? @1090970534 What webserver are you installing? Apache 1.x? @1090970586 housel: text/html will be converted to text/plain by lynx @1090970605 yes, apache-1.3.29 with ssl and php4 @1090970651 hmm, mailman has DEFAULT_FILTER_MIME_TYPES and DEFAULT_PASS_MIME_TYPES. any ideas how to set DEFAULT_FILTER_MIME_TYPES to *? @1090970652 [housel!housel@cantor.gwydiondylan.org] ACTION wonders why php works so badly with Apache 2 @1090970662 [hannes!hannes@cantor.gwydiondylan.org] ACTION doesn't like php @1090970664 s/with Apache 2//1 @1090970706 i've also installed a spamassassin which filters all incoming mails @1090970716 we could ditch php and just use mod_perl, I guess @1090970730 then we could use apache 2 @1090970747 [hannes!hannes@cantor.gwydiondylan.org] ACTION would like koala more ;) @1090970757 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-210-46.dynamic.qsc.de) joined the channel @1090970759 of course @1090970782 (but don't hold your breath until it runs on sparc64) @1090970808 ..and freebsd @1090970853 hopefully it will run native on x86 FreeBSD by the end of September @1090970874 housel: :) @1090971093 btw, there might be some problems with threading on linux that we have not found yet. linux 2.5 changes pthread signal semantics to POSIX compliant. @1090971141 until 2.5.something, linux always delivered signals to the process they where sent to. with every thread being a process because pthreads are implemented using clone(). @1090971171 POSIX says the signal should be delivered to one of the threads that have the signal enabled in their thread specific signal mask. @1090971234 ill keep that in mind and have a quick look at where fd/mps use signals and how. but not now. @1090971301 I think FD's handling of Unix signals is a bit fragile at the moment @1090971335 mps barrier support uses SIGSEGV. that will have to be checked, too. @1090971341 yes @1090971471 housel: btw. you said you removed ccl-linker? isnt that used for the c-backend? did you try to get this working? @1090971514 ccl-linker will be easy enough to implement as a jam build script, but I haven't done so yet @1090971546 housel: c-backend support would be really cool.... maybe it even produces better code ;) @1090971549 I need to finish VC7 and MinGW scripts first @1090971555 maybe @1090971645 yes. but it will almost definitely make porting easier... @1090973006 commit by housel to fundev: Bug: 7003 @1090973006 Documentation for the new build-system. @1090973838 re @1090973854 Re. @1090973897 The docs are at http://www.gwydiondylan.org/~housel/build-system.xhtml for the curious @1090973992 Is there really an ELF writer? I thought the compiler emits .s files, and assembles them on Linux. @1090974012 yes, that's right @1090974042 There *ought* to be an ELF writer, though @1090974059 should be easy to write @1090974065 Right. @1090974411 linux-outputter sneakily runs the assembler without the help of the build-system so from build-system's perspective the result is indistinguishable @1090974419 Eek! @1090974687 "coördinate"? @1090974800 httpd is sending the wrong content-encoding @1090974850 Since encoding='UTF-8', what does content-encoding alter? @1090974881 Does it decode UTF-8, then apply content-encoding to that? @1090974915 no, it's just that web browsers let content-encoding override what's in the header @1090974922 Hmm. @1090974924 (as they're supposed to) @1090974975 And if you put an http-equiv in there to set content-encoding, which one wins? @1090974997 I'm not sure in the case of XHTML @1090975015 I just need to add a .htpass file or whatever @1090975135 "Most build scripts include the mini-jambase.jam file..." I thought it was still talking about Jam files in general, but if this refers specifically to FD build scripts, I suggest spelling it out more to make it more obvious, e.g., "Most Functional Developer build scripts..." @1090975181 ok @1090975263 Or perhaps change "Jam build scripts are written using..." to "Jam-based builds scripts...", since the way it reads now I thought it was discussing Jam scripts more generally. @1090975341 Strike that. The surrounding documentation just uses "Jam build scripts." @1090975588 andreas pasted "Problem with newio" at http://paste.lisp.org/display/1961 @1090975665 Anyways, good night, and see you sometime next week! @1090975670 ok, I'll take a look at it later @1090975679 So you start your new job after holiday? @1090975800 I think my confusion stems from "Jam" being a proper-noun, yet being used as an adjective. @1090975819 Have fun, andreas! @1090975859 what would you suggest? "Jam-language build scripts" seems awkward @1090975992 "Build scripts"? You could make the point that they contain Jam content, but then just use the term "build scripts" most of the time after that. @1090976188 ok that should be doable @1090977533 That reads better. Do most or all of the supplied scripts include min-jambase.jam? @1090977552 all of them do @1090977601 So, should that be "Most build scripts may include..." And then somewhere around there mention that all the supplied ones do? @1090977621 s/may/may wish to @1090977679 hmmm @1090977845 s/may wish to/can :-) @1090977974 -dircproxy- You disconnected @1090977991 BTW, it strikes me as odd to use "compiler" to refer to what is essentially a build system. (This is true of FD and d2c.) @1090978009 The same goes for gcc, really. @1090979588 -dircproxy- You connected @1090980287 -kornbluth.freenode.net- sprout (~Snak@ip2.198.145.31.iinet.com) joined the channel @1090981212 I have the meat of a new class written. Not sure if Bruce started on something or not. @1090981876 meaty @1090984947 commit by housel to fundev: Bug: 7003 @1090984947 Various documentation tweaks, some suggested by Chris Page. @1090985114 -dircproxy- You disconnected @1090985298 re chan @1090985365 phinely: I got started on a new deque but didn't get a chance to finish it yet @1090985490 Hi Bruce. I'm working on the forward iteration protocol for mine now. @1090986180 what the basic implementation strategy? @1090986253 -dircproxy- You connected @1090986288 my plan was that it contains a with a power-of-two size (minimum 4 or 8 or so), using wrap-around of indexes via ANDing with a mask @1090986316 the vector is replaced with a bigger one as needed but never shrinks @1090986364 oh, and there's a capacity: keyword for make() as well as size: @1090986766 never decreasing the size sounds like a source for non-obvious memory over-use. maybe the default should be something like reallocating when the used size grows below 1/2 or 1/4 of the allocated size. with a keyword for specifying this ratio and another one for a minimum size. @1090986899 i am not sure about this solution, but to me it sounds like a better idea to never shrink the backing vector. @1090986926 I'm using a doubly-linked list of buffers. I'm not using wrap-around indices, but I don't need them. I recycle buffers where possible. @1090987053 This is why some STL implementations are a container of vectors. @1090987219 This could be useful: @1090987227 (An In-Depth Study of the STL Deque Container) @1090987350 "there is a stark difference between vector and deque in how they manage their internal storage under the hood. The deque allocates memory in chunks as it grows, with room for a fixed number of elements in each one." @1090987360 "However, vector allocates its memory in contiguous blocks (which isn't necessarily a bad thing)."" @1090987394 "But the interesting thing about vector is that the size of the internal buffer grows increasingly larger with each allocation after the vector realizes the current one isn't big enough. The following experiment sets out to prove why deque doesn't need capacity() or reserve() for that very reason." @1090987417 Interesting. Doesn't have capacity(). @1090987477 Got to go now. I'll benchmark mine tomorrow after I get the fowrward-iteration working. @1090987728 The graphs of CPU usage and memory allocation are very informative. I'd like to see those kinds of graphs for every data structure in the dylan library and have them automatically updated after each automated build. @1090987758 (Well, maybe not *every* automated build.) @1090988368 interesting article, except I think he probably screwed the at() test @1090988397 I'm betting he accessed every element sequentially using at(). and that deque caches a pointer to the most recently accessed item @1090988438 Though I assume that's typical usage, either iterating through it sequentially, or looking at one end or the other repeatedly. @1090988489 but he shuld have tried random access as well @1090988511 phinely: how large chunks are you using? @1090988522 [brucehoult!~Bruce_Hou@metnet.met.co.nz] ACTION not sure there is a good answer to that question :-( @1090988540 Yes, random access would be useful, too. @1090988548 ...random access graphs... @1090988758 the problem is that if the chunk size is small then the speed advantage over the currrent chunk size (1) is going to be small @1090988783 I expect random access to be near vector in speed, though, no matter what the implementation. @1090988785 but if the chunk size is large enough to get good speed then you're going o penalize anyone who wants to make a lot of deques with just a little data in each @1090988810 cpage: then a linked list of chunks isn't good enough. @1090988861 re prom's objection to never shrinking: our current hash tables and stretchy vectors never shrink @1090988908 it's very problematic to do shrinking nicely. And the user can shrink as efficiently as we can, by just using copy-sequence into a new object @1090988998 re performance. at present we have I think something like 90% of our runtime in that test taken up in garbage collection and/or memory allocation.. And we're 20 times slower than C/C++ @1090989045 I guess with chunks of size 10 we'd get very nearly 10 times faster, but still be several times slower than C/C++ @1090989085 perhaps we should try both and have a mini shootout between phinley's and mine :-) @1090989150 A linked list of chunks isn't good enough? I think it depends on the size of the chunks. @1090989175 it gives linear access time for random access, no matter how big the chunks are @1090989192 I'm not sure we're talking about the same thing. @1090989199 even chunks of 100 or 1000 elements will still be slow with 1000000 items in the list @1090989216 Right. It depends on the chunk size and the number of chunks. @1090989224 exactly @1090989234 You expect chunks to be large relative to the number of chunks. @1090989243 you going to have variable chunk size? @1090989307 As for small deques, I expect it's safe to say that deques aren't the right choice for small collections. deques exist for fast insertion. If the collection is small, you don't need that, right? @1090989359 But I'm reading up on STL deque to gain some insight into what others think the requirements should be. @1090989363 I don't agree @1090989427 If you had size-efficient small deques with fast insertion, you'd only care if you were frequently inserting and removing items, right? @1090989446 right @1090989452 If you're doing that, and they're small, then you might use list instead, since you won't be negatively impacted by slow random access. @1090989459 suppose you're inserting at one end and removing from the other @1090989481 and the rates are on average the same (they pretty much have to be, long term) @1090989493 Then use a queue. @1090989512 a linked list representation is going to be constantly allocating new blocks for the insert end, and garbage collecting blocks from the pop end @1090989534 this *is* the queue class @1090989542 w don't ahve separate queue and deque classes @1090989548 Currently. @1090989563 and we shoudn't @1090989615 with an vector-based implementation you get to the necessary-sized chunk for the peak size and then there are no further allocations or garbage collection, no matter how long you go on inserting and deleting stuff @1090989616 Well, again, I think the issue is deciding what usage patterns to optimize for, and I'm reading up on examples. @1090989702 I also think worrying about resizing downwards is a non-issue @1090989707 If I were doing a fixed-sized, queue, I'd use a circular buffer, yes. @1090989790 Well, the point is to be aware of the differences in behavior so one can choose the right container for their program behavior. e.g., what about a server that occasionally has high-load periods with lots more items awaiting processing? @1090989800 the fundev "island deque" isn't bad also @1090989835 The point of that article analyzing the shrinking behavior, I mean. @1090989880 I think the behaviour of deallocating the whole thing is more important than shrinking @1090989892 Why don't you just provide several classes with this interface for the different usage patterns? @1090989925 One answer to Riastradh's question is: Different structures exist for that reason. @1090989964 Right, but I'm talking about several implementation strategies for deques in particular, not just different structures. @1090989996 you could certainly do that in extension libraries @1090990000 Right, but I'm suggesting that the solution may be to use a different structure rather than deques in the first place. @1090990014 right now we need *one* that is the default if you go make() @1090990048 .. and right now I want to optimize for the usage pattern in the shootout test @1090990134 -kornbluth.freenode.net- sprout (~Snak@ip2.198.145.31.iinet.com) joined the channel @1090990145 the thing that will do *that* most perfectly is a vector-based representation with a "capacity:" keyword on make() @1090990216 or, at least, that's my expert opinion :-) @1090990273 Does the shootout specify "deque"? @1090990297 it specifies push and pop from both ends @1090990303 you can use any data structure you like @1090990325 Do you have a URL to that particular one? @1090990340 I'm wondering what the other entries use. @1090990498 Is capacity: meant to be a hard-limit or the size of initial space and subsequent growth? @1090990522 hint for initial size @1090990552 I'd then round it up to the nearest power of two :-) @1090990568 STl also has a reserve() function that you can call later on @1090990579 And it would grow in powers of two (like vector, I assume)? @1090990603 e.g. q.reserve(1000); for(i=0;i<1000;++i) q.push("foo"); @1090990611 right @1090990635 I'd just do powers of two to make wrapping not need a test & jump @1090990662 regardles, if it grows then it *must* grow exponentially in order to get amortized constant time per element @1090990803 http://shootout.alioth.debian.org/bench/lists/ @1090990831 STL deque doesn't have reserve(), notably. @1090990842 because it uses chunks @1090990860 the g++ entry is also *six* times slower than the C one @1090990891 I'm suggesting the g++ entry may be poor C++. (I haven't read the code, though.) @1090990901 http://shootout.alioth.debian.org/bench/lists/lists.g++ @1090990908 Where "poor C++" may mean "using STL deque inappropriately." @1090990921 there is no more appropriate data structure in the STL @1090990933 you'd have to roll your own in order to do better @1090990954 That's using a list? @1090990970 g++ STL? A chunked list @1090990976 like Peter is doing @1090991041 the ocaml entry uses a fixed size preallocated array representation, implemented in the program itself @1090991054 very fast, but also very task specific @1090991059 we could do that too, of course @1090991076 that's why ocaml is 66 lines whie we're 35 @1090991083 actually, I take issue with the line counting @1090991094 Of course it would be nice to use a built-in, but is that shootout a reasonable target for a built-in? @1090991098 they don't count lines containg only comments and whitespace. fine @1090991112 but they also don't count lines containing only } for C/C++/java/Perl @1090991118 They should count lines in the implementation, then. @1090991140 So they don't count "end" in Dylan? @1090991141 but they count "end" for Dylan @1090991149 Oh, well, that's just irresponsible. @1090991189 I don't know whether we shoudl go for minimum line count or not @1090991221 the task specs say "you may use built-in stuff if available". I believe that is because in many of the languages built in stuff is fast while stuff you program yourself is slow @1090991232 that's obviosuly not the case for Dylan @1090991246 I bet speed is the thing most readers will care about, although there's a certain point where size and complexity of the code becomes a severe turnoff for someone deciding whether to take a look at Dylan. @1090991262 There must be some better way to measure code size. @1090991270 so I'm actually tempted for some of them to implement a specialized collection class rigth there, and show things such as forward-iteration-protocol and element() overloads to integrate into the core language @1090991273 s/size/size and complexity/1 @1090991290 BTW, Apple's new linker does dead-code stripping. Finally! @1090991306 I'd actually love to be able to put in *severL8 Dylan entries, each optimizing different things @1090991317 e.g. one going for pure balls-out speed. @1090991357 one going for minimum token count in the program -- which will probably end up roughly perl/python/ruby speed but also the same line count as them @1090991358 The shootout should be arranged like that. Different entries optimizing for different parameters. Probably a lot more useful for comparison. @1090991381 and maybe one lik the 2nd but with strategic declarations that so that it is nearly as fast as the 1st one @1090991405 A category specialized for Dylan. ;) @1090991412 Bringing the shootout closer to usefulness is a very big job, cpage. @1090991435 To be fair, you'd have to have several versions of every benchmark for every implementation. @1090991535 Do you mean "...of every implementation for every benchmark"? ie., you don't mean different benchmark specifications? @1090991546 No, I meant implementation as in language implementation. @1090991556 Ah. @1090991564 I.e. Stalin, d2c, FunDev, cmucl, MLton, SML/NJ, et cetera. @1090991603 And you'll still run into problems inherent in trying to compare complex systems by benchmarking. @1090991690 Well, of course we could argue that benchmarking is almost certainly a failed endeavor. :-) @1090991694 Speaking of running into things, I think I'll run into bed now. @1090991703 Indeed. @1090991729 Benchmarking is like Ethernet: It works in practice, but not in theory. @1090991783 There are clearly differences which can be practically measured, although proving you're measuring something meaningful may be a lot of work. @1090992756 brucehoult: Going back a bit, I thought you were trying to say STL deque is slow, but that code uses list. @1090993512 Ooh, I like this: "There is also negligible difference between operator[] and at() as well." @1090993573 For those unfamiliar with STL, operator[] does no bounds checking, and at() does. @1090993899 This bit from the conclusion is interesting: @1090993901 "If you are planning to use insert(), or have a need for pop_front(), use deque." @1090993907 "Well, ok, vector doesn't have pop_front(), but based on the results of Experiment 4, it might as well not have insert() either." @1090994057 I wonder how those results compare to vs. . @1090994794 To follow up about the g++ code, I see the benchmark has to do with lists, and it is the Dylan version that is using . The C++ version uses std::list. @1090994976 I wonder if that means the benchmark is inappropriately calling this a "list" benchmark when it should be called a "deque" benchmark? @1090995021 I also wonder how well C++ would do if it used a deque instead. @1091000059 Hmm. Isn't it a little heavyweight to inline element(,)? @1091000061 @1091012089 -kornbluth.freenode.net- cpage (~Chris@adsl-67-113-3-220.dsl.snfc21.pacbell.net) joined the channel @1091013984 -kornbluth.freenode.net- brucehoult_ (~bruce@202.0.59.112) joined the channel @1091027968 -dircproxy- You disconnected @1091028239 -dircproxy- You connected @1091029185 -dircproxy- You disconnected @1091029197 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-174-123.dynamic.qsc.de) joined the channel @1091029639 -kornbluth.freenode.net- sprout (~Snak@ip2.198.145.31.iinet.com) joined the channel @1091032285 -dircproxy- You connected @1091038252 -kornbluth.freenode.net- CIA-2 (~CIA@to.je.spocco.com) joined the channel @1091043732 How to make FunDev optimization coloring display in Emacs: @1091043759 1. M-x load-file fundev/tools/gnuemacs/dylan-optimization-coloring.el @1091043795 2. find-file foo.dylan @1091043820 3. M-x fundamental-mode (so that Dylan mode syntax coloring doesn't interfere) @1091043854 4. M-x load-file build/foo.el @1091044472 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1091044766 -kornbluth.freenode.net- pritlove (~pritlove@195.37.152.252) joined the channel @1091044909 -kornbluth.freenode.net- pritlove (~pritlove@195.37.152.252) left the channel @1091045376 Morning everyone @1091045514 morning Peter @1091054334 re @1091054348 Should we make the optimization coloring a minor mode of dylan-mode? @1091054417 Something with a command where you can toggle between optimization coloring and syntax coloring? @1091054447 Actually, another possibility is making the optimization color the background and leave syntax coloring in place. @1091054481 Does the optimization coloring only indicates whole lines? @1091054512 no, the information has byte ranges @1091054522 [housel!housel@cantor.gwydiondylan.org] ACTION takes a screenshot @1091054587 [cpage!~Chris@adsl-67-113-3-220.dsl.snfc21.pacbell.net] ACTION really needs to get a cheap Windows machine, or maybe VirtualPC @1091054759 http://www.gwydiondylan.org/~housel/syntax-coloring.png @1091054996 yes, VirtualPC would seem to be a good investment @1091055272 I've tried fundev in VirtualPC and it sucks @1091055359 it shouldn't be hard to get dispatch optimization information out of d2c if someone wants to do the work. @1091056147 yes, that's true @1091056200 .. for the bad cases, at least @1091056213 we don't keep around the information to show that something has been inlined, for example @1091056239 but highlighting GF dispatch and general dispatch should be easy @1091056320 we could add a field to TLFs containing a collection of inlining events @1091056332 I think that's fine. Inlined calls are a "0". A statically-dispatched method call is a "1", etc. @1091056390 Inlined calls would be indicated as the negative space. ;-) @1091056399 right @1091056464 [Looks at the PNG.] Thanks for the refresher. When I was at Hqn I didn't look at that much. Maybe it was still under development? @1091056512 I don't think it was in the 1.0 beta, but I believe it was in 1.0 @1091056527 Looks like it does overlapping ranges. @1091056542 yes @1091056586 e.g. copy-sequence inside make inside as? @1091056598 Is blue your default emacs color? Inside FD, I thought black was the "0". @1091056601 three different coloured close parens at the end @1091056623 Yeah, very nice. @1091056635 (defvar color-not-all-methods-known "Magenta") @1091056635 (defvar color-failed-to-select-where-all-known "Red") @1091056635 (defvar color-lambda-call "Blue") @1091056635 (defvar color-inlining "DimGray") @1091056635 (defvar color-slot-accessor-fixed-offset "ForestGreen") @1091056635 (defvar color-eliminated "Pink") @1091056635 (defvar color-dynamic-extent "DarkTurquoise") @1091056635 (defvar color-program-notes "Yellow") @1091056635 (defvar color-background "white") @1091056702 So why is most of that blue? @1091056723 Is it inside a call? @1091056745 blue means it knows the exact method and calls it directly @1091056781 But, for example, comments are blue, and "let" is blue. @1091056834 It's also interesting that "make(,...)" is "eliminated". @1091056837 that whole section was inside a select(modifier), all of which got colored blue by default @1091056851 AH. @1091056855 er...Ah. @1091056897 concatenate got inlined, that's nice. @1091057007 The downside to the overlapping is that there may be some ambiguities. @1091057028 (I can't tell if they're ambiguities or not. It's ambiguous. :-) @1091057134 Is DarkTurquoise the color of the three "method"s? @1091057237 BTW, what do you think about putting the coloring files in CVS alongside the sources? For extra credit, provide a way to use it in the CVS web viewer. @1091057339 I don't know about putting them in cvs as such, because that would depend too much on people doing the right thing e.g. actually compiling code before checking it in :-) @1091057349 -1 on the first idea, +1 on the second @1091057376 -1 on which? @1091057378 but having our server compile newly-checked in code and teaching viewcvs how to use the information would be good @1091057385 I hate putting generated code into version control @1091057398 +1 @1091057417 Sure, but this is really meta information, not generated code. @1091057438 it's also going to vary depending on which version of the compiler was used by the person who checked in most recently @1091057457 I'd also like to see performance information archived and visually displayed alongside code. @1091057479 I like the idea of letting a server handle it, so the results are consistent and up to date. @1091057580 can be part of what "tinderbox" is supposed to do @1091057619 .. which, I assume, is to quickly chastise people who break the build @1091057793 yes @1091057805 Adobe had a system that would page someone if something failed. Who's going to volunteer to be on call? :-) @1091057845 tinderbox generally shows you who broke the build @1091057860 how does it "show"? @1091057889 it shows commits, and trial builds in progress; when a build fails it turns red @1091057898 I've never seen the link from the front page do anything useful @1091057919 http://www.gwydiondylan.org/cgi-bin/tinderbox/showbuilds.pl?tree=Gwydion @1091057963 also, we don't necessarily have to have the builds happening on our web server. especially as it seems we're moving to a slower one @1091057988 yes, tinderbox is a client-server app @1091058021 we've got at least half a dozen dual proc 3+ GHz P4s and nearly as many dual proc G5s sitting around here mostly idle @1091058070 .. as does my Athlon 3200 at home, though the net connection isn't reliable @109