Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today
Set by moderator on 17 May 2011.
sorear nqp: say $x; my $x := 5 00:01
p6eval nqp: OUTPUT«Confused at line 1, near "say $x; my"␤current instr.: 'nqp;HLL;Grammar;panic' pc 26397 (src/stage2/gen/NQPHLL.pir:7039)␤»
sorear nqp: say($x); my $x := 5
p6eval nqp: OUTPUT«␤»
sorear ...what?
std: say($x); my $x := 5 00:02
p6eval std c843201: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable $x is not predeclared at /tmp/fYpIPnZiEZ line 1:␤------> [32msay($x[33m⏏[31m); my $x := 5[0m␤Check failed␤FAILED 00:01 121m␤»
sorear I thought nqp was supposed to be a Perl 6 subset
00:03 plobsing joined
plobsing ~~ 00:04
sorear !~~
plobsing to match or not to match? is that the question?
00:11 dmalcolm left
dukeleto i guess today was world ipv6 day 00:18
00:22 theory left
dukeleto Rubinius 2.0 preview: rubini.us/2011/06/07/inside-rubinius-20-preview/ 00:25
benabik sorear: That's a side effect of declaring everything at ENTER time. 00:26
sorear: NQP needs to add an explicit check that it's not used early because parrot won't know the difference. 00:27
00:29 theory joined 00:32 smash left 00:33 kid51 is now known as kid51_at_dinner
lucian anyone willing to help me debug something? 00:56
get_string in bitbucket.org/lucian1900/puffin/sr...nce.winxed
whiteknight cotto_work: ping 00:57
lucian: maybe. What's up?
lucian whiteknight: trying to override get_string, i get an odd error on that test 00:58
let me paste
whiteknight ok
00:58 theory_ joined 00:59 theory_ left
lucian gist.github.com/1013572 01:00
relevant code is in instance.winxed
whiteknight link to instance.winxed? 01:01
lucian bitbucket.org/lucian1900/puffin/sr...nce.winxed 01:02
whiteknight yeah, I just found it
01:03 theory left
whiteknight I don't see where it is trying a get_integer 01:04
cotto whiteknight pong 01:05
lucian whiteknight: me neither
cotto whiteknight, what happen? 01:06
whiteknight cotto: Class.add_vtable_override throws and exception if we try to set a vtable override that has already been set 01:07
I would like that behavior to go away
lucian: use "winxed -c" to compile to PIR, and take a look at the PIR generated for that method 01:08
cotto whiteknight, what happens to HLLs with that change?
whiteknight if I have to blindly guess, I suggest maybe the string() cast is coercing something something somthing
cotto: I don't rightly know. I haven't even really tested it here on just Parrot
plobsing lucian: I usually bust out gdb at that point and break on Parrot_Null_get_integer 01:09
whiteknight but it seems like the kind of semantic that an HLL should have control over
lucian: yes, that's the nuclear approach with gdb
lucian plobsing: that's a little sad
whiteknight: no get_integer in the .pir 01:10
whiteknight ....lolfail
cotto whiteknight, what behavior would you prefer? 01:11
whiteknight I really wish that linenumber in the backtrace weren't fubar
cotto: no checking for a prior entry. Blind overwrite
cotto: We can do that already with pir::inspect($class, "vtable_overrides"){"whatever"} := $override
so it's behavior we can circumvent anyway. I just don't think our object model should be enforcing that kind of restriction 01:12
01:12 woosley joined
cotto whiteknight, I'm not adverse to that change. Why do you want it? 01:13
whiteknight I've run into the restriction a few times in Rosella, and had to use the workaround more than once
In any case, removing unnecessary assumptions from Parrot can't hurt
I honestly have trouble thinking of a time when that restriction would be valuable 01:14
lucian whiteknight: could parrot be trying to eval the number inside the string? i remember it had(has?) this silly notion of considering "0" false
cotto whiteknight, feel free to start a branch and do some hll testing. 01:15
whiteknight lucian: where are you getting that backtrace?
cotto: awesome. Will do
lucian no, not that
whiteknight: in test_instance:get_string
whiteknight oh, right. Winxed doesn't print out backtraces by default, but Rosella.Test does 01:16
I forgot about that
lucian: comment out line 43 and see if that makes the code not crap
I want to try to narrow this down 01:17
lucian the assert line
?
ok, test passes with the assert commented
whiteknight okay, bring that line back in, but take out the string() cast 01:18
lucian did, get an error about a missing is_equal
which it is, because i haven't implemented it
whiteknight okay, on line 42, do "string i_str = i;"
lucian the string cast on its own triggers the get_integer error
whiteknight and pass i_str to equal() 01:19
lucian implicit coercion too
both string s = i; and var s = string(i); throw the error
assert commented
whiteknight okay. That's weird 01:20
soh_cah_toa cotto: i'm having a problem passing a Parrot_PMC to a function that takes a PARROT_INTERP. i want to call a function defined in src/hbdb.c from frontend/hbdb/main.c except the later file uses the embedding api and the former doesn't
lucian whiteknight: that's what i thought 01:21
whiteknight soh_cah_toa: EDONTDOTHAT
soh_cah_toa: create a new API function for what you want to do
lucian whiteknight: i can leave get_string out for now, it's only really useful for interop
whiteknight lucian: change the "42" to something that doesn't look like a number 01:22
see if that makes the problem go away
lucian whiteknight: did, same
whiteknight damnit
soh_cah_toa whiteknight: what do you mean? how do i make an api function? 01:23
agh...casting it as Parrot_Interp gets gcc to shut up but i still segfault 01:24
dalek rrot/whiteknight/add_vtable_override: 50ca55b | Whiteknight++ | / (2 files):
Remove the restriction in Class.add_vtable_override against adding an override that has already been added. This is the kind of semantic HLLs should enforce, not Parrot (especially since we won't do any caching, so we don't have to worry about inconsistency).
whiteknight soh_cah_toa: API functions don't take a Parrot_Interp 01:25
cotto soh_cah_toa, PARROT_INTERP and Parrot_PMC are very different.
whiteknight soh_cah_toa: open up src/embed/api.c. Follow the pattern of other functions.
cotto There's a ParrotInterpreter PMC, but they're not interchangeable
whiteknight soh_cah_toa: if you have any questions about what you are copy+pasting, let me know
but mostly, just copy_paste
soh_cah_toa whiteknight: why should i change the api for something that i only need for my debugger though? i'm trying to just get input from stdin. i don't think i need add an api function for that 01:26
whiteknight soh_cah_toa: what do you mean, get input from stdin? 01:30
soh_cah_toa just enter a command
whiteknight like, get the input from the frontend and pass it in to the debugger?
soh_cah_toa but the functions defined in src/hbdb.c where i don't use the api
whiteknight ...I don't think I follow
nopaste me the code you have in the frontend which doesn't work? 01:31
soh_cah_toa ok
lucian noway, i fail 2 extra tests when running in gdb 01:33
whiteknight lucian: double weird 01:34
lucian: at that point, my strategy is "cd /; sudo rm -rf *"
lucian whiteknight: nevermind, stale pir 01:35
nopaste "soh_cah_toa" at 192.168.1.3 pasted "PARROT_INTERP Segfault" (252 lines) at nopaste.snit.ch/50624 01:37
lucian plobsing: ok, i got it to break on get_integer. now what?? 01:38
s/??/?/
01:38 cotto left
soh_cah_toa it's the call to hbdb_get_command() in frontend/hbdb/main.c that's causing problems 01:38
lucian plobsing: pleasantly devious, and at the same time saddening method, this. thanks :) 01:39
plobsing lucian: get a backtrace
where are you?
you're on a boat!
running on the VM your VM could run like 01:40
01:40 cotto joined
lucian gist.github.com/1013612 01:41
whiteknight soh_cah_toa: yeah. Parrot_PMC != Parrot_Interp
soh_cah_toa right
lucian plobsing: effin boat
whiteknight soh_cah_toa: if you are going to have a frontend file, you need to use the embedding API. Add a function to src/embed/api.c to call hbdb_get_command 01:42
soh_cah_toa: eventually, we may want to add a new file src/embed/debug.c to hold functions specific to debugging, but for now you can jam them into src/embed/api.c
plobsing lucian: both C and PIR backtraces are useful (and the PIR backtrace *may* differ from the one printed in some cases) 01:43
soh_cah_toa whiteknight: the types still won't match though 01:44
lucian plobsing: yes, if you know parrot/C well :)
whiteknight soh_cah_toa: what do you mean?
lucian any hints on what's going on in that trace?
whiteknight soh_cah_toa: the macro EMBED_API_CALLIN converts a Parrot_PMC to a Parrot_Inter
Parrot_Interp
soh_cah_toa: just try it :)
soh_cah_toa i'll take a look 01:45
plobsing lucian: a runloop, an opcode body, some intermediary parroty stuff, and then your null access
whiteknight soh_cah_toa: just try to follow the pattern other API functions use. Name it Parrot_api_...., use the right kinds of paramters, don't return any values, etc 01:46
plobsing the intermediary stuff is the important bit. how you got to asking for an int when you were trying to get a string.
soh_cah_toa whiteknight: alright, i'll try... 01:47
whiteknight soh_cah_toa: it's good practice, in any case
lucian plobsing: hmm 01:48
whiteknight it's that set_i_p opcode. Trying to set an I from a P 01:49
somewhere that is being generated from the winxed
lucian: can you post the PIR disassembly for that method?
lucian whiteknight: lemme find it 01:50
whiteknight and the PIR disassembly from the get_string[vtable] in instance.winxed would be nice, for double-checking 01:51
although that might have to wait until tomorrow, I'm heading to bed soonish 01:52
lucian gist.github.com/61ed830fc8f2f476ba6a
that's instance.pir:get_string 01:53
whiteknight I see the set_i_p right there
line 77
so the backtrace was helpfully wrong
ah 01:54
got it
lucian gist.github.com/1013627
whiteknight instance.winxed, line 77. Change it to "if (cls != null && ...)"
winxed is coercing cls to an int for the conditional
lucian bah 01:55
whiteknight iknowright?
lucian that sure is an arbitrary coercion
whiteknight and on that note, I'm heading off to bed
have fun with your codez
cotto 'night 01:56
01:56 whiteknight left
plobsing lucian: I'd submit a bug for that. we have separate boolean coercion it should be using. 01:56
lucian yay, no more get_integer
plobsing: ahem. i'll try to write a smaller example 01:57
plobsing not sure if null is a valid boolean, but at least you'd get a more specific and intuitive failure 01:59
lucian winxed defaults to ints in boolean contexts, from what i've seen 02:00
1 == 1 returns 1
plobsing lucian: under the hood, parrot uses integers as booleans, but PMCs are allowed to coerce to bools and to ints differently 02:01
0 but true
lucian i see
sorear "0" in most non-Perl languages may be a better example 02:02
lucian there are many other python __methods__ that could use pmc overrides, for interop
for now, i just wanted __str__/__repr__
now i should fix other bugs, and work on the compiler 02:04
02:21 kid51_at_dinner left 02:36 cottoo joined, cotto left 02:37 cottoo is now known as cotto 02:39 mtk left 02:45 mtk joined
soh_cah_toa cotto: could you help me take a look at this? 02:52
nopaste "soh_cah_toa" at 192.168.1.3 pasted "Null PMC access in find_method('readline_interactive')" (40 lines) at nopaste.snit.ch/50625
plobsing soh_cah_toa: stdin is a FILE*, but Parrot_io_stdhandle takes an intval. you want STDIN_FILENO in general, or PIO_STDIN_FILENO for parrot-specific cases 02:59
you should have been warned about that by your compiler 03:00
soh_cah_toa plobsin: ah...right. i thought stdin/stdout/stderr evaluated to their respective fd numbers
let me try 03:01
we have liftoff! 03:06
plobsing++
cotto and a good time was had by all 03:10
soh_cah_toa well, i'm closer. now i get "Method 'say' not found"
soh_cah_toa thinks...
cotto the say op is defined, but if you want a method you have to include something that defines it or define it yourself 03:12
are you in nqp? 03:13
soh_cah_toa no, it's src/hbdb.c
cotto what are you doing? 03:14
soh_cah_toa the function definition is in the above nopaste 03:15
i'm calling it's api wrapper Parrot_api_hbdb_get_command() from frontend/main/hbdb.c
cotto is that pushed?
soh_cah_toa yeah
cotto there's no "say" method 03:17
soh_cah_toa isn't it also a method of the filehandle pmc?
like print is?
cotto I don't see one there
soh_cah_toa if i use print then i get "too few positional arguments: 1 passed, 2 (or more) expected" 03:18
cotto that's better 03:19
soh_cah_toa 2 expected though?
cotto that means it's finding a method
soh_cah_toa right
i thought print just takes a string
cotto a couple things: 03:22
First, you shouldn't be passing a char* to a method like that. They take STRING*.
soh_cah_toa ahh...yes. i have to convert it back 03:23
cotto The signature '->' indicates no arguments or return values.
soh_cah_toa whoops 03:24
yeah, that makes no sense
lucian effin null pmc invoke ... 03:38
soh_cah_toa cotto: i have some progress. look at src/hbdb.c near line 85 03:43
03:45 AzureStone left
cotto soh_cah_toa, you can be lazy and pass 0 as the size. 03:46
soh_cah_toa nope 03:47
cotto Parrot_str_new explicitly checks for that 03:48
soh_cah_toa using 0...w/ strcat i get a blank line. w/o strcat i get just one newline
as in (hbdb) on every as opposed to every other 03:49
cotto what are you trying to do?
soh_cah_toa simple: input something, echo it
just to get the behavior down first 03:50
cotto soh_cah_toa, are you certain that there's anything in cmd?
soh_cah_toa what do you mean? that's where the input goes. it has to be there 03:51
cotto you're using a function that returns a STRING to write into a char* 03:52
Very few Parrot internal functions use a char*. In general, you'll want to use a STRING*. 03:53
soh_cah_toa src/debug.c did it that way so i just assumed. let me change it... 03:54
03:55 jsut_ joined, AzureStone joined
soh_cah_toa sighs in relief 03:55
finally
took me all damn day 03:56
cotto push it
dukeleto, ping
dukeleto cotto: pong 03:57
cotto dukeleto, do you have the tuits to help soh_cah_toa figure out how to move his branch to parrot's official git repo?
he's got it on a fork atm
03:59 jsut left
soh_cah_toa pushes 04:01
dukeleto cotto: what is the problem?
cotto dukeleto, he's on a clone and I'd like to move his branch to the main repo 04:04
dukeleto cotto: you mean he has a branch in a fork of parrot.git and you want it in parrot/parrot.git ? 04:05
cotto dukeleto, yes
dukeleto cotto: he just needs to push his branch to the remote he has pointed at parrot/parrot.git 04:06
cotto: since he has a commit bit
soh_cah_toa let me try now
dalek Heuristic branch merge: pushed 56 commits to parrot/soh-cah-toa/hbdb by soh-cah-toa 04:08
soh_cah_toa yay
cotto that was less painful than I was hop^H^H^Hafraid it'd be ;) 04:09
soh_cah_toa i know
dukeleto msg whiteknight can you explain more what "must explicitly set a PIR compreg" means in t/src/extend.t ? Do only the tests need improving, or the implementation?
aloha OK. I'll deliver the message.
cotto well, there you go
The debugger echoes input back to the user. I wouldn't call it a complete debugger quite yet, but that's meaningful progress. 04:11
soh_cah_toa i know, i'm happy though
it's taken a little longer b/c...well...parrot does some things very differently 04:13
for instance, it took me all day just to echo input. with FILE * and fgets/fputs it would've been about 30 seconds
though i wish i spent some more time during the bonding period exploring those kind of things 04:14
i can thank calculus for that ;)
cotto but how long did it take you to learn fgets/fputs 04:15
there's a lot you have to relearn
soh_cah_toa absolutely, yes
not just new things to learn but things to re-learn. yeah
b/c of that i really want to make my documentation/comments/tutorials very explicit. idiot-proof 04:18
as is probably all ready obvious w/ my many comments ;) 04:19
anyway...so now if i commit/push to my branch on the main parrot repo, will my fork reflect the changes? i'm guessing no 04:21
04:22 rohit_nsit08 joined
cotto no 04:23
soh_cah_toa i think i'll need to do a git pull upstream for that, right?
dalek rrot/leto/embed_grant: 6bf824e | dukeleto++ | t/src/embed.t:
[t] Parrot_free_cstring
dukeleto soh_cah_toa: if you call the remote that points to parrot/parrot.git "upstream" in your fork, then yes 04:24
soh_cah_toa yay, my git is getting better
if i'm on the soh-cah-toa/hbdb branch locally, will i always need to type "git push upstream soh-cah-toa/hbdb" or just "git push upstream"? 04:26
dukeleto soh_cah_toa: git config --global push.default current 04:32
soh_cah_toa: that will change your ~/.gitconfig so that if you leave of the branch to push, it defaults to the current one, in all git repos
s/leave of/leave off/
soh_cah_toa great, thanks
dukeleto soh_cah_toa: git help push 04:33
dalek rrot/leto/embed_grant: 3baf690 | dukeleto++ | t/src/extend_vtable.t:
Add coverage to Parrot_ext_try
04:35
04:43 lucian left
dalek rrot/leto/embed_grant: 537230d | dukeleto++ | t/src/embed/api.t:
Add coverage for Parrot_api_wrap_pointer
04:49
rrot/soh-cah-toa/hbdb: 86d097f | soh_cah_toa++ | src/hbdb.c:
Testing that dalek sees this
04:52
rrot/soh-cah-toa/hbdb: b2984f8 | soh_cah_toa++ | src/hbdb.c:
Untest
soh_cah_toa good. now i can go to bed 04:53
04:53 soh_cah_toa left
dalek rrot/leto/embed_grant: 70244ea | dukeleto++ | t/src/embed/api.t:
Add coverage to Parrot_api_set_runcore
04:59
cotto I've got another accidental infinite loop with the calling conventions test. What a strange game. 05:54
It's exciting to tweak userspace M0 code and see the call frame become more correct. 06:30
06:33 preflex left 06:35 preflex joined
dalek rrot/m0-prototype: 72b359e | cotto++ | src/m0/perl5/m0_assembler.pl:
make assembler debugging output optional
07:09
rrot/m0-prototype: b8f1f9e | cotto++ | / (2 files):
make M0 smart enough to use a manually-initialized call frame

poke_caller still doesn't pass, but it properly goes to the callee chunk using a call frame initialized by M0 code, so there's progress
rrot/m0-prototype: f328a33 | cotto++ | src/m0/perl5/m0_interp.pl:
various (mostly) minor interpreter fixes
rrot/m0-prototype: dc51416 | cotto++ | t/m0/integration/m0_poke_caller.m0:
get poke_caller returning to the address in its RETPC, though not losslessly
07:22 mj41 joined 08:16 rohit_nsit08 left 08:19 contingencyplan left 08:31 fperrad joined 08:39 linge left 08:50 Infinoid left 08:51 Infinoid joined 08:55 rohit_nsit08 joined
dalek p: 0a8dc8b | (Martin Berends)++ | src/pmc/stable.pmc:
[src/pmc/stable.pmc] eliminate gcc 'old-style function declaration' warning
09:00
09:22 preflex left 09:24 preflex joined 09:26 woosley left 09:32 lucian joined 09:38 lucian left 09:47 nopaste left, TonyC left, TonyC joined 09:55 woosley joined 09:56 woosley left, lucian joined, lucian left, nopaste joined 10:10 nopaste left, TonyC left 10:11 TonyC joined 10:16 nopaste joined
dalek p: 43f2fc4 | (Martin Berends)++ | src/ (3 files):
[nqp.ops P6opaque.c HashAttrStore.c] eliminate gcc 'conversion from void *' warnings
10:19
10:20 klavspr joined 10:26 mtk left 10:30 simcop2387_ joined, simcop2387 left, simcop2387_ is now known as simcop2387 10:33 mtk joined 10:49 ttbot left 11:05 masak joined
masak hi, Parrot folks. 11:05
quick question: is there a Parrot call for "read a single character from the keyboard", a la C's 'getc'? either blocking or non-blocking is fine. 11:06
11:07 ttbot joined, rohit_nsit08 left 11:30 rohit_nsit08 joined 11:48 dodathome joined
masak looking, I find something called ncurses::getch in examples/library/ncurses_life.pir. 11:50
jnthn__ masak: does the FileHandle or whatever it's called PMC not have such a method? 11:51
masak jnthn__: I didn't find any in docs.parrot.org/parrot/latest/html/...o.pod.html 11:52
moritz masak: $*IN.read(1)? (see #perl6) 11:53
masak ooh 11:57
jnthn__ masak: Didn't you implement that method? ;-) ;-) 12:01
moritz I'm pretty sure he did :-)
masak doesn't know what to say :) 12:03
...anyway, I'm glad there's a way. :P
moritz masak: is that for your blog thingy? 12:04
masak (actually, I simply didn't think of .read in that context)
moritz: yes, that's what got me thinking about it.
moritz: making games that react to keypresses, and all that. 12:05
./perl6 -e 'say $*IN.read(1); say "OH HAI"' 12:06
this doesn't cut it. it requires me to press Enter after pressing a key.
try it yourselves and see.
moritz doesn't have a rakudo master at hand 12:07
masak anyway, the search is still on.
moritz can't you NCI-wrap getch?
masak possibly. 12:08
I was hoping somebody had already :)
mikehh there's an ncurses.pir in runtime/parrot/library 12:10
masak getting this error when trying to run ncurses_life.pir on a freshly checked-out and built Parrot: gist.github.com/1014297 12:12
:(
moritz ticket it! 12:14
mikehh masak: you should be able to load ncurses.pbc
12:14 whiteknight joined 12:15 sirmacik left
masak tickets it 12:15
12:15 klavspr left
whiteknight good morning, #parrot 12:17
mikehh hi there whiteknight
whiteknight good morning mikehh. How are you doing today? 12:18
mikehh whiteknight: not too bad, just about to do some parrot hacking
masak hi whiteknight!
whiteknight hello masak! 12:19
masak I just submitted a trac ticket: trac.parrot.org/parrot/ticket/2130 12:21
moritz masak++ 12:22
masak seems one of the Parrot examples is broken! this state of affairs cannot stand.
man the pumps!
jnthn__
.oO( gee, I'm glad he's not this demanding with every rakudobug... )
12:23
masak :P 12:24
jnthn__: if one of the prepackaged examples in Rakudo failed to run, I would be as demanding. 12:25
moritz thought all the NCI examples were being updated in the last NCI overhaul?
whiteknight several mentions about Perl6 in this article about Go: www.syntax-k.de/projekte/go-review
12:25 rohit_nsit08 left
dalek TT #2130 created by masak++: Cannot run examples/library/ncurses_life.pir 12:28
TT #2130: trac.parrot.org/parrot/ticket/2130
moritz whiteknight: thanks 12:29
mikehh masak: yup I get the same 12:30
jnthn__ moritz: win32api.pir sure didn't get updated. :( 12:39
dalek p: d42ba1c | (Martin Berends)++ | src/6model/ (5 files):
[src/6model] fix all gcc 'no prototype' warnings
12:44
13:12 plobsing left 13:38 preflex left 13:40 preflex joined 13:45 bubaflub_ joined 13:48 bubaflub left, bubaflub_ is now known as bubaflub
NotFound "The Go Programming Language or: Why all C-like languages except one suck." Obviously this guy dosn't know winxed ;) 13:59
moritz well, he also considers javascript a C-like language
which is usually a sign of cluelessness, and in stark contrast to the rest of the analysis in his post (at least the parts I've read so far) 14:00
14:01 contingencyplan joined 14:02 hudnix joined
whiteknight he does mention that JavaScript really doesn't fit into the list very well 14:02
I'm surprised he didn't include C#
or D
although, D is probably not popular enough 14:03
and C# might not be different enough from Java
moritz even Java isn't very C-like anymore
ah well
masak Java was meant, from the very beginning, to tug C++ devs in the direction of Smalltalk and Lisp. 14:09
jnthn__ C# verison 1 was Java-y. C# 3 up are different beasts. :)
14:13 theory joined
moritz masak: both smalltalk and lisp have a reputtation to be far more expressive than Java 14:15
14:18 hercynium joined 14:19 lucian joined
NotFound !winxed coerces pmcs to int in boolean contexts" ? What's a boolean context? 14:25
lucian NotFound: an if statement 14:27
i attached an example
NotFound lucian: that is not an if statement, is a && operator. 14:28
lucian NotFound: uh, sure 14:29
NotFound And even if it were, if you want a conversion to bool you should provide a get_bool vtable.
lucian NotFound: right, but it should check for get_bool, not get_integer 14:30
NotFound lucian: it doesn't check, it uses it.
whiteknight the generated PIR code calls set_i_p
not get_bool_i_p
NotFound And if you don't provide one, Default takes care.
14:30 simcop2387_ joined
lucian NotFound: ok, it shoudln't use it. it should use get_bool 14:30
NotFound: i don't see why it would use get_integer when i'm asking for bool evaluation 14:32
regardless of what the pmc imple,entss
14:32 simcop2387 left, simcop2387_ is now known as simcop2387
NotFound lucian: Default does it. 14:33
lucian NotFound: the Default pmc? hmm. then that's wrong :) 14:34
NotFound Mmmm... no, it doesn't.
masak moritz: no argument there. as I said, "tug [...] in the direction of" :)
14:35 losinggeneration joined 14:43 fperrad_ joined
NotFound The generated code for if (p) is unless $P1 goto __label_1 14:46
14:46 fperrad left, fperrad_ is now known as fperrad
NotFound If you use a && operator, a conversion to int is used, because there is no such thing as converting to bool in parrot. 14:47
unless op uses VTABLE_get_bool 14:48
14:51 dodathome left
whiteknight isn't there a get_bool op? 14:51
NotFound Dropping the && in that example gives, as expected, get_bool() not implemented in class 'foo'
moritz but it doesn't return a bool, does it? :-)
NotFound AFAIK the vtable get_bool is used only in jump operators. 14:52
14:54 fperrad_ joined, theory left 14:57 fperrad left, fperrad_ is now known as fperrad
NotFound A way to coerce to "bool" is: p ? 1 : 0 14:57
But tt doesn't exactly the same as get_bool, it also check nullness. 14:58
I'm open to discuse appropiate semantic for all this uses, but the issue is a little more complex than it looks. 15:00
whiteknight it seems very odd that we don't have a get_bool op
NotFound whiteknight: even better, we don't have any way to use set_bool from pir. 15:01
whiteknight yeah, I've known that
there are a handful of VTABLEs which are basically unusable for similar reasons
NotFound Or untestable. 15:02
whiteknight right
moritz still it kinda makes sense to have them, because in many languages the paths SomeObject -> Bool and SomeObject -> Integer -> Bool return different results 15:03
NotFound Well, get_bool can be emulated via if or unless, but using that for the general case in logical operators will be suboptimal.
If parrot provides the op, fixing winxed to use it will be easy. 15:05
lucian NotFound: i see. very odd 15:06
dukeleto ~~ 15:10
dukeleto knows about funky vtables
NotFound Well, exposing the problematic cases is the first step toward solutions. 15:11
dukeleto whiteknight: did you see my msg about the TODO tests in extend.t ? 15:12
whiteknight dukeleto: yes. I haven't had time to look at it yet 15:13
atrodo funky cold vtables 15:16
15:17 fperrad_ joined
dukeleto whiteknight: ok. just wondering what your TODO comment actually means 15:21
15:21 fperrad left
whiteknight dukeleto: let me take a quick look right now 15:21
15:21 fperrad_ is now known as fperrad
whiteknight dukeleto: ah, I remember now 15:22
dukeleto: IMCC isn't automatically initialized and registered in Parrot anymore. There isn't a PIR compreg PMC in libparrot unless you explicitly create one
right now, one is created in frontend/parrot/main.c, but isn't being created and registered in the test in t/src/extend.t 15:23
lucian is there any way "return dict[i]" could try to invoke dict? dict here is a hash 15:24
whiteknight Parrot_runcode is the culprit. It is an older part of the extend API that expects a PIR compreg to exist 15:25
dukeleto: if Parrot_runcode isn't deprecated and slated for removal, it should be
dukeleto whiteknight: so, can I improve the extend.t tests by emulating what frontend/parrot/main.c does? 15:28
whiteknight: i am trying to finish my TPF grant :) I can add runcode to the deprecation list when we have a replacement 15:29
whiteknight dukeleto: those tests don't use frontend/parrot/main.c. They create their own main() functions and call into libparrot directly
the solution to that particular test is to delete Parrot_runcode, and throw it in the fire
OR, if we absolutely cannot kill that function in time for your grant, you need to create and register a PIR compiler in that test 15:30
dukeleto whiteknight: there are many tests that have that same TODO. Not just one.
whiteknight: ok, that is more like what I am thinking. I need to register a PIR compiler. And there should be an example of that in frontend/parrot/main.c, correct?
dalek p: fd52b67 | (Martin Berends)++ | src/6model/knowhow_bootstrapper.c:
[src/6model/knowhow_bootstrapper.c] fix gcc 'return value not used' warnings
whiteknight dukeleto: Get some of the logic out of compilers/imcc/api.c:imcc_get_pir_compreg_api, and copy+paste it into the tests where it is needed 15:31
15:31 JimmyZ joined
whiteknight actually, compilers/imcc/api.c:get_compreg_pmc 15:32
that's the function that creates and registers the compiler
You can't steal code from frontends/parrot/main.c. That file uses the embedding API, which the extend.t tests do not
you can't mix+match embedding and extending APIs
dukeleto whiteknight: yeah, i may start a new test file or something 15:36
whiteknight ok
NotFound lucian: if you want dict[i] to invoke something, you can override the appropiate get_..._keyed vtable. 15:37
lucian NotFound: not that, i was just getting a very odd error message
whiteknight lucian: what's the error message? 15:38
dukeleto whiteknight: does this mean that all those TODO tests in extend.t should be moved to a new test file, since they require both the embed and extend system to test? 15:39
whiteknight dukeleto: far more likely, most of those tests need to be evaluated for "do we really want to do this?" and maybe deleted
you cannot mix and match extend and embed APIs. You can't do it. Always fail 15:40
so a new test file doesn't help that situation
lucian whiteknight: invoke() not implemented in class Hash
whiteknight actually, the old embed API can be mixed and matched. it's basically the extend API in a file named something wrong
lucian whiteknight: apparently it happens if i try to return dict[i] 15:41
whiteknight lucian: have a backtrace? 15:42
lucian whiteknight: uh, i can produce one. i have a fix for this, so i'll have to rollback a commit 15:43
whiteknight it's not a super-huge deal
what is i?
lucian whiteknight: string 15:44
dukeleto whiteknight: are you saying that the new embed API and our extend api *can't* be used together?
lucian whiteknight: producing that traceback
whiteknight dukeleto: yes. unequivocal yes
dukeleto whiteknight: PL/Parrot used both the old embed and the extend api successfully
whiteknight dukeleto: it's misnamed. The old embed api is no different in form or function from the extend API 15:45
dalek p: 367a3bc | (Martin Berends)++ | src/6model/multi_dispatch.c:
[src/6model/multi_dispatch.c] fix gcc 'parentheses around && within ||' warning
whiteknight basically, there's an artificial division between functions in embed.c and extend.c that does not need to exist. They are the same thing
that's why we needed a new embed API, because the old one wasn't for embedding
NotFound The preferred way IMHO should be to separate the embed and the extend parts of an application in different C source files.
dukeleto whiteknight: hmm 15:46
whiteknight PL/Parrot was using a bunch of functions, some of which were weirdly included in embed.c
that file is misnamed at best. Misleading, wrong, stupid, and smelly at worst
dukeleto whiteknight: indeed it was. Duct tape and paper clips.
15:46 masak left
whiteknight dukeleto: the new embed API is used when calling in to libparrot, from a place that isn't protected from exceptions 15:47
dukeleto whiteknight: i am just trying to improve coverage of embed/api.c and extend.c . Do you recommend that I delete some functions that shouldn't exist?
whiteknight the extend API is typically being used where exception protection is available
dukeleto: yes. Parrot_runcode at least needs to disappear
dukeleto whiteknight: good to know. That explains some exploding hamsters in PL/Parrot
whiteknight it is buggy, faulty. It relies on the existence of IMCC, which does not always exist in libparrot 15:48
Maybe we could add an api method to IMCC to do the same kind of thing, but Parrot shouldn't provide it
dukeleto whiteknight: what do I used instead of runcode ?
s/used/use/
benabik G'morning #parrot! 15:49
whiteknight dukeleto: what are you trying to do? libparrot doesn't have any compilers by default. You need to create a compiler object if you want to compile something
frontend/parrot/main.c creates and registers two compiler objects: "PIR" and "PASM" 15:50
lucian whiteknight: ah, i found where i messed up
whiteknight lucian: do tell
lucian whiteknight: if you wish to laugh at me gist.github.com/1014684
whiteknight: the reason the second works is that only the correct attribute is returned
whiteknight: (duh). the first one gives that error because i'm calling the resulting attribute in the test 15:51
whiteknight lucian: oh, fun
lucian yeah. i really dislike error reporting on parrot in general 15:52
whiteknight lucian: yes, it's not one of our strong points
lucian hmm, i'm finding interop hard 15:56
can a Class inherit from a PMC and another Class? 15:57
and are there any catches?
i really really wish Classes were Objects 16:02
that's 6model's killer feature if you ask me 16:05
cotto ~~ 16:09
benabik Are there any good "Intro to Parrot" slides I can steal? I just realized I'm heading to Buffalo BarCamp today and haven't prepped anything to say. 16:12
whiteknight lucian: Classes are objects 16:13
dukeleto benabik: good question 16:16
benabik: kid51 has been asking for slides like that so anybody can give an "intro to parrot" talk
benabik dukeleto: Hah.
dukeleto: Maybe I should chop the compiler details out of my PCT presentation and expand it a bit. Wouldn't be fantastic but eh. 16:22
dukeleto benabik: i will give a talk called "a visual intro to parrot" at YAPC::NA, but I haven't written it yet :) 16:23
benabik dukeleto: Well that's not convenient for me at all. Finish your slides in the next 5 hours so I can use it at Buffalo BarCamp. :-D 16:24
16:29 JimmyZ left 16:32 lucian left 16:48 mj41 left
cotto_work ~~ 16:52
whiteknight ASP.NET batches files together into folders. So if you have files in folderA referencing files in folderB, and also have files in folderB referencing folderA, even if they are completely different and unrelated folders, you have a circular reference 16:56
the website will compile and run just fine, but it won't deploy
17:02 davidfetter joined 17:08 perlite_ joined, shachaf_ joined 17:09 mtk left, nopaste left, TonyC left, jtpalmer left, dukeleto left, jevin left, perlite left, jjore_ left, aloha left, bacek_at_work left, janus left, KaeseEs left, shachaf left, ascent left, cotto_work left, frodwith left, PerlJam left, Tene left, cosimo left, Util left, knewt left, slavorg left, Hunger left, perlite_ is now known as perlite 17:10 frodwith joined, jjore joined, Hunger joined 17:11 Util joined, cosimo joined, KaeseEs joined, jtpalmer joined, ascent joined, Tene joined, TonyC joined, janus joined, aloha joined
dalek p: 60387e7 | (Martin Berends)++ | / (3 files):
[6model/reprs/P6opaque*] fix gcc 'incompatible pointer type' warnings, tweak .gitignore
17:13
17:16 bluescreen joined, PerlJam joined 17:22 bacek_at_work joined, mtk joined, jevin joined 17:23 cotto_work joined 17:26 dukeleto joined 17:28 knewt joined, nopaste joined, dodathome joined 17:30 simcop2387_ joined 17:31 mj41 joined, simcop2387 left, simcop2387_ is now known as simcop2387
cotto_work github.com/blog/872-scheduled-main...-20-00-pst 17:49
17:49 ligne left 17:52 hudnix left 17:54 jsut_ left 17:57 hudnix joined 18:13 mj41 left 18:14 mtk left, mtk joined 18:21 p6eval left, p6eval joined 18:22 jsut joined
dalek nxed: r1048 | NotFound++ | trunk/winxedst1.winxed:
fix and complete the write-to-output feature in the stage 1 side
18:25
TT #1006 closed by whiteknight++: Does not build on clang with GMP
TT #1006: trac.parrot.org/parrot/ticket/1006
18:40 bluescreen left 18:41 theory joined 18:59 dmalcolm joined 19:08 klavs joined 19:10 theory left
dalek p: 878e8ff | pmichaud++ | / (5 files):
Major refactor of build/Configure system (based on new tools/lib/NQP/Configure.pm being developed for Rakudo's build/Configure system).
19:11
19:12 slavorg joined, theory joined
klavs Hello all, i have updated dm0 (m0 disasm). It still does not support labels and do not format opcode arguments, but soon will. 19:19
19:21 theory left
cotto_work klavs: looks like I'll have to take a look at it. 19:25
again
aloha: dm0?
aloha cotto_work: Search me, bub.
cotto_work aloha: dm0 is klavs' experimental M0 disassembler or github.com/klavs/dm0 19:26
aloha cotto_work: Okay.
cotto_work aloha: dm0?
aloha cotto_work: dm0 is klavs' experimental M0 disassembler or github.com/klavs/dm0
cotto_work klavs++
let me add that to dalek 19:28
19:29 ambs joined
cotto_work klavs: can you follow the instructions at github.com/perl6/mu/blob/master/mi...k-push.txt , using t=magnet,parrot in the post-recieve url? 19:31
That'll let us know whenever you push something to dm0
We can also poll repositories, but that way's much faster and less resource-intensive.
klavs Cotto, i have a question about chunks in BC. If there are more then one, will they be aligned or continuous? 19:32
Cotto, ok
cotto_work klavs: according to the current spec they'll be continuous. Alignment isn't something I've been considering, but it's something to think about before the spec becomes final.
constants are also unaligned 19:33
klavs Cotto, then dm0 should work with them correctly. 19:34
cotto_work nice
klavs Cotto, if there is no stack in m0, where the local variables of HLL will be stored? 19:35
cotto_work klavs: registers
whiteknight working with annotations is much harder than it needs to be 19:36
cotto_work I'm working on code that demonstrates how that works now, but it's essentially continuation-passing style with the call frame acting as the continuation.
klavs And for functions like printf in c? 19:37
cotto_work klavs: that's what the ffi ops are for
ideally, at least. They're not tested right now. 19:38
klavs Cotto, thanks for info. 19:40
19:40 mj41 joined 19:42 soh_cah_toa joined
cotto_work klavs: I'm glad to help make it clearer. 19:42
soh_cah_toa ~~ 19:44
whiteknight hello soh_cah_toa
soh_cah_toa whiteknight: hey
whiteknight soh_cah_toa: did you get anything new figured out last night after I signed off?
cotto_work hio soh_cah_toa 19:45
soh_cah_toa cotto_work: hey
whiteknight: yeah. actually i did what you said and it worked in one shot believe it or not
whiteknight I believe it
cotto_work whiteknight's just that good 19:46
whiteknight the embedding API is as powerful as it is tricky and hard to understand
soh_cah_toa agreed
whiteknight there is still some work to do with it, like making it reentrant, but it's pretty good for what it's currently used for
cotto_work Looking at Latvia on wikipedia, I'm starting to get excited about visiting it for YAPC::EU. 19:47
davidfetter dukeleto, i was recalling an offhand comment you'd made awhile back. something about PL/llvm 19:48
cotto_work, you'll like it :)
cotto_work PL/x86
davidfetter heh
dukeleto, think it's worth more than an offhand mention? 19:49
cotto_work klavs: I like that you're using a separate file for constants. 19:52
klavs: how much C code have you written? 19:53
klavs Cotto, thats because i will need to update them.
cotto_work klavs: yes. They're not stable quite yet.
klavs Cotto, not much and i haven't done it for months, so.. People tend to forget things. :) 19:54
cotto_work klavs: that's how it works. When I haven't written Perl in a few months it always takes me a while to recall its major quirks and idioms. 19:55
klavs: you should send in a CLA. I'd like to move dm0 into the m0-prototype branch and start testing it. 19:58
though there's still a few things that I need to finish before M0 can start to be considered done.
still, I work under the assumption that untested code is broken. 19:59
tadzik heh, Perl taught me that too
klavs Cotto, i was considering it. I will reread it and send it in, but i do not prommise it will happen in next few days. 20:00
cotto_work klavs: There's no big rush.
klavs Cotto, thats great.
cotto_work tadzik: writing code taught me that. ;) 20:01
tadzik :)
klavs Cotto, what do you think? Should dm0 conver every register's number to I0, S5, N60, etc. ? 20:11
cotto_work klavs: focus on breaking the code into separate functions first. 20:12
Having all the work happen in main() isn't a very extensible design. 20:13
klavs Cotto, ok.
cotto_work dm0 will need to be fairly careful about how it converts numbers to register names. 20:15
klavs Cotto, what do you mean? 20:16
dalek p: 9ec488d | pmichaud++ | Configure.pl:
Also look for any parrot in the search patch (tadzik++).
cotto_work klavs: converting 0 to CF won't always be correct. 20:17
klavs Cotto, i don't get this. Everytime 0 is used as register's index it is not guaranteed to mean CF? 20:20
cotto_work sometimes it'll be an index into the constants table
or an immediate value
in "set_imm I0, 0, 1" 0 doesn't mean "the current call frame" but 0. 20:21
klavs Cotto, i plan to check every opcode, to convert its arguments depending on their meaning (which is described in spec) 20:23
cotto_work klavs: ok 20:24
20:27 dodathome left 20:30 whiteknight left
cotto_work klavs: can you make a test commit to dm0? I want to make sure dalek picks it up. 20:31
klavs Cotto, i will soon commit my code, cleaned a bit. Please, wait a minute :) 20:33
cotto_work klavs: you should also add a makefile at some point.
klavs: sure. Whenever you're ready.
21:06 Patterner joined
dalek 0: 6e9d712 | (Klāvs Priedītis)++ | dm0.c:
cleaned code
21:08
0: 4351cd6 | (Klāvs Priedītis)++ | consts.inc:
removed license
0: b8086b8 | (Klāvs Priedītis)++ | utils.c:
removed license
sorear What's dm0? 21:09
Oh, the M0 disassembler?
dalek rrot/soh-cah-toa/hbdb: b0a24d0 | soh_cah_toa++ | / (6 files):
Move hbdb wrapper functions to src/embed/hbdb.c
klavs Sorear, yes ;) 21:10
21:13 ambs left
cotto_work klavs: what email do you use for github? 21:14
klavs: also, do you mind if I add you to CREDITS? 21:15
21:15 jsut_ joined
klavs klavs.pr at gmail dot com 21:15
Cotto, no problems, i will not mind. 21:16
cotto_work there you go 21:17
dalek rrot: 25dd6bf | cotto++ | CREDITS:
add klavs++ to CREDITS
21:18
21:19 benabik left 21:20 jsut left 21:21 kurahaupo joined 21:23 mikehh left
klavs Fun fact: time in Latvia now is ~00.30. 21:27
veary late for children, not so late for programmer. I want to sleap.
cotto_work klavs: 'night 21:29
tadzik it's almost the time in PL :)
cotto_work aloha: clock?
aloha cotto_work: LAX: Wed, 14:29 PDT / CHI: Wed, 16:29 CDT / NYC: Wed, 17:29 EDT / UTC: Wed, 21:29 UTC / LON: Wed, 22:29 BST / BER: Wed, 23:29 CEST / TOK: Thu, 06:29 JST / SYD: Thu, 07:29 EST
klavs Thanks. Have a good day, all Americans here! 21:31
21:32 klavs left 21:33 hercynium left 21:36 kurahaupo left, kurahaupo joined 21:38 Tene_ joined, Tene left 21:40 fperrad left 21:41 Psyche^ joined 21:46 Patterner left, Psyche^ is now known as Patterner 21:53 perlite_ joined 21:56 perlite left, perlite_ is now known as perlite 22:03 dmalcolm left 22:08 mikehh joined 22:10 kurahaupo left 22:22 mj41 left 23:00 benabik joined 23:02 benabik left 23:25 jsut_ left 23:37 jsut joined 23:46 whiteknight joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_4_0-179-g25dd6bf 23:54
Kubuntu 11.04 amd64 (g++ --optimize)