Camelia, the Perl 6 bug

IRC log for #parrot, 2011-10-17

Parrot | source cross referenced

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

All times shown according to UTC.

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

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

Parrot | source cross referenced