Camelia, the Perl 6 bug

IRC log for #parrot, 2010-08-11

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 dalek parrot: r48392 | chromatic++ | trunk/src/hash.c:
00:00 dalek parrot: [hash] Switched hash mark to linear bucket scan.
00:00 dalek parrot: This patch provides a modest performance improvement and better processor cache behavior.
00:00 dalek parrot: Patch courtesy Luben Karavelov <luben@...>
00:00 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48392/
00:00 dalek parrot: r48393 | chromatic++ | trunk (2 files):
00:00 dalek parrot: [opsc] Coalesced expensive allocation for op info.
00:00 dalek parrot: By allocating lots of little buckets in one big chunk, we can avoid repeated
00:01 dalek parrot: calls to calloc().  This improves Parrot startup by 4.3%.
00:01 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48393/
00:07 whiteknight purl msg Chandon I get a segfault in the gsoc_threads branch building nqp-setting.pbc during "make all" Is this a known issue? "make corevm" works just peachy and I get a handful of test failures (segfaults mostly) in expected places in "make coretest
00:07 purl Message for chandon stored.
00:09 whiteknight purl msg Chandon t/pmc/filehandle.t (test 9), t/pmc/nci.t (19 and 20), t/pmc/stringhandle.t (11), t/src/extend.t (18) and t/src/threads_io.t (tests out of sequence). Are these the same errors you see on your machine?
00:09 purl Message for chandon stored.
00:11 whiteknight Tene: ping
00:13 Austin Moo. Multi-methods are failing...
00:15 whiteknight Austin: did Tene's "our method" patch for nqp make it into Parrot trunk yet?
00:15 Austin as far as i can tell, yes.
00:16 whiteknight w00t. So I can use my normal commands instead of using the second nqp binary I have floating around
00:19 whiteknight Austin: what do you think are the odds that kakapo today is capable of running the unittests for PLA?
00:20 whiteknight !!!: Core dump building parrot-nqp
00:20 Paul_the_Greek joined #parrot
00:20 Austin Well, if you can't build parrot-nqp, then I'll say 0%
00:21 whiteknight heh, great
00:21 Austin Whiteknight: Beyond that, I seem to recall that PLA is basically a bunch of PMCs, and the tests are invocations of those pmc objects. If that's the case, your chances are pretty good
00:22 whiteknight Austin: I don't use too much kakapo functionality. Mostly just the unit test suite stuff
00:22 Austin You should be okay, then.
00:23 Austin Try the current gitorious master, let me know what you get.
00:25 whiteknight how does one use GDB on a command which takes input from a pipe?
00:25 Austin What do you call cheese that belongs to someone else?
00:25 whiteknight Parrot on my machine is dumping core at the command "./parrot_nci_thunk_gen --dynext --no-warn-dups --output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci", but when I pass that to "gdb --args", it treats that pipe as input to gdb
00:25 whiteknight nacho cheese
00:26 Austin Heh.
00:26 Austin I got nothing on the gdb question. Sorry.
00:26 Austin I think you do gdb foo, then do run < redirect
00:27 Austin Telling gdb to set up the input file
00:28 Austin Yeah, that looks right
00:28 Austin gdb parrot-nci-thunk-gen
00:28 Austin run < src/nci/extra_thunks.nci
00:32 whiteknight Austin++
00:32 cotto ~~
00:33 whiteknight purl msg chromatic I'm getting a coredump during the build as of r48393. Core dumps in Parrot_exit doing hop_deinit stuff in the runcore, which looks (without digging too deeply) like what you touched in r48393.
00:33 purl Message for chromatic stored.
00:33 whiteknight (core dump)--
00:34 chromatic 64-bit Linux?
00:35 Austin msg pmichaud I think this is a bug: in nqp, saying multi method foo($x, :$named) produces a multi sig like [_, _, _], with a slot allocated for the named arg. But I don't think they count for dispatch purposes, so there's a mmd failure.
00:36 purl Message for pmichaud stored.
00:36 dukeleto Austin: how goes it?
00:36 Austin duke: Still paying the kakapo upgrade taxes. :( You?
00:37 whiteknight chromatic: yessir
00:38 whiteknight chromatic: want coredump or backtrace or anything? I gots what you need
00:39 ttbot Parrot trunk/ r48394 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/365519.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
00:39 chromatic Backtrace would be nice.
00:40 nopaste "whiteknight" at 192.168.1.3 pasted "the whole shebang for chromatic++" (165 lines) at http://nopaste.snit.ch/22682
00:41 whiteknight I doubt that will be super helpful for you, since by the time the memory panic happens the corruption has long since finished
00:41 whiteknight but, there it is
00:41 kid51 joined #parrot
00:42 kid51 purl, kakapo?
00:42 purl rumour has it kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. or See http://code.google.com/p/kakapo-parrot/ for documentation and issue tracking, or http://gitorious.org/kakapo for source code
00:42 lucian joined #parrot
00:43 chromatic No idea, whiteknight.
00:43 chromatic Oh, wait.  I have an idea.
00:44 whiteknight I'm going to try out r48392 to see if 48393 was the problem
00:44 chromatic It is, I see it now.
00:45 dukeleto Austin: this and that, trying to find time to hack on PL/Parrot and thinking about removing the open/close opcodes, since they are on the deprecation chopping block now
00:46 Austin You mean open/close for PLParrot, or parrot in general?
00:46 whiteknight parrot in general
00:46 Austin Cool.
00:47 Austin May I say how truly worthless dynamic opcodes are, from my perspective?
00:47 dukeleto Austin: do they cause you pain or are they just worthless?
00:47 Austin Both
00:48 nopaste "chromatic" at 192.168.1.3 pasted "whitenight: fix hop deinitialization" (40 lines) at http://nopaste.snit.ch/22683
00:49 Austin Leaving aside the whole dynop renumbering issue, I haven't found much of anything that is supposed to be a dynop that a (dyn)pmc method couldn't do.
00:50 dalek parrot: r48394 | NotFound++ | trunk/src/pmc/hash.pmc:
00:50 dalek parrot: add a cast to make c++ happy
00:50 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48394/
00:51 Austin In particular, opening and closing files
00:51 chromatic The lack of class methods might make this amusing.
00:52 dukeleto I guess this begs the question: Which use cases are dynamic opcodes the best solution ?
00:52 Austin Which, fwiw, puts a PMC object in the path of the operation, something I think the PL/Parrot security guys would really like.
00:53 Austin use cases: I have no idea. The only thing I could think of where dynops make sense is c functions that are expected to be called a whole lot.
00:54 dalek TT #1736 created by Austin++: NQP-rx generates wrong multi signature for :named params
00:54 dalek TT #1736: http://trac.parrot.org/parrot/ticket/1736
00:55 Austin But that argues that the expected parrot performance difference between opcode and pcc call is (enormous), which I'm not sure is true.
00:57 chromatic I am.
00:57 Austin expected or actual?
00:58 chromatic Actual.
00:58 Austin What about pmc nci methods? Where do they fit on the performance spectrum?
00:59 chromatic They're even worse than PIR methods.
00:59 Austin (dukeleto: This is away from the point, of course. Only in some test case somewhere are 'open' and 'close' going to be the performance drivers...)
01:02 Austin chromatic: So if I define some integer pmc knock-off, and create an "increment" method in C, and then code up a "pir_increment" method in PIR and inject it into the Proxy, you're saying that the PIR increment will run faster then the C version, when we loop it a squillion times?
01:03 dukeleto Austin: yeah, most reasonable algorithms need to only open/close a constant number of files, or perhaps O(N) files
01:03 dukeleto Austin: and i don't think the performance difference is more than a few percent
01:04 Austin duke: Yeah. So +inf from me on getting rid of file io dyn ops. Put 'em in a pmc someplace, where i can hope to load them from NQP.
01:04 chromatic Austin, exactly... and I expect the performance difference is more than a few percent.
01:05 Austin chromatic: Then shouldn't we be making it a priority to rewrite as much C as possible into PIR?
01:06 chromatic That's Lorito.
01:06 Austin Well, no. It isn't.
01:07 chromatic That's what I had in mind when I proposed Lorito.
01:07 Austin Sure.
01:11 plobsing joined #parrot
01:12 whiteknight chromatic: that patch doesn't apply
01:12 chromatic Well that's strange.
01:13 whiteknight oh shit, nevermind
01:13 whiteknight I'm on the wrong revision
01:13 Austin Aww, dammit. slurpies are hosed, too.
01:15 Austin Is there a Perl6 way to mark the end of multidispatch parameters?
01:15 sorear ;; instead of , in the arg list
01:15 atrodo chromatic> (the c vs. pir shootout) that'd be an interesting benchmark to see
01:15 Austin One semi, or two?
01:16 chromatic atrodo, it should be easy to write.
01:17 Austin sorear:   Like this?  7  multi method foo( $a, $b ; $c )  or like this: 7  multi method foo( $a, $b ;; $c )
01:17 sorear the latter
01:17 purl the latter is better
01:18 Austin Thanks
01:18 Austin Yeah.
01:18 Austin Guess what NQPrx doesn't support yet.
01:18 Austin :(
01:19 whiteknight chromatic: no dice. still get a core dump (though at a different point in the build)
01:19 Austin sorear++ # thanks for the info
01:20 Austin seen tene?
01:20 purl tene was last seen on #parrot 2 days, 4 hours, 4 minutes and 38 seconds ago, saying: That doesn't sound too difficult to fix, either.  [Aug  8 21:15:31 2010]
01:20 Tene seen Austin?
01:20 purl Austin was last seen on #parrot 7 seconds ago, saying: seen tene?
01:20 Austin You feel like making some more nqp-rx grammar changes?
01:21 Tene That one sounds less-trivial.  Lemme look.
01:21 Austin Tene: There's two. First, the solution to tt#1736 - stop emitting multi signature stuff for non-positionals.
01:22 Coke joined #parrot
01:22 Austin The second would be implementing ;; in the grammar, which looks like it wouldn't be too terribly hard, but would require a bunch of background coding to verify correct context, etc.
01:23 chromatic whiteknight, the problem should be fairly obvious.  It's bog-standard C memory management.
01:23 Austin Also, should nqp bugs be submitted to trac.parrot, or to github, or what?
01:23 sorear github
01:25 whiteknight chromatic: I'm not really digging into it myself right now
01:27 whiteknight actually...I'm out of time for the night. I'll stare at it tomorrow if it's still an issue
01:28 Coke bugs for which now?
01:29 Austin Coke: bugs found in nqp(-rx)
01:29 Tene Austin: Those both look pretty easy, actually.
01:29 Austin Tene: I didn't want to qualify the second one as easy. The first looks like <1hr.
01:30 Tene Austin: the second is easier than the first, actually.
01:30 Austin orly?
01:30 purl YA RLY.
01:30 Tene Yeah.
01:30 Austin I look forward to reading your diffs.
01:31 Austin :)
01:31 Tene For the second, I just need to collect both before and after a ;;, and only push the first into the multi list.
01:31 Austin And fail if there's no 'multi' keyword?
01:31 Tene For the first, I need to actually inspect each item to find out if it's positional or named.
01:33 Tene Well, failing on invalid code isn't what you asked for; you only asked for succeeding on valid code. ;)
01:33 Austin :)
01:33 Austin Generator.
01:33 purl rumour has it generator is easy that way - you only need to run it on 1 machine or http://www.python.org/dev/peps/pep-0255/ or a portable MegaDrive/Genesis emulator or at http://www.squish.net/generator/
01:33 Austin Right.
01:33 Austin Got it.
01:34 Tene but failing on non-multi shouldn't be hard.
01:34 Austin I realized that $*MULTINESS or whatever it's called makes that easy.
01:34 Austin You put it in the grammar.
01:35 Austin "Straight to the Jack. Perl6 wins again."
01:35 Tene It's not entirely clear how to check that in the grammar, though.
01:36 sorear { die unless $*MULTINESS eq 'multi' }
01:36 Austin Signature looks like [ <parameter> ** ',' ]
01:36 Tene Yeah, I wasn't certain if nqp grammars supported that.
01:37 Austin But it could look like [...]  [<?{ $*MULTINESS eq 'multi'}> ';;' [...] ]?
01:37 rurban_ joined #parrot
01:37 Tene Yeah, pretty much
01:37 Tene store the parameters in the second half under a different name
01:38 Tene <post=.parameter>
01:38 Tene and then handle both halves in the signature action method
01:40 dalek parrot: r48395 | plobsing++ | branches/dynop_mapping/t/native_pbc (7 files):
01:40 dalek parrot: native_pbc platform updates
01:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48395/
01:45 chromatic Hm, now I need to remake my core ops.
01:49 Austin chromatic: Some while ago (months, at least) you posted a link to a guy writing about his home-built VM's performance under gcc vs microsoft c. Do you still have that guys link?
01:49 chromatic Wow... not sure.
01:50 Austin I was wondering if that was someone you follow, or something you stumbled on
01:50 chromatic Must be something I stumbled on.  I don't remember it.
01:51 Austin Google wins. http://abepralle.wordpress.com/2009/01/25/how-not​-to-make-a-virtual-machine-label-based-threading/
02:08 plobsing hi #parrot
02:13 dalek parrot: r48396 | chromatic++ | trunk (2 files):
02:13 dalek parrot: [opsc] Fixed some of the damage of r48393.
02:13 dalek parrot: Deallocation must respect the difference between hashes and arrays.
02:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48396/
02:13 dalek parrot: r48397 | plobsing++ | branches/dynop_mapping/t/examples/pir.t:
02:13 dalek parrot: skip make_hello_pbc. Packfile PMCs currently cannot generate PBC.
02:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48397/
02:19 plobsing C++ question: how do I initialize static structs to be mutually-referential?
02:20 plobsing (gcc is complaining that my predeclaration is invalid in C++)
02:20 Austin Struct x; OtherStruct y = { ... &x ; ...}; Struct x = {... &y; ... }
02:20 Austin Nopaste?
02:20 purl it has been said that Nopaste is http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or http://paste.scsys.co.uk or http://www.extpaste.com or http://gist.github.com or App::Nopaste or http://codepeek.com/paste/ or (: pastebot)
02:23 nopaste "plobsing" at 192.168.1.3 pasted "bit_ops static struct example" (2075 lines) at http://nopaste.snit.ch/22684
02:26 plobsing Austin: I know of the predeclaration pattern. But apparently you can't do it with static vars in C++.
02:27 Austin Yeah, static symbols don't reserve memory
02:27 plobsing so then how do I do it?
02:30 Austin Maybe remove the 'static' on the first decl
02:30 dalek parrot: r48398 | jkeenan++ | trunk/src/pmc/threadinterpreter.pmc:
02:30 dalek parrot: Insert POD 'item' so that documentor will know where to add function documentation.
02:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48398/
02:30 dalek parrot: r48399 | jkeenan++ | trunk (2 files):
02:30 dalek parrot: [codingstd] Reformat POD so that file passes pmc_docs.t.
02:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48399/
02:32 plobsing I can't get it to agree to compile the file unless I completely eliminate the static on the surrounding defns and extern the predecl.
02:32 Austin Whoa.
02:32 Austin YOu need more C++ mojo than I have.
02:40 jsut joined #parrot
02:41 plobsing any tips on where I could borrow such mojo?
02:41 cotto NotFound likes C++
02:41 Austin There you go.
02:42 atrodo hmmmm.  karma C
02:42 purl c has karma of 8760
02:42 nopaste "plobsing" at 192.168.1.3 pasted "toy C++ problem" (19 lines) at http://nopaste.snit.ch/22686
02:43 dafrito joined #parrot
02:44 plobsing seen NotFound?
02:44 purl NotFound was last seen on purl 5 hours, 2 minutes and 12 seconds ago, saying: <private message>
02:46 dalek parrot: r48400 | jkeenan++ | trunk/src/pmc/sub.pmc:
02:46 dalek parrot: [codingstd] Insert POD 'item' so that documentor will know where to add function documentation.
02:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48400/
02:46 dalek parrot: r48401 | jkeenan++ | trunk/src/pmc/sub.pmc:
02:46 dalek parrot: [codingstd] Typographic cleanup only.
02:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48401/
02:46 dalek parrot: r48402 | jkeenan++ | trunk (2 files):
02:46 dalek parrot: [codingstd] Convert inline comment to POD so that file passes pmc_docs.t.
02:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48402/
02:47 plobsing msg NotFound (C++ question) how do I get the equivalent of http://nopaste.snit.ch/22686 in legal C++?
02:47 purl Message for notfound stored.
02:48 janus joined #parrot
02:57 dafrito joined #parrot
03:03 * kid51 must sleep
03:03 purl Sleep is for the weak.
03:03 dalek parrot: r48403 | jkeenan++ | trunk/src/pmc/coroutine.pmc:
03:03 dalek parrot: [codingstd] Insert POD 'item' so that documentor will know where to add function documentation.
03:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48403/
03:03 dalek parrot: r48404 | jkeenan++ | trunk/src/pmc/coroutine.pmc:
03:03 dalek parrot: [codingstd] Typographic cleanup only.
03:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48404/
03:03 dalek parrot: r48405 | jkeenan++ | trunk/src/pmc/fixedintegerarray.pmc:
03:03 dalek parrot: [codingstd] Insert POD 'item' so that documentor will know where to add function documentation.
03:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48405/
03:03 dalek parrot: r48406 | jkeenan++ | trunk (2 files):
03:03 dalek parrot: [codingstd] Convert inline comment to POD so that file passes pmc_docs.t.
03:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48406/
03:04 kid51 purl, See, I can commit even when I'm asleep.  Can you do that?
03:04 purl kid51: no idea
03:17 hercynium joined #parrot
03:19 davidfetter joined #parrot
03:33 Chandon joined #parrot
03:36 dalek parrot: r48407 | plobsing++ | branches/dynop_mapping (2 files):
03:36 dalek parrot: workaround mutually-referencing static var C++ issue
03:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48407/
03:39 chromatic joined #parrot
03:40 LoganLK joined #parrot
03:53 dalek parrot: r48408 | plobsing++ | branches/dynop_mapping/src (2 files):
03:53 dalek parrot: make headerizer
03:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48408/
04:08 bubaflub joined #parrot
04:26 dalek parrot: r48409 | plobsing++ | branches/dynop_mapping/src (4 files):
04:26 dalek parrot: C++-ify
04:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48409/
04:53 plobsing can someone on something other than x86_64/linux/gcc to test the dynop_mapping branch?
04:53 jsut_ joined #parrot
04:54 * tcurtis svn cos it.
04:56 tcurtis plobsing: Should I make corevm; make coretest and only then try other tests? Or is "Perl Configure.pl && make fulltest" sufficient?
04:56 plobsing I was thinking fulltest, but I haven't tried corevm in a while.
04:56 * plobsing goes off and tests
04:58 tcurtis I'll do that, as well, then.
05:00 dalek parrot: r48410 | plobsing++ | failed to fetch changeset:
05:00 dalek parrot: sync with trunk
05:00 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48410/
05:00 dalek parrot: r48411 | plobsing++ | branches/dynop_mapping/src/pmc/role.pmc:
05:00 dalek parrot: [codetest] trailing space
05:00 tcurtis coretest passes.
05:00 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48411/
05:06 plobsing tcurtis: what's your arch/os/cc ?
05:08 tcurtis plobsing: i386/darwin/gcc
05:09 plobsing different arch, different os. I've tested w/ g++. If fulltest passes for you, I think I'm good to merge.
05:16 tcurtis plobsing: fulltest passes for me.
05:16 plobsing tcurtis++
05:16 plobsing It's merge o'clock!
05:17 tcurtis plobsing++
05:41 chromatic Hm, is there value to making public-ish POD documentation for static functions?
05:43 cotto you mean the internal kind that we like to change and possibly delete without deprecation notices?
05:43 plobsing The same can be asked about functions not explicitly marked PARROT_EXPORT or equivalent
05:43 bubaflub joined #parrot
05:44 chromatic Exactly.
05:49 cotto -1
05:49 purl -1
05:49 cotto purl--
05:49 purl cotto: excuse me?
05:49 cotto I said purl--
05:50 cotto At least -1 for requiring it.
05:50 chromatic Requiring documentation of static functions seems useful.
05:50 dalek parrot: r48412 | plobsing++ | failed to fetch changeset:
05:51 dalek parrot: merge dynop_mapping branch
05:51 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48412/
05:51 chromatic Requiring *POD* documentation of static functions seems less so.
05:51 cotto wheee
05:51 cotto POD seems like overkill for something in that state of potential flux
05:52 chromatic I don't care about that as much as I think that POD is documentation external to the file.
05:56 uniejo joined #parrot
06:16 Austin joined #parrot
06:17 AndyA joined #parrot
06:23 sorear plobsing++
06:23 dalek parrot: r48413 | plobsing++ | trunk (8 files):
06:24 dalek parrot: bump PBC_COMPAT and native PBC updates
06:24 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48413/
06:24 plobsing sorear: it was *your* idea
06:30 dalek TT #1663 closed by plobsing++: Mixture of dyn opcodes
06:30 dalek TT #1663: http://trac.parrot.org/parrot/ticket/1663
06:31 Austin Ah. NQP-rx is leaving the nest. Time to remove some kakapo syntax...
06:31 * Austin sniffs.
06:31 plobsing nqp-rx was in the nest?
06:33 sorear nqp-rx left a while ago
06:33 sorear nqp was in the nest; it left and was renamed at the same time
06:34 Austin Says you, who doesn't have to code in it.
06:34 Austin Finally redo() and next() and last() can stop being global functions and start being keywords...
06:34 Austin But I've still got super()
06:42 fperrad joined #parrot
07:01 cotto Goodie.  I was all ready to hack on the github plugin and managed to bung up my Trac install.
07:01 cotto Yay for opaque failures in languages and APIs I don't fully understand.
07:08 cotto and it works after nuking anything trac-related in  /usr/local/lib/python2.6/dist-packages/
07:08 cotto fun
07:10 Casan joined #parrot
07:13 dalek parrot: r48414 | mikehh++ | trunk/src/pmc/role.pmc:
07:13 dalek parrot: fix codetest failure - trailing spaces
07:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48414/
07:34 mikehh All tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48414 - Ubuntu 10.04 amd64 (g++ with --optimize)
07:39 TiMBuS joined #parrot
08:21 dalek parrot: r48415 | chromatic++ | trunk (2 files):
08:21 dalek parrot: [opsc] Made hop_init() walk the op list only once.
08:21 dalek parrot: This speeds up Parrot startup by another ~1%.
08:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48415/
08:21 dalek parrot: r48416 | chromatic++ | trunk/src/gc (3 files):
08:21 dalek parrot: [GC] Removed the non-lazy allocator.
08:21 dalek parrot: The lazy allocator has been the default for a year.
08:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48416/
08:28 mj41_ joined #parrot
08:30 mj41__ joined #parrot
08:31 mj41___ joined #parrot
08:38 ttbot joined #parrot
08:42 mikehh rakudo (fcf4f36) builds on parrot r48414 - make test PASS, make stresstest (pugs r31947) FAIL - Ubuntu 10.04 amd64 (g++ with --optimize)
08:42 mikehh t/spec/S03-smartmatch/any-bool.t - No subtests run
08:42 mikehh t/spec/S05-match/capturing-contexts.rakudo - TODO passed:   24
08:48 AndyA joined #parrot
08:53 lucian joined #parrot
09:39 rurban_ joined #parrot
09:43 dalek winxed: r586 | NotFound++ | trunk/winxedst (2 files):
09:43 dalek winxed: 'using static' statement, Issue 2, plobsing++
09:43 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=586
09:44 bacek aloha, humans
10:02 dalek winxed: r587 | NotFound++ | trunk/winxedst1.winxed:
10:02 dalek winxed: use 'using static' in stage 1 compiler to improve parsing speed
10:02 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=587
10:47 Paul_the_Greek joined #parrot
10:47 Paul_the_Greek purl,messages
10:50 robin-gvx joined #parrot
11:24 dalek winxed: r588 | NotFound++ | trunk/winxedst1.winxed:
11:24 dalek winxed: use more constructors in stage 1
11:24 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=588
11:27 [1]Casan joined #parrot
12:00 whiteknight joined #parrot
12:03 bacek joined #parrot
12:04 aloha joined #parrot
12:21 whiteknight good morning, #parrot
12:51 atrodo Morning
12:52 whiteknight hello atrodo, how are you today?
12:52 atrodo Doing great, how about you?
12:53 whiteknight doing pretty well myself
12:53 atrodo Excellent
12:54 particle would someone here be gracious enough to nominate me for re-election to the pafo board?
12:56 Austin I don't know, particle. What have you done for me this year?
12:56 whiteknight do you think you are worthy of such an honor? We don't let just any guy from off the street onto the board
12:56 Austin Cocaine? Strippers? Booze?
12:56 Austin no, no, no.
12:56 whiteknight BOOZE?
12:56 purl BOOZE is, like, closer than you think
12:57 particle i'm happy to see that the degree of parrot's success hasn't changed the level of grace of it's community members :P
12:58 robin-gvx joined #parrot
12:59 whiteknight did my email last night nominating duke make it through?
13:00 whiteknight I'll happily send more such emails for more deserving recipients if so
13:00 Austin Hmm.. there's a joke there, but I'm too tired to make it.
13:01 Austin We should nominate bacek.
13:01 Austin He can force a bunch of meetings in Oz, which ought to be good for something.
13:02 particle aye, duke has been nominated, your message made it
13:03 whiteknight w00t
13:04 whiteknight particle: nominated.
13:14 whiteknight Has the function Parrot_str_append changed recently? or disappeared?
13:19 Coke whiteknight: I think it's now str_concat
13:19 whiteknight Coke: thanks. I think I'm just going to rewrite all this garbage to use the fancy new StringBuilder instead
13:19 Austin Immutable stirings
13:19 whiteknight which are almost like immutable strings
13:20 ruoso joined #parrot
13:25 dalek rakudo: a9912e1 | moritz++ | src/Perl6/Actions.pm:
13:25 dalek rakudo: bind $/ in m// calls, by advise from pmichaud++
13:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​9912e13274de8c1f98fe1120e8707eff5ade205
13:26 dalek rakudo: 656170d | moritz++ | src/Perl6/Actions.pm:
13:26 dalek rakudo: disable non-working modifiders on m// for now
13:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​56170d3727b0ac51cb3eeb0fb699d751388bbba
13:26 dalek rakudo: a389b27 | moritz++ | t/spectest.data:
13:26 dalek rakudo: run ignorecase.t and ii.t test files
13:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​389b278de4cfba86852c889c1543ec32a36a4a8
13:26 Paul_the_Greek joined #parrot
13:26 Paul_the_Greek Morning, folks.
13:26 Paul_the_Greek Are core ops added without concern for binary compatibility of opcodes?
13:27 bluescreen joined #parrot
13:28 Coke I'm not sure what you mean by binary compatibility of opcodes.
13:28 Coke do mean, "of pbcs?"
13:34 Paul_the_Greek If I add an opcode, do I need to worry about the fact that all the opcode numbers will change?
13:34 Paul_the_Greek In core.ops, it says that the opcode numbers can't change.
13:35 dalek parrot: r48417 | NotFound++ | trunk/t/dynoplibs/deprecated.t:
13:35 dalek parrot: test clearp
13:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48417/
13:36 Paul_the_Greek But in other modules they are just in alphabetical order.
13:36 NotFound Paul_the_Greek: usually new opcodes are added to experimental, in that case you don't need to worry.
13:36 Coke if you add an opcode, you break pbc compatibility anyway.
13:37 Coke so the fact that the numbers might change isn't much worse than what you've already done. at least not today.
13:37 Paul_the_Greek So I should add round() to experimental. Then it's ultimately migrated into math.ops?
13:37 Coke eventually, we'll add them at the end of the list, instead of in order.
13:37 Paul_the_Greek Okay, experimental it is.
13:38 Coke is round() going to be builtin or dynamic?
13:38 Paul_the_Greek It is builtin, since so are floor and ceil.
13:38 Paul_the_Greek I was going to add trunc, but I guess there is no point since that's what $I0 = $N0 does.
13:39 particle our bytecode version changes with every release
13:39 particle and we don't guarantee bytecode compat across parrot versions yet
13:39 Paul_the_Greek Although that behavior should be explicitly documented.
13:40 Paul_the_Greek Do you think it's reasonable to guarantee that assignment does a truncate? The other option is to leave it undefined.
13:41 particle undefined is not an option, we need to guarantee similar behavior on all platforms
13:42 particle document I0 = N0 as a truncate.
13:42 Paul_the_Greek But we could say that the float is converted to an integer in an undefined manner.
13:42 particle yes, we could repeat the mistakes of c.
13:42 particle let's make new mistakes.
13:44 Paul_the_Greek I'm not sure it would be a mistake. You provide the four float->integer conversion operations, but leave assignment undefined.
13:44 Paul_the_Greek After all, the truncation is simply part of the C definition.
13:44 Coke Paul_the_Greek: then why would I ever use assignment?
13:44 Paul_the_Greek You wouldn't; instead, you would be explicit in how you wanted to do the conversion.
13:44 particle undefined operations are security holes
13:45 Paul_the_Greek But I don't want to get religious about this. Truncation is fine.
13:45 Paul_the_Greek Truncation is the obvious conversion, too.
13:45 Paul_the_Greek Should we also have an explicit truncate operation?
13:45 particle i think so, for consistency and completeness
13:46 Paul_the_Greek Okay, then I will document assignment as doing truncation, and add truncate and round.
13:46 Paul_the_Greek Thanks, folks.
13:47 Coke honestly, if assignment is defined as doing truncation, I would imagine we could get rid of the actual assign opcode variant and have the pir compiler translate I=N to trunc I, N
13:47 Coke s/honestly, //
13:48 Paul_the_Greek Yes, we could do that.
13:49 moritz is assigning to an $I or $N register any different than the 'set' opcode?
13:53 bubaflub joined #parrot
13:54 robin-gvx joined #parrot
14:03 bluescreen joined #parrot
14:04 Coke moritz: I'm not sure which opcode imcc compiles that to. either set or assign.
14:04 Coke (set)
14:05 * moritz wonders what assign does
14:05 Coke error:imcc:The opcode 'assign_i_n' (assign<2>) was not found. Check the type and
14:05 Coke nothing, apparently. =-)
14:05 Coke Please do not mistake my confusion about set and assign with parrot's.
14:06 moritz right; parrot has its own confusion
14:09 Coke I did try to phrase that carefully.
14:22 whiteknight Austin: ping
14:23 Coke Any other parrot members want to get NOM'd for the board?
14:23 whiteknight what's the list of current nominations?
14:24 moritz NOM'd sounds painful :-)
14:24 whiteknight are all the interested current board members re-nominated?
14:24 moritz and what does the board do, actually?
14:24 * atrodo NOM NOM NOM
14:24 purl I eat your head!
14:24 krunen joined #parrot
14:25 Coke current list: particle, whiteknight, dukeleto. particle has not accepted or trolled on list.
14:26 whiteknight purl msg Austin: answered my question, the PLA tests don't run with Kakapo head. Nqp::compile_file fails with error "Contextual $*FileSystem not found". I'll take a look at it myself today but probably won't have a lot of time till I get home
14:26 purl Message for austin stored.
14:26 Coke moritz: the biggest responsibilities are handling what little $$ there is and making sure elections happen. =-)
14:26 moritz Coke: ok. I'm not interested then.
14:26 Coke see parrot.org for the official docs that outline rights/responsibilities.
14:26 whiteknight Coke: particle trolled for a nom here on IRC :)
14:27 whiteknight I think we really need to pursue new avenues of funding this year
14:27 Coke whiteknight: Yes. I would love to have someone on the board who has experience doing that.
14:27 Coke or at least a bonus # of tuits.
14:28 Coke whiteknight: there is only one current board member nominated, fwiw.
14:32 Andy joined #parrot
14:32 Coke Andy, you wanna run for the pafo board?
14:39 Andy Awwww hell naw.
14:39 Andy What good would that be?
14:39 davidfetter joined #parrot
14:40 Andy Plus, I think it should be a requirement that members of the board know the language in question.
14:42 dalek rakudo: 21b3c7c | moritz++ | t/spectest.data:
14:42 dalek rakudo: run another test file
14:42 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​1b3c7cf087bdb34db8457f8a58d4de3372d7a02
14:43 dalek rakudo: 43f00da | moritz++ | src/core/Cool-str.pm:
14:43 dalek rakudo: type-constraint samecase() pattern to Cool
14:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​3f00dac97dde51bc68040027bc1c0a5680a1d38
14:52 Coke Andy: ... which language? perl6? tcl? python? =-)
14:53 TiMBuS joined #parrot
15:45 dalek parrot-linear-algebra: 444238a | Whiteknight++ | src/pmc/ (5 files):
15:45 dalek parrot-linear-algebra: Parrot_str_append is gone now, so replace all string maing logic with
15:45 dalek parrot-linear-algebra: StringBuilder. This allows PLA to build on recent Parrot
15:45 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/444238a4a1746b3f5291f8687a11aed6660888a4
15:52 dalek rakudo: a47c455 | moritz++ | src/builtins/Cursor.pir:
15:52 dalek rakudo: [Match] return itemized arrays for quantified positional captures
15:52 dalek rakudo: Fix suggested by pmichaud++
15:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​47c455876cade29d5a341951c3ce445740e41a2
16:00 particle whiteknight: happy birthday!
16:00 purl for (('to you', 'dear '.shift)[0,0,1,0]) { print "Happy birthday $_" }
16:01 whiteknight particle: thanks!
16:02 particle mine was yesterday, infinoid's is today, pmichaud's is friday, and coke's is saturday
16:02 whiteknight oh right, I forgot that Infinoid was all stealin' my thunder
16:05 whiteknight happy birthday, everybody!
16:11 atrodo wow, how does that happen?
16:16 davidfetter well, about nine months before, when a man and a woman feel close to each other...
16:16 davidfetter that's the usual way. these days, there are others
16:33 theory joined #parrot
16:40 cognominal joined #parrot
16:51 chromatic joined #parrot
16:54 pudge joined #parrot
16:54 dafrito joined #parrot
16:55 pudge left #parrot
16:59 cotto_work ~~
17:18 Paul_the_Greek It's whiteknight's birthday?
17:18 Paul_the_Greek purl,messages
17:19 Paul_the_Greek Happy birthday!
17:19 purl for (('to you', 'dear '.shift)[0,0,1,0]) { print "Happy birthday $_" }
17:20 Paul_the_Greek Are the internals Opcodes documents the only documentation of the operations?
17:21 dalek winxed: r589 | NotFound++ | trunk/winxedst1.winxed:
17:21 dalek winxed: some more constructor usages in stage 1 compiler
17:21 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=589
17:21 cotto_work which file are you asking about?  the inline POD in src/ops/*.ops?
17:22 Paul_the_Greek No, these: http://docs.parrot.org/parrot/latest/html/ops.html
17:22 cotto_work same thing
17:23 cotto_work that's generated from the inline POD
17:23 Paul_the_Greek Oh, right, of course.
17:23 Paul_the_Greek If I want to add some information about an operation, I should add it to the inline POD.
17:24 cotto_work yes
17:24 Paul_the_Greek Also, perhaps, to the PIR book.
17:24 Paul_the_Greek The PIR book has some semantics, but not all of it.
17:25 cotto_work the inline POD should be the priority but it's not a bad idea to update the book too
17:25 Paul_the_Greek Easy to do both.
17:26 dalek rakudo: 6b318ea | (Patrick Abi Salloum)++ | src/core/operators.pm:
17:26 dalek rakudo: removed a bunch of hopefully unneeded code
17:26 dalek rakudo: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
17:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​b318eabe6d6f5c988952244f2d282f7d8683813
17:27 cotto_work Heh.  "hopefully unneeded"
17:27 Paul_the_Greek But there is no other user-level description of the operations, right?
17:27 atrodo That instills a lot of confidence, doesn't it?
17:27 cotto_work There could be but the .ops file is always the first place I look.
17:28 PerlJam cotto_work: I think the ... operator was a little over specified in the code, so what was removed probably was unneeded.
17:32 Coke Paul_the_Greek: definitive guide for ops docs should be in the .ops files, yes.
17:32 Coke for docs about /the individual ops/
17:38 rurban_ joined #parrot
17:40 dafrito joined #parrot
17:55 dalek winxed: r590 | NotFound++ | trunk/winxedst1.winxed:
17:55 dalek winxed: delete return statements from constructors in stage 1 compiler
17:55 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=590
17:58 theory joined #parrot
18:13 Paul_the_Greek What is the proper procedure in SVN for removing a file from the status list once that patch has been committed?
18:13 bubaflub Paul_the_Greek: i'm not exactly sure what you mean
18:13 Paul_the_Greek When I do an svn status, I see a long list of every file I've changed.
18:13 Paul_the_Greek One of those files is now patched and committed, so I'd like it to disappear from the list.
18:14 cotto_work if the patch has been committed and you've run svn up, svn should figure out that the change has been applied both locally and remotely and dtrt
18:14 dalek winxed: r591 | NotFound++ | trunk/winxedst (2 files):
18:14 dalek winxed: avoid overwriting constructor arg when is reused as new's result
18:14 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=591
18:15 Paul_the_Greek update! Thanks. I have the Subversion book ready to take with me to the beach.
18:16 Paul_the_Greek It says that it skipped the file.
18:16 pyrimidine joined #parrot
18:18 bubaflub Paul_the_Greek: that means it worked, i believe
18:19 Paul_the_Greek Surely you jest ... hang on ...
18:20 Coke if you want to just throw out your local changes (assuming that everything was checked in on your behalf), you can run 'svn revert file.c' - that says "dump my changes, revert to the last copy I updated to"
18:21 Paul_the_Greek I want to keep the changes, but get it out of the status list.
18:21 cotto_work or svn revert -R . to clobber all local changes
18:22 cotto_work Oh.  You want git-svn then, which might be a bit much if you're learning svn.
18:22 Coke Paul_the_Greek: you can't do that.
18:22 Coke if you have local changes, they are going to show up in the status.
18:22 Paul_the_Greek Then what stops the status list from growing forever?
18:22 Coke Paul_the_Greek: You're doing it wrong. =-)
18:22 cotto_work getting stuff committed
18:22 Coke basically, yes.
18:23 Paul_the_Greek Okay, so I have a file committed. If I update, then my copy should match the latest committed copy and svn status shouldn't list it.
18:23 Coke that diff is the diff between what you have in your working copy, and the repository as it existed at whatever version you checked out/updated to.
18:23 cotto_work correct
18:23 Coke Paul_the_Greek: yes.
18:23 Paul_the_Greek Okay, so let me try an update ...
18:23 Coke if it was not an exact application of your patch, you might end up with a conflict or a meaningless diff that you can get rid of with teh revert command (be sure to specify a file)
18:24 Paul_the_Greek Yup, it insists on 'skipped'.
18:24 Paul_the_Greek Perhaps I need to specify a revision number?
18:24 cotto_work svn up will grab whatever's most recent
18:25 cotto_work you can specify a revision if you don't want that
18:27 Paul_the_Greek I tried another file and it was also skipped.
18:27 Paul_the_Greek Wouldn't it be nice if it said why?
18:30 cotto_work and they still show up in svn st?
18:31 Paul_the_Greek Oh ho! I removed the 'http://svn.parrot.../trunk' and it worked.
18:31 Paul_the_Greek Oh yes, now we're cooking.
18:31 cotto_work you only need to specify that when you do the initial checkout
18:32 cotto_work but you seem to have found that out
18:32 Paul_the_Greek Indeed I have.
18:33 Paul_the_Greek And revert works if I want to dump my change.
18:33 Paul_the_Greek This is lovely.
18:33 Paul_the_Greek Thanks again, folks.
18:34 cotto_work I find it interesting that you've already run into one of svn's limitations.
18:35 Paul_the_Greek After three days I had made two unrelated sets of changes.
18:35 Paul_the_Greek I quickly realized that the svn status list was going to be confusing.
18:36 Coke I tend to have multiple checkouts when doing unrelated things in svn.
18:36 Paul_the_Greek Here's a related question: I've checked in another patch, the first of two for the same ticket.
18:36 * PerlJam tends to use git-svn  :)
18:37 Paul_the_Greek If I put a comment on the ticket that says that the first patch can go in any time, is that the right way to indicate that it's unrelated to the second patch?
18:37 * atrodo tends to avoid svn and cvs at all costs
18:37 Paul_the_Greek Subversion is not getting the mad props here.
18:37 PerlJam atrodo: really?  at *all* costs?
18:37 cotto_work karma svn
18:37 purl svn has karma of -62
18:37 cotto_work there you go
18:37 cotto_work karma cvs
18:37 purl cvs has karma of -49
18:38 cotto_work karma git
18:38 purl git has karma of 310
18:38 Paul_the_Greek Okay, so when are we converting?
18:38 bubaflub Paul_the_Greek: i use git at work, and use separate checkouts of git-svn and svn for Parrot
18:38 atrodo PerlJam> As much as I can.  Sadly, we use cvs for our primary product at work :(
18:38 Paul_the_Greek Is git-svn a git front end for svn or an svn front end for git?
18:38 bubaflub atrodo: that is sad.  i had to use cvs for this year's GSoC for the first time
18:38 PerlJam atrodo: so ... at all costs except for finding a new job?  :)
18:39 Coke Paul_the_Greek: the former.
18:39 purl the former is a Key and the latter is a STRING
18:39 bubaflub Paul_the_Greek: it allows you use to checkout a SVN repo but with some git features like easy branching
18:39 Coke so if you want to pretend it's git locally but use an svn backing store...
18:39 cotto_work I need to make the github plugin for trac smart enough to map between svn revision numbers and git hashes and convince myself and others that the code is stable.
18:39 atrodo PerlJam> Nope, Just waiting for the day when we do convert to git.  I was able to convert the office to git, so it's only a matter of time
18:39 Paul_the_Greek Got it. I'll have to look into it. Can I just switch to it without any troubles?
18:40 cotto_work (I was going to roll my own but the github plugin does most of what I need already.)
18:40 cotto_work Paul_the_Greek: http://trac.parrot.org/par​rot/wiki/git-svn-tutorial
18:41 AndyA joined #parrot
19:32 Paul_the_Greek Am I right in thinking that this is out-of-date: http://docs.parrot.org/parrot/latest/htm​l/docs/pdds/draft/pdd05_opfunc.pod.html
19:32 chromatic Probably so.
19:33 Paul_the_Greek Another documentation job for me.
19:33 Paul_the_Greek I'm thinking I'll have job security for awhile.
19:34 Paul_the_Greek The cool thing about these small ticket jobs is that I can learn pieces of the system without breaking anything too badly.
19:39 cotto_work The nice thing about breaking things badly is that you don't forget what you learn.
19:40 Paul_the_Greek Well, I've broken make bootstrap-ops, so I'm about to learn something.
19:40 atrodo Or forget the humiliation
19:40 purl atrodo, I didn't have anything matching humiliation
19:40 cotto_work yes you are
19:41 Paul_the_Greek A pir file is including a nonexistent pasm file. So I must have to make some other thing first.
19:42 cotto_work If needed, you can revert src/ops/core_ops.c and include/parrot/oplib/core_ops.h to get a buildable parrot from which you can bootstrap the ops
19:42 cotto_work which one?
19:43 Paul_the_Greek ext/nqp-rx/src/stage0/Regex-s0.pir is attempting to include cclass.pasm.
19:43 cotto_work you need to have a fully built parrot before you can run bootstrap-ops
19:43 cotto_work that file should be generated as part of the build
19:43 Paul_the_Greek I did a make clean; does that delete it?
19:44 tcurtis joined #parrot
19:44 cotto_work "it"?
19:44 purl i heard "it" was mssql, microsoft_sql_server, or sybase?
19:44 Paul_the_Greek cclass.pasm
19:45 cotto_work I think that'll be clobbered by clean
19:45 Paul_the_Greek I'll do a full make, then the bootstrap-ops.
19:45 cotto_work yup
19:46 Paul_the_Greek If I then add an op, is bootstrap-ops sufficient get it into the system?
19:46 cotto_work The reason it's goofy like that is to avoid circular dependencies.
19:46 cotto_work dynop or core?
19:46 Paul_the_Greek The word "bootstrap" implies perhaps there's a second step.
19:46 Paul_the_Greek Core.
19:46 cotto_work yes
19:46 cotto_work make && make bootstrap-ops should do it
19:47 [1]Casan joined #parrot
19:47 Paul_the_Greek bootstrap-ops failed.
19:48 Paul_the_Greek Oh, I added something to ops.skip that is not being built. I wonder if that's it. Let me clean that out.
19:48 luben good day
19:48 purl every day above ground is a good day or I love the smell of napalm in the morning. It's the smell of victory.
19:48 cotto_work hio luben
19:49 * cotto_work wonders if we could somehow use an installed parrot to get around the bootstrap-ops issues
19:50 luben I have sent to the mailing list a patch for moving the checks for constant hashes in corresponding PMCs
19:54 GeJ Bonjour everyone.
19:54 luben This is good for encapulation and code locality because hash datastructure does not have to know who is using it
19:55 Paul_the_Greek Okay, did a make and all is well.
19:56 Paul_the_Greek Then I added some ops to math.ops and did a make bootstrap-ops.
19:57 Paul_the_Greek Get an error in runtine/parrot/library/PGE.pbc: Error -1073741819
19:57 cotto_work Paul_the_Greek: can you nopaste your diff?
19:57 Paul_the_Greek Hang on...
19:57 purl i heard Hang on... was also
19:59 Paul_the_Greek Nopaste is something I need to install, right?
19:59 cotto_work nopaste?
19:59 purl it has been said that nopaste is http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or http://paste.scsys.co.uk or http://www.extpaste.com or http://gist.github.com or App::Nopaste or http://codepeek.com/paste/ or (: pastebot)
19:59 chromatic It's a website.
19:59 Paul_the_Greek I'll have to get that tonight.
19:59 cotto_work the script may require some Perl modules to function
20:00 Paul_the_Greek Is it okay to dump it in here?
20:00 cotto_work can you use the nopaste web interface?
20:00 cotto_work http://nopaste.snit.ch/
20:00 Paul_the_Greek Fascinating ...
20:01 atrodo So what's the differance between nopaste on port 80 and port 8001?
20:01 nopaste "Paul_the_Greek" at 192.168.1.3 pasted "Diff" (36 lines) at http://nopaste.snit.ch/22700
20:01 Paul_the_Greek Okay, that's just too cool.
20:02 cotto_work If you like to see more text, you can run ./ops2c --core directly
20:03 cotto_work seems to work fine for me so far
20:03 Paul_the_Greek What works fine?
20:04 cotto_work nm.  The build seems to be lta about pbc compat, which would be a concern when adding or removing ops.
20:05 Paul_the_Greek 1ta?
20:05 cotto_work lta?
20:05 purl hmmm... lta is less than adequate, see also http://acronyms.thefreedictionary.com/LTA or "Less Than Awesome" in Rakudo world :)
20:05 Paul_the_Greek Thank you, purl.
20:05 Coke cotto_work: I don't want to have to rely on an installed parrot to develop parrot.
20:05 cotto_work make bootstrap-ops && make clean && make should work
20:06 Paul_the_Greek PGE.pbc got rebuilt just like the rest of pir files.
20:06 Paul_the_Greek It was just bootstrap-ops that failed.
20:06 Coke \o/ Got over work hurdle #4 of several thousand.
20:06 Paul_the_Greek You're on your way, Coke.
20:07 cotto_work However, we're generally trying to reduce the number of core ops.  Why do you want to add more?
20:07 Paul_the_Greek We talked yesterday and decided that we should have ceil, floor, round, and truncate. There's a ticket for round.
20:08 Coke joined #parrot
20:08 PerlJam round?
20:08 purl rumour has it round is great because you don't hit it with my thumb while you're typing
20:08 PerlJam What rounding semantics?
20:08 Paul_the_Greek Round toward nearest integer; .5 rounds away from zero.
20:09 chromatic luben, your patch improves Rakudo startup by 1.293%
20:09 cotto_work luben++
20:09 luben :) great
20:09 Coke luben++
20:09 Coke (is he in credits?)
20:09 luben it makes checks only when it need
20:09 luben not for all hashes
20:10 PerlJam Paul_the_Greek: why not evens up, odds down on .5 ?  (that's what IEEE recommends IIRC)
20:10 Coke PerlJam: ew.
20:10 PerlJam (or something like that.  maybe it's evens down, odds up)
20:10 Paul_the_Greek Yes, that's to distribute probabilities better.
20:11 Paul_the_Greek I'm just using C's round(), but we could get fancier.
20:11 Paul_the_Greek Or we could decide not to add round.
20:11 PerlJam C implementations haven't been known for consistency in semantics
20:11 Paul_the_Greek Something for the HLL to deal with.
20:12 PerlJam (look at how many implementations think of % as "modulus" and how many think of it as "remainder")
20:12 Paul_the_Greek We could simply state that .5 rounding is arbitrary.
20:12 Paul_the_Greek Don't get me started about %.
20:12 chromatic made fill_params a lot more expensive though
20:13 Paul_the_Greek Are we tending to think that the HLL should worry about round?
20:13 luben chromatic, my patch?
20:13 PerlJam Paul_the_Greek: round is something that's always struck me as fiddly.  Different people have different expectations for whatever reason, so it's best to either leave it out or say "we follow the XXX standard"  (IMHO and that's all I have to say about the matter  :)
20:15 cotto_work is this idea of any use: http://rusty.ozlabs.org/?p=89 (using the bottom few bits of a pointer to store a few bits of the hash value, allowing faster failure in some cases)
20:15 chromatic yes, luben
20:15 chromatic Not sure why.
20:16 luben I also. I have moved the checks in hash.pmc and dynlexpad.pmc
20:16 luben may be because now I check for const PMC key
20:17 chromatic It may just be moving things around.
20:17 Paul_the_Greek Should we do the world a favor and implement round .5 to even? Or forget round? Opinions?
20:18 Tene my inclination is to leave rounding out of the parrot base.
20:18 Tene let HLLs add a round function if they want one.
20:18 chromatic I'll apply your patch now luben.  I'd like to reduce the duplication in the exception checks in Hash though.
20:19 Coke as an HLL author, I have no need of a round opcode.
20:19 Coke and if I did, it's dead simple to make a dynamic one.
20:19 Paul_the_Greek Do you provide it in the HLL, Coke?
20:20 Coke http://www.tcl.tk/man/tcl8​.5/TclCmd/mathfunc.htm#M29 - it's a function, so i have to make it a .sub anyway.
20:20 Paul_the_Greek Languages without all four rounding functions bother me, but maybe that's just me.
20:21 Paul_the_Greek Oh, you have it. Excellent. :D
20:21 Coke (tcl has round, entier, ceil, and floor functions)
20:22 Paul_the_Greek entier is truncate?
20:22 Paul_the_Greek Okay, so let's abandon the round operator. I'll skip truncate, too, then, since assignment is defined as truncating.
20:23 Paul_the_Greek We can always change our minds later.
20:23 cotto_work We've certainly done so in the past.
20:23 luben chromatic, does fill_params use in some manner hash PMC?
20:25 chromatic Checking.
20:25 luben I am making now a version that not checks PMC keys (the old behaviour)
20:26 chromatic get_params uses the CallContext PMC (which contains a hash) and uses a Hash PMC.
20:26 chromatic Sorry, fill_params.
20:27 Coke msg Andy - there certainly does not seem to be any discussion of perl in #perl.
20:27 purl Message for andy stored.
20:28 Andy Not that I could see, no.
20:28 Andy I was also not inspired by the /topic of SCREW PROFESSIONALISM.
20:28 luben ok, posting to the mailing list a patch with the old behavour
20:32 dalek parrot: r48418 | chromatic++ | trunk (5 files):
20:32 dalek parrot: [hash] Moved hash constant checks to Hash PMCs.
20:32 dalek parrot: This also allows the removal of the container element of the hash struct, a 9%
20:32 dalek parrot: size savings.  Patch courtesy Luben Karavelov.
20:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48418/
20:32 dalek parrot: r48419 | chromatic++ | trunk/src/hash.c:
20:32 dalek parrot: [hash] Added another STRING hashing optimization.
20:32 dalek parrot: This offers a modest improvement to the Rakudo startup benchmark.
20:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48419/
20:35 Paul_the_Greek Okay, next opinions: We have cosine. Should we add cotangent and cosecant?
20:37 cotto_work Many of our math ops are something of a leftover from when the Parrot developers were less selective about what they added to Parrot.
20:37 cotto_work Such functions are best left in a dynop lib
20:38 Paul_the_Greek All six basic trig functions seems reasonable, though.
20:38 Paul_the_Greek Oh yes, they would be dynops.
20:39 Paul_the_Greek We have every trig function except those two, it appears.
20:39 Paul_the_Greek I suspect they weren't implemented because there are no C functions for them.
20:40 Paul_the_Greek Ah, there are others for which there are no C functions.
20:41 Paul_the_Greek I proclaim that we should add the missing two, since we have the rest.
20:45 jdv79 left #parrot
20:45 Austin seen tcurtis?
20:45 purl tcurtis was last seen on purl 1 hours, 1 minutes and 6 seconds ago, saying: <private message>
20:46 tcurtis Austin: hi.
20:47 Austin Hey. I don't know if you've already got this (probably), but  7  assign $P0, "string"   ;   set S0, $P0    seems like a good optimization candidate.
20:47 Austin *$S0
20:49 Austin It comes out whenever I call a pir:: opcode function that has a 's' signature parameter.
20:49 tcurtis Austin: I'll look into that.
20:49 dalek parrot: r48420 | chromatic++ | trunk/src/pmc/callcontext.pmc:
20:49 dalek parrot: [PMC] Reduced PMC autoboxing in CallContext.
20:49 dalek parrot: Removing unnecessary autoboxing of PMCs in two places improves PCC performance
20:49 dalek parrot: by a modest amount.
20:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48420/
20:50 Austin Good enough. I don't know if your stuff is at the right level, but it's sitting on the screen bugging me right now, so I thought I'd share the aggravation...
20:54 tcurtis I suspect that would probably need to be done at the POST level, which I'm not very familiar with, or in PAST::Compiler, but I'll look and see if I can come up with a way of optimizing that away.
20:58 Paul_the_Greek I gotta say, being able to add tests to a .t file and then just run it with prove is quite nice.
20:59 cotto_work definitely one of the good things we inherited from the Perl community
21:02 Austin Tcurtis: I don't know if it helps, but the whole thing falls in the category of "put a literal string in the code, and eventually pass at literal string in an S register to an op"
21:02 Austin But NQP is processing it as "make a String pmc, set the value from this literal, convert the PMC to an Sreg, pass the Sreg"
21:07 luben Does IMCC use garbage collected memory?
21:10 chromatic Sometimes.
21:12 wagle joined #parrot
21:13 luben aha, I see. I was wondering what was the need for parrot_chash_destroy functions that are used by imcc
21:13 chromatic That's the "sometimes not" part of the answer.
21:13 luben yes :)
21:15 sorear "prime hash sizes are just better" seems to be a pretty widely held beleif
21:17 NotFound sorear: many books says that hashing is an art, which usually means "we copy what other do without understanding it" }:)
21:20 whiteknight joined #parrot
21:22 dalek parrot: r48421 | NotFound++ | trunk/src/hash.c:
21:22 dalek parrot: ugly cast to make c++ happy without too much changes
21:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48421/
21:24 mj41 joined #parrot
21:26 * PerlJam goes with whatever Knuth says about hashing  :)
21:28 Austin whiteknight: got your message. I've got the t/ tests passing (not recursive, just t/) and amd starting on t/Parrot right now (including Nqp)
21:28 Austin I think I'll skip Multisub, though
21:31 Paul_the_Greek Power-of-2 hash table sizes are bad if the hashing function is bad.
21:34 chromatic I have the impression our hashing function is bad.
21:34 Paul_the_Greek Imagine lots of things hashed to xxx101 and the hash table size was 8.
21:34 Paul_the_Greek I think it's a black art.
21:34 chromatic Maybe we should annotate our hashes and run Rakudo to see how many collisions and the hash size and the bucket length.
21:35 Paul_the_Greek Using a prime size fixed that problem.
21:35 Paul_the_Greek Or save a list of hash values and run a distribution test.
21:36 sorear today's crazy idea: I wonder what effect hash-consing our strings would have
21:36 atrodo chromatic> that hasn't been done yet?
21:37 whiteknight atrodo: not in years, if it has ever been done
21:37 Austin ping whiteknight
21:37 whiteknight pong Austin
21:37 Austin Ah, there you are.
21:38 chromatic I'm running Rakudo with annotations now.
21:38 Austin This $*FileSystem thing - something is wrong. You should definitely have it defined.
21:41 Paul_the_Greek What is hash-consing?
21:43 whiteknight Austin: yeah, I haven't had any chance to track this down yet
21:44 whiteknight I don't think I am using kakapo's Program thingy, if that makes any difference
21:44 Austin It doesn't - this should be taken care of by the :load code when you bring the library on board.
21:45 nopaste "chromatic" at 192.168.1.3 pasted "Hash annotation code" (54 lines) at http://nopaste.snit.ch/22703
21:45 perlite joined #parrot
21:45 bubaflub joined #parrot
21:46 whiteknight Austin: I'm going to try it again soonish. I think chromatic++ fixed my build errors from last night so I can get rolling on that project again
21:46 Austin woot
21:46 whiteknight ...and it appears he did. chromatic++
21:48 Austin Man, sometimes fortune-telling is just too easy.
21:48 Austin Russian man jailed for assaulting fortune teller who predicted he would go to jail
21:48 Austin http://www.thaindian.com/newsportal/odd-news/rus​sian-man-jailed-for-assaulting-fortune-teller-wh​o-predicted-he-would-go-to-jail_100409679.html
21:48 chromatic In return, whiteknight gets to work on performance improvements in Parrot proper!
21:49 darbelo joined #parrot
21:49 whiteknight chromatic: As soon as I get PLA working again, that's what I plan to do
21:49 whiteknight unfortunately, I've had to spend all my available tuits getting Kakapo and now PLA working after the recent upheavals
21:56 sorear Paul_the_Greek: Hash consing is when you keep a weak-ref hash table of all immutable objects in the system, keyed by their constants
21:56 sorear pioneered on some lisp variant with immutable cons cells
21:56 sorear but if we used it, it would be on strings
21:57 Paul_the_Greek Aha.
21:58 chromatic For fast interning?
21:58 darbelo Didn't bacek try that already in a branch?
21:59 chromatic Sort of yes and no.
22:03 darbelo My recollection is vague, but I think it ended up not being enough of an improvement to merge back.
22:03 darbelo or being not an improvement.
22:09 chromatic Instead of using a hash for the constant string cache, we tried an AVL tree.
22:11 darbelo Oh, right. The avl_string_cache branch.
22:11 darbelo It's still in svn.
22:22 sorear The point of the constant string cache was smaller packfiles and faster loading using less memory
22:23 sorear string hash consing, aka forced interning, would mostly benefit iseq_i_s_s and string-keyed hash tables
22:23 luben chromatic, I made a quick test, rewrote a hash_expand to not depend on power of 2 table size
22:23 sorear PCT uses quite a few of the latter
22:24 luben it is a performance hit, but not severe (from 660ms to 680ms on parrot startup)
22:25 luben I could work on all other places that depend on power of 2 rule
22:25 luben to see if we can regain this loss
22:25 jsut_ joined #parrot
22:26 luben when using prime numbers as table size
22:26 cotto_work if nothing else, encapsulating that assumption is a good idea
22:27 luben it is encapsulated in hash data structure
22:49 chromatic http://www.perl.com/pub/2010/08/peopl​e-of-perl-6-jonathan-worthington.html
22:51 darbelo Oh, new perl.org, I had missed that.
22:51 cotto_work com is the new org?
22:54 luben chromatic, I have done the test: changing "key & mask" to "key % size" is a performance hit - from 680ms to 760 on rakudo startup
22:55 luben further, I have made version with resize vector with numbers
22:55 luben prime numbers
22:55 purl prime numbers are 2, 3, 5, 7, 11, etc. or at http://mathworld.wolfram.com/PrimeNumber.html or approximate a logarithmic spiral at http://www.maths.ex.ac.uk/~m​watkins/zeta/crudespiral.htm
22:55 luben yes
22:56 luben I am using in the test these numbershttp://pastebin.com/2UtsLmWp
22:56 luben http://pastebin.com/2UtsLmWp
22:57 luben but there is no gain
22:57 chromatic Do you know if it's resizing or key comparisons that gets more expensive?
22:58 luben key comparison
22:58 luben but it is done in resizing too
22:58 luben thats because '&' is now '%'
22:59 luben it seems to be more expensive
22:59 chromatic It's hard to believe that's some 10% more expensive.
23:00 sorear luben: how about (key * 0x9e3779b9ul) & mask?
23:00 luben when testing with resize vector, rakudo startup time goes from 760 to 780 (because lookup the exact prime number on resizing)
23:01 sorear er. >> (32 - hashbits)
23:02 luben sorear, please explain
23:03 luben "key * some_number" will make colisions more common
23:05 sorear 0x9e3779b9 is 0.32 fixed point of a random irrational number (specifically the golden ratio, which has only 2s in its continued fraction expansion)
23:05 chromatic In theory then, every bit acts as a binary sieve?
23:06 sorear scaling hash values by that will cause hash values like 0, 5, 10, ... to become equidistributed modulo 2^k
23:06 sorear What's a binary sieve?
23:07 chromatic Half of keys have 0 for a given bit and half of keys have 1 for a given bit.
23:07 whiteknight Austin: where is $*FileSystem defined?
23:07 Austin Program.nqp
23:08 luben sorear, the actual formula we use is more complicated: (key ^ seed) & mask
23:08 Austin my $instance := FileSystem.instance
23:08 Austin and the next line
23:08 purl END OF LINE.
23:08 sorear luben: uhh.  that is hilariously broken.
23:09 sorear (key ^ seed) & mask == (key & mask) ^ seed
23:09 sorear so the seed doesn't actually do anything at all to prevent hash collisions
23:09 sorear I hope there's more to it than that
23:09 luben no, there isn't
23:10 whiteknight Austin: that line sets $FileSystem, not $*FileSystem
23:10 Austin Welcome to Perl6
23:11 luben this is used for comparing pointers, int and pmc keys
23:11 Austin $*Foo means "$Foo in some caller context, or <something something something>"
23:11 sorear $*Foo means (my $*Foo) in some caller context, or $PROCESS::Foo
23:12 sorear or $Foo in  the root namespace
23:13 * Coke wonders how to do $P0['thing'; 1] in NQP.
23:13 Austin Coke: Using kakapo?
23:13 luben ops, (key ^ seed) is used only on keys and pointers. on pmc we delegate to vtable
23:14 Coke Austin: I have the nqp-setting.
23:14 nopaste "Austin" at 192.168.1.3 pasted "for whiteknight++: Foo" (35 lines) at http://nopaste.snit.ch/22704
23:14 Austin Coke: Sucks to be you.
23:15 Austin You can do $var{$key} in nqp.
23:15 Austin You just need to generate a key like [thing;1]
23:15 Austin Which requires some PIR.
23:15 Austin (A *lot* of pir, actually.)
23:16 jsut joined #parrot
23:17 Austin Coke, have a look at http://gitorious.org/kakapo/kakapo/​blobs/master/src/Pmc/Key.nqp#line35
23:18 Austin Alternatively, if you're just trying to do, say, get-caller, then go ahead and hard code the key in an inline pir block
23:18 Coke Austin: yup, not worth it when I can do one line of Q:PIR.
23:18 Coke Hopefully something like that will make it into the nqp-setting.
23:19 Austin Dude, kakapo *is* the nqp setting.
23:21 Coke Austin: ... no, there's an nqp-setting.
23:21 Coke it landed while you were away.
23:21 Austin Whiteknight: Anyway, either you say "my $*FileSystem := x" in your code somewhere, or the Program sets root global [ 'parrot'; '$FileSystem' ] to point to whatever. And NQP finds it.
23:22 Austin Coke: Yeah, I saw that. nqp setting is "a runtime library for nqp". and kakapo is "a runtime library for nqp". Aside from the standard project NIH, I'm not sure why we needed two.
23:22 Coke http://github.com/perl6/nqp-​rx/tree/master/src/setting/
23:23 Coke I can't answer that, but in the absence of a good package handler for parrot modules, having it /in parrot/ is most helpful.
23:26 cotto_work My take was that we wanted something lighter than Kakapo.
23:26 Austin Ahh. Like kakapo_base.pir
23:26 Austin :)
23:27 Austin What's the story on the setting library. Does it get automatically loaded, or what?
23:28 kid51 joined #parrot
23:28 cotto_work no.  It has to be loaded manually.
23:31 cotto_work more minimal than kakapo_base
23:32 cotto_work afaict it's a bunch of stuff that'd end up getting rewritten anyway in projects using nqp
23:46 _dolmen_ joined #parrot
23:49 ruoso joined #parrot
23:52 tcurtis joined #parrot
23:53 dngor_ joined #parrot
23:57 whiteknight Austin: another question hich should be obvious: does NQP use an HLL? That is, does "pir:set_hll_global__vSP" in NQP set $FileSystem in the root namespace or in a local HLL namespace?
23:57 Austin 'parrot'
23:57 purl 'parrot' is a valid make target
23:58 * Coke points at #1737 for chromatic.
23:58 Austin If you want to do anything involving a *_root_* opcode, use [ 'parrot'; ...]
23:59 workbench joined #parrot
23:59 whiteknight Austin: The reason I ask is this: If I replace $*FileSystem in Nqp.compile_file() to be "FileSystem.instance" instead, PLA's test suite runs
23:59 whiteknight with "$*FileSystem", I get the contextual not found error

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced