Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply merge | find out what's up with the slice opcode
Set by moderator on 28 October 2009.
dalek rrot-linear-algebra: 2a60816 | Whiteknight++ | src/pmc/nummatrix2d.pmc:
put methods together and add some stub POD
00:03
rrot-linear-algebra: 5a3e8c2 | Whiteknight++ | t/10-nummatrix.t:
add stub tests for all the new vtables and methods
rrot-linear-algebra: 0a57757 | Whiteknight++ | t/10-nummatrix.t:
add tests for get_attr_str
rrot-linear-algebra: 9bac16d | Whiteknight++ | t/10-nummatrix.t:
-a
00:07 theory joined
dalek rrot: r42166 | coke++ | trunk/t/compilers/tge/grammar.t:
use standard way to reference a ticket.
00:17
Whiteknight I'm getting an occasional segfault in clear_sym_hash during interpreter destruction 00:19
I'm seeing it when I am testing NumMatrix2D
as of my most recent pla commit
actually, I think I saw it earlier, but couldn't reproduce it
00:20 Zak joined
cotto_work Whiteknight, you could try hard-coding the value in src/str/api.c+275 and see if any values cause a reliable crash. 00:22
mikehh in tests do we have something in ENV like $ENV{TEST_PROG_ARGS} to determine the equivalent of $Pconfig{cpuarch} without invoking use Parrot::Config qw(%PConfig);
dalek rrot: r42167 | coke++ | trunk/compilers/imcc (2 files):
Remove reference to RT #32421, which was resolved on 11/16/04
00:23
dukeleto 'ello 00:29
Whiteknight hello dukeleto 00:30
mikehh howdy
dukeleto how goes it? 00:31
darbelo dukeleto: irclog.perlgeek.de/parrot/2009-10-29#i_1661429
dukeleto Whiteknight: before we copy-and-paste my pure parrot test harness everywhere, it should get some improvements and a canonical home. so far, the canonical home is plumage
darbelo loong discussion of the other duscussion. 00:32
dukeleto darbelo: yep, i read most of that
darbelo You up for some templatin'? 00:33
dukeleto there is one thing that is going to bite us with CBLAS, and that is that Parrot does not know the difference between a float and a double
at first, we can just only implement the double algorithms. That is what I did with Math::GSL::BLAS
the float algorithms give less precision, but they are faster
darbelo an need less memory. 00:34
dukeleto i would like to pose that question to Allison. *Should* Parrot know/care about the difference between floats and doubles?
we lots of performance if it doesn't
s/we lots/we lose lots/
darbelo dukeleto: For now, we can fake it. We'll have a "Matrix of single" that uses floats internally. 00:35
Whiteknight dukeleto: I agree, we should standardize the harness. pla and matrixy should import it 00:36
dukeleto darbelo: ok, sounds good. We need to come up with a spec for all the data types we plan to need in parrot-linear-algebra
Whiteknight we won't make any local changes to the harness
darbelo Whiteknight: git submodules do what you want.
dukeleto Whiteknight: awesome. any bugfixes/features to the harness should be done in the plumage repo
oooooooooh, a reason to finally use submodules! 00:37
japhb dukeleto, I've been thinking about this
dukeleto should the harness have it's own repo?
Whiteknight if PLA is installed via plumage, plumage can make the harness available
japhb Since I came up with the 'this' noun for plumage,
Whiteknight of course, that then limits us to installation via plumage
dukeleto the harness needs to be tested, if anybody is up for some real fun. *hint hint*
japhb then plumage can use its configure, its test harness, and so on,
Whiteknight submodules in git: I assume those are like externals in SVN? 00:38
dukeleto Whiteknight: mostly
japhb and project metadata can just specify configure and 'test' type 'plumage'. And plumage becomes the official way to do those things for that project. That way we're not copying configure scripts and test harnesses and such all over the place
dukeleto japhb: sounds reasonable. patches welcome :) 00:39
japhb Whiteknight, I'm thinking that plumage really ought to be considered a standard Parrot tool. It's Just There.
dukeleto japhb++
Whiteknight +1
purl 1
dukeleto Plumage help Parrot fly.
s/help/helps/
dukeleto cannot type today
japhb dukeleto, When A) I manage to fit two brain cells together, and B) nqp-rx gets 'has $!foo' working, Plumage is going to get some major work done. 00:40
I've got a lot of queued up ideas.
Damn Flu.
Whiteknight write notes
japhb I have been writing some.
00:40 xenoterracide joined
jonathan japhb: Aww. Get well soon. 00:40
japhb Others are still stuck in my head.
Whiteknight I started an entire blog to be my todo-list
japhb heh
Whiteknight and now I have a very verbose record of things that I've failed to do :) 00:41
japhb :-)
dukeleto japhb: get well soon. pmichaud says that we should be able to run plumage's test suite with nqp_rx
japhb: do you want to give it a whirl? i haven't tried yet
japhb Sure, give me a bit, 00:42
I need to recompile the world.
dukeleto japhb: i think it will teach both sides of the fench about things they did not know
japhb: which hopefully is of some use
japhb nodnod
dukeleto japhb: supposedly it is currently ~2x slower
Whiteknight every change to parrot is 2x slower 00:43
darbelo ~2xOuch.
japhb Did nqp-rx get a 'make install' and a .json file yet?
Whiteknight so it's par for the course
darbelo japhb: I'm working on one.
dukeleto japhb: but as long as all of our code still works, or we can rewrite it in fewer lines, I am happy.
japhb darbelo++
yes. There will be much chopping and dicing of plumage lines, I think.
I hope, at least. 00:44
00:44 abqar joined
dukeleto hopes that pmichaud is hacking at the roots of evil 00:44
Coke darbelo: *thbbbthp* 00:45
darbelo Coke: huh?
thbbbthp?
japhb dukeleto, I thought nqp-rx was supposed to be wicked fast. What happened?
jonathan Wait, wait... 00:46
*compiling* regexen probably got slower
I think that's the bit that got ~2 times slower.
japhb jonathan, due to being more spec-compliant?
jonathan The actual matching is apparently a good chunk faster. :-)
japhb: Well, partly also because it produces better code, I think. ;-) 00:47
japhb Good!
Coke darbelo: something in backscroll 00:49
darbelo Oh, the gazzillion PMCs?
It's meant as a joke. I hope you didn't take it the wrong way. 00:51
dukeleto is offended at the over creation of PMCs 00:52
darbelo Wait. Dit that just get added to ParrotQuotes? 00:53
japhb darbelo, can you push your nqp-rx.json in progress? 00:54
darbelo japhb: done. 00:55
Whiteknight in clear_sym_hash, the value "p" is being set to 0x4008000000000000, which is (double)3.0
japhb darbelo, much grass.
Whiteknight so somewhere in there we are overwriting memory with a FLOATVAL
darbelo And now. Leaving.
japhb Have a good evening!
darbelo nedds the sleeps. 00:56
dalek TT #1161 created by coke++: pdump - Dumping constants shouldn't unpack the constants 00:57
00:58 Zotoaster joined
dalek rrot-plumage: b8f5be2 | darbelo++ | :
Add WIP nqp-rx metadata file.
00:59
01:00 Zotoaster joined
Whiteknight okay, segfault is being caused by VTABLE_set_attr_str() 01:00
Zotoaster hello folks
purl well, hello folks is there a place of nightly Rakudo/Parrot tarballs?
japhb purl, forget hello folks 01:01
purl japhb: I forgot hello folks
Zotoaster a bot i'm guessing
japhb Zotoaster, yep. And welcome!
Zotoaster thank you
actually I had a few questions about parrot
well actually, not parrot specifically, more on using it 01:02
jonathan Zotoaster: If you're really lucky, some of us will have answers for you. :-) 01:03
Zotoaster awesome
well, here's the thing. My scripting language compiles to a stack-based instruction set, as you'd expect, and I can't find any links on how to compile to register based instructions
anyone know anything?
purl anything is easy if you read the docs ;)
japhb Zotoaster, what tools is the scripting language currently written in? 01:05
Zotoaster everything's made in C++. Made my own lexer, compiler, VM, etc
dalek rrot: r42168 | coke++ | trunk/t/op/calling.t:
Add a test for 41583
01:06
japhb winxed?
purl rumour has it winxed is not javascript, just uses a familiar syntax
jonathan Zotoaster: Yes, it's a little trickier. On the other hand, you don't have to worry about register allocation and having a limited number of registers, since Parrot can take care of that bit for you.
Zotoaster neat
I did try out a little idea in python, which I don't know if it could be made to work with parrot 01:07
basically is assumes the register file is a stack. I.e, reg1, reg2, reg3, etc
japhb Zotoaster, yowsa. There are some papers about stack -> register conversion (usually WRT for example converting Java bytecode). But how much of your stack are you thinking of moving to Parrot? With PCT you can do the whole thing top to bottom. And someone has been working on a language written in C++ that emits PIR code for Parrot. 01:08
jonathan Generating code for a register machine from a tree isn't so bad though - you're just creating the results of each operation in a register, and then referring to those registers in the nodes further up the tree.
Zotoaster when you load a value, put it in an unused register. When you do an operation, like add, you have something like, add reg1, reg1, reg2
hmm
that's an interesting thought eh? :P
jonathan Alternatively, Parrot's compiler toolkit has an AST representation. If you can build one of those instead, you don't ahve to worry about generating the register machine code. :-) 01:09
*have
Zotoaster now we're talking!
so how does it work?
japhb Zotoaster, that's part of what I was referring to in PCT being able to do the whole stack. 01:10
01:10 |Zotoaster| joined
|Zotoaster| sorry got d/c 01:10
dalek TT #1162 created by chromatic++: Pg NCI Test Makes Unportable Connection
japhb Parrot provides a grammar engine, PGE, that does lex/parse -> AST. There is then an AST -> OST (opcode ...) converter, an OST -> assembly converter, and then an assembly -> bytecode conversion. 01:11
source --> PAST --> POST --> PIR --> PBC --> VM
|Zotoaster| ah
jonathan It's still under construction, but the PCT Book on docs.parrot.org/parrot/latest/html/ should give you an idea. 01:12
|Zotoaster| so I just provide the grammar?
japhb You provide the grammar and AST builder (using some pretty powerful tools), and then the rest is done for you.
jonathan Generally, you write a grammar, some "actions" to transform the grammar into the AST, and then your built-ins.
|Zotoaster| ah ok
jonathan That's if you want to use the full PCT stack, of course. 01:13
|Zotoaster| I'd like to know how the AST system works, because my scripting engine lacks an AST
jonathan The AST is basically just a bunch of different types of node.
It's detailed at docs.parrot.org/parrot/latest/html/...t.pod.html but basically has nodes for things like blocks, variables, values, and various other operations. 01:14
japhb |Zotoaster|, give me a sec, I'll send you a link of some language source, so you can see what it looks like in action 01:15
|Zotoaster| cheers
jonathan japhb: Please say that wasn't a pun. ;-)
japhb jonathan, nope, not guilty. :-) 01:16
jonathan japhb: Aww. :-)
japhb |Zotoaster|, look at the three files here: github.com/perl6/nqp-rx/tree/master/src/NQP/
That one's being actively developed by the guy who wrote most of our compiler tools stack. 01:17
In fact, it's more or less angling to be the next version -- written in *itself*.
already bootstrapped.
dukeleto 'the guy' is also the lead developer of rakudo (perl 6 on parrot). his name is pmichaud
dalek TT #1163 created by pmichaud++: PGE: refactor pod_comment rule into PGE/Util.pbc
dukeleto pmichaud++ is awesome # nqp_rx is just the most recent example of that
japhb dukeleto, his name and picture are on the page I linked to. ;-) 01:18
dukeleto japhb: touche!
|Zotoaster| i'll check that out
japhb |Zotoaster|, look at the .pm files first.
That's the high level code.
dukeleto |Zotoaster|: nqp is the highest level language that Parrot understands natively and comes bundled with. 01:19
japhb The .pir is assembly language code to hook into the right Parrot bits.
|Zotoaster| yeah saw tat on wikipedia :p
japhb |Zotoaster|, Grammar.pm is probably the first file to look at, then Actions.pm 01:20
OK, Have to go, dinner
|Zotoaster| later
japhb Good luck, |Zotoaster|, and enjoy!
|Zotoaster| thanks very much :D
dukeleto is setting up the benchmark server for running parrot benchmakrs 01:27
benchmarks, even
jonathan dukeleto: ohawesome 01:28
dukeleto: What would it take to do a similar thing for Rakudo?
dukeleto imagines a web3.0 REST interface for graphing and requesting benchmarks
jonathan: asking me ;)
jonathan yay web3.0
01:28 eternaleye joined
jonathan dukeleto: Consider yourself asked. :-) 01:28
Whiteknight okay, the indexing is definitely broken 01:29
jonathan dukeleto: github.com/rakudo/rakudo/blob/maste...nchmark.pl is the thingummy I use at the moment.
dukeleto jonathan: Sounds good. I would love to benchmark rakudo. It is like benchmarking a "real" parrot application ;)
jonathan dukeleto: But I don't record the results anywhere, I just run it now and then to see what happened when I did some changes. 01:30
dukeleto jonathan: i have something that I use to benchmark all released versions of parrot vs. trunk and whichever branches that people want to throw in there
jonathan I did ponder setting something up myself, it was on my "todo" list. But if you're doing it for Parrot and it's easy for you to do Rakudo too, that's excellent.
dukeleto jonathan: euler_bench can emit JSON 01:31
jonathan: it is being "re-branded" toolbench, since it is now independent of the Euler Project number scheme
jonathan OK. The benchmarks in that fail are of interest to me, in that they track performance of various things that Perl 6 programs use heavily. 01:32
dukeleto jonathan: it allows you to say, in a yaml file, here is a list of languages, each with list of interpreter binaries, and say, run all of these against this file over here, and give me all the stats
jonathan OK, sounds like a richer architecture than anything I was going to build. :-)
dukeleto this has evolved from the benchmarking needs of at least 5 angry people, me included ;) 01:33
jonathan I'm not angry, I just wanted my benchmarking stuff automated yesterday dammit!"
I mean, uh...
;-) 01:34
dukeleto it lives at github.com/notbenh/euler_bench for now
nopaste "dukeleto" at 69.64.235.54 pasted "example of toolbench yaml file" (31 lines) at nopaste.snit.ch/18499
01:37 jdv79 left
dukeleto msg moritz getting Benchmark::Stopwatch installed would really help. it is failing to install into my homedir for some dumb reason 01:39
purl Message for moritz stored.
01:40 integral joined
Coke RT down to 135 tickets. 01:41
dukeleto coke++
dalek rrot-linear-algebra: 6bbc362 | Whiteknight++ | (2 files):
add tests for get/set pmc vtables. Also, added comments for other tests
01:42
rrot-linear-algebra: 0a67263 | Whiteknight++ | (3 files):
indexing was broken, and was creating a memory corruption segfault. Fixed indexing, cleaned up some code, etc. Should all work now
dukeleto wow, it is really great to see lots of action on PLA. Whiteknight++ , keep it up! 01:43
jonathan There's been an incredible amount of hacking done on a lot of projects this month. It's really great to see. 01:45
01:45 mikehh joined
dukeleto it is poised to continue. parrot on RTEMS and pl/parrot will pick up soon 01:49
jonathan Things are going nicely on the Rakudo side of things too, and I hope to pick up Blizkost again shortly. 01:51
dukeleto jonathan: yes, blizkost fell off my radar for a while. I will be back to visit soon as well :) 01:53
jonathan Yeah, I went to wander around Asia for a while, and have been busily hacking away on my Rakudo grant since I got back. :-) 01:54
The grant is going pretty well though. :-)
dukeleto jonathan: great to hear! i hope you attained many levels of enlightenment in your journeys
jonathan I liked the level where I discovered Korean food especially so. :-) 01:56
Anyway, it's 3am...I guess I should sleep for a bit.
o/ 01:57
02:24 chromatic joined 02:37 Zak joined 02:55 mokurai joined 03:09 theory joined
chromatic Housecleaning++ 03:12
dalek rrot: r42169 | chromatic++ | trunk/t (4 files):
[t] Rewrote several PASM tests to PIR and a few PIR tests to declare vtable
03:15
rrot: r42170 | chromatic++ | trunk/src/pmc/namespace.pmc:
[PMC] Removed implicit double-underscore prefix logic to override vtable
03:18
dukeleto has euler_bench working on the benchmark server 03:25
dukeleto is also sitting next to chromatic at the pdx hackathon. 03:26
03:35 janus joined
Coke hurm. if I want to avoid a segfault on s->strlen, is s?s->strlen:0 sufficient? 04:08
chromatic Seems so. 04:11
Coke oh. I'm segfaulting on the assert? hurm.
chromatic Are you getting a SIGABRT? 04:12
Coke segfault. 04:13
purl well don't DO that, then.
Coke whichever that is.
TT #1136
chromatic dukeleto: alias cg='valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes'
SIGSEGV, on a real OS.
I expected the assert to fail with whatever signal that is, likely ABORT. 04:14
Coke this is... amd64, linux?
if I change the arg to NOTNULL, seems to have no effect. 04:17
chromatic Can you nopaste a backtrace? I'll look when I get home. 04:22
dalek p-rx: 4119f01 | pmichaud++ | src/NQP/ (2 files):
[nqp]: Refactor handling of lexicals and packages.
Coke chromatic: in the ticket. Thanks. 04:23
trac.parrot.org/parrot/ticket/1136
dalek rrot: r42171 | chromatic++ | trunk/t/pmc/eval.t:
[t] Avoided use of uninitialized variable when checking runcore under testing.
04:24
rrot: r42172 | chromatic++ | trunk/src/pmc/namespace.pmc:
[PMC] Extracted several static functions from NameSpace's set_pmc_keyed_str()

namespace (TT #389).
nopaste "chromatic" at 72.11.81.253 pasted "Allow NULL STRING in Parrot_str_byte_length (Coke, TT #1136)" (42 lines) at nopaste.snit.ch/18500 04:26
chromatic Try that, Coke. 04:27
Also vote for me; I'll add STRINGNULL.
dukeleto has all released versions of parrot compiled on the benchmark server
Coke tsting... 04:29
chromatic: avoids the segf. 04:30
chromatic: testing parrot... 04:31
chromatic: all tests pass in parrot's make test. 04:32
ship it. 04:35
how does one delegate to a super vtable when your parent isn't a PMC? 04:37
(if it's a PMC, you can getattribute 'proxy')
Coke writes up the question and ships it to the list. 04:55
dukeleto ok, what branches are "active" ? 04:59
i.e. which branches do people want me to run benchmarks on? 05:00
we have 14 current branches 05:01
Coke dukeleto: rerun the branch analyzer. 05:02
(and post the results on whatever wiki page that is.)
that'll show which ones have recent commits, anywya.
tools/dev/branch_status.pl 05:03
->zzz
05:11 Eevee joined
dalek p-rx: 0fdf10b | pmichaud++ | src/NQP/ (2 files):
[nqp]: Initial implementation of 'has' scope declarator.
05:26
nopaste "dukeleto" at 32.152.216.53 pasted "fib.pir across all parrot versions (optimized) and trunk on linux 2.6.26" (13 lines) at nopaste.snit.ch/18501 06:00
dukeleto Coke: thanks! coke++ 06:05
those two benchmarks are a bitter pill
dukeleto is running a primes.pasm benchmark now
cotto dukeleto, why are 1.6.0 and 1.7.0 transposed? 06:08
and 1.0.0/1.1.0
dukeleto cotto: those are ordered by speed 06:09
cotto: if you notice, they are going in the wrong direction. the newest parrots are the slower :(
s/slower/slowest/g
cotto gotcha
first make it work, then make it fast
dukeleto cotto: columns are : min, max, avg, total 06:10
cotto but yeah, we've got some catching up to do
dukeleto cotto: some benchmarks are in our favor, some are not
cotto it'd be nice to have a rakudo-like benchmark that didn't involve actually using rakudo 06:12
dukeleto cotto: i will set up Rakudo benchmarks soon 06:13
cotto: what like of rakudo-like benchmark do you want?
cotto the only problem is that rakudo keeps changing, so we'd be testing rakudo's implementation too
dukeleto cotto: that is what they want ;)
cotto: i already have pure-parrot benchmarks 06:14
cotto something like complete_workflow.t, i.e. compile/use a simple language
dukeleto cotto: they are simple to run but not very real-world
cotto s/compile/build/
it's always a compromise
it may not be worthwhile to build such a benchmark. If rakudo's happy, simpler languages (all of them ;) should be able to figure something out. 06:16
06:16 desertm4x joined
dukeleto primes.pasm across all released versions of parrot (optimized) + trunk on linux 2.6.26 : nopaste.snit.ch/18503 06:21
that is slightly better
these results are very different from what I got on darwin
06:21 particle joined
dukeleto needs some fried pies 06:21
nopaste "dukeleto" at 32.152.216.53 pasted "freeze.pasm across all released versions of parrot (optimized) and trunk" (13 lines) at nopaste.snit.ch/18504 06:26
06:31 patspam joined 06:37 TiMBuS joined
cotto are those numbers sane? What happened between 0.8.1 and 0.8.2? 06:41
(referring to primes.pasm) 06:42
06:55 theory joined
dukeleto cotto: i am only the messenger 06:59
07:09 uniejo joined 07:19 desertm4x_ joined 07:25 Zak joined 07:32 chromatic joined 07:37 fperrad joined
chromatic dukeleto, are these optimized builds? 07:42
Maybe that's what "(optimized)" means.
07:43 uniejo joined 07:46 iblechbot joined 07:49 mokurai left
dalek rrot: r42173 | chromatic++ | trunk (2 files):
[string] Made Parrot_str_byte_length() check for a NULL STRING pointer because
07:50
TT #1136 closed by chromatic++: interactive partcl segfaults in Parrot_str_byte_length 07:51
dukeleto chromatic: yes, all optimized 08:02
chromatic: so you want the output of just a single run of the benchmark across all versions/branches with valgrind? 08:04
chromatic Yes, please. That'll be much more accurate.
A callgrind run will likely be 60x slower than an individual run, but it'll give deterministic Instruction Counts, which is what we'll compare. 08:05
dukeleto chromatic: which benchmark is most useful to you?
chromatic fib.pir, then primes.pasm, then oofib.pir. 08:06
dukeleto ok
08:06 mikehh joined
moritz dukeleto: Benchmark::Stopwatch installed 08:09
dukeleto moritz: i already have it in my homedir, but thanks :)
moritz: i have been running lots of benchmarks on the server already. thanks for setting me up! 08:10
moritz np 08:11
dukeleto moritz: how about valgrind 3.5 ? that would be quite useful to have installed 08:20
chromatic: valgrind: Bad option '--dump-instr=yes'; aborting. 08:22
chromatic: on valgrind-3.3.1-Debian
chromatic You can elide that. 08:23
moritz dukeleto: done 08:25
dukeleto chromatic: the other flag gave me the same, so I am currently running with no flags
moritz: awesome!
purl awesome is a window manager or at awesome.naquadah.org or awesome!
dukeleto moritz: i will be pegging a CPU for a while, currently running fib.pir on all released parrots under valgrind ;) 08:26
moritz feel free.
08:34 mokurai1 joined 08:42 mokurai1 left 08:43 xenoterracide joined 09:11 Zak joined
mikehh chromatic: re r42171 there are a couple of other tests that just check$ENV{TEST_PROG_ARGS} as before revision - should I change them in the same way? 09:12
chromatic Run them with prove and see if they give warnings about uninitialized values. If so, then yes. 09:15
09:15 einstein joined 09:35 riffraff joined 09:50 eternaleye joined 10:28 gaz joined 10:59 masak joined 11:34 einstein joined
dalek kudo: d154eb9 | jonathan++ | (2 files):
Add an s1_setting.pir file, where we can put things that we'd like to be in the stage 1 compiler, but not in the final Rakudo. For now just has print and say. Should make things a little easier while we rebuild Rakudo on the new grammar engine.
11:43
11:47 whiteknight joined
whiteknight good morning #parrot 11:54
11:59 plobsing joined
dalek p-rx: c489620 | jonathan++ | build/Makefile.in:
Add an install target to the nqp-rx makefile - just followed the precedent set in the Rakudo Makefile.
12:25
pmichaud good morning, #parrot 12:47
Coke pmichaud: ~~ 12:48
whiteknight hello pmichaud, Coke 12:56
Coke anyone have any thoughts on my super question? I think the (unfortunate) answer is going to be to move to a has-a from an is-a. 12:57
whiteknight Coke: In response to your list question, I don't know of any way to invoke SUPER() from PIR
not that a way shouldn't be added, just that we don't currently have it
Coke (forcing me to explicitly re-write EVERY vtable.)
hurm. if there's a way from C, I can probably use that from PIR the hard way. 12:58
whiteknight the way from C hardcodes in a pointer to the parent VTABLE
so I don't know how you would do it from PIR 12:59
Coke I wonder if there is another attribute like 'proxy' that you get if you subclass an object (not a PMC)
whiteknight again, not that I know of. will do some digging 13:00
Coke wait, their used to be, didn't there? Was it removed at some point to avoid generating 2 pmcs per pmc?
"there"
jonathan It's only existed ever when subclassing PMCs, afaik.
Coke jonathan: bah!
Coke wonders how hard it would be to override every vtable from pir. 13:01
(and then just replace the ones I care about.)
moritz: did the signature for timtowtdi change? 13:03
13:05 whiteknight joined
whiteknight logged out of the wrong computer 13:05
whiteknight LOVES remote desktop
moritz Coke: uhm it uhm seems like 13:09
Coke: and the password doesn't work anymore. D'oh 13:10
Coke whoops. 13:11
pmichaud Coke: super question -- you're wanting to invoke a PIR superclass from a PIR subclass?
Coke (that sounds worse than I thought. =-)
pmichaud: yes.
pmichaud Coke: just do find_method on the superclass, then invoke that
actually, ".find_method"
Coke pmichaud: it's not a method.
(but a vtable)
I control the super class, so I could add a method that wraps the vtable if I had to. 13:12
(but ew)
pmichaud vtables are methods also, currently
Coke k.
pmichaud so if you give it a name and a :method flag, you can get at it that way
Coke pmichaud: this isn't a /defined/ vtable, I'm inheriting it. 13:13
pmichaud oh
Coke I have "tclarray" that isa hash, if you call $P0 = some_array['foo'], it JFW.
pmichaud yes, PGE had the same problem also for quite a while
(being able to distinguish overridden vtable from inherited vtable ) 13:14
jonathan Coke: You can always grab the proxy and call the vtable method on that.
Coke jonathan: no, I can't.
(see the email to the list.)
proxy doesn't exist.
(that only works if your parent isa PMC)
jonathan Oh
I thought that was the case here.
OK.
Coke (as opposed to "written in pir")
jonathan *nod*
OK, then that's a different problem.
pmichaud if your inheritance is static, you can get to the proxy
Coke no. tclarray is written in PIR.
pmichaud i.e., get tclarray's proxy 13:15
jonathan pmichaud: There's no proxy if ti's a PIR class you inherit from.
Coke from inside tclarraysubclass?
jonathan You only get those when inheriting from a PMC.
Coke so, tclarray has one from hash, no doubt, but tclarraysubclass doesn't.
pmichaud get the proxy from the PIR class you're inheriting from 13:16
not from the subclass
Coke pmichaud: how?
13:16 PerlJam joined
pmichaud $P0 = getattribute $P1, ['tclarray'], 'proxy' 13:16
Coke I can get my own attribute. how do I get my parent's attribute? (that used to be possible with dan-attributes, but not with allison-attributes, iirc.)
pmichaud or something like that
Coke ORLY? hurm.
checking.
pmichaud you can also get the proxy from a tclarray object
you don't have to get it from self 13:17
Coke pmichaud: then how does it get invoked with the right self?
pmichaud ummmmmmm
okay, that's right, can't get it from a foriegn object. I'm still thinking methods.
(And holding another conversation IRL) 13:18
Coke I already have that:
dalek p-rx: 62d1e7b | jonathan++ | build/Makefile.in:
Fix make install up a bit. We avoid blowing away the original nqp.pbc and install nqprx.pbc instead.
Coke $P0 = getattribute self, ['TclArray'], 'proxy'
Coke it fails.
(from the vtable in the tclarray subclass.)
pmichaud jonathan: I think I'd prefer the executable to still be installed as "nqp", not "nqprx"
I'd prefer *not* to enshrine the nqprx name. 13:19
Coke tries s/TclArray/Hash/
holy crap, that did it. 13:20
$P0 = getattribute self, ['Hash'], 'proxy'
pmichaud right, Hash is what I was trying to get to
Coke (from a subclass of a subclass)
jonathan pmichaud: ah, ok 13:21
Coke that's only slightly more ugly than the old code.
pmichaud fwiw, my wife isn't at all fond of the name "nqp", so if anyone has better suggestions we can change that now also. :)
13:21 kthakore joined
jonathan acwl # awesome compiler writing language ;-) 13:22
pronounced "a cewl"
;-)
kthakore hi Coke particle can you guys update this ? www.reddit.com/r/coding/comments/9y..._compiler/
jonathan
.oO( suddenly I just made nqp an excellent name )
Coke kthakore: someone can. but not me. 13:23
could you open a trac ticket?
kthakore Coke: ok
Coke: sure ... where?
Coke: do I need to register?
Coke kthakore: yes. trac.parrot.org/ - thanks. 13:24
(helps cut down on the trac spam)
kthakore Coke: a catpcha on that register form can't hurt 13:25
Coke true 13:28
dalek p-rx: ee72079 | jonathan++ | build/Makefile.in:
Install as nqp.exe, not nqprx.exe.
13:29
jonathan pmichaud: OK, hopefully that's better. :-) 13:30
13:32 fperrad joined
Coke LTP ? 13:32
NUP?
kthakore Coke: trac.parrot.org/parrot/ticket/1164 13:33
Coke kthakore++
kthakore Coke: thanks
dalek TT #1164 created by kthakore++: Update Tutorials in Parrotblog.com
Coke wonders why git hates him. 13:35
13:36 Austin joined, mikehh joined
kthakore git hates me? 13:37
Coke no, me. 13:38
kthakore ah ok
Coke how do I resolve a conflicted merge?
dalek a: c86de8d | fperrad++ | config/makefiles/root.in:
add a rule which initialize t/lua-TestMore submodule
kthakore Coke: git status
purl git status is porcelain
kthakore Coke: it will give you what is conflicting
Coke: open them and look for >>>> <<<< lines
>>> means merged in diff 13:39
Coke ah, git add.
kthakore <<<< means merged out diff
Coke: and keep chagnes you want and git commit -a -m
dalek p-rx: 646acb7 | pmichaud++ | src/NQP/ (2 files):
As promised, the operator precedence table is now defined in the
13:41
p-rx: 0772654 | pmichaud++ | t/nqp/35-prefix-sigil.t:
Add 35-prefix-sigil to test @(...) .
kthakore Coke: also learn.github.com is the awesome 13:42
Coke wonders what the hell just happened to his git project.
Austin :) 13:43
Coke, are you the only one working on the project?
Coke github.com/partcl/partcl/network
kthakore Coke: if you are on svn a lot this helps too git.or.cz/course/svn.html
Coke Austin: yes, but I have 3 different machines with checkouts.
but I try to make sure I do a pull before I push.
I must have missed a pull at some point, as I seem to have a mergeback in master. 13:44
kthakore Coke: thanks for using git ( Disclaimer: kthakore is a git pusher)
Coke kthakore: thanks for the docs.
kthakore; I like git better than git-svn. 99% of the time , I like it better than svn. 13:45
dalek rtcl: 87ed02f | coke++ | (3 files):
re-enable some [trace]
rtcl: bee7276 | coke++ | :
Merge branch 'master' of git@github.com:partcl/partcl

  \tdocs/spectest_skips
Coke (ok, maybe only 90%)
kthakore Coke: yup. The link I gave you explains SVN commands v.s Git commands its not git-svn
Coke moritz: lemme know when it's safe to venture back to that box. =-) 13:46
so, github.com/partcl/partcl/commit/bee...7430d79dd7 was the commit from the merge - it shows no changes, yes? 13:47
kthakore Coke: uh oh 13:48
Coke: you still have conflicts in the file
Coke but I resolved the conflicts locally. (that conflicts in the commit message is me being lazy editing the commit message. I think.)
kthakore ok hold on let me look 13:49
Coke I'm just wondering what's in the merge commit if not an actual delta. 13:50
fperrad ping japhb 13:51
purl I can't find japhb in the DNS.
kthakore Coke: I think it was conflicting on having or not having the file
Coke: it seems fine
13:51 KatrinaTheLamia joined
Coke k 13:54
13:56 payload joined
kthakore dukeleto: morning 14:00
Austin Does anyone know how math works at the PIR level? 14:01
14:01 Andy joined
kthakore hi Andy 14:01
purl hi Andy is, like, BACK
Andy howdy
kthakore >>
Austin If an Parrot object(class) has a get_integer vtable override, why does get_string take precedence when doing add $P1, $P0 ?
moritz Coke: timtowtdi.org pointed to a wrong IP address - that's fixed now. Once the fix propagates to your DNS server (ie it stops caching), it works fine agian 14:04
Coke: until then you can use the numeric IP, 80.237.201.115 14:05
same goes for dukeleto
Coke moritz++ 14:13
dalek p-rx: 0bee741 | jonathan++ | src/NQP/ (2 files):
Support contextualizers; passes 35-prefix-sigil.t.
14:25
whiteknight Austin: what do you mean? the add opcode shouldn't be calling VTABLE_get_string 14:27
Austin whiteknight: I agree.
whiteknight do you have test case that shows otherwise?
Austin Not right now. (And the test I did have was pretty big.) 14:28
It turns out there's a nest of snakes in there. I tried to set up a simple test, but then it complained about not having get_number. So I defined that, which took precedence over get_integer, but required that set_number_native also be available. :(
So I gave up.
14:29 kj joined
whiteknight it depends on the types of PMCs you are adding 14:31
Austin :)
whiteknight because it calls VTABLE_add on the type of the first one, which will switch behavior on the type of the second one
Austin I did $P0 = $P1 + $P2, where $P0 and $P1 were Integer, and $P2 was a Foo.
dukeleto Austin: i do math, occasionally 14:36
kthakore: mornin'
14:36 bacek_at_work joined
kthakore dukeleto: so KatrinaTheLamia is starting to look into SWIG 14:37
dukeleto: can you point here to perl5 SIWG you have done before?
dukeleto: s/here/her 14:38
dalek p-rx: 217bb06 | jonathan++ | src/NQP/Grammar.pm:
Support ? twigil.
14:42
14:44 theory joined
nopaste "Austin" at 98.235.55.43 pasted "test case for add weirdness: why isn't get_integer enough?" (14 lines) at nopaste.snit.ch/18505 14:45
dukeleto kthakore: Math::GSL is SWIG-based. It is perhaps the most complicated CPAN module that is SWIG-based. SWIG is just the first layer and then another OO layer is built on top of it 14:46
kthakore dukeleto: ok thanks 14:47
KatrinaTheLamia: take a look at Math::GSL
dukeleto kthakore: Math::GSL::Matrix is a good, simple, subsystem to look at
kthakore dukeleto: also anyword on Parrot6 Swig I found this but ... ??? www.perlfoundation.org/parrot/index.cgi?cffi 14:48
Coke anything on that wiki is ancient. 14:49
(and should be deleted and moved to the trac wiki.)
dukeleto kthakore: Coke is right. 14:50
moritz: how do I get timtowtdi.org/~leto/ to work?
kthakore Coke: ok
Coke: so SWIG or interfaces to ParrotNCI how I do this?
Coke kthakore: no clue. =-) 14:51
kthakore Coke: oh well
dukeleto kthakore: I taled to the SWIG people. We need to add PIR/PASM as a target language to SWIG. It is of "medium difficulty" 14:52
kthakore medium difficulty means anal rape or regular rape ?
moritz dukeleto: by installing and configuring apache ;-) 14:53
erm
dukeleto moritz: i don't need apache, something even simpler would be fine. just static files
Austin dukeleto: Does add create temporary pmcs? 14:56
kthakore dukeleto: is the PIR/PASM target volatile (changing too much) in terms of specs? 14:57
dukeleto moritz: why is there no 'mail' binary on timtowtdi ?
moritz dukeleto: because nobody installed one ;-)
dukeleto Austin: i sure hope not. in which situation? There are opcodes for different permutations of input types
msg chromatic Here is the valgrind output for fib.pir run on all released parrots+trunk (optimized) leto.net/tmp/fib-valgrind.tar.gz (unpacks into same directory) 15:00
purl Message for chromatic stored.
dukeleto hopes that is useful to chromatic 15:01
15:01 bacek_at_work joined
moritz fails to enables UserDir on apache 15:04
dukeleto moritz: lulz
nopaste "Austin" at 98.235.55.43 pasted "more math weirdness: why is there a fourth pmc?" (66 lines) at nopaste.snit.ch/18506 15:05
moritz dukeleto: you can look at /etc/apache2/sites-available/default if there's anything obviously wrong
15:07 iblechbot joined, Psyche^ joined
dukeleto moritz: it works! 15:08
msg chromatic also available at: timtowtdi.org/~leto/valgrind_output/
purl Message for chromatic stored.
moritz dukeleto: so it was just a missing DirectoryIndex? 15:09
moritz tried it with timtowtdi.org/~leto/ which didn't work
dukeleto moritz: you got faked out by my 0-sized index.html ;)
Coke kthakore: (medium difficulty) that's a little coarse. 15:12
moritz dukeleto: regarding sending mails... I'd rather not do that at all, because I'm not good at administrating mail servers
and I don't want to open up a spam source
kthakore Coke: indeed 15:16
dukeleto moritz: ok. as long as I have ~/leto on http, that is all I need 15:19
nopaste "pmichaud" at 72.181.176.220 pasted "colonpair fail" (17 lines) at nopaste.snit.ch/18507
whiteknight Austin: Will need to dig into the code for that 15:25
Austin nod
Okay
dukeleto Austin: what is your add issue about? perhaps a temp PMC is being created within the VTABLE code? 15:26
Austin dukeleto: I'm trying to understand how add *works*. I was originally just trying to overload get_integer, but it seems like nobody ever calls that. Now I'm being puzzled by pretty much every single aspect of simple arithmetic in PIR. 15:28
dukeleto Austin: i see. i will try to help you as much as I can, but I still only have a cursory understanding of all the VTABLE madness 15:30
whiteknight add_p_p_p calls "$1 = VTABLE_add(interp, $2, $3, $1);" 15:33
15:33 payload joined
whiteknight altough I'm not sure that makes any sense to me 15:34
Austin dukeleto: Well, I'm beginning to have a cursing-at understanding of it. :)
whiteknight I don't understand why add has a signature "VTABLE PMC * add(PMC * value, PMC * dest)" 15:36
why do we need to take a pointer to the destination and return one?
But yes, I did find the insane default case
Austin Perhaps the signature template is needed by some other ops? 15:37
whiteknight VTABLE_set_number_native(INTERP, dest, SELF.get_integer() + VTABLE_get_number(INTERP, value));
so that's the culprit right there
Austin Where is that?
purl rumour has it that is how it does it
whiteknight src/pmc/integer.pmc:357
so that's the problem, and I think it's a definite bug 15:38
if we can "fix" it without breaking any tests, we know it's a bug
otherwise somebody is relying on this lousy behavior
Austin Why do you think this is a bug? 15:39
(OR maybe better: what do you think the bug is?) 15:40
15:43 fperrad_ joined, kyle joined
whiteknight The bug is that the Integer PMC, in the default case of it's add MMD, treats values as Floats and returns a Float 16:01
I think Integer PMC should assume values are Integer, and should return an Integer in those cases
or, set a value as an integer
(Float PMC should act on Floats in the same way)
dukeleto whiteknight: can you write a failing test for that vtable bug? 16:03
whiteknight Austin just posted two of them
the issue is that's it's not currently a "bug". This is the way it's always worked
so we should probably get some agreement that this is not how we want it to work 16:04
dukeleto whiteknight: feels like a bug to me. I want to propose this to parrot-dev and see what they say 16:10
whiteknight perfect
dukeleto whiteknight: email sent. let the bikeshedding begin. 16:14
whiteknight BLUE!
dukeleto prefers fuchsia polka dots with a metallic highlights 16:15
whiteknight I could be sold on highlights
16:20 darbelo joined 16:21 Austin joined
pmichaud what's the bug? 16:28
purl rumour has it the bug is www.cbttape.org/funny/bug3.jpg or img227.imageshack.us/img227/2596/featureiu1.jpg
pmichaud src/pmc/integer.pmc:357 doesn't look like a bug to me 16:29
whiteknight pmichaud: you think that Integer PMC should get_number_native and then set_number native to add? 16:30
pmichaud in this case, yes
whiteknight it seems to me that Integer should act on INTVALs, and Float should act on FLOATVALs
pmichaud this is handling the case of Integer+non-Int
i.e., Integer+Float should result in a Float
whiteknight right, and there should be an MMD variant for that case
pmichaud there is
this is it 16:31
the Integer+Integer case is handled above
whiteknight this is the Default case
pmichaud line 312
whiteknight I was looking at line 357
pmichaud the default should be "we don't know what the other argument is, so assume it's a number"
assuming that the other argument is an integer is.... wrong
whiteknight Float should assume it's a FLOATVAL, Integer should assume it's an INTVAL
pmichaud why?
why would you assume that with 3 + $x that $x must therefore be an integer? 16:32
why would you want 3 + $x and $x + 3 to return different results?
whiteknight for the same reason that 3.0 + $x would assume it's a number
pmichaud not true
16:32 jan joined
whiteknight pmichaud: we have to take into account the types of the PMCs 16:32
pmichaud whiteknight: *right*
and if you don't know a type, you should assume Float 16:33
whiteknight I disagree. We have contextual information to inform a better decision
pmichaud not always
whiteknight for the exceptions, we can provide specific MMD variants
pmichaud no we can't
how are you going to provide an MMD variant for a language's custom-defined type (written in PIR) ?
whiteknight To add the custom type into Parrot's pre-defined Integer type? 16:34
pmichaud no
if I create a custom type "MyFloat"
whiteknight then that's different
pmichaud or, even better
let's suppose I create a type called "Rat"
whiteknight I'm only talking about the behavior of the Integer type
pmichaud no, you're not
line 357 is talking about the non-integer operands
whiteknight yes, I am
pmichaud line 312 covers the Integer operand 16:35
whiteknight right, it's adding other stuff *to an Integer*
pmichaud stop
16:35 davidfetter joined
pmichaud let me explain 16:35
suppose I create a custom type called "Rat"
it represents rational numbers
and I do
1 + 2/3
purl 1.66666666666667
pmichaud you're saying that because the first operand is an integer, it should assume that the second operand is an integer as well
because integer.pmc doesn't know about Rat
whiteknight right, Integer knows about INTVALs, so it works with INTVALs 16:36
pmichaud wrong
whiteknight if you want something different, cast it to a Float PMC and get what you want
we have
pmichaud no no no no
wrong wrong wrong wrong
whiteknight Float for a reason, to work with FLOATVALs
pmichaud we have get_number for a reason, so that we don't have to cast everything to floats
anyway, it's correct as-is. 16:37
whiteknight what you're saying, in effect, is that if I define a custom integer typ, that I must treat it as a number to interact with Integer?
pmichaud I'll let the list explain why -- I have to do rakudo stuff today. :-)
I'm not talking about custom integer types.
whiteknight I am
and Austin was, which is how this got started
pmichaud ahhh, I see.
treed Is this just a Perl6 discussion?
pmichaud yes, if you define a custom integer type, you must somehow fix up MMD to interact with it
treed Or is Ruby relevant?
whiteknight He has a MyInt, and to add it to an Integer he needs to define the get_number and set_number VTABLEs 16:38
pmichaud treed: Parrot. strictly Parrot.
whiteknight which is wront
wrong*
treed Because Ruby tends not to do auto-conversion.
pmichaud whiteknight: imo the whole MMD approach to vtable_add is wrong, fwiw
treed if you do "1 + i" and i does not have a to_int method (Integers do, not much else), it'll throw an exception
whiteknight pmichaud: that may be, and then we should correct it
pmichaud anyway, I don't know how to add custom MMD variants to vtables 16:39
treed There are a lot of failing tests in Cardinal right now because of the Rakudo roots where "3" == 3 (which is not true in Ruby)
pmichaud perhaps there's a way to do it, but I haven't seen it
whiteknight that's something worth considering als
pmichaud treed: those are actually parrot roots, not Rakudo
treed: but that could be fixed with a custom == operator that checks types
treed I've spent some time trying to figure out how this is going to work with other languages that may have integers without a to_int method.
Sure.
And it will.
pmichaud or by overloading the get_integer vtable so that it throws an exception 16:40
(for those types that cannot get_integer)
treed But that doesn't play well with Inter-HLL.
pmichaud why not?
if your object can't become an int, it should throw an exception
treed because if I give Rakudo a Cardinal;String
which in all other ways behaves like a string
but cannot be compared with an Integer
pmichaud ...then rakudo should cast it first to a Rakudo string, which can. 16:41
treed I guess I don't understand how casting works.
But I'm also concerned for custom types where it can't know how to convert.
particle set the foreign-hll rvalue to a native-hll lvalue
treed: you'll need conversion libraries for that 16:42
treed And there's no get_number
dalek rkdown: e144305 | unknown++ | plumage/markdown.json:
add plumage metadata
treed So...
particle: Yeah, that's what I figure.
Which will be fun.
particle hll-interop isn't all magic, there's some hard work involved
dalek rtcl: 8f6a032 | coke++ | docs/spectest_skips:
Fix skip list
p-rx: 0ed9993 | jonathan++ | (3 files):
Implement postcircumfix:<( )> plus add a (passing) test for it.
p-rx: d875a14 | jonathan++ | src/NQP/Actions.pm:
A probably slightly hacky solution for named args like :foo(1,2,3), but I can't think of a better one just yet.
p-rx: d7dfef8 | pmichaud++ | README:
Add some notes about differences from previous NQP.
p-rx: b4df67c | pmichaud++ | README:
Add note about cuddled elses being less cuddly.
p-rx: b8d6f2b | jonathan++ | t/nqp/37-slurpy.t:
Tests for slurpy arguments.
p-rx: c853a52 | pmichaud++ | src/NQP/ (2 files):
Convert "sub INIT() {...}" in Actions.pm to "INIT { ... }".
particle sheesh, slow down you two.
pmichaud github just caught up on rss feeds
particle i still can't get parrot or rakudo building on windows
i guess i'll switch to ubuntu, to get unblocked
whiteknight particle: what are the errors? File a ticket? 16:44
particle mt.exe stupidness
i was going to try the latest beta msvc, but my msdn subscription expired. cotto's fixing me back up, though, so i'll be able to do that in a few weeks 16:45
whiteknight ok
cotto_work hi 16:47
whiteknight hello cotto_work 16:49
16:51 payload joined
cotto_work particle, is trac.parrot.org/parrot/wiki/Platforms/Windows up-to-date? 16:53
Coke whiteknight: (3.0 vs. 3) that way lies tcl. 16:56
whiteknight Coke: I'm summarizing my thoughts to the list. It will make more sense there 16:57
japhb fperrad, pong (RTT 11111 s)
fperrad japhb, I start to play with Plumage, 16:58
but parrot_nqp Configure.nqp fails
japhb You installed parrot?
(Meaning, you have a parrot_nqp in your $PREFIX/bin ?) 16:59
dalek p-rx: db50144 | pmichaud++ | build/Makefile.in:
Update the Makefile a bit, eliminate spaces-instead-of-tab.
17:00
japhb Oh, wait ... fperrad, are you on Windows?
fperrad I work on Windows
I've parrot_nqp in my PATH
japhb Hmmm. Windows should be able to run something without the .exe extension, so that's not the problem. 17:01
Can you nopaste the error, plz?
fperrad But it's the built one, not the installed one
japhb Oh, can't use built version
Only installed
from now on, "built version" is dead to us.
:-)
nopaste "fperrad" at 79.81.90.16 pasted "Plumage on Windows" (15 lines) at nopaste.snit.ch/18508 17:02
japhb fperrad, is that still with the built version, or with the installed one now? 17:03
afk for a couple 17:04
fperrad japhb, built version
japhb, same problem with installed version 17:05
parrot r42172 17:06
17:08 particle joined
nopaste "fperrad" at 79.81.90.16 pasted "japhb, a patch for kakapo (on Windows)" (37 lines) at nopaste.snit.ch/18509 17:12
japhb fperrad, someone else owns kakapo. not me. :-) 17:18
fperrad, OK, I'm going to try with same parrot rev and see what happens 17:19
Coke msg dukeleto step N for rollout: change the default version to report bugs against.
purl Message for dukeleto stored.
dalek p-rx: ed6362d | pmichaud++ | build/Makefile.in:
Fix bug in "make install".
17:23
TT #1165 created by coke++: need ability to dispatch to parent's method or vtable from PIR 17:25
17:26 cotto joined
cotto_work wb me 17:26
cotto_work tosses a clearwire-- on the pile 17:27
karma clearwire
purl clearwire has karma of -9
japhb fperrad, With parrot 42172, plumage configure still WFM. What do you see for the output of this?
Coke opens 1165 as a followup to his earlier list-mail.
japhb $ parrot_nqp --version
This compiler is built with the Parrot Compiler Toolkit, parrot revision 42172.
fperrad, (Just making sure you didn't somehow get an old one) 17:28
nopaste "fperrad" at 79.81.90.16 pasted "Configure plumage output" (18 lines) at nopaste.snit.ch/18510 17:29
cotto_work pmichaud, the makefile for nqp-rx is a little wonky: 17:34
nopaste "cotto_work" at 131.107.0.72 pasted "nqp-rx makefile oddness" (87 lines) at nopaste.snit.ch/18511
fperrad japhb, I try to write a plumage for Markdown
see github.com/fperrad/markdown/blob/ma...kdown.json
now I don't know what I can do with it
dalek p-rx: 2cd14a3 | pmichaud++ | src/ (3 files):
[nqp]: Add --parsetrace option to nqp.
17:35
japhb fperrad, once we figure out why Plumage is not working for you, then you and others can use it to do your build/test/install 17:37
fperrad, have you sent in a PaFo CLA?
fperrad japhb, No, I don't 17:38
japhb Dang. Was going to add you to Plumage as a committer. :-) 17:39
OK, it looks as if rx() is returning Null PMC for you. Hmmm.
Ah! 17:44
fperrad, I think I see the problem.
dalek rrot: r42174 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct/past]: Fix bug in binding to object attributes.
17:45
pmichaud cotto_work: what's "wonky" about it? 17:46
cotto_work it seems to be running some of the rules three times 17:47
dalek p-rx: 8976132 | pmichaud++ | build/PARROT_REVISION:
Bump to Parrot r42174 to get fix for PAST::Val attributes.
cotto_work with non-parallel make, it works as expected
pmichaud looks like issues with parallel make
it has to do with having multiple targets on the left of the ':', I suspect
we could perhaps split those out
although the Makefile gets awfully tedious if we do that
cotto_work obviously it's not a huge problem. The build works just fine, if a little oddly. 17:48
japhb fperrad, OK, try with the latest plumage.
fperrad japhb, ok, works fine 17:50
dalek rrot-plumage: 5fb3210 | japhb++ | :
[BUILD] Fix regex typo in Configure.nqp
17:51
japhb fperrad, excellent 17:52
cotto_work btw, I see that nothing tests the symbols:sym<bang> token (apart from implicitly making sure that it parses). Is that intentional?
japhb fperrad, OK, Mind if I commit your metadata file for markdown? 17:53
(to plumage's repo)
17:55 kthakore joined
fperrad japhb, ok, but I never test it 17:56
japhb fperrad, well ... I'm about to. ;-) 17:57
17:58 mikehh joined
japhb fperrad, need to remove trailing comma in markdown.json line 25. 18:02
nopaste "fperrad" at 79.81.90.16 pasted "japhb, [PATCH Plumage] fix target test on Windows" (13 lines) at nopaste.snit.ch/18512 18:03
Coke kicks off a run with one small [trace] variant running. This used to be wicked slow. 18:04
Coke eagerly awaits to see if parrot is faster these days. =-)
japhb fperrad, wait, double *forward* slash? How does that work? 18:07
dalek rkdown: fb397f3 | unknown++ | plumage/markdown.json:
fix JSON format : remove trailing comma
18:08 allison joined
dalek rrot-plumage: 54f84d1 | japhb++ | :
[METADATA] Add fperrad++'s markdown.json
18:08
fperrad japhb, on Windows, 18:14
/* becomes \\* which is a problem
//* becomes \\\\* which works
japhb fperrad, then that means the regex is still screwed up.
cotto_work pmichaud, why isn't there a protoregex test for symbols:sym<bang> ? It seems to work just fine afaict. 18:15
japhb Because / should become \\\\ I guess.
Hold.
pmichaud cotto_work: I don't quite understand the question 18:16
(I don't understand symbols: )
japhb fperrad, try the latest now.
(latest plumage)
cotto_work in nqp-rx t/nqp/32-protoregex.t there's a token "token symbols:sym<bang> { $<sym>=['!'] }" that looks like it doesn't get tested. 18:17
ABC.parse('!') succeeds, so I assume it's working as expected.
pmichaud cotto_work: I probably just forgot it 18:18
cotto_work I'm just curious why there's not test for it.
ok
pmichaud cotto_work: feel free to add a test :)
cotto_work I'll have to have my alternative self do that.
pmichaud feel free to entice someone else into adding a test :)
cotto_work msg cotto add a test to nqp-rx t/nqp/32-protoregex.t for the bang token
purl Message for cotto stored.
pmichaud overall in nqp-rx I've been working on getting things to work, but there are loose ends all over the place 18:19
dalek rrot-plumage: 8072704 | japhb++ | :
[BUILD] Win32 fix(?) in Configure.nqp
cotto_work Cool. I'd love to dive in and contribute.
pmichaud please do. tests are welcome. code is welcome. questions are welcome. 18:20
cotto_work or at least get my feel wet.
pmichaud build system improvements are welcome.
profiling runs are especially welcome.
18:21 kyle joined
cotto_work I can do that. 18:22
pmichaud perhaps profile running NQP on src/NQP/Actions.pm or src/NQP/Grammar.pm 18:24
can also profile t/p6regex/01-regex.pir
I'll be interested to see where the bottlenecks are 18:25
fperrad japhb, \\ must be doubled only if followed by * 18:28
I think you need 2 replacements
s|/|\\|g;
s|\\*|\\\\*|g;
see lib\\Parrot\\Configure\\Compiler.pm lines 563-564
japhb msg chromatic Parrot::Test::Harness doesn't seem to pass on @INC to its children. This means that '/usr/bin/perl -I/usr/local/lib/parrot/1.7.0-devel/tools/lib t/harness', where t/harness is just 'use Parrot::Test::Harness language => 'foo';' doesn't work; the t/*.t files can't find Parrot::Test. 18:29
purl Message for chromatic stored.
japhb msg chromatic Is this a bug, or is it intentional, and it's expected that 'make test' targets will also set PERL5LIB ? 18:30
purl Message for chromatic stored.
japhb fperrad, why is there a * in the first place? 18:31
Oh, DUH
A glob
I see the problem.
fperrad, give me a sec, fixing 18:32
18:32 chromatic joined 18:34 Zak joined
japhb fperrad, OK, try that 18:34
cotto_work I really need to speed up pprof2cg
dukeleto cotto_work: do you have the need? the need for SPEED? 18:35
dalek rrot-plumage: fc99761 | japhb++ | :
[BUILD] Another try at fixing Configure.nqp for Win32
dukeleto japhb: test harnesses don't pass on PERL5LIB to their children, as a general-ish rule. can't remember exactly why, but there is a good reason
dukeleto thinks of a good reason
cotto_work thinks of lunch 18:38
japhb dukeleto, well, whatever the reason, it makes 'make test' fail for markdown, which uses Parrot::Test::Harness. :-( 18:39
fperrad japhb, the 2nd subst fails in silent, so Configre.nqp doesn't produce a Makefile 18:41
japhb fperrad, grrrr
dangit
fperrad, I'm rebuilding parrot here, and then I will try again. 18:43
japhb hates debugging problems on another OS without access to the OS in question
18:45 Zak joined
darbelo hates the OS in question 18:48
;)
fperrad japhb, this works
$replaced := subst($replaced, rx('\\/\\*'), '\\\\\\\\*');
$replaced := subst($replaced, rx('\\/'), '\\\\');
japhb fperrad, OK, that's better than nothing.
Still want to know what was wrong with my version. 18:49
japhb hacks at it for a bit
fperrad, try this one: 18:52
$replaced := subst($replaced, rx('\\/'), '\\\\' );
$replaced := subst($replaced, rx('\\\\\\\\\\*'), '\\\\\\\\*');
18:55 bacek joined
cotto_work good morning bacek 18:55
18:56 mokurai joined
fperrad japhb, works 18:56
japhb fperrad, excellent, I'll push that. 18:57
bacek Good morning
japhb OK, pushed 18:58
sheesh
18:58 Zak joined
dalek rrot-plumage: 3c6f410 | japhb++ | :
[BUILD] Yet another try at fixing Configure.nqp for Win32
19:03
19:06 mokurai1 joined
Coke (whenever I see gitorious, I hear duran duran.) 19:20
20:12 ruoso joined
japhb No ... No ... Notorious. 20:19
20:39 chrisoei joined 20:46 joeri joined
Coke THANK YOU. 21:11
darbelo ?
Coke 15:20 <@Coke> (whenever I see gitorious, I hear duran duran.) 21:12
16:19 <@japhb> No ... No ... Notorious.
darbelo Ah. 21:13
japhb That song's been going through my head for a couple hours now. :-)
21:18 ash_ joined
Coke ah, thank goodness, I have it on itunes. 21:18
iz old. 21:19
21:25 Whiteknight joined 21:29 cognominal joined 21:47 Zak joined
dalek p-rx: 8c4c7d0 | pmichaud++ | src/NQP/Grammar.pm:
Issue an error if someone attempts to use assignment instead of binding.
21:52
pmichaud 01-literals.t runs (but with a couple of errors due to string numification)
22:01 patspam joined
pmichaud ugh, HLL namespaces 22:13
Tene hll issues?
pmichaud just that I was letting NQP create the classes, but now the classes are in a different HLL namespace
I might need to implement :from<...> or something like that. 22:14
Tene so not a bug or anything you need help with then, I guess.
Tene goes back to idling.
pmichaud I suppose I can explicitly import them for now 22:15
cotto_work pmichaud, is this correct: 22:30
nopaste "cotto_work" at 131.107.0.72 pasted "expected nqp-rx behavior?" (3 lines) at nopaste.snit.ch/18516
22:30 plobsing joined
pmichaud you want --target=pir on there 22:30
otherwise it will attempt to run the file 22:31
I want the profile for compiling it
(the error you're getting is because it's attempting to run Actions.pm, which then tries to create a class that already exists.)
cotto_work profiling now 22:42
mikehh trunk - pre/post-config, smoke (#29534) PASS, fulltest FAIL at r42174 - Ubuntu 9.10 amd64 22:43
t/benchmark/benchmarks.t - Failed tests: 18-20
the remainder of fulltest passes
bisecting - t/benchmark/benchmark.t PASSes at r42169 and FAILs at r41270 22:45
bacek_at_work mikehh, r41270??? It was 2 months ago 22:51
mikehh sorry 42170 22:52
nopaste "mikehh" at 81.149.189.7 pasted "benchmark_tests failure at r42170" (87 lines) at nopaste.snit.ch/18517
mikehh just for your perusal :-} 22:53
dalek rtcl: 91b64c8 | coke++ | docs/spectest (3 files):
another high water mark.
22:58
23:12 diakopter joined
diakopter boo 23:12
japhb pmichaud, what are your plans for putting an nqp-rx snapshot into the parrot repo? 23:16
pmichaud japhb: I'm still working that out. 23:17
and based on discussion with allison on wednesday, it's still more at "proposal stage" than actual commit
japhb pmichaud, OK. I was starting to plan the move of Plumage and went "Oh drat, bootstrapping issue for my users ..."
ur? She disagrees with the plan we had on Tuesday? 23:18
pmichaud I may just do it as "experimental", but it could get taken out pretty quickly
I'll have to review the tuesday plan, then
23:19 dalek left
japhb My understanding is that you would just be occasionally snapshotting the generated PIR into compilers/nqp-rx/ or so, and adding it in to the makefile so that the rest of us could count on an nqp executable. 23:19
23:19 dalek joined
mikehh FYI those tests failed in the pcc_reapply branch (+ test 21 as well) at r41925 but passed at 41939 23:19
pmichaud yes, that was my understanding as well
but during our design meeting on wednesday it seemed less certain 23:20
japhb :-(
pmichaud it's also the case that I was a bit distracted on wednesday, so I might have it wrong
(was having to do other things at the same time as the call)
japhb And Allison seems to be offline for the night.
pmichaud well, it's not likely to happen tonight 23:21
it might, though
japhb pmichaud, oh sure, I just wanted to get the plan finalized, so that is no longer a blocker.
pmichaud again, let me review things from Tuesday and from the Wednesday meeting notes and see what I can come up with
japhb But if you JFDI and mark it experimental, I won't cry. :-)
nodnod
cotto_work After 40m 37s, I can safely say that pprof2cg is a pain point. 23:27
diakopter Infinoid: I added smth to nqp_rxlog.pm (I know; I should've created a sep file). 23:28
japhb cotto_work, how much effort has gone into optimizing it? I'm a bear of little brain today, but if it's essentially unoptimized, I might be able to gain you a little.
chromatic examples/benchmarks/oo1.pasm fails because I removed the double-underscore implicit vtable overriding behavior. 23:30
cotto_work japhb, I haven't tried optimizing it at all.
any optimizations would be most welcome.
chromatic Either we expand PASM's parsing in IMCC to allow attributes on PASM subs or we rewrite that benchmark into PIR.
mikehh chromatic: yes
I think the latter option is the better one 23:31
Coke moritz: having tclsh8.5 would be nifty.
chromatic Fortunately, rewriting is easy. 23:32
cotto_work japhb, the inline POD should help you figure out what's going on
Coke I think pasm needs a way to override vtables, no?
japhb cotto_work, yeah, was browsing that now.
chromatic I'd add it to IMCC for PASM, but why in the world would you write raw PASM these days? 23:33
japhb cotto_work, can you give me an example of a profile that will be quick enough to process in a minute or so, but big enough to actually be a decent exercise of the processing code?
cotto_work japhb, you could try oofib. 23:35
japhb cotto_work, OK, will do. thx
cotto_work you might lower the number of iterations 23:36
japhb NOW you tell me. ;-) 23:37
cotto_work apparently running oofib with an arg is broken. 23:38
japhb cotto_work, fix just about to arrive 23:42
cotto_work japhb++ ! 23:43
how much of an improvement?
or were you referring to oofib? 23:44
japhb oofib
sorry
one fix at a time. :-) 23:45
dalek rrot: r42175 | japhb++ | trunk/examples/benchmarks/oofib.pir:
[examples] Fix argument handling in oofib.pir
cotto_work I'd recommend 18 for oofib. it takes about 8s, so you should be able to see an improvement without having to wait too long. 23:48
darbelo cotto_work: has anyone tried to run the profiling core under valgrind? 23:50
japhb applies NYTProf to pprof2cg.pl
cotto_work darbelo, I have. 23:51
That's how I decide how to optimize.
s/to/what to/
darbelo Cool. Any interesting data you haven't acted upon yet?
darbelo lacks valgrind on OpenBSD.
cotto_work iirc fprintf is the biggest hog so I'd like to switch to a compressed binary format, but that's not something I can do in 5 minutes. 23:52
darbelo The curse of textual interfaces. 23:53
chromatic Is it buffer flushing or merely writing out that much information? 23:54
23:54 s1n joined
cotto_work it's just using fprintf, so buffering might help too 23:54
darbelo Oh, it fprintf()s data as it goes? 23:55
cotto_work yeah
darbelo Getting some buffering there should help quite a bit then. 23:56