Parrot 3.6.0 "P�jaros del Caribe" released | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 31 July 2011.
cotto_work wingolog.org/archives/2011/08/02/a-...g-compiler 00:02
00:05 benabik left 00:15 wknight-phone joined 00:19 wknight-phone left 00:38 whiteknight joined
whiteknight good evening, #parrot 00:39
Felipe good evening!
00:47 dafrito left
whiteknight benabik: ping 00:49
soh_cah_toa: ping
dalek p: 4e5bf5f | pmichaud++ | src/PAST/NQP.pir:
Add :pasttype<xor_nqp>, which allows the return value for two true

This can likely be immediately added to Parrot's PCT as a replacement for :pasttype<xor>, but since nom/nqp will need this long before the next Parrot supported release we'll keep a copy here too.
00:51
rrot: 2098ab5 | Whiteknight++ | src/packfile/api.c:
Some extra checks in Parrot_pf_subs_by_flag. This should help to eliminate or reduce issues seen by benabik++
00:56
whiteknight msg benabik I just pushed a potential fix to master for your packfile issues. I don't have your test case here, so let me know if it helps you 00:57
aloha OK. I'll deliver the message.
01:01 Kulag left 01:02 darbelo_ joined, darbelo left 01:06 GeJ left, GeJ joined 01:08 darbelo_ left 01:09 woosley joined 01:16 rdesfo joined
dalek kudo/nom: cefbda4 | pmichaud++ | / (3 files):
Some infix:<xor> improvements -- two true values passed to xor or ^^
01:17
kudo/nom: 6834ff0 | pmichaud++ | NOMMAP.markdown:
Update NOMMAP.
01:19
01:27 theory left, whiteknight left 01:28 rdesfo left 01:34 daniel-s joined 01:41 Kulag joined 01:50 Drossel joined 01:51 Kulag left 01:59 woosley left 02:16 Kulag joined, Drossel left 02:38 kurahaupo left, rdesfo joined 02:41 rdesfo left 02:58 theory joined 03:09 theory left 03:42 kurahaupo joined 03:58 theory joined 04:14 SHODAN joined 04:42 rdesfo joined, rdesfo left, theory left 04:50 SHODAN left 05:11 woosley joined 05:12 SHODAN joined 05:31 theory joined
cotto ~~ 05:36
05:41 theory left 05:44 theory joined 05:46 theory left, theory joined 05:47 theory left 05:57 Kulag left, Kulag joined 06:01 daniel-s left 06:06 Drossel joined 06:08 Kulag left 06:18 aloha left 06:19 bacek_at_work left
cotto seen soh_cah_toa 06:25
06:31 bacek_at_work joined 06:37 aloha joined
cotto seen aloha 06:44
aloha aloha was last seen in #perl6 6 mins 42 seconds ago joining the channel.
dalek tracwiki: v3 | cotto++ | HBDBPlanning 06:47
tracwiki: add a description of this page's purpose, remove some unneeded bits from the original timeline
tracwiki: trac.parrot.org/parrot/wiki/HBDBPla...ction=diff
cotto msg soh_cah_toa I've started to look at how to rework your GSoC schedule to accommodate imcc--'s bugs. Please take a look at trac.parrot.org/parrot/wiki/HBDBPlanning and let's find some time to discuss the project. 06:49
aloha OK. I'll deliver the message.
07:00 Drossel left 07:01 Kulag joined
dalek rrot: 1ecc900 | cotto++ | docs/dev/profiling.pod:
add a bunch of stub sections to the profiling document
07:01
07:02 mj41 joined 07:04 Kulag left 07:05 Kulag joined 07:13 Kulag left 07:16 Kulag joined 07:17 dafrito joined 07:21 Drossel joined 07:22 Kulag left 07:23 bubaflub left 07:27 Drossel left 07:31 fperrad joined 07:45 mls joined
mls morning! 07:45
Is there a reason why the die(INT, INT) opcode doesn't attach a continuation to the exception? 07:46
The other forms of die() attach it.
08:05 Kulag joined 08:12 Kulag left 08:26 Kulag joined 08:46 woosley left 08:48 woosley joined 08:58 woosley1 joined, woosley1 left 09:00 woosley left 09:05 jjore left 09:28 bubaflub joined 09:51 preflex_ joined 09:55 preflex left 09:57 mls left 10:03 ambs joined 10:04 lucian joined
dafrito Is it okay/common to use PIR labels solely for readability purposes? 10:41
I'd imagine they'd just get optimized away, but I'm wondering if it'll be like, offensive to people to see them ;) 10:42
10:43 kurahaupo left 10:44 kurahaupo joined 10:47 cosimo joined 10:51 jjore joined
moritz dafrito: why not use comments for readability? 11:10
Felipe morning 11:16
dafrito moritz, I do, but it looks clearer to me to also have the labels. 11:31
moritz anyway, it wouldn't offend me in any way
dafrito I use a label followed by a comment, which indicates to me "This comment describes what this block is doing" whereas only the comment wouldn't really accomplish the same
moritz, thanks for your response :) 11:33
11:33 Coke left, Coke joined
moritz I also tend do avoid writing too much in PIR :-) 11:34
11:35 cosimo left
dafrito moritz, haha, yeah, it's a bit untenable. I'm trying to fix a bug in lua, and decided to do some refactorings along the way 11:36
11:40 lucian left
dalek kudo/nom-exceptions: 8ea619d | moritz++ | NOMMAP.markdown:
note a segfault in NOMMAP
11:48
kudo/nom-exceptions: 69e9988 | moritz++ | src/core/Exception.pm:
extract payload from parrot excetions, if available
kudo/nom-exceptions: 0c51f85 | moritz++ | src/core/Exception.pm:
in Exception, make sure we have a parrot exception before throwing
12:06 contingencyplan left 12:20 kurahaupo left 12:29 whiteknight joined
whiteknight good morning, #parrot 12:29
tadzik good morning whiteknight 12:30
dalek kudo/nom: 967ab7a | tadzik++ | src/Perl6/Actions.pm:
Use $/.from ~ ",' ~ $/.to as a POD block id when adding them to $=POD

The previous approach didn't work for two identical POD blocks existing in the document, and caused a failure in t/pod/07-tables.t
12:35
kudo/podparser: e028411 | jonathan++ | src/ (4 files):
Register Capture type so we can use it in the binder.
kudo/podparser: 3588736 | jonathan++ | src/core/Capture.pm:
Fix a thinko.
kudo/podparser: 0bc9883 | jonathan++ | src/ (2 files):
Make |$c work again in signatures; $c becomes a Capture with the current unbound stuff in it.
kudo/podparser: d74aaa8 | tadzik++ | / (19 files):
Merge branch 'nom' into podparser
12:36
whiteknight Interesting blog post about V8: wingolog.org/archives/2011/08/02/a-...g-compiler 12:48
bubaflub ~ 12:53
moritz heh, I posted that in #perl6 a few hours ago :-)
atrodo And cotto posted it last night too 12:55
whiteknight oh, fun 12:58
13:19 dafrito left 13:24 daniel-s joined 13:35 ambs left 13:50 smash joined
smash hello everyone 13:51
whiteknight good morning, smash 13:52
dalek rrot/whiteknight/load_bytecode: 63a9db0 | Whiteknight++ | src/p (2 files):
Add a tag cache to PackfileView, to keep track of what initializations have been performed on it. Add two methods to access this cache. The load_bytecode_s automatically marks a packfile as having been initialized with 'load'
15:06
15:07 SHODAN left 15:14 davidfetter joined 15:39 daniel-s left 15:49 JimmyZ joined 15:54 ambs joined 15:55 lucian joined 16:04 JimmyZ left 16:11 sri left 16:12 _sri joined
whiteknight msg benabik we should probably get together sometime soon for a meeting. let me know when you are available 16:15
aloha OK. I'll deliver the message.
16:18 dmalcolm joined 16:21 particle1 left 16:30 theory joined
dalek rrot/whiteknight/load_bytecode: a4a4895 | Whiteknight++ | src/packfile/api.c:
load_bytecode_s should update the various caches before running do_sub_pragmas, to avoid recursion. Cache PackfileView objects by full path name, not short name, so the two load_bytecode variants are talking the same language
16:36
16:44 mj41 left 16:46 dafrito joined
whiteknight msg NotFound can we add load_bytecode_p_s to Winxed as a builtin? 16:46
aloha OK. I'll deliver the message.
16:54 particle joined 16:57 athomason joined
NotFound whiteknight: there is a litlle problem: there is no way to distinguish builtins by its return type. 17:11
load_packfile can be a good name?
whiteknight yeah, that would be fine for me 17:14
cotto_work ~~ 17:15
NotFound $ winxed -e 'var pf=load_packfile("Test/More.pbc"); say(pf);' 17:17
/home/julian/runparrot/lib/3.6.0-devel/library/Test/More.pbc
Like this?
whiteknight NotFound++
NotFound I enjoy features so easy to implement :)
dalek nxed: 5c9c9b9 | NotFound++ | winxedst1.winxed:
add builtin load_packfile to stage 1:
17:20
nxed: 7dac8ec | NotFound++ | pir/winxed_compiler.pir:
update installable compiler
17:21
whiteknight I want to get the whiteknight/load_bytecode branch merged into master today or tomorrow. It adds the necessary caching features that will make the new op more usable and compelling 17:22
NotFound Good
dukeleto does anybody know what the equivalent of "on stack replacement" is for register-based vm's ? wingolog.org/archives/2011/06/20/on...ment-in-v8
whiteknight: +1 to merging that branch sooner rather than later
NotFound I'm going to test and commit an update to the winxed snapshot 17:23
17:24 preflex joined 17:25 preflex_ left 17:27 benabik joined
benabik ~~ 17:31
NotFound dukeleto: I think javscript jitters talks its own language, unaccesible for the rest of mortals. 17:40
dukeleto NotFound: yes, they have their own language, but so do we :) They are doing lots of cool stuff that we would benefit from understanding 17:43
17:43 kurahaupo joined 17:44 M_o_C joined
dalek rrot: cd7297c | NotFound++ | ext/winxed/compiler.pir:
update winxed snapshot to 1.1.devel 7dac8ecc52:

load_packfile builtin
17:45
whiteknight NotFound++ 17:47
dalek nxed: dacea8e | NotFound++ | NEWS:
forgot to update NEWS in 7dac8ecc52
17:48
rrot/whiteknight/load_bytecode: ce51d7f | Whiteknight++ | / (15 files):
Fix conflict in merge from master
jnthn__ dukeleto: Suspect the answer is tied to how Parrot JITs and what register frames look like at that point, but at first glance the easiest analagy would seem to be with combining the register space allocation for two functions - but being able to do so dynamically. I only skimmed it, though. 17:49
NotFound dukeleto: even better, we have a bunch of own languages ;)
dukeleto jnthn__: that sounds about right. Glad to hear your opinion :) 17:50
bubaflub morning dukeleto 17:51
benabik whiteknight: G'afternoon
whiteknight hello benabik. how are you doing today? 17:52
dukeleto bubaflub: wazzup
bubaflub dukeleto: not a whole lot. trying to get $dayjob to get me out to Pittsburgh for PPW
dukeleto bubaflub: how is the new house?
bubaflub dukeleto: nice. to get my couch in i had to take out part of the door. that was fun. 17:53
dukeleto bubaflub: that looks like it will be fun, but I already have a bunch of travel planned around that time, so I will skip.
benabik whiteknight: A little frustrated. It's a bit more work than I had expected to get newPOST to generate bytecode. I'm trying to figure out what it isn't generating that it needs to.
dukeleto bubaflub: i see you have already starting reverse engineering your house...
benabik: keep on truckin'. We believe in you.
bubaflub dukeleto: yup. a bunch of new bookshelves to assemble, got my office setup. 17:54
dukeleto: bummer. i think there will be some other parroteers there
17:54 preflex_ joined
benabik whiteknight: My problems with PackfileView are centered around me generating invalid bytecode. Changing it to write out to a file gets parrot to output "Attempting to do sub operation on non-Sub." 17:54
whiteknight ouch 17:55
17:58 preflex left 17:59 hercynium joined
whiteknight benabik: are you generating invalid bytecode because of mistakes in your code, or because of problems with the packfile pmcs? 18:01
that is, something you need to fix, or something we need to fix?
benabik I think it's my/bacek's code.
Just having problems tracking down what the error is, exactly.
whiteknight okay, what is the non-sub you are trying to treat like a sub? 18:03
benabik whiteknight: I'm attempting to generate just an empty main sub. 18:04
whiteknight and that's failing?
benabik Yup.
nqp_pct:t/compilers/pct/newpost.t 18:05
18:09 Coke left, Coke joined
whiteknight bacek had an example test somewhere for using the packfile pmcs to create a simple toy function 18:09
Add some debugging statements in the places that make the method calls to the packfile pmcs. Then when you try to build the toy sub, it will print out the sequence of method calls it's using, and you can compare 18:10
dalek Heuristic branch merge: pushed 23 commits to Rosella/new_load_bytecode by Whiteknight 18:11
cotto_work ./examples/pir/make_hello_pbc.pir
whiteknight yeah, that's the one
18:12 preflex joined 18:16 preflex_ left
benabik I think I'm not figuring out the index of the sub in the constant table properly. 18:20
18:23 mikehh left
dalek rrot/NotFound/nci_as_string: 9dd2908 | NotFound++ | / (2 files):
a better test for as_string method and ByteBuffer get_pointer vtable
18:24
whiteknight that would be a big problem
benabik Huh. Now it runs when output, but is invalid when accessed directly. 18:25
whiteknight so that's something, right? 18:28
benabik Yes!
whiteknight it's possible the packfile pmc reading methods are wrong, but the writing methods are correct 18:29
or, wait. How are you outputting it?
benabik $filehandle.print(~$packfile) 18:30
whiteknight and $packfile is a Packfile PMC?
benabik Yes.
18:30 jsut_ joined
benabik Those are named by their types. 18:30
whiteknight But if you do $packfile.view()... you get invalid accesses?
benabik Yes.
Well, now I get "Null or invalid PackFile" 18:31
whiteknight can you nopaste me that code so I can see it?
benabik Well, I'm not using PF directly, I'm generating POST nodes that generate it, so "that code" is a decent chunk of PBCCompiler. 18:32
whiteknight Can I just see the part where you create and use the View?
benabik github.com/parrot/parrot/blob/nqp_...ler.pm#L62 18:34
Called from the previously commented out code here: github.com/parrot/parrot/blob/nqp_...post.t#L37
18:35 jsut left
whiteknight okay, and what's the error you get from that? 18:35
benabik gist.github.com/1123441 18:38
Maybe get_string does some bit of assembly of the packfile? 18:39
whiteknight no, I copied that code for .view() 18:40
Are you setting the main sub in your packfile pmc?
PackfileConstantTable.set_main() 18:41
benabik It's setting it on the byte code segment, I think...
%context<bytecode>.main_sub($idx)
Does it need to be set on the constant table instead? 18:42
benabik is getting the idea that the Packfile PMCs got some revision after bacek stopped working on PIRate.
whiteknight try this:
actually, I don't have a code example
but yes, try to call PackfileConstantTable.set_main($idx) 18:43
benabik s/<bytecode>.main_sub/<constants>.main_sub/ away... 18:44
whiteknight no, I think you want both
benabik Both?
whiteknight both
benabik "fun"
whiteknight actually, don't do that either 18:45
fire up gdb and set a breakpoint on Parrot_pf_get_packfile_main_sub
we need to find out what part of that is null and causing the exception to trigger
if (pf == NULL || pf->cur_cs == NULL || pf->cur_cs->const_table == NULL)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNEXPECTED_NULL,
"Null or invalid PackFile");
so we need to figure out what is null: pf, pf->cur_cs, or pf->cur_cs->const_table 18:46
benabik Earlier it was pf->cur_cs, IIRC. But I can check again. 18:47
whiteknight hmm... that's probably true 18:48
in PackfileDirectory.get_pointer, I don't see any place where pf->cur_cs would be set
that probably gets set on packfile load
benabik Yes, it's cur_cs 18:49
So the serialization isn't doing magic, it's the load that does the magic. :-)
whiteknight okay, so that's the issue. Packfile.get_pointer isn't setting up pf->cur_cs. That probably gets set when load from file
benabik magic--
karma magic 18:50
aloha magic has karma of -2.
whiteknight let me figure out what code is required, and jam it wherever it's needed
benabik whiteknight++ # helping me (ab)use the Packfile PMCs.
whiteknight man, I've never traced through this code before. It's a rat's nest 18:53
okay, found it 18:55
src/packfile/segments.c:make_code_pointers()
And we are *not* going to copy that logic into Packfile PMC 18:56
it looks to me like this would be susceptible to an ordering bug. If there was a constantTable segment in the directory before the first bytecode segment, blamo 18:57
benabik That seems to be designed to set current segment into packfile. But if we already have a Packfile PMC with all it's segments, we can set it more directly.
whiteknight right. We just need to get ahold of the first bytecode segment, and set that 18:58
benabik And, yes, that would get very bad if there wasn't a bytecode segment first.
whiteknight for now, let's just assume that through luck or some kind of amazing confident planning, that isn't an issue 18:59
benabik My guess is that everything is set to generate PBCs in the right order.
19:01 M_o_C left
nopaste "whiteknight" at 192.168.1.3 pasted "patch for benabik++" (22 lines) at nopaste.snit.ch/67144 19:02
whiteknight try that
benabik Uhm. corrupt patch at line 23? 19:04
I can apply by hand.
whiteknight just jam it in there
benabik src/pmc/packfiledirectory.c: In function ‘Parrot_PackfileDirectory_get_pointer’: 19:06
src/pmc/packfiledirectory.c:136: error: ‘PMC’ has no member named ‘type’
src/pmc/packfiledirectory.c:136: warning: switch missing default case
Are these `set`s supposed to be `pfseg`? 19:07
*seg
Well, it compiles that way, so I'm guessing gyes.
whiteknight ah yes, switch the "seg" in the new code to "pfseg" 19:09
sorry about that
benabik Hm. const_table didn't get set. 19:10
whiteknight okay, so the ConstantTable is probably coming through the pipe before the Bytecode segment 19:11
benabik Yeah.
whiteknight this is going to get ugly
benabik I would think that we should just save pointers as we loop and then set them afterwards. 19:12
benabik is writing that.
nopaste "whiteknight" at 192.168.1.3 pasted "new get_pointer for benabik++" (39 lines) at nopaste.snit.ch/67145 19:14
whiteknight let's see if we can fail a little bit less hard
benabik Similar to my idea, but not identical. But you finished first. :-D
whiteknight: You left the seg->type in there, just FYI. 19:16
whiteknight damnfartcrap
as should become painfully obvious, I'm not actually trying to compile the crap code I'm spitting out 19:17
benabik Typical Linus method. I approve.
whiteknight If I pretend hard enough that I don't need an automated syntax checker, it might become true one day 19:18
benabik Parrot_Sub_invoke, sub.c:461, pc = sub->seg->base.data + sub->start_offs 19:19
sub->seg == 0
whiteknight lolwat?
benabik Sounds like the PBC loader is doing a variety of fixups... 19:20
Although that might be me not setting something… 19:21
I don't see anything in my Sub init hash that sets the bytecode segment.
whiteknight holycrap 19:23
src/pmc/sub.pmc: VTABLE_init: attrs->seg = INTERP->code;
benabik Subs are assumed to be attached to the current bytecode segment?
whiteknight yes, it's assumed to be attached to the global current bytecode segment 19:24
AND, because we need more crap, it's only set during VTABLE_init and there's no interface to change it
benabik Oh, fun?
whiteknight srsly
benabik Sounds like PBC loading could seriously use a refactor. 19:25
whiteknight yes
I've been working on the subsystem interface for exactly that reason: I want to get the interface cleaned up and stabilized so we can start murding the underlying logic with a flamethrower
benabik I don't know why INTERP->code would be NULL at any point... 19:26
whiteknight Right. That's what I don't understand. Where is that null coming from?
benabik Sometimes I think your version of parrot is a pile of ashes.
Although I hear ashes make very nice fertilizer.
whiteknight what's happening here is that the packfile loading code performs a huge amount of magic, and the Packfile PMCs are relying on that magic happening during load to skip steps 19:27
benabik :-/ 19:28
whiteknight how are you creating Subs?
or, how do you add them to the constTable?
benabik pir::push($constanttable, pir::new('Sub', %sub)) 19:29
Where %sub is a hash with a lot of stuff in it.
19:29 contingencyplan joined
whiteknight ah. 19:29
VTABLE_init_pmc does not call VTABLE_init and does not set attrs->seg 19:30
awesome-pawesome
benabik Muliple init functions FTW.
whiteknight not that it would matter, we wouldn't want the behavior in VTABLE_init anyway
so in this case, clear breakage is sparing us from subtle and hard-to-find bugs 19:31
when you are creating a packfile, do you create more than one bytecode or constantTable segment?
benabik Nope. 19:34
whiteknight okay, so we can probably cheat a little ourselves. Once we have found pointers to both a PackFile_Bytecode and PackFile_ConstTable segments, we can loop over thawed PMCs and update Subs 19:35
19:35 particle left
benabik fun. 19:35
19:40 particle joined
nopaste "whiteknight" at 192.168.1.3 pasted "new routine for benabik++" (15 lines) at nopaste.snit.ch/67149 19:41
whiteknight add that function in above the pmclass declaration. Then, down in the get_pointer vtable, add this: 19:42
if (pf->cur_cs && pf->cur_cs->const_table)
attach_subs_to_segment(INTERP, pf);
benabik I was about to say… Should I just guess where that goes? ;-)
whiteknight we're all guessing today 19:43
benabik Above the pmclass declaration?
Ah, I see it.
dalek kudo/nom: 21977e8 | jonathan++ | src/binder/types. (2 files):
Add a way to store Nil in preperation for handling it in more cases.
19:45
kudo/nom: 07c976f | jonathan++ | src/binder/ (3 files):
Transform a segfault into an exception (moritz++ for reporting).
kudo/nom: 1519560 | jonathan++ | NOMMAP.markdown:
Remove one completed goal from NOMMAP, as well as one that's kinda too vague to be useful.
benabik whiteknight: Parrot_Sub_attributes undeclared… Missing a header? 19:47
whiteknight #include "pmc/pmc_sub.h" 19:48
benabik Uhm. sub->seg still null? 19:53
whiteknight damnit 19:57
wtf?
where is that problem happening
19:57 mikehh joined
whiteknight ? 19:57
benabik I inserted a printf into attach_subs_… and it doesn't seem to have been called. :-( 19:59
Wait... 20:01
It may be using the old lib parrot. Stupid dyld.
libparrot! stupid Lion autocorrect
Hm. KERN_INVALID_ADDRESS at address 0, called from runops_fast_core 20:07
whiteknight lolfail 20:09
benabik I'm guessing that this route still needs some work… I'm going to work on the old 'generate a PBC file' method for a bit. 20:14
whiteknight yeah, do that 20:16
benabik It's fragile and hides errors, but it "works". 20:17
whiteknight working is overrated
benabik whiteknight++ thanks for your help
whiteknight no problem. I'll play with it a little more tonight
benabik And that little glimpse into your hell. Many thanks for refactoring these things.
whiteknight don't thank me until the part you need is fixed 20:18
benabik Thanks for being willing to refactor these things? 20:19
whiteknight don't thank me until I'm willing to refactor the part you need :) 20:21
but seriously, some of this code is capital-T Terrible
saving interp->code, setting it to a new value and then initializing a sub which blindly copies attrs->seg = interp->code is terrible 20:23
maybe we can add a workaround to VTABLE_init_pmc 20:25
whatever. I'm signing off now. I'll be on later tonight 20:26
later
20:26 whiteknight left 20:28 kurahaupo left
dalek kudo/nom: 8443d11 | jonathan++ | src/core/ (2 files):
Implement eqv for Enum (and thus Pair).
20:39
kudo/nom: 40f4264 | jonathan++ | src/core/Pair.pm:
Assignable .key and .value for Pair.
kudo/nom: e9ee086 | jonathan++ | src/core/Enum.pm:
Enum.invert (inherited by Pair).
kudo/nom: c048df8 | jonathan++ | t/spectest.data:
Add a passing test file.
kudo/nom: 0cd9e76 | pmichaud++ | src/core/Bool.pm:
Add some enum-like methods to Bool.
20:44
20:48 kurahaupo joined
benabik I created output! 20:55
cotto_work benabik: let's see! 20:57
benabik Uhm. Hm. 20:58
bubaflub benabik++
benabik It just says "foo" 20:59
bubaflub close enough
benabik But it's generated from a tree: File->Sub->Op->String
Granted, I was kinda trying to get return to work...
I think return is working, but getting the return value isn't… Hm. 21:01
Hm. Maybe I can use the new load_bytecode__ps instead of just load_bytecode__s. 21:05
Return might be working, but calling the sub isn't. That's fun. 21:12
21:21 fperrad left
dalek rrot/nqp_pct: 7c2f280 | benabik++ | compilers/pct/src/POST/PBCCompiler.pm:
[POST] Let me turn on debugging externally

Having to re-bootstrap just to turn on debugging was a pain.
21:30
rrot/nqp_pct: 2098ab5 | Whiteknight++ | src/packfile/api.c:
Some extra checks in Parrot_pf_subs_by_flag. This should help to eliminate or reduce issues seen by benabik++
rrot/nqp_pct: 1ecc900 | cotto++ | docs/dev/profiling.pod:
add a bunch of stub sections to the profiling document
rrot/nqp_pct: cd7297c | NotFound++ | ext/winxed/compiler.pir:
update winxed snapshot to 1.1.devel 7dac8ecc52:

load_packfile builtin
rrot/nqp_pct: cd2119b | benabik++ | / (31 files):
Merge branch 'master' into nqp_pct

Pull in whiteknight++'s extra error checking for Packfile.view
rrot/nqp_pct: 58bb0ce | benabik++ | compilers/pct/src/POST/PBCCompiler.pm:
POST::PBCCompiler - generate sub index properly

The most recently added index is (length - 1), not length. Oops.
rrot/nqp_pct: b3352ba | benabik++ | compilers/pct/src/POST/PBCCompiler.pm:
POST::PBCCompler - Add get_or_create_*

The PackfileConstantTable apparently had different functions for different types. Now it just has one name and acts based on the type of thing. Since NQP stores everything as a PMC we need different functions. The find_caller_lex bit may be a bit strange, but it makes the conversion faster.
rrot/nqp_pct: 82ea945 | benabik++ | compilers/pct/src/POST/PBCCompiler.pm:
POST::PBCCompiler.pbc - use PackfileView

The part in the other methods that's failing is the setup in Packfile.view. So let's use load_bytecode__ps to get a Packfile PMC and work with that.
21:32 ambs left
dalek rrot/nqp_pct: 2267de1 | benabik++ | compilers/pct/src/POST/PBCCompiler.pir:
Re-bootstrap POST::PBCCompiler
21:39
rrot/nqp_pct: b1ae9ad | benabik++ | t/compilers/pct/newpost.t:
[PCT] Add return test for newPOST

It's TODO'd as it doesn't seem to work yet. And based on the fact that I never see the "foo" outputted, the function isn't getting called. But decompiling and running /tmp/temp.pbc shows it seems to be compiling properly.
benabik That last commit is the one generating bytecode that does output. But since the output isn't shown during the test, I'm suspicious that it's getting run at all.
21:49 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
cotto_work seen soh_cah_toa 22:04
aloha soh_cah_toa was last seen in #parrot 1 days 22 hours ago saying "whatever though, i gotta go eat".
dalek kudo/nom: 9a99a12 | pmichaud++ | src/core/Numeric.pm:
Add infix:<+&>(Any, Any) (and related bitwise ops).
22:11
kudo/nom: 120d3be | pmichaud++ | src/core/ (6 files):
Make sure .Numeric is properly multied.
kudo/nom: f72544a | pmichaud++ | src/core/metaops.pm:
Fix triangle metaops on empty lists (TimToady++).
kudo/nom: f5ab8d0 | jonathan++ | src/Perl6/Metamodel/ (2 files):
Allow overriding of postcircumfix:<( )>.
22:15
kudo/nom: bc30e74 | jonathan++ | src/core/Capture.pm:
Cheating |$c in argument lists (only puts in positional bit...will fix that up shortly).
kudo/nom: d9a6cfa | jonathan++ | t/spectest.data:
We now pass S13-overloading/typecasting-long.t.
kudo/nom: 275e3db | jonathan++ | src/core/Junction.pm:
Implement junction invocation.
kudo/nom: d097bdc | jonathan++ | src/core/Any.pm:
Any.[all|any|n?one]
22:36 hercynium left 22:48 dmalcolm left 22:55 particle left, whiteknight joined, particle joined
dalek kudo/nom: 057f236 | jonathan++ | src/Perl6/Metamodel/AttributeContainer.pm:
Fix bug where .^attributes could make multiple entries for an attribute in the result list.
22:56
kudo/nom: 402f330 | jonathan++ | src/core/Attribute.pm:
Some missing methods on Attribute.
kudo/nom: 80467f3 | jonathan++ | src/ (3 files):
Some missing decontainerizations in Attribute methods and a naming fix to bring us in line with spec and tests.
kudo/nom: 538d581 | jonathan++ | t/spectest.data:
Run S12-introspection/attributes.t.
whiteknight good evening, #parrot 23:01
NotFound whiteknight: I think I've identified the other pmc that needs as_string: Ptr 23:03
whiteknight I figured it was going to be Ptr or PtrBuf
PtrBuf has a size parameter, but we would need a way to calculate that 23:04
NotFound Ptr is what StructView uses for pointers, so I think that for consistency will be the appropiate choice for 'p' returns.
whiteknight okay
is it goint to be possible to detect length of a string with an arbitrary encoding? 23:05
NotFound Arbitrary, no, but we are treating cases when the values are normal C strings 23:06
We may need another similar method for wide strings, with its own complications. 23:07
Different wchar_t types depending on platforms, big or liitle endian.... 23:08
whiteknight blah 23:11
I think what we need to do, in the long run, is to specify that kind of encoding information on the NCI PMC itself
23:11 smash left
whiteknight nci = dlfunc ..., nci.return_string_as("utf8"), nci.pass_string_args_as("ascii") 23:12
Then the nci pmc can keep state information, and perform encodings as necessary 23:13
NotFound I thought about that, but I think it will be better to discuss such design having working bindings with practical usages.
whiteknight yes, we can do that now too. But in the long-term we need a better system
we can start to think about it now
dalek kudo/nom: 9fdde9e | pmichaud++ | src/core/Enumeration.pm:
Roles apparently can't quite handle 'multi method' yet, so set
NotFound I hope the libxml2 bindings I'm working on will open a lot of usages. 23:14
benabik Huh... 23:15
Does load_bytecode try to keep you from reloading the same file twice? 23:17
NotFound benabik: yes 23:18
23:18 whiteknight left
benabik Well that would do it. Bah. Alrighty then. Updated tests after dinner and a movie. 23:18
23:18 whiteknight joined
dalek kudo/nom: 3b56d34 | jonathan++ | src/core/IO.pm:
Implement get and close subs.
23:19
kudo/nom: 0db8c6f | jonathan++ | t/spectest.data:
3 more passing IO test files giving about 50 more passing tests.
whiteknight ...stoopid mouse
benabik: ping 23:21
NotFound afk
bubaflub whiteknight: ping 23:26
whiteknight pong 23:27
bubaflub i'm including GMP documentation in my own Winxed classes as POD - is there some kind of attribution that i need to give to those folks?
i sent an email asking that question to gmp-discuss but haven't received anything back yet
and while i'm there, what kind of license file do i need?
sorear what license are the GMP docs? 23:28
whiteknight You can give a shout-out to the GMP folks, but you aren't including their code in your repo, so you don't need formal attribution
sorear wonders if bubaflub knows about the Debian GFDL fiasco
bubaflub sorear: i do not; i'm all ears.
whiteknight bubaflub: I suggest you use the artistic 2.0 license, which is what Parrot uses. That allows maximum portability with Parrot 23:29
bubaflub whiteknight: great. do i need a LICENSE file with those contents, or just a shout-out somewhere in the README
whiteknight and if you do that, you can just copy a LICENSE file from another project that uses one, like Rosella or PLA
bubaflub whiteknight: great. works for me.
whiteknight In your readme, say something like "contributors are listed in CREDITS. For license information, see LICENSE" 23:30
etc
dalek kudo/nom: a207490 | pmichaud++ | / (2 files):
Add prefix:<+^>(Any), winning us the S03-operators/bit.t tests.
bubaflub sorear and whiteknight: it appears that the GMP docs are GNU Free Document License 23:33
23:33 rblackwe left
whiteknight that only matters if you actually include GMP docs in your repo 23:33
or in your release tarballs
23:33 rblackwe joined
whiteknight attribution is used for the same reason citations are in college papers: to prevent plagiarism. If you aren't trying to pass off somebody else's work as your own, you don't need attribution 23:34
bubaflub whiteknight: but i am including lots of snippets of their docs inline with my code... 23:35
dalek rrot: ae00b64 | Whiteknight++ | /:
Merge branch 'whiteknight/load_bytecode'
sorear it might be useful to have a link to the master copy
dalek rrot: 770a61c | Whiteknight++ | src/p (2 files):
Merge branch 'whiteknight/load_bytecode'
whiteknight oh, okay. Then you definitely need some kind of note
sorear so that 10 years from now when somebody looks at your old docs, they can find a more recent version
whiteknight "Hey, I didn't write this, I'm not pretending I did. Here's who really did it, and those people are awesome"
23:36 lucian left
bubaflub gotcha 23:38
dalek kudo/nom: de65682 | jonathan++ | src/core/IO.pm:
Implement slurp.
23:47
kudo/nom: 6d942a8 | jonathan++ | t/spectest.data:
Two more passing test files.