Camelia, the Perl 6 bug

IRC log for #parrot, 2010-04-14

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 * cotto_work looks for a guy named "Tod" to mock.
00:06 cotto_work with gzip, perl6.pbc goes from 22M to 1.1M.
00:06 plobsing yeah, 464k with lzma
00:07 plobsing 660k with bzip2
00:07 plobsing I haven't played with the options
00:08 plobsing PBC - optimized for compression :p
00:11 nopaste "cotto_work" at 192.168.1.3 pasted "comparison of runcores in compiling tools/dev/pprof2cg.nqp" (8 lines) at http://nopaste.snit.ch/20265
00:12 chromatic Switch?
00:12 purl Switch is evil.
00:12 cotto_work plobsing: we could throw some more long string of 0 in there.
00:12 cotto_work chromatic: running now
00:13 chromatic Fast is 4.553% faster than slow.
00:13 plobsing isn't cgp supposed to be an optimized variant of cgoto?
00:13 chromatic If I could make fast pass all of its tests properly....
00:13 snarkyboojum joined #parrot
00:14 cotto_work The validity of that task as a representation of performance is an open question.
00:14 Whiteknight chromatic: fast core doesn't pass tests?
00:14 Whiteknight I thought rakudo was using it for default
00:15 chromatic Some of the annotations tests are TODO for that core.
00:15 Whiteknight instruction counts don't take into consideration pipeline pairings, or relative instruction costs
00:16 nopaste "cotto_work" at 192.168.1.3 pasted "same as previous but with switch" (10 lines) at http://nopaste.snit.ch/20266
00:16 chromatic Wow, I would have expected switch to perform better.
00:16 cotto_work That's without --optimize\
00:17 sorear switch is cgoto + range checking in nearly every C compiler
00:17 sorear opcode range checking, I mean
00:17 sorear cgoto will just segfault if it gets an out of range opcode
00:18 chromatic I'm not convinced C compilers will reliably optimize a switch statement with that many cases.
00:18 Whiteknight yeah, i doubt it
00:18 sorear what do you mean by "optimize a switch statement"
00:18 plobsing there should be a pragma that tells the compiler "Hey, I'm making an op dispatcher"
00:18 chromatic Then again, I'm not convinced VS can reliably optimize a switch statement with more than four cases.
00:18 Whiteknight sorear is right too: best it could be optimized is into a linear dispatch table, like a cgoto
00:18 particle preliminary gsoc slot count for tpf: 10
00:19 chromatic Perl 5 is borrowing optimizations from parrot: http://www.mail-archive.com/perl​5-changes@perl.org/msg23468.html
00:19 Whiteknight cotto, how many Parrot instructions in that program
00:19 Whiteknight chromatic, we have optimizations?
00:20 Whiteknight :)
00:20 cotto_work Whiteknight: not sure.  I'm just testing the time to compile and spit\ out pir.
00:20 chromatic I could revert several dozen commits and show you, yes.
00:20 plobsing pbc_disassemble perl6.pbc => SEGFAULT
00:21 cotto_work plobsing, that's not entirely surprising.  pbc_disassemble has bugs non-tiny pbc files.
00:21 plobsing is it even worth opening a ticket?
00:21 chromatic Not if you can fix it right now.
00:21 plobsing not bloody likely
00:22 cotto_work nm.  I'm thinking of pbc_dump.
00:22 chromatic Ticket away!
00:25 nopaste "cotto_work" at 192.168.1.3 pasted "now with --optimize" (15 lines) at http://nopaste.snit.ch/20267
00:26 snarkyboojum joined #parrot
00:27 chromatic Much better.
00:27 purl i heard much better was to design each table in isolation with the table name providing context
00:28 chromatic Fast is 1.927% faster than slow.
00:29 cotto_work Assuming this is representative of performance (which is a potentially big assumption), things look bad for cgp.
00:29 Whiteknight kill it with fire
00:29 cotto_work and switch and slow
00:29 cotto_work deprecations first, then fire
00:30 cotto_work It'll be really nice to rip some of that code out.
00:30 chromatic cg, cgp, and switch can go away as far as I'm concerned.
00:30 Whiteknight +1
00:30 purl 1
00:30 cotto_work but more testing should be done first, especially with Rakudo and Partcl-nqp
00:30 chromatic Switching to fast will be a little more difficult, but we can get that done too.
00:31 cotto_work What's tricky about fast?  It's the simplest possible runcore.
00:31 Whiteknight purl +1 is <reply>-2
00:31 purl ...but +1 is <reply>-1...
00:31 chromatic Sometimes it doesn't update pc appropriately.
00:31 sorear why are you counting instructions?
00:31 Mokurai1 joined #parrot
00:31 sorear and not something physically meaningful like milliseconds?
00:32 chromatic Because counting milliseconds is silly and not meaningful.
00:32 cotto_work there's a comment in runops_fast_core that can safely go away
00:32 sorear milliseconds are the only thing I care about
00:32 sorear I don't lose patience by the billion instructions
00:32 sorear I lose patience by the million milliseconds
00:32 chromatic You can't compare milliseconds accurately.
00:33 sorear are you secretly a computer program?
00:33 cotto_work milliseconds are harder to test
00:33 chromatic If your profiles rely on a clock, your profiles are not accurate, and they don't count.
00:34 cotto_work time-based testing is fine.  It just requires more statistical forethought than instruction counts.
00:34 chromatic Time-based testing isn't fine, because it's unscientific.  It's not repeatable.
00:34 Whiteknight well, on a single core, non-threaded embedded system with IO interrupts turned off and a fixed crystal freqency, a clock benchmark is fine
00:34 sorear Instruction count benchmarking is fine on MIPS
00:35 chromatic .... depending on the accuracy of your clock, perhaps Whiteknight is right.
00:35 sorear a single-scalar architecture where all instructions run in one clock cycle
00:35 sorear with no cache
00:36 cotto_work valgrind can simulate cache but I agree that it's a more abstract measurement than milliseconds
00:36 sorear also, science has involved margins of error for centuries
00:36 cotto_work . o O (Look at me, still talking when there's science to do.)
00:37 chromatic Okay, hands up everyone profiling Parrot on a single core embedded system with no interrupts and no multitasking.
00:37 chromatic No hands?
00:37 chromatic None?
00:37 purl i guess None is :/
00:37 chromatic Thought not.
00:38 chromatic Now complain all you like about how the real world blah blah clock cycles blah blah accurate blah blah, but look me in the eye and tell me that reducing the number of instructions executed by a repeatably measurable and verifiable amount hasn't made Parrot and Rakudo run faster.
00:39 chromatic Because I can tell you that a parallel run of coretest takes between 22 and 39 seconds on my development box.
00:39 chromatic ... and any science which can deal with almost a factor of two margin of error had better be a social science or climatology, because nothing else will take it seriously.
00:39 sorear chromatic: Why are you talking about seconds?  You just said they don't matter.
00:40 * plobsing runs off to build a custom test box to fit specifications
00:40 sorear When you measure instruction counts, you have a factor of 400 factor of error.  That's the difference between SYSENTER and INC in the i386 system programmer's manual
00:40 sorear I would rather have a factor of 2 error than a factor of 400.
00:41 sorear Also, the central limit theorem will reduce the factor of 2 as low as I want, but won't affect the 400 (since the error isn't independant between runs).
00:41 cotto_work sorear: where does 400 come from?
00:41 plobsing sorear: I seriously doubt the difference in instruction counts comes from any "heavy" instructions such as sysenter
00:41 sorear cotto_work: the Intel Pentium 4 System Programmer's Manual
00:41 sorear I'm misremembering the values, I'm sure
00:42 sorear plobsing: CALL is also a heavy instruction, although less so, and fast uses it in spades
00:42 plobsing fair enough
00:42 cotto_work Ah.  You're saying that instructions take different amounts of time.
00:43 sorear I don't know exactly how heavy CALL is.
00:43 sorear Neither does Intel - it depends on too many factors.
00:43 sorear time(1), however, does know
00:43 chromatic Too bad time(1) isn't repeatable.
00:44 cotto_work a margin of error doesn't preclude repeatability
00:45 chromatic A margin of error affected by local Ethernet traffic does.
00:45 chromatic I can run Callgrind on a Parrot program a thousand times and get *the same number*.
00:45 cotto_work +/- a little
00:46 chromatic If I run time(1) on that same Parrot program, I can ameliorate my margin of error and get a stochastic likelihood that the eventual number I can come up with is probably within my margin of error.
00:46 chromatic Which am I going to pick?
00:46 sorear If I'm measuring the gravitational forces on oil drops, I don't get exactly repeatable results because every time a truck drives by, my numbers change infinitesemally
00:46 sorear You've basically just asserted physics isn't science
00:47 sorear chromatic: You're going to pick callgrind.  We, however, will stick with time and averaging over hundreds of runs.  Neither number is useless.
00:47 chromatic That's probably why physicists don't use Newtonian physics for things that are too big or too small for Newtonian physics to apply.
00:49 cotto_work valgrind is very precise, simple to run and gives a rough indicator of performance.  milliseconds vary significantly and require many runs with statistical analysis but give an accurate indicator of performance.
00:53 Whiteknight children, stop fighting or you get the hose
00:54 * cotto_work sings kumbayaa
00:56 dalek TT #1557 created by plobsing++: pbc_disassemble fails on large PBCs
00:56 dalek TT #1557: http://trac.parrot.org/parrot/ticket/1557
01:04 abqar joined #parrot
01:32 nopaste "plobsing" at 192.168.1.3 pasted "compact strings in packfiles slightly" (99 lines) at http://nopaste.snit.ch/20268
01:33 plobsing probably a little close to the release for that eh?
01:40 cotto normal release, no.  supported release, probably yes
01:41 sorear what makes a release "supported?"
01:41 AndyA_ joined #parrot
01:45 cotto sorear, docs/project/support_policy.pod
01:47 kid51 joined #parrot
01:51 sorear thanks
01:54 plobsing I guess it waits till patch tuesday
01:55 kid51 Yes, I think this is Gerd's first time at bat as release manager, so we don't want to overburden him.
01:55 kid51 which reminds me, I should start doing make fulltest
01:58 Coke msg allison I will probably not get to the trac report tonight, apologies.
01:58 purl Message for allison stored.
02:00 cotto More patches won't put any extra burden on gerd.  We just want to focus on documentation and testing.
02:01 cotto actually, it'd depend on how confident you are in the patch.
02:02 plobsing I'm 95% on it. Its pretty simple, but this is software.
02:02 cotto If you want to apply it, better sooner than later.
02:06 Coke parrot docbugs is http://xrl.us/bhg2p8 [trac.parrot.org]
02:22 dalek parrot: r45647 | plobsing++ | trunk/src/packfile/pf_items.c:
02:22 dalek parrot: use the same opcode for both charset number and pobj flags for strings in packfiles
02:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45647/
02:22 GeJ exit
02:22 * cotto exits
02:22 plobsing #parrot: you have suspended jobs.
02:23 GeJ Ah, dammit. bad focus when closing a window.
02:23 GeJ Sorry about that.
02:23 sorear at least you didn't do 'su'
02:23 sorear (I've seen this happen)
02:28 tetragon joined #parrot
02:29 GeJ sorear: hum, I believe I may have typed my password here at least a couple of time before.
02:30 cotto hunter2
02:39 dalek parrot: r45648 | coke++ | trunk/src/packfile/pf_items.c:
02:39 dalek parrot: eliminate trailing whitespace
02:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45648/
02:39 dalek parrot: r45649 | gerd++ | trunk/NEWS:
02:39 dalek parrot: some news added
02:39 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45649/
02:41 cotto plobsing, did you run make test before that commit?
02:41 cotto I'm seeing some packfile-related test failures.
02:41 plobsing I did. The test pbcs need to be regenerated.
02:42 plobsing I just commited that.
02:42 kid51 exit
02:43 kid51 make fulltest PASS linux/i386 r 45649
02:44 plobsing wha? are you sure? the native pbcs were broken in that rev.
02:45 kid51 Uh-oh:  getting lots of failures on Darwin/PPC
02:45 kid51 All in the t/pmc/packfile*.t tests
02:45 cotto there you go
02:46 plobsing thats more like it
02:46 plobsing update to r45650. that should fix it.
02:48 janus joined #parrot
02:48 kid51 Let's see:  that was my first build of Parrot using Perl 5.12.0
02:49 kid51 Correction:  those failures were on Linux/i386
02:50 hercynium joined #parrot
02:50 kid51 Yes that looks better
02:56 dalek parrot: r45650 | plobsing++ | trunk/t/native_pbc (4 files):
02:56 dalek parrot: mk_native_pbc
02:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45650/
02:56 dalek parrot: r45651 | plobsing++ | trunk/config/gen/config_pm/config_pir.in:
02:56 dalek parrot: describe new structure of config hash
02:56 dalek parrot: fixes TT1474
02:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45651/
02:58 dalek TT #1474 closed by plobsing++: runtime/parrot/library/config.pir refers to long dead "None" PMC.
02:58 dalek TT #1474: http://trac.parrot.org/parrot/ticket/1474
02:59 dalek TT #1536 closed by coke++: Remove History and Maintainer sections from PDD's (mostly drafts)
02:59 dalek TT #1536: http://trac.parrot.org/parrot/ticket/1536
02:59 Coke msg gerd - pretty sure that the 3 month deprecation cycle was already announced in our last stable release, and stringnull ain't new.
02:59 purl Message for gerd stored.
03:00 snarkyboojum joined #parrot
03:05 Coke Invalid charset number '1825' specified
03:05 Coke (getting that trying to run anything in rakudo...
03:07 plobsing really? coretest is working fine for me
03:13 dalek parrot: r45652 | coke++ | trunk/docs/pdds (30 files):
03:13 dalek parrot: PDD cleanup (TT #1536); Remove maintainer, changes sections.
03:13 dalek parrot: Also, put version after abstract. Remove optional sections. Minor textual and
03:13 dalek parrot: podular cleanups. Update copyrights on edited files.
03:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45652/
03:18 cotto Coke, I saw something like that.  It disappeared after I ran make without -j
03:23 jsut_ joined #parrot
03:54 tcurtis What are PAST::Control nodes for?
03:55 sorear I would imagine they're like COPs, but that's a completely wild guess
03:57 khairul joined #parrot
03:59 sorear no
04:00 sorear PAST::Control nodes do not appear to be used for anything at all
04:02 sorear ah, Rakudo uses them
04:02 sorear see src/Perl6/Actions.pm
04:02 sorear in particular when implementing given/when
04:02 sorear it's not a loop, but it needs to catch break
04:09 tcurtis Thanks.
04:10 tcurtis sorear++
04:11 Andy joined #parrot
04:12 Andy hey plobsing
04:12 purl plobsing is part of our sanity injection framework or probably canadian or mailto:plobsing@gmail.com
04:15 plobsing j0
04:15 plobsing s/j/y/
04:23 dalek parrot: r45653 | petdance++ | trunk (2 files):
04:23 dalek parrot: correct an incorrect annotation
04:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45653/
04:28 Andy hey plobsing
04:28 purl plobsing is part of our sanity injection framework or probably canadian or mailto:plobsing@gmail.com
04:29 Andy we want to change any checks of NULLness of STRINGs to STRING_IS_NULL, right?
04:30 plobsing Andy: in general yes. There are places, especially in the string system proper where this doesn't make sense.
04:36 plobsing but most systems have no excuse for breaking this encapsulation
04:36 sorear if strings are supposed to act like a primitive type, why do we have a null string at all?
04:37 sorear there's no null int or null num, we just use the additive identity (0, 0.0)
04:37 sorear maybe S variables should always point to valid strings, and be initialized to ""
04:38 plobsing what encoding is that in/
04:38 plobsing ?
04:38 sorear all of them
04:39 sorear the empty string has the same representation in every real-world character encoding I know of
04:40 plobsing true, but, based on my understanding of how strings work in Parrot, the encoding flag on that string (and there can be only one encoding for a string) can cause other strings to get promoted when they interact
04:40 dalek parrot: r45654 | petdance++ | trunk/src/spf_render.c:
04:40 dalek parrot: updated annotation
04:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45654/
04:41 plobsing I am not totally against the concept of "no null strings". But I don't totally buy the "strings are a value type" paradigm either.
04:43 plobsing I'm just trying to make what we have now work. Whether what we have is a good idea, I'll leave to someone with more vision than myself.
04:43 sorear my argument is that void strings aren't sufficiently interesting to justify the current trichotomy (STRINGNULL, NULL, "")
04:44 plobsing sorear: dichotomy. the official line is that STRINGNULL and NULL are equivalent strings in parrot's eyes
04:45 plobsing #  define STRING_IS_NULL(s) ((s) == STRINGNULL || (s) == NULL)
04:45 sorear "" probably should be handled as special for promotions; if someone says $a = ""; for (@input) { $a .= $_; }  they probably didn't mean to coerce the entire file into UTF-8 or whatever the default encoding of literals in $HLL is
04:46 sorear "" is the denotational identity of .; for it to not be so operationally violates the PoLS
04:46 sorear plobsing: ah
04:47 snarkyboojum joined #parrot
04:50 plobsing sorear: my PoLS would involve never seeing denotational identities :p
05:21 ttbot Parrot trunk/ r45656 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/263791.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
05:31 dalek parrot: r45655 | petdance++ | trunk/src/packfile.c:
05:31 dalek parrot: use the new STRING_IS_NULL macro
05:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45655/
05:32 dalek parrot: r45656 | petdance++ | trunk/src (2 files):
05:32 dalek parrot: use the new STRING_IS_NULL macro. Consting and function annotations.
05:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45656/
05:52 eternaleye joined #parrot
06:02 cotto Bah.  All our fancy function annotations make Coccinelle sad.
06:07 uniejo joined #parrot
06:58 iblechbot joined #parrot
07:25 dalek rakudo: aae95f4 | moritz++ | t/spectest.data:
07:25 dalek rakudo: we pass sort.t, quester++
07:25 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​ae95f431b88a2ce2c54dacad5f568567749bfab
07:37 cotto There's a lot of code that matches /if \(s\)/
07:37 cotto If someone's up for wrestling with Coccinelle, this would be a great application for it.
07:41 cotto otoh, it's yet another thing that acts kinda like a C compiler
07:42 dalek parrot: r45657 | dukeleto++ | trunk/docs/pdds/draft/pdd10_embedding.pod:
07:42 dalek parrot: [cage] Fix signature docs for Parrot_compile_string in PDD10
07:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45657/
07:43 ttbot Parrot trunk/ r45657 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/263982.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
07:45 cotto all better
07:50 * cotto kicks dalek gently
07:59 dalek parrot: r45658 | cotto++ | trunk/src/call/args.c:
07:59 dalek parrot: [call] run headerizer, fix build, more cowbell, etc
07:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45658/
08:04 cotto I've lost much faith in the speed of nqp-rx's regex matching capabilities.
08:08 moritz speed? are you kidding?
08:08 moritz since nqp-rx doen't yet implement :: it's not so easy to fail early in some rules
08:14 chromatic joined #parrot
08:17 moritz Coke: why did you change TT #389 from "bug" to "deprecated"? And what exactly does that mean?
08:18 dalek parrot: r45659 | gerd++ | trunk/RESPONSIBLE_PARTIES:
08:18 dalek parrot: add myself for Fedora
08:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45659/
08:22 mikehh joined #parrot
08:33 chromatic PBCs are ~4.5% smaller now.
08:35 moritz chromatic: I've just received complaints about the rendering of the Perl 6 book
08:36 moritz chromatic: it seems that B<...> outlining doesn't work in =begin programlisting blocks
08:36 moritz ie the B<...> are left verbatim in the code
08:37 chromatic We had that working at one point.  I'll ask allison about it.
08:56 sorear I'd prefer you didn't think about them as complaints
08:57 sorear LTA, sure, but perfectly readable
09:03 moritz sorear: I don't mean "complaints" negatively in any way
09:04 moritz to me it's more like "bug report" :-)
09:05 moritz and since I mostly look at the POD, and nearly never at the tex or pdf, those are valuable
09:34 cotto 1-4/128
09:34 purl 0.96875
09:39 cotto yay for being faster
09:40 chromatic What's faster?
09:40 purl *whutcchhh* *whutcchhh* or Citius, Altius, Fortius! or the wrong goal
09:40 cotto it'll be even nicer when switching to a hand-rolled parser actually slows nqp-rx code down
09:40 cotto parsing profiles
09:40 cotto it's down to "reasonable" now
09:41 cotto about 4s for t/pmc/fixedpmcarray.t
09:41 chromatic Is the recursive descent of NQP painful?  The lack of cut?  Missing LTM?
09:42 dalek parrot: r45660 | cotto++ | trunk/runtime/parrot/library/ProfTest (3 files):
09:42 dalek parrot: [proftest] switch from grammar to manual string mangling
09:42 cotto It don't know.  It looked like more of a "use a different tool" problem than a "tune the existing code" issue.
09:42 dalek parrot: results in small t/profiling/profiling.t speedup and 97% speedup when parsing large profiles
09:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45660/
09:43 cotto time for sleep
09:43 chromatic Indeed.
09:48 bacek aloha
09:58 dalek parrot: r45661 | cotto++ | trunk/runtime/parrot/librar​y/ProfTest/PIRProfile.nqp:
09:58 dalek parrot: [proftest] fix some escaped debugging code
09:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45661/
10:07 chromatic The PF_fetch_* functions in src/packfile/pf_items.c might not need to use function pointers; the underlying fetch functions are static and easy to inline a few bytes of asm.
10:08 chromatic You hate to see branch prediction hurt there.
10:24 aukjan joined #parrot
10:42 clinton joined #parrot
10:48 dalek parrot: r45662 | bacek++ | branches/immutable_strings_par​t1/src/string/charset/ascii.c:
10:48 dalek parrot: Remove unused static function
10:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45662/
10:50 allison Score! all tests passing with TT #389 fixed
10:57 bacek ship it!
12:01 whiteknight joined #parrot
12:06 bluescreen joined #parrot
12:09 whiteknight good morning, #parrot
12:09 dalek parrot: r45663 | allison++ | trunk/runtime/parrot/library/TAP/Parser.pir:
12:09 dalek parrot: [cage] Preparing for deprecation change, methods are only stored in the
12:09 dalek parrot: namespace when :nsentry is specified. See TT #389.
12:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45663/
12:26 dalek parrot: r45664 | allison++ | trunk/compilers/pge/PGE (2 files):
12:26 dalek parrot: [pge] Preparing for deprecation change, methods are only stored in the
12:26 dalek parrot: namespace when :nsentry is specified. See TT #389.
12:26 purl i already had it that way, dalek.
12:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45664/
12:26 dalek parrot: r45665 | allison++ | trunk/t (8 files):
12:26 dalek parrot: [tests] Preparing for deprecation change, methods are only stored in the
12:26 dalek parrot: namespace when :nsentry is specified. See TT #389.
12:26 purl i already had it that way, dalek.
12:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45665/
13:00 ruoso joined #parrot
13:04 smash joined #parrot
13:04 smash hello everyone
13:05 aukjan joined #parrot
13:11 whiteknight hello smash
13:16 allison moritz: you have to set the $new->codes_in_verbatim(1); option on the parser object
13:16 Andy joined #parrot
13:17 allison moritz/chromatic: the version of Pod::PseudoPod::HTML I have for the Parrot Dev Guide sets it automatically in the core module
13:19 allison moritz/chromatic: digging further, it's in the released version of Pod::PseudoPod too
13:19 moritz allison++
13:19 allison moritz: but note that standard Pod does *not* parse format tags like B<...> in verbatim code blocks
13:20 moritz allison: I know
13:20 allison ok
13:20 moritz I picked it up from an editoral patch by chromatic++
13:20 allison I don't know what version of the parser the Perl 6 book was generated on, though
13:21 allison moritz: okay, cool
13:21 moritz ii  libpod-pseudop 0.15-1         A framework for parsing PseudoPod
13:21 moritz is what I use
13:21 allison moritz: hmmm.. what distro?
13:21 purl somebody said distro was HTML::Tree
13:21 moritz allison: debian... but probably a self-made module
13:22 allison 0.16 is the latest, but it's just a couple weeks old
13:22 moritz if I read the changelog correctly, it's not worth upgrading for removed tests :-)
13:23 allison moritz: and, looks like the option was enabled there too
13:23 allison moritz: aye, no point
13:23 allison moritz: it was just a release to silence the CPAN failures
13:24 allison moritz: (by "there" 3 lines ago, I meant "in 0.15 too")
13:24 atrodo joined #parrot
13:24 moritz good
13:26 payload joined #parrot
13:27 moritz seems to work... at least the generated .tex doesn't contain B< anymore
13:29 moritz there are still some layout issues, but I assume you have much better tex templates anyway
13:30 moritz (for example the tables have borders, except the title rows, which only have borders on the bottom/right, but not on the top/left)
13:32 rhr joined #parrot
13:34 Coke moritz: it's called "deprecation" now. basically, a change in behavior that needs to occur that will break backward compatibility.
13:34 particle tar zxf foo.tgz # tar: You must specify one ef the '-Acdtrux' options
13:34 particle huh?
13:34 particle is x no longer x?
13:34 moritz particle: try tar -xzf foo.tgz
13:34 Coke particle: tar -zxf foo.tgz
13:35 Coke (I thought you needed the -_
13:35 moritz Coke: depends on the tar
13:35 moritz I think GNU tar doesn't need it
13:35 moritz but others are a bit more picky
13:36 particle this is centos, doesn't like -
13:36 particle ah... interesting....
13:36 payload1 joined #parrot
13:36 particle the full line is: su - minicpan -c tar zxf foo.tgz
13:37 patspam joined #parrot
13:37 particle even if i do 'su - minicpan -c -- tar -xzf foo.tgz' i get su: invalid option -- x
13:37 particle su is seeing the -xzf
13:38 particle i've got to put quotes around the -c arg, i guess
13:39 moritz allison: another complaint about Pod::PseudoPod: it translates double quotes differently in verbatim blocks and C<...> constructs
13:40 payload joined #parrot
13:40 moritz which is rather annoying when you talk about interpolation semantics
13:40 moritz example: http://moritz.faui2k3.org/tmp/book.pdf page 8 (a bit above the Excercises)
13:41 tetragon joined #parrot
13:41 allison moritz: that's not Pod::PseudoPod, that's LaTeX doing that
13:42 moritz oh, and B<...> now gets translated into \textbf{...} inside programlisting blocks, but \begin{verbatim}...\end{verbatim} doesn't process that... do I need fancyvrb or so?
13:42 moritz allison: ugh
13:42 allison moritz: latex again
13:43 allison moritz: if you do the HTML output it comes out right
13:43 moritz so Pod::PseudoPod::LaTeX isn't supposed to emit "working" latex output? :/
13:44 moritz or does it require a special latex prelude?
13:45 smash excelent the build system for the perl6 book
13:54 bubaflub joined #parrot
13:57 payload1 joined #parrot
14:04 ruoso joined #parrot
14:05 allison moritz: it should be valid LaTeX, but so far I haven't found a way to get LaTeX to handle formatting codes inside verbatim blocks
14:06 ash_ joined #parrot
14:06 allison moritz: if you run across the magic incantation, pass it along and I'll make sure it gets into the module
14:06 moritz allison: I'll look into it - I dimly recall that fancyvrb can do such things
14:08 ash_ whiteknight: have you seen macruby much? I only mention it because its the exact kind of thing i would like to do with parrot, concerning the llvm that is for my GSoC project.
14:10 particle1 joined #parrot
14:11 Andy joined #parrot
14:11 whiteknight ash_: no, not familiar with macruby at al
14:11 whiteknight all
14:11 whiteknight links or info?
14:12 ash_ http://www.macruby.org/blog/index.html talks about it a good bit, what i would like to do
14:13 ash_ its ruby, the same core as the mainline of ruby, but they replaced the vm with the llvm, added a few things, and made a bridge to objective-c, (that doesn't use libffi, it compiles down to a real C call instead of libffi so its faster)
14:14 ash_ it comes with a AOT compiler, macrubyc, that will take a ruby file and convert it to a native binary using the llvm, it can also make dynamic libraries too
14:14 whiteknight ash_: An AOT compiler is a feature that I would love to have in Parrot eventually
14:15 ash_ that was one of the things i'd like to do with parrot, instead of dumping bytecode, actually using the llvm to build a native executable, granted its only for parrot installs with the llvm, but still
14:16 dalek parrot: r45666 | allison++ | trunk (2 files):
14:16 dalek parrot: [cage] Associate named macros with sub compilation flags that are already used,
14:16 whiteknight ash_: Yeah, but you could package up the executable and libparrot into an installer, and distribute that to people who don't have parrot already
14:16 dalek parrot: add a named macro and flag for nsentry.
14:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45666/
14:16 payload joined #parrot
14:17 ash_ yeah, theres a lot of stuff you can do
14:20 ash_ in nq-nqp i am finally getting to code generation, i have some basic ability to call functions and make new objects
14:22 ash_ whiteknight: if your on linux, you can still build macruby if you want to see it work, it just won't have all the cocoa stuff
14:22 ash_ it works on linux, and windows (via cygwin)
14:22 whiteknight I can check it out later today when I get home
14:24 * Coke wonders if there's anyone else he can sucker into working on partcl. =-)
14:26 ash_ how is partcl coming along?
14:27 allison ooookey, I'm not committting the TT #389 fix before 2.3, because even NQP-rx depends on the old broken behavior
14:28 allison I can fix PGE, but NQP-rx is generating broken code
14:28 Coke slowly. had gotten to a point with partcl that it was running the tcl test suite and passing a large fraction. but it was harder and harder to add new features. switched to a version written in NQP-rx, which makes writing things a lot easier, but involves a lot of recoding.
14:28 allison (I can even fix the broken generated code in the Parrot repository, but the problem is external)
14:29 Coke (fixing nqp-rx) - if we can get a few moments of pmichaud's time, we might be able to make that happen.
14:29 Coke (and there are multiple commiters on nqp-rx)
14:29 moritz if somebody needs commit access to nqp-rx, that can also be organized
14:29 allison it'll be a small fix
14:30 allison just adding :nsentry to a template for generated code
14:31 allison he can go back and remove it later if he wants to make the more sweeping changes to avoid pulling methods out of the namespace
14:32 dalek parrot: r45667 | allison++ | trunk/runtime/parrot/library/TAP/Parser.pir:
14:32 dalek parrot: [cage] No need to repeat the sub name in :nsentry.
14:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45667/
14:32 dalek parrot: r45668 | allison++ | trunk/runtime/parrot/library/pcore.pir:
14:32 dalek parrot: [cage] Some tests were relying on the get_lexenv method being available from
14:32 dalek parrot: the namespace.
14:32 purl the namespace is the internal namespace for things like $c->forward and template paths, anyway or  hll:X::Y, but yes.
14:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45668/
14:32 dalek parrot: r45669 | allison++ | trunk/runtime/parrot/library/P6object.pir:
14:32 dalek parrot: [cage] Preparing for deprecation change, methods are only stored in the
14:32 theory joined #parrot
14:32 dalek parrot: namespace when :nsentry is specified. See TT #389.
14:32 purl i already had it that way, dalek.
14:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45669/
14:32 dalek parrot: r45670 | allison++ | trunk/runtime/parrot/library/Stream/Base.pir:
14:33 dalek parrot: [cage] Preparing for deprecation change, methods are only stored in the
14:33 dalek parrot: namespace when :nsentry is specified. See TT #389.
14:33 purl i already had it that way, dalek.
14:33 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45670/
14:34 smash where can i send patches for the perl6 book ?
14:35 moritz smash: good question... maybe perl6-compiler@perl.org for now
14:35 moritz smash: if you have just small changes, you can commit them directly if you want... just tell me your github ID
14:37 smash moritz: just some typo fixes
14:37 moritz smash: the commit them directly
14:38 fperrad joined #parrot
14:39 Coke moritz: just have him fork and pull request?
14:39 Coke (oh, typos, envermind. )
14:40 moritz Coke: just have him commit directly... I don't see why not :-)
14:40 whiteknight what is a pull request?
14:40 purl i guess a pull request is just a message
14:40 whiteknight thanks purl
14:40 Coke "i have committed things to a fork of your project. you should look at them."
14:40 whiteknight ah, that makes more sense
14:40 Coke except that github (kind of) makes it easy to do.
14:41 moritz it also add those commits to a fork queue, where you can apply patches with a single click
14:41 Coke whiteknight: http://github.com/guides/pull-requests
14:41 smash moritz: sure i can commit them directly, my githud id is 'smashz'
14:43 moritz smash: and you have commit access now. Welcome!
14:43 smash moritz: ok, thank you
14:45 Coke whiteknight: http://github.com/blog/270-the-fork-queue
14:48 fperrad_ joined #parrot
14:54 ash_ joined #parrot
14:55 davidfetter joined #parrot
14:57 snarkyboojum joined #parrot
14:58 cotto Are the repeat VTABLE functions and ops valuable?  They strike me as something that could easily go on the deprecation pile.
14:58 whiteknight cotto: which ones?
14:58 purl which ones are b0rked
14:58 whiteknight purl forget which ones
14:58 purl whiteknight: I forgot which ones
15:00 cotto repeat
15:03 * cotto heads to wrok
15:08 davidfetter mmm...wrokz
15:11 ash_ joined #parrot
15:12 Coke repeat just lets you turn "X" into "XXX", yes?
15:13 Coke I need that for [string], but do I think it needs to be a vtable? probably not.
15:13 Coke S26?
15:13 purl rumour has it S26 is http://perlcabal.org/syn/S26.html
15:22 dalek parrot: r45671 | fperrad++ | trunk/runtime/parrot/library/TAP (2 files):
15:22 dalek parrot: [TAP] minor refactor
15:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45671/
15:28 cotto_work joined #parrot
15:41 Coke smash: "its most simple form' was corect
15:41 Coke "correct". =-)
15:41 moritz smash++ # for the other fixes :-)
15:43 smash ups, sorry
15:43 smash my bad, fixing it
15:44 plobsing joined #parrot
15:45 smash reverted, sorry again, my bad # smash--
15:46 moritz no problem, the other fixes are good
15:46 Coke NBD.
15:46 Coke what moritz said. =-)(
15:46 Coke er, =-)
15:52 clinton joined #parrot
15:59 theory_ joined #parrot
16:00 Coke ~/I've got a theory, it's a demon. A dancing demon! Something isn't right there. /~
16:00 * theory dances
16:01 * moritz tries to dance, tumbles. Not a good dancer
16:04 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33187), fulltest) at r45671 - Ubuntu 10.04 beta i386 (g++ with --optimize)
16:20 joeri joined #parrot
16:25 allison joined #parrot
16:29 bubaflub joined #parrot
16:32 brrant joined #parrot
16:33 dalek tracwiki: v6 | Jack++ | FreezeThawTasklist
16:33 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Freez​eThawTasklist?version=6&amp;action=diff
16:33 dalek tracwiki: v3 | Jack++ | ExceptionRefactor
16:33 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Exce​ptionRefactor?version=3&amp;action=diff
16:34 bubaflub Jack--, Jack--
16:36 bubaflub i've undone the spam that Jack put on the wiki.  can someone with permissions delete his account and update http://trac.parrot.org/parrot/wiki/TracSpammers?
16:38 iblechbot joined #parrot
16:39 particle removed jack's account
16:39 particle crap, don't have jack's email, sigh
17:17 GodFather joined #parrot
17:22 GodFather newbe trying to get squaak to work 9 step episode seems out of date
17:26 ruoso joined #parrot
17:35 whiteknight joined #parrot
17:50 hercynium joined #parrot
17:58 Coke We should restrict wiki editing access to developers.
17:58 Coke doing so now.
18:00 Coke I am also tempted to remove "ticket_append" for authenticated.
18:00 purl okay, Coke.
18:01 plobsing joined #parrot
18:01 darbelo purl: Coke?
18:01 purl i think Coke is Will Coleda <mailto:will@coleda.com> or perpetually annoyed. or magical ticket robot or (if Diet), something that turns into formaldehyde in my blood. or getting those data_json issues in Coke's build. or tempted to remove "ticket_append" for authenticated.
18:02 Coke done.
18:02 Coke email sent to list.
18:02 Coke I wonder if having a captcha for account creation would help.
18:02 * darbelo didn't know purl knew how to parse 'I am also...'
18:03 darbelo Coke: It won't hurt...
18:04 GodFather joined #parrot
18:07 allison With the makefile changes of a few months ago, how does one rebuild the IMCC pregenerated files?
18:10 particle is it no longer perl Configure.pl --maintainer?
18:10 * particle forgets the option himself
18:13 Coke yes it is.
18:13 Coke that is unchanged.
18:13 allison particle: --maintainer enables lex and yacc in the makefile
18:13 allison particle: that's working
18:19 allison Ah! that's better. I modified the files again, in case make got confused when I rebuilt without --maintainer
18:20 Coke I am tempted to fix that process so we can leave the files checked in but can avoid all the dummy targets.
18:21 allison Coke: marvelous idea
18:26 chromatic joined #parrot
18:26 particle http://trac.parrot.org/parrot/ticket/1542 is a blocker for blizkost *, can we mark that on the ticket, or add it to some list of priority tickets?
18:26 particle should i simply update priority? i don't know how the tickets are triaged these days
18:28 Coke particle: ticket triage is not really done.
18:28 Coke add the language to the ticket, set it to blocker. that's all you can do.
18:28 Coke Why are they using NQP, and not NQP-rx?
18:29 Coke And if they want to use NQP, I think they need to preload something else. Austin just fixed this bug for me in partcl-nqp.
18:34 GodFather joined #parrot
18:36 Coke allison: I don't see where to edit the list of languages for the dropdown in the tickets.
18:36 allison Coke: it's on the server
18:36 allison Coke: in the trac configuration file
18:37 allison (some things can be edited through the admin interface, but for some reason those can't)
18:39 allison Coke: /var/lib/trac/sites/parrot/conf/trac.ini
18:40 allison Coke: lang.options
18:40 Coke on the server was enough. =-) updated. particle, you can set it for that ticket now.
18:43 particle danke shoen mein fruend
18:46 Coke particle: why is 1542 not a rakudo bug?
18:56 Tene_ joined #parrot
18:56 mikehh joined #parrot
18:59 GodFather joined #parrot
18:59 Coke particle: I have no clue what's going on in 1542.
19:00 Coke if RT #65994 worked, it would be much easier to diagnose.
19:09 davidfetter joined #parrot
19:27 cotto_work allison: could SUB_COMP_FLAG_MASK be made less magical?
19:30 dalek parrot: r45672 | allison++ | trunk/compilers/pge/PGE/Exp.pir:
19:30 dalek parrot: [pge] Slightly cleaner handling of :nsentry, the sub named doesn't need to be
19:30 dalek parrot: repeated.
19:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45672/
19:30 dalek parrot: r45673 | allison++ | trunk/include/parrot/sub.h:
19:30 dalek parrot: [cage] Modify the mask for sub compilation flags so it allows nsentry and
19:30 dalek parrot: vtable through.
19:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45673/
19:30 allison cotto: sure
19:31 allison cotto: I could use an | on the relevant flags instead
19:31 cotto_work It's pretty opaque as-is.
19:32 allison cotto: agreed
19:32 allison cotto: I ended up resorting to perl to calculate what the new value should be
19:32 Austin joined #parrot
19:35 chromatic Can you | together several SUB_FLAG(n)s?
19:36 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33196), fulltest) at r45671 - Ubuntu 10.04 beta i386 (gcc with --optimize)
19:36 allison chromatic: better to use the named flags, since it's clearer
19:36 sorear Coke: I filed it on the Parrot tracker because I thought it was unlikely that a purely Rakudo bug would cause load_language to inject code into the wrong namespace
19:36 sorear Coke: I don't understand the issue well enough to be at all sure of this, though
19:37 chromatic Named flags are better if the compiler supports them there, yes.
19:37 allison chromatic: i.e. SUB_COMP_FLAG_METHOD | SUB_COMP_FLAG_VTABLE | SUB_COMP_FLAG_NSENTRY
19:37 * cotto_work wonders about a "no magic numbers" codingstd test
19:38 allison chromatic: if the compiler supports SUB_FLAG, it should support SUB_COMP_FLAG_*
19:39 chromatic At that point in the struct declaration?
19:39 allison cotto: I just got rid of a bunch of them. It wasn't documented anywhere that P_METHOD in imcc and SUB_COMP_FLAG_METHOD in subs were the same magical constant
19:39 GodFather joined #parrot
19:40 allison cotto: so reordering one set of apparently unrelated constants would have thrown off the whole system
19:40 ruoso joined #parrot
19:41 allison chromatic: we're already defining entries in the enum by previous entries in the enum
19:41 allison chromatic: so the only uncertain part is whether it'll handle | in the enum definition
19:41 allison chromatic: (which would be true whether we used SUB_FLAG or SUB_COMP_FLAG_*
19:42 cotto_work I'm tempted to look at the C standard or K&R to see what should happen, but we know how standards work.
19:43 cotto_work wfm on gcc
19:45 Austin cotto_work: That's defined behavior.
19:46 Austin Things that have to do with parsing are generally much more specified than things having to do with platform behavior.
19:54 Coke sorear: I'm sorry, where's load language in that ticket?
19:54 Coke (I see load_bytecode)
19:56 mikehh joined #parrot
19:59 bluescreen joined #parrot
20:00 TimToady phone
20:00 theory joined #parrot
20:01 Coke crap! be there shortly.
20:12 Coke allison, you about?
20:12 Coke (this is the second week that every sounded like they were talking underwater. I dropped out.)
20:12 chromatic Ditto.
20:13 chromatic Except for dropping out.
20:15 cotto_work charming language rant: http://www.xent.com/pipermail/fork​/Week-of-Mon-20091109/054578.html
20:15 allison Coke: I'm here
20:16 sorear Coke: At the time I filed that ticket I was not aware load_language existed.  I have since tested using it and it results in exactly the same error.  I suppose I should add this fact to the ticket.
20:16 payload joined #parrot
20:16 Coke sorear: I tried to debug it, but I have no idea what perl6 is doing in the VM before we get to the load_bytecode.
20:16 Coke also, why are you using NQP and not nqp-rx?
20:16 allison Coke: oreilly "upgraded" their phone system a couple weeks ago
20:17 Coke chromatic: pm'd you some notes.
20:17 chromatic Thanks.
20:27 cotto_work 0x00000c06 == SUB_COMP_FLAG_VTABLE | SUB_COMP_FLAG_METHOD | SUB_COMP_FLAG_PF_INIT | SUB_COMP_FLAG_NSENTRY if someone wants to remove a magic number in include/parrot/sub.h
20:27 sorear Coke: my copy of 'nqp' actually is nqp-rx
20:29 sorear Coke: right, there are probably at least two bugs here - Perl6 is doing something wrong with the VM, and Parrot is handling it wrongly
20:29 sorear but I'm not sufficiently up to speed on the namespace mechanism to debug it
20:30 sorear parrot-nqp is nqp-rx nowadays
20:30 sorear c.f. Rakudo-NG uses parrot-nqp in the makefile
20:31 allison cotto: got the fix ready to commit (got distracted by the phone)
20:33 cotto_work Yay for less magic!
20:34 ash_ joined #parrot
20:36 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33197), fulltest) at r45673 - Ubuntu 10.04 beta amd64 (gcc with --optimize)
20:38 jan joined #parrot
20:40 dalek parrot: r45674 | allison++ | trunk/include/parrot/sub.h:
20:40 dalek parrot: [cage] Build the flag mask from the values we want to pass through, rather than
20:40 dalek parrot: using a magical constant. Thanks to cotto for the suggestion.
20:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45674/
20:43 allison actually, I can go ahead and add the NSENTRY flag in IMCC now... since it doesn't change any deep behavior
20:44 allison (it's just NameSpace PMC that can't change yet)
20:45 chromatic Suggestion: a cleanup sprint on the NameSpace PMC.
20:45 allison chromatic: very much so
20:46 chromatic I can't think of a messier PMC.
20:46 allison it's horrifying to think how many developer hours we could have saved on TT #389 if the code was well maintained
20:46 chromatic Maybe we need src/namespace/*.c
20:46 allison src/global.c certainly needs to die
20:46 chromatic ... but I think the real problem is that the existing VTABLE interface isn't appropriate for the operations we need to perform on NameSpaces.
20:47 allison it could be split into several files
20:47 allison chromatic: well, we shouldn't be packing all that behavior into set_pmc_keyed_str
20:47 allison it should be a separate function
20:47 allison that just happens to be called from the namespace PMC
20:48 jan joined #parrot
20:49 chromatic <field color="green">If we had a system built on a metaprotocol, we could have add_method, add_function, add_string, add_variable, etc methods on a NameSpace class and have avoided all of this.</field>
20:49 allison Yah, it's mainly IMCC that forces the stupidity on the system now
20:50 chromatic Not entirely.
20:50 chromatic IMCC provides plenty of design and implementation stupid.
20:50 cotto_work joined #parrot
20:50 allison it starts with lovely rich information on whether a thing is a method, sub, etc, crams it all down into a struct with flags, then unpacks it to decide if the thing is a method, sub, etc
20:51 chromatic ... but having to fit everything through the tiny little round hole of set_pmc_keyed_str means IMCC has to stuff a lot of information that it already knows into flags on Sub PMCs, and NameSpace has to extract all of that... yeah, exactly.
20:51 chromatic But that's because of set_pmc_keyed_str being way, way too generic for these operations.
20:51 Coke sorear: languages/nqp is nqp-rx!? I don't think so.
20:51 Coke sorear: you're loading languages/nqp/nqp.pbc - that's old school NQP, I think.
20:51 chromatic Isn't ext/nqp-rx NQP-rx?
20:51 allison chromatic: aye, but the reason for that is so that people can use the hash interface on the namespace PMC
20:52 chromatic P is for Parrot and Prematuregeneralization.
20:52 jan joined #parrot
20:52 Coke chromatic: yes, ext/nqp-rx is NQP-rx. but that isn't installed in to languages, I don't think.
20:53 allison chromatic: but it's perfectly possible (down the road) to say "If you use a namespace like a hash, it acts like a hash, no fancy tricks with methods, vtable overrides, etc"
20:53 allison "It'll just stuff the thing you give it into the namespace"
20:54 chromatic As long as we have something more specific to do smart things, and we don't use a NameSpace as the way of adding methods to a class before we have that class, I can live with that.
20:55 allison there are smarter ways to cache methods before the class exists
20:56 chromatic We should do them then.
20:56 allison yah
20:56 allison not today, though
20:57 Austin Please keep in mind that being able to inject methods by adding them to a namesapce is a pretty useful feature. It's how Kakapo works.
20:57 Austin (Conversely, if there's a good way to take over a class/namespace entirely, I could do that, too.)
20:57 dalek parrot: r45675 | allison++ | trunk/compilers/imcc (3 files):
20:57 dalek parrot: [imcc] A two line change to the parser to set an NSENTRY flag for the :nsentry
20:57 dalek parrot: sub modifier.
20:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45675/
20:58 chromatic The ultimate problem is that Parrot inherited way too much from Perl 5 symbol tables, where there was no good reason to do so.
20:58 allison Austin: that's what 'add_method' is for
20:58 allison Austin: You'll still have the ability to do the same method addition, we're just talking about eliminating one of the interfaces to the feature
21:00 allison chromatic: agreed
21:11 ash_ is there a git repo that's synced with parrot's trunk?
21:12 cotto_work http://github.com/leto/parrot
21:12 cotto_work parrot git?
21:12 purl hmmm... parrot git is http://repo.or.cz/w/parrot.git or http://github.com/leto/parrot
21:12 ash_ is there a difference between the repo.or.cz and the github? or is it just extra duplication?
21:13 cotto_work dukeleto takes care of the github repo and syncs it regularly.  I don't know about the repo.or.cz one.
21:14 Coke repo.or.cz?
21:14 purl repo.or.cz is quite good, and I know the admin
21:14 Coke ... yes, but WHO IS IT. =-)
21:14 Coke stupid purl.
21:15 ash_ kk, well, i think i am going to fork dukeleto's so i can start looking into details on the stack frame, i was thinking of starting a fork
21:15 bacek Good morning
21:15 purl Good Morning Mr Rogers
21:15 cotto_work hi bacek
21:15 bacek aloha cotto
21:16 Coke bacek: did you see I reverted one of your commits?
21:16 * bacek always depressed that tab-completion doesn't work for "aloha"
21:16 bacek Coke, yes.
21:16 Coke bacek: hokay.
21:16 aloha all better
21:16 bacek aloha, aloha!
21:16 Coke aloha: aloha.
21:17 bacek Coke, my commit was definitely correct but it's too close to release to clean all side-effects.
21:20 tewk t/pmc/packfileannotations.t .... 1/17 unimplemented key type
21:20 Coke bacek: it changes functionality.
21:21 Coke so, correct or not, it needs a deprecation warning, if nothing else.
21:21 cotto_work now's the time for those
21:21 bacek Coke, i fixed existing check for NULL.
21:21 Coke and broke rakudo.
21:22 Coke so it's not just that the error message changed.
21:22 cotto_work btw, there's a lot of code that still assumes a null string is NULL instead of STRINGNULL.
21:23 bacek Coke, Nope. OTOH I found TT#1207. So, probably proper fix was to remove incorrect check all together.
21:30 dalek parrot: r45676 | bacek++ | trunk/DEPRECATED.pod:
21:30 dalek parrot: Remove already implemented items from DEPRECATION.pod
21:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45676/
21:31 dalek parrot: r45677 | bacek++ | trunk/DEPRECATED.pod:
21:31 dalek parrot: Add TT#1207 into deprecation.
21:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45677/
21:39 TiMBuS joined #parrot
21:42 * cotto_work wonders how Parrot will do with gcc 4.5.0
21:43 * plobsing wonders how much gcc 4.5.0 -flto will help
21:44 cotto_work What does that do?
21:44 plobsing link time optimization.
21:44 plobsing dumps GIMPLE as bytecode into the object files and then cross-optimizes when linking
21:47 darbelo joined #parrot
21:53 theory joined #parrot
21:55 ash_ clang does link time optimizations too
21:56 plobsing ash_: true, but why use a different compiler when I have my trusty gcc that I know and love-hate
21:56 ash_ hehe, true
21:57 ash_ gcc 4.5 has a plugin system now, have you seen dragon egg?
21:58 ash_ http://dragonegg.llvm.org/ it's a plugin for gcc 4.5, that replaces the code gen components with the llvm, so you don't have to have llvm-gcc or llvm-g++ anymore if you want to use the gcc as your frontend and use clang as your back end
21:58 ash_ s/clang/llvm/
21:59 plobsing ash_: cool - now I can use llvm with mature ada and fortran compilers!
21:59 ash_ lol yup
22:00 ash_ now if there was some way to make parrot compile directly to GIMPLE or llvm-ir...
22:02 kurahaupo joined #parrot
22:06 plobsing ash_: opcode introspection + GCC/LLVM PIR bindings would make that possible
22:06 plobsing both of those are herculean tasks though
22:07 darbelo Maybe a P[AO]ST->GIMPLE translator
22:07 darbelo That's just one herculan task ;)
22:07 cotto_work That'd actually be kinda awesome.
22:08 ash_ (thats my GSoC :P)
22:08 cotto_work though I thought GIMPLE was kept intentionally unstable to prevent that kind of usage
22:08 ash_ well, llvm-ir is what i plan on working with
22:08 * ash_ doesn't know a whole lot about GIMPLE
22:09 * plobsing looked at GCC internals once. took a week to recover my vision
22:10 darbelo Ftagn!
22:11 darbelo Ph'nglui mglw'nafh Cthulhu GCC wgah'nagl fhtagn!
22:13 ash_ oh great destroyer, make it quick
22:14 hercynium joined #parrot
22:18 plobsing ash_: for the libffi component of your GSoC, you might find the hooks I added recently useful: NCI_FB_CB, NCI_FB_UD
22:18 ash_ k, i'll look into those
22:19 ash_ i found an interesting thing in the macruby blog, they used libffi for their bridge to obj-c in version 0.4, but in version 0.5 they switch to llvm constructing real C style calls at runtime, which were (they said) 3-4 times faster
22:20 ash_ but that requires llvm support, but if its faster, i think it would be cool to have (assuming you have support for it)
22:20 plobsing ash_: IIRC, thats because they were static thunks - 1 thunk per function as opposed to 1 thunk per signature.
22:20 plobsing that might take some re-architecting of our NCI system
22:21 plobsing but when we move native pmc methods away from using nci.pmc, our loading of thunks can become eager if need be
22:21 ash_ ah, just repeating what i read, i don't know much about how its actually implemented
22:21 plobsing *probably
22:22 darbelo ash_: You might also want to look at kid51's detect_llvm branch.
22:22 plobsing ash_: also, I'm not terribly concerned about the efficiency of the thunks. If you're calling into and out of native that often, you're doing it wrong.
22:22 ash_ yeah, i saw that, that will make adding configuration options a lot easier
22:23 darbelo it's ~6 months old, so it might need some updating.
22:23 ash_ yeah, but its a head start, also plobsing did his work with libjit and made parts of the stack frame pluggable if i remember correctly
22:24 ash_ pluggable might not be right, a configuration option
22:24 darbelo (pluggable everything)++
22:24 plobsing ash_: libjit wasn't pluggable at all. it was binary, frame builder or no. which I hated because I realized it wouldn't scale beyond 1 option.
22:25 ash_ ah
22:25 plobsing I don't think parrot's configure system is set up to handle multiple mutually exclusive options for the same purpose
22:25 plobsing I would love to be proved wrong on that
22:26 darbelo It probably involves adding a runstep, but sounds doable to me.
22:26 darbelo We already do it for compiler ;)
22:26 ash_ so, during configuration you'd have to check for two options, if 1's set, do X actions, if other is set do Y, if both, error, if neither, use built in stack frame?
22:26 plobsing working with parrot's configure system was the part of libjit framebuidler I enjoyed the least
22:27 plobsing which is why I'm trying to make things runtime pluggable, side-stepping my issues
22:27 plobsing hence the hooks
22:28 ash_ which do you think would be best?
22:28 ash_ should i try to make the stack frame completely pluggable?
22:31 plobsing ash_: what do you mean?
22:31 ash_ would you rather i make the stack frame pluggable? or a configuration option? (if i do the GSoC stuff)
22:32 bacek_ joined #parrot
22:33 plobsing Do the easier thing first - configuration option.
22:33 plobsing If it doesn't move too much stuff around (and hopefully it won't, nci should be fairly isolated), it can easily be addapted later.
22:34 darbelo I also have a hard time cooking up a sane use case for mixing and mantching frame-builders at runtime.
22:34 plobsing darbelo: it makes plugging them at configure time easy - just stuff it into global init
22:35 plobsing it also reduces the work required to make a new one (in my eyes), because you don't have to mess around with parrot configure.
22:35 plobsing and you can conceivably develop it out of repo as a separate library
22:36 darbelo Okay. The last point sold me.
22:37 darbelo Downloading and installing a third-party frame-builder without recompilling parrot is a desirable feature.
22:38 darbelo Not that I expect a big boom for *that* market, mind you.
22:38 plobsing darbelo: I'm not entirely sure that is the case. I thought so initially but then I considered the "use strict; use warnings" boilerplate in perl 5.
22:38 plobsing consider having "use nci-llvm;" at the top of every one of your programs
22:39 plobsing I'm 50/50 on it. But from a dev perspective, anything that lets us independantly develop something better and then drop it in is a good thing IMHO.
22:40 darbelo I'm not following you. Who would put that there and why?
22:40 plobsing if you need to use NCI for your program, you just expect it to be there.
22:40 plobsing you don't care how it got there, you don't want to think about it
22:41 darbelo Yes, and NCI should try to allways work the same, no matter what's under the covers.
22:42 darbelo Oh, wait you mean that just installing a new framebuilder won't disable the old one?
22:42 plobsing also consider the headache to bindings library authors. "which nci module do I load?". Although I suppose you could have nci.pir that decided that for you.
22:42 plobsing darbelo: no. you have to load it into the interpreter for it to replace.
22:43 darbelo That can be made an option to the parrot executable, not something that PIR would have to care about.
22:44 darbelo I'm thinking of a model similar to the one bacek's using for his bohem_gc work.
22:44 plobsing darbelo: options to the parrot executable are a bad idea - how do I specify them to ./perl6 or ./parrot-nqp?
22:44 Whiteknight joined #parrot
22:45 darbelo Damm fakecutables.
22:45 plobsing damn OSs that don't support shebang
22:45 cotto_work sounds like a fakecutable issue
22:46 darbelo Using an env var feels dirty here.
22:46 ash_ i think its fine doing a configuration option... personally, i'd rather just configure at compile time and forget about it
22:46 darbelo ash_: Sure, take away the bikeshed before it's painted. See if we care ;)
22:47 ash_ lol, in that case, lets statically link all libraries into rakudo, so then you can't change anything!
22:50 cotto_work It'd be nice to make fakecutables support Parrot cli args.
22:50 Coke cotto_work: IMO, not worth it.
22:51 Coke if you want to invoke your parrot with very specific options, you can already do that.
22:51 cotto_work yeah but I'm thinking of making life easier for HLL users.
22:52 plobsing Coke: being able to specify hash seed to rakduo would have made at least one bug I've dealt with easier to diagnose
22:52 Coke plobsing: you can do that. parrot <options> perl6.pbc
22:52 plobsing that's what I wound up doing.
22:53 plobsing but it took me 5 minutes to figure out I had to do that
22:54 Coke given how much time I've spent chasing things in parrot, that doesn't seem unreasonable. =-)
22:54 Coke a doc fix somewhere in rakudo might be nice. I'll see about adding one.
22:54 Coke s/fix/upgrade/
22:54 cotto_work The trick is to properly separate Parrot options from HLL compiler options.
22:55 ash_ you could configure parrot from ENV vars?
22:55 ash_ maybe?
22:55 purl Maybe not.
22:55 cotto_work ash_: what do you mean?  Parrot can read the environment (and I use that in the profiling runcore).
22:56 cotto_work there's no existing equivalence between CLI options and env vars though
22:56 plobsing If we could somehow use an HLL to process all options (using a default interpreter, spawning a differently configured one), HLLs could parse their own flags and pass things along to parrot
22:56 ash_ instead of flags on the fakeecutable use env values
22:56 darbelo --parrot-options this-one,that-one,other-one=thisvalue is a mouthful to type out, but is pretty collision free.
22:56 cotto_work I'm not much of a fan of them as-is, but that's a potential option
22:58 darbelo I dislike env var for the fact that I might want to run different HLLs with different options.
22:58 darbelo And having one var for each HLL is just too much.
23:02 ash_ darbelo: you could have a hierarchy, PARROT_VAR as the fallback; RAKUDO_VAR for a specific executable
23:02 ash_ thats probably to complicated though, no need to do that many complicated things
23:03 Coke do we install manpages?
23:04 davidfetter Coke++
23:04 Coke I don't see any.
23:04 Coke ah well.
23:05 ash_ manpages are useful i find...
23:05 darbelo I'm guessing that would require pod2man, which I lack.
23:05 plobsing docs lie. RTFS.
23:06 ash_ lol
23:06 cotto_work But the source is OCaml.
23:06 ash_ (i find haskell to be very hard to read...)
23:07 darbelo I just print the source, set it on fire, and keep inhaling the fumes until it's all reveled to me in a shamanic vision.
23:08 Mokurai joined #parrot
23:11 Whiteknight darbelo++
23:15 bacek_ left #parrot
23:16 bacek_ joined #parrot
23:17 bacek msg chromatic I'm going to put immutable string aside. I can't understand Rakudo's signature binding at all...
23:17 purl Message for chromatic stored.
23:18 Coke darbelo: rakudo/docs/running.pod updated.
23:18 bacek msg chromatic OTOH, if you can create good (fsvo) benchmark test for compact_pool it will be helpful.
23:18 purl Message for chromatic stored.
23:18 dalek rakudo: 2ec0e4e | Coke++ | docs/running.pod:
23:18 dalek rakudo: Add docs on specifying parrot options.
23:18 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​ec0e4ec388a690850ee3216baa1aafe1de0e74a
23:19 darbelo Coke: Huh?
23:20 ash_ Whiteknight: apparently, the new versions of macruby are OS X only, the first few releases worked on linux, but not anymore
23:20 Coke er, plobsing.
23:20 darbelo Ah.
23:20 plobsing Coke++
23:22 Whiteknight ash_: ok
23:22 plobsing ash_: any idea why that is?
23:23 ash_ autozone, and grand central dispatch mostly, i think
23:24 bacek what the heck it "t/tools/install/testlib"?
23:25 ash_ AutoZone is a generationaly mutli-threaded GC system (its built into the ObjC runtime)  macruby uses it, so they could remove the GIL ruby has
23:25 allison joined #parrot
23:26 ash_ AutoZone is open source, but i don't think its been ported anywhere else
23:26 ash_ grand central dispatch is also open source, but again, i don't think its been ported anywhere other than OS X (might be wrong about this one)
23:27 cotto_work baest: "This is Parrot, version 0.9.1"  Looks obvious to me. ;
23:27 cotto_work )
23:27 ruoso joined #parrot
23:27 dalek partcl-nqp: 91668b4 | Coke++ | src/Partcl/ (2 files):
23:27 dalek partcl-nqp: Add support for ${name} variables.
23:27 dalek partcl-nqp: Stub in support for $array(index).
23:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/91668b4b6418638e517bc9e141c0b695f079d0ae
23:27 plobsing cotto_work: I thought that too until I peaked into DEPRECATED.pod and noticed my recent changes there
23:27 dalek partcl-nqp: 20fc1e0 | Coke++ |  (2 files):
23:27 dalek partcl-nqp: disable the hard parts of this test and TODO what needs it.
23:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/20fc1e04c639aa6ebc6bda48727e31ae757d1343
23:27 dalek partcl-nqp: 783d48f | Coke++ | docs/todo.pod:
23:27 dalek partcl-nqp: some of these todos are done. fix a syntax error.
23:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/783d48f8512f7e13414b11df9f52efe07bde5018
23:27 dalek partcl-nqp: fd74fd9 | Coke++ |  (3 files):
23:27 dalek partcl-nqp: Add simplistic TclArray
23:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/fd74fd9bbf964218a39e43e5188cdf8ce9bcee46
23:27 dalek partcl-nqp: 4b11aab | Coke++ | src/Partcl/commands/main.pm:
23:27 dalek partcl-nqp: relocated helper sub
23:27 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/4b11aab14ee539465237c6d05d313031a155d461
23:28 Coke win 2
23:36 dalek decnum-dynpmcs: r198 | darbelo++ | trunk/src/pmc/dec (3 files):
23:36 dalek decnum-dynpmcs: Change PObj_active_destroy_SET() to PObj_custom_destroy_SET().
23:36 purl dalek: that doesn't look right
23:36 dalek decnum-dynpmcs: Apparently I forgot to commit this earlier.
23:36 dalek decnum-dynpmcs: review: http://code.google.com/p/decnu​m-dynpmcs/source/detail?r=198
23:41 darbelo It probably shows how many users I have that I never got a bug report about the library being 100% borked ;)
23:43 cotto_work Woohoo.  bacek++
23:44 sorear It's still borked.  Active destruction can't be used with dynpmcs.
23:44 darbelo sorear: But not a 100% !
23:44 darbelo Now it passes tests and all.
23:45 darbelo Also notice that two of the changes are in commented out, right abobe a statement to that fact.

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

Parrot | source cross referenced