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