|
Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 17 May 2011. |
|||
| whiteknight | cotto ping | 00:00 | |
| msg cotto Can you take a quick look at trac.parrot.org/parrot/ticket/2038 ? Any feedback would be good, but a thumbs up would be even better :) | 00:02 | ||
| aloha | OK. I'll deliver the message. | ||
| kid51 | dukeleto ping | 00:03 | |
| whiteknight | I suspect that if I convert OS PMC to not be a singleton anymore, that nothing will break | 00:06 | |
| Any Rakudo folks around today? | |||
| What is the difference between OS.stat() and OS.lstat()? | 00:13 | ||
| cotto | ~~ | ||
| whiteknight | Those two methods are identical | 00:14 | |
| I suspect OS.lstat should call Parrot_file_lstat instead of Parrot_file_stat | 00:17 | ||
| of course, I wonder if we should have things in OS PMC that are so linux specific | 00:28 | ||
| OS PMC should probably be more generic. We could have a subclass for Linux | 00:29 | ||
| or, Unix-alikes | |||
| then we could use isa and can to determine what functionality is supported on the current platform | |||
|
00:29
dmalcolm left
|
|||
| whiteknight | or better yet, we nix OS PMC completely and use NCI to access the Parrot_file_* functions directly | 00:30 | |
| that has the benefit that we create a Class at runtime instead of a whole VTABLE | |||
|
00:33
davidfetter left
|
|||
| kid51 | We have several open, long-standing TTs that reference os.pmc: 1197, 1071, 849 | 00:33 | |
|
00:35
theory left,
Andy joined,
theory joined
|
|||
| cotto | whiteknight, what's your plan on the singleton ticket (2038)? | 00:38 | |
| whiteknight | what do you mean? | ||
| for OS, I can commit right now a patch to make it not a singleton with no visible effects | |||
| cotto | +1 then | ||
| whiteknight | I can do the same for Env in about 5 minutes too | ||
| Scheduler and OpLib are going to be more problematic | |||
| cotto | Are you also planning on removing the singleton-awareness code from Parrot? | 00:39 | |
| whiteknight | actually scratch that. OpLib isn't a singleton anymore | ||
| yes, that's the plan | |||
| I need to double-check that Rakudo isn't using Singletons | |||
| cotto | If no HLLs are using singletons, fire at will. | 00:40 | |
| sorear | Is Scheduler used *at all*? | ||
| I mean, other than by the test file that segfaults | |||
| kid51 | If I want to follow a Perl 6 list that is relevant to Parrot via nntp, would that be: perl.perl6.compiler? | ||
| whiteknight | sorear: it's integrated into a few places, like exception handling, where it really doesn't need to be | ||
| when Parrot looks for an exception handler it asks the Scheduler, which redirects to the current Context | 00:41 | ||
| kid51 | perl.perl6.language? | ||
| whiteknight | but other than that, and some remnants of threading, I don't think anything uses the scheduler | ||
| dalek | rrot/m0-prototype: 6b32c63 | cotto++ | src/m0/m0_interp.pl: update implementations of goto* ops to match the spec |
00:47 | |
|
00:51
silug left
00:52
silug joined
|
|||
| dalek | rrot: 56712f4 | Whiteknight++ | src/dynpmc/os.pmc: OS is not a singleton anymore. It doesn't have state, so there's no reason to reuse a single, static reference. |
00:58 | |
| rrot: 647dfa6 | Whiteknight++ | src/dynpmc/os.pmc: Fix OS docs to say it isn't a singleton now |
|||
| cotto | cpanm++ | 01:06 | |
|
01:22
Andy left
|
|||
| dalek | lrskate: 8e6d532 | tcurtis++ | s (3 files): Refactor the prettyprinting for as_bnf_string() into a class. |
01:29 | |
|
01:48
kid51 left
01:49
gbacon joined
01:55
ascent left,
ascent joined
|
|||
| dalek | sella: b185e4f | Whiteknight++ | s (5 files): Add in stub files for File and Directory objects, which provide a nicer interface for those things than the OS PMC and other Parrot primitives. |
02:01 | |
|
02:10
whiteknight left
|
|||
| dalek | nxed: r1021 | NotFound++ | trunk/examples/fly.winxed: tiny changes in example fly that make the animation smoother and reduce cpu |
02:19 | |
| benabik | ~~ | 02:24 | |
| dalek | nxed: r1022 | NotFound++ | trunk/examples/fly.winxed: undo one of the changes in r1021, the trade-off between cpu/smoothness was no so |
02:34 | |
|
02:35
bubaflub joined
03:14
gbacon left
03:53
bubaflub left
03:58
bubaflub joined
04:10
bubaflub left
05:06
soh_cah_toa left
|
|||
| dalek | rrot/m0-prototype: 6fc650a | cotto++ | src/m0/m0_assembler.pl: update M0 register name regex |
05:08 | |
| rrot/m0-prototype: 7e2ec66 | cotto++ | src/m0/m0_assembler.pl: make the assembler capable of generating multiple chunks |
|||
| rrot/m0-prototype: 71224a0 | cotto++ | src/m0/m0_assembler.pl: generate a less incorrect bytecode segment |
|||
|
06:12
fperrad joined
06:14
mtk left
06:20
mtk joined
06:21
theory left
|
|||
| dukeleto | ~~ | 06:27 | |
| cotto++ # improving the m0 assembler | 06:28 | ||
|
06:41
arnsholt left,
TiMBuS left,
eternaleye left,
TiMBuS joined,
dngor_ joined,
dod left,
elmex left,
mikehh left,
eternaleye joined,
frodwith left,
Hunger- left,
elmex joined,
mikehh joined,
simcop2387 left,
NotFound left,
perlite_ joined,
Hunger joined
06:42
NotFound joined,
simcop2387 joined,
frodwith joined,
particle1 left,
particle joined,
ShaneC1 joined
06:43
silug left,
dngor left,
perlite left
06:44
perlite_ is now known as perlite,
dod joined
06:45
arnsholt joined
|
|||
| dukeleto | I wrote tests in PHP today. | 07:22 | |
|
07:24
mj41 joined
|
|||
| dukeleto | and lived to tell the tale! | 07:25 | |
|
08:19
jrtayloriv left
08:28
SHODAN joined
09:00
silug joined
09:29
jsut_ joined
09:34
jsut left
11:07
Psyche^ joined,
Patterner left,
Psyche^ is now known as Patterner
|
|||
| tadzik | dukeleto: did they pass? :P | 11:10 | |
|
11:33
contingencyplan left
11:45
bacek joined,
lucian joined
|
|||
| benabik | good morning, #parrot! | 12:34 | |
|
12:34
bacek left
12:40
JimmyZ joined
12:45
bacek joined
|
|||
| benabik | Arg, I hate arguing semantics first thing in the morning. Especially when it's from an e-mail I wrote late the previous night. Ah, well. On to more productive parrot hacking. | 12:49 | |
| benabik has apparently decided that talking to himself out loud isn't good enough anymore and now uses IRC so it's logged publicly. | |||
|
12:58
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:59 | |
| benabik | \\o/ whiteknight! | 13:00 | |
|
13:00
bubaflub joined
|
|||
| whiteknight | good morning benabik | 13:00 | |
| benabik | Now I'm not talking to myself! | 13:01 | |
| whiteknight | ah, I like being an upgrade | ||
|
13:03
dngor_ is now known as dngor
|
|||
| benabik | I've found that having a IRC window open when I wake up means that my early morning rambling gets done electronically. :-) | 13:03 | |
|
13:03
lucian_ joined
|
|||
| whiteknight | I used to hop on as soon as I woke up, but there aren't enough people online at that time | 13:04 | |
| plus, it would only be a few minutes before I had to sign off and do the boring stuff like eat and get dressed | 13:05 | ||
| benabik | I just leave Colloquy open all the time, so when I grab my laptop to do my morning RSS/webcomic routine, it's right there. | ||
| And working from home means I have all the time in the world to rant. ;-) | |||
| whiteknight | heh, the morning RSS/webcomic routine is my routine too | ||
| the world does not have enough good, free webcomics | |||
| benabik: buy a couple cats to keep company. You won't go crazy at all | 13:06 | ||
|
13:06
lucian left
|
|||
| benabik | whiteknight: I've heard arguments that I follow too many webcomics although I'll admit most of them are more "alright" than "good". | 13:06 | |
| whiteknight: I already have Pollux and Castor, I don't need two more cats. (Although a third cat is inbound with my new housemate next week.) | 13:07 | ||
| whiteknight | A few of the ones I have been following are becoming disappointing, and I might unsubscribe | ||
| XKCD is usually pretty good, and you can't unsubscribe because you would miss the occasional gem | 13:08 | ||
| of course, when a really good one comes out so many people copy+paste it everywhere that you end up seeing it anyway | |||
| benabik | Yes. My biggest favs are that, Questionable Content, Girl Genius, and Schlock Mercenary. | 13:09 | |
| Although I've apparently bookmarked over 150 over the years (although I don't follow all of them anymore): www.delicious.com/benabik/webcomic?page=3 | |||
| whiteknight | I like QuestionableContent, but I'm much less happy with it now that Martin and Dora are broke up. | 13:15 | |
| I like Cyanide and Happiness too, that's usually good for a quick, if dark, laugh | |||
| benabik | Yeah, that was sad and it's more whiny now than it's been in a while but the characters are still engaging. :-) | 13:16 | |
| whiteknight | I've been following Something Positive for a while, but it's tapered off a lot and isn't really compelling anymore | ||
| benabik | C&H's rarely gets more than a bit of a smile out of me. I see why others like it, but it just doesn't quite hit the mark for me. | ||
| whiteknight | yeah, C&H is certainly not for everybody | 13:17 | |
| benabik | Heh. The rapture C&H was good though. | ||
| S*P seems to be idling around doing character bits. Interesting, but less humor than there used to be. | 13:18 | ||
| whiteknight | yeah. It lost a lot of its edge when the dad got alzheimers and they all moved down to Texas or wherever they are | 13:20 | |
| since then it's been a combination of "not funny" and "depressing" | 13:22 | ||
| benabik | I've found plenty of bits to keep my interest, but it's def not as amusing as before. | 13:24 | |
| It's always been a more "serious with dark humor" than "dark humor with serious bits" though, IMHO. | |||
|
14:02
mtk left
14:08
mtk joined
14:34
JimmyZ left
14:47
hercynium joined
14:54
mtk left,
alester joined
14:59
mtk joined
15:02
SHODAN left
|
|||
| dukeleto | ~~ | 15:03 | |
| cotto_work | ~~ | 15:09 | |
|
15:09
dodathome joined
15:12
theory joined
15:15
theory left
15:26
JimmyZ joined
|
|||
| dukeleto | cotto_work: how goes it this morning? | 15:36 | |
| cotto_work | yawn | ||
| I can see the finish line for the M0 assembler. It's exciting. | 15:37 | ||
| dukeleto: do you by chance know where the sf conservancy's funding comes from? | 15:39 | ||
| dukeleto | cotto_work: it is connected to the SFLC | 15:40 | |
| cotto_work | dukeleto: ok. just curious. | 15:41 | |
| dukeleto | cotto_work: do you mean the conservancy's funding itself? mostly it manages the funds of the projects that are part of it | ||
| cotto_work: i am sure Bradley could explain, in detail :) Why do you wask? | |||
| cotto_work | dukeleto: yes, the conservancy itself rather than the projects it supports | ||
| dukeleto | or ask. But wasking is more fun. | ||
| cotto_work | lemme wask you something | 15:42 | |
| dukeleto | cotto_work: looks like they accept donations: sfconservancy.org/donate/ | ||
| cotto_work | It's out of curiosity. It provides a very useful service and I don't quite understand what keeps it going. | 15:43 | |
| dukeleto: yup. It's on my list of things to think about donating to. | |||
| dukeleto | cotto_work: me too. | 15:44 | |
| cotto_work: glad to see you unborked some of my assembler code | |||
| cotto_work: i intent to write a test that verifies each byte of bytecode is correct, so it will be easy to see, from failing test output, how close our bytecode is | |||
| cotto_work: does that sound useful? | |||
| cotto_work: how close it is to being correct, that is | 15:45 | ||
| cotto_work | dukeleto: it does | ||
| dukeleto | cotto_work: i expect that the M0 test suite will quickly grow to be larger than the prototype | ||
| cotto_work | dukeleto: me too | ||
| The only reason I'm not going full steam ahead writing .m0 files is that I don't want to have to fix a bajillion of them when we can finally run them and find out how incorrect they are. | 15:47 | ||
| dukeleto | cotto_work: indeed. I think we should go depth-first here, and make sure that we can turn hello.m0 into proper bytecode | 15:56 | |
| cotto_work: when we feel confident about that, we can start adding other test m0 source files | |||
| cotto_work | wfm | ||
| dukeleto | cotto_work: but we can still create/test lots of *invalid* M0 source files :) | ||
| cotto_work: not parsing invalid M0 is a feature, too :) | 15:57 | ||
| cotto_work | dukeleto: yup | 16:02 | |
|
16:23
theory joined
|
|||
| cotto_work | It's times like this when an m0b disassembler would be really nice. | 16:23 | |
|
16:28
gbacon joined
|
|||
| dukeleto | gbacon: welcome | 16:36 | |
| cotto_work: yes, it would. We can just run the m0_assembler backwards, right? | |||
| gbacon | dukeleto: thanks! | 16:38 | |
| cotto_work | That's so crazy it just might work. | ||
| dukeleto | gbacon: have you been to #parrot before? I am the welcome wagon :) | ||
| cotto_work | Apparently crazy overflows. | 16:39 | |
| dukeleto | cotto_work: what are your next steps for the assembler? | ||
| gbacon | dukeleto: yes, and I think I even have commits in the repo somewhere way back | ||
| dukeleto: but I appreciate your welcome | |||
| cotto_work | dukeleto: parse_chunks is a bit lacking | 16:40 | |
| dukeleto | gbacon: ah. you are not in CREDITS as 'gbacon'. Which username did you commit as? | ||
| cotto_work | dukeleto: are you going to work on it? I have an unpushed commit. | ||
| dukeleto | gbacon: or maybe you just submitted patches | ||
| cotto_work: push your commit | |||
| cotto_work | dukeleto: done | 16:41 | |
| dalek | rrot/m0-prototype: bd4df55 | cotto++ | src/m0/m0_assembler.pl: "implement" metadata and variables segement generation doesn't produce a viable hello.m0b yet |
||
| rrot/m0-prototype: 45a17b1 | cotto++ | src/m0/m0_assembler.pl: add a couple TODOs |
|||
| cotto_work | in a pinch, Dumper can be pressed into service as a disassembler | 16:42 | |
| KaeseEs showed some interest in writing a proper disassembler, but I haven't seen anything from him. | |||
| gbacon | dukeleto: just reviewed the repo; looks like patches only | 16:43 | |
| cotto_work | gbacon: you're in CREDITS under your irl name | 16:45 | |
| gbacon | w00t! | ||
| cotto_work | which is great. Parrot needs more bacon in all its varied forms. | ||
|
16:45
lucian joined
|
|||
| gbacon | Bacon makes everything better! | 16:45 | |
| whiteknight | I tried to make my own bacon last week. I added way too much salt | 16:48 | |
|
16:49
lucian_ left
|
|||
| alester | I have a huge amount of unconsting to do in the next couple of days. | 16:49 | |
| Tons of methods that use strings for hash keys that take const STRING * | 16:50 | ||
| but then underneath, code is faking out the compiler to unconst the STRING * so that it can modify the hashval. | |||
| dukeleto | Bacon is the key to happiness. | 16:52 | |
| alester | Bacon and consting. | ||
| cotto_work | const bacon_t b; | 16:55 | |
| dukeleto | How did I go this long without a functioning command-line gist app? I don't know. | 16:59 | |
| dukeleto can now gist from the command-line again. Be very afraid. | |||
| gbacon: interested in hacking on parrot some more? Any specific interests? | 17:00 | ||
| gbacon: we have lots of stuff to work on :) | 17:01 | ||
| whiteknight | we always like more hands working on it | ||
| cotto_work | We've got a lovely disassembler that needs to come into existence. | 17:02 | |
|
17:12
silug left
17:20
jevin joined
|
|||
| gbacon | dukeleto: I used to be active on p5p many years ago, and I miss it. problem is scarce tuits | 17:22 | |
|
17:22
JimmyZ left
17:25
mj41 left
17:28
bacek left
|
|||
| dukeleto | gbacon: would you be interested in testing parrot on your machine? That can provide us with valuable info and usually doesn't take much time/tuits on your part, after setup | 17:32 | |
| gbacon | dukeleto: sure | 17:33 | |
| points for persistence :-) | |||
| dukeleto | gbacon: have you downloaded the parrot repo since we have changed to git? | 17:36 | |
| gbacon: github.com/parrot/parrot/blob/mast...rkflow.pod describes the process | |||
| gbacon: which platforms/OS do you have access to or willing to test on? | 17:37 | ||
| gbacon | dukeleto: yes, I grepped git log for bacon | ||
| Ubuntu 11.04 | |||
| dukeleto | gbacon: awesome. | ||
| gbacon: have you ever heard of Smolder? We usually submit smoke reports to it, but it may be down. | |||
| gbacon | maybe CentOS too, but I'd hate to encourage people to use that distribution | ||
| dukeleto | gbacon: we need better tools for submitting and maintaining smoke reports | 17:38 | |
| gbacon: perhaps you can explain how p5p does it? Perhaps we should lovingly steal some of their infrastructure | |||
| gbacon: the normal process is to build a new parrot and then type "make smoke" (which requires the TAP::Harness::Archive CPAN module) | 17:39 | ||
| gbacon | dukeleto: waaaay back in the day, I wrote a Perl program to extract build reports from p5p posts and stuffed them in a mSQL database | ||
| dukeleto | smolder-- is still down: smolder.parrot.org | 17:40 | |
| gbacon: we don't have a "parrot smoker" mailing list, and I think we should | 17:41 | ||
| gbacon | dukeleto: I was trying to imagine an easier way to do it | ||
| RSS feeds or tweets or something | |||
| maybe a sweet mojo webapp on DotCloud now that it supports Perl! | 17:43 | ||
| dukeleto | gbacon: we do have access to the GCC compile farm, tho | 17:44 | |
| gbacon: i have a bunch of smokers on the farm submitting smolder reports, which is probably what brought smolder down :( | |||
| gbacon: Jitterbug is one of my side projects that is like a dedicated smoker: jitterbug.leto.net | |||
| gbacon: but it doesn't solve the problem of arbitrary users submitting smoke reports | |||
| gbacon: jitterbug lives at github.com/franckcuny/jitterbug | |||
| dukeleto still needs to teach it a few more tricks to be able to properly test parrot and rakudo | 17:45 | ||
| benabik | dukeleto: I thought you got it speaking parrot a day or two ago. | 17:46 | |
| dukeleto | benabik: i fixed the biggest bugs, but now there are just a few configuration issues that need to be tweaked | 17:50 | |
| benabik: previously, i was doing git clean -fdx, git checkout and git fetch, all in the same cached git repo | |||
| benabik: but if badness occured, lockfiles would be left over, making the process fall over | 17:51 | ||
| benabik | dukeleto: Lockfiles? From git? | ||
| dukeleto | benabik: but now I have a pristine cached git repo, which only ever has a "git fetch --prune" run in it, then I clone into a temp repo from that cached repo | ||
| benabik: yep. Git leaves lock files when badness occurs. Usually .git/lockfile or some junk | 17:52 | ||
| benabik | dukeleto: Local git clones are very cheap on same FS (hardlinks) or on same system with -s (alternate) | ||
| dukeleto | benabik: yep. And this way of doing things is much more resilient | 17:53 | |
| benabik: previous builds can't effect the current build, because only one build is every done in a git repo | |||
| s/every done/ever done/ | |||
| benabik | dukeleto++ # clever git tricks | ||
| dukeleto | Heavy-handed, but required | ||
| benabik | dukeleto: Ensuring perfectly clean starting points doesn't sound heavy-handed to me. :-) | 17:54 | |
| dukeleto | benabik: the current issue is that a previously-installed parrot is conflicting with the currently-building-parrot in Jitterbug. I think I just need to remove the installed parrot on that machine, and that should unbork things | 17:55 | |
|
17:55
ShaneC1 left
|
|||
| dukeleto does just that | 17:55 | ||
| benabik | dukeleto: I keep getting warnings about my installed parrot. How does that screw things up? I've never seemed to have a problem with it. | ||
| dukeleto | Perhaps it will work now. | 17:56 | |
| benabik: ok, here is the deal | |||
| benabik: if your installed parrot and the one you are building have the same release version (but are on different sha1's) and someone has changed something drastically internally, it could cause undefined behavior | 17:57 | ||
| benabik: parrot doesn't know how to tell the difference between parrot x.y.z and parrot x.y.z + non-backward-compatible commits | 17:58 | ||
|
17:59
hercynium is now known as |,
| is now known as hercynium
|
|||
| benabik | dukeleto: Is the build system not good about using the parrot it just built? | 17:59 | |
| dukeleto | benabik: one could argue it is a bug in our config/build scripts (and I would be hard pressed to argue) but it is a deep and sticky issue | ||
| benabik: i don't fully understand it, but I have been bit by it, which is why I rm my installed parrot every time before I build a new one | |||
| benabik: as I do in here: github.com/leto/Util/blob/master/bin/new_parrot | 18:00 | ||
| benabik | dukeleto: So I should really be doing `stow -D parrot` before `(cd parrot; make)`. Hm. | ||
| dukeleto | benabik: yeah, probably | ||
|
18:00
contingencyplan joined
|
|||
| dukeleto | benabik: i used to know how to use stow | 18:00 | |
| benabik: the parrot configure system detects a parrot in it's PATH and sees if it is the same version, and if it is, assumes some stuff | 18:01 | ||
| benabik: but that assumption isn't always correct. | |||
| benabik | dukeleto: That sounds LTA. | ||
| dukeleto | benabik: indeed | ||
| benabik: you will find many LTA jewels in our config/build system | |||
| benabik: It is a battlefield, fertilized by many gallons of blood lost in the name of "portability" | 18:02 | ||
| dukeleto just booked his ticket to YAPC::NA ! | 18:03 | ||
| benabik | Woo! I'm seeing if people 'round these parts want to carpool. 12hr drive is pesky, but saving a couple hundred on tickets is good. | ||
|
18:05
bluescreen joined,
bluescreen left
|
|||
| dukeleto | benabik: have you looked into Amtrak? | 18:07 | |
| benabik | dukeleto: I have yet to see Amtrak be cheaper than flying, bit I'll take a look. | 18:08 | |
| dukeleto | benabik: it is hit or miss | 18:09 | |
| benabik | dukeleto: Also, closest Amtrak station is 1:30 from Asheville. :-( | 18:10 | |
| dukeleto | benabik: ah, no bueno | 18:11 | |
| benabik | It is cheaper, but takes 24 hours. | 18:12 | |
| dukeleto | benabik: yeah. Screw that. | ||
| benabik | dukeleto: Someone from Buffalo.PM indicated interest in carpooling. Hopefully they have a decent car so I don't even have to get a rental. :-D | ||
| dukeleto | benabik: i think carpooling with some PM people will be a great experience | 18:13 | |
| benabik | dukeleto: The whole point is to meet new people. :-) | 18:14 | |
| benabik adds "remove installed parrot" to his Parrot make script. | 18:15 | ||
|
18:23
gbacon left
18:25
ShaneC joined,
ShaneC left,
dmalcolm joined
|
|||
| dalek | sella: d35f8ee | Whiteknight++ | setup.winxed: Don't try to build File library now, it's too immature |
18:27 | |
| sella: 90cdcaa | Whiteknight++ | src/ (3 files): Add in a 'classic' quicksort implementation for the Query library |
|||
| whiteknight | I really need to optimize that qsort routine, but it works for now | 18:29 | |
| making all those function calls is certainly going to make it slower than Parrot's current C version | |||
| benabik | whiteknight: Randomized or center pivot is better than first element, BTW. On sorted or mostly sorted lists, first element leads to O(n^2) | 18:30 | |
| whiteknight | benabik: yeah, I need to fix the pivot too | ||
| benabik | Best is attempting to find a good median, which can be done in O(n), but the constant factor probably loses out. | 18:31 | |
| benabik took an algorithms class this year, can you tell? | |||
| sorear | if quicksort didn't have such a lucrative place in name-space, would anyone still use it? | 18:32 | |
| it seems like a pretty lousy algorithm | |||
| whiteknight | quicksort is a pretty good algorithm, overall. It tends to have pretty good coefficients | ||
| benabik | sorear: It's nice and simple, which is handy for teaching and is better than most other sorts. | ||
| whiteknight | whether it's better than heapsort or not is debatable. | 18:33 | |
| I've seen plenty of workloads where it can go either way | |||
| benabik | They're very similar expected running time, but heap generally has better worst case. | ||
| whiteknight | right | ||
| benabik | And qsort with bubble at length < C is even better. | ||
| whiteknight | For my purposes, getting a working quicksort was faster and easier than almost anything else I could have written | 18:34 | |
| I did the naive "book" version of it, but it can be optimized a hell of a lot more | |||
| I can inline the swap and partion implementations, then replace half the recursions with loops | 18:35 | ||
| at that point I would expect it to have comparable performance to the C version in Parrot | |||
| benabik: and you're right. Switching sort routines at a certain length or a certain recursion depth would be a good idea | |||
|
18:36
davidfetter joined
|
|||
| benabik | whiteknight: Length is usually best. Stopping at a given depth tells you nothing about how much work is left to do. | 18:36 | |
| whiteknight | introsort switches to heap sort below a certain recursion depth. I think the MS implementation of qsort in msvcrt switches to bubblesort | ||
| benabik | Bubble has the advantage of small constants. | 18:37 | |
| whiteknight | yeah, but it becomes a tuning exercise. What does C need to be where bubble saves more than it costs? | ||
| benabik | whiteknight: It's not a terribly hard tuning exercise. | 18:38 | |
| whiteknight | this is true | ||
| At this point I'm more interested in getting a working sort interface as opposed to a bleeding fast one | 18:39 | ||
| What I need to do is get to work on the Rosella Benchmark library, so I have the tools to analyze the sort routine :) | |||
| benabik | So optimizing the sort is just a handy way to test your Benchmarks. :-D | 18:40 | |
| whiteknight | exactly | ||
| dukeleto | whiteknight++ # a rosella benchmark library | 18:41 | |
| whiteknight | don't ++ it yet. It's little more than a vague idea and a small hodgepodge of random code | 18:43 | |
| What I really want to do is close trac.parrot.org/parrot/ticket/1356. Instead of inheriting a sort routine into all our myriad of array types, I would like to write one or two implementations at the PIR level | 18:46 | ||
| I suspect that an optimized variant could be faster than our current C implementation, because we could cut out nested runloops | |||
| dukeleto | qwest-- | 18:47 | |
| whiteknight | Also having the benefit that if the sort routine was external, Any array-like type could benefit from it, not just built-ins and types that inherit from built-ins | ||
| dukeleto | whiteknight: so what exactly is blocking that ticket? | 18:49 | |
| whiteknight: or, what next steps are you thinking? | 18:50 | ||
| whiteknight | dukeleto: I need to implement an alternate sort routine, in PIR, and demonstrate it isn't worse in terms of performance | ||
| and demonstrate that it works on all native array types | |||
| dukeleto | whiteknight: those sound tractable | 18:51 | |
| whiteknight | at least, that's my current approach | ||
| dukeleto | whiteknight: are you thinking of actually writing PIR, or generating the PIR? | ||
| whiteknight | the alternative is to copy+paste the sort method to ResizableStringArray, or find an un-stupid way to inherit | ||
| dukeleto | copy+paste feels wrong, and sometimes inheritance just isn't the best tool | 18:52 | |
| a role is the correct tool | |||
| whiteknight | it certainly isn't the best tool here. Parrot_quicksort takes a signature string literal, to prevent the need for autoboxing every single element at every single swap | 18:53 | |
| which, I suspect, is bad | |||
| dukeleto | whiteknight: ugh. That is quite hackish and all kinds of tightly coupled | ||
| whiteknight | yessir | ||
| dukeleto | whiteknight: do we have any sorting benchmarks in PIR now? | 18:54 | |
| whiteknight | Hence, I think the best idea is to go with a PIR implementation. Actually, will probably be several implementations, or a macroized implementation, or something | ||
| because we still want to avoid autoboxing | |||
| dukeleto | whiteknight: does that warrant a new ticket or at least changing the title of TT1356 ? | 18:56 | |
| whiteknight | I don't think so. Not yet anyway. I'm still exploring all options | ||
| dukeleto | whiteknight: we seem to have no sorting benchmarks. OH THE HUGE MANATEE | 18:59 | |
| whiteknight | yeah, that's something that I'm going to have to add | ||
|
19:00
Coke left
|
|||
| whiteknight | I'll probably generate a few random arrays and a few pathological cases | 19:00 | |
|
19:00
Coke joined
|
|||
| whiteknight | like a million item array that is already in reverse order | 19:00 | |
| and an array that is already in order | 19:01 | ||
| dukeleto | whiteknight: i just created a TT for it :) | ||
| whiteknight | throw it on my pile, so I can ignore it more effectively | 19:02 | |
| I mean "keep track of it" | |||
| benabik | Sorted array is the worst case for quicksort, although I'd imagine reverse sorted is just as bad. | 19:03 | |
| whiteknight | I thought reverse-sorted was the worst for quicksort | 19:04 | |
| because in a sorted array, there are almost no swaps to do | |||
| in the reverse-sorted array, we have to do N swaps | 19:05 | ||
| benabik | It gives maximal recursions. | ||
| You're probably correct about the swaps though. | |||
| whiteknight | right, but that's N swaps AND NlogN recursions, vs NlogN recursions and few swaps | ||
| sorear | there shouldn't be any logarithmic factors in quick sort's sorted cases | 19:06 | |
| benabik | N swaps and N recursions for NlogN instead of N swaps and log N recursions. | ||
| whiteknight | What I will probably do is write up a sort wrapper, which can take in an optional sort core by name, or fall back to a decent quicksort implementation | ||
| sorear | logarithmic factors only come in when the array is being cut in half at each step | ||
| dalek | TT #2120 created by dukeleto++: We need sorting benchmarks | ||
| TT #2120: trac.parrot.org/parrot/ticket/2120 | |||
| benabik | Buh. Sorted is N swaps at each of N recursions for N^2 result. | ||
| whiteknight | sorear: and that's what the recursions do | ||
| benabik: that makes no sense. How does it have N recursions? | 19:07 | ||
| sorear | whiteknight: not if the array is already sorted and we're pivoting on the first | ||
| whiteknight | sorear: oh, true. In that case it is the worst, yes | ||
| an n/2 pivot drops that back down to NlogN | |||
| benabik | whiteknight: Because you pivot on the first element. So you sort everything into one half, then sort N-1 eles. | ||
| I was speaking of pathological case. | |||
| whiteknight | yes, that case is bad | 19:08 | |
| benabik | Random pivot gives you expected log N recursions, but can't help with the N comparisons (and maybe swaps) in the partition portion. | ||
|
19:10
Coke left,
Coke joined
|
|||
| benabik | (Center pivot also expect log N, but a pathological example can be constructed.) | 19:17 | |
|
19:17
silug joined
|
|||
| whiteknight | Random pivot doesn't remove the pathological worst case. It only prevents it from being manually triggered | 19:22 | |
| benabik | whiteknight: True. | 19:23 | |
| sorear | for a sufficiently large array, it makes the pathological worst case less likely than your CPU spontanously igniting in the middle of the operation | 19:29 | |
| whiteknight | I've had a CPU ignite before. Actually it was a pop, some sparks, and a little smoke, but I still don't like those odds | 19:30 | |
| actually, the sparks might have been coming out of one of the harddisks which were hanging in the case freely, and possibly completing a circuit | 19:32 | ||
| benabik | My Data Communications and Networking II professor had bad words for anyone who liked "playing roulette with a protocol". | ||
| whiteknight | I had a networking professor whose voice sounded exactly like Rafiki from The Lion King | 19:34 | |
|
19:36
rohit_nsit08 joined
|
|||
| cotto_work | hio rohit_nsit08 | 19:36 | |
| rohit_nsit08 | hello #parrot | ||
| cotto_work: hi | |||
| feeling good after coming back after the break :-) | |||
| benabik | break? | 19:37 | |
| rohit_nsit08 | exams | ||
| benabik | Ah. | ||
| rohit_nsit08 | last is tomorrow | ||
|
19:39
Coke left,
Coke joined
|
|||
| dukeleto | rohit_nsit08: good to see you back! was wondering where you ran off to :) | 19:46 | |
| whiteknight: i've made a CPU catch fire before as well, but I had filled every possible jumper position on an old 486 mb, to see what would happen. I was sufficiently impressed. | 19:47 | ||
| jnthn__ | dukeleto: wow! :) | 19:48 | |
| whiteknight | dukeleto: oh, fun | ||
| Back in school I had an old frankenmachine that I cobbled together from spare parts | |||
| dukeleto | jnthn__: you could say I was in an "experimental hardware" stage during high school ;) | 19:49 | |
| whiteknight | it had more HDDs than it had slots for them, so they hung loose in the case | ||
| and I didn't have a heat sink, or a cover | |||
| rohit_nsit08 | dukeleto: hi, was having semester exams. | ||
| jnthn__ | dukeleto: Conclusion: filling all possible jumpers enables the HCF instruction :) | ||
| rohit_nsit08 | dukeleto: will be on full time from tomorrow :-) | ||
| dukeleto | whiteknight: oh, i remember many a frankenmachine which would have outraged many a fire inspector | ||
| rohit_nsit08 | whiteknight: hi | 19:50 | |
| dukeleto | rohit_nsit08: glad to hear! | ||
| whiteknight | hello rohit_nsit08 | ||
| dukeleto | rohit_nsit08: i would like to skype with you soon, sill! Just had real life get in the way recently, as I am sure you are familiar with :) | ||
| rohit_nsit08 | dukeleto: ya, sure we can have it anyday u like I'll mail u the free timings today according to the timezone. | 19:52 | |
| cotto_work | I've said it before and I'll say it again: www.worldtimebuddy.com/ | 19:55 | |
| whiteknight | jeez cotto_work, you sound like a .... what's that animal that repeats things all the time? | 19:58 | |
| cotto_work | duck? | 19:59 | |
| whiteknight | yeah, that's the one. You sound like a duck | 20:01 | |
| cotto_work | According to ducktyping, I must therefore be a duck. | ||
| tcurtis | cotto_work: not necessarily. Do you walk like a duck? | 20:05 | |
| cotto_work | quack | 20:06 | |
| whiteknight | ducks walk by quacking | 20:07 | |
| cotto_work | dukeleto: are you hacking on the m0 assembler? | 20:10 | |
|
20:18
silug left
|
|||
| dalek | rrot/m0-prototype: b2e5b9f | cotto++ | src/m0/m0_assembler.pl: make m0 assembler output less-invalid bytecode |
20:19 | |
|
20:28
whiteknight left
20:31
dodathome left
20:32
ambs joined
|
|||
| dukeleto | cotto_work: was actually about to start a bit. You reading my mind? | 20:35 | |
| blarg. ipv6 test failures: jitterbug.leto.net:3000/api/build/p...rl-v5.10.1 | 20:37 | ||
| jitterbug sure is good at finding bugs. | 20:38 | ||
| cotto_work | dukeleto: great. I'll continue focusing on $dayjob. | 20:40 | |
|
20:41
mj41 joined
|
|||
| benabik | Found a way to cut out all that useless sleep and gain an extra 6 hours of hacking: www.dustincurtis.com/sleep.html | 20:41 | |
| tadzik | yeah, great idea. Now lie down and sleep for 20 minutes. Like, now | 20:42 | |
| If you can, I'm jealous. Monday-Tuesday I didn't sleep at all. I lied down for hours, and nothing. Insomnia. If that method is supposed to fix sleeping problems, then I have a bootstraping problem | 20:43 | ||
| benabik | You probably fall asleep faster if you're just taking naps like that because you're riding the edge of exaustion constantly. | 20:44 | |
| tadzik | so that sucks | ||
| benabik | Reading a discussion of adjusting, it sounds like you go into serious sleep dep for a few days before your body adjusts but then it's fairly normal except for wierd psych effects relating to days blending together. | 20:47 | |
| everything2.com/index.pl?node=Every...20Schedule | |||
| tadzik | I'm yet to find a method to fix my sleeping disorders. The common answer is "get to sleep the same time every day". Oh, really? But the fact that I go to bed doesn't set me asleep. I will lie down being nothing but bored, until my brain decides to fall asleep. But the decision is different every day | ||
| hmm | |||
| sorear | tadzik: waking up the same time every day helps, a lot | ||
| benabik | Could be one of those non-24 hour sleep cycle issues. | 20:48 | |
| sorear | tadzik: I had exactly the problems you described, until I was stuck taking morining classes | ||
| tadzik | sorear: well, my classes are in the morning once a week | ||
| sorear | tadzik: switching from 10am wakeup to 6am wakeup, waking up to an alarm every day, fixed my going to sleep problems | ||
| tadzik | int eresting; | ||
|
20:50
fperrad left
|
|||
| tadzik | alright, I'm trying 7am tomorrow | 20:51 | |
| sorear: when I wander back in the memory, the issues weren't that serious in the school days, I was waking up on 6 every day. I guess I regressed when I got to University | 20:53 | ||
| but damn. I got up at 8, on saturday. 8 on sunday. 8 on monday. Then I didn't get to sleep | 20:54 | ||
| maybe I regressed to much refactoring isn't sufficient anymore? :) | |||
| s/to/so/ | |||
| benabik | tadzik: It takes two to four weeks for your body to really adjust to a change in sleep habits. | 20:55 | |
| (IIRC, IANAD) | 20:56 | ||
| tadzik | oh | ||
|
21:07
bacek joined
21:19
ambs left
21:23
rohit_nsit08 left
21:29
lucian left
21:46
jsut joined
21:48
mtk left
21:50
soh_cah_toa joined
21:51
jsut_ left
21:55
mtk joined
22:06
hercynium left
22:15
mj41 left
|
|||
| dalek | p: 05bf809 | jonathan++ | src/pmc/sixmodelobject.pmc: Make get_iter overridable. |
22:26 | |
|
22:38
silug joined
23:02
alester left
|
|||
| dalek | lrskate: 9cdf3fe | tcurtis++ | examples/ (2 files): Rename the prettyprint example |
23:05 | |
| lrskate: 25095d9 | tcurtis++ | examples/addition.winxed: Use Winxed's new, instead of pirop. |
|||
| lrskate: 16d801d | tcurtis++ | examples/practical-translators-g-0.winxed: Add an example of a LR(0) grammar from "Practical Translators for LR(k) Languages". |
|||
| TT #2121 created by soh_cah_toa++: Mistakes in lib/Parrot/Test.pm Perldoc | 23:17 | ||
| TT #2121: trac.parrot.org/parrot/ticket/2121 | |||
| dukeleto | soh_cah_toa: if you send that patch as a pull request, I can merge button it :) | 23:18 | |
|
23:21
whiteknight joined
|
|||
| dalek | rrot: 1e3da70 | dukeleto++ | .gitignore: Fix a bug in our .gitignore that incorrectly tried to ignore vim swap files |
23:26 | |
| soh_cah_toa | dukeleto: how can i do that w/o including my gsoc work that's on my branch? | 23:43 | |
| dukeleto | soh_cah_toa: you should be working on seperate branches | 23:46 | |
| soh_cah_toa: gist/nopaste the output of "git status -u" | |||
| soh_cah_toa | dukeleto: well, i branched from parrot/parrot and have been pushing to soh-cah-toa/parrot | 23:47 | |
| dukeleto | soh_cah_toa: that is called a fork | ||
| soh_cah_toa: branches are inside of a repo | |||
| soh_cah_toa | dukeleto: ok | ||
| dukeleto: so how do i do this then? do i make a temporary branch from soh-cah-toa/parrot for tt2121? | 23:50 | ||
| dukeleto: actually, let me nopaste my remotes and branches | 23:51 | ||
| nopaste | "soh_cah_toa" at 192.168.1.3 pasted "My Messed Up Environment" (9 lines) at nopaste.snit.ch/47549 | 23:52 | |