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.
darbelo I'm a fan of U+2022 myself. 00:01
dalek rrot: r46551 | darbelo++ | branches/ops_pct/compilers/opsc/Defines.mak:
[Makefile] Cleanup leftover pbc file.
00:02
rrot: r46552 | darbelo++ | branches/ops_pct/compilers/opsc/Rules.mak:
[Makefile] Replace long paths with shorter variable names.
rrot: r46553 | darbelo++ | branches/ops_pct (3 files):
[opsc] Move opsc tests into the regular test harness.
nopaste "pmichaud" at 192.168.1.3 pasted "...known change between Parrot 1.4.0 and Parrot 2.0.0 ?" (39 lines) at nopaste.snit.ch/20540
pmichaud anyone aware of the change illustrated by nopaste #20540? was it intentional? 00:03
(I just got bitten by it when working on PCT/POST)
bacek_at_work looks like a bug introduced in pcc_refactor
pmichaud it might need a deprecation cycle to fix. 00:04
cotto darbelo++ for the opsc cleanup
pmichaud files a TT 00:05
darbelo cotto: And there's more! 00:10
00:10 joeri joined
cotto I happy and a little bit embarrassed. 00:11
bacek_at_work interesting... trunk is still slower than codestring branch... 00:16
pmichaud some slowness may be due to some items being moved from C to PIR
we'd need to bench mark that a bit 00:17
bacek_at_work Do we need to update nqp-rx to use StringBuilder? 00:18
looks like no. Only one line - "%r = new ['CodeString'] }.charname_to_ord( ~$/ )" which can be moved to use find_codepoint op
00:20 Andy joined
darbelo I'd totally hate git-svn if it weren't for the blatant history rewriting it allows me to do ;) 00:23
sorear bacek_at_work: is there any reason to suppose that CodeString.get_string might be slower than String.get_string at this point? 00:24
bacek_at_work sorear, unlikely. CodeString is-a String and inherit it. 00:26
pmichaud CodeString.get_string was significantly slower in the codestring branch for a while
but in trunk, it shouldn't be slower
cotto Coke, ping 00:27
dalek TT #1630 created by pmichaud++: null arguments automatically coerce to empty strings
TT #1630: trac.parrot.org/parrot/ticket/1630
sorear wanders off to hack on NQP-based REPL
pmichaud looks like a s/CodeString/StringBuilder/ was missed in POST::Compiler 00:32
00:11 <cotto> I happy and a little bit embarrassed. 00:33
oops
wrong paste
.local pmc innerpir, line
innerpir = new 'CodeString'
.lex '$CODE', innerpir
that's probably why trunk+stringbuffer is still slower than codestring branch
er, trunk+stringbuilder 00:34
bacek_at_work pmichaud, another one on line 237. 00:36
pmichaud ah yes, that one also. (I wasn't fixing those yet) 00:38
weird though that they never get used with .emit
they might be concatenated a lot, though 00:39
wouldn't surprise me if we end up concatenating a bunch of StringBuilder objects into CodeStrings
bacek_at_work Yes.
Much better now.
committing 00:40
pmichaud I've locally eliminated the last CodeString in POST::Node 00:42
bacek_at_work ship it! :) 00:43
pmichaud testing now
00:47 abqar joined
bacek_at_work pmichaud, can we merge subpir/innerpir in POST::Compiler? 00:49
pmichaud not easily
sorear I like how short NQP's pir output is. 00:50
pmichaud they're kept separate because it's extremely important to preserve the ordering of subs
sorear Quite nice after trying to debug Rakudo ;)
darbelo cotto: Okay, r46555 is the last of it. The ops_pct branch is now certified dumb-make ready and the makefiles are about as clean as they can get.
Also, I reorganized the tree a bit to make it more similar to the other compilers. 00:51
dalek rrot: r46554 | pmichaud++ | trunk/compilers/pct/src/POST/Compiler.pir:
[pct]: Switch POST::Compiler to have its own key_pir instead of CodeString.key
rrot: r46555 | darbelo++ | branches/ops_pct (2 files):
Move compilers/opsc/t to t/compilers/opsc for consistency with other compilers.
rrot: r46556 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Switch PAST::Compiler to use POST::Compiler.key_pir instead of CodeString.key.
rrot: r46557 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Remove obsolete %!codestring global.
rrot: r46558 | darbelo++ | branches/ops_pct/compilers/opsc/Rules.mak:
[Makefile] Remove help for nonexistant opsc-specific targets.
rrot: r46559 | bacek++ | trunk/compilers/pct/src/POST/Compiler.pir:
Replace two more usage of CodeString with StringBuilder in POST::Compiler. pmichaud++
darbelo Oh, my bad. r46558 is the last of it.
cotto nice 00:53
darbelo++
bacek_at_work nice, darbelo++
darbelo And now (for something completely different) I'm going to get some food and then sleep. 00:54
cotto now to make ops2c.nqp less ugly and hackish (or more, then less)
sorear hey 00:55
NQP is smart enough to not make a block for if $y { $x.y($y) }
who did that?
pmichaud I think r46561 is the last of my codestring-related changes to PCT for a bit
me, I think. :)
sorear pmichaud++ 01:07
cotto Hmmmm. Not reading ops.num and ops.skip speeds up dynop generation significantly. 01:08
dalek rrot: r46560 | pmichaud++ | trunk/compilers/pct/src/POST/Node.pir:
[pct]: Remove CodeString from POST::Node.
01:09
rrot: r46561 | pmichaud++ | trunk/compilers/pct/src/POST/Compiler.pir:
[pct]: Put newlines directly into the fmt strings of POST::Compiler, instead of always appending newline.
01:14 theory joined
tcurtis bacek_at_work, I noticed a number of explicit return statements in Functional.pm, Hash.pm, etc. Is "return $foo" not implemented with exceptions any longer? 01:16
01:20 ewilhelm joined, ewilhelm left
dalek rrot: r46562 | cotto++ | branches/ops_pct/MANIFEST:
manifest update
01:25
cotto finds Getopb::Obj and is happy 01:29
01:32 seatek joined
bacek_at_work tcurtis, hmm. I dunno. 01:39
tcurtis It still is in the version that's included in parrot trunk. I'm about to check with your repo. 01:41
dalek rrot: r46563 | cotto++ | branches/ops_pct/compilers/opsc (3 files):
[opsc] only read ops.num and ops.skip for core ops
01:42
rrot: r46564 | NotFound++ | trunk/src/string/charset/ascii.c:
simplify mixed_cs_index
01:43 rurban_ joined
tcurtis Very unscientific benchmarks suggest that "1;" at the end of a sub is approximately 50% less slow than "return 1;" 01:43
01:44 snarkyboojum joined
sorear How do you spell an exit-in-the-middle loop in NQP? 01:45
tcurtis bacek_at_work, the result is: "new $P16, "Exception" 01:48
set $P16['type'], 57
new $P17, "Integer"
assign $P17, 1
setattribute $P16, 'payload', $P17
throw $P16" 01:50
sorear feels like a decompiler 01:56
cotto What's $P0 = new ['Foo';'buz'] in nqp? 01:57
sorear pir::new__PP(<Foo buz>) 01:58
cotto Thanksā£ 01:59
nm☠ 02:01
doesn't work
purl Look buddy, doesn't work is a strong statement. Does it sit on the couch all day? Is it making faces at you? Does it want more money? Is it sleeping with your girlfriend? Please be specific!
cotto It's sitting across from me, just staring vacantly into space. 02:02
sorear Q:PIR { new ['Foo';'buz'] } then :/
cotto when in doubt, drop to pir
sorear Foo::buz.new will also work if it's a NQP class 02:03
pmichaud NQP doesn't have 'last' yet, iirc 02:05
tcurtis: you're correct, it's better to not use explicit return 02:06
fall-off-the-end semantics are much more efficient (at the moment?)
cotto: see my earlier comment about the difficulty of generating keys in PIR :-|
I've been thinking that the pir:: syntax might need a __K component for keys, though. 02:08
but it's icky to handle. 02:09
pmichaud tests latest parrot trunk with nqp-rx
sorear pmichaud: How do I write :flat :named in NQP-rx? 02:12
pmichaud I don't think there's a way to do it yet. Eventually it'd be the same as the p6 syntax -- |%hash or something like that 02:13
although it's possible that |%hash works arleady
try looking at the tests in t/nqp and see if there's an example 02:14
looks like |@a works
don't see a |%h version yet, though :-|
nqp tends to want to wait until it's needed before implementing a feature 02:15
sorear is still hung up trying to decompile 'interactive'
maybe I should add |%h?
pmichaud sure, that could work. See if you can find how |@a is done and go with it
dalek rrot: r46565 | mikehh++ | trunk/t/codingstd/pod_todo.t:
remove TODO from passing test - no more 'todo', 'fixme' or 'XXX' items
pmichaud I see in src/NQP/Grammar.pm: token prefix:sym<|> { <sym> <O('%symbolic_unary')> } 02:16
so the parsing it there -- it's just getting the action correct
hmm, I don't like how that's done. 02:17
pmichaud checks 'blame' to see who did it
looks like it was some noobie named 'pmichaud' 02:19
mikehh pmichaud: :-}
pmichaud I think I'd prefer to see a method prefix:<|>() action that handles flattening instead of having it done inside of method arglist() 02:20
that method could then check its argument to see if it's a hash variable
and add the :named flag to the node as well as the :flat 02:21
sorear I don't have enough PAST::Fu to implement that.
pmichaud the other way to do it is after the line that says 02:22
+ $past[$i].flat(1);
sorear (Maybe I do? But only at the cost of being able to make invalid PAST.)
pmichaud check to see if $past[$i] is in fact a PAST::Var node and that its name starts with '%'
something like...
purl something like what, pmichaud?
sorear How do I spell 'isa'? 02:23
02:24 eternaleye joined
pmichaud if $past[$i].isa(PAST::Val) 02:25
&& pir::substr($past[$i].name, 0, 1) eq '%' {
$past[$i].named(1);
}
might work.
sorear Val? 02:26
Really?
pmichaud might be more efficient to bind $past[$i] somewhere to avoid repeating the subscript at each operation, too. :-) 02:27
purl Val is, like, updated in accordance with the sign of val
pmichaud sorry, Var
typo here (busy trying to book a bunch of airline tickets in another window )
and... afk for a bit again
02:28 JimmyZ joined 02:35 tetragon joined
dalek p-rx: 458dbfe | sorear++ | (2 files):
Implement :flat :named (|%hash)
02:39
sorear tcurtis: Is "Exception thrown and caught in the same function" on the list? It probably should be 02:43
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33808), fulltest) at r46566 - Ubuntu 10.04 amd64 (g++) 02:47
dalek rrot: r46566 | mikehh++ | trunk/t/codingstd/pod_todo.t:
well that did not work - can't see how I got it to pass
02:48
sorear pmichaud: for implementing loop control ops, should I generate primitive PAST for them, or would you rather see me add new pasttypes? 02:51
tcurtis sorear, are you referring to NQP-like build exception, throw, catch, immediately return? Or more general throwing and catching in the same function? Also, I'm assuming "the list" is the list of things that I should write optimizations for during GSoC? 02:52
sorear tcurtis: The list of things that you should consider for optimizability - whether you get to all of them is not certain 02:53
02:53 eternaleye joined
sorear and yes; control exceptions are the main use case 02:53
PerlJam sorear: how do your loop control ops differ from exceptions? 02:56
sorear PerlJam: the loop control ops would work by throwing exceptions, just as the return op does now 02:57
PerlJam so, why the abstraction?
sorear paranoia 02:58
purl Just because the worst scenario isn't the most likely doesn't mean you have to ignore it.
PerlJam I don't understand the paranoia
03:00 janus joined
pmichaud I'd prefer to keep the PAST node types smallish. 03:01
03:01 plobsing joined
pmichaud so I'd say that we generate primitive past for them. 03:01
sorear What's the best phrasing of PAST for throwing a control exception? 03:02
inline?
purl Inline melted Schuyler_'s braaaaane! or the Dog's Banana
pmichaud PAST::Op, likely
:pirop<throw>
sorear PerlJam: Me not being able to second-guess pmichaud, mostly
pmichaud looking
PAST and NQP tend to want to remain small and simple 03:03
sorear ok
how do I write control exception numbers?
Q:PIR{.include "except_types.pasm"} ? 03:04
pmichaud there's not a good symbolic way to do that yet
lookin.
looking
sorear the PIR for this is
$Punique = new "Exception"
$Punique['type'] = 56 03:05
throw $Punique
what does that look like in PAST?
I suppose I'll need to introduce a variable
pmichaud no
not at all
writing
oh, wait, might need one, yes. 03:06
eh, feel free to just use :inline for now :) 03:07
sorear How do I get $Punique and 56 in :inline?
Oh wait
pmichaud %r gives you a unique register
sorear this is ... AN EXPRESSION 03:08
pmichaud but you can also use $P0...$P9 with impunity
in NQP it'll have to be a statement, just like 'return' is a statement.
we can't implement 'next' and 'last' as functions
sorear text here ' ~ Q:PIR{ %r = .CONTROL_NEXT } ~ ' go on
that's what I meant by expression
half of my brain was thinking in terms of Q:PIR{}, which you obviously can't build at run time 03:09
pmichaud no
you can do .include and .CONTROL_NEXT directly in the :inline
(not necessarily pretty, but it can work, and it's more robust as well) 03:10
sorear wouldn't that be ridiculously slow?
Coke darbelo: I think the branch has a few tests that trunk doesn't have at this point, that's it. 03:11
pmichaud in what way?
(I don't disagree, I just want to know which 'slow' part you're referring to :)
sorear pmichaud: opening except_types.pasm each time a loop control directive appears in the input 03:12
pmichaud it's a compile-time thing, probably isn't that slow.
I've been thinking of ways to get PIR directives into PAST/POST, though. 03:13
i.e., so that we could easily add them once at the beginning of the unit
sorear thinks about testing 03:14
pmichaud haven't come up with much that I like yet (but also got sidetracked quickly wheN I worked on it last)
Coke cotto: yes?
pmichaud I've thought a little bit about adding a few runtime functions into PCT or HLL::Compiler, though. 03:16
then it could be made to act like a function -- i.e. HLL::Compiler::next()
cotto Coke, how involved is adminning parrot.org?
pmichaud or even just into the HLL namespace. 03:17
HLL::next()
HLL::last()
etc.
Coke cotto: ETOOVAGUE
most of my day to day pain is discard mail spam
pmichaud the downside of that approach is that it requires loading a compiler object which some libraries (that want to use 'last') might not need loaded otherwise
so, I think perhaps not. 03:18
Coke next on the list? opening tickets for OSUOSL.
cotto sounds fairly light
sorear isn't going to test all combinations of loop control / loop "that's PCT's job"
hmm 03:19
pmichaud maybe a pasm:: namespace that makes it easy to get at the standard pasm constants.
e.g. pasm::CONTROL_BREAK 03:20
sorear why must next/last/redo be statements?
bacek_at_work
.oO( There is control exceptions in kakapo already, afaik )
pmichaud sorear: well, you could try to specifically test for them as individual function names, I suppose.
but currently functions require parens
so someone who writes for ... { last; } is going to be a bit disappointed 03:21
it would need to be last() intead.
*instead
Coke cotto: Why do you ask?
sorear pmichaud: I have them in the prefix:<> category because I decided to use 'return' as my prototype
er wait
pmichaud oh, yes, they can be prefix operators
sorear THEY DON'T TAKE ARGUMENTS
pmichaud whatever 'return' and 'make' use is probably good enough. 03:22
term:sym<last> then.
(in Perl 6, they take arguments :-)
(in Perl 6, they _can_ take arguments :-) 03:23
sorear perl 6 has a much more ... interesting ... grammar
pmichaud yes... nqp strives for a bit of simplicity, but gives up some expressiveness in the process 03:24
sorear Confused at line 12, near "ok($runs =" 03:25
pmichaud hmmm.
sorear I think it would be very awesome if this error message could be improved somehow.
sorear fires up the --parsetrace
pmichaud I might be willing to let :pasttype<return> accept other exception types 03:26
sorear actually, it's time travel
the error occurred at the END of line 12
normally, leaving off semicolons makes future statements not parse 03:27
in NQP? Previous ones!
pmichaud then the exception throw would simply be PAST::Op.new( :pasttype<return>, :extype(52) ) or something like that 03:28
would like a better name than :extype, and a better way to specify the exception numbers.
the last/next/redo exceptions could then even provide a payload of some sort 03:29
sorear: what was the original statement that gave the error?
dalek p-rx: f5f582d | sorear++ | (3 files):
Basic loop control (next/last/redo terms)
sorear pmichaud: ok($runs == 3, "break works in while") 03:30
$S1 = substr $S0, -1, 1
$I0 = is_cclass .CCLASS_NEWLINE, $S1, 0
hmm.
how to decompile this.
pmichaud terms definitely do not belong at %list_prefix precedence, though. 03:31
sorear er 03:32
Oops.
Change-my-mind-o
what's \\s ? 03:33
purl \\ is probably one byte. you need \\ or \\ or something.
pmichaud .CCLASS_WHITESPACE, iirc
03:33 LoganLK joined
pmichaud sorear++ # |%hash in NQP 03:34
pmichaud updates wiki.github.com/perl6/nqp-rx/requests 03:38
sorear Hey, I should add my TODO list to that. 03:39
...although, to be honest, I just knocked down about half of it. 03:40
dalek p-rx: 379f1b2 | sorear++ | src/NQP/Grammar.pm:
Fix a typo (pmichaud++)
03:41
sorear or I'll bounce them here first
- @*ARGS 03:42
- {$foo} in Q:PIR interpolates as the register number - no more find_lex 03:43
- hash literals
- pirflags on subs with traity syntax (method foo() is vtable("bar") { ... }) 03:44
pmichaud for {$foo}, there'd still have to be a find_lex somewhere.
maybe not in the Q:PIR source itself, but in whatever Q:PIR causes to be generated
sorear - signature-ish binding, so I can do the equivalent of foo :named :flat = "some_function"() 03:45
pmichaud yes, I've been wanting to add "is vtable('bar')" for a while also
sorear pmichaud: not after tcurtis is done
pmichaud oh? how would that work? 03:46
do a find_lex at the beginning of a sub and use the register number?
that will fail if the lexical gets rebound somewhere with a store_lex
sorear I don't know all the details, but it's the #1 thing I'm hoping to see from the local optimization work
Oh?
pmichaud yes. 03:47
sorear .lex $P17, "$foo"
store_lex "$foo", $P23
pmichaud that works only in the block that declares the lexical.
sorear are you saying that's not equivalent to $P17 = $P23 ?
pmichaud it doesn't work in any nested scopes.
sorear ah
pmichaud in a nested block, there's no $P17
sorear well, still, same-block optimization would be a huge win
pmichaud I don't know about 'huge', but it could be a bit of a win.
sorear especially if we can also elide immediate blocks in if et al 03:48
pmichaud that helps a bit, yes.
sorear current instr.: 'parrot;HLL;Compiler;_block311' pc 21362 (gen/hllcompiler.pir:135273808) 03:53
really?
03:53 brooksbp joined
sorear oh, that's why last isn't working in HLL/Compiler.pm 03:53
I need to bootstrap 03:54
pmichaud no, it should bootstrap okay already
oh wait, you're right.
you'll need to bootstrap 'last' into nqp before HLL/Compiler.pm can use it.
sorear no, the actual problem was that I forgot to git merge master 03:57
the nqp tree I was building didn't even HAVE last 03:58
cotto Getopt::Obj makes me feel like Italian food
pmichaud only one CodeString left in nqp-rx :-) 04:00
time to move .lineof around a bit
cotto points darbelo at runtime/parrot/library/Getopt/Obj.pir and hopes for the best 04:01
;)
sorear ok. I have 'interactive' decompiled.
dalek p-rx: c5482a9 | pmichaud++ | (2 files):
Switch HLL::Actions to use find_codepoint opcode, bump PARROT_REVISION.
04:03
rrot: r46567 | cotto++ | branches/ops_pct (2 files):
[getopt] add support for '--foo buz' args
04:27
rrot: r46568 | cotto++ | branches/ops_pct/compilers/opsc/ops2c.nqp:
[opsc] update ops2c.nqp to use Getopt::Obj for args processing
sorear interesting, interactive is only 30% shorter in PIR 04:38
*NQP
I was expecting more like 80%
04:41 snarkyboojum joined
sorear pmichaud: Under what circumstances can a slurpy arg be null? 04:44
pmichaud sorear: I don't think it can any more.
in earlier versions of parrot, a slurpy arg could be null if no arguments were passed to fill it
sorear I would love nqp:: stuff if it meant that I could stop remembering pir::isa__IPS 04:45
signatures should be in a symbol table, not my mind
pmichaud the pir:: opcodes don't generally require the signature
I don't know why people keep insisting on always adding them 04:46
pir::isa(...) works just fine
sorear because it feels like 50% of the time the op I want doesn't have a filed signature
pmichaud then we should add them to PAST if we can
sorear and PAST is beyond the reach of trivial fixability
pmichaud not for that :-) 04:47
it's a simple table
at the beginning of PAST/Compiler.pir
every so often I do a grep for 'pir::' to see what people ahve been putting signatures on
sorear how about generating a warning if you apply a signature to a known opcode? 04:48
also, there could be nicer errors if your passed arguments don't match up with the signature
pmichaud it would only be a warning if the signature matched the one on record
oh, if your passed arguments don't match, it coerces
the signature is coercions, not type checks 04:49
sorear I'm talking about stuff like pir::isa($x, $y, $z)
silently generates invalid PIR
we don't have a singature for pir::null
pmichaud I'm looking at the nqp sources now, I only see three case of pir:: that have signatures 04:50
sorry, five 04:51
pir::defined and pir::clone definitely don't need the sigs
sorear we don't have a signature for printerr
we don't have a signature for getstdin 04:52
sorear removes all but the two needed signatures from HLL::Compiler.interactive
pmichaud but yes, the use of nqp:: would preclude specifying a signature. 05:00
i.e., nqp:: would have pseudo-opcodes that map to primitive ops on the underlying vm 05:01
05:03 kurahaupo joined
sorear Is Eval the runtime presentation of a loaded .pbc? 05:03
What's the idiomatic way to declare a bunch of variables in NQP? 05:04
pmichaud my $var1; my $var2; my $var3;
falling asleep here -- will work more tomorrow. 05:05
sorear ok. 05:06
'night 05:07
cotto night
dalek rrot: r46569 | cotto++ | trunk (13 files):
[cage] fix most (all?) misuses of "it's"
05:16
rrot: r46570 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Add a few more pirop signatures to PAST::Compiler.
p-rx: c3b0e83 | sorear++ | src/stage0/ (3 files):
Rebootstrap so REPL stuff can use |% and last
05:28
rrot: r46571 | cotto++ | trunk (2 files):
[getopt] apply getopt fix from branch to trunk
05:32
plobsing sorear: Eval should be the runtime presentation of a loaded PBC. Currently they're not quite the same.
cotto Interesting. Syncing ops_pct with trunk causes a segfault while building nqp-rx. 05:46
specifically the settings
dalek rrot: r46572 | cotto++ | branches/ops_pct/compilers/opsc/ops2c.nqp:
[opsc] remove an unused sub
05:48
sorear Should I regard ops_pct as the shape of things to come re. our build system? 06:03
More NQP, less P5?
cotto svn-bisect++
plobsing my understanding is that there is a desire to move away from P5 and become more bootstrapped, but it's not a terribly high priority 06:05
06:06 dngor joined
sorear How many damage will I do if I break outer_ctx? 06:06
It's an undocumented argument to PCT::HLLCompiler.eval
cotto plobsing, that's correct afaiu 06:07
sorear wants to implement a different and better version and move Rakudo to it
kea and partcl-nqp, the only NQP users listed on [Languages], don't use it 06:11
Nevermind, it's specced in a PDD 06:12
plobsing cotto: from your work on opsc, how hard would it be to make a preprocessor that replaced {{{ PIR snippet }}} with the equivalent ops C code strung together? 06:13
plobsing wants to rip out IMCC's optimizer and reimpliment using something-not-C 06:14
06:15 snarkyboojum joined
sorear plobsing: How about you rip it out and not replace it? 06:16
It's not like it works, and anything it does, tcurtis' POST optimizer can do better
plobsing sorear: POST != Parrot 06:17
plobsing likes winxed for example 06:18
also, the .lex optimization you mentioned earlier seems well suited to a PIR optimizer
another thing - the level 1 optimizations mostly work. I implemented a test target that ran -O1 and it only fails 2 tests. 06:19
bacek_at_work plobsing, next step after merge opsc will be create more robust grammar for ops.
06:20 hercynium joined
bacek_at_work plobsing, ideally (from my pov) - extend NQP to support typed vars. 06:20
cotto 46564 is the culprit
plobsing I want to be able to naively substitute strung-together ops into arbitrary C
sorear bacek_at_work: you want typed vars in NQP?
my int $foo?
bacek_at_work sorear, yes
sorear what are you going to do with them?
plobsing changing the ops grammar will not help me with that
IMCC is one place where I'd love to do some of the datastructures in a more parrot-y language. Another is most PMC functions which really don't need to be in C (but other parts of the PMC might) 06:22
bacek_at_work sorear, emit C code :) 06:25
06:25 aukjan joined
bacek_at_work plobsing, I'm going to develop pir_pct (in near future, possibly in this century :) 06:26
sorear typed vars in NQP is on my TODO list
I have no idea if I'll be able to implement them without completely rebuilding PAST
but I'll try!
bacek_at_work If you can just stash type into PAST::Var node I can use it for generating C. 06:27
sorear You. Want to. WHAT.
bacek_at_work generate C
for ops
from nqp-like language 06:28
instead of
current
bloody-macro-substituted-perverted-C
check src/ops/*.ops file
I want to get rig of this "language" and use more sane one. And nqp looks like good candidate for it. 06:29
sorear Then we'll be able to define grammars in ops.
bacek_at_work Or I can develop full grammar for this C-like crap.
sorear, exactly. 06:30
Top-level skeleton already done in ops_pct branch.
Next step - ops guts.
sorear Do you realize what "rewrite ops in NQP" is the first step of 06:31
plobsing bacek_at_work: I'm sure pir_pct will be great when finished, but I like the immediate benefits I'd see with gradual changes to IMCC.
also the parts I want to fix (mostly optimizer), you could re-use
actually, I'd like to try to decouple the optimizer from IMCC if that's at all possible 06:32
sorear as long as POST::Compiler uses pir, imcc ought to be in C 06:34
plobsing sorear: when working in some parts of Parrot I find the C required is basically verbose, strung-together ops. 06:36
bacek_at_work sorear, not really.
sorear I hope you two realize that you're following the LoritoRoadmap to the letter 06:37
bacek_at_work sorear, I know :) ops_pct was first step for Lorito.
plobsing Actually, I don't necessarily want a full lorito for this. Just something good enough.
Let's call it Lorito-Bar to indicate it isn't a full lorito ;-) 06:38
bacek_at_work "Lorito *" is current naming conventions :) 06:41
plobsing but the x-bar means not x, which is what I'm trying to communicate 06:42
anyways, I'd like to be able to let more people at the optimizer (cause it is a cool thing), and I see the best way to do that is by divorcing it from IMCC and putting it into a parrot language 06:44
also maybe I'd have a fighting chance of understanding it then 06:45
sorear Make it understand POST::Op, so that we can reuse it from PCT
Without having to use the PIR parser
plobsing my vision is for it to understand ops, so PIR|PASM|PBC. POST/PCT level optimizations occur at a different level and you can do different things with them. 06:47
I'd also like to be able to take a sub from a running parrot and run an optimization pass on it and replace it. 06:51
cotto That's pretty important for a nice hotspot-like jit.
plobsing yes, but at a parrot bytecode level. 06:53
dalek rrot: r46573 | cotto++ | trunk/src/string/charset/ascii.c:
revert r46564, which caused some issues for ops_pct
06:54
cotto Nice. ops2c time is down from ~90s to ~60 after syncing. Now all I have to do is make it not be extravagantly broken.
06:59 Essobi joined
cotto nm. opsc is extravagantly broken in without the merge 07:02
me--
07:04 clinton joined 07:06 snarkyboojum_ joined 07:14 LoganLK joined 07:21 iblechbot joined
bacek cotto, how broken is it? 07:23
o hai, btw 07:25
07:30 snarkyboojum left
cotto not too badly. I've a subset of it. 07:30
Happily the failures indicated legitimate brokenness. 07:31
sorear has an epiphany
cotto has a galeon 07:32
plobsing has a lynx 07:36
JimmyZ has a ff 07:37
bacek wanna cookie
cotto flash or normal? 07:38
bacek flash 07:41
fire
KILL ALL HUMANS
purl Don't START me. or www.killallhumans.org
bacek oops, ww
cotto That's a disappointing site. 07:42
I didn't feel threatened at all. 07:43
bacek cotto, there is some brokeness in Makefile in ops_pct
07:44 dngor joined
cotto where? 07:44
bacek make bootstrap-ops will invoke "make -C" at the end.
gnu make
purl hmmm... gnu make is too cool. or at www.gnu.org/software/make/make.html
cotto Is that what's causing the dynops to be rebuild? 07:46
bacek I think it's related
And on my box dynops aren't built properly....
But self-hosted ops are still good (fsvo) 07:47
cotto, found problem with dynops 08:02
cotto ship it! 08:03
bacek r46574 08:05
So, Makefiles are clean from blame 08:07
hmm. Not really. Some dependencies are broken... 08:08
And fixed 08:12
cotto, your turn to write mail to parrot-dev@ with warning about merging it back to trunk :) 08:13
sorear #142917 0x08048bd1 in main () 08:16
stack overflow! segv
in the GC, even
cotto kaboom
dalek rrot: r46574 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm:
Always add parsed op into $past<ops>. Fix for building dynops.
08:17
rrot: r46575 | bacek++ | branches/ops_pct/t/compilers/opsc/06-opsfile.t:
Update test to be little bit more flexible in terms of number of parsed ops.
rrot: r46576 | bacek++ | branches/ops_pct/compilers/opsc/Rules.mak:
Fix dependencies for ops2c to avoid rebuild it constantly.
bacek sorear, where did you get it???
sorear bacek: marking an exception
bacek sorear, sigh... 08:18
cotto bacek, opsfile was legitimately failing
bacek cotto, why???
cotto I fixed it.
sorear I'm hacking lexical persistence. This is very much circularity saw territory; I'm not going to file a bug until I know I didn't break it
cotto we weren't careful enough about honoring the optable and skiptable 08:19
bacek cotto, ah.. Then revert my commit.
sorear actually... it's marking a LOT of exceptions
all with the same message though 08:20
exception -> callcontext -> positionals -> cell -> another exception
now... why would an exception have an exception in its callcontext 08:21
cotto bacek, shouldn't the nqp settings branch be merged back upstream before ops_pct gets merged into trunk? 08:24
bacek not mandatory. But, afaiu, pmichaud doesn't dislike my setting library. 08:25
May be we should rename into nqp-library though. 08:26
To reduce confusion and lower expectations :)
sorear Is trace output buffered? 08:27
If Parrot segfaults while traces are on, will I see all the traces?
cotto is the other option to include your forked version in trunk?
bacek cotto, yes.
cotto all committed 08:29
moritz good morning
t/library/pg.t fails test 13
bacek moritz, o/
moritz, TT#1611 08:30
?
purl For you maybe.
cotto more like good night
;)
08:30 fperrad joined
moritz yep 08:31
dalek rrot: r46577 | cotto++ | branches/ops_pct/t/compilers/opsc (7 files):
[opsc] check exact number of ops parsed, use installed opsc.pbc, be explicit about testing core ops
08:33
rrot: r46578 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm:
[opsc] be more careful about honoring the skiptable (aka ops.skip)
rrot: r46579 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/File.pm:
[opsc] make :$core required, minor cleanup
bacek cotto, I personally dislike 3 $past<ops>push($op)...
but we can refactor it later :) 08:34
08:35 fperrad_ joined
cotto make it work, make it work well 08:35
also, it still needs a backwards-compatibility wrapper script to avoid the deprecation penalty 08:37
Heh. I was just about to make that same commit. 08:38
bacek You can't beat speed of light! 08:39
cotto apparently not 08:41
bacek hijacking ops2c.pl
cotto hijack it with FIER 08:42
I'm excited to rip all that old perl code out. 08:43
bacek r46581 :) 08:44
cotto ops2c.pl gets called with an extra "C" in front as a holdover from when we had several runcores. 08:46
the hijacked version should take car eof that
bacek ops2c ignores it :)
cotto that's true 08:47
bacek But fixed anyway 08:48
purl rumour has it fixed is handy
sorear Are you supposed to call pop_eh in exception handlers? 08:49
bacek sorear, yes
dalek rrot: r46580 | bacek++ | branches/ops_pct/MANIFEST.generated:
Install nqp-settings.pbc
08:50
rrot: r46581 | bacek++ | branches/ops_pct/tools/build/ops2c.pl:
Hi-jack ops2c.pl to invoke ops2c$(EXE)
rrot: r46582 | bacek++ | branches/ops_pct/tools/build/ops2c.pl:
Improve hijacking slightly.
sorear bacek: NQP-rx doesn't.
in { 1/0; CATCH {} } no pop_eh is called
bacek sorear, it's bad...
moritz sorear: 1/0 in Perl 6 constructs a Rat 08:51
it doesn't throw an exception
sorear moritz: besides the point; I am talking about NQP-rx
moritz ok
:-) 08:52
sorear which most definitely *does* die
cotto bacek, r46583
sorear bacek: I've golfed my NQP-rx REPL segfault down to 6 lines of pir with mismatched push_eh
bacek: alternatively, 1 line of NQP
bacek cotto, write your mail to parrot-dev@ :) I'll rename "nqp-settings" into "nqp-library" 08:53
dalek website: khairul++ | Instrumenting Parrot
website: www.parrot.org/content/instrumenting-parrot
bacek sorear, than it's bug in nqp...
sorear > { 1/0; CATCH { 1/0 } }
Segmentation fault (core dumped)
Is this a "don't do that - ajh
ah
cotto I'll have to do that tomorrow. I need to sleep and I want to be able to say that I've tested Rakudo.
bacek cotto, I'm testing rakudo right now.
cotto bacek++ 08:54
sorear bacek: odd that it works fine except when the exception handler throws an exception.
cotto post here when it works ;) and I'll try to send something off tomorrow morning
Last time I sent off a message without enough sleep I accidentally announced the 2.0 release. 08:55
cotto tries not to read khairul++'s post
bacek cotto, make test passed :)
cotto w00t
bacek And go to bed now :) 08:56
cotto good idea
night
bacek night
cotto can you test partcl too? 08:57
bacek cotto, which one?
I've got -nqp version 08:58
cotto old 'n' busted
the one with dynops
it's the only other hll with them
(that I know of)
08:58 snarkyboojum joined
dalek TT #1631 created by sorear++: Exception handler throwing exception in NQP-rx causes segfault 09:01
TT #1631: trac.parrot.org/parrot/ticket/1631
bacek cotto, partcl builds 09:02
flawless victory
purl FINISH HIM
bacek purl, good girl! 09:03
purl :)
cotto that's all that can be expected
nopaste? 09:05
purl i think nopaste is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com or App::Nopaste or codepeek.com/paste/ or (: pastebot)
nopaste "cotto" at 192.168.1.3 pasted "points to cover in ops_pct post to parrot-dev" (16 lines) at nopaste.snit.ch/20541
cotto bacek, I'm off to bed. lmk if I need to cover anything that's not in that outline. 09:06
good night
bacek cotto, looks good. Sleep well
dalek rrot: r46583 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm:
[opsc] tighten up skiptable/optable logic a bit
09:15 iblechbot joined
sorear sadly, pmichaud is wrong 09:24
Parrot does not keep callcontexts around after a sub returns
somebody must have fixed that memory leak
I can think of a sneaky way to get at the callcontext (it involves tailcalls and getinterp) 09:27
but there's no Sub.set_outer_ctx
anyways, it is not currently possible to implement lexical chaining without causing the PIR to be different 09:28
so I can't make pmichaud happy
hopefully, he'll redefine happy tomorrow
sorear out
09:43 rurban_ joined 09:45 TiMBuS joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33811), fulltest) at r46583 - Ubuntu 10.04 amd64 (gcc with --optimize) 10:07
10:10 snarkyboojum joined 10:18 preflex joined 10:47 skv joined 11:19 aukjan joined 11:20 snarkyboojum_ joined
dalek rrot: r46584 | rblasch++ | trunk/config/auto/va_ptr/test_c.in:
[config] Make va_ptr probe work with MSVC and -O2.
11:34
rrot: r46585 | NotFound++ | trunk/src/string/api.c:
nano-optimization in Parrot_str_find_index
11:50
kudo: 70795ca | (Martin Berends)++ | tools/test_summary.pl:
add a second report example to tools/test_summary.pl
11:55
12:06 mariano__ joined
Coke suggests "Dorito" instead of "Lorito *". mmmm, dorito. 12:14
12:19 JimmyZ joined 12:27 whiteknight joined 12:28 ruoso joined
whiteknight good morning, #parrot 12:33
12:37 whiteknight_ joined
whiteknight purl msg JimmyZ sorry about the typo in the blog. Fixed this morning. 12:37
purl Message for jimmyz stored.
JimmyZ good localtime, whiteknight 12:38
dalek rrot: r46586 | NotFound++ | trunk/t/op/string.t:
test a index usage that triggers a bug in r46564, cotto++
12:39
rrot: r46587 | NotFound++ | trunk/src/string/charset/ascii.c:
fixed version of r46564, simplify mixed_cs_index, cotto++
Coke another svn-- # (non svn-aware diff shows all $Id lines as different) 12:41
12:43 whiteknight_ joined
Coke I am getting a failure building git-latest rakudo with parrot-latest trunk. 13:04
nopaste "coke" at 192.168.1.3 pasted "rakudo failure." (25 lines) at nopaste.snit.ch/20543 13:11
13:15 GodFather joined
dalek kudo: 7e0aa33 | moritz++ | build/Makefile.in:
[build] missing pod2man should not be fatal
13:16
13:22 parthm joined
moritz FYI, I see the same build problems as Coke 13:26
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33814), fulltest) at r46587- Ubuntu 10.04 amd64 (g++) 13:29
13:29 atrodo joined
NotFound I think I made a mistake in r46587. One minute.... 13:30
Try r46588 13:38
13:45 plobsing joined
dalek rrot: r46588 | NotFound++ | trunk (2 files):
fix for bug introduced in r46587 and tests for its failure conditions
13:46
PerlJam NotFound: obiwan error, eh? 13:50
NotFound Interesting spelling 13:52
Coke NotFound: ayup, fixed. Danke. 14:06
(esp. for adding the tests!) NotFound++
ok. trunk is now building rakudo for me in 3m13s. 14:09
I think that's up there with the best from codestring.
NotFound Coke: Have you measured memory usage? 14:11
mikehh got to reboot - bbiab
Coke NotFound: is there an easy way to do that other than watching top? 14:13
ulimit doesn't seem to work on OSX 10.6.3, so I can't use that...
hey, feather's back.
NotFound I think there is some tool, but just does the equivalent of using top and record max values. 14:15
PerlJam Coke: my build took ~9.5 minutes (I guess it's an improvement, but since it takes so long, I've never really paid attention to the exact timing) 14:21
Coke NotFound: on feather, with 0.35G /virtual/ limit (boom if you go over), built fine. 14:28
trying lower.
NotFound Not so bad.
14:31 bubaflub joined
Coke 1/4G is not enough. 14:32
(core.pm is a pig.)
14:37 joeri joined 14:41 mikehh joined
Coke partcl's segfault - if I swap out load_bytecode "runtime/tcllib.pbc" with s/pbc/pir/, it actually runs my :anon :load sub from the .pir file, while the .pbc just segfaults. 14:51
NotFound Coke: partcl.googlecode.com/svn/trunk ? 14:56
Coke partcl? 14:59
purl partcl is tcl on parrot or code.google.com/p/partcl
Coke partcl is also git://github.com/partcl/partcl.git
purl okay, Coke.
Coke (the home page is there. the code is no longer.)
NotFound pbc_dump runtime/tcllib.pbc - Segmentation fault (core dumped) 15:04
dalek TT #1632 created by coke++: segfault in Parrot_ImageIO_shift_string 15:07
TT #1632: trac.parrot.org/parrot/ticket/1632
NotFound pbc_checker says a fixup is invalid. 15:08
15:10 Andy joined
Coke ... we have a pbc_checker!? =-) 15:13
NotFound examples/tools 15:14
Coke ah, not installed?
NotFound Coke: is just an experiment that I update sometimes.
Coke ah. 15:15
ah, .cpp. ah well. =-)
NotFound It's written in C++, which doesn't help get more people interested.
Coke fwiw, I just compiled it, ran it, and saw the FAILED error. 15:24
cotto notfound++ 15:28
15:37 davidfetter joined 15:53 gpw joined
cotto lorito? 15:56
purl lorito is "little parrot" in spanish or examples/embed/lorito.c or xkcd.org/707/
cotto L1?
purl i guess L1 is a hypothetical language that would be used to implement PMCs and PIR-visible ops so that they could all be easily jitted. or irclog.perlgeek.de/parrot/2009-04-21#i_1083550 or rt.perl.org/rt3/Ticket/Display.html...txn-471982 or magical unicorns and flying puppies.
cotto That definitely needs to be in a better place. 15:57
and I don't mean dead
nm. It's just at L1Recap 15:59
pmichaud, ping 16:12
pmichaud cotto: pong
cotto pmichaud, what do you think is an eta for adding a setting to nqp? 16:13
and how similar will it be to bacek's?
pmichaud likely to be very similar to bacek's 16:14
I'm not entirely sure it belongs with nqp itself, though. I suppose we could start it in the nqp repo as a short-term measure
cotto ok. I'm most concerned that it'll be somewhere. I'm not invested in it being any place in particular. 16:15
thanks
would it live as a separate project or in Parrot if it's not in nqp? 16:17
pmichaud I could see it living in any of those three places (nqp, separate project, or in Parrot) 16:19
there's not a clear "obvious" answer.
if putting it into nqp would make it easier to have it included in parrot, then that probably makes sense. :) 16:20
(and that probably does make sense)
let's go ahead and plan that it'll go into nqp. I'll start cherry picking things into the nqp-rx master repo later today
(my schedule for today has dramatically cleared in the last 90 minutes)
cotto great! 16:21
Coke pmichaud: added a deprecation notice for CodeString. 16:27
(pushing people towards the opcode, PCT, and StringBuilder)
dalek TT #1633 created by coke++: CodeString PMC deprecated 16:29
TT #1633: trac.parrot.org/parrot/ticket/1633
pmichaud Coke++
dalek rrot: r46589 | coke++ | trunk/DEPRECATED.pod:
Add note for CodeString PMC.
16:32
sorear pmichaud: Could you take a look at backlog from 7 hours ago? I've run into a bit of a snag 16:35
nopaste?
purl nopaste is, like, nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com or App::Nopaste or codepeek.com/paste/ or (: pastebot)
sorear what's this channel's paste-service? 16:36
16:36 theory joined
darbelo tools/dev/nopaste.pl 16:36
pmichaud sorear: yes, I saw a bit of the backlog. There's a small change that needs to be made to the Sub PMC.
Coke nopaste.snit.ch is fine 16:37
(the nopaste script uses that.)
pmichaud: suggested replacement for unique() ? 16:38
pmichaud PAST::Compiler already has a 'unique', so I just used that one.
Coke ok. I'm looking at updating, e.g. compilers/data_json, which is using TGE/PGE. 16:39
pmichaud PCT::Node has one also.
Coke guess I can call out to PAST::Compiler ... or convince someone to update it to PCT.
NotFound I've tested now on i386 (previously was on x64). Fails the same way, and pbc_checker also shows the same problem. 16:40
pmichaud not sure why I have two of them (plus we had a third in CodeString)
sorear pmichaud: excellent
nopaste "sorear" at 192.168.1.3 pasted "golfed test, should it help" (19 lines) at nopaste.snit.ch/20546 16:41
16:42 brooksbp_ joined
pmichaud sorear: it'll be another hour or so before I can get back to looking at the subroutine stuff 16:43
sorear I'm in no hurry. 16:46
16:47 rurban_ joined
cotto bacek, message about ops_pct sent to parrot-dev 16:48
Coke ... cotto ... you wound me. =-) 16:49
cotto: the old nqp is gone. 16:51
cotto It's well on its way out then. ;) 16:52
time for work
darbelo Hmm. I think I know what is causing JimmyZ's build problems... 16:55
pmichaud break time here... bbiaw
NotFound Uhhhh... What is supposed to be a "enum_fixup_none" ? 17:10
cotto_work looks like t/compilers/opsc/common.pir gets nuked in ops_pct by test-clean. 17:11
dukeleto win 4 17:14
dukeleto slaps forehead
cotto_work win7 is way better
davidfetter i hear it's gotten up to "tolerable for an hour" 17:27
cotto_work I can totally tolerate it. 17:29
darbelo Perhaps off topic, but Rakudo builds on amd64 with less than .5G RAM 17:30
cotto_work Rakudo building with <.5G ram is never off topic.
moritz rakudo building at all is never off topic :-) 17:31
darbelo Well, on i386 it's commonplace. It's allways been amd64 that has trouble.
Mind you, core.pm is still a pig but at least now it's a pig that fits through the door ;) 17:34
NotFound Coke: sorry, but the problems shown by pbc_checker where pbc_checker bugs X-) 17:37
Coke NotFound: ha! 17:38
cotto_work test that sucker
Coke dukeleto: someone on #perl6 mentioned ESC-4 instead. whee.
NotFound The pbc looks correct but pbc_dump segfaults. The problem seems to be in the unpacking. 17:40
17:43 gaz joined
Coke I wonder if I'm still using pbc_merge 17:45
(nope)
japhb Am I correct that most of trac.parrot.org/parrot/browser/bran...ettings.pm is from Plumage? 17:47
cotto_work japhb, bacek would know that 17:48
dukeleto japhb: sure does look like it
japhb I don't mind in the slightest, but if it was a manual copy-and-paste, that loses the VCS history that would show a copyright path. Anyone object to putting a comment or something in there indicating where it came from? 17:50
Coke cotto: build in branch warns:
# ... in 0.456355810165405 seconds
# Ops parsed 0.457345962524414
NotFound Not sure, but looks like while unpacking a pmc it contains a constant string that isn't unpacked yet.
japhb pmichaud, ping 17:53
cotto_work Coke: that's just informative
Coke cotto_work: that is not the word I would use. =-) 17:54
dalek rrot: r46590 | NotFound++ | trunk/examples/tools/pbc_checker.cpp:
minor fixes and clean hard tabs in example pbc_checker
dukeleto japhb: also, that code has tests (that I wrote ;) ) in the plumage repo 17:56
japhb: i wonder if they have any tests in the parrot core repo?
japhb dukeleto, nodnod
dukeleto japhb: the same issue came up with Tapir recently. fperrad seemingly copy+tweaked Tapir and added it to Parrot core, but I don't know the status of anything now
japhb Was Tapir copyright-assigned to PaFo? 17:57
dukeleto japhb: he seems to have added features, but I am unsure what to do with the Tapir github repo, which has essentially been forked into the Parrot core repo
japhb: no, it was similar to the setup of Rakudo
japhb: i had copyright with Artistic 2.0 17:58
moritz copyright != license
japhb It should not have been copied in sans copyright statement, at the very least.
And good manners dictates talking to you first, I would think. 17:59
Because even though the license may allow it, no reason to be ... well, I can't think of a better word than perhaps "rude".
dukeleto japhb: yes, i agree 18:00
moritz: yes, you are right
japhb (At the very least, because you own one project and commit in the other.)
18:00 iblechbot joined
dukeleto i was thinking that Tapir would live in ext/ similar to rakudo 18:01
nqp, i mean
japhb That makes total sense to me. That was the long-term plan for Plumage as well.
I knew what you meant. :-)
NotFound Coke: with r46591 tclsh dies gratefully instead of segfaulting. Do you feel better now? ;-) 18:05
Coke I would raise this issue on the parrot-dev list. We cannot just copy code we don't own into the repo and claim it.
NotFound: probably not. =-)
japhb Coke, good thinking.
Coke (The whole point of the Foundation is to shepherd this sorts of things.) 18:06
well, a major one, anyway.
NotFound $ ./tclsh 18:07
Reference to constant not yet unpacked 581
Coke I suspect bacek's string mucking. 18:09
NotFound Looks like a imageio problem. 18:10
dalek rrot: r46591 | NotFound++ | trunk/src/pmc/imageio.pmc:
add a sanity check in imageio shift_string
18:11
rrot: r46592 | gerd++ | trunk/lib/Parrot/Docs/Section (2 files):
Add the PCT-tutorial to the HTML-documentation
cotto_work Do I gather correctly that nqp-settings in bacek's branch may have been improperly taken from plumage? 18:15
japhb cotto_work, I didn't know about it until I saw an email referring to a new NQP setting a little while ago. As this is something I'm definitely interested in, I clicked through, and went, "Um ... didn't I write this?" 18:18
dalek a: 0d616ca | fperrad++ | lua/lua51.pir:
s/emit/append_format/
18:19
japhb parrot-dev email sent 18:26
dalek rrot: r46593 | gerd++ | trunk/MANIFEST:
Add the file lib/Parrot/Docs/Section/PCT_Tutorial.pm to MANIFEST
18:27
18:37 Essobi left
cotto_work It sounds like it's an issue that needs to be resolved but not necessarily a blocker to the ops_pct merge. 18:54
19:03 davidfetter joined 19:13 eternaleye joined
pmichaud 17:53 <japhb> pmichaud, ping 19:26
japhb: pong
japhb pmichaud, I was wanting to find out what the deal was with the "NQP setting", from your perspective. 19:29
pmichaud I was planning to look at it in detail this afternoon/evening
my intent at this point is to create an NQP setting of some sort that can be distributed with NQP 19:30
japhb Clearly, bacek would like to use Plumage's NQP utilities, which is where I come in. :-)
pmichaud cotto_work: ping
cotto_work pong
pmichaud cotto_work: would it be easy to determine which of the setting features you're wanting/relying on?
cotto_work It wouldn't take long
dukeleto japhb++ # recent parrot-dev email 19:31
pmichaud I might want to start with a "minimal setting" in nqp (sufficient to support ops2c) and then let people expand it from there
japhb: it's not at all my intent to take code without credit. 19:32
japhb dukeleto, thanks
pmichaud, oh, I definitely didn't think so.
pmichaud japhb: my best guess at this point is that there will be a setting library directory in the nqp-rx repo where people can contribute setting library methods and/or functions
japhb My parrot-dev email was about correcting the process in general, not because I object to the code reuse.
Fair enough. 19:33
pmichaud this would then appear in the stage0 directory, which is how it would ultimately appear in parrot
japhb And feel free to copy as desired from Plumage. I just wanted a heads-up, and an "upstream" link in a comment somewhere.
pmichaud I'm also wondering if it would be better done as multiple setting files so that a person could obtain, say, *just* the IO enhancements without also pulling in all of the others. 19:34
Coke I think the ext/ dir is a fine place to put such things. (and we can clearly say that anything in there is taken from their respective upstream location and is under their license, etc.)
pmichaud and we could have a master "give me everything" module that pulls in everything :-)
Coke pmichaud: nice to have, but lumping in together is fine for now, IMO.
pmichaud Coke: okay, good to know 19:35
Coke if it's easy, sure. if it's more work, meh.
pmichaud it's more on the easy side
cotto_work: where's the best place for me to look for ops2c sources to figure out what's needed and what isn't? 19:36
cotto_work compilers/opsc
pmichaud perfect
in trunk, or a branch?
cotto_work branch
ops_pct 19:37
pmichaud okay
this will be my task for the evening, then.
cotto_work thanks
pmichaud so that by tomorrow there's an nqp settings library in parrot.
cotto_work wheeee!
pmichaud japhb: I'm going to pull in (and modify) code I think appropriate for the setting into the nqp-rx repository. Feel free to later augment it with whatever copyright or authorship credits you feel appropriate 19:38
commit bits will be liberally given :) 19:39
japhb OK then. :-)
pmichaud if someone wants to post this plan as an update to parrot-dev, that would be welcome. (I have to leave to pick up kids from school right now.) 19:40
japhb Writing one 19:44
purl Writing one is trivial
japhb sent 19:50
19:51 eternaleye joined
darbelo japhb: ping 19:55
japhb pong 19:56
or more precisely: 19:57
darbelo, pong
darbelo Plumage development seems to have stalled bit without you. Do you have any big plans on that are we could help you with? 19:58
japhb darbelo, there are two sides to that:
1. I have the first (of hopefully several) grant proposals in with PaFo to work on heavy parts of Plumage. It has apparently passed inspection by the board, and is now off to be shopped to potential donor companies. 19:59
darbelo Nice.
japhb 2. There are some things that can be done by others with only guidance by me. 20:00
cotto_work very nice
japhb 2a. The test suite needs to be expanded. Considerably. Work is ALWAYS welcome there.
cotto_work It'll be sweet to have someone paid to work on Parrot stuff.
japhb 2b. There are only a few remaining bits necessary to make Plumage *itself* installable. These last bits just need to be done. 20:01
Hmmm, I can't remember 2c at the moment, but if need be, I'll search my notes. 20:02
cotto_work, It will be sweet to be able to call Parrot my job. :-)
darbelo How up to date is TASKS ? That used to be the place to look for LHF.
japhb Dunno, let me look
20:03 ash_ joined
bacek Good morning, #parrot. 20:03
cotto_work good morning bacek 20:04
darbelo clock?
purl darbelo: LAX: Thu 1:04pm PDT / CHI: Thu 3:04pm CDT / NYC: Thu 4:04pm EDT / LON: Thu 9:04pm BST / BER: Thu 10:04pm CEST / IND: Fri 1:34am IST / TOK: Fri 5:04am JST / SYD: Fri 6:04am EST /
bacek yes, yes. 6AM. 20:05
darbelo 6AM and on IRC.
Robots this days...
cotto_work I was awake at 6:0x this morning. I don't know why.
ash_ bacek: are you in Australia? or that time zone? 20:08
bacek ash_, Sydney
ash_ cool, so is it friday there?
darbelo Australias is in the future. 20:09
ash_ I graduate tomorrow, well, i walk tomorrow, i guess I have graduated since i am done with my finals now... 20:10
japhb darbelo, of the items listed in TASKS, most are still valid. The dependency stuff I'll be handling in the first grant work, and the NQPUtil.nqp stuff will probably be radically altered by pmichaud tonight.
darbelo, Other than that, I'd say have at it. 20:11
Hmmm. I should probably add my 2a and 2b above into TASKS.
20:12 iblechbot joined
pmichaud btw, nqp folks might want to note that we now have flattening hashes |%hash and last/next thanks to sorear++ 20:15
I'll be working on closures tonight as well. 20:16
japhb w00t! 20:17
I've been out of the game way too long, clearly.
pmichaud, is there a dev list for nqp-rx, so that we can get updates like this in email, rather than having to backlog the channel? 20:18
ash_ neat, pmichaud++ sorear++
Coke japhb: github rss feed.
github.com/perl6/nqp-rx/commits/master.atom 20:19
japhb *sigh* Guess I finally have to bite the bullet and start using a real RSS feed reader .... 20:22
darbelo Hmm. Am I the only one getting substr_s_i_i_s failures in plumage? 20:23
Coke darbelo: you mean replace_s_s_i_i_s ? ;)
darbelo I mean "compiler returned NULL ByteCode './src/lib/Plumage/NQPUtil.pir' - The opcode 'substr_s_i_i_s' (substr<4>) was not found. Check the type and number of the arguments"
pmichaud japhb: I could also post updates to my twitter account, or we could use a 'nqprx' twitter account
Coke darbelo: yes. that opcode was removed; you need to change it to foo = replace foo, a, b, 'c' 20:24
20:24 LoganLK joined
pmichaud japhb: fwiw, I really like Google's reader 20:25
darbelo Coke: Not as simple as that. It's generated code ;) 20:26
Coke (I like google reader because I can use the same reader everywhere, even on my phone.)
pmichaud Coke: yes, same here as well
and I can use it from internet kiosks and th elike
although I haven't tried Google Reader from my (Google) phone yet 20:27
hmmmm
pmichaud grabs his phone
japhb darbelo, That file needs to be regenerated from the NQP and re-checked in. It's a dependency-loop breaker so that configuration can succeed.
pmichaud, twitter updates++
I've so far been not a huge fan of using google's applications. I like to control my toolset. 20:28
May have to eventually start using the web apps though, if I can't find a good solution for keeping state across my devices. 20:29
pmichaud japhb: yeah, that's one of the things I like about the google apps (more) 20:30
japhb: once I was able to convince my wife that any documents (itineraries, to-do lists, etc.) she wanted me to look at and update would be best done in Google Apps.... our life got a lot easier.
before that it was always "which computer has the latest copy of that file?" "What was it called again?" "Are you sure this is the latest up-to-date version?" 20:31
japhb I've often thought a perfect solution (for me) would be to be able to host my own locked-down colo box somewhere that had *private* servers for various syncing engines (Weave, etc.). But a lot of tools that I want to use don't have/support private servers yet.
For a while, just having my life in a git repo on my home server worked fine. But as I go mobile (and don't allow incoming connections to me home net), that starts to fray at the edges. 20:32
GeJ Good morning everyone.
japhb o/
Coke ~~
japhb darbello: Did regenerating fix your problem? 20:33
darbelo japhb: I know a guy who does that (keep everything in a remote box). He carries an underpowered netbook and a 3g modem.
japhb: Apparently not. I'm looking at the nqp source now. 20:34
japhb I just grew up in an era (and with friends) that make me really not like having my personal data on a high-profile public system. 20:35
Gives me the heebie-jeebies just thinking about it.
darbelo Hah! Q:PIR{}s.
japhb And yet, can't get away from it and still get job done, sometimes. :-(
Ah, sorry. 20:36
darbelo japhb: I got that one, but got bit by "OS is a dynpmc now" :) 20:38
japhb BAH
darbelo Yeah, we've been slacking.
japhb :-) 20:39
pmichaud hmmm, reader on the nexus works pretty well :-)
japhb In one of the planned grant applications is something about a 'smoke-world' tool (or command) that basically tries to build and smoke every package it can find. Something to run overnight before Parrot releases and branch merges. :-) 20:40
darbelo japhb++ 20:45
dukeleto japhb++ 20:50
bubaflub dukeleto: i noticed you've got a PL/Parrot macports issue, may i also recommend getting PL/Parrot into Homebrew?
dukeleto bubaflub: please do, can you add that as an issue? 20:53
bubaflub dukeleto: sure thing
dalek TT #1634 created by coke++: segfault in Parrot_Class_init_pmc 20:54
TT #1634: trac.parrot.org/parrot/ticket/1634
bubaflub dukeleto: done 20:56
dukeleto bubaflub++ 21:01
bubaflub one of these days i'm going to remove mac ports and go completely to home brew; but my work laptop requires a lot of stuff and i don't want to bork it just yet 21:02
21:12 kurahaupo joined
bacek japhb, (for the record) irclog.perlgeek.de/parrot/2010-02-27#i_2044517 21:21
japhb, also, history was lost by accident. You can check original commits on 1st and 2nd of March. 21:24
japhb, but yes, I didn't update CREDITS file (as I should)
japhb bacek, Thank you for pointing that out. I was (and still am) quite interested in bringing stuff from Plumage into Parrot, so that in itself was never the problem. I was asking for 1) Notice when it was about to happen (That was many weeks ago. :-), and 2) A note/comment in the copied code of where it was copied from. That's all. I hope I didn't give the impression that I was mad at you. I was more concerned that we get this right in
the long term than any issues with this particular case.
Ah, accidental loss of history is understandable. Thank you for trying to get it right in the first place. :-) 21:25
bacek japhb, it was something like this github.com/bacek/nqp-rx/commit/ce2a...50667d10cc 21:27
21:27 Whiteknight joined
bacek I just have to revert revert merge commit... 21:27
japhb Ah, I see, the plumage reference was in the commit message.
Whiteknight you better revert the revert correctly, or I'll have to revert you
bacek japhb, yes. 21:28
japhb Hmmm. We should probably make it a policy to include such in the actual file itself (like I said, in a comment or doc section). People rarely pay attention to commit messages after they slip into the past, and certainly a tarball snapshot (like with a release) would not contain that information. 21:30
bacek "japhb, but yes, I didn't update CREDITS file (as I should)" 21:31
pmichaud bacek: did you see my plan for nqp setting earlier in the backlog? 21:32
bacek pmichaud, nope.
Is it about using git submodules?
pmichaud irclog.perlgeek.de/parrot/2010-05-13#i_2327289 21:33
no, I'm not planning git submodules at the moment
basically, I'll start cherry-picking stuff from your setting into the master branch later tonight, and set up the scripts so they're correctly copied into parrot ext/nqp-rx
bacek pmichaud, sounds good. 21:34
pmichaud people can then make updates to the master branch
and we'll also start a test suite
bacek t/settings/
I started it already
:)
pmichaud yes, I see that as well.
I'll take from there.
cotto_work It's a great day. 21:35
pmichaud as far as credits go, I'm going to worry mainly about code and hope that you/japhb/others will fix up credits as you deem appropriate
bacek I can create clean branch with cherry-picked commits for settings if it will help
pmichaud bacek: no, I plan to make some code modifications along the way anyway
it's easy enough for me to grab stuff out of your repo
as it is now :-) 21:36
bacek pmichaud, ok. Almost interesting commits were on 01/03/2010-02/03/2010
pmichaud good deal.
I'm also not too concerned about maintaining the commit history on these files... should I be?
japhb *Some* of the utilities from Plumage have tests already that you can take.
pmichaud I was just going to grab pieces of the file as I did the review
so, here's an important question... 21:37
21:37 kurahaupo joined
bacek pmichaud, (commit history) Not really. Just recommit it. 21:37
pmichaud should we develop a test harness in nqp, or just use the one that is in parrot? ;-)
japhb Well, the one in Parrot was taken from Tapir, right?
pmichaud e.g., something along the lines of Test::More 21:38
japhb Ah, that part.
purl ah, that part is store dependent
pmichaud or rakudo's Test.pm
I'm inclined to make one for nqp.
(based on Rakudo's to some extent)
anyway, feel free to add comments. I have to shuttle kids from activity to activity for a short while. 21:39
japhb Sounds good to me. Plumage just use's Parrot's Test::More because it's guaranteed to be there.
(And it sanity tests Test::More, so clearly at some point I thought about the possibility of switching test modules) 21:40
pmichaud okay, wfm
afk for a while
Whiteknight wfm = write the f*ing manual? 21:43
bacek japhb, gist.github.com/400498 - any comments/objections? 21:44
wfm is works for me
Whiteknight ah
bacek purl, wfm?
purl wfm is, like, works for me (for lazy folks)
21:45 rbuels left
japhb bacek: Aside from your email being incorrect and a tiny grammar nit ("on Plumage" should be "for Plumage" or "in Plumage"), looks fine by me. Didn't dukeleto have his hand in that code as well? 21:48
bacek He already in nqp CREDITS.
cotto_work purl, bacek? 21:49
purl bacek is THE MANIAC or some sort of magical coding robot 21:50
cotto_work bacek is also probably not pmichaud@pobox.com
purl okay, cotto_work.
bacek japhb, I've updated gist. Looks better? 21:51
cotto_work, bah! :)
cotto_work it's true
japhb Yes, thank you bacek. 21:52
Too bad we don't have a hugbot in here
cotto_work I'm really happy to see this getting straightened out so quickly.
bacek cotto_work, it was my fault. 21:55
And it's fixed now - github.com/bacek/nqp-rx/commit/9253...c43d0d90da
cotto_work It would have some up one way or another.
btw, why's tapir in parrot? 21:56
bacek Anyway, looks like we can merge ops_pct really soon.
japhb bacek++
cotto_work, that's the other item to be resolved.
cotto_work very yes
bacek msg pmichaud CAN I HAZ NQP COMMIT BIT? 21:59
purl Message for pmichaud stored.
bacek did update lolcode to nqp-rx :)
cotto, btw, we should start thinking about nominating "ops" language. 22:00
cotto_work What do you mean by "nominating"?
22:00 dukeleto joined
cotto_work like for an award? ;) 22:00
22:00 PerlPilot joined
bacek My current preferences - slightly patched nqp to support typed variables. 22:01
cotto_work oic
for implementing ops
22:01 Util joined
bacek I just don't want to implement C parser. 22:01
cotto_work That's because you're sane.
It's possible but it'd be a huge time sink.
japhb Clearly a personality flaw.
If you're sane after staring into the heart of the beast, something is wrong. :-) 22:02
Tene bacek: is there a PEG of C? Allison has been working on a PEG parser.
22:02 dalek joined
cotto_work ohai dalek 22:02
bacek Tene, "PEG"? 22:03
Tene en.wikipedia.org/wiki/Parsing_expression_grammar
more generally, it might be useful to find a grammar for C in some other grammar language, and then translate that. 22:04
bacek Tene, it's not so easy to translate it. And I don't see any advantages of writing ops in "C". 22:05
22:05 pmichaud joined
Tene Ah. I should have read more scrollback. 22:05
bacek And they are currently requires not only parsing but at least working macro-substitution. 22:06
Tene I was just glancing here while waiting for something to run at work, and just saw "C grammar" without looking at the context. :)
darbelo Ops in "C" can't really reuse other ops easily. That shoud be addressed in whatever language we end up using.
cotto_work My inclination would be to define Lorito and demonstrate that it's usable to implement a few key ops by implementing them directly in it, then building the ops hll on top of that. 22:07
bacek we still need "C emitter" for boostraping. 22:09
cotto_work yes
darbelo Sure, but PCT can support 'pluggable' emiters by stage swapping. 22:10
cotto_work It'll be easiest to define Lorito and build the Lorito to C translator and get it tested, then build HLL stuff on top of that. 22:11
imo
my picture of how it all fits together is admittedly fuzzy 22:12
seen chromatic
purl chromatic was last seen on #parrot 1 days, 17 hours, 21 minutes and 58 seconds ago, saying: The only interesting part of the merge is a series of conflicts on NQP-rx. [May 12 04:50:38 2010]
darbelo OTOH, a big part of our ops will just be a NCI call to libparrot in the start...
bacek: Have you given any thiught to calling C from 'Augmented NQP'? 22:15
bacek darbelo, I'm not going to.
irclog.perlgeek.de/parrot/2010-05-13#i_2325357
darbelo, I just want to generate C from it 22:16
(as first step)
darbelo bacek: Yes, but a lot of out ops are just calls to supporting functions in libparrot. 22:17
inline op chopn(out STR, in STR, in INT) :base_core { $1 = Parrot_str_chopn(interp, $2, $3);
}
cotto_work Is it possible to subclass nqp in such a way?
a la Perl 6
bacek cotto_work, we don't need to subclass nqp (assuming it has typed variables). We need new stage in PCT::Compiler 22:18
darbelo, it's "lorito ops side of story"
cotto, PAST::Compiler.to_c 22:19
msg sorear Can you put youself into nqp CREDITS? 22:20
purl Message for sorear stored.
cotto_work turn a past into C? Sounds interesting.
bacek cotto_work, yes. It was original plan.
22:20 davidfetter joined
darbelo Okay, I'm missing a step here. 22:20
bacek thinking about putting "ops syntax" into DEPRECATED.pod 22:23
cotto_work btw, t/compilers/opsc/common.pir is getting clobbered in ops_pct by test-clean where it nukes t/compilers/*/*.pir. What's the best fix for that?
darbelo replace the first '*' with the right expansion 22:24
Most likely several t/compilers/<compilernamehere>/*.pir lines 22:25
pmichaud nqp eventually hopes to be able to provide int/num/str to provide access to I, N, and S registers directly
cotto_work {data_json|imcc|...} seems to work 22:26
pmichaud i.e., my int $x := 3; means that $x corresponds to a Parrot $In register
major blocker/difficulty there is that parrot lexicals can only be PMCs at the moment.
cotto_work darbelo, can you fix that? 22:27
bacek pmichaud, can we at least support types in grammar?
pmichaud depends on what you mean by 'types' 22:28
there's a bit of a challenge here in that perl 6's type specifiers are constraints, not coercions
so, technically, my int $x := 2.0; ought to throw an exception, not silently convert the 2.0 into an integer 2 22:29
darbelo cotto_work: I'm on it.
pmichaud but if we just wanted to parse (and otherwise ignore) typenames for now, we could potentially do that.
bacek pmichaud, I'm going to use nqp for parsing purpose only (atm)
pmichaud, yes. This is exactly what I want :) 22:30
and Parrot's only multi-dispatch
pmichaud bacek: I'll look into it. :)
bacek and pony
cotto_work bacek: you want it in the PAST too, don't you?
bacek cotto_work, PAST is part of parsing from my point of view :) 22:31
pmichaud well, PAST allows any sort of arbitrary flags to be hooked onto the nodes
(not highly recommended, but it's there if needed)
to me, PAST is part of semantic analysis, not parsing.
parsing produces a parse (match) tree. semantic analysis/actions then produce the ast. 22:32
bacek How hard/reasonable is to implement multi-dispatch in nqp? E.g. class Foo { multi method bar( <type> $arg ) }.
pmichaud I've been wanting to look into that, yes. 22:33
bacek (With direct mapping to parrot)
pmichaud part of the challenge is being able to recognize types.
bacek <ident> ** '::'?
pmichaud well, subnames are also idents 22:34
at the moment nqp does tend to treat any bareword as a type, yes.
(which is why we don't have listop parsing) 22:35
22:39 Limbic_Region joined
bacek afk # shoppi^W $dayjob 22:42
cotto_work I need to write up a full Lorito plan so we can point at it and say that it's wrong instead of pointing at ideas in our heads and saying that they're wrong. 22:45
darbelo points at the ideas in cotto's head. 22:49
22:50 eternaleye joined
darbelo There is some serious overdeletion going on in test-clean... 22:55
cotto_work yarly 22:57
darbelo Seriously, *stabs* files?
22:58 Psyche^ joined
cotto_work What are those? That sounds familiar. 22:58
darbelo Excecutable debug format.
What gcc used before DWARF2. 22:59
From the 3.X.X days.
.oO( That's "today" on my platform )
23:00
Maybe it's a leftover from the ehn the exec runcore was alive ? 23:01
cotto_work likely enough 23:02
23:07 joeri joined 23:11 snarkyboojum joined 23:12 eternaleye joined
cotto_work Isn't OpenBSD moving to LLVM? 23:20
darbelo Not until it supports VAX ;)
GeJ aren't they moving toward PCC? 23:27
darbelo GeJ: Technically, yeah. But pcc is still not there yet, even on i386 it still has some codegen issues. (Or had, last I checked.) 23:29
cotto_work The PCC wiki, while functional, has all the design prowess I'd expect from a highly technical bunch of OpenBSD hackers. 23:33
darbelo It renders fine on lynx ;) 23:35
cotto_work I'm sure that's important.
darbelo And I think the main guy behind pcc is a NetBSD hacker :) 23:37
dalek tracwiki: v5 | actown++ | TreeUnit 23:42
tracwiki: Fixed mscgen example. You might want to remove it.
tracwiki: trac.parrot.org/parrot/wiki/TreeUni...ction=diff
tracwiki: v6 | actown++ | TreeUnit
tracwiki: Removed mscgen example. Moving to its own page.
tracwiki: trac.parrot.org/parrot/wiki/TreeUni...ction=diff
tracwiki: v1 | actown++ | Mscgen
tracwiki: Working example of mscgenplugin.
tracwiki: trac.parrot.org/parrot/wiki/Mscgen?...ction=diff
cotto_work actown? 23:43
sorear pmichaud: I'm back 23:48
pmichaud: Did you get to look at anything re. lexical persistence in subs? 23:49
pmichaud: I don't really have a problem with coercions in NQP. NQP can't be a subset of Perl6 forever (and it isn't, anyway - pir::) 23:50
darbelo Crap. Forgot to dcommit. Again. 23:51
cotto_work: How does r46594 look? 23:52
cotto_work checked-in files don't get nuked so I'm happy 23:53
dalek rrot: r46594 | darbelo++ | branches/ops_pct/config/gen/makefiles/root.in:
Make the cleanup rules for t/compilers* a bit more specific to avoid deleting we don't want deleted.
23:57
23:58 LoganLK joined