|
Parrot 3.6.0 "P�jaros del Caribe" released | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 5 August 2011. |
|||
|
00:00
bluescreen joined
|
|||
| soh_cah_toa | cotto: still can't get that test to pass. do you have any idea why it's behaving like this? | 00:03 | |
| not_gerd | I'm off for today, good night #parrot | 00:05 | |
| cotto | soh_cah_toa, looking | 00:06 | |
| soh_cah_toa | ok | 00:07 | |
| cotto | got it | 00:11 | |
| soh_cah_toa | :D | ||
| cotto | you need to be checking ->can_read in a loop | ||
| soh_cah_toa | gimme gimme gimme | ||
| cotto | search.cpan.org/~gbarr/IO-1.25/lib/IO/Select.pm | 00:12 | |
| Look at how the example there works. | |||
| same deal for your code | |||
| soh_cah_toa | hm, i had it like that originally b/c i got the idea from that exact example but someone said it should be outside | 00:14 | |
| cotto | soh_cah_toa, is that enough information? | ||
| soh_cah_toa | oh well, let's revert it if it works | ||
| yeah, i'll try now | |||
| cotto | you also don't need to check specific handles. ->can_read(0) will return a list of all handles ready for reading. | 00:15 | |
| not necessary, but nice to know. I doubt you'll be adding any more handles. ;) | |||
| soh_cah_toa | you mean the `if (fileno $fh == fileno \\*HBDB_STDERR)`? | 00:16 | |
| cotto | yes | 00:17 | |
| soh_cah_toa | b/c i think that's supposed the keep $lines from containing a mix of stderr and stdout | ||
| i think | |||
| dalek | kudo/wherefore-gc-bug: 396201b | tadzik++ | / (6 files): Fix Pod::Block::Declarator ordering. Reveals an ugly GC bug |
||
|
00:17
rdesfo joined
|
|||
| cotto | That's sensible. | 00:18 | |
| soh_cah_toa | well look at that...it passes | 00:19 | |
| finally, i can add more tests | |||
| cotto | good times | ||
| soh_cah_toa | indeed | ||
| cotto | Before you get too far into that, let's figure out a schedule. | ||
| soh_cah_toa | sure, but i actually have to run an errand real quick. can it wait like 30 minutes? | 00:20 | |
| cotto | sure | ||
| soh_cah_toa will brb | |||
|
00:27
preflex joined
00:28
Kulag joined
|
|||
| soh_cah_toa | cotto: actually, didn't realize it's raining so nevermind | 00:34 | |
| cotto: so this week i can probably get full coverage of the features i have so far and then start working on watchpoints | |||
|
00:35
preflex joined
|
|||
| cotto | rain? wouldn't know about that. | 00:36 | |
| soh_cah_toa | :) | ||
| Felipe | :p | 00:37 | |
| cotto | one week from Monday is the soft pencils down date, then another week to the hard date. | ||
| soh_cah_toa | oh wow | ||
| crap | |||
| tadzik | I was suprised too | ||
| cotto | yeah | ||
| soh_cah_toa | not good, thought i had until the end of august | 00:38 | |
| cotto | soh_cah_toa, you picked a really good time to get the hbdb train un-derailed | ||
| tadzik | g'night Parrots | 00:39 | |
| cotto | 'night tadzik | ||
| soh_cah_toa, you can still get some good work done. | |||
| just be focused and let me know quickly if you get stuck | 00:40 | ||
| soh_cah_toa | ok, i'm stuck :P | ||
| cotto | where | ||
| ? | |||
| soh_cah_toa | well, before watchpoints i want it to appear as if you are stepping line by line but one line can generate several ops. for instance, to step from line 3 to 4 you might have to type "step, step, step, step" | 00:42 | |
| cotto | that's the nature of PIR | ||
| soh_cah_toa | yeah | ||
| i could just run until the next annotation line change | |||
| but i also want it to work for pir | 00:43 | ||
| cotto | Don't try too much with pir line numbers. | ||
| soh_cah_toa | ok | ||
| yeah, hll's are more important | |||
| jnthn__ wonders if you can cover some of the commonest cases in PIR just by knowing the sequence of ops that some extremely common things generate | 00:44 | ||
| (e.g. sub or method calls) | |||
| soh_cah_toa | i really want to focus on making it attractive to the p6 team. is there some switch to generate pir? | ||
| i've just been using a small hand-written pir file | |||
| cotto | soh_cah_toa, --target=pir | 00:45 | |
| soh_cah_toa | ok | ||
| jnthn__ | soh_cah_toa: --target=pir, you'll have most luck in the nom branch I suspect | ||
| For a simpler time, try nqp | |||
| soh_cah_toa | jnthn__: ok | ||
| jnthn__ | (new) nqp with --target=pir certainly generates code that'll run standalone with Parrot. | ||
| We had that in Rakudo's nom branch at one point, then accidentally busted it...I didn't get it fixed up again yet. Will do soon... | 00:46 | ||
| soh_cah_toa | cotto: is it ok to include a rakudo/nqp pir generated file in the testlib directory? | ||
| cotto | soh_cah_toa, why wouldn't it be? | 00:47 | |
| test data can come from many sources | |||
| minimal test cases are nicer though | |||
| soh_cah_toa | just making sure | 00:48 | |
| ok, so then how about this: | 00:49 | ||
| first, i get these tests done. then update the docs to reflect new commands | |||
| second, modify step to run until next annotation change | |||
| third, start watchpoints design | |||
| if i'm lucky, i can have that by the middle of this week | |||
| preferably sooner | |||
| doing docs/tests right now too | 00:50 | ||
| cotto | soh_cah_toa, can you put something like that on the wiki page, preferably with dates? | 00:51 | |
| soh_cah_toa | sure | ||
|
00:53
PacoLinux__ joined
|
|||
| dalek | kudo/nom: 31e7121 | jonathan++ | src/core/traits.pm: Harden export trait a bit to avoid hard to find issues. |
00:59 | |
| kudo/nom: d2bfaa5 | jonathan++ | t/spectest.data: 3 more tests that we can pass now Test::Util works again. |
|||
| kudo/nom: ab4eacb | jonathan++ | NOMMAP.markdown: Remove some completed entries from nommap (tadzik++ for noticing). |
|||
| kudo/nom: ed3094f | jonathan++ | src/ (4 files): Make sure we give appropriate method names to auto-generated accessors and delegation methods, so introspection works out. Also try to handle multi exporting a bit more sanely. |
|||
| soh_cah_toa | i just realized something. the way i want this to work is that you invoke hbdb w/ the hll source file, hbdb compiles it and operates on the resulting bytecode | 01:01 | |
| but if i want to use annotations, hbdb needs to know how to invoke the hll compiler. the way it is now it just compiling pir to pbc which won't work | |||
| i can't just use the hll generated pbc b/c the debug segment does not contain some type of "source" annotation containing the original source code. the pbc knows nothing about the original source | 01:02 | ||
| which is kinda stupid | 01:03 | ||
| cotto | traditional object code doesn't know anything about the C code that was used to generate it. | 01:04 | |
| soh_cah_toa | w/ debug data compiled in it does | 01:05 | |
| that's how gdb knows the source from the executable | |||
| cotto | brainfail | 01:06 | |
| soh_cah_toa | gsoc has that effect ;) | ||
| dalek | kudo/nom: b6e553a | moritz++ | / (2 files): trim-trailing, trim |
01:10 | |
| tracwiki: v9 | soh_cah_toa++ | HBDBPlanning | 01:11 | ||
| tracwiki: Started schedule | |||
| tracwiki: trac.parrot.org/parrot/wiki/HBDBPla...ction=diff | |||
| soh_cah_toa | needless to say, i don't see how to solve this in a logical way other than a really hacky `if (.p6) { system(perl6); } else if (.lua) { system(lua) } ...`` | 01:14 | |
| which would be really ugly and...bad | 01:15 | ||
| cotto | Don't worry too much about it. | ||
| soh_cah_toa | uh, well then how do i run anything. given a p6 file, how would i compile it so it can be executed | 01:16 | |
| i mean, it isn't exactly something i can just ignore | 01:17 | ||
| cotto | long-term, no. Between now and the hard pencils down date, perhaps. | 01:20 | |
| soh_cah_toa | so i guess i should just make sure that the source file *and* generated bytecode are both in the cwd? load source as text for 'list' command but run bytecode? | 01:22 | |
| cotto | I can't think of anything better, but my brain's in a questionable state atm. | 01:28 | |
| soh_cah_toa | ok :\\ | ||
| actually, docs/parrotbyte.pod says that there is a source code segment but that "currently there are no utilities that use this segment, even though it is mentioned in some of the early Parrot documents". does this mean that it's there and actually contains the original source but just that nothing really uses it yet or that it literally doesn't exist? | 01:32 | ||
| cotto | curious | 01:35 | |
| I don't remember having seen that before. | 01:36 | ||
| soh_cah_toa | also, pdd13 mentions that a "default segment" can be used for storing hll source code. then i look at compilers/imcc/main.c and it reads `pf_raw->cur_cs = Parrot_pf_create_default_segments(imcc->interp, packfilepmc, source, 1);` | 01:40 | |
| cotto | interesting | ||
| soh_cah_toa | indeed | ||
| ah man, that would be great. i'll have to ask whiteknight about this | 01:41 | ||
| cotto | you can just poke around a pbc file with hexedit | 01:42 | |
| soh_cah_toa | oh yeah, good idea | 01:43 | |
| cotto | or you can add a printf to that bit of code to see what it's stuffing into the pbc file | ||
| soh_cah_toa | also good idea | 01:44 | |
| dalek | kudo/nom: d601bb0 | moritz++ | / (3 files): Cool.trim, Str.words, run words.t |
01:45 | |
| kudo/nom: 5b9a992 | moritz++ | NOMMAP.markdown: note state of Whatever-currying |
|||
| kudo/nom: 30a9776 | moritz++ | src/core/Any.pm: generalize .[Whatever] case to .[Callable] |
|||
| kudo/nom: 4a50e0a | moritz++ | / (4 files): put CallFrame back into place |
|||
| rrot/tt2007/html_links: 8402064 | jkeenan++ | docs/glossary.pod: Trimmed section on predereferencing (as long advised in POD 'for' section). |
01:50 | ||
| cotto | soh_cah_toa, looks like that's just the filename | 01:51 | |
| soh_cah_toa | damn | ||
| had my hopes up :( | |||
|
01:54
woosley joined
|
|||
| dalek | rrot/soh-cah-toa/hbdb: e6f5dd4 | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm: Wrapped call to can_read() inside a while loop in Parrot::Test::HBDB. Now all tests finally pass. |
02:20 | |
| rrot/soh-cah-toa/hbdb: 03d2954 | soh_cah_toa++ | docs/hbdb.pod: Added explanation of new commands to docs/hbdb.pod. Now all commands are documentated. |
|||
| rrot/soh-cah-toa/hbdb: c0f297d | soh_cah_toa++ | / (2 files): Refactored duplicate code in Parrot::Test::HBDB into _select(). Also modified regex for 'help' test in cmds.t so that all tests pass. |
|||
|
02:21
rdesfo joined
02:37
daniel-s joined
|
|||
| dalek | rrot/nqp_pct: 66ba4bb | benabik++ | compilers/pct/src/PCT/HLLCompiler.pir: PCT::HLLCompiler - create new PAST::NewCompilers It uses object attributes, so has to be reinitialized for each compilation. |
02:40 | |
| rrot/nqp_pct: b11812c | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files): PAST::Compiler - don't add return to empty blocks This ended up with a POST::Op(undef, :pirop<return>) in the POST tree, which confused poor POST::PBCCompiler. |
|||
| rrot/nqp_pct: bb13121 | benabik++ | t/compilers/pct/newpast.t: newpast.t - make basic_tests simpler Test for slightly less details and do less debugging output. Also, test empty block instead of a block with value. |
|||
| rrot/nqp_pct: a386a03 | benabik++ | t/compilers/pct/newpast.t: newpast.t - Test returning a variety of values |
|||
| benabik | Next step: PAST::Val so I can maybe get t/compilers/pct/complete_workflow.t to also test generating bytecode. | 02:42 | |
| dalek | kudo/nom: ad24903 | Coke++ | t/spectest.data: run more fudged tests/track failures |
03:10 | |
| rrot/soh-cah-toa/hbdb: bfbe1a5 | soh_cah_toa++ | t/tools/hbdb/testlib/hello.pir: Added more advanced PIR file to testlib so that new features can be tested. |
04:18 | ||
| rrot/soh-cah-toa/hbdb: 056078a | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm: Changed cmd_output_is() to use Test::Builder->is_eq() because is() doesn't exist. Also removed _generate_pbc() since HBDB uses PIR now. |
|||
| rrot/soh-cah-toa/hbdb: 5870b16 | soh_cah_toa++ | / (2 files): Added test for 'list' command but doesn't pass yet. Tried to filter out welcome message with a regex but it doesn't quite work. |
|||
|
04:21
rdesfo joined
|
|||
| dalek | rrot/m0-spec: d02371e | cotto++ | docs/pdds/draft/pdd32_m0.pod: add clarification about copy_mem and GC |
05:28 | |
|
05:48
fperrad joined
|
|||
| cotto | aloha, clock? | 05:55 | |
| aloha | cotto: LAX: Sun, 22:55 PDT / CHI: Mon, 00:55 CDT / NYC: Mon, 01:55 EDT / UTC: Mon, 05:55 UTC / LON: Mon, 06:55 BST / BER: Mon, 07:55 CEST / TOK: Mon, 14:55 JST / SYD: Mon, 15:55 EST | ||
|
06:36
SHODAN joined
07:12
contingencyplan joined
07:20
dodathome joined
07:58
mj41 joined
08:16
moritz joined
|
|||
| dalek | kudo/nom: 95e209b | moritz++ | t/spectest.data: run (heavily fudged) hyper.t |
09:37 | |
|
09:53
jsut joined
|
|||
| dalek | kudo/nom: 3ea71cf | moritz++ | / (2 files): add missing :Ds to EnumMap, start with EnumMap.ACCEPTS |
10:26 | |
|
11:00
lucian joined
11:01
mj41 joined
|
|||
| atrodo | =~ | 11:41 | |
| tadzik | ACCEPT() | 11:52 | |
| moritz is glad that REJECTS is gone | 11:53 | ||
|
12:08
rdesfo joined
12:10
whiteknight joined
12:19
PacoLinux_ joined
12:36
ingy joined
|
|||
| dalek | kudo/nom: 169baab | moritz++ | src/core/EnumMap.pm: handle non-Str case of EnuMap.exists |
12:39 | |
| kudo/nom: b4296cb | moritz++ | src/core/Match.pm: Match.ACCEPTS |
|||
| whiteknight | good morning, #parrot | 12:51 | |
| tadzik | good afternoon, whiteknight | ||
| whiteknight | hello tadzik, how are you doing? | 12:52 | |
| tadzik | good. I got a new bike today :) | ||
| how is your housing stuff? | |||
|
12:53
bluescreen joined
|
|||
| bubaflub | ~ | 12:58 | |
| tadzik | ~~ | ||
| whiteknight | tadzik: miserable. The whole deal fell through sunday morning, and now we have no house | ||
| tadzik | what? | ||
| what do you mean, the deal fell? | 12:59 | ||
| whiteknight | so we're going to go out and buy voodoo dolls shaped like the sellers and the realtor, and stick needles into them | ||
| the sellers wanted more money than the house appraised for, and we couldn't mortgage more than the appraisal value. So, with no other options, we had to walk away from it | |||
| tadzik | shit | 13:01 | |
| whiteknight | yeah. We got the call on sunday morning, so we scrapped all our plans and went out looking at houses for the rest of the day. Actually found some good ones we might be interested in | 13:02 | |
| atrodo | whiteknight> I'm sorry to hear that. That's no fun at all | 13:03 | |
| tadzik | yeah | ||
| aloha: going to yapc::eu? | |||
| aloha | tadzik: No clue. Sorry. | ||
|
13:14
PacoLinux_ joined
13:34
Coke joined
13:56
contingencyplan joined
13:57
JimmyZ joined
14:17
particle joined
|
|||
| dalek | kudo/nom: 38be712 | jonathan++ | src/Perl6/Metamodel/RoleToRoleApplier.pm: Avoid a bunch of work when the role to role applier has an empty list of roles to apply. |
14:22 | |
| kudo/nom: f2aabfa | jonathan++ | src/Perl6/Metamodel/RoleTo (2 files): Avoid some (weird, hard to nail down) circularity issue in getting method names (we can't always do .name as NQP methods are Parrot subs, which we need to stringify...) |
|||
| kudo/nom: 8fd1a35 | jonathan++ | src/core/Submethod.pm: Add missing Submethod.pm. |
|||
| kudo/nom: e0867f0 | jonathan++ | / (3 files): Start to port over socket stuff from master. This doesn't quite work yet, but builds. Also will need to fix up packages. |
|||
|
14:26
lucian_ joined
|
|||
| dalek | kudo/nom: 99f5ce9 | moritz++ | / (2 files): first attempt to put MAIN back, tadzik++ did lot of the early work |
14:47 | |
| tadzik | woo, that's a hell simplier than it was | 14:49 | |
| moritz++ | |||
| dalek | kudo/nom: 429a183 | pmichaud++ | src/core/ (3 files): Some hyper metaop and hash updates. |
15:04 | |
|
15:06
lucian__ joined
15:16
rdesfo joined
15:24
mj41 joined
15:29
darbelo joined
15:34
nbrown joined
|
|||
| dalek | kudo/nom: ac51b44 | moritz++ | src/Perl6/Actions.pm: remove superfluous $MAIN lexical |
15:41 | |
|
16:13
jaffa4 joined
|
|||
| jaffa4 | hi | 16:13 | |
| where can I see what operations are supported by pir? | |||
| tadzik | check out a list of opcodes on docs.parrot.org | ||
| jaffa4 | In particular, how can I use exr? | 16:14 | |
| In particular, how can I use xor? | |||
| tadzik | that'd be docs.parrot.org/parrot/latest/html/...t.ops.html | ||
| jaffa4 | | and & seems to be working too | 16:15 | |
| And they are not mentioned there. | |||
| bubaflub | jaffa4: what about bxor? | ||
| (bottom of that page) | 16:16 | ||
| whiteknight | | and & are just syntax for the or and and operators | ||
| jaffa4 | So I is not bitwise | ||
| So | and & are not bitwise | |||
| whiteknight | oh, wait, bor and band, maybe | ||
| I don't know what they translate to | |||
| jaffa4 | they are bitwise, I jsut tested them | 16:18 | |
| whiteknight | okay, so then it's bor and band opcodes | 16:27 | |
|
16:36
TiMBuS joined
|
|||
| jaffa4 | Does anyone use parrot for anything? | 16:37 | |
| tadzik | yes, I use it daily :) | ||
| for developing the Perl 6 compiler | |||
| jaffa4 | yes, perl 6, I forgot | ||
| I mean for real life stuff. | 16:38 | ||
|
16:38
theory joined
|
|||
| lucian | jaffa4: for end-user stuff? likely not | 16:39 | |
| tadzik | how do you define real life stuff? Parrot users are compilers implementors | ||
| lucian | fwiw, i'm also writing a compiler | 16:40 | |
| tadzik | jay++ now writes an R compiler targetting Parrot | ||
| jaffa4 | so am I. | ||
| ok, so who uses the compilers which use Parrot? | 16:41 | ||
| tadzik | a plenty of people use Rakudo. I don't about NQR | ||
| most of them are in the early stages of development, that's true | 16:42 | ||
| or just not quite popular | |||
| oh, plenty of Parrot people use winxed | |||
| jaffa4 | what is winxed? | ||
| tadzik | a language syntactically similar to Javascript | 16:43 | |
| lucian | a sane parrot low-level language | ||
| tadzik | winxed.org/ | ||
| jaffa4 | ok | 16:44 | |
| how is number conversion done in pir? | 16:57 | ||
| whiteknight | jaffa4: What kind of number conversion? | ||
| jaffa4 | number to int, int to number. | ||
| cotto_work | ~~ | 16:58 | |
| whiteknight | $I0 = $N0, $N0 = $I0, etc | ||
| jaffa4 | string to int, int to string | ||
| number to string | |||
| whiteknight | all the register types autoconvert between themselves | ||
| except PMCs, which you need to use the box opcode for | |||
| for string conversions, there is also an sprintf opcode for detailed formatting to string | 16:59 | ||
| jaffa4 | but this is not ok:$I2=$I0 * $N1 | 17:00 | |
| whiteknight | PIR is an assembly language, you have to break that up into individual operations | ||
| jaffa4 | ok | 17:01 | |
| whiteknight | actually, wait. I think that should work | ||
| benabik | o/ | ||
| jaffa4 | -->>> error:imcc:The opcode 'mul_i_i_n' (mul<3>) was not found. C | ||
| whiteknight | okay, we must not have that variant | ||
| cotto_work | seen soh_cah_toa | ||
| aloha | soh_cah_toa was last seen in msg 12 hours 41 mins ago <private message>. | ||
| whiteknight | I would do something like $N2 = $I0 * $N1 \\n $I2 = $N2 | 17:02 | |
| jaffa4 | ok | 17:05 | |
|
17:05
rdesfo joined
|
|||
| dalek | kudo/nom: 9ca7ef7 | moritz++ | / (3 files): partially put back Temporal |
17:12 | |
|
17:29
bubaflub joined
|
|||
| dalek | kudo/nom: ff8d46f | tadzik++ | src/Perl6/ (2 files): Implement a default DOC INIT phaser |
17:30 | |
|
17:34
Coke joined
|
|||
| dalek | kudo/nom: c49a3c9 | pmichaud++ | src/core/ (2 files): Re-enable hyperop assignment metaops. |
17:55 | |
|
17:58
dmalcolm joined
18:08
bluescreen joined
|
|||
| dalek | kudo/nom: 362dac2 | jonathan++ | src/Perl6/Grammar.pm: Prevent scope leakage, which caused my module Foo { constant Bar = 42 } to end up declaring the constant my scoped. |
18:28 | |
| kudo/nom: e76d280 | jonathan++ | src/Perl6/SymbolTable.pm: Make a comment more accurate. |
|||
| kudo/nom: 98408a8 | jonathan++ | src/core/IO/Socket/INET.pm: Get socket IO working again, or at lesat enough for it to do a HTTP request and get the result. |
|||
|
18:37
soh_cah_toa joined
|
|||
| soh_cah_toa | ~~ | 18:37 | |
| tadzik | hello soh_cah_toa | 18:38 | |
| soh_cah_toa | tadzik: hey | ||
| cotto_work | hi soh_cah_toa. I'm about to grab some lunch, but let's talk about GSoC a little later in the day. | 18:43 | |
| soh_cah_toa | cotto_work: sure | 18:44 | |
| whiteknight | soh_cah_toa: I got your message | 18:46 | |
| soh_cah_toa | whiteknight: good | ||
| whiteknight | I didn't think GDB uses source code listings inside the object file, gdm finds the source file and loads it up separately | 18:47 | |
| that's why if you edit a file while you're running GDB, you'll get a warning about the source being newer than the binary | |||
| if the HLL code has a "file" annotation, you can load it separately | |||
| soh_cah_toa | hm, that's an idea | ||
| well, there's a few things i've been considering | 18:48 | ||
| whiteknight | if I do winxed -o foo.pir foo.winxed, it will contain .annotation "file", "foo.winxed" | ||
| Where you might stumble is in trying to run hbdb from a different directory, in that case the hlls really need to include full path information, not just relative path | |||
| soh_cah_toa | right | 18:49 | |
| whiteknight | or, have some kind of command in hbdb to specify search locations | ||
| soh_cah_toa | well, i'm actually sending an email to parrot-dev now. i think parrot really needs a *real* debug segment. something comparable to dwarf | ||
| i'd like to work on that post-summer w/ some people | |||
| i mean, the debug segment now is just so poor | 18:50 | ||
| i've been reading the dwarf specification and i think using it as a model would be very beneficial | |||
| whiteknight | okay, I like that idea | ||
| you're right, the current debug segment basically only contains a mapping of pc->line_number | 18:51 | ||
| soh_cah_toa | yeah, and it sucks big time :) | ||
| needless to say, i would love to have your help w/ that after the pencils down period | 18:52 | ||
|
18:52
dmalcolm joined
|
|||
| whiteknight | having that kind of information available might also help other efforts, like post-facto optimizations and tracing JIT | 18:52 | |
| soh_cah_toa | indeed | 18:53 | |
| whiteknight | also, other analysis tools | ||
| soh_cah_toa | yes, profiling/benchmarks and such | ||
| whiteknight | I have in mind a tool for doing complexity analysis in a language-agnostic way. | ||
| soh_cah_toa | well, good. i'm glad i have you on my side ;) | 18:54 | |
| whiteknight | I always felt like Parrot instrument would have been such an awesome basis for this kind of work, but unfortunately it got so damn broken | 18:55 | |
| soh_cah_toa | yeah | 18:56 | |
| whiteknight | What if we had something like a CodePointer PMC, which contained a Packfile reference and a pc value, and had interface methods to retrieve information about each opcode from the packfile | ||
| and a runcore which, either for all ops or only at certain breakpoints, created a CodePointer and passed it to a callback for control and analysis? | 18:57 | ||
| soh_cah_toa | not a bad start | ||
| whiteknight | with that basis, the only thing you are limited by is the introspection methods on CodePointer, PackfileView, and related objects | ||
| soh_cah_toa | right | 18:58 | |
| whiteknight | I had also kicked around the idea, long ago, of having runcores themselves be PMCs, with state and methods | ||
| so in PIR we could do something like interp["runcore"] = $P0 to set a new one | |||
| then $P0.break() | |||
| or $P0.step() or $P0.run() | |||
| etc | 18:59 | ||
| soh_cah_toa | hmm...interesting | ||
| whiteknight | this is just an unbounded brainstorm | 19:00 | |
| soh_cah_toa | one of the things that i'd need someone like you to help w/ is identifying what stages during hll compilation the debug info is generated and where it gets hll related info since i'm not that familiar w/ that | 19:01 | |
| whiteknight | IMCC populates the debug segment during PIR compilation, and it only really contains information about the PIR file or PIR snippet being compiled | ||
| HLLs would output .annotation directives into the PIR stream during HLL->PIR compilation | |||
| so the two are basically completely separate | 19:02 | ||
| soh_cah_toa | yes | ||
| i think it's the hll data that should populate the debug segment though | |||
| whiteknight | I don't know how we would get it there, and I'm not sure we want that anyway | 19:03 | |
| the annotations segment does contain all that juicy HLL line-mapping information, and is newer and more shiney | 19:04 | ||
| so maybe the solution is, if possible, to skip the debug segment and read out the annotations segment directly | |||
| soh_cah_toa | yeah, just (poor) line-mapping though | ||
| well, imagine a p6 user wanting to use hbdb. wouldn't it make more sense to debug his p6 file rather than the generated pir? | 19:05 | ||
| whiteknight | yeah, that's why we do it through the annotations segment instead | ||
| however you look at it, the two are going to have different semantics. Debugging PIR with no annotations is going to be far different from debugging HLL with annotations | |||
| so we need to pick one or the other, or we need an abstraction layer that lets us handle both | 19:06 | ||
| soh_cah_toa | hm, right | ||
| whiteknight | for the purposes of your project, I suggest you stick with just .annotate and HLLs | ||
| I suspect that would be easier to do | |||
| soh_cah_toa | well, i've found that even annotations are quite inaccurate and weird. let me nopaste an example | 19:07 | |
| whiteknight | is that because the HLL compiler is outputting bad annotations, or because the annotations are being stored/retrieved incorrectly? | ||
| soh_cah_toa | the former, i think | 19:08 | |
|
19:08
Eclesia joined
19:09
rdesfo joined
|
|||
| Eclesia | hi | 19:09 | |
| nopaste | "soh_cah_toa" at 192.168.1.3 pasted "NQP Annotations" (158 lines) at nopaste.snit.ch/68657 | ||
| whiteknight | hello Eclesia | ||
| soh_cah_toa | notice how the order of annotations is 0, 9, 15, 21 then back 1, 3, 4, 5... | 19:10 | |
| benabik | soh_cah_toa: That's because it sets up the lexical structure of the subs prior to running the rest of the code. | 19:11 | |
| You cannot assume that lines are run in order because the tree often gets rearranged. | |||
| soh_cah_toa | so how could i do a "run to main" using annotations? | ||
| or just start at the very first line of the file | 19:12 | ||
| containing code, that is | |||
| whiteknight | main would be the very first line of the file | ||
| *unless* there is PIR compilation involved | |||
| soh_cah_toa | there's two line 1 annotations though | ||
| benabik | soh_cah_toa: Only one 0. :-D | ||
| whiteknight | IMCC executes certain ops as part of it's optimizations suite | ||
| benabik: if it's a function you want to catch, a good bet would be to break in the runloop when an invokecc, invoke, methodcallcc or tailcall op are executed | 19:13 | ||
| when one of those ops comes down the pipeline, you can check the PMC being invoked, get its name, and compare to what you are looking for | 19:14 | ||
| it's a little bit ugly, but very direct | |||
| alternatively, convince the HLL people to output a new "substart" annotation, or something similar | |||
| soh_cah_toa | uh, what are those ops? | ||
| whiteknight | those are the ops that perform invokation. invokecc and methodcallcc are the most common | 19:15 | |
| of course, :main gets called by the frontend, so until I merge my new branch you can't use that for main | |||
| benabik | Fun fact: NQP doesn't generate a main function… It uses :load :init for the mainline code. | ||
| whiteknight | yeah, I think your best bet is to get HLL authors to output a 'sub' annotation that is in effect for the duration of any sub | ||
| soh_cah_toa | benabik: yeah, was just gonna say that | 19:16 | |
| whiteknight | once whiteknight/frontend_parrot2 merges, it won't matter anymore | ||
| but that could still be weeks away at this rate | |||
| soh_cah_toa | i'm not sure i follow, how would invokecc() or methodcallcc() (whatever those things do) indicate that this is the start of the file? | 19:17 | |
| whiteknight | soh_cah_toa: I thought you were talking about the start of a subn | ||
| sub | |||
| soh_cah_toa | oh no | ||
| whiteknight | okay, you can still do an annotation-based approach | ||
| while (!STRING_equal(interp, current_annotations["file"], "myfile.whatever")) { ... just run ... } {Oh, looks like we are in myfile.whatever!} | 19:18 | ||
| that is obviously a very rough approximation | 19:19 | ||
| soh_cah_toa | but that brings me back to the problem before. how can i ignore all the lexical sub initialization and have it appear to the user that we are starting at `say('Starting at line 3');` the first thing in the hll file | 19:20 | |
| whiteknight | that's what I'm talking about with a new "sub" annotation | ||
| and why ignore lexical sub initialization? That's part of the runtime behavior of the program being debugged | 19:21 | ||
| we want to see that | |||
| benabik | +1 | ||
| soh_cah_toa | i know, i meant have it invisible to the user | ||
|
19:21
rdesfo joined
|
|||
| whiteknight | don't make it invisible to the user | 19:21 | |
| make it extra visible | |||
| double-extra visible | |||
| cotto_work | blink tags? | ||
| whiteknight | I was thinking <marquee> | 19:22 | |
| style="font-size: x-large; color: #FF0000;" | |||
| cotto_work may need to backscroll | |||
| whiteknight | soh_cah_toa: if the HLL has semantics about loading and setup and stuff, that's part of the language and can't really be ignored | 19:23 | |
| ordering and details of that setup code may very well be a big part of what needs to be debugged anyway | |||
| soh_cah_toa | yeah | ||
|
19:24
Coke joined
|
|||
| whiteknight | I wasn't aware of the fact that NQP doesn't use :main. That seems...wrong to me | 19:24 | |
| cotto_work | soh_cah_toa: don't focus too much on features you can't implement between now and the hard pencils down date. As soon as that date passes you can go nuts (though you'll be evaluated on what was done as of pencils down). | 19:25 | |
| whiteknight | and the more nuts you go, the more we are going to need you to work in the IMCC insanity mines | ||
| cotto_work | seen notfound | 19:26 | |
| aloha | notfound was last seen in #parrot 23 hours 6 mins ago saying "soh_cah_toa: mmmmmm.... Apple money? ;)". | ||
| soh_cah_toa | yeah i know, it just makes me upset that w/o something like a real debug segment, hbdb is just gonna rot like that old debugger. it's hardly a practical tool | 19:27 | |
| and i want to fix that after gsoc | |||
| whiteknight | the value of gsoc is determined in part by what we learn from it | 19:29 | |
| my GSOC project was a dismal failure if you count the number of actual lines of working code it contributed to parrot master | |||
| soh_cah_toa | i know. i do want people to actually use it though | ||
| whiteknight | but in terms of the lessons learned, it was invaluable | ||
| we have two choices: Have something that works, or learn enough that we can make something that works | 19:30 | ||
| soh_cah_toa | i think that latter is true in my case | ||
| whiteknight | if what we learn is how to do debug segments and annotation segments correctly, that's invaluable | ||
|
19:31
Coke joined
|
|||
| whiteknight | I suspect that what we are going to end up with in the far future is a debugger written in an HLL and running on top of Parrot | 19:31 | |
| soh_cah_toa | yeah, i just hope it can become a real roadmap goal for parrot | ||
| whiteknight | if we have an implementation of a runloop written in PIR, that's the first step in that direction, and I suspect it won't be too hard | 19:32 | |
| bacek had something like that a while back, and I have a very good idea about how to do it myself | |||
| once we have that, we can directly port most of HBDB to PIR or better | |||
| And we can name it "HBDB2: Soh_cah_toa's revenge" | 19:33 | ||
| soh_cah_toa | ew, no way am i writing a debugger in pir | ||
| ha! | |||
| whiteknight | what we are going to need, in the long run for any debugger is a sane API for interacting with the debug and annotation segments of a packfile | 19:35 | |
| soh_cah_toa | yes | ||
| whiteknight | So as you are picking your way through getting that information, start taking mental notes about what functions you wish we had | ||
| and, don't hesitate to write them yourself, or ask me to write them | |||
| because we do need them no matter what | |||
| cotto_work | alternately, kidnap a gdb hacker | 19:36 | |
| soh_cah_toa | cotto_work: i tried a long time ago :) | ||
| whiteknight | and hit him with a sock full of bytes and bad dreams | ||
| soh_cah_toa | cotto_work: they're not friendly...enthusiastic...over there :( | ||
| s/friendly/very/ | |||
| cotto_work | soh_cah_toa: where do they hang out? | ||
| Eclesia | anyone used anykind of archive pmc for read AND write succesfuly ? | ||
| soh_cah_toa | cotto_work: the #gdb channel i think on freenode | 19:37 | |
| cotto_work | nm. can find that myself. | ||
| and my first guess would have been correct | |||
| yes | |||
| soh_cah_toa | i've been going through the dwarf spec and i definitely think i can start a "this is what we need" gist | 19:38 | |
| but first... | |||
| whiteknight | Eclesia: not that I know of | ||
| soh_cah_toa | cotto_work: did you see my message about the tests? | ||
| whiteknight | Eclesia: The archive PMCs were created to help submitting smoke reports. I don't know if they were ever used much beyond that | 19:39 | |
| Eclesia: We do need to maintain them better | |||
| cotto_work | soh_cah_toa: I'll take a look now. | ||
| soh_cah_toa | ok | ||
| cotto_work | soh_cah_toa: which tests fail on your machine? I'm getting empty output for the first cmds.t test. | 19:43 | |
|
19:44
M_o_C joined
|
|||
| soh_cah_toa | cotto_work: they all do but now w/ empty output. i'll nopaste | 19:44 | |
| nopaste | "soh_cah_toa" at 192.168.1.3 pasted "HBDB Failed Tests" (57 lines) at nopaste.snit.ch/68662 | 19:45 | |
| cotto_work | soh_cah_toa: any unpushed changes? | 19:46 | |
| soh_cah_toa | nope | ||
| Eclesia | rah, those pod coments are hell. how is the stupid guy who invented doc blocs with =stuff ... | 19:51 | |
| whiteknight | Eclesia: I agree | ||
| soh_cah_toa concurs | 19:52 | ||
| tadzik concurs too | 19:53 | ||
| it's very nice to =comment the whole big block in one go | |||
| but I implemented all these, so I may be biased :) | 19:54 | ||
| Eclesia | it's unreadable. if someone adds demo code in a comment block, we can't make the difference between what is doc and what is reall code . | ||
| whiteknight | if I could go back in time and make Parrot not rely on POD for documentation, I would | 19:55 | |
| soh_cah_toa | yes! thank you! | ||
| whiteknight | but it's not something to cry about now. We aren't going to change thousands of lines of pod documentation for no good reason | 19:56 | |
| Eclesia | make a small pir parser in pir to replace old pod coment by new ones ;) | ||
| whiteknight | we're kind of stuck with it | ||
| tadzik | Eclesia: then you have shitty syntax hilighter | ||
| Eclesia | tadzik: I don't even have a syntax hilighter ! I didn't found anything to handle any of parrot syntaxes correctly so far | 19:57 | |
| tadzik | really? I thought they're even shipped with parrot (for vim at least) | ||
| Eclesia | best I have is javascript syntax highlighter from netbeans with winxed | ||
| tadzik | I see | ||
| Eclesia | vim ... | ||
| whiteknight | I have a basic winxed highlighter for gtkSourceView2.0 | 19:58 | |
| ...which I need to update | |||
| cotto_work | soh_cah_toa: if I comment out the two "next if..." statements, I get 3 passing tests. | 20:00 | |
| er, 2 passing tests and one failing | 20:01 | ||
|
20:01
bluescreen joined
|
|||
| soh_cah_toa | yeah, that's odd | 20:01 | |
| i added those regexes b/c i was getting the welcome message in the output but after removing them it doesn't appear anymore | 20:02 | ||
| eh, whatever | |||
| tadzik | Eclesia: what you're coding in? | 20:03 | |
| Eclesia | tadzik: my primary language is Java | ||
| tadzik | oh, I mean the editor | 20:04 | |
| Eclesia | tadzik: netbeans mostly, nano when on a distant server | ||
| leafpad sometimes too | |||
| tadzik | I see | ||
| whiteknight | I've never tried leafpad. Any good? | 20:06 | |
| Eclesia | whiteknight: lighter then gedit. boots nearly instantly | 20:07 | |
| I work with LXDE desktop ... even if I have a quad core and more memory then necessary ^^ | 20:08 | ||
| tadzik | heh. I have 2 GBs on KDE, while Rakudo compilation needs 1.3 GBs | ||
| cotto_work | rakudo feature: takes less memory than kde | 20:10 | |
| tadzik | no, not really :) | ||
| but I almost cannot have both chromium and Rakudo compilation running | |||
| I probably need to buy another 2GBs | 20:11 | ||
| the times. They are a'changin | |||
| I remember when my desktop needed 40 MBs | 20:12 | ||
| cotto_work | and the bits weighed 5 pounds and you had to carry them through snow uphill, both ways? | 20:14 | |
| tadzik | no, I'm still too young for that :P | 20:15 | |
| Eclesia | hourray ! finally write an archive | 20:19 | |
| tar ... well it's not compressed but at least it's an archove | |||
| now , how can i read it ...... | 20:20 | ||
| I someone knows that would help | 20:22 | ||
| dalek | website: benabik++ | GSoC 11: Breaking Radio Silence | 20:24 | |
| website: www.parrot.org/content/gsoc-11-brea...io-silence | |||
|
20:32
Eclesia left
21:33
rdesfo joined
21:44
Psyche^ joined
22:01
kid51 joined
22:09
kid51 joined
|
|||
| kid51 | ~~ | 22:25 | |
| cotto_work | hio kid51 | 22:34 | |
| Felipe | aloha devs | ||
| kid51 | cotto_work: Are you going to YAPC::EU? | 22:41 | |
| cotto_work | kid51: yup | 22:44 | |
| kid51 | aloha, going to YAPC::EU? | ||
| aloha | kid51: Sorry, I don't know. | ||
| kid51 | aloha: going to YAPC is cotto | ||
| aloha | kid51: Okay. | ||
| kid51 | cotto_work: Are you going to YAPC::EU? | ||
| aloha, going to YAPC::EU? | |||
| aloha | kid51: I give up. | ||
| kid51 | aloha, going to YAPC::EU is cotto | ||
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU? | ||
| aloha | kid51: going to YAPC::EU is cotto | ||
| kid51 | Anybody else? | ||
| aloha, going to YAPC::EU is also jnthn | 22:46 | ||
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU is also szabgab | ||
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU is also Maddingue | 22:47 | |
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU is also TimToady | ||
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU is also rurban | 22:48 | |
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU is also pmichaud | ||
| aloha | kid51: Okay. | ||
| kid51 | aloha, going to YAPC::EU? | ||
| aloha | kid51: going to YAPC::EU is cotto or jnthn or szabgab or Maddingue or TimToady or rurban or pmichaud | ||
| kid51 | [names taken from yapceurope.lv/ye2011/schedule/] | 22:49 | |
| aloha, YAPC::EU::2011 | 22:50 | ||
| aloha, YAPC::EU::2011? | |||
| aloha | kid51: YAPC::EU::2011 is yapceurope.lv/ye2011/ | ||
| kid51 | nice bot | ||
|
22:53
rdesfo joined
|
|||
| nopaste | "kid51" at 192.168.1.3 pasted "Pace of GSOC blogging on parrot.org has slackened" (6 lines) at nopaste.snit.ch/68743 | 22:55 | |
|
23:02
PacoLinux_ joined
23:10
darbelo joined
23:13
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 23:16 | |
| soh_cah_toa | howdy | ||
|
23:18
PacoLinux_ joined
|
|||
| whiteknight | soh_cah_toa: okay, so let me get my mind out of the clouds for a little bit. What do you need me to do to help you reach the end of GSoC? | 23:20 | |
| dalek | rrot: c70c89c | jkeenan++ | lib/Parrot/Pmc2c/ (2 files): Merge branch 'tt2167/nstore' |
||
| rrot: 8c5cac5 | jkeenan++ | MANIFEST: Add two image files to MANIFEST. |
|||
| benabik | o/ whiteknight | 23:21 | |
| soh_cah_toa | whiteknight: well, at the moment, i'm having some problems w/ my tests. i keep getting the '(hbdb) ' prompt in the output i'm comparing and i can't figure out to get rid of it | ||
| whiteknight | soh_cah_toa: okay | 23:22 | |
| the soh_cah_toa/hbdb branch? Which tests particularly? | |||
| benabik: August 15th is a soft deadline, I think | 23:23 | ||
| soh_cah_toa | s/_/- | ||
| whiteknight | benabik: and you've been writing docs and tests all along, haven't you? | ||
| soh_cah_toa | t/tools/hbdb/cmds.t | ||
| whiteknight | soh_cah_toa: roger. On it. Over | ||
| soh_cah_toa | 10-4 | ||
| aloha | 6 | ||
| benabik | whiteknight: Basically, yes. Should probably write a guide to using it. | ||
| soh_cah_toa | ha! thanks aloha | ||
| whiteknight | benabik: guide++ | 23:24 | |
| benabik++ | |||
| kid51 | Write a guide with steps 1-2-3... so specific that even kid51 can understand it :-) | ||
| like docs/project/release_manager_guide.pod | |||
| hbdb for dummies | 23:25 | ||
| benabik | My guide will probably go: "To avoid PIR, do this. These things are known not to work. CAUTION: Minefield ahead." | 23:26 | |
| whiteknight just learned that gnome terminal has tabs | 23:27 | ||
| whiteknight has become incredibly happy about that | |||
| soh_cah_toa: okay, I see the failures | 23:28 | ||
| soh_cah_toa | ok | ||
| whiteknight | I wish these tests weren't written in perl | 23:33 | |
| my incompetence is more obvious in perl | 23:34 | ||
| soh_cah_toa | ah... | ||
| whiteknight | soh_cah_toa: the readline_interactive method of the FileHandle PMC prints the prompt string to stdout | 23:36 | |
| "(hbdb)" | |||
| so the prompt is ending up on stdout and being picked up by the pipe into perl | |||
| soh_cah_toa | yes | ||
| plus the command entered | 23:37 | ||
| whiteknight | right | ||
| soh_cah_toa | i tried filtering it w/ a regex in _select() but it doesn't seem to help | ||
|
23:39
dafrito joined
|
|||
| kid51 | soh_cah_toa: I like lib/Parrot/Test/HBDB.pm ... | 23:40 | |
| dalek | rrot/soh-cah-toa/hbdb: cb91e5e | Whiteknight++ | t/tools/hbdb/cmds.t: Fix one test, it was an issue with the expected value regex |
||
| kid51 | ... but I don't so much like t/tools/hbdb/cmds.t | ||
| soh_cah_toa | i know :( | ||
| kid51 | Meaning, I like your perl in .pm, but not in .t | 23:41 | |
| I don't see why you are making these calls to subroutines that wrap tests. | |||
| Why not call the tests directly? | |||
| whiteknight | kid51: does help to keep variables neatly scoped | 23:42 | |
| soh_cah_toa | it limits scope and increases encapsulation. also, i figured that was convention b/c i saw it in some other test file | ||
| kid51 | But it's overkill for that. | ||
| You just need blocks | |||
| Lemme show you. | |||
| whiteknight | nooo!!!! | 23:43 | |
| Felipe | :P | 23:44 | |
| nopaste | "kid51" at 192.168.1.3 pasted "No need for subroutines which you only call once, when you can simply use blocks." (35 lines) at nopaste.snit.ch/68764 | 23:45 | |
| kid51 | soh_cah_toa: Which "other test file" did you see that in? (I'll go refactor it right away! :-) ) | 23:46 | |
| soh_cah_toa | t/library/osutils.t | 23:47 | |
| dalek | kudo/nom: af72bd3 | jonathan++ | src/Perl6/ (3 files): Start to improve and clean up package and type installation to fix some bugs and make various things work that didn't before. |
23:49 | |
| kudo/nom: 1701656 | jonathan++ | src/Perl6/Actions.pm: Simplify installation part of constant action method to re-use more SymbolTable code. |
|||
| kudo/nom: 53133a7 | jonathan++ | src/Perl6/SymbolTable.pm: Simplify install_package_symbol; it now need only concern itself with direct, not nested, installation. |
|||
| kudo/nom: 6544695 | jonathan++ | src/Perl6/SymbolTable.pm: Couple of symbol handling fixes. |
|||
| kudo/nom: bf856cd | jonathan++ | src/core/IO/Socket (2 files): Move Socket to be IO::Socket and INET to be IO::Socket::INET. |
|||
| kudo/nom: 918e8c6 | jonathan++ | src/Perl6/ (2 files): Get need in place. Sketch out import, though export is a bit too incomplete for it to really work out yet. |
|||
| kudo/nom: 8863d55 | jonathan++ | t/spectest.data: Run S12-subset/subtypes.t |
|||
| Felipe | benign flood | ||
| :) | |||
| soh_cah_toa will brb | |||
| dalek | rrot/soh-cah-toa/hbdb: a59ebac | Whiteknight++ | lib/Parrot/Test/HBDB.pm: Partial fix. Only read one line per loop iteration. The < > operator reads a new line each time |
23:50 | |
| kid51 | msg soh_cah_toa The subroutines in t/library/osutils.t (like those in many other test files) are PIR subroutines, not Perl 5 subroutines. So they're not a good model for your file. | 23:52 | |
| aloha | OK. I'll deliver the message. | ||