Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches, finish exceptions_refactor branch | GSoC students, please read trac.parrot.org/parrot/wiki/GSoCersStartHere
Set by moderator on 12 May 2010.
cotto clock? 00:03
purl cotto: LAX: Sat 5:03pm PDT / CHI: Sat 7:03pm CDT / NYC: Sat 8:03pm EDT / LON: Sun 1:03am BST / BER: Sun 2:03am CEST / IND: Sun 5:33am IST / TOK: Sun 9:03am JST / SYD: Sun 10:03am EST /
cotto bacek, got any hacking plans for the day? 00:06
bacek cotto, not really. It's kids day for me. 00:07
So, I'm heading off.
cotto Great for you! Have a good time.
bacek cu
dalek rrot: r46691 | plobsing++ | trunk (5 files):
remove deprecated sizeof_i_i op. TT #633
00:46
TT #633 closed by plobsing++: sizeof_i_i opcode uses old integer types.
TT #633: trac.parrot.org/parrot/ticket/633
00:48 rurban_ joined 00:57 theory joined 01:02 theory joined
dalek rrot: r46692 | plobsing++ | trunk/DEPRECATED.pod:
change removal eligibility from 6 month to 3 month deprecation cycles
01:03
purl dalek: that doesn't look right
01:18 agricola joined
cotto change purl into a cow 01:19
purl cotto: that doesn't look right
cotto She'd probably have made a crummy hamburger anyway. 01:20
purl, purl?
purl i am a retard or a trannybot or a fuckslut in GumbyBRAIN's mind or the national trannywreck champion or better than any of you #perl fucktards or very vile or the one to watch >:) or omniscient or 13 or well behaved or useless or fun or a megalomaniac or known to get testy if not fed or slacking off or gummy in scalar context or a silly bot or a stitch
sorear purl, flooterbuck? 01:21
purl hmmm... flooterbuck is well, flooterbuck is the kind of infobot that i am or a dagbrown, mendel, warewolf and kd production or actually maintained or github.com/dagbrown/flooterbuck/ or git-clone git://github.com/dagbrown/flooterbuck.git or a complete pile of ass written in perl 4 or mostly warewolf's fault really.
Coke plobsing: yes? 01:37
plobsing Coke: can you test to see that my recent fix to TT #1632 work for you? 01:43
Coke how are dynops not part of the corevm? 01:47
plobsing: checking 01:50
01:55 JimmyZ joined
Coke plobsing: no segfault. now I'm getting: 01:56
nopaste "coke" at 192.168.1.3 pasted "this." (7 lines) at nopaste.snit.ch/20565
plobsing looks like a string vs integer issue 01:58
Coke nope. 02:11
getNumber() (helper sub) is throwing an exception where it didn't used to. something in PGE.
this is throwing the error: 02:14
match = parse(str, 'pos'=>$I0, 'grammar'=>'TclExpr::Grammar')
nopaste "coke" at 192.168.1.3 pasted "new error from PGE" (10 lines) at nopaste.snit.ch/20566 02:15
02:19 shockwave joined
dalek rrot: r46693 | plobsing++ | trunk/src/ops/core.ops:
allow dlvar on libparrot the same as dlfunc
02:24
rrot: r46694 | cotto++ | branches/ops_pct/compilers/opsc (2 files):
[opsc] small simplifications
cotto pmichaud++ for tose 02:27
*those
02:35 integral joined 02:50 theory joined 03:00 JimmyZ joined 03:11 abqar joined 03:13 janus joined
tcurtis Is there any definitive list anywhere of the valid values for the pasttype attribute of PAST::Op nodes? 04:13
04:15 snarkyboojum joined
sorear tcurtis: PAST::Compiler.keys 04:16
pasttype values translate directly into method names 04:17
so, actually it wouldn't be keys anymore
tcurtis Thanks, sorear++. 04:30
sorear I think there should be a wiki page somewhere with a list of low-hanging optimizer fruits 04:32
so that Joe Impatient can help take load off tcurtis
or is coming up with rules not at all a bottleneck for you?
tcurtis I don't know yet. We'll see once I've implemented PAST::Walker and PAST::Pattern. 04:36
04:43 TiMBuS joined 05:06 LoganLK joined
plobsing do any opcodes other than clear[insp] modify registers that are not their direct arguments? 05:12
05:12 snarkyboojum joined
cotto interesting question 05:12
purl scratches her chin...
cotto I'm not quite sure why we have the clear ops around still
plobsing I'd like to deprecate them because they throw the optimizer for a loop 05:13
also I don't see any practical use for them
cotto We also seem to have set[insp]_ind 05:14
tcurtis Is there a name for the things that PMC's "provide"?
cotto Those are odd. 05:15
plobsing It would make optimizing bytecode much easier if ops were required to only operate on their arguments
cotto points plobsing at DEP.pod and trac 05:16
plobsing I intend to. I just want to know if there is legitimate functionality there.
cotto clear sounds like a throwback from when Parrot thought it was a cpu. 05:17
Heh. The setx_ind ops have a warning that the could mess up the register allocator and say "handle with care". 05:24
plobsing I'll be sure to wear gloves when I rip them out. 05:25
cotto I think "handle with fire" would be more helpful instructions.
tcurtis Sounds like it should be "handle with unicorns". 05:26
cotto Perhaps an op audit is in order. 05:28
I have to wonder how much more junk is lurking in there. 05:29
plobsing there is some cruft lying about everywhere.
plobsing considers the set_pointer_keyed_str to be of dubious value. 05:30
cotto I'm reasonably sure that the setx_ind ops aren't even tested.
plobsing I know that clearx are, but only for the purpose of showing that they work 05:31
sorear setx_ind ... my initial reaction was "WTF!?" 05:33
cotto That's good.
plobsing initial reaction? does that mean you've warmed up to the idea? 05:35
if so, can you help me see the light? all I see is red when I look at that code. 05:36
cotto I'm saying that sorear's reaction indicates sanity. 05:39
sorear plobsing: indexed access to frames makes sense in whatever our low-level IR becomes 05:40
as a PIR opcode, it needs to die
cotto Hmmm. We have eq_addr and issame which do almost the same thing. 05:41
plus neq_addr and isntsame
sorear and by low level, I mean [esp+eax*4-0x2C]
plobsing please say we aren't implementing all the x86 addressing modes! 05:42
sorear plobsing: no, that's llvm's job
or libjit's, or whatever
(though, from the looks of it, we've gotten into a bit of technical decision phobia and are going to implement yet another abstraction layer instead of picking a code generator) 05:43
cotto sorear, then let's implement them in Lorito and rip them out of pir
plobsing why do we need indirect register access?
if you want something like that, use a lexpad
sorear plobsing: for stack-allocated inline arrays 05:44
cotto: that's what I just said
plobsing sorear: parrot is CPS. I don't see how stack-allocated arrays are supposed to work. 05:45
tcurtis How do you test what a PMC type "provides"? 05:47
JimmyZ CPS? 05:48
purl well, CPS is continuation passing style
plobsing tcurtis: the does opcode, I think
JimmyZ: in stead of a return pointer, parrot has a continuation pointer, and call frames are not guarranteed to be in any sort of ordering 05:50
tcurtis plobsing: indeed. Thanks. 05:52
05:53 snarkyboojum joined, sorear joined
JimmyZ plobsing: thanks, and purl++ 05:53
cotto anyone know how to fix tab completion for ack in Ubuntu 10.04? 05:59
plobsing what's broken about it? 06:00
cotto It messes up file paths and has been making me crazy.
It adds an extra space after dirs
plobsing why not just delete the custom handler and rely on the (mostly sane) default behaviour?
cotto That makes way too much sense. 06:01
the exchange ops seem strange 06:11
plobsing didn't parrot use specific registers in the calling convention at some point? then it would have made sense to shuffle things between registers. 06:14
also they might be useful for optimizaters, but that would require a sufficiently smart optimizer 06:15
s/optimizaters/optimizations/
dalek website: tcurtis++ | PAST Pattern Matching 06:33
website: www.parrot.org/content/past-pattern-matching
plobsing tcurtis: how does your PAST transformer library differ from TGE? 06:45
tcurtis TGE? 06:49
purl TGE is slooooow. or the tree grammar engine or how you transform a PGE Match Hierarchy into PIR code.
plobsing compilers/tge 06:50
tcurtis Frankly, I don't know. 07:05
sorear AFAIK TGE is dead. 07:06
plobsing oic. I don't know much about that side of parrot.
sorear NQP-rx-based compilers don't use it
plobsing any idea why?
sorear It's a neat idea but you don't see deep transformations that much outside of optimizer theory 07:07
tcurtis is going to be the only user in all likelyhood
opbots names
opbots trust tcurtis 07:08
slavorgn Ok
slavorg Ok
plobsing well even if it is dead, you might be able to steal some code and save some time
sorear there are a lot of dead-ish languages still on PGE/TGE though 07:09
so we can't just deprecate and kill unless we don't like our "30 dynamic languages run on parrot!!!" gimmick
plobsing I thought PGE was on the chopping block 07:10
sorear That's very good to hear.
plobsing thought. as I said, I know almost nothing of these things 07:11
cotto I think the biggest reason it's still around is that Lua uses it. 07:14
sorear I'll rewrite lua in NQP-rx, then. 07:17
plobsing sorear++ 07:18
sorear There's a peculiar shortage of NQP-rx languages that use lexicals
Lua would make an excellent test case
tcurtis It looks like TGE is closer to tree traversal than pattern matching. 07:23
plobsing I'm guessing based on the error messages I'm getting that the CONST_STRING pre-processor doesn't support multiple entries on one line 07:46
sorear hehehehe 07:50
it's doing that to protect you.
CONST_STRING isn't a full preprocessor; it's just a pre-extractor 07:51
plobsing yeah, I know enough about it to hate it
sorear at C compile time, CONST_STRING("this stuff is actually being ignored") = CONST_STRING_LINE_(2394) = CONST_STRING_2394 = interp->strings[94]
ah 07:52
plobsing the only reason I have 2 CONST_STRINGS on the same line is that the CONST_STRING pre-processor whines when you put a CONST_STRING in an expression broken over lines
as in 'CONST_STRING(interp, "1"), \\n CONST_STRING(interp, "2")' 07:53
sorear right 07:54
if you had 2 CONST_STRING in the same statement, it wouldn't be possible to tell them apart at compile time
because some C compilers only reset __LINE__ on semicolons 07:55
plobsing would it work if the preprocessor inserted some kind of hash based on string contents? 07:56
sorear The C preprocessor isn't powerful enough to do that. 07:57
c2str doesn't change the C at all - it just builds the global strings table
plobsing the CONST_STRING preprocessor
oic
tcurtis Good night, folks. Feel free to msg, email, or contact-in-some-other-manner me if you have any suggestions concerning my GSoC stuff. 08:02
JimmyZ good night 08:05
08:10 fperrad joined 08:19 iblechbot joined 08:41 snarkyboojum_ joined 08:49 rurban_ joined
moritz www.parrot.org/content/past-pattern-matching does this sound like TGE re-invented to anybody else? 09:22
that said I haven't every used TGE 09:23
09:24 fperrad_ joined
dalek rrot: r46695 | fperrad++ | trunk/t/library/lwp.t:
[LWP] test unknown protocol
10:05
10:14 mikehh joined
dalek rrot: r46696 | NotFound++ | trunk (5 files):
cleanup runloop creation and destruction and experimental unroll opcode, TT #1635
10:22
rrot: r46697 | NotFound++ | trunk/t/pmc/exception-old.t:
fix and un-todo a exception test by using the unroll opcode
10:35 particle1 joined 10:36 eternaleye joined
dalek rrot: r46698 | mikehh++ | trunk/src/call/ops.c:
fix codetest failure - assert args
10:38
10:54 JimmyZ joined
dalek rrot: r46699 | mikehh++ | trunk/src/ops/experimental.ops:
fix codetest failure - line length
10:54
11:00 lucian joined 11:17 iblechbot joined 11:34 Whiteknight joined 11:35 uniejo joined 11:39 AzureStone joined
dalek rrot: r46700 | bacek++ | trunk (13 files):
Add 'does invokable' to all PMCs with VTABLE_invoke (except Object). Part of TT#1597
12:32
13:06 kid51 joined
dalek nxed: r467 | julian.notfound++ | trunk/winxedst (2 files):
use unroll in exception handling
13:11
13:19 joeri joined
dalek rrot: r46701 | jkeenan++ | trunk/ext/nqp-rx/src/stage0/nqp-setting.pm:
[codingstd] Set file metadata on nqp-setting.pm.
13:21
rrot: r46702 | jkeenan++ | trunk/t (2 files):
[codingstd] Add several entries to list of files where duplicate copyright

truly duplicated copyright notice. ext/nqp-rx/src/stage0/.nqp-setting.pm is still problematic.
13:37
13:44 snarkyboojum joined
kid51 mikehh ping 13:58
14:18 fperrad_ joined
Coke TGE is not dead. 14:20
dalek kudo: 32150d5 | (Martin Berends)++ | src/Perl6/Module/Loader.pm:
[Perl6/Module/Loader.pm] when a 'use' or 'need' cannot find a module, just say
14:33
14:33 JimmyZ joined
moritz now it dies with 14:34
Null PMC access in find_method('new')
current instr.: '!create_anon_enum' pc 1000 (src/glue/enum.pir:51)
called from Sub '_block18' pc 67 (EVAL_2:13)
because it called $P0 = get_hll_global 'EnumMap' 14:35
14:40 Mokurai1 joined
pmichaud m09:22 <moritz> www.parrot.org/content/past-pattern-matching does this sound like TGE re-invented to anybody else? 14:41
I think that past-pattern-matching sounds more like what TGE was intended to become but never did. 14:42
kid51: I'm cleaning up the codetest problem for nqp-setting 14:53
14:55 plobsing joined
pmichaud iirc, I think it was decided that files in ext/ didn't have to meet any of Parrot's coding standards. 14:55
or something close to that.
moritz Coke++ mentioned as much on parrot-dev 15:00
pmichaud ah, hadn't seen that message yet (hadn't sync'd mail). Coke++
anyway, for ext/nqp-rx I'm going to go ahead and work around the problem entirely anyway 15:01
first, I'll change nqp-setting.pm to nqp-setting.nqp
then I'll add a "#! nqp" marker at the beginning of the generated file
either one of those or both should get it to be ignored by the codetest targets 15:02
15:09 theory joined 15:10 tetragon joined
kid51 pmichaud: thanks 15:21
pmichaud kid51: testing now 15:23
kid51 I saw that post from Coke and agree with it. But yesterday there was a point when all the codingstd tests were passing, so I thought mikehh or someone had implemented a permanent fix. 15:24
(as opposed to a bandaid)
pmichaud Me too. Anyway, what I'm doing now will definitely avoid the problem, as well as make it slightly easier for someone coming from outside to understand.
for example, the generated file from nqp-rx now says explicitly it was generated within nqp-rx 15:25
kid51 I've stared at Parrot::Distribution and Parrot::Docs::* many times over the past 3.5 years and always come away with my head spinning.
Hmm, lemme try something 15:29
Perhaps if I add: ext/ to the list of excluded directories starting at line 505 of lib/Parrot/Distribution.pm's get_perl_exemption_regexp() 15:30
dalek p-rx: 4e9b9f4 | pmichaud++ | build/gen_setting.pl:
Add "#! nqp" marker and generation note to beginning of nqp-setting.nqp .
15:31
p-rx: e76a952 | pmichaud++ | build/Makefile.in:
Rename nqp-setting.pm to nqp-setting.nqp .
p-rx: 3397f77 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap.
p-rx: 44e68e4 | pmichaud++ | (2 files):
More cleaning up for nqp-setting.pm -> nqp-setting.nqp .
p-rx: 136d1b6 | pmichaud++ | src/stage0/ (3 files):
Update bootstrap.
pmichaud kid51: should now be fixed in r46703 15:34
at least for the nqp-rx stuff.
kid51 Thanks. My partial fix will be coming in a few minutes as well. Can you post to list? 15:35
mikehh kid51: for some reason ext/nqp-rx/src/stage0/nqp-setting.pm is failing codetest (5 tests) - it shouldn't even be tested
dalek rrot: r46703 | pmichaud++ | trunk (5 files):
[nqp]: Rename nqp-setting.pm to nqp-setting.nqp to avoid make codetest issues.
rrot: r46704 | fperrad++ | trunk (3 files):
[LWP] "GET ļæ½www.parrot.org HTTP/1.1" works
pmichaud mikehh: I just worked around that in r46703 :)
kid51 mikehh: Yes that's what pmichaud and I are working on
... even as we speak :-)
pmichaud I don't know *why* it was being tested, but it won't be any more. :-)
it's now nqp-setting.nqp
and the first line is "#! nqp" 15:36
kid51 It was being tested because it was not being excluded from the list of files designated as 'perl' in Parrot::Distribution.
That will change in a few minutes.
mikehh kid51: the tests pass in ops_pct branch which as far as I know had the same version of nqp-rx
anyway looking at that now 15:37
kid51 mikehh: Am retesting in trunk after r46705; if you want to port those revisions into branch, feel free. 15:40
mikehh kid51: I was woring on that earlier, but had to go out, trying to figger ot why it was working in ops_pct branch and failing in trunk - will work on that later 15:42
15:50 Mokurai1 joined 15:52 snarkyboojum joined
kid51 breathes sigh of relief: make codetest PASS in trunk (r46707) 15:54
dalek rrot: r46705 | jkeenan++ | trunk/lib/Parrot/Distribution.pm:
Exclude files under ext/ from the scope of get_perl_language_files().

codingstd tests: t/perl/Parrot_Distribution.t t/codingstd/trailing_space.t t/codingstd/copyright.t t/codingstd/cuddled_else.t t/codingstd/svn_id.t t/codingstd/perlcritic.t
purl well, t/codingstd/trailing_space.t is saying that there are trailing spaces or tabs in compilers/pirc/src/pirlexer.c and compilers/pirc/src/pirmain.c
purl well, t/codingstd/copyright.t is broken again if someone wants to fix it.
rrot: r46706 | pmichaud++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
[pct]: Add a better note to PCT::HLLCompiler explaining the @INC
rrot: r46707 | jkeenan++ | trunk/runtime/parrot/library/HTTP:
Set svn:ignore on Message.pbc.
rrot: r46708 | mikehh++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
fix codetest failure - trailing space
mikehh ok codetest now passes, there were some problems with distro_tests earlier (MANIFEST.generated sort) 15:58
16:00 japhb joined 16:01 khairul joined
kid51 mikehh: Yes. Correcting that in r46710 16:06
16:06 preflex joined
dalek rrot: r46709 | plobsing++ | trunk/DEPRECATED.pod:
opcode deprecations
16:11
rrot: r46710 | jkeenan++ | trunk/MANIFEST.SKIP:
Update MANIFEST to reflect change in svn:ignore.
16:13 fperrad_ joined
dalek TT #1642 created by plobsing++: [DEPRECATION] ops which modify registers that are not their direct ... 16:13
TT #1642: trac.parrot.org/parrot/ticket/1642
TT #1643 created by plobsing++: [DEPRECATION] exchange op
TT #1643: trac.parrot.org/parrot/ticket/1643
plobsing Parrot::Pmc2c::Parser has a line '# To be deprecated'. Anyone know what this is about? 16:22
16:25 preflex joined
dalek rrot: r46711 | mikehh++ | trunk/MANIFEST.generated:
modify (by hand) MANIFEST.generated to fix sort order
16:27
kid51 mikehh: Until just now, I was unaware of the existence of t/distro/manifest_generated.t 16:43
Should it be included in 'make codetest'?
Does tools/dev/mk_manifest_and_skip.pl have to change to guarantee that t/distro/manifest_generated.t will PASS?
mikehh kid51: I think it's finw in distro_tests - it gets tested in fulltest 16:45
we probably need a separate utility to make sure MANIFEST.generated is a) sorted and b) complete
16:48 rurban__ joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33861), fulltest) at r46711- Ubuntu 10.04 amd64 (g++) 16:49
dalek rrot: r46712 | plobsing++ | trunk/src/ops/set.ops:
update string clone for stringnull
17:01
kid51 mikehh: The sorting would be easy. But guaranteeing its completeness has always eluded us. There was an old RT about that; problem was partially addressed with MANIFEST.configure.generated. 17:05
RT may have been carried forward into Trac.
But, in general, MANIFEST.generated has always been hand-edited. 17:06
mikehh kid51: the test was checked in by plobsing++ about 10 days ago, but copyright seems to indicate it was around before 17:07
kid51 He could have simply copied the copyright notice from another file.
plobsing that is probably the case
Whiteknight what happened to the codestring branch. Was it merged? 17:08
or was it BALEETED?
kid51 svn log --stop-on-copy indicates file was first committed on May 06
My impression is that Coke was eventually able to cherry-pick the best stuff and commit it to trunk. 17:09
Whiteknight okay
that's sort of what it's looking like in the svn logs, but I wanted to be sure
kid51 I just fixed copyright in t/distro/manifest_generated.t 17:10
mikehh kid51: as regards codetest - I generally run manifest_tests and codetest after a configure, distro_tests require a build 17:12
kid51 k 17:15
For reference, here is the RT in which MANIFEST.generated was discussed: rt.perl.org/rt3//Public/Bug/Display...l?id=40817
dalek rrot: r46713 | jkeenan++ | trunk/t/distro/manifest_generated.t:
File was first committed in 2010, so that's the only year that needs to appear in current copyright notice.
17:17
17:22 theory joined
dalek rrot: r46714 | plobsing++ | trunk/src/ops/math.ops:
use abs/fabs in stead of roll-your-own abs
17:33
17:34 iblechbot joined
NotFound_gf plobsing: don't do that. 17:47
plobsing NotFound_gf: don't do what? 17:48
NotFound_gf plobsing: use abs/fabs
plobsing why not?
we already did in the inplace ops
moritz too platform specific? 17:49
plobsing my manpages say that abs/fabs are C89
NotFound_gf We allow to select INTVAL and FLOATVAL types, and that functions use specific types that aren't always compatible. 17:50
plobsing oic 17:51
NotFound_gf Also, abs can be overloaded in C++ and some compiler have had problems with bad implementation of that,
Coke branches/codetest is dead and gone. 17:54
dalek a: 81fcdb3 | fperrad++ | (4 files):
refactor PMC with 'provides invokable'
17:55
Coke effective perler? 17:57
brian d foy?
purl i guess brian d foy is at mailto:comdog@brian-d-foy.com and is also BRIAN D FOY or at www.169th.com/OPFOR/slack.jpg or www.brian-d-foy.com/ or BRAIN D. FOY or "No bowling jacket for you!" or "Forbid Any" or "I, of Dry Ban!" or playing GI Joe as of early 2003 or use.perl.org/~brian_d_foy/journal/10253 or at use.perl.org/~brian_d_foy/journal/15320
Coke I am annoyed that bdf is using code without attribution. 17:58
mikehh In the book or on his blog? 18:01
sorear whose code? 18:10
purl i guess whose code is online.
plobsing NotFound_gf: replacing all instances of fabs() with Parrot_fabs() (operates on FLOATVALs) causes test failures 18:16
dalek kudo: 87e0e1b | moritz++ | src/Perl6/Actions.pm:
enable calling a fully qualified enum key
19:30
20:21 LoganLK joined 20:23 fperrad_ joined
dalek rrot: r46715 | fperrad++ | trunk/runtime/parrot/library/LWP.pir:
[LWP] complete progress()
20:34
cotto fperrad++ on the lwp stuff 20:38
particle1, ping 20:42
dalek rrot: r46716 | fperrad++ | trunk (2 files):
[LWP] add an example: get.pir
21:07
cotto msg particle Do you know what trac.parrot.org/parrot/ticket/1049 is about? 21:17
purl Message for particle stored.
GeJ Good morning everyone. 21:43
cotto happy monday, GeJ 21:44
bacek ~~ 21:50
dalek rrot: r46717 | fperrad++ | trunk/runtime/parrot/library (2 files):
[LWP] improve (& fix) GET http
21:56
rrot: r46718 | cotto++ | trunk/lib/Parrot/OpsRenumber.pm:
[opsrenumber] minor simplification, no functional changes (even in the rare case when this script is run)
21:56 mikehh joined
bacek seen pmichaud 22:07
purl pmichaud was last seen on #parrot 6 hours, 31 minutes and 29 seconds ago, saying: and the first line is "#! nqp"
sorear bacek: pmichaud was last seen in #perl6 7 minutes ago 22:08
pmichaud here for a bit, yes.
bacek sorear, thanks
pmichaud, If I replace PAST::Block.symtable with OrderedHash than I can implement multis in NQP in about 20 lines of code. 22:09
Any objections?
pmichaud I'd like to see a patch.
bacek I'll create separate branch in nqp than
pmichaud seems to me that multimethod information might belong on the parameter nodes anyway
and in the case of Rakudo, MMD information really belongs orthogonal to the parameters, because rakudo uses :capture 22:10
bacek Parameter nodes are just PAST::Vars?
pmichaud so I'm not sure that the symbol table is the correct place to be holding MMD information
bacek: yes
but overall I've found that things are much cleaner when mmd information can be separated from parameter information 22:11
bacek pmichaud, $BLOCKINIT?
pmichaud no 22:12
I think I'd prefer one or both of
(1) a .multi attribute on PAST::Block
(2) automatically constructing multi information from attributes on PAST::Var with :scope<parameter>
22:12 davidfetter joined
bacek I thinking about (2) 22:13
(And this is reason to switch symtable to OrderedHash)
pmichaud why is tht?
bacek To preserve order?
pmichaud I mean, what does that have to do with the symtable?
order already exists in the parameter nodes
don't need the symtable to do that 22:14
bacek Ah... Yes.
Even easier :)
What about adding .type to PAST::Var for storing type info?
Or use .vivibase? 22:15
pmichaud no, not vivibase
vivibase can be much more complex than a type
I think it should be .multi or .multitype 22:16
again, assuming that the type being used for mmd dispatch could be different from the actual type of the parameter
for example, the following is valid in Parrot
.sub 'foo' :multi(XYZ) 22:17
.param string abc
bacek yes.
pmichaud note that abc is a 'string', but mmd uses XYZ
bacek Ok. I'll implement first version in nqp using just hashes and then we can propagate it into PCT for proper encapsulation/handling. 22:18
pmichaud so, I think that .type on PAST::Var should be reserved for the type of the variable, with something else used to indicate the type for mmd dispatch 22:19
maybe .paramtype is better
anyway, I'll happily review draft code and say what I like or don't like
bacek Deal :)
22:19 patspam joined
bacek Later tonight. $dayjob is waiting for me... 22:20
pmichaud sure, I need to review sorear++'s stuff first anyway :)
cotto can a PAST be frozen and thawed to/from a file correctly? 22:29
sorear it's just a tree structure
PAST::Json would be a great addition to the toolchain
I don't know how to operate our bytecode serializer, so I don't know if that would work 22:30
pmichaud we've played with the idea of freezing/restoring to json or yaml, but still needs some work.
22:32 szabgab joined
dalek rrot: r46719 | fperrad++ | trunk (5 files):
[LWP] some fix
22:45
22:48 fperrad_ joined 22:58 Psyche^ joined 22:59 tcurtis joined
dalek rrot: r46720 | fperrad++ | trunk/runtime/parrot/library/LWP.pir:
[LWP] cleanup
23:01
23:03 snarkyboojum joined
Coke mikehh: it was on his blog. the JAPHS there with the camel and no punctuation. (both are from wikipedia) 23:21
s/no/all/
mikehh Coke: yes I saw that, just wondering, I have the book on order 23:27
just waiting for the book from cromatic 23:29
chromatic 23:31
23:55 kid51 joined