Camelia, the Perl 6 bug

IRC log for #parrot, 2011-06-08

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 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)␤»
00:01 sorear nqp: say($x); my $x := 5
00:01 p6eval nqp: OUTPUT«␤»
00:01 sorear ...what?
00:02 sorear 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␤»
00:02 sorear I thought nqp was supposed to be a Perl 6 subset
00:03 plobsing joined #parrot
00:04 plobsing ~~
00:04 sorear !~~
00:04 plobsing to match or not to match? is that the question?
00:11 dmalcolm left #parrot
00:18 dukeleto i guess today was world ipv6 day
00:22 theory left #parrot
00:25 dukeleto Rubinius 2.0 preview: http://rubini.us/2011/06/07/​inside-rubinius-20-preview/
00:26 benabik sorear: That's a side effect of declaring everything at ENTER time.
00:27 benabik sorear: NQP needs to add an explicit check that it's not used early because parrot won't know the difference.
00:29 theory joined #parrot
00:32 smash left #parrot
00:33 kid51 is now known as kid51_at_dinner
00:56 lucian anyone willing to help me debug something?
00:56 lucian get_string in https://bitbucket.org/lucian1900/puffin/src​/b589051d580c/objects/test_instance.winxed
00:57 whiteknight cotto_work: ping
00:57 whiteknight lucian: maybe. What's up?
00:58 lucian whiteknight: trying to override get_string, i get an odd error on that test
00:58 lucian let me paste
00:58 whiteknight ok
00:58 theory_ joined #parrot
00:59 theory_ left #parrot
01:00 lucian https://gist.github.com/1013572
01:00 lucian relevant code is in instance.winxed
01:01 whiteknight link to instance.winxed?
01:02 lucian https://bitbucket.org/lucian1900/puffin/​src/b589051d580c/objects/instance.winxed
01:02 whiteknight yeah, I just found it
01:03 theory left #parrot
01:04 whiteknight I don't see where it is trying a get_integer
01:05 cotto whiteknight pong
01:05 lucian whiteknight: me neither
01:06 cotto whiteknight, what happen?
01:07 whiteknight cotto: Class.add_vtable_override throws and exception if we try to set a vtable override that has already been set
01:07 whiteknight I would like that behavior to go away
01:08 whiteknight 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?
01:08 whiteknight if I have to blindly guess, I suggest maybe the string() cast is coercing something something somthing
01:08 whiteknight cotto: I don't rightly know. I haven't even really tested it here on just Parrot
01:09 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
01:09 whiteknight lucian: yes, that's the nuclear approach with gdb
01:09 lucian plobsing: that's a little sad
01:10 lucian whiteknight: no get_integer in the .pir
01:10 whiteknight ....lolfail
01:11 cotto whiteknight, what behavior would you prefer?
01:11 whiteknight I really wish that linenumber in the backtrace weren't fubar
01:11 whiteknight cotto: no checking for a prior entry. Blind overwrite
01:11 whiteknight cotto: We can do that already with  pir::inspect($class, "vtable_overrides"){"whatever"} := $override
01:12 whiteknight 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 woosley joined #parrot
01:13 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
01:13 whiteknight In any case, removing unnecessary assumptions from Parrot can't hurt
01:14 whiteknight 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
01:15 cotto whiteknight, feel free to start a branch and do some hll testing.
01:15 whiteknight lucian: where are you getting that backtrace?
01:15 whiteknight cotto: awesome. Will do
01:15 lucian no, not that
01:15 lucian whiteknight: in test_instance:get_string
01:16 whiteknight oh, right. Winxed doesn't print out backtraces by default, but Rosella.Test does
01:16 whiteknight I forgot about that
01:16 whiteknight lucian: comment out line 43 and see if that makes the code not crap
01:17 whiteknight I want to try to narrow this down
01:17 lucian the assert line
01:17 lucian ?
01:17 lucian ok, test passes with the assert commented
01:18 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
01:18 lucian which it is, because i haven't implemented it
01:18 whiteknight okay, on line 42, do "string i_str = i;"
01:18 lucian the string cast on its own triggers the get_integer error
01:19 whiteknight and pass i_str to equal()
01:19 lucian implicit coercion too
01:19 lucian both string s = i; and var s = string(i); throw the error
01:19 lucian assert commented
01:20 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
01:21 lucian whiteknight: that's what i thought
01:21 whiteknight soh_cah_toa: EDONTDOTHAT
01:21 whiteknight soh_cah_toa: create a new API function for what you want to do
01:21 lucian whiteknight: i can leave get_string out for now, it's only really useful for interop
01:22 whiteknight lucian: change the "42" to something that doesn't look like a number
01:22 whiteknight see if that makes the problem go away
01:22 lucian whiteknight: did, same
01:22 whiteknight damnit
01:23 soh_cah_toa whiteknight: what do you mean? how do i make an api function?
01:24 soh_cah_toa agh...casting it as Parrot_Interp gets gcc to shut up but i still segfault
01:24 dalek parrot/whiteknight/add_vtable_override: 50ca55b | Whiteknight++ | / (2 files):
01:24 dalek parrot/whiteknight/add_vtable_override: 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).
01:24 dalek parrot/whiteknight/add_vtable_override: review: https://github.com/parrot/parrot/commit/50ca55ba71
01:25 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.
01:25 whiteknight soh_cah_toa: open up src/embed/api.c. Follow the pattern of other functions.
01:25 cotto There's a ParrotInterpreter PMC, but they're not interchangeable
01:25 whiteknight soh_cah_toa: if you have any questions about what you are copy+pasting, let me know
01:25 whiteknight but mostly, just copy_paste
01:26 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:30 whiteknight soh_cah_toa: what do you mean, get input from stdin?
01:30 soh_cah_toa just enter a command
01:30 whiteknight like, get the input from the frontend and pass it in to the debugger?
01:30 soh_cah_toa but the functions defined in src/hbdb.c where i don't use the api
01:30 whiteknight ...I don't think I follow
01:31 whiteknight nopaste me the code you have in the frontend which doesn't work?
01:31 soh_cah_toa ok
01:33 lucian noway, i fail 2 extra tests when running in gdb
01:34 whiteknight lucian: double weird
01:34 whiteknight lucian: at that point, my strategy is "cd /; sudo rm -rf *"
01:35 lucian whiteknight: nevermind, stale pir
01:37 nopaste "soh_cah_toa" at 192.168.1.3 pasted "PARROT_INTERP Segfault" (252 lines) at http://nopaste.snit.ch/50624
01:38 lucian plobsing: ok, i got it to break on get_integer. now what??
01:38 lucian s/??/?/
01:38 cotto left #parrot
01:38 soh_cah_toa it's the call to hbdb_get_command() in frontend/hbdb/main.c that's causing problems
01:39 lucian plobsing: pleasantly devious, and at the same time saddening method, this. thanks :)
01:39 plobsing lucian: get a backtrace
01:39 plobsing where are you?
01:39 plobsing you're on a boat!
01:40 plobsing running on the VM your VM could run like
01:40 cotto joined #parrot
01:41 lucian https://gist.github.com/1013612
01:41 whiteknight soh_cah_toa: yeah. Parrot_PMC != Parrot_Interp
01:41 soh_cah_toa right
01:41 lucian plobsing: effin boat
01:42 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 whiteknight 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
01:43 plobsing lucian: both C and PIR backtraces are useful (and the PIR backtrace *may* differ from the one printed in some cases)
01:44 soh_cah_toa whiteknight: the types still won't match though
01:44 lucian plobsing: yes, if you know parrot/C well :)
01:44 whiteknight soh_cah_toa: what do you mean?
01:44 lucian any hints on what's going on in that trace?
01:44 whiteknight soh_cah_toa: the macro EMBED_API_CALLIN converts a Parrot_PMC to a Parrot_Inter
01:44 whiteknight Parrot_Interp
01:44 whiteknight soh_cah_toa: just try it :)
01:45 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
01:46 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.
01:47 soh_cah_toa whiteknight: alright, i'll try...
01:47 whiteknight soh_cah_toa: it's good practice, in any case
01:48 lucian plobsing: hmm
01:49 whiteknight it's that set_i_p opcode. Trying to set an I from a P
01:49 whiteknight somewhere that is being generated from the winxed
01:49 whiteknight lucian: can you post the PIR disassembly for that method?
01:50 lucian whiteknight: lemme find it
01:51 whiteknight and the PIR disassembly from the get_string[vtable] in instance.winxed would be nice, for double-checking
01:52 whiteknight although that might have to wait until tomorrow, I'm heading to bed soonish
01:52 lucian https://gist.github.com/61ed830fc8f2f476ba6a
01:53 lucian that's instance.pir:get_string
01:53 whiteknight I see the set_i_p right there
01:53 whiteknight line 77
01:53 whiteknight so the backtrace was helpfully wrong
01:54 whiteknight ah
01:54 whiteknight got it
01:54 lucian https://gist.github.com/1013627
01:54 whiteknight instance.winxed, line 77. Change it to "if (cls != null && ...)"
01:54 whiteknight winxed is coercing cls to an int for the conditional
01:55 lucian bah
01:55 whiteknight iknowright?
01:55 lucian that sure is an arbitrary coercion
01:55 whiteknight and on that note, I'm heading off to bed
01:55 whiteknight have fun with your codez
01:56 cotto 'night
01:56 whiteknight left #parrot
01:56 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
01:57 lucian plobsing: ahem. i'll try to write a smaller example
01:59 plobsing not sure if null is a valid boolean, but at least you'd get a more specific and intuitive failure
02:00 lucian winxed defaults to ints in boolean contexts, from what i've seen
02:00 lucian 1 == 1 returns 1
02:01 plobsing lucian: under the hood, parrot uses integers as booleans, but PMCs are allowed to coerce to bools and to ints differently
02:01 plobsing 0 but true
02:01 lucian i see
02:02 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
02:02 lucian for now, i just wanted __str__/__repr__
02:04 lucian now i should fix other bugs, and work on the compiler
02:21 kid51_at_dinner left #parrot
02:36 cottoo joined #parrot
02:36 cotto left #parrot
02:37 cottoo is now known as cotto
02:39 mtk left #parrot
02:45 mtk joined #parrot
02:52 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 http://nopaste.snit.ch/50625
02:59 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
03:00 plobsing 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
03:01 soh_cah_toa let me try
03:06 soh_cah_toa we have liftoff!
03:06 soh_cah_toa plobsing++
03:10 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"
03:10 * soh_cah_toa thinks...
03:12 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:13 cotto are you in nqp?
03:13 soh_cah_toa no, it's src/hbdb.c
03:14 cotto what are you doing?
03:15 soh_cah_toa the function definition is in the above nopaste
03:15 soh_cah_toa i'm calling it's api wrapper Parrot_api_hbdb_get_command() from frontend/main/hbdb.c
03:15 cotto is that pushed?
03:15 soh_cah_toa yeah
03:17 cotto there's no "say" method
03:17 soh_cah_toa isn't it also a method of the filehandle pmc?
03:17 soh_cah_toa like print is?
03:17 cotto I don't see one there
03:18 soh_cah_toa if i use print then i get "too few positional arguments: 1 passed, 2 (or more) expected"
03:19 cotto that's better
03:19 soh_cah_toa 2 expected though?
03:19 cotto that means it's finding a method
03:19 soh_cah_toa right
03:19 soh_cah_toa i thought print just takes a string
03:22 cotto a couple things:
03:22 cotto First, you shouldn't be passing a char* to a method like that.  They take STRING*.
03:23 soh_cah_toa ahh...yes. i have to convert it back
03:23 cotto The signature '->' indicates no arguments or return values.
03:24 soh_cah_toa whoops
03:24 soh_cah_toa yeah, that makes no sense
03:38 lucian effin null pmc invoke ...
03:43 soh_cah_toa cotto: i have some progress. look at src/hbdb.c near line 85
03:45 AzureStone left #parrot
03:46 cotto soh_cah_toa, you can be lazy and pass 0 as the size.
03:47 soh_cah_toa nope
03:48 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
03:49 soh_cah_toa as in (hbdb) on every as opposed to every other
03:49 cotto what are you trying to do?
03:49 soh_cah_toa simple: input something, echo it
03:50 soh_cah_toa just to get the behavior down first
03:50 cotto soh_cah_toa, are you certain that there's anything in cmd?
03:51 soh_cah_toa what do you mean? that's where the input goes. it has to be there
03:52 cotto you're using a function that returns a STRING to write into a char*
03:53 cotto Very few Parrot internal functions use a char*.  In general, you'll want to use a STRING*.
03:54 soh_cah_toa src/debug.c did it that way so i just assumed. let me change it...
03:55 jsut_ joined #parrot
03:55 AzureStone joined #parrot
03:55 * soh_cah_toa sighs in relief
03:55 soh_cah_toa finally
03:56 soh_cah_toa took me all damn day
03:56 cotto push it
03:56 cotto dukeleto, ping
03:57 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?
03:57 cotto he's got it on a fork atm
03:59 jsut left #parrot
04:01 * soh_cah_toa pushes
04:01 dukeleto cotto: what is the problem?
04:04 cotto dukeleto, he's on a clone and I'd like to move his branch to the main repo
04:05 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
04:06 dukeleto cotto: he just needs to push his branch to the remote he has pointed at parrot/parrot.git
04:06 dukeleto cotto: since he has a commit bit
04:06 soh_cah_toa let me try now
04:08 dalek Heuristic branch merge: pushed 56 commits to parrot/soh-cah-toa/hbdb by soh-cah-toa
04:08 soh_cah_toa yay
04:09 cotto that was less painful than I was hop^H^H^Hafraid it'd be ;)
04:09 soh_cah_toa i know
04:09 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?
04:09 aloha OK. I'll deliver the message.
04:09 cotto well, there you go
04:11 cotto 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
04:13 soh_cah_toa it's taken a little longer b/c...well...parrot does some things very differently
04:13 soh_cah_toa for instance, it took me all day just to echo input. with FILE * and fgets/fputs it would've been about 30 seconds
04:14 soh_cah_toa though i wish i spent some more time during the bonding period exploring those kind of things
04:14 soh_cah_toa i can thank calculus for that ;)
04:15 cotto but how long did it take you to learn fgets/fputs
04:15 cotto there's a lot you have to relearn
04:15 soh_cah_toa absolutely, yes
04:15 soh_cah_toa not just new things to learn but things to re-learn. yeah
04:18 soh_cah_toa b/c of that i really want to make my documentation/comments/tutorials very explicit. idiot-proof
04:19 soh_cah_toa as is probably all ready obvious w/ my many comments ;)
04:21 soh_cah_toa 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:22 rohit_nsit08 joined #parrot
04:23 cotto no
04:23 soh_cah_toa i think i'll need to do a git pull upstream for that, right?
04:23 dalek parrot/leto/embed_grant: 6bf824e | dukeleto++ | t/src/embed.t:
04:23 dalek parrot/leto/embed_grant: [t] Parrot_free_cstring
04:23 dalek parrot/leto/embed_grant: review: https://github.com/parrot/parrot/commit/6bf824e9f7
04:24 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
04:26 soh_cah_toa 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:32 dukeleto soh_cah_toa: git config --global push.default current
04:32 dukeleto 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
04:32 dukeleto s/leave of/leave off/
04:32 soh_cah_toa great, thanks
04:33 dukeleto soh_cah_toa: git help push
04:35 dalek parrot/leto/embed_grant: 3baf690 | dukeleto++ | t/src/extend_vtable.t:
04:35 dalek parrot/leto/embed_grant: Add coverage to Parrot_ext_try
04:35 dalek parrot/leto/embed_grant: review: https://github.com/parrot/parrot/commit/3baf69084c
04:43 lucian left #parrot
04:49 dalek parrot/leto/embed_grant: 537230d | dukeleto++ | t/src/embed/api.t:
04:49 dalek parrot/leto/embed_grant: Add coverage for Parrot_api_wrap_pointer
04:49 dalek parrot/leto/embed_grant: review: https://github.com/parrot/parrot/commit/537230d7fc
04:52 dalek parrot/soh-cah-toa/hbdb: 86d097f | soh_cah_toa++ | src/hbdb.c:
04:52 dalek parrot/soh-cah-toa/hbdb: Testing that dalek sees this
04:52 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/86d097f0f9
04:52 dalek parrot/soh-cah-toa/hbdb: b2984f8 | soh_cah_toa++ | src/hbdb.c:
04:52 dalek parrot/soh-cah-toa/hbdb: Untest
04:52 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/b2984f801f
04:53 soh_cah_toa good. now i can go to bed
04:53 soh_cah_toa left #parrot
04:59 dalek parrot/leto/embed_grant: 70244ea | dukeleto++ | t/src/embed/api.t:
04:59 dalek parrot/leto/embed_grant: Add coverage to Parrot_api_set_runcore
04:59 dalek parrot/leto/embed_grant: review: https://github.com/parrot/parrot/commit/70244ea598
05:54 cotto I've got another accidental infinite loop with the calling conventions test.  What a strange game.
06:30 cotto It's exciting to tweak userspace M0 code and see the call frame become more correct.
06:33 preflex left #parrot
06:35 preflex joined #parrot
07:09 dalek parrot/m0-prototype: 72b359e | cotto++ | src/m0/perl5/m0_assembler.pl:
07:09 dalek parrot/m0-prototype: make assembler debugging output optional
07:09 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/72b359ed6c
07:09 dalek parrot/m0-prototype: b8f1f9e | cotto++ | / (2 files):
07:09 dalek parrot/m0-prototype: make M0 smart enough to use a manually-initialized call frame
07:09 dalek parrot/m0-prototype:
07:09 dalek parrot/m0-prototype: poke_caller still doesn't pass, but it properly goes to the callee chunk
07:09 dalek parrot/m0-prototype: using a call frame initialized by M0 code, so there's progress
07:09 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/b8f1f9e0de
07:09 dalek parrot/m0-prototype: f328a33 | cotto++ | src/m0/perl5/m0_interp.pl:
07:09 dalek parrot/m0-prototype: various (mostly) minor interpreter fixes
07:09 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/f328a33615
07:09 dalek parrot/m0-prototype: dc51416 | cotto++ | t/m0/integration/m0_poke_caller.m0:
07:09 dalek parrot/m0-prototype: get poke_caller returning to the address in its RETPC, though not losslessly
07:09 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/dc51416b17
07:22 mj41 joined #parrot
08:16 rohit_nsit08 left #parrot
08:19 contingencyplan left #parrot
08:31 fperrad joined #parrot
08:39 linge left #parrot
08:50 Infinoid left #parrot
08:51 Infinoid joined #parrot
08:55 rohit_nsit08 joined #parrot
09:00 dalek nqp: 0a8dc8b | (Martin Berends)++ | src/pmc/stable.pmc:
09:00 dalek nqp: [src/pmc/stable.pmc] eliminate gcc 'old-style function declaration' warning
09:00 dalek nqp: review: https://github.com/perl6/nqp/commit/0a8dc8b983
09:22 preflex left #parrot
09:24 preflex joined #parrot
09:26 woosley left #parrot
09:32 lucian joined #parrot
09:38 lucian left #parrot
09:47 nopaste left #parrot
09:47 TonyC left #parrot
09:47 TonyC joined #parrot
09:55 woosley joined #parrot
09:56 woosley left #parrot
09:56 lucian joined #parrot
09:56 lucian left #parrot
09:56 nopaste joined #parrot
10:10 nopaste left #parrot
10:10 TonyC left #parrot
10:11 TonyC joined #parrot
10:16 nopaste joined #parrot
10:19 dalek nqp: 43f2fc4 | (Martin Berends)++ | src/ (3 files):
10:19 dalek nqp: [nqp.ops P6opaque.c HashAttrStore.c] eliminate gcc 'conversion from void *' warnings
10:19 dalek nqp: review: https://github.com/perl6/nqp/commit/43f2fc4cbe
10:20 klavspr joined #parrot
10:26 mtk left #parrot
10:30 simcop2387_ joined #parrot
10:30 simcop2387 left #parrot
10:30 simcop2387_ is now known as simcop2387
10:33 mtk joined #parrot
10:49 ttbot left #parrot
11:05 masak joined #parrot
11:05 masak hi, Parrot folks.
11:06 masak 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:07 ttbot joined #parrot
11:07 rohit_nsit08 left #parrot
11:30 rohit_nsit08 joined #parrot
11:48 dodathome joined #parrot
11:50 masak looking, I find something called ncurses::getch in examples/library/ncurses_life.pir.
11:51 jnthn__ masak: does the FileHandle or whatever it's called PMC not have such a method?
11:52 masak jnthn__: I didn't find any in http://docs.parrot.org/parrot/latest​/html/docs/book/pir/ch08_io.pod.html
11:53 moritz masak: $*IN.read(1)? (see #perl6)
11:57 masak ooh
12:01 jnthn__ masak: Didn't you implement that method? ;-) ;-)
12:01 moritz I'm pretty sure he did :-)
12:03 * masak doesn't know what to say :)
12:03 masak ...anyway, I'm glad there's a way. :P
12:04 moritz masak: is that for your blog thingy?
12:04 masak (actually, I simply didn't think of .read in that context)
12:04 masak moritz: yes, that's what got me thinking about it.
12:05 masak moritz: making games that react to keypresses, and all that.
12:06 masak ./perl6 -e 'say $*IN.read(1); say "OH HAI"'
12:06 masak this doesn't cut it. it requires me to press Enter after pressing a key.
12:06 masak try it yourselves and see.
12:07 * moritz doesn't have a rakudo master at hand
12:07 masak anyway, the search is still on.
12:07 moritz can't you NCI-wrap getch?
12:08 masak possibly.
12:08 masak I was hoping somebody had already :)
12:10 mikehh there's an ncurses.pir in runtime/parrot/library
12:12 masak getting this error when trying to run ncurses_life.pir on a freshly checked-out and built Parrot: https://gist.github.com/1014297
12:12 masak :(
12:14 moritz ticket it!
12:14 mikehh masak: you should be able to load ncurses.pbc
12:14 whiteknight joined #parrot
12:15 sirmacik left #parrot
12:15 * masak tickets it
12:15 klavspr left #parrot
12:17 whiteknight good morning, #parrot
12:17 mikehh hi there whiteknight
12:18 whiteknight good morning mikehh. How are you doing today?
12:18 mikehh whiteknight: not too bad, just about to do some parrot hacking
12:18 masak hi whiteknight!
12:19 whiteknight hello masak!
12:21 masak I just submitted a trac ticket: http://trac.parrot.org/parrot/ticket/2130
12:22 moritz masak++
12:22 masak seems one of the Parrot examples is broken! this state of affairs cannot stand.
12:22 masak man the pumps!
12:23 jnthn__ .oO( gee, I'm glad he's not this demanding with every rakudobug... )
12:24 masak :P
12:25 masak 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?
12:25 whiteknight several mentions about Perl6 in this article about Go: http://www.syntax-k.de/projekte/go-review
12:25 rohit_nsit08 left #parrot
12:28 dalek TT #2130 created by masak++: Cannot run examples/library/ncurses_life.pir
12:28 dalek TT #2130: http://trac.parrot.org/parrot/ticket/2130
12:29 moritz whiteknight: thanks
12:30 mikehh masak: yup I get the same
12:39 jnthn__ moritz: win32api.pir sure didn't get updated. :(
12:44 dalek nqp: d42ba1c | (Martin Berends)++ | src/6model/ (5 files):
12:44 dalek nqp: [src/6model] fix all gcc 'no prototype' warnings
12:45 dalek nqp: review: https://github.com/perl6/nqp/commit/d42ba1cf5c
13:12 plobsing left #parrot
13:38 preflex left #parrot
13:40 preflex joined #parrot
13:45 bubaflub_ joined #parrot
13:48 bubaflub left #parrot
13:48 bubaflub_ is now known as bubaflub
13:59 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
14:00 moritz 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:01 contingencyplan joined #parrot
14:02 hudnix joined #parrot
14:02 whiteknight he does mention that JavaScript really doesn't fit into the list very well
14:02 whiteknight I'm surprised he didn't include C#
14:02 whiteknight or D
14:03 whiteknight although, D is probably not popular enough
14:03 whiteknight and C# might not be different enough from Java
14:03 moritz even Java isn't very C-like anymore
14:03 moritz ah well
14:09 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 #parrot
14:15 moritz masak: both smalltalk and lisp have a reputtation to be far more expressive than Java
14:18 hercynium joined #parrot
14:19 lucian joined #parrot
14:25 NotFound !winxed coerces pmcs to int in boolean contexts" ? What's a boolean context?
14:27 lucian NotFound: an if statement
14:27 lucian i attached an example
14:28 NotFound lucian: that is not an if statement, is a && operator.
14:29 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.
14:30 lucian NotFound: right, but it should check for get_bool, not get_integer
14:30 NotFound lucian: it doesn't check, it uses it.
14:30 whiteknight the generated PIR code calls set_i_p
14:30 whiteknight not get_bool_i_p
14:30 NotFound And if you don't provide one, Default takes care.
14:30 simcop2387_ joined #parrot
14:30 lucian NotFound: ok, it shoudln't use it. it should use get_bool
14:32 lucian NotFound: i don't see why it would use get_integer when i'm asking for bool evaluation
14:32 lucian regardless of what the pmc imple,entss
14:32 simcop2387 left #parrot
14:32 simcop2387_ is now known as simcop2387
14:33 NotFound lucian: Default does it.
14:34 lucian NotFound: the Default pmc? hmm. then that's wrong :)
14:34 NotFound Mmmm... no, it doesn't.
14:34 masak moritz: no argument there. as I said, "tug [...] in the direction of" :)
14:35 losinggeneration joined #parrot
14:43 fperrad_ joined #parrot
14:46 NotFound The generated code for if (p) is unless $P1 goto __label_1
14:46 fperrad left #parrot
14:46 fperrad_ is now known as fperrad
14:47 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:48 NotFound unless op uses VTABLE_get_bool
14:51 dodathome left #parrot
14:51 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'
14:51 moritz but it doesn't return a bool, does it? :-)
14:52 NotFound AFAIK the vtable get_bool is used only in jump operators.
14:54 fperrad_ joined #parrot
14:54 theory left #parrot
14:57 fperrad left #parrot
14:57 fperrad_ is now known as fperrad
14:57 NotFound A way to coerce to "bool" is: p ? 1 : 0
14:58 NotFound But tt doesn't exactly the same as get_bool, it also check nullness.
15:00 NotFound 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
15:01 NotFound whiteknight: even better, we don't have any way to use set_bool from pir.
15:01 whiteknight yeah, I've known that
15:01 whiteknight there are a handful of VTABLEs which are basically unusable for similar reasons
15:02 NotFound Or untestable.
15:02 whiteknight right
15:03 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.
15:05 NotFound If parrot provides the op, fixing winxed to use it will be easy.
15:06 lucian NotFound: i see. very odd
15:10 dukeleto ~~
15:10 * dukeleto knows about funky vtables
15:11 NotFound Well, exposing the problematic cases is the first step toward solutions.
15:12 dukeleto whiteknight: did you see my msg about the TODO tests in extend.t ?
15:13 whiteknight dukeleto: yes. I haven't had time to look at it yet
15:16 atrodo funky cold vtables
15:17 fperrad_ joined #parrot
15:21 dukeleto whiteknight: ok. just wondering what your TODO comment actually means
15:21 fperrad left #parrot
15:21 whiteknight dukeleto: let me take a quick look right now
15:21 fperrad_ is now known as fperrad
15:22 whiteknight dukeleto: ah, I remember now
15:22 whiteknight 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
15:23 whiteknight 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:24 lucian is there any way "return dict[i]" could try to invoke dict? dict here is a hash
15:25 whiteknight Parrot_runcode is the culprit. It is an older part of the extend API that expects a PIR compreg to exist
15:25 whiteknight dukeleto: if Parrot_runcode isn't deprecated and slated for removal, it should be
15:28 dukeleto whiteknight: so, can I improve the extend.t tests by emulating what frontend/parrot/main.c does?
15:29 dukeleto 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
15:29 whiteknight the solution to that particular test is to delete Parrot_runcode, and throw it in the fire
15:30 whiteknight 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.
15:30 dukeleto 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?
15:30 dalek nqp: fd52b67 | (Martin Berends)++ | src/6model/knowhow_bootstrapper.c:
15:30 dalek nqp: [src/6model/knowhow_bootstrapper.c] fix gcc 'return value not used' warnings
15:30 dalek nqp: review: https://github.com/perl6/nqp/commit/fd52b67245
15:31 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 JimmyZ joined #parrot
15:32 whiteknight actually, compilers/imcc/api.c:get_compreg_pmc
15:32 whiteknight that's the function that creates and registers the compiler
15:32 whiteknight You can't steal code from frontends/parrot/main.c. That file uses the embedding API, which the extend.t tests do not
15:32 whiteknight you can't mix+match embedding and extending APIs
15:36 dukeleto whiteknight: yeah, i may start a new test file or something
15:36 whiteknight ok
15:37 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
15:38 whiteknight lucian: what's the error message?
15:39 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
15:40 whiteknight you cannot mix and match extend and embed APIs. You can't do it. Always fail
15:40 whiteknight so a new test file doesn't help that situation
15:40 lucian whiteknight: invoke() not implemented in class Hash
15:40 whiteknight actually, the old embed API can be mixed and matched. it's basically the extend API in a file named something wrong
15:41 lucian whiteknight: apparently it happens if i try to return dict[i]
15:42 whiteknight lucian: have a backtrace?
15:43 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
15:43 whiteknight what is i?
15:44 lucian whiteknight: string
15:44 dukeleto whiteknight: are you saying that the new embed API and our extend api *can't* be used together?
15:44 lucian whiteknight: producing that traceback
15:44 whiteknight dukeleto: yes. unequivocal yes
15:44 dukeleto whiteknight: PL/Parrot used both the old embed and the extend api successfully
15:45 whiteknight dukeleto: it's misnamed. The old embed api is no different in form or function from the extend API
15:45 dalek nqp: 367a3bc | (Martin Berends)++ | src/6model/multi_dispatch.c:
15:45 dalek nqp: [src/6model/multi_dispatch.c] fix gcc 'parentheses around && within ||' warning
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/367a3bc5ed
15:45 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
15:45 whiteknight that's why we needed a new embed API, because the old one wasn't for embedding
15:45 NotFound The preferred way IMHO should be to separate the embed and the extend parts of an application in different C source files.
15:46 dukeleto whiteknight: hmm
15:46 whiteknight PL/Parrot was using a bunch of functions, some of which were weirdly included in embed.c
15:46 whiteknight that file is misnamed at best. Misleading, wrong, stupid, and smelly at worst
15:46 dukeleto whiteknight: indeed it was. Duct tape and paper clips.
15:46 masak left #parrot
15:47 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?
15:47 whiteknight the extend API is typically being used where exception protection is available
15:47 whiteknight dukeleto: yes. Parrot_runcode at least needs to disappear
15:47 dukeleto whiteknight: good to know. That explains some exploding hamsters in PL/Parrot
15:48 whiteknight it is buggy, faulty. It relies on the existence of IMCC, which does not always exist in libparrot
15:48 whiteknight Maybe we could add an api method to IMCC to do the same kind of thing, but Parrot shouldn't provide it
15:48 dukeleto whiteknight: what do I used instead of runcode ?
15:48 dukeleto s/used/use/
15:49 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
15:50 whiteknight frontend/parrot/main.c creates and registers two compiler objects: "PIR" and "PASM"
15:50 lucian whiteknight: ah, i found where i messed up
15:50 whiteknight lucian: do tell
15:50 lucian whiteknight: if you wish to laugh at me https://gist.github.com/1014684
15:50 lucian whiteknight: the reason the second works is that only the correct attribute is returned
15:51 lucian whiteknight: (duh). the first one gives that error because i'm calling the resulting attribute in the test
15:51 whiteknight lucian: oh, fun
15:52 lucian yeah. i really dislike error reporting on parrot in general
15:52 whiteknight lucian: yes, it's not one of our strong points
15:56 lucian hmm, i'm finding interop hard
15:57 lucian can a Class inherit from a PMC and another Class?
15:57 lucian and are there any catches?
16:02 lucian i really really wish Classes were Objects
16:05 lucian that's 6model's killer feature if you ask me
16:09 cotto ~~
16:12 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:13 whiteknight lucian: Classes are objects
16:16 dukeleto benabik: good question
16:16 dukeleto benabik: kid51 has been asking for slides like that so anybody can give an "intro to parrot" talk
16:16 benabik dukeleto: Hah.
16:22 benabik 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:23 dukeleto benabik: i will give a talk called "a visual intro to parrot" at YAPC::NA, but I haven't written it yet :)
16:24 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:29 JimmyZ left #parrot
16:32 lucian left #parrot
16:48 mj41 left #parrot
16:52 cotto_work ~~
16:56 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 whiteknight the website will compile and run just fine, but it won't deploy
17:02 davidfetter joined #parrot
17:08 perlite_ joined #parrot
17:08 shachaf_ joined #parrot
17:09 mtk left #parrot
17:09 nopaste left #parrot
17:09 TonyC left #parrot
17:09 jtpalmer left #parrot
17:09 dukeleto left #parrot
17:09 jevin left #parrot
17:09 perlite left #parrot
17:09 jjore_ left #parrot
17:09 aloha left #parrot
17:09 bacek_at_work left #parrot
17:09 janus left #parrot
17:09 KaeseEs left #parrot
17:09 shachaf left #parrot
17:09 ascent left #parrot
17:09 cotto_work left #parrot
17:09 frodwith left #parrot
17:09 PerlJam left #parrot
17:09 Tene left #parrot
17:09 cosimo left #parrot
17:09 Util left #parrot
17:09 knewt left #parrot
17:09 slavorg left #parrot
17:09 Hunger left #parrot
17:09 perlite_ is now known as perlite
17:10 frodwith joined #parrot
17:10 jjore joined #parrot
17:10 Hunger joined #parrot
17:11 Util joined #parrot
17:11 cosimo joined #parrot
17:11 KaeseEs joined #parrot
17:11 jtpalmer joined #parrot
17:11 ascent joined #parrot
17:11 Tene joined #parrot
17:11 TonyC joined #parrot
17:11 janus joined #parrot
17:11 aloha joined #parrot
17:13 dalek nqp: 60387e7 | (Martin Berends)++ | / (3 files):
17:13 dalek nqp: [6model/reprs/P6opaque*] fix gcc 'incompatible pointer type' warnings, tweak .gitignore
17:13 dalek nqp: review: https://github.com/perl6/nqp/commit/60387e7882
17:16 bluescreen joined #parrot
17:16 PerlJam joined #parrot
17:22 bacek_at_work joined #parrot
17:22 mtk joined #parrot
17:22 jevin joined #parrot
17:23 cotto_work joined #parrot
17:26 dukeleto joined #parrot
17:28 knewt joined #parrot
17:28 nopaste joined #parrot
17:28 dodathome joined #parrot
17:30 simcop2387_ joined #parrot
17:31 mj41 joined #parrot
17:31 simcop2387 left #parrot
17:31 simcop2387_ is now known as simcop2387
17:49 cotto_work https://github.com/blog/872-schedu​led-maintenance-tomorrow-20-00-pst
17:49 ligne left #parrot
17:52 hudnix left #parrot
17:54 jsut_ left #parrot
17:57 hudnix joined #parrot
18:13 mj41 left #parrot
18:14 mtk left #parrot
18:14 mtk joined #parrot
18:21 p6eval left #parrot
18:21 p6eval joined #parrot
18:22 jsut joined #parrot
18:25 dalek winxed: r1048 | NotFound++ | trunk/winxedst1.winxed:
18:25 dalek winxed: fix and complete the write-to-output feature in the stage 1 side
18:25 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1048
18:25 dalek TT #1006 closed by whiteknight++: Does not build on clang with GMP
18:25 dalek TT #1006: http://trac.parrot.org/parrot/ticket/1006
18:40 bluescreen left #parrot
18:41 theory joined #parrot
18:59 dmalcolm joined #parrot
19:08 klavs joined #parrot
19:10 theory left #parrot
19:11 dalek nqp: 878e8ff | pmichaud++ | / (5 files):
19:11 dalek nqp: Major refactor of build/Configure system (based on new tools/lib/NQP/Configure.pm being developed for Rakudo's build/Configure system).
19:11 dalek nqp: review: https://github.com/perl6/nqp/commit/878e8ffee1
19:12 slavorg joined #parrot
19:12 theory joined #parrot
19:19 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:21 theory left #parrot
19:25 cotto_work klavs: looks like I'll have to take a look at it.
19:25 cotto_work again
19:25 cotto_work aloha: dm0?
19:25 aloha cotto_work: Search me, bub.
19:26 cotto_work aloha: dm0 is klavs' experimental M0 disassembler or https://github.com/klavs/dm0
19:26 aloha cotto_work: Okay.
19:26 cotto_work aloha: dm0?
19:26 aloha cotto_work: dm0 is klavs' experimental M0 disassembler or https://github.com/klavs/dm0
19:26 cotto_work klavs++
19:28 cotto_work let me add that to dalek
19:29 ambs joined #parrot
19:31 cotto_work klavs: can you follow the instructions at https://github.com/perl6/mu/bl​ob/master/misc/dalek-push.txt , using t=magnet,parrot in the post-recieve url?
19:31 cotto_work That'll let us know whenever you push something to dm0
19:31 cotto_work We can also poll repositories, but that way's much faster and less resource-intensive.
19:32 klavs Cotto, i have a question about chunks in BC. If there are more then one, will they be aligned or continuous?
19:32 klavs Cotto, ok
19:32 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.
19:33 cotto_work constants are also unaligned
19:34 klavs Cotto, then dm0 should work with them correctly.
19:34 cotto_work nice
19:35 klavs Cotto, if there is no stack in m0, where the local variables of HLL will be stored?
19:35 cotto_work klavs: registers
19:36 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.
19:37 klavs And for functions like printf in c?
19:37 cotto_work klavs: that's what the ffi ops are for
19:38 cotto_work ideally, at least.  They're not tested right now.
19:40 klavs Cotto, thanks for info.
19:40 mj41 joined #parrot
19:42 soh_cah_toa joined #parrot
19:42 cotto_work klavs: I'm glad to help make it clearer.
19:44 soh_cah_toa ~~
19:44 whiteknight hello soh_cah_toa
19:44 soh_cah_toa whiteknight: hey
19:44 whiteknight soh_cah_toa: did you get anything new figured out last night after I signed off?
19:45 cotto_work hio soh_cah_toa
19:45 soh_cah_toa cotto_work: hey
19:45 soh_cah_toa whiteknight: yeah. actually i did what you said and it worked in one shot believe it or not
19:45 whiteknight I believe it
19:46 cotto_work whiteknight's just that good
19:46 whiteknight the embedding API is as powerful as it is tricky and hard to understand
19:46 soh_cah_toa agreed
19:46 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
19:47 cotto_work Looking at Latvia on wikipedia, I'm starting to get excited about visiting it for YAPC::EU.
19:48 davidfetter dukeleto, i was recalling an offhand comment you'd made awhile back. something about PL/llvm
19:48 davidfetter cotto_work, you'll like it :)
19:48 cotto_work PL/x86
19:48 davidfetter heh
19:49 davidfetter dukeleto, think it's worth more than an offhand mention?
19:52 cotto_work klavs: I like that you're using a separate file for constants.
19:53 cotto_work klavs: how much C code have you written?
19:53 klavs Cotto, thats because i will need to update them.
19:53 cotto_work klavs: yes.  They're not stable quite yet.
19:54 klavs Cotto, not much and i haven't done it for months, so.. People tend to forget things. :)
19:55 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:58 cotto_work klavs: you should send in a CLA.  I'd like to move dm0 into the m0-prototype branch and start testing it.
19:58 cotto_work though there's still a few things that I need to finish before M0 can start to be considered done.
19:59 cotto_work still, I work under the assumption that untested code is broken.
19:59 tadzik heh, Perl taught me that too
20:00 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.
20:00 klavs Cotto, thats great.
20:01 cotto_work tadzik: writing code taught me that. ;)
20:01 tadzik :)
20:11 klavs Cotto, what do you think? Should dm0 conver every register's number to I0, S5, N60, etc. ?
20:12 cotto_work klavs: focus on breaking the code into separate functions first.
20:13 cotto_work Having all the work happen in main() isn't a very extensible design.
20:13 klavs Cotto, ok.
20:15 cotto_work dm0 will need to be fairly careful about how it converts numbers to register names.
20:16 klavs Cotto, what do you mean?
20:16 dalek nqp: 9ec488d | pmichaud++ | Configure.pl:
20:16 dalek nqp: Also look for any parrot in the search patch (tadzik++).
20:16 dalek nqp: review: https://github.com/perl6/nqp/commit/9ec488dec5
20:17 cotto_work klavs: converting 0 to CF won't always be correct.
20:20 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
20:20 cotto_work or an immediate value
20:21 cotto_work in "set_imm I0, 0, 1" 0 doesn't mean "the current call frame" but 0.
20:23 klavs Cotto, i plan to check every opcode, to convert its arguments depending on their meaning (which is described in spec)
20:24 cotto_work klavs: ok
20:27 dodathome left #parrot
20:30 whiteknight left #parrot
20:31 cotto_work klavs: can you make a test commit to dm0?  I want to make sure dalek picks it up.
20:33 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.
20:33 cotto_work klavs: sure.  Whenever you're ready.
21:06 Patterner joined #parrot
21:08 dalek dm0: 6e9d712 | (Klāvs Priedītis)++ | dm0.c:
21:08 dalek dm0: cleaned code
21:08 dalek dm0: review: https://github.com/klavs/dm0/commit/6e9d712d9c
21:08 dalek dm0: 4351cd6 | (Klāvs Priedītis)++ | consts.inc:
21:08 dalek dm0: removed license
21:08 dalek dm0: review: https://github.com/klavs/dm0/commit/4351cd6853
21:08 dalek dm0: b8086b8 | (Klāvs Priedītis)++ | utils.c:
21:08 dalek dm0: removed license
21:08 dalek dm0: review: https://github.com/klavs/dm0/commit/b8086b8530
21:09 sorear What's dm0?
21:09 sorear Oh, the M0 disassembler?
21:09 dalek parrot/soh-cah-toa/hbdb: b0a24d0 | soh_cah_toa++ | / (6 files):
21:09 dalek parrot/soh-cah-toa/hbdb: Move hbdb wrapper functions to src/embed/hbdb.c
21:09 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/b0a24d05fd
21:10 klavs Sorear, yes ;)
21:13 ambs left #parrot
21:14 cotto_work klavs: what email do you use for github?
21:15 cotto_work klavs: also, do you mind if I add you to CREDITS?
21:15 jsut_ joined #parrot
21:15 klavs klavs.pr at gmail dot com
21:16 klavs Cotto, no problems, i will not mind.
21:17 cotto_work there you go
21:18 dalek parrot: 25dd6bf | cotto++ | CREDITS:
21:18 dalek parrot: add klavs++ to CREDITS
21:18 dalek parrot: review: https://github.com/parrot/parrot/commit/25dd6bfa69
21:19 benabik left #parrot
21:20 jsut left #parrot
21:21 kurahaupo joined #parrot
21:23 mikehh left #parrot
21:27 klavs Fun fact: time in Latvia now is ~00.30.
21:27 klavs veary late for children, not so late for programmer. I want to sleap.
21:29 cotto_work klavs: 'night
21:29 tadzik it's almost the time in PL :)
21:29 cotto_work aloha: clock?
21:29 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
21:31 klavs Thanks. Have a good day, all Americans here!
21:32 klavs left #parrot
21:33 hercynium left #parrot
21:36 kurahaupo left #parrot
21:36 kurahaupo joined #parrot
21:38 Tene_ joined #parrot
21:38 Tene left #parrot
21:40 fperrad left #parrot
21:41 Psyche^ joined #parrot
21:46 Patterner left #parrot
21:46 Psyche^ is now known as Patterner
21:53 perlite_ joined #parrot
21:56 perlite left #parrot
21:56 perlite_ is now known as perlite
22:03 dmalcolm left #parrot
22:08 mikehh joined #parrot
22:10 kurahaupo left #parrot
22:22 mj41 left #parrot
23:00 benabik joined #parrot
23:02 benabik left #parrot
23:25 jsut_ left #parrot
23:37 jsut joined #parrot
23:46 whiteknight joined #parrot
23:54 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_4_0-179-g25dd6bf
23:54 mikehh Kubuntu 11.04 amd64 (g++ --optimize)

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced