* 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 @1091058236 Who's "we" and will y'all volunteer the machines? @1091060948 This is interesting: Researchers Aim for Plain-English Debugging @1091062571 "we" is "at work". And I don't think anyone would care if they ocassionally spend 10 or 15 minutes on a Dylan build. @1091062644 Cool. That's just the time for an incremental update, or a full build? @1091062885 (Seems fast to me, but then I was using a 500MHz G4 until recently.) @1091063378 -dircproxy- You disconnected @1091064075 d2c bootstrap @1091064120 my Athlon 3200 at home is about 5 minutes for the 1st phase of a d2c bootstrap, and 7 for the 2nd phase + running tests @1091064140 the P4s are a little slower but not too much @1091064167 actually, the 3.2 Ghz P4s are pretty much the same speed as the 2.0 GHz G5 @1091064226 mindy bootstrap is 2.5 hours on P4 3.2 (Dell 650's) or G5 2.0, 2.0 hours on Athlon XP 3200 (2.2 GHz ASUS homebuilt) @1091064251 I hear the Athlon 64s are faster, but they're also a lot more expensive... @1091064313 than G5? @1091064329 we'll have some Dell 670s and 2.5 GHz G5s shortly (both are ordered) @1091064345 they sell them in lidl(local supermarket-chain) here for about 1200Eur. @1091064347 Athlon 64 faster than Athlon XP. @1091064383 1200 Eur for what? @1091064438 an complete athlon64 computer with 1/2gb ram, 160-250gb hdd, asus mainboard and it is labled 3200+ or so @1091064462 radeon graphics and nearly all the fancy connectors you could need @1091064480 soudns abotu right @1091064514 I built my Athlon XP3200, 160 GB disk, 768 MB RAM for NZ$1500, which is about Eur800 @1091064534 [roh!~roh@217.13.206.33] ACTION wants such a beast as next workstation.. but if, then one with 3 ht-channels.. what means i have to wait for the prices to drop (new socket) @1091064544 only a Radeon 5200, 'cause that's all I need @1091064644 i have an old thunderbird 900 here with 1gb ram.. and it sucks big pieces of metal through the ground when you detect it slows down with >900andsomewhat ram .. /me wants 64 bits, and no silly stuff like 'you cannot do dma with that ram up there cause we were too stupid as we designed ia32' ;) @1091064725 computers only have to be fast to catch up with their users messing around with their compilers and amouts of data that are just plain sick (if i think 5 jears back) @1091064776 oh, sure @1091064796 everything I do at home that doesn't involve repeatedly building d2c, I do on a 266 MHz G3 laptop @1091064839 I do a *little* d2c work on the 1 GHz G4 iMac, if I can prize Svetlana away from it, mostly because of Shark @1091064848 my laptop is a pII-366 ... no problem.. as long as i do not open any browser that can render actual html-monsters @1091064879 oh, Safari works extrmely well on the 266 @1091064917 even mpeg4 is no problem.. as long as it stays < ntsc res. cause if it goes => it's to big to fit in the 2.5mbyte videoram *g* @1091064970 heh. Try *this* one: http://www.gwydiondylan.org/~bruce/st_auban_spring_2004.wmv @1091064980 i'd also want to own one of the pismo thingies... only because they run so long if you ram 2 accumulators inside it, but nobody wants so sell them cheap enough @1091065019 pismo would be nice. that's two models after my WallStreet, and slightly thinner as well as faster @1091065055 *yikes* @1091065085 VIDEO: [WMV3] 720x576 24bpp ... even my thunderbird900 is too slow for that using that microsoft dmo-crap @1091065130 interesting. I blamed MS's deliberate inneficient Mac coding for my 1 GHz G4 iMac only managing 6 - 8 fps on it @1091065157 that machine copes with that same frame rate and size no problems at all using DV, QuickTime or MPEG @1091065185 it uses about 65% of one CPU on the G5 @1091065200 mpeg1 and 2 are fairly easy to do on cpus like p3 and k7 as well as g3/g4 @1091065222 But I assumed any P3 would probably be able to play it @1091065251 quicktime(which is a container with usually svq3 or mpeg4 in it) is only ugly to demux @1091065290 right, both "QuickTime" and "WMV" are only contaier types and can have various codecs for the contents @1091065292 brucehoult hm.. any p3>=1ghz i assume could eventually do it.. on win32 where it's better optimized @1091065335 wmv is as well as svq3 only h263 with ugly tweaks i heard @1091065363 [roh!~roh@217.13.206.33] ACTION likes xvid ... just the best mpeg4 out there @1091065393 oh a machine that can handle it, that vid is quite a nice tour through the French Alps in a sailplane, filmed a couple of months ago @1091065432 such a thing as an port of xvid to dylan with an optimizing compiler could be THE killer-app *hide* @1091065463 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION drags the volunteer out of his new hiding place. @1091065537 brucehoult i only have durons between 600 and 1600mhz and one thunderbird900.. the all lack the bigger l2-cache from the athlon-xp which means i cannot even decode hdtv mpeg2 (1920x1088 at 17-24mbit/sec) in realtime on my machines while an athlon-xp1600 does that with <70% load @1091065570 [roh!~roh@217.13.206.33] ACTION defends himself with a long roll of paper labled 'todo file' @1091065595 How big is that movie, anyway? I'm at 2% buffered. @1091065605 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION scribbles 'dylvid' on both ends of the roll of paper, just in case roh was going to trick him about which end was the head of it. @1091065652 Length: 206,800,176 @1091065705 Is there a way to convince WMP to start playing without waiting for buffering? @1091065855 no.. there is no way wmp can be used for anything really which not is 'blocking screen space' @1091066006 I just want to see a few frames so I can see what the movie is. @1091066114 I set the buffer down to 1 sec. I'll see if that helps. @1091066150 cpage: wmp will start playing it quite quickly, but you need the *latest* Mac wmp in order to see any video @1091066167 I have 9.0.0. Is there something newer? @1091066171 well, I"m not sure about the very latest, but I had to update my approx 1 yr old one @1091066200 nope @1091066208 build 3307 plays it @1091066213 I probably should mention I have 384Kbps DSL. @1091066225 It's 9.0.0 (3307) @1091066232 I have 128 kbps DSL @1091066241 (at home) @1091066258 Well, I set the buffer down to 1 sec and it's still only up to 3%. @1091066306 Says it's currently receiving at 0 Kbps, which is not entirely accurate, but feels about right. @1091066327 Oh, it's up to 5%. Maybe this *is* faster than the default buffer size. @1091066342 so guys.. goin to bed... have to travel to berlin tomorrow @1091066344 n8 @1091066416 well cantor is a happy little machine. 96% CPU idle. So no strain there @1091066703 Well, I give up on the movie. It was at only 13% and dinner's here. We're watching DNC highlights on TiVo with a friend from Maine. @1091066940 try downloading it while you have dinner then :-) @1091066945 a screenshot for you @1091066967 http://www.hoult.org/bruce/Picture\ 3.pdf @1091066974 urg @1091066981 change the "\ " to %20 @1091066983 silly me @1091066993 http://www.hoult.org/bruce/Picture%203.pdf @1091067041 The requested URL was not found on this server. @1091067119 -kornbluth.freenode.net- water (~water@c-24-19-39-179.client.comcast.net) joined the channel @1091067154 I'm an idiot @1091067166 I'll argue with you about that. @1091067169 try now @1091067197 did "scp foo hoult.org:" instead of "scp foo hoult.org:web" :-( @1091067207 Wow! *Those* are mountains. @1091067263 yes they are @1091067272 there's 15 min of that in the vid @1091067277 very impressive stuff @1091069123 -kornbluth.freenode.net- water_ (~water@c-24-19-39-179.client.comcast.net) joined the channel @1091070033 -dircproxy- You connected @1091070194 -dircproxy- You disconnected @1091070910 commit by housel to fundev: Bug: 7003 @1091070913 * Set $(RM) correctly so that the Clean action works. @1091070913 * Don't complain about DylanLibraryCHeaders doing nothing. @1091071519 -dircproxy- You connected @1091074696 [housel!housel@cantor.gwydiondylan.org] ACTION is learning more than he ever intended to about linking Windows programs with the GNU linker @1091075438 -kornbluth.freenode.net- water_ (~water@c-24-19-39-179.client.comcast.net) joined the channel @1091079239 -kornbluth.freenode.net- brucehoult (~Bruce_Hou@metnet.met.co.nz) left the channel @1091079653 -kornbluth.freenode.net- luc_ (luc@ppp100.server.by) joined the channel @1091079848 -kornbluth.freenode.net- luc_ (luc@ppp100.server.by) joined the channel @1091079892 hi. can anyone help newbie with regexps in gwydion? :) @1091080138 I haven't used that library, but you can always ask and see what happens. This channel tends to have long quiet periods, but post and eventually you'll usually get a reply. @1091080182 Or post to comp.lang.dylan, or the info-dylan mailing list, or the gd-hackers list for Gwydion-specific questions. @1091080232 :) ok. so this is my current problem: @1091080233 define constant *regexp* = "(\\d+)d(\\d+)(([+|-])(\\d+))?"; @1091080233 let (found?,positions) = regexp-position(dice, *regexp*); @1091080233 aborts at runtime and shows me next:Expected an instance of {Class }, but got #f, at @1091080233 "parse-string.dylan", line 49, characters 5 through 7: @1091080233 #f; @1091080235 ^^^ @1091080253 i just think that i'll get answer here faster. @1091080272 dice is string of course @1091080450 c.l.d and the mailing lists have larger audiences. @1091080485 i see. ok. will try to post to mailing list. thanks @1091080591 Have you looked at the contents of parse-string.dylan? @1091080628 (I'm trying to locate it.) @1091080634 yes, i looked but i'm not so good in dylan @1091080647 Where is it? @1091080652 wait a minute @1091080705 src/common/string-ext @1091080715 method consume @1091080803 That must be buggy code. It's evaluating to #f, but the function result is , thus the error. @1091080830 Same is true of lookahead(). @1091080869 I suppose the result types should be false-or(...), but then you also need to check whether the callers allow #f as a result. @1091080870 as i can understand this is signaling that we overlooked our string. but i don't understand why this can happens :( @1091080913 as i said -- i'm not so good in dylan and i can't trace regexps library where this can happens @1091081052 by the way -- return value is correct. if you'll look at define constant = false-or(); @1091081086 Yeah, it's not yet clear to me how you get from regexp-position to consume(). @1091081142 Okay, but consume's return type is wrong. @1091081169 (or it should be signaling an error explicitly) @1091081214 seems so. lookahead is correctly defined but consume is not. @1091081228 "[+|-]" is that right? Should it be "[+-]"? @1091081284 yes, this is my mistake but it should't have such results, as for me it's correct regexp even eith this mistace @1091081306 What happens if you remove it? @1091081321 whait a minute. trying @1091081333 same result @1091081360 My guess is the regexp isn't well-formed, since I haven't yet figured out what the rest of the call stack looks like at the point of error. @1091081388 This regexp package uses plain "()" rather than "\\(\\)"? @1091081393 it works if i backslash + in []. as for me it's wrong @1091081432 Normally don't you need to put "-" first in "[-...]"? Can it go last? @1091081454 wait a minute/ will try @1091081463 "as for me it's wrong"? @1091081524 yes. it works if i move - at first palce. i don't think that perl, for example, has such problem in regexps. @1091081551 I assume this re parser expects to see a right-hand-side for "-" when it's not first in the set. @1091081576 I'm not sure what rules this package is supposed to have, but it seems like it would make sense for it to allow a trailing "-". @1091081639 How big is your program? Could you post it with lisppaste and I'll try to remember to post a bug about it at some point? @1091081653 ok. so seems that this is my problems with regexps. @1091081681 Well, consume() should be fixed, and someone should decide whether a trailing "-" is supposed to be valid. @1091081703 then maybe just post regexp? @1091081772 If you have a small program that reproduces the bug, that'll be easiest. If your program isn't appropriate, just the regexp will be fine, and since you already posted it here, you don't need to post elsewhere. @1091081810 ok. i'll make small programm with such regexp and post it to mailing list. @1091081919 thanks for help @1091082117 by the way -- why in gwydion used handmade regexps library and don't used pcre for example? @1091082395 Somebody wanted to have a native Dylan re library, which I think is a good idea. @1091082406 Also, probably because pcre didn't exist yet. @1091082417 (Or wasn't popularly known.) @1091082455 Or do you mean "PCRE" in the sense of "the same feature set"? @1091082465 why this is a good idea? anyway noone will not see any internals and don't use them. as i canunderstand usefull only couple of functions like regexp-position @1091082499 i mean Perl Compatabli Regexp Library :) @1091082779 One reason it's probably a good idea to implement common libraries natively is so that the interfaces can be appropriate for the language. Another is because it allows you to maintain those libraries without switching languages. @1091082831 Besides, it's an excellent exercise and proof-of-concept to show how a common library like regexp can be implemented natively. @1091082895 maybe you're right :) i don't see big advantages except -- library used interfaces as rest of language. @1091083021 I see from the Perl history that Perl 5 was released around the same time as the Dylan definition was completed. @1091083042 I know that I personally wasn't aware of Perl probably until several years later. @1091083090 So I think the most direct answer to your question is that Perl wasn't the "market leader" on regular expressions yet. :-) @1091083101 i see. i just tried same regexp in perl, with [+-], works well with quotting and without. @1091083124 i think that perl's regexp is much powerfull :) @1091083136 Sure. Regexp libraries differ in syntax and supported features. @1091083147 And I think you found a real bug, in any case. @1091083187 What I really want to do at some point is implement a pattern-matching library that doesn't use strings. @1091083194 ok. so should i post it somewhere this conversation is enough? :) @1091083216 and use what instead? @1091083222 This is enough for me to post a bug, but if you have a complete program that triggers it, I wouldn't mind you posting that, too. :-) @1091083282 [Looking for the website. There's a Scheme library that doesn't use strings.] @1091083287 unfortunatly i don't have yet complete programm, i just start learning dylan and my programm don't works at all :) @1091083303 Okay, that's fine. @1091083489 Here's another reason to re-implement a PCRE library: @1091083501 "If compiled with CMUCL it outperforms Perl's highly optimized regex engine (written in C) which to my knowledge is faster than most other regex engines around." @1091083535 :) interesting. looking at site @1091083914 Hmm. I can't find the URL, but the idea is that you use macros to define patterns directly in the language without strings, which allows, for example, for parts of the pattern to invoke arbitrary functions. It's more closely integrated with the surrounding language. @1091083934 The compiler can syntax-check it for you, for example. @1091083987 i see. something like Meta? @1091084025 Not sure. Which "Meta" is that? @1091084063 libraries/Meta in CVS :) @1091084284 Hmmm. Maybe like that, yes. I don't think I've seen that before. The one I'm thinking of looks a little different, but it may be the same basic idea. @1091084396 [Looks at the HTML documentation for the Lisp version.] Hmm. May be I'm thinking of the Lisp version, though I'm not entirely sure it's the same one. @1091084547 commit by phinely to examples: job: 7045 @1091084547 added a kth-smallest function. actually it implements Vladimir Zabrodsky's MODIFIND @1091084547 we are still very, very slow in the benchmark because of library problems. There are gf calls everywhere. @1091084754 It's challenging to Google for something with "meta" in it. "meta" is everywhere. @1091084971 commit by phinely to examples: job: 7045 @1091084971 fixed spelling of ackermann @1091084971 added default for command line argument @1091085725 can you answer next stupid question? :) @1091085733 Sure :-) @1091085784 ok. i got collection with bounds after aplying regexp. how i can do somethig like next: @1091085787 for ( (start,stop) in positions)? @1091085839 as i can see only one variable allowed in such form of for @1091085844 If I understand correctly: for (start in positions, stop in positions) @1091085857 Whoops! Not quite. @1091085932 positions is a sequence of boundaries, and you need to look at positions[0] and positions[1], then positions[1] and positions[2]? @1091086114 not exactly, as i can see i need to look at position[0] and position[1], then at position[2] and position[3] @1091086191 1d60+10 =~ (\d+)d(\d+)(([\-\+])(\d+))? gives me 0 7 #[0, 1, 2, 4, 4, 7, 4, 5, 5, 7] @1091086195 Well, I'm not sure if there's a best way, but I can think of one or two: @1091086219 simplest -- use step 2 in increment :) @1091086244 i just think that maybe there's more nice looking way. something like python allow to do with collections @1091086355 for (i from 0 to size(positions) by 2) let start = positions[i]; let stop = positions[i + 1]; ... end for; @1091086568 yes. this is direct solution for this. @1091086576 Hmm. Yeah, can't think of anything more elegant yet. I'm surprised the result isn't a sequence of pairs. @1091086624 hm, maybe it is. i don't know. this text i got after %= in format-out @1091086681 What are "0" and "7"? @1091086711 starting and ending positions for copmletly matched regexp @1091086732 let (start,stop,#rest positions) = regexp-position(dice, *regexp*); @1091086741 0 is start, 7 is stop @1091086784 According to the source for regexp-position(), it should return an integer and then a sequence. I wonder where "7" comes from. @1091086833 Oh, does your code look like this?: let (start, stop, #rest positions) = regexp-position( ... ); @1091086847 yes. i post it @1091086857 Yes, we overlapped. :-) @1091087006 if i define class with 2 elements and define setter for it will it help? :) i mean will i be able to use it in such form of for? :) @1091087020 i can't find where 'fot' macros defined to look at it @1091087045 for? @1091087064 yes. 'for' @1091087119 The documentation is here: @1091087130 The macro will be a lot less helpful. It's very complicated. @1091087169 The issue is that there is no way to tell \for to iterate over a collection two at a time. @1091087224 ok. i see. this was just silly expectations after using of python :) @1091087242 Not silly at all. It seems to me there should be a clean way to do this. @1091087254 If there isn't one, maybe there should be. @1091087296 i think so too, but if there's no such way right now i'll use plain 'for' with indexes :) @1091087315 by the way -- can i change index inside loop? @1091087372 By the way, there's an example implementation of \for in the DRM: @1091087501 Here's the d2c source: @1091087551 ok. as i can see to use such forms of for i need to define new forward-iteration-protocol. right? @1091087555 You can change the value of the index variable inside the body, but it won't affect the value the next time through the loop. @1091087646 You only need to define a forward-iteration-protocol if you want to make it possible to iterate over a class you define. @1091087727 Even if you did, it only returns one element at a time. @1091087774 The iteration protocol determines how to iterate over every item in turn. The \for macro is responsible for providing convenient syntax for describing different iteration patterns. @1091087798 ok. silly tought. anyway -- i think such iterations can be usefull. anyway -- thanks for help. @1091087819 You're welcome! Please feel free to drop in any time. @1091087842 I wonder if someone may have already solved this with another macro or function. @1091088023 I'm sure when others show up they'll have some suggestions. @1091088230 by the way -- regexps have nice feature: @1091088230 1d60-10 matches to (\\d+)d(\\d+)(([-\\+])(\\d+))? but not matches to (\\d+)d(\\d+)(([\\-\\+])(\\d+))? @1091088230 i think this is wrong too. @1091088296 oh, and last questions for today :) @1091088317 can dylan dinamicaly load new classes, libraries at runtime? @1091088323 Again, putting \ before - means - is no longer first in the set. I've only ever seen it supported in the starting position. @1091088379 Dylan can create classes at runtime. It can also link against DLLs, which define classes, effectively adding those classes at runtime. @1091088383 but it's quoted and should be treated as region definition @1091088419 [\-\] is identical to [\], right? @1091088447 so there's no such mechanism, like in ObjectiveC for example, where programm can load bundle at runtime and use this loaded classes. @1091088460 I think I just said, "yes." :-) @1091088494 no exactly :) binding at runtime is not equal to binding at linking :) @1091088506 I don't know whether d2c has support for loading a DLL explicitly from a file, as opposed to linking against it and loading it implicitly. @1091088535 But if you load a DLL, and it defines classes, those classes are effectively loaded at runtime. @1091088593 only one question -- should programm to be linked with this dll or i can deploy this dll later and just tell somewhere in config that it should be loaded? @1091088609 I would expect that if there is support for adding classes when loading a DLL that was linked against, that if you called the appropriate platform-specific function to load a DLL explicitly, any classes in that DLL would also be loaded. But that's just speaking generally. @1091088697 The direct answer to your question is: I don't know whether d2c supports explicitly loading a DLL without linking against it. @1091088720 i see. thanks :) will not annoy you anymore today :) @1091088738 Not annoying me at all. Wish I had an answer for you. :) @1091088751 I'm sure someone else will answer it later. @1091088801 i can't stay on chanell all day and night :( @1091088894 Try posting to comp.lang.dylan, or one of the lists. (I recommend comp.lang.dylan, to get the widest audience, and to keep the activity level of the newsgroup up for visibility. :-) @1091088963 is there any public nntp server with it? @1091089010 You don't have access to an nntp server? @1091089065 i don't know any nntp server with post permission without auth :) @1091089069 Try Google Groups. I've never used it to post, but I think that should work. @1091089113 ok. thanks @1091089148 Or just stick with info-dylan or gd-hackers if that's more convenient for you. @1091089167 Are you subscribed to either of them? @1091089197 i already subscribed to gd-hackers. there's not so much posts in it :) @1091089270 Yeah, a lot of the discussion ends up here, unfortunately. Even with logging, it's not as organized as an email thread. @1091089399 yes. and nntp is better then mai list, from my point of view :) @1091089440 +1 :) @1091089469 Mostly I want to encourage people to use nntp to maintain a higher visibility for Dylan. @1091089484 comp.lang.dylan gets less traffic than anywhere else. @1091089525 i see. ok. thanks for help. will go to try to do something usefull :) @1091089542 Hmm. Looks like the gateway from comp.lang.dylan to info-dylan is down. I see some posts that I never got in email. @1091089631 i don't subscribed at info-dylan at all. there's no mention about such mail list at gwydion's site @1091089852 Yeah, I noticed that. @1091089902 Subscription information: @1091089930 However, it's only a one-way link from c.l.d to the mailing list, and as I said, it looks like even that isn't working right now. @1091090081 so it' snot worse for subscribing :) @1091090238 Well, not at the moment. It needs to be fixed. @1091091111 -kornbluth.freenode.net- luc_ (luc@ppp100.server.by) left the channel @1091104750 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-174-123.dynamic.qsc.de) joined the channel @1091106706 hi @1091107337 mornin @1091109485 how does viewcvs get header and footer and sidebar on cantor? (new webserver is currently at https://fuckup.berlin.ccc.de/cgi-bin/viewcvs.cgi/) @1091109598 Helpful hint: Put URLs inside < > so IRC clients know where the URL begins and ends. ")" is a valid URL character. @1091109644 cpage: ok, thx @1091114274 [housel!housel@cantor.gwydiondylan.org] ACTION refuses to type that URL :-) @1091114331 -dircproxy- You disconnected @1091114716 housel: its a classic hostname. live with it ;) @1091115412 -dircproxy- You connected @1091115714 ok, mysql + php is running :) @1091116044 -dircproxy- You disconnected @1091123385 bugzilla should work, too. please test @1091123574 -dircproxy- You connected @1091124428 works for me @1091124438 cgay: your account also works? @1091124443 yes @1091124466 i guess in the old version they got rid of the Huge Black Banner @1091124474 we did that here as well :) @1091124479 [hannes!hannes@cantor.gwydiondylan.org] ACTION still has no idea how cantor puts header, footer and sidebar into bugzilla and viewcvs :( @1091124494 for bugzilla i'ts in the database @1091124500 cgay: yep, tell me how an i'll do it ;) @1091124502 one of the customizations @1091124536 if you import the whole database you should get it @1091124552 housel: i imported bugs and gwydion db @1091124983 why is the image missing from the banner in the home page? @1091125175 hmmm... I just looked at the "parameters" page and the HTML stuff isn't in there anymore @1091125191 maybe 2.16.6 uses a different method of customizing that @1091125275 also, the random quips are gone @1091125281 -kornbluth.freenode.net- CIA-3 (~CIA@to.je.spocco.com) joined the channel @1091125393 i didn't know there was a customization for it, i just hacked the templates @1091125718 I can't find it on cantor now either.... hmmm @1091125838 I'll look later @1091127745 yes, probably this in the templates. @1091127813 i just talked with andreas (we're at the same camp). he said cantor will probably online until aug 18. (i thought until aug 1) @1091128625 found it and removed it @1091128744 it = ? @1091129088 picture of me and my wife at church camp: http://www.irvinebaptist.org/Retreat/Retreat04/Images/04%20Summer%20Retreat%20267.jpg @1091129171 hosel: the bugzilla banner @1091129176 I see you cleverly disguised your eye colour, housel. @1091129620 cvszilla only needs those files in /usr/lib/cgi-bin/cvszilla? @1091129674 dunno... ask bruce @1091129689 i'll try and see @1091129694 There are also some mods to the base bugzilla, I think @1091129887 hmm, is cvszillas home http://homepages.kcbbs.gen.nz/~tonyg/ ? @1091129931 theoretically, but I think the version bruce installed has some of his own mods @1091129937 and he's made more since then @1091130108 i'll write him a mail @1091130165 picture of me doing Chinese <=> English interpretation: http://www.irvinebaptist.org/Retreat/Retreat04/Images/04%20Summer%20Retreat%20286.jpg @1091130617 here's me: http://carlgay.home.comcast.net/photos/hotdispatch-1/carl.jpg @1091132179 -kornbluth.freenode.net- bfulgham (~chatzilla@63.192.83.15) joined the channel @1091132195 re... @1091132758 hi brent @1091132819 brent: do you know how to get sidebar, header & logo on the bugzilla page (i'm configuring the new server which will replace cantor)? @1091132860 Hi! @1091132894 Let me take a minute to look at Cantor. I'm trying to remember whether this required modifying templates, or if this was configurable... @1091132971 brent: thanks. the new web server is currently reachable at https://fuckup.berlin.ccc.de/ @1091133007 [bfulgham!~chatzilla@63.192.83.15] ACTION think's he'll wait to visit that link until after work... ;-) @1091133144 hannes: Look at /var/lib/bugzilla/template/en/custom. @1091133162 This directory contains the "site-specific" changes made to the Bugzilla interface. It has the links for the header/sidebar, etc. @1091133210 it is a port forward, only https is reachable @1091133215 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1091133221 brent: thanks @1091133267 Let me know if there is any other foo I can help with (e-mail me at bfulgham@debian.org if I'm not on-line here). @1091133285 The IP is 212.202.210.46 in case you want to avoid name lookups at work @1091133289 When is the cut-over happening? (And why the move?) I've been in a non-dylan work cave for a while... @1091133319 (Plus my huberis in reviving the shootout to prove a few points has generated way more work than I anticipated) @1091133366 andreas's colo contract is running out 8/18 @1091133711 bfulgham: i think i've set up mailman correctly, also running postfix should work. currently looking at cvszilla and bugzilla @1091134152 What's going to happen to Cantor? @1091134498 it goes away (actually, I guess it's a dedicated server rather than a colo) @1091134617 I thought Cantor was a piece of CCC hardware. I remember Andreas having to ship it to the server facility. @1091134759 brent: the sun e450 (i currently configuring this) is ccc hardware, and gwydiondylan will have two jails, one for ftp, one for other services. it runs freebsd-sparc64 @1091134844 bfulgham: cantor is owned by the provider. its a rented machine. @1091134909 bfulgham: andreas had to ship it to a different location because the provider phased out its dedi server business, iirc. @1091135092 the new machine was sponsored by the ccc for another project (knowledgebase related) as a secondary box (for non-confidential stuff). @1091135229 Ah. Well, it's nice that CCC can provide these resources. @1091135276 Eek! I see you are running FreeBSD though. What a sad day for Debian. ;-) @1091135345 a good day for FreeBSD :) @1091135404 ok, cvszilla also looks good, @1091135405 -dircproxy- You disconnected @1091135597 -dircproxy- You connected @1091135710 bfulgham: i usually use debian... but wtf. its all the same ancient shit. tho i must say that freebsd has some unixisms that would have never survived in debian. like a ps that cuts off all lines to terminal length by default. @1091135738 i find that REALLY annoying. @1091135740 Cool. Using Peter's "family friendly" name I've connected and see things look good... @1091135763 prom, and it doesn't support the -w option? @1091135802 Riastradh: it does. but one -w brings you just 132 lines (the wide size of DEC VT terminals). @1091135814 two -w bring you full output. this really sucks. @1091135818 I always use "ps auxwww" @1091135823 Me too. @1091135879 ... and have been doing so for the last 18 years :-) @1091135891 also, it doesnt support tree mode. i can live without all that fuzz, but i find it a lot more convenient. @1091135969 not having tree mode really sucks when you use djb software... you end up grepping for PPIDs all the time. @1091136041 prom: My mom has a cool little eMac, which has restored my faith in Apple. OS X is a BSD variant (with OpenSTEP sensibilities...) @1091136073 have you tried the sysutils/pstree port? @1091136091 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION pines for Lisp machines. @1091136100 bfulgham: yeah, macos may be nice for users, but i dont really feel happy with it. genera, for example, felt a lot better. a lot more "in control". @1091136122 What more 'control' do you want? @1091136123 i mean macosx, of course. not the old thingy. @1091136187 ok, bugzilla has the same layout as the rest @1091136208 Riastradh: i dont want to appear like ive been looking at macosx a lot... i just left it installed for a couple of days after getting my ibook and hated it like hell. @1091136231 ...? @1091136263 Riastradh: its just the feeling that there is a gui option for all the stuff thats pretty basic, but if you want something more advanced, you have to use the commandline. @1091136298 Such as...? @1091136307 or can i configure ethernet bridging graphically? or interface MTUs? @1091136319 That's also true in genera I would suspect @1091136337 yes. it is. because it doesnt have bridging. ;) @1091136351 See, talk about manual effort! @1091136401 i just dont like the feel of macosx. i dont have anything substantial (apart from apple politics) against it. but i really feel like the opposite of being at home on macosx. @1091136437 btw, anyone using cantor as a mail relay? @1091137363 on genera, all options that existed where reachable easily via the gui. the whole os is one, pretty well-integrated, big blob. on macos, i have this "this is a unix with a gui glued on"-feeling. @1091137414 on debian and freebsd its "this is a fucking unix and it sucks like hell, but at least you know what you have" @1091137656 if openvms would only be available on normal computers... this one has a nice feel. like one big designed blob. its not perfect, but its really good, especially when compared to something as primitive as unix. @1091137712 it has a nice command language, functinality is usually at the place youd expect it to be. @1091137719 functionality even @1091137896 macos is designed as a tool for a user. vms is designed to be useful to the advanced user. i wouldnt give it to my mother ;) @1091138206 -kornbluth.freenode.net- brucehoult (~Bruce_Hou@metnet.met.co.nz) joined the channel @1091138228 hi bruce @1091138499 I'd, of course, rather have a tool for the Scheme programmer, but entire OSs for that tend not to exist... @1091138551 you could make one, of course... @1091138578 It would be a _long_ time before I'd be happier with it than I am with OS X. @1091138603 morning all @1091138622 [Riastradh!~rias@pool-151-203-221-253.bos.east.verizon.net] ACTION expects to hear someone say 'well, start hacking...' @1091138652 consider it said @1091139708 [hannes!hannes@cantor.gwydiondylan.org] ACTION is going offline, if you find any bugs in the web interface (post news and cvs is not working, everything else should), please mail to hannes@mehnert.org mailman admin passwords are all fnord23 @1091139835 hannes I just emailed you @1091139880 hi bruce, i think it works at https://fuckup.berlin.ccc.de i also added our sidebar and header @1091139885 cu later @1091139952 Mr. Housel -- I've seen your frequent CVS messages about fundev. I missed whether there is an "easy build guide" for Windows and Linux. If it can be built under Linux, I'd love to try to stick it in the shootout. @1091139971 (Before Bruce chimes in, I agree we need to increase the repetitions on the shootout tests...) @1091139977 hey Brent! @1091140092 well, I'm in two minds about the repetitions... @1091140137 it's bad if the number of repetitions is so low that we look slow because of startup time @1091140149 bfulgham: fundev is not easy to build on windows, but there are snapshots: http://www.gwydiondylan.org/~housel/fundev-snapshot.html @1091140193 it's not too bad to build on linux using the instructions in README @1091140201 but if the startup time is OK (whcih it normally is if you use "d2c -s" then I see no big problem if all the fastest compiled languages (including us) show 0.01 or 0.02 or something @1091141083 Hi Bruce... wanna send me your class? @1091141253 I wanna see how my performs vs. yours vs. stock. @1091141341 -kornbluth.freenode.net- CIA-3 (~CIA@to.je.spocco.com) joined the channel @1091141632 Bruce: Right now I'm compiling without the "-s" flag. I'll change that in the Makefile and rerun all the tests. @1091141660 If I get some time this weekend, I'll try to build fundev again and see about incorporating it. @1091143748 fundev currently doesn't support single-file compilation mode, right? So if your intent is to run the benchmarks, none of them would work unless you made projects for them. Plus the libraries/modules are somewhat different. @1091143850 project creation could be automated with a script @1091143852 phiney: I didn't finish my class yet. But it's the weekend tonight :-) @1091143958 I read through those Copenhagen papers @1091144010 I wonder why the C++ STL spec says that insert/delete from a deque needs to be O(1) worst case, not just amortised O(1) like the vector class @1091144061 they are taking an incredible hit in code complexity, and quite a hit in overall throughput, purely in order to satisfy that @1091144160 Hi. I'd be happy just to test pop/push if you have that done. @1091144267 none of it is "done" @1091144386 My push/pop seems to be about 20x faster than the old . ( I didn't update to your changes to ). @1091144409 how's it go against the C and/or OCaml programs? @1091144431 Oh, I didn't test it with the shootout benchmark yet. @1091144471 so you're using what usage pattern? @1091144584 do you mean for testing? @1091144787 right @1091144793 [brucehoult!~Bruce_Hou@metnet.met.co.nz] ACTION gone to lunch @1091145557 Speaking of cool, have you guys seen the "print on demand" feature of CafePress (e.g., http://cafeshops.com/haskell_books/)? @1091145792 ooh @1091145813 -kornbluth.freenode.net- cmeme2 (~cmeme@216.184.11.30.unused.swcp.com) joined the channel @1091145828 There *must* be some good Dylanish books that could be printed... @1091146033 Such as the FD docs, once we get them updated and into shape @1091146917 Can you say "Printed Manual" :-) @1091147455 I've gotta run. I'll see you later! @1091147460 -kornbluth.freenode.net- bfulgham (~chatzilla@63.192.83.15) left the channel @1091150230 -dircproxy- You disconnected @1091151275 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-210-46.dynamic.qsc.de) joined the channel @1091152457 Peter, are you around? @1091152550 -dircproxy- You connected @1091152561 here @1091152672 I've been going through \src\d2c\runtime\dylan and doing minor cleanups. @1091152721 How would you feel if I checked my changes in? @1091152840 You could create a bug (you'll need one anyway to check stuff in) and attatch the patch to it, then we can look at it first @1091152899 I think it's going to be every file in the runtime/dylan directory. @1091152924 style cleanups, or performance, or what? @1091152939 that's fine, just cd to src/d2c/runtime/dylan and do "cvs diff -u" @1091152976 mostly style. I added some missing seals. @1091153005 I changed a lot of "define method" to "define function" where appropriate @1091153044 (CMU didn't have "define function" when they wrote the code.) @1091153188 right @1091153196 bear in mind that a lot of seals are actually in seals.dylan @1091153203 (i think) @1091153204 yep @1091153272 pretty much anything on a built-in concrete collection is sealed there @1091153291 It it best for me to submit my changes to you all at one? I've only done 5 or 6 files so far, but It's going to be every file in runtime/dylan. @1091153379 personally, if it doesn't break the build then I can't see a reason to attach a diff to the bug rather than just check it in @1091153423 Do you agree that "define function" improves readability vs "define method" when that is the intent? They have a lot of internal functions where there's only 1 method. @1091153441 better than that, it improves performance @1091153491 and decreases compiled code size by not generating auxillary functions for generic dispatch @1091153504 yeah, it saves 30 lines of C code. :-) @1091153543 adds up @1091153550 code space. link time. @1091153553 only through the elimination of the #next argument @1091153568 that's the speed increase, yes @1091153677 -dircproxy- You disconnected @1091153691 -dircproxy- You connected @1091153756 So should I just check if my changes after testing instead of attaching the diffs? @1091153807 up to you... @1091153876 definitely do a d2c bootstrap first @1091153908 Sure. @1091153911 I'd do a mindy-bootstrap as well if I'd been anywhere near the #if mindy stuff @1091153969 Okay, but I'm stayin in the d2c directory for now. @1091154030 If a checked-in change requires a bootstrap for d2c to be able to compile, is there a special procedure? @1091155182 increment the bootstrap counter @1091155223 and what I meant is that a lot of things in d2c have conditional compilation depending on whether you're building it using Mindy or d2c @1091155520 specifically, change CURRENT_BOOTSTRAP_COUNTER in src/configure.in @1091155597 generally best to bump src/version as well. @1091155612 Thanks. I don't think I'll need to do that yet, but I just wanted to know. I guess I'll check in all my changes at once. I've done 7 of approximately 50 files. @1091157348 [housel!housel@cantor.gwydiondylan.org] ACTION is figuring out how to use the Open Watcom linker to compile fundev programs @1091157913 looks promising... I managed to manually link hello-world and it worked @1091159203 Speaking of websites, does this look familiar? @1091159217 Where does the Gwydion site format come from? @1091159247 Spooky. @1091159250 It came from an open-source website template site @1091159257 Oh, not spooky. @1091159258 Can't remember the name offhand @1091159382 Do bare methods that don't call next-method() still incur some overhead? @1091159419 They have to accept an implicit argument, in case you someday decide to add them to a GF using add-method() @1091159515 But since that argument is unused, is the overhead still significant? ie., is the overhead mentioned earlier due to simply accepting the argument, or actually implementing next-method()? @1091159525 woo hoo ... 6502 assembly @1091159529 +1 @1091159532 just like in Terminator @1091159536 +1 @1091159588 Clearly, murderous cyborgs from the future have 6502's with GHz processors. @1091159594 the scary thing is I could probably still nearly hand-assemble that code. @1091159633 I could hand-assemble Z-80 in high school, and disassemble in my head @1091159651 Highly useful skills indeed. @1091159862 BTW, I see that macros \method and \function-definer both expand to make-anonymous-method(). How does it know not to include support for #next? @1091159868 @1091160194 I'm not fond of encouraging frequent use of \function-definer, btw, since it can be premature optimization, but it's definitely more readable than "define constant f = method ... end;", which is found in a lot of Apple's code. @1091160334 ie., putting aside the performance implications, if you know you don't want to implicitly define a GF, using \function-definer is fine. @1091160438 WRT STL's O(1) insertion requirement for deque, the STL view is that deque and vector are nearly identical in what you can do with them, but they exist as distinct entities specifically because deque offers fast insertion where vector offers simplicity of implementation. @1091160461 method() ... end never makes a #next @1091160481 hmm @1091160485 Oh, I thought that was the implication, that you can add a method() .. end to a GF. @1091160501 I *suppose* you could declare a #next keyword manually @1091160507 .. for when you added it to a few GFs @1091160541 That's my question. If there's no explicit #next, and the implicit next-method() isn't called, is there any overhead generated? @1091160561 Is \function-definer strictly necessary to remove the overhead? @1091160622 I think at some point we added something to d2c to make methods always implicitly have a next-method argument even if the user doesn't declare one @1091160637 IIRC there's a compiler option to thrn that on or off too @1091160640 [Going back a bit.] s/simplicity of implementation/contiguous storage (and fast random access?) @1091160687 the question in my mind is why they favour throughput for vector, but worst case latency for deque @1091160729 One requirement of vector is that you can use operator& and then access elements using pointer arithmetic. That may be the overriding factor. @1091160740 there are very very few programs where the added latency of reallocating a vector ocassionally is a problem @1091160785 -kornbluth.freenode.net- pritlove_ (~pritlove@port-212-202-210-46.dynamic.qsc.de) joined the channel @1091160943 further to that: given that in d2c any allocation could cause a garbage collection, we have no reason at all to sacrifice overall speed in order to make deque insertion or deletion always take the same amount of time (as STL specifies) @1091160954 .. because we can't guarantee that *anyway* @1091161079 I don't think the STL requires memory allocations to be constant-time. @1091161095 And C++ explicitly allows garbage collection. @1091161112 From : @1091161141 "A deque is very much like a vector: like vector, it is a sequence that supports random access to elements, constant time insertion and removal of elements at the end of the sequence, and linear time insertion and removal of elements in the middle." @1091161150 "The main way in which deque differs from vector is that deque also supports constant time insertion and removal of elements at the beginning of the sequence." @1091161217 "...and does not provide any of the guarantees on iterator validity that are associated with those member functions." @1091161250 Oh, I guess that last statement is orthogonal. @1091161304 that's old @1091161318 Relative to? @1091161334 the std C++ spec says that deque push/pop from either end is O(1) @1091161359 vector push_back etc only has to be *amortised* O(1) @1091161367 Okay. But I think the stress of the above quote is still valid. @1091161411 sure, but it's irrelevent to the papers phinely pointed to @1091161419 That they are nearly interchangeable, but exist as separate entities specifically to get different performance characteristics for insertion at the ends. @1091161445 the *entire* reason for their more complex implementation compared to what I'm doing is to make the push/pop operations have guaranteed limited latency @1091161458 Which papers? @1091161483 http://www.cphstl.dk/WWW/docs.php @1091161500 So, are we saying the same thing? @1091161532 specifically http://www.cphstl.dk/Report/Deque-first-attempt/cphstl-report-2001-4.pdf @1091161541 and http://www.cphstl.dk/Report/Deque/cphstl-report-2001-7.pdf @1091161544 Thanks, I was about to ask. @1091161650 the SGI STL, btw, does not meet the deque performance guarantees required by Std C++ @1091161707 Do you mean the implementation of the SGI STL or the specification (or both) don't meet Std C++? @1091161719 the SGI implementation @1091161732 Does it meet the performance guarantees of the SGI spec? @1091161737 does not meet the spec, as standardized @1091161832 yes, it meeets the SGI spec @1091161840 http://www.sgi.com/tech/stl/Deque.html @1091161848 "[2] Inserting an element at the beginning or end of a deque takes amortized constant time." @1091161884 wait .. no ti doesn't! @1091161913 I think the SGI implementation is O(n) but with a very small constant @1091162039 A very small constant what? @1091162105 the SGI deque (http://www.sgi.com/tech/stl/stl_deque.h) uses an "index node" that points to a set of data nodes, each of which holds a number of elements @1091162140 when the index node gets full, inserting another element in the deque requires reallocating the index node and copying all the pointers to the data nodes. @1091162147 that's O(n), not O(1) @1091162168 It's amortized O(1), right? @1091162172 nope @1091162184 hmm @1091162190 Isn't it just the same as growing a vector? @1091162197 oop, you're right @1091162215 yeah. amortised O(1) if the index node is grown exponentially @1091162238 That jives with every description I've seen for how deque is implemented. @1091162255 so it meets the SGI spec ... but not the C++ standard spec @1091162281 (Although I've specifically heard "list" of chunks, those people must mean something more like a "vector" of chunks.) @1091162307 well sure. just as a deque itself is a type of "list" @1091162329 There is only one data structure. :) @1091162358 probably @1091162371 a cons cell, after all, is just a vector with two elements @1091162485 I'm looking at stl_deque.h on my Mac OS X machine, which is HP's STL, apparently. @1091162499 It's too hard to tell straight off how it differs, though. @1091162521 My implementation might be good enough. It's certainly much, much faster than what's there now. @1091162545 My question is: STL says deque has certain performance guarantees, and that is essentially why it exists apart from vector. So, why do we feel those performance guarantees are not worth matching in (apart from memory allocator performance impact.) @1091162580 because the C++ performance guarantees for deque SLOW DOWN programs @1091162590 Ironic. @1091162604 they try to make it a semi-realtime data structure @1091162612 makeing things realtime always slows them down @1091162672 Are you saying that guaranteeing constant time performance means that constant time is longer than some amortized time would be for the same structure/operation? @1091162675 I think for Dylan we should be happy with *amortised* O(1) access, as in SGI'S STL, @1091162685 exactly, yes @1091162692 (...which is why I suggested earlier that it might be a good idea to have several deque classes for the differing performance guarantees...) @1091162741 Okay, I'm seeing it now. I never associated "constant time" with "realtime" before, but that's exactly what constant time implies. @1091162769 well realtime is defined as an upper bound on the latency @1091162796 Sure. @1091162797 for realtime applications, it is the worst case that counts for all. average case counts for nothing @1091162879 hmmm... openwatcom WLINK seems to mangle the debug info beyond IMAGEHLP's recognition @1091162891 so, for example, for the purposes of realtime systems, the memory access time of a 2 GHz G5 isn't the 1 nS of the L1 cache or even the mumble-hundred nanoseconds of RAM, but something like 10 mS @1091162895 or more @1091162915 Do those papers mention this? Everything I've read is from the viewpoint that "constant time" means "fast", and now I see that's not necessarily true. @1091162928 nope. read the performence results at the end @1091162929 ...everything I've read about STL... @1091162961 Constant time just means that the _asymptotic_ cost is 1. The constants are thrown out in the asymptotic cost. @1091162965 their improved O(1) implementations are three or more times slower than SGI's amortised O(1) implementation @1091162991 It might take a year to perform a certain constant-time operation, but that is a _constant_ year. @1091163033 So now I'm going to try to find out whether it was the intent for STL deque to be a realtime structure. @1091163077 STl's isn't no, in either specification or implementation. the C++ standard specifies it though. @1091163089 sorry, "SGI's" @1091163124 at least according to those Copenhagen guys. I don't know where to find the actual ANSI/ISO spec on the web @1091163168 I expect it isn't available (in totality, anyway.) @1091163169 of course if you use the default allocator on most system then it won't be realtime anyway. but the STL lets you supply your own allocator @1091163271 I find it conceivable that someone wanted deque to serve realtime applications, because (I assume) many need a queue of some sort. @1091163314 Otherwise, I do not see a reason to specify O(1) instead of amortized O(1). @1091163325 yeah @1091163361 I know somebody on the committee. I'll ask :-) @1091163371 of course for realtime you always have "list" (doubly-linked list), at least if your allocater is realtime @1091163391 (and if your allocater isn't realtime then deque isn't either) @1091163391 "But lists are inefficient and slow." ;-) @1091163414 Bruce, my is fast, and it's written already. :-) You sure you want to write your own too? @1091163423 they're slower than deques implemented using chunks, for sure @1091163468 Pete: show us the results vs the C program :-0 @1091163481 and the C++ one... @1091163498 I need to implement reverse! first. @1091163513 there is no reason we can't match the C and OCaml ones. So if yours does then I'm happy and will stop @1091163527 I thought you just said it was implemented? @1091163551 We are really slow for the hash benchmark too. Not sure if it's because of reading the stream or the I'll look into it next @1091163571 The main part is implement @1091163589 our streams are slow, for sure. our hash tables are pretty good as long as you use them right @1091163591 phinely lied. Liiiied, I tell you! @1091163598 :) @1091163603 I have push, pop, push-last, pop-last, forward-iteration-protocol @1091163611 he's not our friend. nasty lying fat hobbit @1091163618 ;-) ;-) @1091163673 I'll do the remaining bits tomorrow. @1091163694 me too :-) bake-off @1091163714 btw, d2c uses in two places internally @1091163716 I think I'll write one just for good measure. @1091163732 oh, 3 entries in the bake-off @1091163735 so it'll be interesting to see if there is any speed gain in the compiler @1091163752 I doubt if there will be. @1091163809 well the optimizer queue gets churned pretty heavily @1091163820 but yeah it's probably not measurable @1091163823 Realtime compiler! @1091163858 All programs take at most "heat death of the Universe" time to compile. @1091163895 not on a Turing machine @1091163915 but our computers are all only Finite State Machines, not Turing Machines @1091163983 For our shootout, what are the criteria? @1091163998 fastest time on the shootout task, I guess @1091164007 I mean which operations are the most important. @1091164021 the overall shootout task @1091164038 it's arbitrary, but as good as anything else we'd come up with @1091164081 maybe I'll should write a test program can test a bunch of different usage patterns @1091164095 with individual timings for each pattern @1091164100 sure, if you'd like @1091164206 Someone is telling me they roll d20 to disbelieve that the standard requires O(1) and not amortized O(1). @1091164264 uh .. that didn't parse for me @1091164291 Someone is refuting the notion that the C++ standard says O(1) rather than amortized O(1). @1091164304 He says he believes the SGI spec. @1091164305 refuting, or merely contradicting? @1091164357 He says he believes it's amortized time. @1091164411 yeah well the Copenhagen guys clearly believe otherwise, and hav put a lot of time and effort into that belief @1091164541 Okay, section 1.1.1 specifically says "constant time...and not...amortized constant time." @1091164559 is that a dead trre, or on the web? @1091164572 @1091164580 right @1091164585 *they* believe it @1091164592 bu are they right, or is your friend? @1091164596 Well I wouldn't fret about it.... C++ is losing users at a much faster rate than Dylan is. :-) @1091164604 I'll find out eventually. :) @1091164615 To what, phinely? @1091164639 in qabsolute numbers, for sure @1091164800 I think the benchmarks involved floats fail because we print a d0 at the end of the number. Does float-to-string print floats the same way? @1091164821 change involved to involving @1091164941 no, float-to-string does not (at least in d2c) @1091164974 What does that suffix mean anyway? @1091164982 double-precision @1091165016 0.0s0 => 0.0d0 => 0.0x0 => @1091165061 BTW, I found a discussion in an info-dylan archive circa 1992 discussing vs. ; whether to include bignums in the core, and whether to provide a means of avoiding overflow into bignums. Interesting stuff. @1091165080 references? @1091165149 I'm not sure that anyone likes the current class heirarchy. @1091165159 Not sure how I'd refer you to them. I have some zipped archives from 1992-1995. @1091165189 from the CMU AI archive? @1091165234 (different subject) I don't think the transcendental methods are calling out to their C counterparts for . Another thing to fix. @1091165284 I believe I got these from pcai.com (or from a site it refers to.) Where are the CMU archives? @1091165320 http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/0.html @1091165376 in particular, http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/others/dylan/news/ @1091165428 Thanks. I'll have to get those, too. @1091165484 There's a thread starting around Oct 7, 1992 titled "small integers." @1091165543 Another interesting thread from the same time is "Numeric efficiency in Dylan (or lisp in general)". @1091165597 In the latter, Jonathan Bachrach suggests using parameterized types for efficient collections of numbers. @1091165639 Apparently the seed for limited collections and limited integers. @1091168538 -dircproxy- You disconnected @1091168753 -dircproxy- You connected @1091169420 Just bought a copy of the C++ standard. @1091169883 It says deque "supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time." @1091169927 -kornbluth.freenode.net- linuxbeer (~discord@d4-219.rb2.gh.centurytel.net) joined the channel @1091169947 -kornbluth.freenode.net- linuxbeer (~discord@d4-219.rb2.gh.centurytel.net) left the channel @1091179048 -kornbluth.freenode.net- gluc (luc@217.21.59.115) joined the channel @1091183975 morning @1091184000 midday :) @1091195702 -kornbluth.freenode.net- gluc (luc@217.21.59.115) left the channel @1091203369 -dircproxy- You disconnected @1091204833 ok, mailman archives, viewcvs with syntax highlighting should work now. cvs repo is also synced (but will once again when we switch servers) @1091207476 later @1091208592 -kornbluth.freenode.net- bfulgham (~chatzilla@63.192.83.15) joined the channel @1091208809 -dircproxy- You connected @1091210243 [bfulgham!~chatzilla@63.192.83.15] ACTION migrates Bugzilla Quips from Cantor to Gauss... @1091210351 manually? @1091210368 shouldn't they have moved with the database? @1091210640 what should've been moved with the database? @1091210690 the quips table. or is it still in a file in the 'data' dir in 2.16.6? @1091210840 ah, the template file doesn't diff. dunno where they're saved @1091215619 -kornbluth.freenode.net- alexpotanin (~alex@st-james.mcs.vuw.ac.nz) joined the channel @1091215856 -kornbluth.freenode.net- alexpotanin (~alex@st-james.mcs.vuw.ac.nz) left the channel @1091217055 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1091217555 Sorry -- been out. I just did some cut/paste (there are only 15 or 20) so no big deal. @1091217756 Is Bugzilla all being handled through Gauss now? Or will you have to export the database one last time when you migrate? @1091219242 -kornbluth.freenode.net- Riastradh (~rias@pool-151-203-221-253.bos.east.verizon.net) joined the channel @1091229585 -kornbluth.freenode.net- bfulgham_ (~chatzilla@63.192.83.15) joined the channel @1091230536 Is anyone awake who can speak ClearCase? @1091230577 I am, though my clearcase is getting rustier all the time @1091230771 -kornbluth.freenode.net- gabor_ (~ggreif@p508C6CCF.dip.t-dialin.net) joined the channel @1091230812 hi gabor_ @1091230812 brent: what is your CC question? @1091230823 hi all @1091230830 That's okay. I have a friend who is thinking about using ClearCase at a relatively small company, and I'm trying to think of a similar tool that might be less expensive. @1091230849 subversion @1091230875 yeah, that or Perforce @1091230917 although I like the automatic dependency tracking of clearmake @1091230971 Vesta does that too @1091230998 vesta is from DEC? @1091231012 yes, originally @1091231293 is it open sourced? @1091231305 yes @1091231310 http://www.vestasys.org/ @1091231320 not very portable, though @1091231843 How did you like Perforce? @1091231876 I've never used perforce, but I know that the FreeBSD developers are happy with it for internal development projects @1091231926 Any reason why Subversion wouldn't be sufficient? @1091231956 configuration management needed? @1091232296 ...though that sort of thing is easy enough to add on with hooks and other scripts @1091233228 Well, the idea is to have a complete package for configuration management. I'm not sure what pricing is like (our 40-developer company ended up shelling out something like $ 250,000 when all was said and done.) There's got to be a more economical solution! :-) @1091233531 Perforce is very good. Used it for five years at Palm. @1091233589 what configuration management (beyond usual version control) does it do? @1091233617 I'm not sure how to answer that. @1091234197 We need to do stuff like save design document in a release-controlled environment, keep track of bugs with linkage to the bug reports. @1091234357 I would also want to be able to dynamically generate versioning for DLL's and shared libraries, etc., based on the release control build. I'd want to be able to run a regression test suite as part of the build and check the result log into release control when the build finished. The usual stuff... @1091234400 I know a lot of you guys have used Rational as well as other stuff -- I've only used Rational and Visual Source Safe (which is an apples-to-oranges comparison). I was curious if Rational offers some amazing feature you can't get elsewhere. @1091234730 Well, you can track documents as easily as anything else with Perforce. At Palm some components were built and binaries checked in for other projects to use. Perforce allows scripts to run on the server and get triggered by repository events. @1091234752 There are some open source scripts around for various things. @1091234852 ditto for svn @1091234943 Are any companies providing support for svn? @1091234959 Actually, are *we* going to use svn, since we have to move to a new machine anyway? :-) @1091235013 As a Mac developer, I really like that Perforce understands multi-fork files. It stores them as Apple Single. @1091235092 Do any of you guys use it from remote sites? We had a lot of trouble using CC from remote sites (e.g., home) due to the large amount of network traffic needed to keep the views in sync. @1091235242 I've got to run -- I'll be back in about an hour. Please reply to my message (I'll read it on Peter's log when I get back on-line). @1091235248 Thanks. @1091235362 I worked at home a lot, on a relatively slow 300Kbps DSL connection. Commits were a little slow due to the 128Kbps uplink, but most things were very fast compared to CVS, since the p4 server knows what you have. @1091235505 It's very nice having the server know what's on each of your machines and profiles. When working from another machine I could check whether I had file being edited on another machine to which I didn't currently have access. This allowed me to make changes to that file on the local machine with confidence. @1091235665 I don't know how much network traffic p4 produces where the server is located. @1091235687 On the one hand, it produces less, because it knows what you have. @1091235697 On the other hand, it requires some traffic to do things like start editing a file. @1091235718 But that should be very lightweight. @1091235748 I really appreciate the ability to coordinate with others and see which files they're working in. @1091235761 p4 will warn you if you try to edit a file someone else is editing. @1091235793 And of course p4's atomic commits are a boon. @1091235859 It also makes working with branches relatively easy. I always had a high degree of confidence that merges were correct and would never unknowingly wipe out changes. @1091236770 I managed to do a full CVS=>svn import yesterday, including all tags and branches, and including the version history from CMU Gwydion going back to 1994 @1091236819 If hannes gives me admin privs I can set up a dry-run svn repository for people to try out @1091236833 (on gauss) @1091236995 -dircproxy- You disconnected @1091238659 -dircproxy- You connected @1091241360 Cool! @1091242916 -kornbluth.freenode.net- TalkSoup (~brent@adsl-64-166-126-209.dsl.lsan03.pacbell.net) joined the channel @1091243105 re @1091243111 whoops @1091243145 re @1091243176 Thanks for the P4 comments. I read through some of the website -- it looks cool. @1091244570 -dircproxy- You disconnected @1091248103 -dircproxy- You connected @1091249965 -kornbluth.freenode.net- pritlove (~pritlove@port-212-202-174-123.dynamic.qsc.de) joined the channel @1091251966 commit by housel to fundev: Bug: 7080 @1091251966 Adjust references to changed names in the coff-manager library. @1091253572 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1091253835 -dircproxy- You disconnected @1091253951 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1091254178 -kornbluth.freenode.net- badonaway (KCXYCL@skoubye.dsl.xmission.com) joined the channel @1091254368 -kornbluth.freenode.net- phinely (~phinely@128.171.232.51) joined the channel @1091254368 -kornbluth.freenode.net- andreas (andreas@cantor.gwydiondylan.org) joined the channel @1091254368 -kornbluth.freenode.net- hannes (hannes@cantor.gwydiondylan.org) joined the channel @1091290561 -dircproxy- You connected @1091290575 -dircproxy- You disconnected @1091290582 -leguin.freenode.net- You joined the channel * Logging finished Sat, 31 Jul 2004 16:18:04 +0000