Camelia, the Perl 6 bug

IRC log for #parrot, 2011-06-21

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 cotto_work jnthn__: great.  #perl6?
00:01 benabik bacek_at_work: ping
00:02 cotto_work aloha: seen bacek_at_work
00:02 aloha cotto_work: bacek_at_work was last seen in msg 14 hours 38 mins ago <private message>.
00:06 dalek winxed: r1057 | NotFound++ | trunk/t/ (3 files):
00:06 dalek winxed: reorganize and improve string literals and chr tests
00:06 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1057
00:07 benabik cotto_work: bacek asked me to poke him this morning, so hopefully he'll be around in a bit.
00:10 kid51_at_dinner left #parrot
00:11 NotFound_b joined #parrot
00:11 NotFound_b soh_cah_toa: you should use a PMC for the result of readline_interactive, not a string.
00:12 NotFound_b And check that pmc for nullness before using it.
00:25 daniel-s left #parrot
00:33 bubaflub incoming
00:34 dalek parrot-gmp: 4f4d4f8 | bubaflub++ | t/integer/invert.t:
00:34 dalek parrot-gmp: add tests for invert
00:34 dalek parrot-gmp:
00:34 dalek parrot-gmp: this covers mpz_invert
00:34 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/4f4d4f835a
00:34 dalek parrot-gmp: d027685 | bubaflub++ | t/integer/jacobi.t:
00:34 dalek parrot-gmp: add tests for jacobi functions
00:34 dalek parrot-gmp:
00:34 dalek parrot-gmp: this covers mpz_jacobi
00:34 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/d027685475
00:34 dalek parrot-gmp: 83fc7b6 | bubaflub++ | / (5 files):
00:34 dalek parrot-gmp: refactor aliases list out to conf
00:34 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/83fc7b6ed9
00:34 dalek parrot-gmp: 58de1f9 | bubaflub++ | src/GMP/Integer. (2 files):
00:34 dalek parrot-gmp: aliases for jacobi functions
00:34 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/58de1f91a8
00:34 dalek parrot-gmp: d18d452 | bubaflub++ | t/integer/legendre.t:
00:34 dalek parrot-gmp: tests for legendre functions
00:34 dalek parrot-gmp:
00:34 dalek parrot-gmp: this covers mpz_legendre
00:34 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/d18d4520da
00:49 bacek_at_work benabik, pong
00:50 benabik \o/ bacek_at_work
00:50 bacek_at_work o/
00:50 bacek_at_work benabik, how it's going?
00:51 benabik bacek_at_work: Pretty good, although decoding the PIR in some of these methods is driving me crazy.
00:52 bacek_at_work benabik, I understand your feelings :)
00:52 sorear o/ bacek_at_work
00:52 bacek_at_work aloha, sorear
00:53 bacek_at_work benabik, any obvious problems/blockers/etc?
00:55 benabik bacek_at_work: I think I've spent too much time dealing with removing Q:PIR blocks...  I need to spend tomorrow figuring out your new POST classes, which I've barely looked at.  :-/
00:56 bacek_at_work benabik, just deprioritize Q:PIR blocks. Make newPOST nodes fully workable is more important
01:00 cotto_work left #parrot
01:01 benabik bacek_at_work: Do you have a 5 minute spiel of what you added, or should I just dig in?
01:02 bacek_at_work benabik, basically newPOST nodes reflecting basic PASM/PIR constructs closely
01:02 bacek_at_work most of them are processed in single pass.
01:02 bacek_at_work POST::Sub and POST::Label require 2 passes
01:02 bacek_at_work afair
01:04 benabik bacek_at_work: pmichaud landed a new register allocator.  IIRC, newPOST handles that itself?
01:06 bacek_at_work benabik, ouch. Is new allocator in imcc? (And there is 2 register allocators in newPOST)
01:06 bacek_at_work benabik, but rule of thumb - POST::Compiler.to_pbc should able to generate PBC without IMCC help.
01:06 bacek_at_work Which includes labels, register allocators, annotations, etc
01:07 benabik bacek_at_work: (re: to_pbc) right
01:07 benabik bacek_at_work: No, an allocator in PAST.
01:07 bacek_at_work benabik, ah. That should be "ported".
01:08 sorear the new PAST uses one $Px per depth of expression nesting
01:08 benabik bacek_at_work: Turns out if you use a few thousand registers, IMCC takes WAY TOO LONG
01:08 bacek_at_work But PAST nodes should stay almost same (module PIR-to-NQP migration)
01:08 sorear as opposed to one $Px per PAST::Node
01:08 bacek_at_work benabik, N^2 algos ftw :)
01:08 bacek_at_work sorear, good optimisation!
01:09 kid51 joined #parrot
01:09 benabik bacek_at_work: So the register work around in PAST will be less needed?
01:09 sorear bacek_at_work: yes, I love trivial changes that make stuff asymptotically infinitely faster
01:09 bacek_at_work benabik, it's still valuable.
01:09 bacek_at_work benabik, less critical, yes.
01:09 sorear it's still extremely valuable
01:10 pmichaud I'm planning to add a new node type and some methods tonight
01:10 pmichaud (just fyi)
01:10 benabik bacek_at_work: The basis of it is that it resets most of the register allocations based on new PAST::Stmt nodes.  So if newPOST is already better on allocations, not sure how useful it'll be.
01:10 pmichaud nothing huge.  I can do it in the nqp-only repo, or I can do it in parrot.
01:11 benabik pmichaud: Either way.  What's the node?
01:11 bacek_at_work benabik, POST::*Allocator allocates "physical" registers. PAST::* - "logical"
01:11 pmichaud PAST::Want
01:11 pmichaud it will select a child based on the rtype
01:11 bacek_at_work msg cotto afair you implemented LifetimeAllocator for PIRATE. But I couldn't find it...
01:11 aloha OK. I'll deliver the message.
01:12 benabik pmichaud: Interesting, but yes, shouldn't slow me much.
01:13 pmichaud PAST's register allocator ought to do fairly well because it explicitly knows about statement boundaries and sequence points.  By the time we get to POST, a lot of that information is harder to tease out.
01:13 pmichaud I can envision creating a POST::Stmt equivalent, however, to push the register allocation down to that layer.
01:14 pmichaud afk, need to fetch dinner
01:16 benabik pmichaud: newPOST has a new register allocator already, so we can see how it works.  :-)
01:17 bacek_at_work benabik, POST register allocator doing different job from PAST allocator :)
01:19 theory left #parrot
01:20 dalek Rosella/event_queues: 91dd182 | Whiteknight++ | / (3 files):
01:20 dalek Rosella/event_queues: Remove tests from Event.t for features that we moved to Queue. Fix Event and Manager tests to pass again
01:20 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/91dd1829bd
01:20 dalek Rosella/event_queues: a153ba2 | Whiteknight++ | / (5 files):
01:20 dalek Rosella/event_queues: Remove unnecessary id_count field from Event. Add a new test file for Queue with several tests that used to be in Event.t
01:21 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/a153ba28c8
01:21 dalek Rosella/event_queues: eaac3ce | Whiteknight++ | t/event/ (3 files):
01:21 dalek Rosella/event_queues: Add in more stub test methods for all the things I want to test
01:21 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/eaac3ced21
01:21 dalek Rosella/event_queues: ba01939 | Whiteknight++ | / (2 files):
01:21 dalek Rosella/event_queues: Flesh out several of the stubbish Queue tests, and fix some Queue logic
01:21 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/ba0193946b
01:21 dalek Rosella/event_queues: bea4034 | Whiteknight++ | / (3 files):
01:21 dalek Rosella/event_queues: Flesh out Event tests and fix up some logic
01:21 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/bea4034c39
01:21 dalek Rosella/event_queues: 340351a | Whiteknight++ | src/event/ (3 files):
01:21 dalek Rosella/event_queues: +docs for some of the classes
01:21 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/340351ad56
01:21 benabik bacek_at_work: Yes, I was referring to "moving the allocator to POST".  Instead of spending time reworking master's POST, we can wait a month and see how newPOST does.  :-)
01:22 bacek_at_work benabik, agreed
01:23 cotto bacek_at_work, I never got it working
01:23 cotto and it was linear scan
01:23 bacek_at_work cotto, lazy slacker! :)
01:23 woosley joined #parrot
01:24 cotto I wrote a bad first version before I realized how I should have written it.
01:27 NotFound_b left #parrot
01:30 cotto I need to get back to that and see how accurate chromatic's suspicions about imcc's register allocator's effect on nqp's performance are.
01:32 soh_cah_toa is it possible to cast a STRING * as a PMC *? i'd like to call Parrot_io_eof() w/ a string but it takes a pmc instead
01:33 soh_cah_toa or better yet...if not, how can i check eof w/ a string?
01:34 cotto It's possible, but it's an extraordinary bad idea.  You probably want VTABLE_get_string
01:34 cotto or the opposite
01:35 cotto Parrot_io_eof expects a FileHandle PMC.
01:36 cotto It doesn't make sense to ask about the eof of a string.
01:38 soh_cah_toa what i'm trying to do is not cause my program to crash when i press ^Z. i looked and readline_interactive returns a STRING * so then how can i do this?
01:40 soh_cah_toa oh wait, should i be checking for eof on the stdin pmc then?
01:41 cotto yup
01:41 soh_cah_toa ahh, duh. so simple
01:41 cotto in retrospect, yes
01:43 cotto quite topical - http://mebassett.blogspot.com/2011/06/you​-dont-understand-something-until-you.html
01:45 cotto It's possible that the lesson applies to areas other than Racket macros.
01:47 cotto soh_cah_toa, do you have the testing code in a form that you think is worth pushing?
01:48 soh_cah_toa ha!
01:48 soh_cah_toa it's a piece of trash right now
01:48 cotto but it's a piece of trash that exists!
01:49 soh_cah_toa i'll push it
01:49 cotto code that exists is almost always preferable to code that doesn't
01:49 cotto does it output tap?
01:49 soh_cah_toa i havn't even gotten there yet
01:49 cotto no worries
01:49 soh_cah_toa that's how horrible this thing is
01:50 dalek Rosella/event_queues: 1b54670 | Whiteknight++ | t/event/EventManager.t:
01:50 dalek Rosella/event_queues: Start working on Manager.t tests, using mockobjects to prove Manager is interacting with Queue and Event correctly. Not complete.
01:50 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/1b54670976
01:51 whiteknight left #parrot
01:54 cotto dukeleto, ping
01:55 dalek parrot/soh-cah-toa/hbdb: 5b4877f | soh_cah_toa++ | ipc.pl:
01:55 dalek parrot/soh-cah-toa/hbdb: This garbage script is supposed to become a test someday
01:55 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/5b4877fe5c
01:56 cotto The hate is strong with this one.
01:56 soh_cah_toa oh yes. i'
01:57 soh_cah_toa lately, code == migraine
01:57 cotto make sure to get away from the computer.  It's too easy to forget that the rest of the world exists.
01:58 soh_cah_toa oh i do. definitely. i even walk at nights
01:59 cotto great
02:06 dukeleto cotto: pong
02:06 dukeleto cotto: add "use Test::More;" to your script and you will be 90% of the way to having a test file
02:07 dukeleto cotto: running out the door in a few
02:07 cotto dukeleto, what's your understanding of how much gsoc mentors should/may participate in coding?
02:07 dukeleto cotto: as much as they want, usually. why do you ask?
02:08 cotto dukeleto, I just want to make sure I don't disqualify soh_cah_toa++ by diving in and doing stuff.
02:08 cotto The full OSS experience definitely isn't coding in isolation.
02:08 cotto thanks
02:08 dukeleto cotto: i would say if you help him by doing things which are not directly what his deliverables are, that is fine.
02:08 dukeleto cotto: i don't think you will disqualify anybody
02:09 dukeleto cotto: feel free to dive in and give soh_cah_toa++ a hand. I see that he is working hard.
02:09 cotto dukeleto, I was thinking about the tests
02:09 dukeleto cotto: yes, writing him a few example tests will probably give him a much-needed boost in that area
02:10 * dukeleto is done with his TPF grant, other than writing his final blog post. woot.
02:10 cotto and whipping that code into shape
02:10 dukeleto cotto: how is master looking for the release tomorrow?
02:10 cotto awesomesauce
02:10 cotto I'll probably cut the release tonight.  I haven't started testing yet.
02:10 dukeleto cotto: i think the codingstd problem i thought i added to master got fixed already. In any case, it is a trivial fix of adding some parens in a macro to appease the codingstd tests
02:11 cotto dukeleto, I won't let it escape into the release.
02:14 cotto kid51, I'm reading your draft yapc talk and will give you some feedback before I cut the release.
02:14 cotto threads.t test failed
02:14 kid51 cotto: Thanks.  I'm headed to bed now, so I will read it in the morning.
02:14 cotto kid51, what's your preferred format?>
02:15 cotto It's a long draft.
02:15 kid51 plain-text
02:15 kid51 just intersperse your comments in the text.
02:15 kid51 It's actually not long.  It times at 16-17 minutes.
02:15 kid51 And I have 20.
02:16 kid51 left #parrot
02:24 plobsing joined #parrot
02:24 RobertLJ left #parrot
02:32 rurban_ joined #parrot
02:35 rurban left #parrot
02:35 rurban_ is now known as rurban
02:52 pmichaud 01:30 <cotto> I need to get back to that and see how accurate chromatic's suspicions about imcc's register allocator's effect on nqp's performance are.
02:53 pmichaud you might not be able to tell or measure it, any longer, since nqp (and nqp-rx) are now much better about register allocation
02:54 cotto pmichaud, great.
02:54 pmichaud where some routines used to used hundreds or even thousands of unique registers, they now often use less than 10
02:54 pmichaud *used to use
02:55 cotto nice.  When did that happen?
02:55 pmichaud last week
02:55 cotto Then I guess I don't feel too bad about missing it.  What changed?
02:55 pmichaud PAST got rid of its naive register allocator (more)
02:56 theory joined #parrot
02:56 pmichaud it now has a bank of reusable registers, and the PAST creator can mark where the logical sequence points in the code are (i.e., places where there are no more temporary registers in use)
02:57 pmichaud so, when the end of a sequence point is reached, all of the reusable registers (except the one holding the return value of the sequence point, if any) are returned to the pool for re-use in the next statement
02:58 cotto Did you seen any performance improvement?
02:59 RobertLJ joined #parrot
02:59 pmichaud yes and no
02:59 cotto 1 & 0 = 1
02:59 pmichaud the reason I put the register allocator in place was that we were getting pathological performance from imcc in nom
03:00 cotto er, = 0
03:00 pmichaud compiling our core setting was taking 16 seconds, then having parrot compile the generated pir (only about 45k lines) was taking 50+ seconds
03:00 pmichaud i.e., it was taking longer to compile the pir than it took to generate it
03:01 pmichaud the difference is in the way that nom does initialization as compared to rakudo master
03:01 pmichaud in rakudo master, we have hundreds of small routines marked :load :init that do all sorts of constant and data structure initialization at load time
03:01 pmichaud that works, but we pay a startup cost in the invocation of all of those routines when rakudo starts up or is loaded
03:02 pmichaud so, in the new model, jnthn++ switched it so that all of the initialization takes place in a single :load :init subroutine
03:02 pmichaud so, we now have only one invocation...
03:02 pmichaud but that one routine contained tens of thousands of registers
03:02 pmichaud because imcc doesn't really do any register re-use on its own
03:02 cotto which were highly amenable to a simple allocator
03:03 pmichaud so imcc was going all quadratic on the fact that a subroutine contained sooooo many registers
03:03 pmichaud so, by getting PAST to do the reusable register trick, what was taking imcc 50 seconds to compile went back to under 2 sec
03:04 pmichaud we also get another really huge benefit from having temporary PMC registers
03:05 pmichaud previously, if a subroutine had 100 registers or so, where 90 of them were really only temporary in nature, that meant there were 90 temporary PMCs that would be held alive even though they weren't really needed
03:05 pmichaud those pmcs would remain alive until the subroutine call frame was collected
03:05 RobertLJ left #parrot
03:05 cotto so now gc pauses aren't as bad?
03:05 pmichaud which can actually be beyond the lifetime of the subroutine call, if a closure was captured during the subroutine (the closure holds an active link to the callframe)
03:06 pmichaud so, a lot of temporary gcs would be held as "alive" even though they were really no longer needed
03:06 pmichaud s/gcs/pmcs
03:06 pmichaud now, as soon as a temporary pmc register is reused, whatever PMC it was holding onto is released and can be collected
03:07 pmichaud so, the overall number of active gcs is reduced, reducing our memory footprint
03:08 pmichaud (and yes, that should speed up gc mark/sweep similarly)
03:08 pmichaud as far as the net overall impact on rakudo performance -- it was about 3%
03:08 * Coke yawns.
03:08 cotto I'd like to see how PIRATE does with those changes.
03:09 pmichaud I don't if the update nqp-rx has been brought into parrot yet... it doesn't look like it from looking at ext/nqp-rx/src/stage0/*.pir
03:09 pmichaud *updated
03:09 pmichaud might be worth doing another bootstrap run
03:09 benabik pmichaud: I brought up doing the update, but nothing happened prior to freeze.  I brought it into my branch though.
03:10 benabik pmichaud: The smaller register set makes looking at diffs of generated PIR less of a headache.  :-D
03:10 pmichaud oh, is there a freeze in effect now?
03:10 pmichaud hmmmm
03:11 cotto Hmmmm indeed.  I'm wondering if an exception is worthwhile.
03:11 benabik Yar, cotto sent out an e-mail to parrot-dev about it this afternoon.
03:11 pmichaud maybe I'll stick my PAST updates into the nqp repo for tonight until after the freeze
03:11 benabik Exception for nqp-rx w/ Stmt might be worthwhile.  New PAST nodes should probably wait.  :-D
03:12 pmichaud I'm just now getting to my email.  I knew the release was on tuesday; I didn't realize it was Monday already :)
03:12 cotto pmichaud, my work week just ended, so my internal calendar is quite wonky
03:13 pmichaud my internal calendar has been wonky for several weeks now
03:13 pmichaud too many odd events around the house lately
03:13 pmichaud cotto: I can do the nqp-rx bootstrap into parrot and test it with rakudo master if you like
03:13 pmichaud or we can wait until after the release for that
03:14 pmichaud benabik: I agree, new PAST nodes/features should wait until after release.  I'll do them in another repo for the time being and merge them over on Wednesday.
03:14 cotto pmichaud, I could go either way.  If you have confidence in nqp-rx, go for it.
03:14 pmichaud if rakudo master passes with a new nqp-rx, I have confidence in it.
03:14 cotto wfm
03:14 pmichaud the changes to nqp-rx are fairly innocuous.
03:15 pmichaud also, before committing the register allocation changes to parrot master I tested them against all of nqp, nqp-rx, rakudo master, and nom
03:15 cotto I'll start the release one you commit the new bootstrap.  I'm glad you have a fast machine for testing Rakudo.
03:15 pmichaud both unmodified versions of each of those and modified versions that used the new register allocator
03:15 pmichaud yes, should take me only about 10 or 15 mins
03:16 cotto I can keep busy until then.
03:16 cotto It's Tuesday in most of the world.
03:17 lucian joined #parrot
03:17 benabik It's almost Tuesday here.
03:17 cotto exactly
03:19 pmichaud yes, looks like I started to do a new bootstrap last week but didn't finish it
03:20 dalek nqp-rx: 1dc87d4 | pmichaud++ | src/stage0/ (3 files):
03:20 dalek nqp-rx: Update bootstrap files to take advantage of new PAST::Stmt nodes and
03:20 dalek nqp-rx: better register allocation.
03:20 dalek nqp-rx: review: https://github.com/perl6/nqp-rx/commit/1dc87d48d6
03:24 pmichaud all parrot tests pass with new nqp-rx bootstrap... building rakudo
03:25 cotto good sign
03:26 pmichaud built, now running 'make spectest'
03:26 pmichaud one can tell the different by looking at the generated pir...  reusable registers start at $P100 and go to $P999
03:26 pmichaud most code rarely gets above $P110
03:27 pmichaud non-reusable registers (mainly lexicals and constant subs) start at $P1000
03:27 lucian_ joined #parrot
03:27 cotto within subs, is allocation naive?
03:28 pmichaud no
03:28 pmichaud they're reused within subs, too.  that was kind of the whole purpose :)
03:28 pmichaud (because we had the one sub that had so many registers allocated naively that was causing parrot to take forever)
03:29 pmichaud https://github.com/perl6/nqp-rx/b​lob/master/src/stage0/NQP-s0.pir   # an example generated .pir
03:30 cotto ok
03:30 lucian left #parrot
03:30 JimmyZ joined #parrot
03:31 benabik It made a noticible difference for PAST::Compiler on nqp_pct as well.
03:31 pmichaud rakudo passes all of its spectests
03:33 pmichaud oh, darn, I was on parrot master branch but not the latest master
03:33 pmichaud okay, let me try again :)
03:36 pmichaud (was missing a 'git pull')
03:36 lucian__ joined #parrot
03:37 pmichaud parrot tests pass... nqp-rx tests pass...
03:37 pmichaud just waiting for rakudo master
03:37 lucian_ left #parrot
03:40 lucian__ left #parrot
03:43 pmichaud spectests pass
03:43 pmichaud bootstrap pushed.
03:44 dalek parrot: 8a56bbe | pmichaud++ | ext/nqp-rx/src/stage0/ (4 files):
03:44 dalek parrot: [nqp-rx]:  Update nqp-rx with latest version from nqp-rx repository,
03:44 dalek parrot: makes use of the new register allocator added to PAST::Compiler.
03:44 dalek parrot: review: https://github.com/parrot/parrot/commit/8a56bbe7bf
03:44 dalek parrot: 2cb63ec | pmichaud++ | / (35 files):
03:44 dalek parrot: Merge branch 'master' of github.com:parrot/parrot
03:44 dalek parrot: review: https://github.com/parrot/parrot/commit/2cb63ec6e9
03:45 pmichaud cotto: okay, done.
03:47 cotto pmichaud, thanks
03:47 pmichaud sorry I didn't merge the bootstrap in earlier -- I guess I thought I had done that.
03:47 pmichaud afk for a bit
03:50 cotto After hearing that it's an actual comic, I'm tempted to use "Dogwelder" as a release name.
03:52 pmichaud copyright? trademark?
03:56 cotto not likely to be an issue, but I'll probably avoid it just because it's a somewhat unpleasant mental image.
03:57 daniel-s joined #parrot
04:01 cotto nice
04:01 cotto Attempt to free unreferenced scalar: SV 0x4317ab0, Perl interpreter: 0x1f5c010 at /usr/share/perl5/Perl/Critic/Config.pm line 150.
04:09 cotto looks like it's not easily repeatable, which I guess is good
04:27 daniel-s left #parrot
04:37 bubaflub incoming
04:37 dalek parrot-gmp: 5ed2328 | bubaflub++ | t/integer/kronecker.t:
04:37 dalek parrot-gmp: add tests for kronecker functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_kronecker, mpz_kronecker_si, mpz_kronecker_ui, mpz_si_kronecker, mpz_ui_kronecker
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/5ed2328bda
04:37 dalek parrot-gmp: ecae23d | bubaflub++ | t/integer/remove.t:
04:37 dalek parrot-gmp: add tests for remove functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_remove
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/ecae23d531
04:37 dalek parrot-gmp: 6fc56c7 | bubaflub++ | t/integer/fac.t:
04:37 dalek parrot-gmp: tests for fac functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_fac_ui
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/6fc56c7204
04:37 dalek parrot-gmp: 6a39164 | bubaflub++ | t/integer/bin.t:
04:37 dalek parrot-gmp: add tests for bin functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_bin_ui and mpz_bin_uiui
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/6a39164236
04:37 dalek parrot-gmp: e0da4d4 | bubaflub++ | t/integer/fib.t:
04:37 dalek parrot-gmp: tests for fib functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_fib_ui and mpz_fib2_ui
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/e0da4d4a4f
04:37 dalek parrot-gmp: d6d4371 | bubaflub++ | t/integer/lucas.t:
04:37 dalek parrot-gmp: tests for lucas number functions
04:37 dalek parrot-gmp:
04:37 dalek parrot-gmp: this covers mpz_lucnum_ui and mpz_lucnum2_ui
04:37 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/d6d437193b
04:39 bubaflub msg dukeleto the parrot-gmp test suite now covers all basic arithmetic up to number theory stuff;  all that remains are cmp type functions, basic logic (like xor and what not), random number generators, and sizing functions.  should be 100% covered by this weekend.
04:39 aloha OK. I'll deliver the message.
04:51 soh_cah_toa left #parrot
04:56 B0o-supermario joined #parrot
04:56 B0o-supermario Hi
04:57 cotto hi B0o-supermario
04:57 B0o-supermario Is it possible to compile c++ apps in parrot?
04:57 B0o-supermario Hello cotto
04:57 B0o-supermario ?? Is there a compiler?
04:58 cotto B0o-supermario, no.  There's no C++ compiler that targets a PIR backend.
04:58 B0o-supermario Ok
04:58 B0o-supermario At least C?
04:58 B0o-supermario Is a c++ backend impossible?
04:58 B0o-supermario Or not done yet?
04:58 cotto No.  We've had some attempts to write a partial C compiler,  but it's a deeper problem than we're prepared to invest in.
04:59 B0o-supermario BASIC backend?
04:59 cotto C isn't a huge language, but parsing it (especially as it's used in the real world) is decidedly non-trivial.
04:59 B0o-supermario Ok
04:59 cotto why do you ask?
05:00 B0o-supermario Because i like to code apps in a portable architecture :)
05:00 cotto We try to be portable.
05:00 tadzik B0o-supermario: I have a feeling you're looking in the wrong direction. Parrot is primaly aimed for dynamic languages, so Python, Perl, Ruby, not things like C, C++ or Basic
05:00 cotto There is a basic interpreter though.
05:00 tadzik not that these things won't be possible
05:00 cotto PIRRIC
05:01 cotto not sure how current it is though
05:01 cotto istr that it's NotFound's
05:01 B0o-supermario I know c, c++, php, vb.net, vb, qbasic, vbscript... But nothing of them seems supported in parrot :(
05:01 theory left #parrot
05:02 B0o-supermario Is Bjarne idiot?
05:03 B0o-supermario It doesn't make sense... I'm sad :(
05:03 tadzik not sure if serious. What makes you think so?
05:04 cotto Compilers targeting parrot exist because people are interested in writing and using them.
05:04 B0o-supermario So do you mean... There won't be a vm for languages i write code in?
05:04 cotto My long-term plan is to write a PHP compiler targeting Parrot, but there are other things I want to take care of first.
05:05 B0o-supermario Ok
05:05 B0o-supermario Btw any news about llva?
05:06 cotto llva?
05:06 B0o-supermario Low level virtual architecture
05:06 dalek nqp: 6e4f4db | pmichaud++ | / (3 files):
05:06 dalek nqp: Add PAST::Want nodetype, allows selection of a PAST tree based
05:06 dalek nqp: on rtype signature requested by the caller.
05:06 dalek nqp:
05:06 dalek nqp: This will likely move into Parrot's source tree eventually; I've
05:06 dalek nqp: added it here now so we can test and iterate it more directly
05:06 dalek nqp: until it stabilizes.
05:06 dalek nqp: review: https://github.com/perl6/nqp/commit/6e4f4db287
05:06 cotto Wikipedia tells me that that's part of the llvm project.
05:07 B0o-supermario The article was written by ME
05:08 cotto Do you have a question about Parrot?
05:09 B0o-supermario You Answered the question :)
05:09 cotto wfm
05:09 cotto dukeleto, ping
05:11 sorear B0o-supermario: you're looking for #mono on irc.gimp.net
05:11 sorear erm, irc.gnome.org
05:12 B0o-supermario No not gimp sorry
05:12 B0o-supermario Ok
05:12 sorear they have a VM there for static languages
05:12 B0o-supermario But not gnome: i hate them
05:12 dukeleto cotto: pong
05:12 B0o-supermario Vm for static languages? Interesting
05:12 sorear B0o-supermario: gnome only hosts the IRC
05:12 cotto dukeleto, what was the goal of your grant?
05:13 cotto get embed/extend up to 95% coverage?
05:13 dukeleto cotto: raise test coverage to over 95% in the embed/extend subsystem and improve documentation
05:13 cotto ok
05:13 cotto dukeleto, just making sure I don't lie in NEWS
05:14 B0o-supermario Bye
05:14 cotto dukeleto, anything missing from NEWS?
05:14 dalek parrot: a76217f | cotto++ | NEWS:
05:14 dalek parrot: update NEWS a bit
05:15 dalek parrot: review: https://github.com/parrot/parrot/commit/a76217f4c3
05:15 dukeleto cotto: there is one test that is not in master yet. Should I merge it in? I didn't want to add more stuff before the release
05:15 cotto It's a test.  Throw it in.
05:15 B0o-supermario left #parrot
05:15 cotto if it passes ;)
05:15 dukeleto cotto: then I could delete my leto/embed_grant branch and say that the entire grant is done in 3.5.0
05:15 cotto go for it
05:16 dukeleto cotto: on it, running tests now
05:22 bubaflub left #parrot
05:24 dukeleto error: invalid conversion from ‘INTVAL (*)(INTVAL)’ to ‘void (*)()’
05:24 dukeleto good thing for tests
05:43 cotto awesome.  ops2c segfaults
05:43 cotto sometimes
05:43 cotto dukeleto, what's your eta?
05:46 dukeleto cotto: the length of a fulltest that I just started
05:46 cotto dukeleto, k
05:46 cotto dukeleto, while that happens, is NEWS accurate?
05:51 fperrad joined #parrot
05:52 dukeleto cotto: looking
06:00 dalek parrot: bcee048 | NotFound++ | NEWS:
06:00 dalek parrot: add relevant winxed NEWS
06:00 dalek parrot: review: https://github.com/parrot/parrot/commit/bcee048a88
06:06 dalek parrot: cbabc06 | dukeleto++ | t/src/embed.t:
06:06 dalek parrot: [t] Parrot_sub_new_from_c_func, whiteknight++
06:06 dalek parrot: review: https://github.com/parrot/parrot/commit/cbabc06629
06:06 dalek parrot: ca2b86e | dukeleto++ | t/src/embed.t:
06:06 dalek parrot: Pay the ANSI 89 tax yet again
06:06 dalek parrot: review: https://github.com/parrot/parrot/commit/ca2b86ef6f
06:06 dalek parrot: 69ed7b0 | dukeleto++ | t/src/embed.t:
06:06 dalek parrot: Fix some castings errors in t/src/embed.t
06:06 dalek parrot: review: https://github.com/parrot/parrot/commit/69ed7b0ac2
06:09 cotto dukeleto, all happy?
06:10 dalek parrot: a819f8f | dukeleto++ | NEWS:
06:10 dalek parrot: Update NEWS
06:10 dalek parrot: review: https://github.com/parrot/parrot/commit/a819f8f61a
06:11 dukeleto cotto: just added to NEWS, and fulltest passes for me under g++ on linux
06:11 dukeleto cotto: i am seeing t/library/pg.t fail when all NCI stuff is turned off, because it needs 'p'
06:11 dukeleto cotto: not a huge deal, but wanted to let you know
06:12 dukeleto cotto: i.e. the test fails on my "plain parrot" https://github.com/leto/Util/bl​ob/master/bin/new_parrot_plain
06:12 cotto dukeleto, thanks.  I don't think it's a concern since the default and recommended configuration is to use the nci thunks.
06:12 * dukeleto goes afk for a bit
06:12 dukeleto cotto: sure. good luck on the release!
06:13 dukeleto cotto: should we list the revision of Winxed that is included in the release? Could be useful.
06:13 * dukeleto actually goes
06:15 cotto dukeleto, that's a good idea.
06:29 benabik left #parrot
06:32 plobsing left #parrot
06:32 plobsing joined #parrot
06:37 benabik joined #parrot
06:45 cotto NotFound, when making the winxed bootstrap, could you add the revision number to the generated pir?
06:59 cotto msg lucian I like the pictures of puffins, but you need to scale them down.  4.5M is too big.
06:59 aloha OK. I'll deliver the message.
07:12 NotFound cotto: you mean the svn revision? I'd like better to let this release as is, and use a stable release numbering scheme after it.
07:13 dalek website: cotto++ | Parrot 3.5.0 "Menelaus" Released!
07:13 dalek website: http://www.parrot.org/news/2011/Parrot-3.5.0
07:14 NotFound Oh, it's done.
07:14 NotFound cotto++
07:17 cotto NotFound, I didn't mean right now, just in the future when you have the time to implement it.
07:23 dalek parrot: 3e974d2 | cotto++ | / (9 files):
07:23 dalek parrot: cut the 3.5.0 release
07:23 dalek parrot: review: https://github.com/parrot/parrot/commit/3e974d2d46
07:26 NotFound cotto: sure, the plan is to migrate to git and then use branches and tags to manage release numbers.
07:27 NotFound afk
07:29 Topic for #parrot is now Parrot 3.5.0 "Menelaus" released | http://parrot.org | Log: http://irclog.perlgeek.de/parrot/today
07:33 mj41 joined #parrot
07:41 cotto time to sleep for a bit and hope that nobody finds an egregious error in the release annoucement
07:41 cotto and then, os bridge
08:45 SHODAN joined #parrot
09:16 daniel-s joined #parrot
09:44 contingencyplan left #parrot
09:45 woosley left #parrot
10:04 Drossel left #parrot
10:04 Kulag joined #parrot
10:11 Kulag left #parrot
10:11 Kulag joined #parrot
10:34 rurban_ joined #parrot
10:37 rurban left #parrot
10:37 rurban_ is now known as rurban
10:49 jsut joined #parrot
10:54 jsut_ left #parrot
11:09 ligne joined #parrot
11:15 ambs joined #parrot
11:35 jsut_ joined #parrot
11:40 jsut left #parrot
11:50 cotto left #parrot
12:13 bacek_at_work left #parrot
12:27 bacek_at_work joined #parrot
12:32 redicaps joined #parrot
12:49 bluescreen joined #parrot
12:52 bubaflub joined #parrot
12:56 JimmyZ_ joined #parrot
12:58 JimmyZ left #parrot
12:58 JimmyZ_ is now known as JimmyZ
13:01 smash joined #parrot
13:01 smash hello everyone
13:03 Coke smash: hio
13:08 bubaflub cotto++ on the release
13:10 whiteknight joined #parrot
13:10 whiteknight good morning, #parrot
13:12 PerlJam good morning whiteknight
13:13 redicaps left #parrot
13:14 daniel-s I built rakudo and parrot from the master branches on github a few (I think 2) days ago
13:14 daniel-s is that very close to this most recent release
13:22 whiteknight hello PerlJam. How are you today?
13:23 whiteknight daniel-s: Probably pretty close. A code freeze went out on monday, and I don't think there were many big changes before that
13:26 PerlJam whiteknight: mostly tired.  Need caffiene
13:37 contingencyplan joined #parrot
13:40 daniel-s left #parrot
13:41 daniel-s joined #parrot
13:57 atrodo =~
13:58 SHODAN left #parrot
14:08 whiteknight hello atrodo
14:08 atrodo Morning whiteknight
14:09 atrodo I had a chance to look over some of the docs for the new embedding interface
14:18 bluescreen left #parrot
14:19 whiteknight atrodo: I didn't last night, sorry
14:20 whiteknight are the docs helpful as is?
14:30 atrodo whiteknight> It's a good overview.  I'm not quite clear on what I need to do yet
14:31 atrodo whiteknight> To give some background, I'm going to have chunks of text that I need to compile with a known HLL (winxed right now)
14:31 atrodo then be able to invoke it with paramaters
14:34 whiteknight ok
14:35 whiteknight Invoking functions through the embedding API is going to be a bit of a pain.
14:35 whiteknight You need to construct a CallContext PMC, insert values into it, and then make a call. I think it's Parrot_api_invoke
14:36 whiteknight or something like that
14:36 whiteknight look in src/embed/pmc.c for most of those routines
14:39 daniel-s left #parrot
14:48 dmalcolm joined #parrot
14:56 dalek nqp: bcfe1f0 | pmichaud++ | tools/build/PARROT_REVISION:
14:56 dalek nqp: Bump PARROT_REVISION to 3.5.0 release.
14:56 dalek nqp: review: https://github.com/perl6/nqp/commit/bcfe1f009e
14:56 dalek nqp: c62322b | pmichaud++ | / (5 files):
14:56 dalek nqp: Add initial version of nqp:: pseudo-opcode space for low-level primitives.
14:56 dalek nqp: review: https://github.com/perl6/nqp/commit/c62322b88c
14:58 atrodo I'm up to new ideas on how to do it, but I'm going to have chunks of code that I'll be running multiple times with varying paramaters
15:00 whiteknight I'll ask the dumb question now, is there any way to write some or all of it in a language running on Parrot?
15:02 whiteknight I ask because calling PIR methods from C or C++ is not exactly easy or optimized for
15:02 whiteknight the embedding API is used more frequently for loading in a bytecode file, then executing it, or executing bits of it
15:03 whiteknight You're going to find yourself doing in 10 lines of C code things that are trivially easy in PIR
15:03 whiteknight 10 or more lines
15:03 moritz in pir you're in an explicit context of an interpreter, context, HLL etc.
15:03 moritz I can see how that gets ugly from the outside
15:14 whiteknight right, every API call needs to marshal data to the correct formats (the embedding API doesn't only offers a few methods, not a million for each possible parameter type), set up error handling for graceful exit, set up a context, set up the GC stack top, etc
15:15 whiteknight In general, it's better to get inside Parrot, and run things in there, instead of trying to puppet it from the outside
15:15 whiteknight What you can do is create something like a dynpmc that will run from inside Parrot. Then use the dynpmc with the more friendly extending API to play with things
15:16 whiteknight or, set up your draak program as a dynamically-loaded NCI library, and call it from PIR
15:21 atrodo It seems to me like a fairly common use case for embedding, passing a string of HLL code that needs to be executed inside of some environment.  But maybe that's a me issue
15:21 cotto joined #parrot
15:22 atrodo whiteknight> And there's another block I had issues with last time, being able get the data needed for a particular chunk
15:23 * cotto is at os bridge
15:24 atrodo But I assumed I could solve that since at worse I could map to a hash
15:24 jsut joined #parrot
15:27 whiteknight atrodo: It might be common in the future, but hasn't been so common yet. If we need to add new API functions to make that easier, we can try to do that
15:28 whiteknight By convention, the API operates on STRING and PMC pointers, not on char* and void(*)(void) pointers, or whatever
15:28 whiteknight so at the very least you are going to need to wrap up your data in STRING and PMCs
15:29 atrodo That's probably not going to be an issue
15:29 atrodo also, and this is my problem not parrot's, draak is in pascal, not c
15:29 jsut_ left #parrot
15:29 whiteknight pascal? People still use pascal?
15:29 atrodo well, technically, delphi, but yes
15:29 cotto They use COBOL, so why not.
15:29 whiteknight okay, dephi is a little bit beter
15:30 cotto well, not all of them
15:30 whiteknight The first programming class I ever took was in pascal. Back in highscool
15:30 whiteknight school
15:30 atrodo highs cool
15:30 whiteknight All the other kids were doing exercises with records and arrays, I wrote a clone of the old windows "Mystify" screensaver
15:30 * atrodo now knows what whiteknight did when he was younger
15:31 atrodo hehe, sounds like my collage years
15:32 whiteknight I barely graduated from highschool. My GPA was so terrible it was amazing I made it into college at all
15:36 whiteknight At least I was learning things when I goofed off in programming class
15:41 whiteknight left #parrot
15:59 cotto left #parrot
16:12 mj41 left #parrot
16:12 dalek nqp: 3bb5b1c | pmichaud++ | / (3 files):
16:12 dalek nqp: nqp::downcase/nqp::upcase should be nqp::lc/nqp::uc.  moritz++
16:12 dalek nqp: review: https://github.com/perl6/nqp/commit/3bb5b1cbac
16:12 dalek nqp: 900cf14 | pmichaud++ | src/stage0/ (6 files):
16:12 dalek nqp: Re-bootstrap to enable nqp:: ops within NQP itself.
16:12 dalek nqp: review: https://github.com/perl6/nqp/commit/900cf14206
16:14 plobsing left #parrot
16:27 ligne evening all
16:31 dukeleto ligne: mornin'
16:31 davidfetter joined #parrot
16:31 dukeleto cotto++ # 3.5.0
16:35 * davidfetter waves to dukeleto
16:40 theory joined #parrot
16:40 * dukeleto waves back
16:40 ligne the new Parrot_sub_new_from_c_func test in t/src/embed.t has been failing with --without-libffi --without-extra-nci-thunks
16:40 dukeleto ligne: blarg!
16:41 Kulag left #parrot
16:41 dukeleto ligne: can you gist/nopaste the full output
16:41 dukeleto ligne: that is my fault
16:41 Kulag joined #parrot
16:42 ligne dukeleto> not much to show i'm afraid:  http://nopaste.info/27631eb995.html
16:43 ligne fwiw, that's building with gcc version 4.5.1 20100924 (Red Hat 4.5.1-4), x64 linux.
16:58 cotto joined #parrot
17:11 plobsing joined #parrot
17:12 dalek lalrskate: 50047d5 | tcurtis++ | s (7 files):
17:12 dalek lalrskate: Add LALR.DPDA classes.
17:12 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/50047d572f
17:12 dalek lalrskate: 87d9837 | tcurtis++ | setup.winxed:
17:12 dalek lalrskate: Organization in setup.winxed.
17:12 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/87d983700b
17:12 dalek lalrskate: f09d406 | tcurtis++ | t/dpda.t:
17:12 dalek lalrskate: Add some simple DPDA tests.
17:12 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/f09d406d3d
17:12 dalek lalrskate: 445e7c1 | tcurtis++ | examples/practical-translators-g-0.winxed:
17:12 dalek lalrskate: Change G_0 example to build a CFSM and pretty-print it as DOT.
17:12 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/445e7c1e9f
17:12 dalek lalrskate: 4115f64 | tcurtis++ | s (2 files):
17:12 dalek lalrskate: Implement building the CFSM. Currently buggy.
17:12 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/4115f64eef
17:12 dalek lalrskate: e68eae8 | tcurtis++ | t/build_cfsm.t:
17:12 dalek lalrskate: build_CFSM tests.
17:13 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/e68eae8b43
17:13 dalek lalrskate: 0a8530f | tcurtis++ | src/LALR/DPDA.winxed:
17:13 dalek lalrskate: Formalize epsilon handling in DPDAs.
17:13 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/0a8530f253
17:13 dalek lalrskate: 6bcbf42 | tcurtis++ | src/LALR/DPDA/ReadTransition.winxed:
17:13 dalek lalrskate: Remove overly conservative constraint on ReadTransition.symbol.
17:13 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/6bcbf42b7c
17:13 dalek lalrskate: e6f3ea8 | tcurtis++ | src/LALR/Generator/BuildCFSM.winxed:
17:13 dalek lalrskate: Update build_CFSM to account for DPDA changes.
17:13 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/e6f3ea8ff0
17:13 dalek lalrskate: 9643bae | tcurtis++ | t/build_cfsm.t:
17:13 dalek lalrskate: Add test case for the problems with G_0.
17:13 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/9643bae558
17:13 Coke so, for writing things for parrot's stdlib, do we have a community preference of winxed vs. nqp vs. pir ?
17:14 dukeleto Coke: i think the preference is up to the individual, but Winxed and NQP are preferred over PIR
17:15 dukeleto Coke: we are moving towards "Only use PIR if you have no other choice", methinks. PIR is great as a target language for compilers still, of course.
17:15 Coke dukeleto: ok. how about winxed vs. nqp?
17:16 NotFound I know more people that likes to write Z80 assembler than people that likes writing pir.
17:16 Coke I can see how it would be nice to (a) have a standard, but (b) support diversity.
17:16 dukeleto Coke: people who prefer perlishness should use NQP and people who prefer javascriptness should use Winxed
17:16 Coke Notfound: I have written so much PIR, I'm fine with it now.
17:16 Coke dukeleto: ok. so diversity >> a standard. that's fine.
17:17 NotFound Coke: I can write it, but I prefer delegate the task to winxed.pbc
17:18 dodathome joined #parrot
17:18 Coke we need a better pointer than "the winxed repository" in the README.
17:19 NotFound Note that my comparaison is biased. I know a bunch that likes to write Z80 assembler because I wrote a Z80 assembler :D
17:19 Coke (was looking for docs on language syntax, etc. There's no way to get back to the repo from the readme.)
17:19 bubaflub afternoon dukeleto
17:20 NotFound Coke: ups, I forgot to put a link to the main web site, sorry.
17:20 * davidfetter wonders whether dukeleto is in morning or afternoon atm
17:21 * dukeleto is still enjoying the morning of the longest day of the year
17:21 Coke NotFound: no worries.
17:21 dalek parrot: eb78bb5 | coke++ | ext/winxed/README:
17:21 dalek parrot: fix spelling typo.
17:21 dalek parrot: review: https://github.com/parrot/parrot/commit/eb78bb518a
17:21 dukeleto Coke: http://whiteknight.github.co​m/Rosella/winxed/index.html looks useful
17:22 dukeleto bubaflub: nice work! You are making awesome progress on parrot-gmp
17:22 dukeleto looks like http://whiteknight.github.com/R​osella/winxed/introduction.html needs some love
17:22 bubaflub dukeleto: yeah, i'm pretty stoked.  i'm shooting for full coverage by the end of this week.  maybe a refactor of the test suite after that.
17:24 dalek parrot: e9dddc3 | NotFound++ | ext/winxed/README:
17:24 dalek parrot: add url of the Winxed web site
17:24 dalek parrot: review: https://github.com/parrot/parrot/commit/e9dddc3ce4
17:26 smash left #parrot
17:30 Coke NotFound++
17:31 Coke what's the file extension for winxed?
17:31 Coke *preferred
17:33 NotFound I use .winxed
17:34 * JimmyZ suggest .wxd
17:35 Eclesia joined #parrot
17:35 Eclesia hi
17:36 NotFound We don't nee TLAs. The ms-dos times are long gone.
17:37 PerlJam NotFound: yet we still use the term "extension" as if it were an "extended filename".
17:39 bubaflub i've used .winxed in my project except for my tests which are all .t
17:39 NotFound PerlJam: yes, names usually live longer than its original meaning.
17:40 cotto left #parrot
17:41 NotFound Let me elaboarate a bit more: if 'prefered' means 'most used', looking at my usages and plobsing and whiteknight ones, .winxed is the winner. It it means 'recomended by the author', the same.
17:42 NotFound I'm open to suggestions from the community, so please build a big community ;)
17:48 JimmyZ left #parrot
17:49 Eclesia hi NotFound. quick question : could you add a few example in winxed project on how to run/compile more then one .winxed file ?
17:51 Eclesia (like for example, how to include another lib, like rosella)
17:52 cotto joined #parrot
17:53 NotFound Eclesia: I'll try to write something.
18:05 cotto left #parrot
18:06 Eclesia is there an xml api in parrot ?
18:07 Eclesia and zip api ?
18:10 dukeleto Eclesia: we have some tools to deal with zip and tar files, not sure about xml
18:10 dukeleto Eclesia: runtime/parrot/library/Archive/Zip.pir
18:10 dukeleto Eclesia: runtime/parrot/library/Archive/Tar.pir
18:13 Eclesia thanks
18:18 ligne if anyone is interested, i've been playing around with extending checkdepend to handle .pir files:  <https://github.com/ligne/p​arrot/commits/checkdepend>
18:21 bubaflub ligne: looks interesting.  how's the work going?
18:22 dukeleto ligne: cool!
18:22 bubaflub ligne: that's a nice GDB hack
18:22 ligne bubaflub> nothing since the weekend, i'm afraid.  $day_job getting in the way :-)
18:23 ligne thanks.  though i fear it'll take a few more showers before i feel properly clean again...
18:25 bubaflub ligne: if you're going to be around in a few hours you should stop by #parrotsketch and let the other developers know and maybe they'll give you some feedback about it
18:26 ligne it's still finding a lot of (probably) false positives, but i'm not really familiar enough with the intricacies of the build system to be sure
18:31 ligne bubaflub> what time is that?  parrot.org just says 20.30.  would that be UTC?
18:31 bubaflub ligne: yes, that UTC.  it's currently 18:30 UTC, so 2 hours.
18:32 ligne righto.  i'm in BST, so the conversion is nice and easy!
18:33 bubaflub haha. yeah, i'm in Illinois and the daylight savings time always gets me.
18:34 rurban_ joined #parrot
18:37 Eclesia NotFound: sorry to bother you again. how do I a use a class from a different namespace ? (error I have : Class '[ 'Rosella' ; 'FileSystem' ; 'File' ]' not found ) . is there a import keyword ?
18:37 rurban left #parrot
18:37 rurban_ is now known as rurban
18:41 * dukeleto won't be at #ps today
18:44 atrodo It helps to spell parrotsketch correct, AND be on the right irc network
18:50 davidfetter atrodo, did you happen across something that was already occupied over on fleanode?
18:51 cotto joined #parrot
18:51 atrodo davidfetter> actually, i was on quakenet
18:52 atrodo so a very empty room, which is very noticeable
18:54 jsut_ joined #parrot
18:59 jsut left #parrot
19:23 ligne is now known as ligne_work
19:39 NotFound Eclesia: try $load 'Rosella/FileSystem/File.pbc';
19:40 Eclesia NotFound: to late, already found it
19:44 TiMBuS left #parrot
19:47 TiMBuS joined #parrot
19:51 Eclesia NotFound: it's not possible to concatenate strings in a print() ?
19:52 ligne joined #parrot
19:52 NotFound Eclesia: Why not?
19:53 Eclesia NotFound: I have something like that : print(" - Compiling source : " + file.short_name());
19:53 Eclesia but it prints '0'
19:55 NotFound Eclesia: function call results are tretaed like var, so + in that case is addition, not concatenation. You need to coerce ro string. But in print and say is easier to use several arguments.
19:55 NotFound print(" - Compiling source : ", file.short_name());
19:56 benabik Is there a reason #parrotsketch has no /topic?
19:57 Eclesia NotFound: I can print as much parameters as I want separated by ',' ?
19:57 NotFound Eclesia: yes
19:57 Eclesia nice :) like a java '...'
19:57 Eclesia wasn't expecting this. ^^ good news
19:59 benabik aloha, going to yapc::na?
19:59 aloha benabik: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51 or benabik
19:59 tadzik or? /o\
19:59 tadzik good it's not xor :)
20:01 cotto only one person at a time can go to any given conf
20:01 cotto #ps in 29
20:02 cotto dukeleto, ping
20:08 Eclesia NotFound: I see it's possible to compile from .wx to .pir , but is it possible to compile directly .wx to .pbc ?
20:09 NotFound Eclesia: not with the installed version for a now.
20:09 Eclesia -cc -> compile to pbc would be nice for futur version then ;)
20:11 autark joined #parrot
20:11 Eclesia NotFound: so for now, if I want to run a winxed file which use another winxed file. I first first compile the second to .pbc and add a $load in the first. right ?
20:12 Eclesia I must first*
20:12 NotFound Eclesia: right
20:12 Eclesia NotFound: what if I have cross references between them ?
20:14 ligne left #parrot
20:14 NotFound Eclesia: static binding of functions is limited to the current files. For other files, is the same as if they weren't written in winxed.
20:14 ligne joined #parrot
20:15 NotFound current file
20:16 dodathome left #parrot
20:19 mj41 joined #parrot
20:19 whiteknight joined #parrot
20:21 bacek_at_work left #parrot
20:21 bacek_at_work joined #parrot
20:25 darbelo joined #parrot
20:26 dalek Rosella/gh-pages: d4afe69 | Whiteknight++ | winxed/index.md:
20:26 dalek Rosella/gh-pages: fix typo. Thanks to (Andrew Johnson)++ for the report
20:26 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/d4afe69bde
20:26 * whiteknight is actually going to be able to attend #ps today. Fun times!
20:27 benabik \o/ whiteknight!
20:27 cotto woot
20:27 whiteknight I got out of work early today to meet up with a home inspector, we're done that nonsense so here I am!
20:27 cotto I've been sitting next to chromatic for the last 10 minutes and didn't realzie it,
20:27 Eclesia whiteknight: hi. a first feedback on rosella. on Directory object, you made methods get_subdirectories and get_files. there should be a method : list_entries which return both.
20:27 whiteknight cotto: lucky you! capture some of his essence in a small glass bottle and mail it to me
20:28 whiteknight cotto: but try to do it in a non-creepy way
20:28 whiteknight Eclesia: sounds reasonable.
20:28 cotto he says no
20:29 benabik What #parrot people are giving talks at YAPC::NA?
20:29 cotto me, dukeleto and kid51
20:29 darbelo "capture" does not require consent.
20:29 cotto and chromatic, though I don't think he's talking about Parrot
20:30 benabik I'll have to make sure to plan my days around that.  :-D  Haven't even really looked at what talks are there.
20:30 cotto dukeleto and I are back-to-back
20:30 Eclesia whiteknight: the 'get' is also unusual for me. but I guess it's form my java background ^^ (java has listXXX methods)
20:31 whiteknight Eclesia: names are not set in stone. I'm not always very consistent
20:31 cotto #ps in now
20:31 whiteknight I put the verb in there because it is a lookup, not just returning an existing array
20:31 soh_cah_toa joined #parrot
20:32 kid51 joined #parrot
20:33 NotFound This method no verb.
20:33 darbelo Eclesia: Fun tidbit: At work naming an ObjC 'getter' method with a verb at the beginning is a shooting ofence.
20:34 NotFound I think the disputes about getter names have an easy solution: never ever use getter methods.
20:34 benabik NotFound: Make all objects write-only?
20:34 Eclesia darbelo: At work I would be whip to blood if I named a method with a _ in it :D
20:35 NotFound benabik: no, just don't care if it 'get' something or return something by some other way.
20:35 whiteknight Eclesia: it's important to follow standards and be consistent. I care less about the specific rules than I care about consistency
20:35 whiteknight When I'm coding C#, I do it AllInCamelCase
20:35 whiteknight or, whatever that's called
20:35 soh_cah_toa whiteknight: absolutely
20:35 Eclesia whiteknight: camelcase , same in java
20:36 NotFound whiteknight: if you are always inconsistent, you are being consistent.
20:36 darbelo Eclesia: The reigning convention in the iPhone team is that a method that returns stuff is called 'stuff'
20:36 dalek Rosella: 0a337e4 | Whiteknight++ | src/filesystem/Directory.winxed:
20:36 dalek Rosella: Refactor Directory methods .get_files and .get_subdirectories. Add a .get_entries which returns both. Eclesia++ for the idea
20:36 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/0a337e4343
20:37 benabik In languages that support it, I like "get_stuff()" to be named "stuff()" and "set_stuff(value)" to be named "stuff(value)"
20:37 whiteknight Eclesia: I haven't tested that commit yet. But it should do what you are talking about. Directory.get_entires returns everything
20:37 benabik Even better:  "obj.stuff" and "obj.stuff = value".  But that's more syntatic sugar than most languages like.
20:37 Eclesia thanks
20:37 kid51 left #parrot
20:37 whiteknight Eclesia: nothing is set in stone. Feedback and requests (and patches and pull requests!) are always welcomed
20:39 NotFound benabik: what amazes me sometimes is thinking about too much work optimizing and jitting for speed, and then doing such kind of things to lose speed.
20:40 Eclesia whiteknight: I don't if that's of interest, but I transposed one of my java classes for x3.64 in winxed : http://pastebin.com/dLBUvC5i . concatenation doenst give the same result so I encoded each one using chr(...) . run the x364Test function to see what it does
20:40 Eclesia I don't know*
20:40 benabik NotFound: Ideally setters and getters are simple enough to be something a good JIT compiler will inline.
20:40 NotFound benabik: not if you need to introspect to find them.
20:41 whiteknight Eclesia: oh wow, looks good
20:41 benabik NotFound: Yes.  if "obj.attr = val" becomes "obj.findMethod("attr").call(val)", that's poor.
20:41 NotFound Eclesia: concatenation should work well after yesterday fixes.
20:42 whiteknight Eclesia: we have bindings to libcurses in the parrot repo too. Those might be of interest to you
20:42 Eclesia NotFound: I don't think it was winxed fault. I had the same behavior when I write it in pir before
20:43 whiteknight Eclesia: if you can put together a little test case and/or file a bug report that would be most appreciated
20:43 NotFound Eclesia: When you wrote in pir what?
20:43 whiteknight bugs are nice, until somebody finds them
20:44 Eclesia whiteknight: I don't know if it's a bug, parrot do not have an equivalent to java 'byte' .
20:44 NotFound Anyway, there was a winxed bug, it wasn't generating the expected pir. Now it does.
20:45 NotFound Eclesia: Have you read "Thinking in java"?
20:45 Eclesia i did
20:45 whiteknight NotFound: I found a fun little winxed bug yesterday, I'll put together a test case for you
20:45 NotFound Eclesia: Then stop doing it ;)
20:46 whiteknight I found it by being stupid
20:46 * Eclesia likes java. just oracle how is destroying everything
20:46 Eclesia who*
20:46 NotFound Eclesia: think about what you want to do, not about how you do it in java,
20:46 * benabik prefers Scala to Java, but enjoyed writing a compiler on the JVM
20:47 Eclesia scala is so full of {([ a it json, it gets unreadeable very fast
20:47 Eclesia like json*
20:48 dalek Rosella: b700024 | Whiteknight++ | src/filesystem/Directory.winxed:
20:48 dalek Rosella: +docs and cleanup
20:48 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/b700024b5c
20:49 NotFound Eclesia: "equivalent to java 'byte'" isn't helpful. Depending on what you want to do, the appropiate type may be different.
20:49 benabik Eclesia: Not sure how you mean.  One of the things I like about Scala is all the places I can leave out excess punctuation.
21:02 Eclesia time to sleep, ++ all
21:03 Eclesia left #parrot
21:03 dalek website: benabik++ | GSoC 6: Q:PIRsand
21:03 dalek website: http://www.parrot.org/content/gsoc-6-qpirsand
21:03 benabik Ooops, typo...
21:04 benabik New URL: http://www.parrot.org/content/gsoc-5-qpirsand
21:12 bubaflub whiteknight: i'm willing to help straighten out some of the IMCC line-number nonsense. though my expertise in yacc/lex land is very limited.  would having basic test cases that fail help?  would removing heredocs from our PIR files help?
21:14 * soh_cah_toa is very happy to see people willing to fix imcc line numbers
21:15 benabik bubaflub: My experience is limited, but my compiler class was fairly recent, so I'm willing to help out with that project.  :-D
21:15 bubaflub i think one way or another a good first step is to have simple tests that fail to give the correct line numbers
21:15 benabik +1  It's hard to tell what's driving it wrong without minimal examples.
21:16 bubaflub yeah, though i imagine actually running some of this stuff through the debugger will be painful - stepping through PIR to the generated C and then trying to figureout where in our grammar that's coming from...
21:17 benabik bubaflub: That's why minimal examples really help.  It points out which bits of code are wrong.
21:18 bubaflub benabik: agreed.
21:19 bubaflub soh_cah_toa: i'm looking overy our old blog post about IMCC line numbers - is there a way we can do simple stuff in PIR only or do we need some C to grab the line number information?
21:20 soh_cah_toa bubaflub: c
21:20 bubaflub soh_cah_toa: i read that as Spanish for "Yes".
21:23 soh_cah_toa bubaflub: https://github.com/parrot/parrot/commit/​2178eb0ebe102a1b609eb0fdbb5003d6fd0a050d
21:23 soh_cah_toa bubaflub: that's the old code i was using
21:25 bubaflub soh_cah_toa: great
21:25 PerlJam See pdds/pdd19_pir.pod around line 354  (if this isn't useful, just ignore me  :)
21:26 PerlJam bubaflub: ^-- that was for you
21:26 * PerlJam wanders off again
21:26 ambs left #parrot
21:27 dalek lalrskate: aae3f9a | tcurtis++ | src/LALR/ (2 files):
21:27 dalek lalrskate: Fix the bug.
21:27 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/aae3f9a429
21:27 bubaflub PerlJam: ok
21:34 dalek parrot: 86c8b87 | fperrad++ | docs/book/pct/ch04_pge.pod:
21:34 dalek parrot: [doc] remove formatting in code section
21:34 dalek parrot: review: https://github.com/parrot/parrot/commit/86c8b874ea
21:39 cotto left #parrot
21:41 fperrad left #parrot
21:42 mj41 left #parrot
21:43 bubaflub soh_cah_toa: so here's what i'm thinking - basically a custom runcore that just grabs the line number and prints it out in between each line of execution.  then some tests to compare the output of that with what it should be.
21:44 bubaflub soh_cah_toa: or better yet, not a runcore but a separate program that uses the embedding interface.  i wonder if that would work.
21:46 Patterner left #parrot
21:46 PurityControl joined #parrot
21:46 PurityControl is now known as Patterner
21:46 soh_cah_toa are you talking about just hbdb or parrot/imcc in general?
21:49 bubaflub soh_cah_toa: just something small to test line number stuff
21:49 soh_cah_toa i'm trying to understand the need for a runcore though
21:50 soh_cah_toa b/c runcores have no concept of line numbers. they only operate on the opcode stream. so within the main while(pc) { }, it's not guaranteed that each iteration corresponds to each line
21:54 bubaflub soh_cah_toa: ah, ok.
21:54 bubaflub soh_cah_toa: so what i'd need is a separate program then
21:58 soh_cah_toa although, i suppose you could check to see if the current iteration in while(pc) is a new line. maybe something like this:
21:58 soh_cah_toa int old_num;
21:58 soh_cah_toa while(pc) {
21:58 soh_cah_toa int new_num = foo_get_line_number();
21:58 soh_cah_toa if (new_num == old_num) continue;
21:58 soh_cah_toa else printf("new_num\n");
21:58 soh_cah_toa }
22:01 bubaflub soh_cah_toa: ok, that makes sense
22:03 soh_cah_toa bubaflub++ for taking time to look at this nonsense
22:03 soh_cah_toa this makes me very happy :)
22:13 whiteknight You know what always bugs me? VTABLE_get_string(interp, PMCNULL) doesn't return STRINGNULL
22:13 whiteknight I understand *why* that is what it is, but it always bites me when I'm coding
22:14 alester joined #parrot
22:14 whiteknight and since winxed uses the keyword "null" for both PMCNULL and STRINGNULL, it's very easy to run into that problem, when null is a valid value to be passed to a function as a string
22:15 bubaflub soh_cah_toa: let me summarize what i'm thinking just to see if i'm on the right track - we need a simple runcore that while it's in the main loop prints out the line number any time it changes.  then we need simple PIR files that we know how they will execute.  finally, we'll need some kind of test harness that compares what is actually outputted by the runcore and what we expect.
22:15 NotFound whiteknight: maybe the calling conventions should take care of some cases.
22:15 whiteknight yes, calling conventions is where I run into it the most
22:16 daniel-s joined #parrot
22:19 theory left #parrot
22:19 theory joined #parrot
22:20 particle1 joined #parrot
22:23 particle left #parrot
22:24 PacoLinux left #parrot
22:26 darbelo tcurtis: ping.
22:26 tcurtis darbelo: pong
22:26 darbelo Hey. I'm mostly back among the living. Hou have you been?
22:27 darbelo How*
22:29 davidfetter .oO(braaaaaainns)
22:29 tcurtis darbelo: alright. Running behind somewhat, though. Just fixed a bug in my CFSM-building code. Hopefully will get some of the other LR(0) parsing stuff done tonight.
22:29 cotto joined #parrot
22:29 tcurtis Though I won't be able to push it until the morning, since I'll be back at my apartment, which doesn't have working Internet yet.
22:29 darbelo Ouch.
22:30 darbelo Well, a bit less ouch with git. But still ouch.
22:30 tcurtis Well, $dayjob also has air conditioning, unlike my apartment, so I'd probably spend most of my time there anyway.
22:31 soh_cah_toa bubaflub: i think that'd make a great first test
22:33 darbelo In my case, $dayjob has a way better coding atmosphere. I'm way more productive there, but the productivity gets spent on actual work...
22:35 tcurtis $dayjob is very laidback for me, so I can go there even when I'm not actually working for it. (Had to avoid saying "My $dayjob" because I don't want a new one yet. :)
22:50 dalek Rosella/event_queues: 97c1410 | Whiteknight++ | src/event/ (2 files):
22:50 dalek Rosella/event_queues: Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary
22:50 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/97c1410fd6
22:50 dalek Rosella/event_queues: 370bda6 | Whiteknight++ | t/event/EventManager.t:
22:50 dalek Rosella/event_queues: Fill in the rest of the tests for Event.Manager
22:50 dalek Rosella/event_queues: review: https://github.com/Whiteknig​ht/Rosella/commit/370bda60cd
22:50 dalek Rosella/gh-pages: 922a260 | Whiteknight++ | libraries/event.md:
22:50 dalek Rosella/gh-pages: Rework Event docs to include Queue. Add a quick code example for NQP
22:50 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/922a260777
22:50 dalek Rosella: 97c1410 | Whiteknight++ | src/event/ (2 files):
22:50 dalek Rosella: Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary
22:50 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/97c1410fd6
22:50 dalek Rosella: 370bda6 | Whiteknight++ | t/event/EventManager.t:
22:50 dalek Rosella: Fill in the rest of the tests for Event.Manager
22:50 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/370bda60cd
22:50 dalek Rosella: 2ca724d | Whiteknight++ | / (7 files):
22:50 dalek Rosella: Merge branch 'event_queues'
22:50 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/2ca724db24
22:50 dalek Rosella: 3fe6474 | Whiteknight++ | src/event/Manager.winxed:
22:50 dalek Rosella: de-null the queue name before we check if the queue exists
22:50 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/3fe6474bb5
22:51 whiteknight tcurtis: your apartment sounds a lot like the house I am buying
22:51 whiteknight no internet access, no airconditioning
22:52 tcurtis whiteknight: we have ceiling fans in every room.
22:52 whiteknight oh, we have out-of-code electrical wiring
22:52 whiteknight which is almost as good
22:56 dalek parrot: e612808 | NotFound++ | / (2 files):
22:56 dalek parrot: vtable get_bool in UnManagedStruct
22:56 dalek parrot: review: https://github.com/parrot/parrot/commit/e6128081a6
22:59 NotFound whiteknight: the advantage is that you don't need to maintain legacy stuff ;)
22:59 tcurtis darbelo: do you have any questions, statements, imperatives, or suggestions on your mind? (Including "HURRY UP AND GET STUFF ACTUALLY PARSING!" :)
23:00 darbelo I was actually reading the code now. "Get it parsing" sounds like a good enough goal for now.
23:01 * tcurtis is also planning to add more explanatory comments tonight.
23:01 darbelo Once it's parsing you can iterate from there.
23:02 darbelo I might be able to free up some time to cook up some test cases for you this/next week.
23:04 daniel-s left #parrot
23:04 darbelo If I get the complexity right we might be able to achieve a sort of "testcase ramp" that you can use to guide yourself through development.
23:06 tcurtis darbelo: ooh. that would be very helpful.
23:08 tcurtis darbelo: even if you just were to get them to me in a BNF-ish format, it would be quite helpful. Converting them to actual tests wouldn't take me much time.
23:10 darbelo I'm not sure I'll be able to pull it off, since I'm not really sure I have enough of the literature in my head to go "The only difference in parsing this and that is feature X" for anything more than toy examples.
23:10 darbelo But I'll give it a shot.
23:11 Tene left #parrot
23:12 darbelo Even if I cant make a "test ladder" I'll still be whipping up some test cases for you.
23:12 tcurtis darbelo: That's great. Thank you.
23:13 darbelo tcurtis: No problem.
23:19 whiteknight left #parrot
23:31 tcurtis darbelo: would you mind if I head out soon?
23:32 darbelo No prob.
23:32 darbelo I should probably get away from this screen while I still have retinas.
23:33 darbelo mail/msg me if you need anything.
23:34 tcurtis darbelo: will do. Good luck with retaining your retinas!
23:36 whiteknight joined #parrot
23:49 dalek parrot: c412e89 | Whiteknight++ | / (2 files):
23:49 dalek parrot: Merge branch 'whiteknight/add_vtable_override'
23:49 dalek parrot: review: https://github.com/parrot/parrot/commit/c412e89401
23:54 Tene joined #parrot
23:58 cotto left #parrot

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

Parrot | source cross referenced