|
Parrot 3.8.0 "Magrathea" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 29 September 2011. |
|||
| benabik | soh_cah_toa: Don't get discouraged. | 00:00 | |
| soh_cah_toa | man, i don't even know where to start b/c our c code is such spaghetti | 00:01 | |
| benabik | Write random docs until someone pokes you about it, then just pick something at random. :-D | 00:04 | |
| plobsing_ | ah, the stochastic coding strategy | 00:06 | |
| soh_cah_toa | well, i already have a full specification. i just need someone who's willing to actually work on it w/ me and point me through the wilderness of parrot's ugly c code ;) | 00:07 | |
| like a tour guide :P | |||
| plobsing_ | soh_cah_toa: so then you aren't interested in doing some self-guided backpacking through souther parrot? | 00:08 | |
| s/souther/southern/ | 00:09 | ||
| soh_cah_toa | i did. all summer | ||
| benabik | It seemed to me that it would just need to interact with PCT, not C. | 00:10 | |
| soh_cah_toa | pct is an even more unknown territory for me | ||
| benabik | It's only PIR! | ||
| soh_cah_toa | the places i really need to be are the actually points where compilation stages change. the exact point past -> post and post -> pir and so on | 00:11 | |
| b/c certain data structures need to be passed down through each | |||
| benabik | PAST->POST is in compilers/pct/src/PAST/Compiler.pir. POST->PIR is compilers/pct/src/POST/Compiler.pir | 00:12 | |
| soh_cah_toa | ok | 00:13 | |
| benabik | You might want to look at the nqp_pct branch and the corresponding .pm files for slightly more readable versions of most functions. | 00:14 | |
| soh_cah_toa | i also have to drown myself in the ocean of imcc to actually write the dde structure to the packfile | 00:15 | |
| a place where there aren't many "tour guides" | 00:16 | ||
| benabik | I'd probably start off with a PMC that stores the data in itself. Use an :immediate sub to store it in the Packfile. | 00:24 | |
|
00:29
logie joined
00:37
logie joined
00:39
contingencyplan joined
00:41
contingencyplan joined
|
|||
| benabik | How to I get Winxed to stop complaining about a class not being found at compile time? I'm loading it via a $load statement. | 00:51 | |
| plobsing_ | You can predeclare a class using "class $name;" syntax | 01:00 | |
| benabik | Ah. Thank.s | ||
| I grabbed it into the file just for more rapid development. | 01:01 | ||
| Is it possible to pass an integer to new in Winxed? The same way PIR does: `new 'Class', $I0` | 01:04 | ||
| Hm. new 'FixedIntegerArray'(size) seems to work. | 01:09 | ||
| Which just looks odd. | 01:10 | ||
| plobsing_ | what's odd about it? | 01:20 | |
| benabik | Looks somewhat like calling a string. Now that I know what it should look like, I understand it. | 01:25 | |
| plobsing_ | new is doing a name-lookup of the class, so using a string is appropriate | ||
| benabik | Winxed doesn't do native (INS) attributes on classes? | 01:27 | |
| plobsing_ | does parrot do that yet? | 01:28 | |
| benabik | I think it does? | ||
| plobsing_ | how do you add a native attribute to a class? | ||
| benabik | No, I was thinking of native lexicals. Bleh. | ||
| 6model has native attributes, but not PMCs. | 01:29 | ||
| plobsing_ | you can abuse the native lexical support to get native attributes | ||
| closures are a poor-man's objects and objects are a poor-man's closures | |||
| but I doubt that would be a good idea | 01:30 | ||
| benabik | That seems "excessively clever" | ||
| dalek | CT: bcd239c | benabik++ | src/disasm.winxed: disasm: Create Packfile class This just handles extracting all the information out of the Packfile PMCs into a more useful format. |
01:53 | |
| CT: e86ad44 | benabik++ | TODO.mkd: Add disasm to TODO |
02:00 | ||
| benabik | I think I now have a winxed file that's just about as useful as pbc_dump. | 02:03 | |
| plobsing_ | orly? perhaps you could replace it? more hosted code = better. | 02:07 | |
| benabik | Maybe⦠I don't have access to _all_ the information. | 02:08 | |
| Although I could (and arguably should) extend the Packfile PMCs. | |||
| I didn't actually have an eye towards replacing pbc_dump. I don't know if I much care about some of the information in it. Constant flags, file offsets, etc | 02:11 | ||
| benabik starts adding get_string() to all the Fixed*Array PMCs that don't have it. | 02:27 | ||
| ⦠FixedPMCArray returns a string containing the number of elements in it. WTF? | 02:29 | ||
| Coke | yah, that's a lovely thing. :P | ||
| benabik | I suppose we can't rely on all the PMCs in it to have a get_string VTABLE? | 02:30 | |
| plobsing_ | as someone who has worked with the PBC format, I have found the file offsets to be useful in reverse engineering pbcs | 02:34 | |
| sorear | benabik: that particular behavior of FPA makes sense from a Perl5 perspective | 02:35 | |
| benabik | sorear: FBA and FSA both print the contents. | 02:36 | |
| sorear | yeah, well, consistency was never Parrot's strong suite. | ||
| benabik | plobsing_: It's not that I don't see the use of it, it just wasn't on the list of things I needed for a disassembler. | 02:37 | |
| It would be somewhat nice to have a way to discover if a PMC implements a given VTABLE without just catching the exception. | 02:39 | ||
| plobsing_ | convenience and expediency over all other considerations (consistency, performance, etc) has often been the tradeoff parrot has made. | 02:41 | |
| benabik: you could write a wrapper | |||
| or, from C check that pmc->vtable->my_vtalbe != Parrot_default_my_vtable | 02:42 | ||
| there's a couple places that do that already IIRC | |||
| benabik | That's probably what I would do if I was rewriting FPA. (which I'm not) | 02:43 | |
| FPA.get_string that is. | |||
| plobsing_ | FPA.get_string() is tricky to implement because you can have loops | ||
| benabik | Oh? Ohhh.. Bleh. | 02:44 | |
| plobsing_ | if you want it to print contents | ||
| benabik | Heh. FPA.get_repr gives the contents. | 02:49 | |
| It doesn't handle loops elegantly. | 02:50 | ||
| And FIA had a get_repr, but not a get_string. | 02:51 | ||
| plobsing_ | benabik: it doesn't appear to handle loops at all. elegance doesn't enter into it. | 03:03 | |
| benabik | plobsing_: It'll handle it. By recursing endlessly. | ||
| plobsing_ | it will blow your stack. that's not how I define "handling it" | 03:04 | |
| benabik | I'm guessing it doesn't get used much. | ||
|
03:09
jkitazawa joined
|
|||
| benabik | A minor win for consistency in Parrot... | 03:51 | |
| dalek | rrot: fccdff0 | benabik++ | / (6 files): Add get_string to Fixed Float and Integer Array Also adds tests for get_string to Boolean and PMC. This makes most Fixed*Array consistent. The exception is FixedPMCArray which prints the number of elements instead of the elements themselves. We may wish to change that, but I simply wanted to add the missing strings to avoid exceptions when printing. |
||
| benabik | And I even ran codetest before committing. :-D | ||
|
03:56
logie joined
|
|||
| dalek | CT: d34eec9 | benabik++ | src/disasm.winxed: disasm: remove special case for FixedIntegerArray Parrot master now has get_string for FIAs |
04:02 | |
| CT: f45d8a1 | benabik++ | src/disasm.winxed: disasm: Escape and quote strings |
|||
| CT: 1c4f3e4 | benabik++ | src/disasm.winxed: disasm: Fix debug filename lookup Debug segment uses get_string_keyed_int to return an integer index for the string constant filename and get_pmc_keyed_int to return an integer line number. How could I possibly have gotten those confused? |
|||
| benabik | I wonder where that empty string constant is coming from. Eh. | 04:03 | |
| dalek | CT: 8f47fce | benabik++ | src/disasm.winxed: disasm: Don't get an integer type An exception message of 67 isn't very useful compared to "Unknown bytecode segment type: PackfileAnnotations" Next up: Read annotations! |
04:12 | |
| soh_cah_toa | annotations...bleh :S | 04:13 | |
| benabik | soh_cah_toa: They exist, so I'm not going to ignore them. | 04:14 | |
| dalek | CT: 7e20aa4 | benabik++ | src/disasm.winxed: disasm: Prefer ++i over i++ If you're not using the return value, postfix ++ just involves pointless extra work. Perhaps this is a minor style nit, but once I noticed I was doing it, it drove me crazy. |
04:26 | |
| CT: 18359f0 | benabik++ | src/disasm.winxed: disasm: Handle annotations Two minor nits: - I'm just hanging onto the PackfileAnnotation object Generally, I'm trying to get away from Packfile* PMCs - There seems to be no way to determine what type the value has. It probably throws an exception on the wrong one, but blah. |
|||
| CT: 871285e | benabik++ | src/disasm.winxed: disasm: Use PMC, not pmc, on output |
04:28 | ||
| benabik | I should really sleep. | 04:29 | |
| dalek | kudo/nom: f25b3b9 | moritz++ | src/core/ (2 files): use native ints in the setting |
05:05 | |
|
05:07
zpmorgan joined
05:17
jkitazawa joined
|
|||
| dalek | umage/soh-cah-toa/interactive: 091d799 | soh_cah_toa++ | src/ (6 files): Added footer to all .nqp files to set the filetype to 'perl6' in vim. |
05:56 | |
| umage/soh-cah-toa/interactive: d50e99b | soh_cah_toa++ | src/ (6 files): Removed all those annoying double newlines. |
|||
| umage/soh-cah-toa/interactive: 288b6bd | soh_cah_toa++ | src/ (6 files): Added copyright notice to all source files. |
|||
| umage/soh-cah-toa/interactive: 8ed312e | soh_cah_toa++ | src/ (5 files): Fixed subroutine and method definitions so that they don't violate codingstd. |
|||
| umage/soh-cah-toa/interactive: c5167ca | soh_cah_toa++ | / (7 files): * Created Plumage::Command class for representing commands as it will be needed soon by Plumage::Interactive. * Added skeleton for docs/interactive.pod which will describe how to use CLI interface. * Made various code cleanups and added verbosity to inline comments. |
|||
| umage/soh-cah-toa/interactive: 5414a2a | soh_cah_toa++ | src/lib/Plumage/Interactive.nqp: Removed part of CLI welcome message that mentioned 'h' shortcut since I'm not sure I want command shortcuts at first. |
|||
|
07:10
mj41 joined
07:57
lucian joined
08:11
ligne joined
08:48
contingencyplan joined
|
|||
| dalek | kudo/nom: c28552e | (Geoffrey Broadwell)++ | src/core/Main.pm: DWIM better in orig-string role in MAIN_HELPER() In the first snapshot orig-string was too aggressive, and in the second snapshot it was too conservative. This middle ground seems to DWIM better than either extreme did. |
08:53 | |
| kudo/nom: 548e56a | moritz++ | src/core/Range.pm: BUILD should be a submethod |
08:54 | ||
| kudo/nom: ded7222 | moritz++ | tools/build/NQP_REVISION: bump NQP revision |
|||
| mls | morning! | 10:03 | |
| moritz | good morning mls ... though it's nearly lunch time :-) | 10:04 | |
| mls | true ;) | ||
| was "push_pad" et al ever implemented? | |||
| moritz | doesn't seem like | 10:06 | |
| mls | (see the opcode reference in the parrot book) | ||
| moritz runs a grep on git log -p, and so far it hasn't found anything | |||
| mls | oh, good idea to search with log -p! | ||
| moritz | though of course it takes a bit of time to grep through the diff of all changesets in parrot :-) | ||
| mls | (why didn't I think of it? ;) ) | 10:07 | |
| moritz | well, I'm a physicist, of course my first impulse is brute force :-) | ||
| mls | do you think it would make sense to implement something like it to get rid of the sub calls for immediate blocks? | ||
| moritz | I'm not sure what tradeoffs are involved | 10:08 | |
| but I can't possibly be slower than all those calls we do now, due to the frequent block invocations :-) | 10:09 | ||
| mls | The tradeoff seems to be that continuations must also store the current pad | ||
| moritz | and it would probably make find_lex a bit slower, no? | ||
| hm, maybe not | 10:10 | ||
| it doesn't have to look in more locations, just in different ones | |||
| mls | right | ||
| the length of the "outer" chain stays the same | |||
| moritz | sounds like something you should discuss with <jnthn whiteknight plobsing pmichaud>.pick(2) :-) | 10:11 | |
| mls | yes. No need to hurry ;) | 10:12 | |
|
10:30
Coke joined
11:37
Psyche^ joined,
lucian joined
|
|||
| benabik was also looking at working on lexicals, but that requires more time than PACT. | 12:47 | ||
| Buh. Sent my parrot-dev e-mails from my school account instead of my "mailing list" account. Can someone please approve them? | 12:57 | ||
|
13:00
whiteknight joined
|
|||
| dalek | kudo/nom: 16a3b95 | moritz++ | src/core/terms.pm: prevent startup error if %*ENV<HOME> is empty |
13:11 | |
| kudo/nom: 4e43906 | moritz++ | src/core/ (3 files): much improved Mu:D.perl |
|||
|
13:14
mtk joined
13:21
lateau__ joined
|
|||
| mls | hi whiteknight! | 13:37 | |
|
13:44
PacoLinux joined
|
|||
| whiteknight | hello mls | 14:19 | |
|
14:29
dmalcolm joined
14:30
jsut joined
14:59
bluescreen joined
|
|||
| dalek | p: f748de0 | moritz++ | src/HLL/SerializationContextBuilder.pm: use nqp::where in SerializationContextBuilder |
15:00 | |
| moritz | ok, here's a really stupid question: why do all the parrot source file need to contain 'Copyright (C) $years by the Parrot Foundation', even though the CLA doesn't include any copyright assignment? | 15:02 | |
| "Subject to this CLA, you grant to the Foundation, and to the Users, a perpetual, worldwide, | 15:03 | ||
| non-exclusive, free-of-charge, royalty-free, irrevocable license under all intellectual property | |||
| rights (excluding patent and trademark, but including copyright) to reproduce, prepare derivative | |||
| works of, publicly display, publicly perform, sublicense, and distribute your Contributions, and | |||
| derivative works." | |||
|
15:04
logie joined
|
|||
| moritz | IANAL, but I belive that a non-exlcusive license does not present a copyright transfer | 15:04 | |
| and the author of the code still holds the copyright, not PaFo | |||
| whiteknight | that is a good question | 15:05 | |
| parrot does have an irrevocable copyright license to the software, and that notice only indicates that PaFo has such a license and the ability to enforce it. It doesn't say PaFo maintains ownership | 15:18 | ||
|
15:22
knewt joined
|
|||
| nine | whiteknight: that's not how such a notice is traditionally understood... | 15:22 | |
| Coke | moritz, whiteknight: allison is the person to talk to about those decisions from a historical standpoint. | 15:27 | |
| ISTR it had something to do with distribution, but that may have been a LICENSE-ing issue instead. | |||
|
15:28
bluescreen joined
15:36
bluescreen joined
|
|||
| allison | Coke: yes, parrot is not a copyright transfer, the original author keeps ownership | 15:40 | |
| moritz | so should the note say "Copyright (C) $years the parrot contributors" or so? | 15:41 | |
| allison | moritz: and it's because the Parrot Foundation own the "compilation copyright" | ||
| moritz: the same way Larry owns in for Perl 5 | |||
| moritz: and the Perl Foundation owns it for Rakudo | |||
| moritz: that is, any legal action against Parrot, will be taken to the foundation, and not to the individual developers | 15:42 | ||
| moritz | allison: ok, thanks for the explanation | ||
| allison | moritz: (that's one of the major reasons for having an incorporated foundation in the first place) | ||
| tadzik | google-opensource.blogspot.com/2011...ou-in.html | ||
|
15:44
bluescreen joined
15:48
bluescreen joined
15:49
bluescreen joined
16:16
bluescreen joined,
plobsing joined
16:22
bluescreen joined
16:31
bluescreen joined
16:41
bluescreen joined
|
|||
| dukeleto | ~~ | 16:43 | |
| tadzik: you interested in helping with GCI? | 16:49 | ||
| dalek | rrot: 05157bf | dukeleto++ | ChangeLog: update changelog |
16:51 | |
| nxed/version_1_3: 39ffaa0 | NotFound++ | / (3 files): set version 1.3.0 and update NEWS |
17:02 | ||
| TT #2198 created by Andy Dougherty <doughera@ā¦>++: Add Configure.pl check for | |||
| TT #2198: trac.parrot.org/parrot/ticket/2198 | |||
| rrot: 3877e53 | dukeleto++ | ChangeLog: add note about wiki migration to changelog |
17:08 | ||
| href="https://parrot.github.com:">parrot.github.com: 614760c | dukeleto++ | README.mkd: Add a readme |
17:09 | ||
|
17:12
bluescreen joined
|
|||
| dalek | rrot: f55775a | NotFound++ | ext/winxed/compiler.pir: update winxed snapshot to release 1.3.0 |
17:14 | |
| rrot: 46cc2aa | NotFound++ | ChangeLog: Merge branch 'master' of git@github.com:parrot/parrot |
|||
| rrot: 3ff3c9c | NotFound++ | ChangeLog: update winxed info in changelog |
|||
| nxed: 39ffaa0 | NotFound++ | / (3 files): set version 1.3.0 and update NEWS |
17:16 | ||
|
17:26
bluescreen joined
17:35
bluescreen joined
17:36
fperrad joined
17:41
zby_home joined
|
|||
| dalek | rrot: 951dcf7 | Whiteknight++ | docs/project/release_manager_guide.pod: Nobody else has volunteered, so I'll take November |
17:57 | |
| alvis_ | whiteknight: Hello? | 18:00 | |
| NotFound : Hello? | 18:10 | ||
| NotFound | alvis_: yes? | ||
| alvis_ | NotFound: Are you familiar with the test.winxed example on the Rosella website? | ||
| NotFound | alvis_: nop | 18:11 | |
| dukeleto | alvis_: howdy | ||
|
18:11
bluescreen joined
|
|||
| alvis_ | dukeleto: hello | 18:11 | |
| Ok, well, I'm seeing this: I just ran the test.winxed example from the Rosella website. | 18:12 | ||
| NotFound | alvis_: What's the url? | ||
| alvis_ | NotFound: whiteknight.github.com/Rosella/winx...tions.html | 18:13 | |
|
18:13
benabik joined
|
|||
| benabik | o/ #parrot | 18:13 | |
| alvis_ | There's two functions: (1) for winxed to interpret and (2) to compile to pir and execute. | 18:14 | |
| But, when you compile the code to pir, both are marked with a ':main' tag, in contradiction to the docs. | |||
| NotFound | alvis_: the doc says: Ā·but for now itās safe to always name your main function āmainā and mark it [main]" | 18:15 | |
| I think whiteknight was trying to explain the reasons for problems people may encounter, rather than documenting the expected behavior. | 18:17 | ||
| benabik | Winxed doesn't use the :main sub? Curious. | 18:18 | |
| alvis_ | Yes, but, now, as I execute the example, since both are marked main, Parrot only executes the "main" function, not the "foo[main]" function. | ||
| benabik | (Not necessarily wrong, but curious.) | 18:19 | |
| alvis_ | I'm just wondering if the docs are wrong or if the example is wrong or if the winxed compiler has changed? | ||
| Or ... which is more likely ... I'm just confused. :-) | 18:20 | ||
| benabik | Strange... | 18:21 | |
| Ah. Winxed is now marking a function named main as :main, I think. | |||
| alvis_ | benabik: Yes. | ||
| benabik | If I compile the example to PIR, I get a `.sub 'main' :main` and a `.sub 'foo' :main`. Which is somewhat unexpected. | ||
| NotFound | alvis_: there are more on it: winxed compilerchanges, winxed driver changes, and parrot startup has changes | 18:22 | |
| alvis_ | benabik: Right. | ||
| NotFound: Ok. I'll just keep working through the examples and make a list of things I think are unexpected. | |||
| Thanks for the help. | 18:23 | ||
| benabik | Whiteknight needs to up date the page to say that Winxed is marking subs named main with :main. | ||
| whiteknight | benabik: it isn't. When you interpret, winxed automatically searches for a function named "main" | 18:24 | |
| NotFound | Even better, say only "for now itās safe to always name your main function āmainā and mark it [main]" | ||
| whiteknight | but when you compile to .pbc and execute the .pbc, the normal :main flag rules apply | ||
| benabik | whiteknight: It is. Try it. | ||
| whiteknight | even when you compile to .pbc? | ||
| NotFound | I don't think I should documents things that are known to be changing. | ||
| benabik | whiteknight: winxed -c main.winxed with the main() foo[main]() results in two PIR subs marked :main | 18:25 | |
| whiteknight | hmmm...then that is different from when I wrote the docs | 18:26 | |
| cotto | ~~ | ||
| NotFound | The winxed installed driver looks for main. The non installed driver invokes parrot to do the job. | ||
| These things are changing because of changes in pbc/packfiles and in parrot startup. | 18:27 | ||
| If you don't want to do bizarre things, just use one function called main, add the [main] modifier to that, and only that, function. | 18:29 | ||
| And if you want to do bizarre things, expect changes. | |||
| alvis_ | NotFound: Ha! Fair 'nough! :-) | 18:30 | |
| I was just working through the examples on the page and found unexpected behavior. That's all. | |||
| NotFound | No problem, please continue reporting problems. | 18:32 | |
|
18:34
soh_cah_toa joined
|
|||
| benabik | I don't mind winxed marking 'main' :main if it's documented. :-) | 18:34 | |
| alvis_ | NotFound: Will do. | ||
|
18:42
mj41 joined
|
|||
| tadzik | dukeleto: sure! | 18:50 | |
| whiteknight | dukeleto: you going to put together an application? | 18:59 | |
| benabik | Is dukeleto saying things? Neither I nor the logs are seeing it. | 19:00 | |
| cotto | same here. How odd. | ||
| I only see "Howdy" | |||
| www.commitlogsfromlastnight.com/ | 19:01 | ||
| whiteknight | "This was FUCKING SUBTLE. I must say, though, I am THE MAN." | 19:04 | |
| dalek | umage/soh-cah-toa/interactive: fb86b8d | soh_cah_toa++ | src/plumage.nqp: Changed name of 'interactive' command to 'cli' because it's shorter and its purpose is more readily apparent. |
19:12 | |
| whiteknight | you know what makes me want to curse like that? SQL | 19:16 | |
| tadzik | I thought you'd say "imcc" | 19:17 | |
| benabik | tadzik: No, I expect IMCC causes far _more_ swearing than that example. :-D | ||
| tadzik | ;) | ||
| whiteknight | I'm at work now, so I've got work crap on my mind | 19:18 | |
| around here, the greatest evil is SQL | |||
| benabik | whiteknight: In other news, did you see the progress I made on a disassembler in PACT.git? The Packfile PMCs are pretty complete, if occasionally creative in their use of VTABLEs. | ||
| whiteknight | benabik: I didn't see the most recent stuff, no. I'm very excited about it, however | 19:19 | |
| benabik: i figure you'll appreciate this: We lost another house | |||
| so, back to square one, again | |||
| benabik | whiteknight: Basically, I'm using the Packfile PMCs to generate pbc_dump like output. Have to figure out how to get op introspection next. | ||
| whiteknight: That's LTA. :-( The more you talk, the luckier I feel about my house-hunting. | |||
| whiteknight: Offer just fall through, or something more exciting? | 19:20 | ||
| whiteknight | benabik: the OpLib and Opcode PMCs should help. If those types don't have functionality you need, we add it | ||
| benabik | !! | ||
| whiteknight | benabik: the sellers were significantly under water in their mortgage, and the bank decided they weren't eligible for a short sale | ||
| benabik | ⦠They don't have the documentation I need, I can tell you that. | ||
| cotto | I'll be glad to see those get some love. | ||
| whiteknight | and they couldn't afford to take a few thousand dollar hit, so they stopped selling | ||
| cotto | examples/pir/make_hello_pbc.pir might be a start. | 19:21 | |
| benabik | whiteknight: I was expecting opcode/oplib information to be more attached to the OpMap. But having it available separately is still useful. | ||
| whiteknight: Ew⦠Yeah, short sales are a mess these days. | |||
| whiteknight | those PMC types are relatively young, in the grand scheme of things, so if their form sucks we can change them | 19:22 | |
| nothing is set in stone, especially not in the face of great new ideas | |||
| or compelling new use cases | |||
| benabik | I'd like to make the Debug segment PMC to have a proper type to return instead of returning two integers via get_string_keyed_int and get_pmc_string_keyed_int. | ||
| whiteknight | okay, what would you like it to return and through which interface? | 19:23 | |
| a vtable? a method? | |||
| keep in mind that the debug segment crap will all be changing soon too, once we get soh_cah_toa's ideas rolling | |||
| soh_cah_toa | a podds dde? :P | ||
| benabik | Really just getting an integer from both gski and gpki is just horrible. | ||
| Probably I'd actually have the PMC do the string constant lookup and use get_string_ki and get_integer_ki | 19:24 | ||
| I'd call that "more sane" | |||
| Oh, and type information attached to annotations. Can annotations actually have PMC data attached, or is that variable in PackfileAnnotation totally useless? | 19:25 | ||
| whiteknight | it can, yes. I don't think there's an easy syntax to make that happen in IMCC | ||
| but you can do it | |||
| benabik | Ah. The PackfileAnnotation has a variable for it, but no interface. | 19:26 | |
| whiteknight | oh, okay | ||
| benabik | I was hoping to have a get_pmc that returned and Integer or String PMC. But if it can be arbitrary PMCs, then an explicit type function is probably more useful. | ||
| Although a get_value that coerces to Integer and String might still be useful. Hm. | 19:27 | ||
| benabik adds notes to his Disassembler gist. | 19:38 | ||
| whiteknight: Thanks for the pointers to the Op* PMCs. That probably saved me a ton of time. | |||
| (Or caused a lot of headache depending on the state of the PMCs.) | |||
| cotto | They were originally intended for use by PIRATE. | 19:40 | |
| benabik | I am basically re-treading the territory of PIRATE. | 19:41 | |
| When I get to opcode generation I intend to grab as much of PIRATE as I can. | |||
| soh_cah_toa | that. would. be. awesome. | 19:43 | |
| benabik | Hm. I need to start a references document with links to PCT, NQP's QCT and PIRATE. And the dragon book. | 19:44 | |
| Read the dragon book. Love the dragon book. | |||
| soh_cah_toa | indeed. mine is well worn ;) | 19:46 | |
| benabik | I need more optimization books though. The dragon discusses it, but lacks detail. Probably because my advisor's optimization book is the same length as the dragon. | 19:47 | |
| soh_cah_toa | i don't even know of any | 19:48 | |
| benabik: look through the acm library. you got a membership for gsoc too | |||
| cotto | optimizations are fun and dangerous | ||
| soh_cah_toa | i love it | ||
| benabik | Not dangerous if you do it right. | 19:49 | |
| But doing it right is hard. | |||
| cotto | like I said | ||
| benabik | soh_cah_toa: Yeah, I saw that. I haven't poked at the library too much. | ||
| soh_cah_toa | aw man. it's awesome | ||
| benabik | Although, actually, I was reading about data-flow in the dragon book... | 19:50 | |
| soh_cah_toa can never have enough books | |||
| benabik | +1 | 19:51 | |
| cotto | dukeleto: I put my M0 notes on the github wiki last night. | 19:58 | |
| tadzik | so this acm thingy is worth more than the astonishing amount of spam it's sending? | 19:59 | |
| benabik | cotto: What's q and uq? long long? | 20:00 | |
|
20:08
ambs joined
|
|||
| cotto | quad | 20:12 | |
| (and unsigned quad) | |||
| dukeleto | cotto++ # m0 notes | 20:15 | |
| new gcc shiny: nickclifton.livejournal.com/9396.html | |||
| -fshrink-wrap is a hilarious name | |||
|
20:19
jsut_ joined
20:28
Themeruta joined
|
|||
| benabik | OpLib and Opcode PMCs look awesome. A documenting I will go. Adocumenting I will go. Heigh-ho, the dairy-o, a documenting I will go. | 20:33 | |
| FIA has init_int VTABLE. Do we have init_{int,float,string}? They're not in PDD17. (Yes, yes, I know they're often wrong. But I like to update them from time to time. | 20:34 | ||
| NotFound | benabik: init_int is an optimization for a frequent usage. | 20:35 | |
| dalek | p: bb30b90 | pmichaud++ | src/Q (2 files): Add NQPCursor "restart match" capabilities. |
||
| benabik | NotFound: So yes init_int, but nums and strings have to be Float and String PMCs. Check. | 20:37 | |
| NotFound | benabik: a lot of internal speed critical usages was the reason to introduce init_int, there was no compelling reason to add string and num equivalents. | 20:40 | |
| benabik | NotFound: That makes sense. No reason to hide it's existence from PDD17 though, right? | 20:41 | |
| dalek | umage/soh-cah-toa/interactive: 72e9a7d | soh_cah_toa++ | / (3 files): Updated manpage and message displayed by 'help' command to reflect the changes I made while rewriting the %COMMANDS hash. |
20:42 | |
| umage/soh-cah-toa/interactive: 42a594c | soh_cah_toa++ | / (2 files): Added a 'CLI' and 'Misc' section to the TODO file. Also started documenting the CLI in docs/interactive.pod. |
|||
| NotFound | benabik: AFAIK the only reason to not be in the PDD is that it don't existed at that time. | 20:43 | |
| cotto | benabik: none at all | 20:44 | |
| benabik++ | |||
| dukeleto: do you 1) understand the comparison tables on the wiki and 2) have the tuits to make one for x86_64, MIPS or ARM? | |||
| or anyone else | |||
| benabik | Hmmm. | 20:46 | |
| benabik wants a Winxed REPL. | |||
|
20:47
contingencyplan_ joined
|
|||
| benabik loves Vim. | 20:50 | ||
| My q register: 0yyP"dpkdawxddjjpk$DJx$hC>jj0 | |||
| That may not make much sense, but it means "qq" takes a VTABLE function line and turns it into a bit of POD. | |||
| With my cursor at the right place to add to it too. | 20:51 | ||
| Sorry, not qq, @q. | 20:52 | ||
| dukeleto | benabik: nice! | 20:53 | |
| +1 to a winxed repl | 20:54 | ||
| cotto: what does the v at the bottom right of the x86 table mean? | 20:55 | ||
| cotto: what is q, uq, f, d ? | 20:56 | ||
| cotto: docs for what each type means would be nice. I can guess most, but not those. Rationals and floats ? | |||
| benabik | q = quad, f = float, d = double. I think. | ||
| (I had to ask about q too.) | 20:57 | ||
| NotFound | Why do you want a repl? What use cases you have in mind that can't be done with -e ? | ||
| benabik | Repeated invocations of -e? :-D | ||
| Also -e exists? Awesome. | |||
| NotFound: REPLs are very useful for exploring complex expressions. Being able to assign names to intermediate results and explore them at each step is useful for learning. | 20:58 | ||
| dukeleto | NotFound: some people develop in different ways. Many, many people like a repl, which is why so many exist for Perl 5, and why ruby and python learned that lesson and shipped the language with one | ||
| dukeleto likes repls | |||
| NotFound | The "assign names" is the tricky part. | 20:59 | |
| dukeleto | cotto: also, instruction listing for ARM may be hard. There are common subsets, but there are many flavors of ARM | ||
| benabik | Yes. | ||
| Maintaining an outer lexical scope is tricky. | |||
| (really, it's updating the scope that's hard. | 21:00 | ||
| NotFound | And using it. | ||
| dukeleto | Devel::REPL is a pure-perl Perl 5 REPL that must have been a contract with the devil. | ||
| of course, written by mst and nicknamed Devil::REPL | |||
| benabik | mst's presentation on it was interesting. | ||
| NotFound | Winxed does not assume that some outer scope exists. | ||
| benabik | Yeah, a REPL may be overly difficult with Winxed. | ||
| cotto | dukeleto: yeah | 21:01 | |
| also, what benabik++ said | |||
| dukeleto | cotto: to answer your question, no, there needs to be instructions about how to fill out the tables and what each row means | ||
| cotto | dukeleto: ok. I suspected it wouldn't be entirely obvious. | 21:02 | |
| NotFound | And given that winxed does not provide easy access to globals, a REPL will not be so user friendly as in other languages. | ||
|
21:11
smash joined
|
|||
| smash | hello everyone | 21:11 | |
| dukeleto | smash: howdy | ||
| benabik | o/ smash | ||
|
21:15
perlite_ joined
|
|||
| benabik | Heh. From t/pmc/oplib.t: hopeweneverhaveopcodesnamedlikethis | 21:19 | |
| NotFound | I think I wrote that | 21:22 | |
| benabik | OpLib and Opcode are exactly what I was looking for. Now I just need PackfileOpMap to give me the OpLibs. | 21:23 | |
| And maybe the Opcodes. I'll figure it out. | 21:24 | ||
|
21:27
GodFather joined
|
|||
| benabik | What are the labels for an opcode? | 21:35 | |
| cotto | benabik: I think they're PIR-level labels. | 21:36 | |
| benabik | Appear to be a list of integers? | ||
| cotto | could be bytecode offsets | ||
| benabik | Hm. | 21:37 | |
| cotto | that's a guess though | 21:38 | |
| when in doubt, look at how PIRATE uses it | 21:39 | ||
| benabik | Heh. | ||
| Well, I was going to dig into the definition of op_info_t | |||
| cotto | or that | 21:49 | |
| dalek | rrot: 2ebdb70 | benabik++ | docs/pdds/pdd17_pmc.pod: PDD17: Mention init_int VTABLE Message mostly copied from init_pmc explanation. I figured a repetitive description is better than none. |
22:09 | |
| rrot: aca0054 | benabik++ | src/pmc/oplib.pmc: Document oplib PMC |
|||
| rrot: 83b0af4 | benabik++ | src/pmc/oplib.pmc: OpLib PMC: Used fixed array for version() I suppose it's a minor nit, but we know the length of the array exactly and it's never going to change, so use a FIA instead of an RIA. Plus, using set_integer_keyed_int should be faster than push_integer. |
|||
| rrot: 667c565 | benabik++ | src/pmc/opcode.pmc: Document the Opcode PMC Includes information on what various integer values mean (determined by examining the type definitions. |
|||
| soh_cah_toa | benabik++ | 22:10 | |
| soh_cah_toa always loves to see our poor documentation being improved | |||
| benabik: you're a busy man lately ;) | |||
| benabik | soh_cah_toa: I've had a small respite in the pile of homework. Of course, I should be doing thesis research, but eh. | 22:11 | |
| soh_cah_toa | benabik: same here. if i'm ever doing any hacking, it usually comes at the price of homework | ||
| benabik: you go to rit, right? | 22:14 | ||
| benabik | soh_cah_toa: Yup | 22:15 | |
| soh_cah_toa | benabik: how do you like it there? are their cs classes pretty advanced? | ||
| benabik: the reason i ask is b/c the university i've been trying to get into has been dicking me around for over a year. any other colleges have a really poor curriculum w/ stupid basic classes | |||
| benabik | I like it enough to have come back. :-D | ||
|
22:16
whiteknight joined
|
|||
| benabik | It's pretty advanced, I think. | 22:16 | |
| soh_cah_toa: Grad or undergrad? | |||
| soh_cah_toa | benabik: do they have systems and compiler classes? in bachelor's or master's program? | ||
| undergraduate | 22:17 | ||
| good | |||
| benabik | Compiler construction is a graduate only course, I think. | ||
| soh_cah_toa | damn | 22:18 | |
| benabik | They have systems programming and the like. | ||
| Nope. | |||
| Coke | Is parrot doing GCI this year? | ||
| benabik | 560 Compiler Construction Lab. | ||
| soh_cah_toa | nice | ||
| Coke | 560: invalid HTTP error code. | ||
| benabik | soh_cah_toa: RIT CS Undergrad Handbook: www.cs.rit.edu/csdocs/ugrad/ug7.pdf | ||
| soh_cah_toa | thanks | 22:19 | |
| benabik | soh_cah_toa: Two big things to know if you want to come here 1) they're changing from quarters to semesters in 2013. So if you start now, the classes may shift mid-degree. 2) They require 1 year of paid co-op to get your degree. There's generally lots of help to find one. | ||
| (But it does add a year to the length of the degree.) | 22:20 | ||
| soh_cah_toa | wow, normally co-op is in place of classes | ||
| benabik | Not here. | 22:21 | |
| whiteknight | where is "here" | 22:22 | |
| ? | |||
| benabik | RIT | ||
| soh_cah_toa | yeah, these classes look good and challenging which is what i want | ||
| whiteknight | what does their graduate program look like? | 22:23 | |
| I'm sort of in the market | |||
| benabik | For CS? | 22:24 | |
| They have a 2 year MS with either a project or thesis to complete. There's a PhD program, but I don't know much about it. | |||
| soh_cah_toa | i'm so jealous. i can't wait to have a thesis to stress over and consume my life ;) | 22:25 | |
| benabik | :-/ | ||
| soh_cah_toa | 'cause it'd actually be challenging | 22:26 | |
| and about something i'd be interested in | 22:27 | ||
| benabik: what's your thesis on? | 22:29 | ||
| benabik | soh_cah_toa: Equality Saturation. Interesting new idea in optimization⦠Lemme dig up the ACM link. | 22:30 | |
| soh_cah_toa | what in the world... | ||
| benabik | soh_cah_toa: cseweb.ucsd.edu/~rtate/publications/eqsat/ | ||
| It's strange. Not sure what my actual _thesis_ will be, but that's the stuff I'm working from. | |||
| soh_cah_toa | benabik: have you taken any classes on optimizations? i mean, where do you learn that kinda thing? on your own? | 22:31 | |
| benabik | Basically, instead of figuring out an order to run various optimizations at, you do them all at once, collect all the possible optimized programs and then select from them at the end. Very interesting. | 22:32 | |
| soh_cah_toa: No classes on optimizations. I'm teaching myself data-flow analysis. | |||
| soh_cah_toa: A lot of back and forth with my advisor. | |||
| soh_cah_toa | i figured as much | ||
| benabik: have any resources you'd recommend for someone new to the subject? | 22:34 | ||
| books, blogs, sites... | |||
| benabik | Optimization? Dragon book actually has some decent description of data flow analysis. | ||
| soh_cah_toa | what chapter? | ||
| benabik | Chapter 9 | 22:35 | |
| soh_cah_toa | ok, cool | ||
| benabik | Also, lemme find the Hoopl paper. That was very useful. | ||
| soh_cah_toa: www.cs.tufts.edu/~nr/pubs/dfopt-abstract.html | 22:36 | ||
| soh_cah_toa | great | ||
| benabik | The Hoopl paper has a fair amount of Haskell in it. | 22:37 | |
| soh_cah_toa | yeah, i saw that. yuk :S | 22:38 | |
| well, haskell isn't *that* bad | |||
| i'm just too familiar w/ it | |||
| s/too/not too/ | |||
|
22:39
dmalcolm joined
|
|||
| benabik | But it talks about the idea in general before getting into the code though. And I don't think they do anything too strange if you're used to the idea of functional programming. | 22:39 | |
| learnyouahaskell.com/ | |||
| soh_cah_toa | now that is how you write a book :) | 22:40 | |
| benabik | :-D | ||
| why also did a strange job of a book for ruby: mislav.uniqpath.com/poignant-guide/ | 22:41 | ||
| soh_cah_toa | yeah, i love that book | ||
| benabik | And I should get going. \\o | 22:44 | |
| soh_cah_toa | see ya | 22:50 | |
| whiteknight | I figure if I do go back for a PhD in CS, I'm going to need to learn Haskell | 23:15 | |
| professors loves them some haskell | 23:17 | ||