Camelia, the Perl 6 bug

IRC log for #parrot, 2010-09-17

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 Paul_the_Greek If we trust the sizes, then we ought to be able to define the casting macros and complain if we can't.
00:00 mikehh left #parrot
00:01 NotFound Paul_the_Greek: the non uppercase names at one point was the recommended way for extenders.
00:02 Paul_the_Greek Yes, they look official.
00:03 NotFound Then people started to worry about why some header files looked different and were not headerized, and all changed.
00:04 whiteknight left #parrot
00:15 mikehh_ is now known as mikehh
00:15 mikehh opbots, names
00:22 nwellnhof joined #parrot
00:23 Paul_the_Greek left #parrot
00:28 nwellnhof the stress strings performance "regression" was probably caused by r48585. it changed the GC threshold back to a more conservative value.
00:29 pmichaud git bisect says that rakudo's unicode failures started with r49018
00:29 nwellnhof pmichaud: then it's my fault :(
00:30 chromatic The loss of encoding information, or an off by one error?
00:30 nwellnhof what are the failures exactly?
00:30 pmichaud I don't know what the actual problem is.
00:30 pmichaud nwellnhof: some utf8 strings aren't being managed properly.
00:30 pmichaud here's an example:
00:31 pmichaud http://gist.github.com/583439   # example failure with r49018
00:31 pmichaud note the o+diaeresis at the end of the variable name
00:31 pmichaud if that variable name is made longer, it works
00:32 nwellnhof i think i found the problem.
00:32 pmichaud so it sounds like a length calculation error somewhere
00:32 nwellnhof strings from concat get the wrong encoding.
00:33 nwellnhof fix is coming up...
00:34 theory left #parrot
00:34 nwellnhof pmichaud: since a week or so, i get an infinite loop in Rakudo's make spectest
00:35 nwellnhof somewhere in S03
00:35 pmichaud can you narrow it down a bit further than that?
00:35 pmichaud are you running tests in parallel?
00:36 nwellnhof i have to retest, wait a little...
00:36 pmichaud btw, this comment:
00:36 pmichaud +    /* PObj is a copy of a string that doesn't own the string buffer */
00:36 pmichaud +    PObj_is_string_copy_FLAG    = POBJ_FLAG(10),
00:36 pmichaud worries me a lot.
00:36 nwellnhof why?
00:37 pmichaud does one string "own" a string buffer?  Is there something to prevent the string buffer from being reclaimed when the owner disappears and the copy still exists?
00:38 nwellnhof yes, there's exactly one string that owns a buffer. but it's not tied into the GC.
00:38 pmichaud when does the buffer get reclaimed?
00:39 nwellnhof by the GC. but that has nothing to do with the new string flag.
00:39 pmichaud okay.
00:40 nwellnhof the new string "ownership" only means that one string is allowed to extend its content into preallocated space.
00:40 pmichaud (not "okay, I understand and agree" but "okay, I'll take your word for it")
00:41 ruoso joined #parrot
00:41 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#66), fulltest) at r49073 - Ubuntu 10.10 beta {g++-4.5 with --optimize)
00:49 dalek parrot: r49074 | nwellnhof++ | trunk/src/string/api.c:
00:49 dalek parrot: [str] Set correct encoding in Parrot_str_concat
00:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49074/
00:51 nwellnhof pmichaud: i get an infinite loop when i evaluate (10 R... 1, 3)
00:53 nwellnhof test 33 in t/spec/S03-metaops/reverse.t
00:56 bacek_at_work nwellnhof, "rm -rf t/spec"
00:56 bacek_at_work Perl6 spectest was migrated to github.
00:57 bacek_at_work You probably have stale copy from Pugs svn
00:57 kid51 joined #parrot
00:58 nwellnhof that's it, bacek++
00:58 kid51 ~~
00:59 * kid51 studies Parrot Foundation documents
01:03 eternaleye_ is now known as eternaleye
01:31 dngor left #parrot
01:33 dngor joined #parrot
01:41 pmichaud r49074 needs a test, perhaps.
01:41 nwellnhof i just finished Rakudo's spectest
01:42 chromatic A test case in Parrot's suite.  What would trigger it?
01:42 nwellnhof t/spec/S05-mass/properties-derived.rakudo failed, but that always fails for me. seems to be related to the ICU library.
01:43 nwellnhof and the gray code test in t/spec/integration/99problems-41-to-50.rakudo failed.
01:43 nwellnhof #      got: '000 001 011 010 111 110 100 101'
01:43 nwellnhof # expected: '000 001 011 010 110 111 101 100'
01:44 nwellnhof ah yeah, a test case for r49074
01:45 nwellnhof i write one
01:53 pmichaud the 41-to-50 failure is a known failure
01:53 pmichaud I'll either fix or fudge it here in a bit.
01:54 pmichaud r49074 looks good here so far (up to S32-* tests)
01:55 kid51 r 49073 make fulltest PASS on Linux/i386
01:56 chromatic 49074 should be a little faster on the spectests, too.  Faster than 49000 anyhow.
02:20 Andy joined #parrot
02:20 kid51 left #parrot
02:24 davidfetter left #parrot
02:30 dalek parrot: r49075 | nwellnhof++ | trunk/t/op/string_cs.t:
02:30 dalek parrot: [str] Add test for r49074
02:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49075/
02:35 janus left #parrot
02:51 dalek TT #1535 closed by cotto++: trac+git demo site
02:51 dalek TT #1535: http://trac.parrot.org/parrot/ticket/1535
02:51 dalek rakudo: 2c8bb89 | pmichaud++ | build/PARROT_REVISION:
02:51 dalek rakudo: Bump PARROT_REVISION.
02:51 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​c8bb89b9d8efd4b5a5d748bd26b01d23f447723
02:52 bluescreen left #parrot
03:32 contingencyplan left #parrot
03:38 theory joined #parrot
03:38 gottreu joined #parrot
03:40 jsut_ joined #parrot
03:45 jsut left #parrot
03:56 janus joined #parrot
03:59 dalek TT #1477 closed by plobsing++: [embed] expose non-vararg-based sub/method call-ins
03:59 dalek TT #1477: http://trac.parrot.org/parrot/ticket/1477
04:03 plobsing roadmap?
04:03 purl rumour has it roadmap is to see parrot roadmap
04:03 plobsing parrot roadmap?
04:03 purl hmmm... parrot roadmap is http://icanhaz.com/parrotroadmap or http://trac.parrot.org/parrot/roadmap
04:06 plobsing where is that googledocs roadmap?
04:07 plobsing btw, the icanhaz.com link is 404
04:12 nwellnhof left #parrot
04:58 Khisanth left #parrot
05:01 Khisanth joined #parrot
05:04 jsut joined #parrot
05:08 jsut_ left #parrot
05:14 rurban_ joined #parrot
05:16 rurban left #parrot
05:16 rurban_ is now known as rurban
05:50 davidfetter joined #parrot
05:55 Andy left #parrot
06:05 plobsing left #parrot
06:13 gottreu left #parrot
06:16 chromatic left #parrot
06:34 uniejo joined #parrot
06:49 esskar left #parrot
06:52 esskar joined #parrot
06:58 pmichaud rakudo spectest times on r48933:  22m23s (real)   43m13 (user)
06:58 pmichaud rakudo spectest times on r49074:  20m06s (real)   38m46 (user)
06:58 pmichaud Excellent work, everyone.
07:38 * cotto is becoming more convinced that stealing speed.pypy.org would be a really good idea, if possible
07:38 cotto or speedcenter, as the software behind it is called
07:41 Tene pmichaud: rakudo.org/status hasn't been updated cince early July, looks like?
07:49 contingencyplan joined #parrot
07:49 fperrad joined #parrot
07:52 contingencyplan left #parrot
07:54 contingencyplan joined #parrot
07:55 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#74), fulltest) at r49075 - Ubuntu 10.10 beta (gcc-4.5)
07:55 contingencyplan left #parrot
08:01 contingencyplan joined #parrot
08:04 contingencyplan left #parrot
08:08 contingencyplan joined #parrot
08:09 contingencyplan left #parrot
08:12 contingencyplan joined #parrot
09:14 dalek parrot: r49076 | gerd++ | trunk/docs/project/release_manager_guide.pod:
09:14 dalek parrot: indicate to have run "make" with the old version number
09:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49076/
09:42 dalek wmlscript: 86a4ba4 | fperrad++ | dynext/pmc/wmls (5 files):
09:42 dalek wmlscript: logical VTABLES are gone, see http://trac.parrot.org/parrot/changeset/49012
09:42 dalek wmlscript: review: http://github.com/fperrad/wmlscript/commit​/86a4ba4e64596de98f8487f89f19524f887d69a3
09:48 dalek parrot: r49077 | fperrad++ | trunk/src/pmc (2 files):
09:48 dalek parrot: [pmc] honors HLL type
09:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49077/
10:35 ruoso left #parrot
11:04 fperrad left #parrot
12:02 whiteknight joined #parrot
12:06 lucian joined #parrot
12:06 uniejo left #parrot
12:10 contingencyplan left #parrot
12:22 ruoso joined #parrot
12:27 bluescreen joined #parrot
12:32 uniejo joined #parrot
12:43 dalek TT #1432 closed by whiteknight++: Remove 2-argument math ops
12:43 dalek TT #1432: http://trac.parrot.org/parrot/ticket/1432
12:52 dalek parrot: r49078 | whiteknight++ | branches/stdhandle_meths:
12:52 dalek parrot: Creating a branch to work on the issues raised in TT #264
12:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49078/
12:56 uniejo_ joined #parrot
12:56 uniejo left #parrot
12:58 patspam joined #parrot
13:14 rurban_ joined #parrot
13:16 rurban left #parrot
13:16 rurban_ is now known as rurban
13:18 Psyche^ joined #parrot
13:18 Patterner left #parrot
13:18 Psyche^ is now known as Patterner
13:26 dalek parrot: r49079 | whiteknight++ | branches/stdhandle_meths/src​/pmc/parrotinterpreter.pmc:
13:26 dalek parrot: delete the stdhandles method and add new stdin_handle, stdout_handle, stderr_handle methods
13:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49079/
13:26 dalek parrot: r49080 | whiteknight++ | branches/stdhandle_meths/compile​rs/pct/src/PCT/HLLCompiler.pir:
13:26 dalek parrot: update uses of stdhandle method in HLLCompiler.pir
13:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49080/
13:26 dalek parrot: r49081 | whiteknight++ | branches/stdhandle_meths/to​ols/dev/nci_thunk_gen.pir:
13:26 dalek parrot: update uses in nci_thunk_gen.pir
13:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49081/
13:38 dalek nqp-rx: 8009d57 | pmichaud++ | build/PARROT_REVISION:
13:38 dalek nqp-rx: Bump PARROT_REVISION.
13:38 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/8​009d573b8df6095d39b69142583d198c2c0ca50
13:38 dalek nqp-rx: c9a989b | pmichaud++ | / (2 files):
13:38 dalek nqp-rx: Fix negated zero-width enumcharlist at end of string (fixes issue #9 on github). Discovered by moritz++.
13:38 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/c​9a989bd5675f8d3dcd72bee817e494fdac0fcbe
13:38 dalek nqp-rx: ccc2e3f | pmichaud++ | src/stage0/ (4 files):
13:38 dalek nqp-rx: Update bootstrap.
13:38 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/c​cc2e3f65aec6352f85022f6b95c8b4c80088bb7
13:39 bluescreen left #parrot
13:41 uniejo_ left #parrot
13:43 NotFound whiteknight: ping
13:43 NotFound High frequency sonar
13:44 dalek parrot: r49082 | pmichaud++ | failed to fetch changeset:
13:44 dalek parrot: [nqp-rx]:  Update bootstrap with fix for negated charclass at end of string.
13:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49082/
13:45 davidfetter left #parrot
13:46 NotFound msg whiteknight See my last comment on TT #264 before investing more time and effort
13:46 purl Message for whiteknight stored.
13:46 aloha OK. I'll deliver the message.
13:46 dalek rakudo: ca4a1d6 | pmichaud++ | build/PARROT_REVISION:
13:46 dalek rakudo: Bump PARROT_REVISION.
13:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​a4a1d6ea874a72a6d7051ea021cc2945715de1a
13:53 bluescreen joined #parrot
13:57 whiteknight NotFound: I'm almost done anyway. It wasn't much effort.
13:57 whiteknight I would prefer methods on the interpreter object instead of the opcodes, so I'm going to argue for that. I can take the fight to the list if necessary
13:59 fperrad joined #parrot
14:00 atrodo If I do a search on trac for 264, ticket #264 is on the third page of three
14:11 NotFound whiteknight: please wait after the release.
14:14 davidfetter joined #parrot
14:17 dalek parrot: r49083 | fperrad++ | trunk/t/dynpmc/rational.t:
14:17 dalek parrot: [t] refactor with skip_all
14:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49083/
14:51 plobsing joined #parrot
14:53 jan left #parrot
15:08 mikehh atrodo: you need to specify #264 in the trac search and it goes straight there
15:09 atrodo Didn't realize the # was significant...
15:10 mikehh me either - until someone suiggested it
15:12 nwellnhof joined #parrot
15:14 * moritz typically tipes tt #264 on IRC, and follows the link in the IRC logs :-)
15:14 moritz *types
15:24 Andy joined #parrot
15:25 dalek parrot: r49084 | fperrad++ | trunk (2 files):
15:25 dalek parrot: [osutils] add rindex()
15:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49084/
15:25 dalek parrot: r49085 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
15:25 dalek parrot: [distutils] refactor mk_path_gen_dynpmc with rindex
15:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49085/
15:38 nwellnhof left #parrot
15:40 dalek roast: c19ab2c | KodiB++ | S02-builtin_data_types/set.t:
15:40 dalek roast: [set.t] Marked some tests as relevant to RT #77760.
15:40 dalek roast: review: http://github.com/perl6/roast/commit/c1​9ab2cee0bcc24da761264091f72c0f9729d634
15:42 dalek rakudo: da7c7f9 | KodiB++ | / (2 files):
15:42 dalek rakudo: Tweaked Set enough to let us pass set.t.
15:42 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​a7c7f9b3041f2217e53e0a8a1764258e455e21e
15:50 dalek TT #103 closed by whiteknight++: No self in PIR invoke VTABLE
15:50 dalek TT #103: http://trac.parrot.org/parrot/ticket/103
15:51 mikehh pmichaud: ping
16:10 jan joined #parrot
16:22 dukeleto hola hola hola
16:25 cotto ~~~
16:25 moritz rakudo: print ~('hola' xx 5)
16:25 p6eval rakudo ca4a1d: OUTPUT«hola hola hola hola hola»
16:28 pmichaud mikehh: pong
16:29 cotto nice to see some sparc smolder reports
16:29 lucian left #parrot
16:30 dukeleto cotto: indeed
16:31 whiteknight it's nice to see some passing sparc smolder reports
16:31 dukeleto touche!
16:32 * davidfetter hands dukeleto a few acute accents
16:37 rurban left #parrot
16:44 mikehh pmichaud: I am getting a codetest failure with ext/nqp-rx/src/stage0/HLL-s0.pir - pod syntax - I can fix it but that doesn't propogate
16:44 pmichaud ext/nqp-rx is supposed to be excluded from codetest, I thought.
16:44 pmichaud HLL-s0.pir is generated code.
16:46 mikehh it seems to have removed a =over 4 and a =back from the pod
16:47 mikehh pmichaud: I also thought we were going to remove stuff in ext/ from testing, but it seems to just take files from MANIFEST
16:48 pmichaud can you show a diff or context around the =over 4 and =back that are missing?
16:48 * pmichaud runs 'make codetest' locally to seek enlightenment
16:50 nopaste "mikehh" at 192.168.1.3 pasted "svn diff to get ext/nqp-rx/src/stage0/HLL-s0.pir to pass codetest" (22 lines) at http://nopaste.snit.ch/23414
16:51 dukeleto mikehh: that is generated code
16:51 dukeleto mikehh: it shouldn't have to pass codetest
16:52 chromatic joined #parrot
16:52 dukeleto mikehh: but, methinks it should have valid POD.
16:52 dukeleto chromatic: greetings
16:52 mikehh dukeleto: I agree, but the pod_syntax test seems to take files from MANIFEST
16:53 dukeleto mikehh: i can understand checking generated files for valid POD, but not any other code tests.
16:54 mikehh doesn't seem to fail or be run through any other tests
16:55 mikehh in fact it doesn;t run through some of the others
16:55 dalek nqp-rx: df8c49d | pmichaud++ | src/HLL.pir:
16:55 dalek nqp-rx: Add some pod directives to help out Parrot's "make codetest" target.
16:55 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/d​f8c49de9b75592a086e9a85e2025da3df81f2a4
16:56 chromatic aloha
16:57 chromatic I wonder of a very strict C or strict-ish C++ compiler would consider the PL/parrot "I haven't seen this function header!" warnings as errors.
16:57 chromatic s/of/if/
16:58 dalek TT #1755 closed by fperrad++: Include arbitrary .c and .h files in distutils dynpmc build
16:58 dalek TT #1755: http://trac.parrot.org/parrot/ticket/1755
17:00 dukeleto chromatic: possibly.
17:01 dukeleto chromatic: i am still working on getting you some more useful benchmark data
17:02 chromatic Thanks.
17:06 dalek parrot: r49086 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
17:06 dalek parrot: [distutils] allows .c & .h in dynpmc item, see TT#1755
17:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49086/
17:07 whiteknight fperrad++
17:07 whiteknight that's going to make some of the PLA configure code much much nicer
17:08 pmichaud Idle thought (as I head off to lunch):  Would there be some way to get Parrot to tell me how many references there are to a given PMC...?
17:08 pmichaud (could be calculated)
17:09 whiteknight at the moment: no
17:09 nwellnhof joined #parrot
17:09 pmichaud it could help in finding large data structures that would otherwise be release-able
17:09 moritz would that be useful?
17:09 whiteknight something that might be able to be instrumented with the instrumentation PMCs
17:09 jnthn pmichaud: I guess if the gc could be co-opted it could work.
17:10 jnthn pmichaud: Since it's essentially the same kind of walking
17:10 pmichaud moritz: sure.  For example, after we finish compilation, we don't need the parse tree or ast any longer.  But right now there's not any way to know what might be holding on to it.
17:11 moritz do you know if the parse tree is GC'ed?
17:11 whiteknight the problem is that right now we don't have any where to hold the count of incoming references
17:12 pmichaud moritz: I suspect it isn't being GC'ed.
17:12 whiteknight finding a way to add that information without adding an integer per PMC header is the challenge
17:12 moritz if we have custom destroy vtables, you maybe could find out
17:12 pmichaud whiteknight: I was thinking an opcode
17:12 pmichaud whiteknight: i.e.,    "count_refs $P0"
17:12 jnthn whiteknight: Maybe it should do something like the GC does, but not actually use the GC.
17:12 pmichaud which does a mark run, and keeps track of the number of times that $P0 was encountered
17:12 pmichaud and returns that value
17:13 chromatic How about stuffing fprintf() in the source code and post-processing the results?
17:13 whiteknight I think they want it on every run, in production
17:13 whiteknight not just as a benchmark
17:13 chromatic ... before anyone goes all crazy designing a framework for this sort of thing.
17:13 pmichaud I'm thinking as benchmark/debugging aid
17:13 jnthn whiteknight: It's more a debugging aid.
17:13 pmichaud not production
17:13 whiteknight oh, then I misunderstood
17:13 pmichaud or, perhaps even better -- a way to trace a mark run
17:14 nwellnhof some kind of general GC logging framework would be really useful
17:14 pmichaud yes
17:14 nwellnhof also for bug hunting
17:14 pmichaud it could be a dynop -- but something that runs through a mark phase and reports back the references/steps
17:14 pmichaud that could be *really* useful.
17:15 pmichaud anyway, time for lunch.
17:17 whiteknight Khairul's instrumentation PMCs could easily do a job like that
17:17 moritz are they merged to trunk?
17:17 whiteknight no, not yet.
17:17 chromatic Hang on, tracking mark isn't nearly that easy.
17:18 whiteknight When I suggested merging, I still thought that his GSoC project involved changes to trunk'
17:18 whiteknight instead, all his logic is neatly encapsulated into PMCs
17:19 moritz that's nice
17:19 whiteknight it is extremely impressive
17:20 whiteknight unfortunately, his project doesn't build at the moment
17:38 dukeleto whiteknight: what error do you get?
17:41 chromatic msg plobsing Some very careful inlining of code in Parrot_hash_thaw() could give Rakudo a ~8-10% startup performance improvement.
17:41 purl Message for plobsing stored.
17:41 aloha OK. I'll deliver the message.
17:56 dalek parrot: r49087 | nwellnhof++ | trunk/src/string/api.c:
17:56 dalek parrot: [str] Missing checks for end of string in Parrot_str_unescape_string
17:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49087/
17:56 dalek parrot: r49088 | nwellnhof++ | trunk (16 files):
17:56 dalek parrot: [str] Remove unneeded encoding header files
17:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49088/
18:00 chromatic Wow, 2.591%.
18:07 nopaste "chromatic" at 192.168.1.3 pasted "Refactoring parrot_hash_put improves hash thawing performance" (187 lines) at http://nopaste.snit.ch/23416
18:07 chromatic Needs documentation, but that's a sizable improvement of Rakudo startup.
18:08 dukeleto nice work!
18:08 chromatic It probably generalizes throughout hash.c.
18:12 whiteknight chromatic: that refactor nets 2.59%?
18:12 whiteknight that's pretty impressive
18:13 contingencyplan joined #parrot
18:13 chromatic When you work *with* C's type system and not against it, the optimizer kicks in.
18:16 nwellnhof i must be missing something. where are the type related changes in your patch?
18:16 chromatic Mostly in Parrot_hash_thaw.
18:16 chromatic Avoiding the "Is this a STRING key?" checks pays off.
18:17 nwellnhof ah, i didn't look there. i thought it had to do with splitting code out of parrot_hash_put.
18:18 chromatic Step one and step two.
18:18 nwellnhof yes, i see.
18:19 chromatic I'll write docs for the new static functions, then commit in two steps.
18:19 chromatic Anybody seeing failures in t/spec/S32-num/rat.rakudo, by the way?
18:19 nwellnhof and it even cleans up code, IMO
18:19 nwellnhof couldn't we use parrot_hash_get_bucket_string in parrot_hash_get_bucket, too?
18:20 fperrad left #parrot
18:21 chromatic Probably, and it probably is an improvement there too.
18:30 nwellnhof btw, parrot_hash_get_bucket_string *can* return NULL
18:30 chromatic Right.
18:32 dukeleto chromatic: what failures are you seetin in rat.rakudo ?
18:33 dukeleto chromatic: are you running it through fudgeall ?
18:33 chromatic I have an older Rakudo checkout.  I'll upgrade in a bit.
18:40 moritz remember to rm -rf t/spec/  to allow it to be replaced by a git checkout
18:41 chromatic That I had, fortunately.
18:48 chromatic So far so good, as the sanity tests all pass.
18:49 chromatic If I'd broken hashes, Rakudo probably wouldn't start correctly.
19:00 whiteknight I definitely think we can still squeeze more performance out of our hashes
19:01 whiteknight maybe not a hell of a lot more, but there's still some gold to mine
19:03 chromatic We're getting to the type-safe hash functions on the performance list.
19:05 plobsing ~~
19:09 chromatic moritz, dukeleto, the only failure I saw is t/spec/integration/99problems-41-to-50.rakudo
19:22 pmichaud 41-to-50 is a known failure.
19:22 pmichaud We should fudge it out for now.
19:22 * pmichaud does that.
19:23 chromatic Excellent.
19:24 pmichaud Done.
19:24 chromatic t/spec/S05-metasyntax/repeat.rakudo #14 was a passing TODO for me too
19:24 dalek roast: 39de0eb | pmichaud++ | integration/99problems-41-to-50.t:
19:24 dalek roast: Fudge out 41-to-50 gray code test until .reverse is settled.
19:24 dalek roast: review: http://github.com/perl6/roast/commit/39​de0eb13c0ab686881a5f60c02d016ffc222fe0
19:30 moritz pmichaud: actually it's a regression... you should file a ticket if you just fudge the test
19:34 pmichaud moritz: I wasn't convinced the original test was correct.
19:34 moritz pmichaud: I asked TimToady
19:34 pmichaud feel free to file a ticket then :)
19:35 moritz http://irclog.perlgeek.de/​perl6/2010-09-17#i_2837846
19:37 dalek parrot: r49089 | chromatic++ | trunk/src/hash.c:
19:38 dalek parrot: [Hash] Extracted two funcs from parrot_hash_put.
19:38 dalek parrot: parrot_hash_get_bucket_string() is a type-safe way to find a bucket in a hash
19:38 dalek parrot: given a STRING.
19:38 dalek parrot: parrot_hash_store_value_in_bucket() is a reusable way to store a value in a
19:38 dalek parrot: bucket after you've already fetched it.
19:38 dalek parrot: Both of these functions are static.  If you ever use them outside of this file,
19:38 dalek parrot: you will incur the wrath of premature optimization.
19:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49089/
19:38 dalek parrot: r49090 | chromatic++ | trunk/src/hash.c:
19:38 dalek parrot: [hash] Optimized Parrot_hash_thaw().
19:38 dalek parrot: Using the type-safe "Hey, I have a STRING key!" and "I have the bucket, now
19:38 dalek parrot: what?" functions from the previous commit in this hot path improves hash
19:38 dalek parrot: thawing for the most common case dramatically and Rakudo startup by some 2.5%.
19:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49090/
19:39 moritz is pir's  inc $I0  in-place?
19:42 whiteknight chromatic: I agree with you about the "pre-alpha" nonsense. What I suppose they meant to say was something along the lines of "preview" or "pre-release"
19:42 whiteknight or "first public display of code"
19:43 chromatic We already have good words for all of those things though.
19:43 chromatic "release"
19:43 purl "release" is probably pretty moot when only you and people that hack on it are using it
19:43 whiteknight chromatic: it's not really a release though
19:43 whiteknight not as I understand it
19:43 whiteknight they're just making their code public for the first time
19:44 chromatic Sure, but my argument is why bother?
19:44 whiteknight well, if it's an open-source project, the source needs to go "open" eventually
19:44 whiteknight that doesn't make it a release
19:45 whiteknight the whole statement on their part of it being a "pre-alpha" release was screwey. They used a weird buzzword when they should have said something completely different
19:45 chromatic If people can't use your code, there's no point in releasing-it-but-not-really.
19:45 chromatic That's pretty much a marketing game to prove that your code exists.
19:45 chromatic "Our code is worthless, but it does exist!  Hooray!  Punch line starts over there."
19:46 whiteknight they definitely should not have used the word "release". That is obviously a falsehood
19:46 whiteknight but you can't blame some over-eager, under-experienced college kids to get all the PR terminology right
19:47 whiteknight especially not on their first pre-alpha press release :)
19:47 chromatic No, they're just copying the prevailing... what's the opposite of wisdom?
19:47 whiteknight "Windows"
19:47 purl "Windows" is a trademark.  /.*windows.*/ is not
19:47 chromatic The sound and fury of crowds.
19:47 whiteknight cacaphony?
19:48 whiteknight cacophony*
19:48 chromatic I like the alliteration.
20:04 whiteknight left #parrot
20:33 dalek rakudo: a90ae93 | pmichaud++ | src/Perl6/Compiler.pir:
20:33 dalek rakudo: Restore '-c' option to check a program's syntax without executing it.
20:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​90ae93e76427b07c076b2aa68b6669ac77e0ee1
20:33 dalek rakudo: 9e46fe0 | pmichaud++ | src/core/Any-list.pm:
20:33 dalek rakudo: Set Any.reverse to flatten the invocant before reversing.
20:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​e46fe01f20c7705a663e80e20fb6dba9b5ce590
20:33 dalek roast: 1210d8f | pmichaud++ | integration/99problems-41-to-50.t:
20:33 dalek roast: Unfudge gray() test in 99problems-41-to-50.t .
20:33 dalek roast: review: http://github.com/perl6/roast/commit/12​10d8f90aad0955be29f48206c06911e15d2d0a
20:39 dalek rakudo: a204ba8 | moritz++ | src/core/Str.pm:
20:39 dalek rakudo: avoid calling .subst in str2num-rat
20:39 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​204ba831b96fb15d0189863afc158e9ce9d3e9c
20:39 dalek roast: 5b48fa0 | moritz++ | S05-metasyntax/repeat.t:
20:39 dalek roast: unfudge test for catching p5 style general quantifiers in regexes
20:39 dalek roast: review: http://github.com/perl6/roast/commit/5b​48fa056e3418bd35e1967378fa9b75881b79c2
20:43 plobsing chromatic: Parrot_hash_thaw, as an optimization opportunity rakudo, is mostly mined out. Most hashes thawed have 2 or fewer entries, and therefore, the loop behaviour is not that which dominates. Only deciding what is to be done matters there.
20:43 plobsing I even cheated and cached the vtable entry to call to no avail
20:44 jnthn plobsing: ooc, what's in those thawed hashes?
20:44 plobsing String => Int for lexpads.
20:45 plobsing a non-obvious optimization PCT could do is to lift lexicals to higher scopes where legal to bunch lexicals together more
20:45 plobsing that would create fewer hashes with more content, which should be faster
20:45 chromatic plobsing, the function calling overhead is actually significant there.
20:46 plobsing chromatic: which function calls?
20:46 chromatic Parrot_ImageIO_shift_integer and Parrot_ImageIO_shift_string.
20:47 plobsing that's how I cheated
20:47 plobsing fetch_entry = info->vtable->shift_{integer,string,pmc}
20:47 jnthn plobsing: ah, OK, makes sense.
20:48 chromatic Did you mark it const?
20:48 plobsing no. I could try. but it only gets assigned at the top, and the assembly doesn't appear to be reloading it.
20:49 chromatic My thought was to put all of these functions in their own source file and let a smart compiler figure it all out.
20:49 chromatic That'd make a huge mess though.
20:50 plobsing can't mark it const. apparently assigning in different branches of a switch don't count as single assignment only
20:52 chromatic You could make a fetch_string, fetch_integer, etc.
20:52 chromatic Even only optimizing for the STRING/int case is significant.
20:53 chromatic That's ~12% of startup time for Rakudo.
20:54 chromatic 10.75% now
20:55 nopaste "plobsing" at 192.168.1.3 pasted "[PATCH] vtable cheating" (79 lines) at http://nopaste.snit.ch/23419
20:57 chromatic To make it const, cheat: make a static function which returns the right value.
21:02 dalek parrot: r49091 | mikehh++ | trunk/ext/nqp-rx/src/stage0/HLL-s0.pir:
21:02 dalek parrot: fix codetest failure - tidy up pod syntax (this has been pushed upstream)
21:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49091/
21:04 bluescreen left #parrot
21:06 jnthn chromatic: 10.75% of our startup time is on hash thawing?
21:08 whiteknight joined #parrot
21:16 plobsing chromatic: did the const thing. didn't help much.
21:20 chromatic yes.
21:26 pmichaud this morning I discovered that rakudo startup accounts for 22.6% of "make spectest"
21:28 chromatic It's less now.
21:29 * pmichaud starts another set of measurement runs to find out.
21:34 davidfetter left #parrot
21:42 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#85), fulltest) at r49091 - Ubuntu 10.10 beta {g++-4.5 with --optimize)
21:42 davidfetter joined #parrot
21:45 hercynium joined #parrot
21:53 luben good evening people
21:53 whiteknight hello luben
21:55 luben chromatic++ # for hash thaw optimizations
21:55 patspam left #parrot
21:59 luben I do not think that our main problem now are hashes - we could squeeze max 5-10% perfirmance improvement from optimizations in hashes
21:59 luben If we make a better GC we could improve our performance orders of magnitude
22:01 plobsing ImageIO sucks. it converts between pointer into buffer and index within buffer and back for every item thawed.
22:01 luben may be this is too optimistic, gut working on the GC will pay better in terms of performance
22:02 plobsing that's why it shows up so high in the callgrind costs
22:03 luben plobsing, you are right
22:04 ruoso left #parrot
22:05 plobsing it needs rewriting. either to play nice with strings and be dog slow, or to cheat more with strings and be much faster.
22:09 pjcj left #parrot
22:09 preflex left #parrot
22:09 pjcj joined #parrot
22:10 cosimo left #parrot
22:10 cosimo joined #parrot
22:10 bluescreen joined #parrot
22:12 contingencyplan left #parrot
22:14 luben plobsing, about this dilema - there are talks, that we are going to refactor STRING storage, so cheating will be very temporal solution
22:14 luben We will need to change that again afres STRING storage refactor
22:16 luben now 75% of the hash_that is in ImageIO_shift_string/integer
22:16 bluescreen left #parrot
22:17 preflex joined #parrot
22:19 chromatic If a couple of hours of cheating now gives us a couple of percent of performance, that's worth it.
22:19 plobsing luben: ultimately, I want to get thawing packfiles completely away from strings. they're a PITA.
22:19 luben plobsing, I have same idea
22:19 jnthn I did some packfile stuff int he past and never really liked the use of strings there either, fwiw.
22:19 luben couldn't we rewrite it in terms of ByteBuffer
22:20 plobsing luben: um no. maybe a custom OpcodeTBuffer
22:20 jnthn I think the important thing is that whatever it's accessed as, it should be able to be pointed at a chunk of mmaped memory.
22:20 plobsing but another layer is another layer. it will be slower.
22:21 luben jnthn, +1 about mmaping
22:21 nwellnhof yeah, we have to cut down on layers.
22:22 nwellnhof what parts of the string API does packfile thawing use?
22:22 plobsing it just kinda begrudgingly uses the Buffer/STRING struct
22:23 plobsing it gets no benefit from strings
22:23 nwellnhof but that shouldn't be a performance problem
22:24 plobsing it is when they can be relocated under you and you have to keep checking against that
22:24 plobsing I'm rewriting to use pinned strings
22:24 plobsing the common case is the strings being external, which never move
22:27 baest_ joined #parrot
22:27 dalek parrot: r49092 | nwellnhof++ | trunk (9 files):
22:27 dalek parrot: [gc] Command line option for dynamic GC threshold
22:27 dalek parrot: The dynamic threshold roughly limits the memory wasted by objects that
22:27 dalek parrot: could be freed but are not yet collected to a percentage of total memory
22:27 dalek parrot: that is actually needed. Default is 25, maximum is 1000. Increasing the
22:27 dalek parrot: dynamic threshold results in fewer GC runs and more memory consumption.
22:27 dalek parrot: Usage:
22:27 dalek parrot: parrot --gc-threshold=50
22:27 dalek parrot: parrot --gc-threshold=200
22:27 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49092/
22:27 bluescreen joined #parrot
22:28 whiteknight nwellnhof: There was a ticket somewhere that requested that
22:28 nwellnhof was there?
22:29 dukeleto aloha, msg chromatic the stress_strings.pir slowdown happens after 2.7.0 and before r49088
22:29 aloha dukeleto: OK. I'll deliver the message.
22:29 cotto and parseflags_minimal becomes less so
22:30 preflex left #parrot
22:30 nwellnhof cotto: yeah, this is all a bit ad-hoc
22:30 nwellnhof but i can fix it if someone tells me how
22:30 dukeleto aloha, msg chromatic smaller range : the stress_strings.pir slowdown happens after 2.7.0 and before r48758
22:30 cosimo left #parrot
22:30 aloha dukeleto: OK. I'll deliver the message.
22:30 baest left #parrot
22:30 cosimo joined #parrot
22:31 sorear aloha, tell p6eval this is a test of cross-chatnet messaging
22:31 sorear aloha, msg p6eval this is a test of cross-chatnet messaging
22:31 aloha sorear: OK. I'll deliver the message.
22:31 aloha sorear: Okay.
22:31 aloha sorear: OK. I'll deliver the message.
22:31 aloha sorear: Okay.
22:31 nwellnhof dukeleto: try stress_strings.pir with r49092 and the new --gc-threshold option
22:32 dukeleto nwellnhof: what is --gc-threshold ?
22:32 whiteknight nwellnhof: TT #827
22:33 whiteknight I think --gc-threshold that you just implemented may satisfy that
22:33 sorear nqp: say(2+2)
22:33 p6eval nqp: OUTPUT«4␤»
22:33 whiteknight (or, come close)
22:33 nwellnhof it's a new command line options. r48585 changed that value from 50 to 25.
22:33 preflex joined #parrot
22:33 dukeleto nwellnhof: interesting
22:34 nwellnhof whiteknight: i think #827 is a bit different. it's about the total amount memory ever allocated.
22:34 nwellnhof gc-threshold is more like the relative amount of memory wasted
22:35 nwellnhof time ./parrot --gc-threshold 25 examples/benchmarks/stress_strings.pir
22:36 nwellnhof real    0m6.912s
22:36 nwellnhof time ./parrot --gc-threshold 100 examples/benchmarks/stress_strings.pir
22:36 nwellnhof real    0m5.352s
22:38 luben nwellnhof, ./parrot /usr/src/rakudo/perl6.pbc -e '' segfaults here after gc-treshild commit
22:38 sorear I am thinking that tell does not work at all ...
22:39 luben amd64,gcc-4.5 (now compiling with gcc-4.4)
22:39 nwellnhof luben: can you tell where it segfaults?
22:40 luben nopaste comming
22:40 pmichaud with r49091, rakudo startup takes 22.8% of total spectest time  (a greater percentage, but less overall time than r49074 took)
22:40 nopaste "luben" at 192.168.1.3 pasted "segfault" (34 lines) at http://nopaste.snit.ch/23421
22:41 luben this is on linux amd64, gcc-4.4
22:41 pmichaud overall spectests are 1.4% faster (17 seconds) with r49091 than r49074.
22:42 pmichaud (comparison between r49074 and r49091 could be different due to other factors.)
22:42 pmichaud (so might not be terribly meaningful at this level)
22:42 nwellnhof luben: that's strange. did you rebuild rakudo?
22:42 luben yes
22:42 luben I'll try again
22:43 luben ops, my fault... rakudo was reading installed files
22:43 luben sorry for the false alarm
22:43 nwellnhof no problem
22:46 patspam joined #parrot
22:46 patspam left #parrot
23:02 luben my fast tests here showed that default gc-threshold of 25 is too conservative
23:04 luben here is a quick chart http://luben.spnet.net/gc-threshold.png
23:04 luben measured is rakudo startup time
23:05 nwellnhof luben++ # for his fast charting skills
23:06 nwellnhof a more GC-heavy benchmark would be more interesting though
23:06 luben what i could test ?
23:07 nwellnhof maybe examples/benchmarks/stress_strings.pir
23:08 luben ok. coming in a minute
23:08 plobsing luben: is that benchmark time? how does memory consumption go?
23:08 luben plobsing, yes, this is time... not measured mem consumption
23:08 nwellnhof is there an easy way to measure maximum memory consumption?
23:09 plobsing it's a memory consumption/cpu time tradeoff. knowing both curves is important
23:10 dukeleto nwellnhof: my benchmarking script doesn't allow for passing command line args to some but not others, so gc-threshold itsn't going to help me :(
23:11 plobsing nwellnhof: probably read from somewhere under /proc (linux only)
23:13 nwellnhof plobsing: yes, but ideally you would have to poll that somehow before every GC.
23:13 luben http://luben.spnet.net/gc-threshold-string.png
23:13 luben here is the new benchmark
23:14 luben fothe new benchmark is time for execution of examples/benchmarks/stress_strings.pir
23:17 plobsing nwellnhof: why? can't we simply check that at the end?
23:18 plobsing sure GC *can* release memory back to the system, but it rarely does. especially in a simple benchmark that just checks memory consumption of startup
23:19 nwellnhof plobsing: accurately measuring memory usage is really tricky. the GC does release string memory all the time, for example. and i'm not really interested in startup benchmarks here.
23:21 nwellnhof i could simply use the internal GC stats, of course. but it would be nice if i could compare them to real statistics from the kernel.
23:24 plobsing nwellnhof: write a kernel module?
23:25 luben ok, another quick and naïve stats measuring speed/mem usage of simple perl6 program - "sleep 10" is comming in a minte
23:26 nwellnhof plobsing: the data in /proc/self/smaps should be enough. especially the "dirty" values.
23:28 bacek aloha, humans
23:29 kid51 joined #parrot
23:33 luben here is the new chart - the blue time is execution time in ms, the red line in resident size (RSS) MB * 6 (in order to plot them on the same meaningfull chart)
23:33 luben http://luben.spnet.net/gc-time-mem.png
23:37 whiteknight aloha, bacek
23:38 nwellnhof luben: is the last one for rakudo startup or stress_strings?
23:38 luben rakudo startup
23:39 bacek hi whiteknight
23:39 luben I could not find how to measure process max mem consumption
23:40 whiteknight bacek: hat string_gc_encapsulate branch did get merged to trunk?
23:40 bacek whiteknight, yes
23:40 Paul_the_Greek joined #parrot
23:40 whiteknight okay, it looked like there was some confusion
23:40 Paul_the_Greek Good evening, folks-for-whom-it-is-evening.
23:40 whiteknight good work on that, by the way
23:40 whiteknight hello Paul_the_Greek
23:40 Paul_the_Greek Hey whiteknight.
23:40 purl whiteknight is mailto:wknight8111@gmail.com or the grand master funk or http://wknight8111.blogspot.com/
23:42 Paul_the_Greek whiteknight: What do you think about testing for Inf/NaN when converting floats to integers?
23:42 bacek meh... Bloody svn...
23:43 whiteknight Paul_the_Greek: I have to believe that the particular operation of converting the two happens sufficiently rarely that we can add an extra check there without kiling performance
23:43 Paul_the_Greek Probably true. I think it might be tricky to find every place we do it.
23:44 luben bacek, indeed
23:46 zostay left #parrot
23:46 Paul_the_Greek 179 occurrences of (FLOATVAL) in the system.
23:48 mikehh bacek: ...not for very much longer ... :-}
23:49 davidfetter left #parrot
23:51 bacek holy shit... git-svn committing merge as set of individual commits from trunk...
23:52 dalek parrot: r49113 | bacek++ | branches/gc_massacre/runtim​e/parrot/library/pcre.pir:
23:52 bacek oookey. I'll fix it later. Time to go.
23:52 dalek parrot: [pcre] Add library name genned by install of pcre 8.10 from source.
23:52 dalek parrot: Patch from ronaldws, see TT#1401
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49113/
23:52 dalek parrot: r49114 | bacek++ | branches/gc_massacre/DEPRECATED.pod:
23:52 dalek parrot: Add deprecation notice for fixed_8 encoding.
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49114/
23:52 dalek parrot: r49115 | bacek++ | branches/gc_massacre/src/packfile/pf_items.c:
23:52 dalek parrot: Fix r48994
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49115/
23:52 dalek parrot: r49116 | bacek++ | branches/gc_massacre/src/pmc (2 files):
23:52 dalek parrot: implement Boolean init_int vtable and use it in FixedBooleanArray
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49116/
23:52 dalek parrot: r49117 | bacek++ | branches/gc_massacre/config/init/hints/mswin32.pm:
23:52 dalek parrot: When using MSVC, always use lib.exe for static libraries
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49117/
23:52 dalek parrot: r49118 | bacek++ | branches/gc_massacre (2 files):
23:52 dalek parrot: Use fixed size allocator for small hashes
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49118/
23:52 dalek parrot: r49119 | bacek++ | branches/gc_massacre/src/pmc/bytebuffer.pmc:
23:52 dalek parrot: reintroduce ByteBuffer string result validation deleted in r48889, the catching tests were passing for wrong reasons
23:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49119/
23:53 dalek parrot: r49120 | bacek++ | branches/gc_massacre/runtime/p​arrot/library/URI/Escape.pir:
23:53 dalek parrot: Use find_encoding instead of find_charset in URI::Escape
23:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49120/
23:53 dalek parrot: r49121 | bacek++ | branches/gc_massacre/src (2 files):
23:53 dalek parrot: Don't use STRING_equal yet
23:53 dalek parrot: It's not yet safe to use directly.
23:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49121/
23:53 dalek parrot: r49122 | bacek++ | branches/gc_massacre/docs/proj​ect/release_manager_guide.pod:
23:53 dalek parrot: pencil in mikehh for the Feb release. He volunteered and didn't specify. 3.0 is going to be a biggy, so I'm hoping somebody specifically requests it
23:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49122/
23:56 mikehh hey what happened to r49093 - r49112
23:59 sorear dalek didn't report them, but they exist in the repo

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

Parrot | source cross referenced