|
Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 17 May 2011. |
|||
| cotto_work | jnthn__: great. #perl6? | 00:00 | |
| benabik | bacek_at_work: ping | 00:01 | |
| 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>. | ||
| dalek | nxed: r1057 | NotFound++ | trunk/t/ (3 files): reorganize and improve string literals and chr tests |
00:06 | |
| benabik | cotto_work: bacek asked me to poke him this morning, so hopefully he'll be around in a bit. | 00:07 | |
|
00:10
kid51_at_dinner left
00:11
NotFound_b joined
|
|||
| NotFound_b | soh_cah_toa: you should use a PMC for the result of readline_interactive, not a string. | 00:11 | |
| And check that pmc for nullness before using it. | 00:12 | ||
|
00:25
daniel-s left
|
|||
| bubaflub | incoming | 00:33 | |
| dalek | rrot-gmp: 4f4d4f8 | bubaflub++ | t/integer/invert.t: add tests for invert this covers mpz_invert |
00:34 | |
| rrot-gmp: d027685 | bubaflub++ | t/integer/jacobi.t: add tests for jacobi functions this covers mpz_jacobi |
|||
| rrot-gmp: 83fc7b6 | bubaflub++ | / (5 files): refactor aliases list out to conf |
|||
| rrot-gmp: 58de1f9 | bubaflub++ | src/GMP/Integer. (2 files): aliases for jacobi functions |
|||
| rrot-gmp: d18d452 | bubaflub++ | t/integer/legendre.t: tests for legendre functions this covers mpz_legendre |
|||
| bacek_at_work | benabik, pong | 00:49 | |
| benabik | \\o/ bacek_at_work | 00:50 | |
| bacek_at_work | o/ | ||
| benabik, how it's going? | |||
| benabik | bacek_at_work: Pretty good, although decoding the PIR in some of these methods is driving me crazy. | 00:51 | |
| bacek_at_work | benabik, I understand your feelings :) | 00:52 | |
| sorear | o/ bacek_at_work | ||
| bacek_at_work | aloha, sorear | ||
| benabik, any obvious problems/blockers/etc? | 00:53 | ||
| 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:55 | |
| bacek_at_work | benabik, just deprioritize Q:PIR blocks. Make newPOST nodes fully workable is more important | 00:56 | |
|
01:00
cotto_work left
|
|||
| benabik | bacek_at_work: Do you have a 5 minute spiel of what you added, or should I just dig in? | 01:01 | |
| bacek_at_work | benabik, basically newPOST nodes reflecting basic PASM/PIR constructs closely | 01:02 | |
| most of them are processed in single pass. | |||
| POST::Sub and POST::Label require 2 passes | |||
| afair | |||
| benabik | bacek_at_work: pmichaud landed a new register allocator. IIRC, newPOST handles that itself? | 01:04 | |
| bacek_at_work | benabik, ouch. Is new allocator in imcc? (And there is 2 register allocators in newPOST) | 01:06 | |
| benabik, but rule of thumb - POST::Compiler.to_pbc should able to generate PBC without IMCC help. | |||
| Which includes labels, register allocators, annotations, etc | |||
| benabik | bacek_at_work: (re: to_pbc) right | 01:07 | |
| bacek_at_work: No, an allocator in PAST. | |||
| bacek_at_work | benabik, ah. That should be "ported". | ||
| 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 | ||
| bacek_at_work | But PAST nodes should stay almost same (module PIR-to-NQP migration) | ||
| sorear | as opposed to one $Px per PAST::Node | ||
| bacek_at_work | benabik, N^2 algos ftw :) | ||
| sorear, good optimisation! | |||
|
01:09
kid51 joined
|
|||
| 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 | ||
| bacek_at_work | benabik, it's still valuable. | ||
| benabik, less critical, yes. | |||
| sorear | it's still extremely valuable | ||
| pmichaud | I'm planning to add a new node type and some methods tonight | 01:10 | |
| (just fyi) | |||
| 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. | ||
| pmichaud | nothing huge. I can do it in the nqp-only repo, or I can do it in parrot. | ||
| benabik | pmichaud: Either way. What's the node? | 01:11 | |
| bacek_at_work | benabik, POST::*Allocator allocates "physical" registers. PAST::* - "logical" | ||
| pmichaud | PAST::Want | ||
| it will select a child based on the rtype | |||
| bacek_at_work | msg cotto afair you implemented LifetimeAllocator for PIRATE. But I couldn't find it... | ||
| aloha | OK. I'll deliver the message. | ||
| benabik | pmichaud: Interesting, but yes, shouldn't slow me much. | 01:12 | |
| 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 | |
| I can envision creating a POST::Stmt equivalent, however, to push the register allocation down to that layer. | |||
| afk, need to fetch dinner | 01:14 | ||
| benabik | pmichaud: newPOST has a new register allocator already, so we can see how it works. :-) | 01:16 | |
| bacek_at_work | benabik, POST register allocator doing different job from PAST allocator :) | 01:17 | |
|
01:19
theory left
|
|||
| dalek | sella/event_queues: 91dd182 | Whiteknight++ | / (3 files): Remove tests from Event.t for features that we moved to Queue. Fix Event and Manager tests to pass again |
01:20 | |
| sella/event_queues: a153ba2 | Whiteknight++ | / (5 files): Remove unnecessary id_count field from Event. Add a new test file for Queue with several tests that used to be in Event.t |
|||
| sella/event_queues: eaac3ce | Whiteknight++ | t/event/ (3 files): Add in more stub test methods for all the things I want to test |
|||
| sella/event_queues: ba01939 | Whiteknight++ | / (2 files): Flesh out several of the stubbish Queue tests, and fix some Queue logic |
|||
| sella/event_queues: bea4034 | Whiteknight++ | / (3 files): Flesh out Event tests and fix up some logic |
|||
| sella/event_queues: 340351a | Whiteknight++ | src/event/ (3 files): +docs for some of the classes |
|||
| 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. :-) | ||
| bacek_at_work | benabik, agreed | 01:22 | |
| cotto | bacek_at_work, I never got it working | 01:23 | |
| and it was linear scan | |||
| bacek_at_work | cotto, lazy slacker! :) | ||
|
01:23
woosley joined
|
|||
| cotto | I wrote a bad first version before I realized how I should have written it. | 01:24 | |
|
01:27
NotFound_b left
|
|||
| 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:30 | |
| 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:32 | |
| or better yet...if not, how can i check eof w/ a string? | 01:33 | ||
| cotto | It's possible, but it's an extraordinary bad idea. You probably want VTABLE_get_string | 01:34 | |
| or the opposite | |||
| Parrot_io_eof expects a FileHandle PMC. | 01:35 | ||
| It doesn't make sense to ask about the eof of a string. | 01:36 | ||
| 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:38 | |
| oh wait, should i be checking for eof on the stdin pmc then? | 01:40 | ||
| cotto | yup | 01:41 | |
| soh_cah_toa | ahh, duh. so simple | ||
| cotto | in retrospect, yes | ||
| quite topical - mebassett.blogspot.com/2011/06/you-...l-you.html | 01:43 | ||
| It's possible that the lesson applies to areas other than Racket macros. | 01:45 | ||
| soh_cah_toa, do you have the testing code in a form that you think is worth pushing? | 01:47 | ||
| soh_cah_toa | ha! | 01:48 | |
| it's a piece of trash right now | |||
| cotto | but it's a piece of trash that exists! | ||
| soh_cah_toa | i'll push it | 01:49 | |
| cotto | code that exists is almost always preferable to code that doesn't | ||
| does it output tap? | |||
| soh_cah_toa | i havn't even gotten there yet | ||
| cotto | no worries | ||
| soh_cah_toa | that's how horrible this thing is | ||
| dalek | sella/event_queues: 1b54670 | Whiteknight++ | t/event/EventManager.t: Start working on Manager.t tests, using mockobjects to prove Manager is interacting with Queue and Event correctly. Not complete. |
01:50 | |
|
01:51
whiteknight left
|
|||
| cotto | dukeleto, ping | 01:54 | |
| dalek | rrot/soh-cah-toa/hbdb: 5b4877f | soh_cah_toa++ | ipc.pl: This garbage script is supposed to become a test someday |
01:55 | |
| cotto | The hate is strong with this one. | 01:56 | |
| soh_cah_toa | oh yes. i' | ||
| 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. | ||
| soh_cah_toa | oh i do. definitely. i even walk at nights | 01:58 | |
| cotto | great | 01:59 | |
| dukeleto | cotto: pong | 02:06 | |
| cotto: add "use Test::More;" to your script and you will be 90% of the way to having a test file | |||
| 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? | ||
| dukeleto | cotto: as much as they want, usually. why do you ask? | ||
| cotto | dukeleto, I just want to make sure I don't disqualify soh_cah_toa++ by diving in and doing stuff. | 02:08 | |
| The full OSS experience definitely isn't coding in isolation. | |||
| thanks | |||
| dukeleto | cotto: i would say if you help him by doing things which are not directly what his deliverables are, that is fine. | ||
| cotto: i don't think you will disqualify anybody | |||
| 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 | ||
| dukeleto | cotto: yes, writing him a few example tests will probably give him a much-needed boost in that area | ||
| dukeleto is done with his TPF grant, other than writing his final blog post. woot. | 02:10 | ||
| cotto | and whipping that code into shape | ||
| dukeleto | cotto: how is master looking for the release tomorrow? | ||
| cotto | awesomesauce | ||
| I'll probably cut the release tonight. I haven't started testing yet. | |||
| 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 | ||
| cotto | dukeleto, I won't let it escape into the release. | 02:11 | |
| kid51, I'm reading your draft yapc talk and will give you some feedback before I cut the release. | 02:14 | ||
| threads.t test failed | |||
| kid51 | cotto: Thanks. I'm headed to bed now, so I will read it in the morning. | ||
| cotto | kid51, what's your preferred format?> | ||
| It's a long draft. | 02:15 | ||
| kid51 | plain-text | ||
| just intersperse your comments in the text. | |||
| It's actually not long. It times at 16-17 minutes. | |||
| And I have 20. | |||
|
02:16
kid51 left
02:24
plobsing joined,
RobertLJ left
02:32
rurban_ joined
02:35
rurban left,
rurban_ is now known as rurban
|
|||
| 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:52 | |
| 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:53 | ||
| 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 | ||
| *used to use | |||
| cotto | nice. When did that happen? | 02:55 | |
| pmichaud | last week | ||
| cotto | Then I guess I don't feel too bad about missing it. What changed? | ||
| pmichaud | PAST got rid of its naive register allocator (more) | ||
|
02:56
theory joined
|
|||
| 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:56 | |
| 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:57 | ||
| cotto | Did you seen any performance improvement? | 02:58 | |
|
02:59
RobertLJ joined
|
|||
| pmichaud | yes and no | 02:59 | |
| cotto | 1 & 0 = 1 | ||
| pmichaud | the reason I put the register allocator in place was that we were getting pathological performance from imcc in nom | ||
| 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 | ||
| i.e., it was taking longer to compile the pir than it took to generate it | |||
| the difference is in the way that nom does initialization as compared to rakudo master | 03:01 | ||
| 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 | |||
| that works, but we pay a startup cost in the invocation of all of those routines when rakudo starts up or is loaded | |||
| so, in the new model, jnthn++ switched it so that all of the initialization takes place in a single :load :init subroutine | 03:02 | ||
| so, we now have only one invocation... | |||
| but that one routine contained tens of thousands of registers | |||
| because imcc doesn't really do any register re-use on its own | |||
| cotto | which were highly amenable to a simple allocator | ||
| pmichaud | so imcc was going all quadratic on the fact that a subroutine contained sooooo many registers | 03:03 | |
| so, by getting PAST to do the reusable register trick, what was taking imcc 50 seconds to compile went back to under 2 sec | |||
| we also get another really huge benefit from having temporary PMC registers | 03:04 | ||
| 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 | ||
| those pmcs would remain alive until the subroutine call frame was collected | |||
|
03:05
RobertLJ left
|
|||
| 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) | ||
| so, a lot of temporary gcs would be held as "alive" even though they were really no longer needed | 03:06 | ||
| s/gcs/pmcs | |||
| now, as soon as a temporary pmc register is reused, whatever PMC it was holding onto is released and can be collected | |||
| so, the overall number of active gcs is reduced, reducing our memory footprint | 03:07 | ||
| (and yes, that should speed up gc mark/sweep similarly) | 03:08 | ||
| as far as the net overall impact on rakudo performance -- it was about 3% | |||
| Coke yawns. | |||
| cotto | I'd like to see how PIRATE does with those changes. | ||
| 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 | |
| *updated | |||
| might be worth doing another bootstrap run | |||
| benabik | pmichaud: I brought up doing the update, but nothing happened prior to freeze. I brought it into my branch though. | ||
| 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? | ||
| hmmmm | |||
| 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. | ||
| pmichaud | maybe I'll stick my PAST updates into the nqp repo for tonight until after the freeze | ||
| benabik | Exception for nqp-rx w/ Stmt might be worthwhile. New PAST nodes should probably wait. :-D | ||
| 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 | ||
| pmichaud | my internal calendar has been wonky for several weeks now | 03:13 | |
| too many odd events around the house lately | |||
| cotto: I can do the nqp-rx bootstrap into parrot and test it with rakudo master if you like | |||
| or we can wait until after the release for that | |||
| 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. | ||
| pmichaud | if rakudo master passes with a new nqp-rx, I have confidence in it. | ||
| cotto | wfm | ||
| pmichaud | the changes to nqp-rx are fairly innocuous. | ||
| 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. | ||
| pmichaud | both unmodified versions of each of those and modified versions that used the new register allocator | ||
| yes, should take me only about 10 or 15 mins | |||
| cotto | I can keep busy until then. | 03:16 | |
| It's Tuesday in most of the world. | |||
|
03:17
lucian joined
|
|||
| benabik | It's almost Tuesday here. | 03:17 | |
| cotto | exactly | ||
| pmichaud | yes, looks like I started to do a new bootstrap last week but didn't finish it | 03:19 | |
| dalek | p-rx: 1dc87d4 | pmichaud++ | src/stage0/ (3 files): Update bootstrap files to take advantage of new PAST::Stmt nodes and |
03:20 | |
| pmichaud | all parrot tests pass with new nqp-rx bootstrap... building rakudo | 03:24 | |
| cotto | good sign | 03:25 | |
| pmichaud | built, now running 'make spectest' | 03:26 | |
| one can tell the different by looking at the generated pir... reusable registers start at $P100 and go to $P999 | |||
| most code rarely gets above $P110 | |||
| non-reusable registers (mainly lexicals and constant subs) start at $P1000 | 03:27 | ||
|
03:27
lucian_ joined
|
|||
| cotto | within subs, is allocation naive? | 03:27 | |
| pmichaud | no | 03:28 | |
| they're reused within subs, too. that was kind of the whole purpose :) | |||
| (because we had the one sub that had so many registers allocated naively that was causing parrot to take forever) | |||
| github.com/perl6/nqp-rx/blob/maste...NQP-s0.pir # an example generated .pir | 03:29 | ||
| cotto | ok | 03:30 | |
|
03:30
lucian left,
JimmyZ joined
|
|||
| benabik | It made a noticible difference for PAST::Compiler on nqp_pct as well. | 03:31 | |
| pmichaud | rakudo passes all of its spectests | ||
| oh, darn, I was on parrot master branch but not the latest master | 03:33 | ||
| okay, let me try again :) | |||
| (was missing a 'git pull') | 03:36 | ||
|
03:36
lucian__ joined
|
|||
| pmichaud | parrot tests pass... nqp-rx tests pass... | 03:37 | |
| just waiting for rakudo master | |||
|
03:37
lucian_ left
03:40
lucian__ left
|
|||
| pmichaud | spectests pass | 03:43 | |
| bootstrap pushed. | |||
| dalek | rrot: 8a56bbe | pmichaud++ | ext/nqp-rx/src/stage0/ (4 files): [nqp-rx]: Update nqp-rx with latest version from nqp-rx repository, |
03:44 | |
| rrot: 2cb63ec | pmichaud++ | / (35 files): Merge branch 'master' of github.com:parrot/parrot |
|||
| pmichaud | cotto: okay, done. | 03:45 | |
| cotto | pmichaud, thanks | 03:47 | |
| pmichaud | sorry I didn't merge the bootstrap in earlier -- I guess I thought I had done that. | ||
| afk for a bit | |||
| cotto | After hearing that it's an actual comic, I'm tempted to use "Dogwelder" as a release name. | 03:50 | |
| pmichaud | copyright? trademark? | 03:52 | |
| cotto | not likely to be an issue, but I'll probably avoid it just because it's a somewhat unpleasant mental image. | 03:56 | |
|
03:57
daniel-s joined
|
|||
| cotto | nice | 04:01 | |
| Attempt to free unreferenced scalar: SV 0x4317ab0, Perl interpreter: 0x1f5c010 at /usr/share/perl5/Perl/Critic/Config.pm line 150. | |||
| looks like it's not easily repeatable, which I guess is good | 04:09 | ||
|
04:27
daniel-s left
|
|||
| bubaflub | incoming | 04:37 | |
| dalek | rrot-gmp: 5ed2328 | bubaflub++ | t/integer/kronecker.t: add tests for kronecker functions this covers mpz_kronecker, mpz_kronecker_si, mpz_kronecker_ui, mpz_si_kronecker, mpz_ui_kronecker |
||
| rrot-gmp: ecae23d | bubaflub++ | t/integer/remove.t: add tests for remove functions this covers mpz_remove |
|||
| rrot-gmp: 6fc56c7 | bubaflub++ | t/integer/fac.t: tests for fac functions this covers mpz_fac_ui |
|||
| rrot-gmp: 6a39164 | bubaflub++ | t/integer/bin.t: add tests for bin functions this covers mpz_bin_ui and mpz_bin_uiui |
|||
| rrot-gmp: e0da4d4 | bubaflub++ | t/integer/fib.t: tests for fib functions this covers mpz_fib_ui and mpz_fib2_ui |
|||
| rrot-gmp: d6d4371 | bubaflub++ | t/integer/lucas.t: tests for lucas number functions this covers mpz_lucnum_ui and mpz_lucnum2_ui |
|||
| 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
04:56
B0o-supermario joined
|
|||
| B0o-supermario | Hi | 04:56 | |
| cotto | hi B0o-supermario | 04:57 | |
| B0o-supermario | Is it possible to compile c++ apps in parrot? | ||
| Hello cotto | |||
| ?? Is there a compiler? | |||
| cotto | B0o-supermario, no. There's no C++ compiler that targets a PIR backend. | 04:58 | |
| B0o-supermario | Ok | ||
| At least C? | |||
| Is a c++ backend impossible? | |||
| Or not done yet? | |||
| 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. | ||
| 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. | ||
| B0o-supermario | Ok | ||
| cotto | why do you ask? | ||
| B0o-supermario | Because i like to code apps in a portable architecture :) | 05:00 | |
| cotto | We try to be portable. | ||
| 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 | ||
| cotto | There is a basic interpreter though. | ||
| tadzik | not that these things won't be possible | ||
| cotto | PIRRIC | ||
| not sure how current it is though | 05:01 | ||
| istr that it's NotFound's | |||
| B0o-supermario | I know c, c++, php, vb.net, vb, qbasic, vbscript... But nothing of them seems supported in parrot :( | ||
|
05:01
theory left
|
|||
| B0o-supermario | Is Bjarne idiot? | 05:02 | |
| It doesn't make sense... I'm sad :( | 05:03 | ||
| tadzik | not sure if serious. What makes you think so? | ||
| 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? | ||
| 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. | ||
| B0o-supermario | Ok | 05:05 | |
| Btw any news about llva? | |||
| cotto | llva? | 05:06 | |
| B0o-supermario | Low level virtual architecture | ||
| dalek | p: 6e4f4db | pmichaud++ | / (3 files): Add PAST::Want nodetype, allows selection of a PAST tree based This will likely move into Parrot's source tree eventually; I've added it here now so we can test and iterate it more directly until it stabilizes. |
||
| cotto | Wikipedia tells me that that's part of the llvm project. | ||
| B0o-supermario | The article was written by ME | 05:07 | |
| cotto | Do you have a question about Parrot? | 05:08 | |
| B0o-supermario | You Answered the question :) | 05:09 | |
| cotto | wfm | ||
| dukeleto, ping | |||
| sorear | B0o-supermario: you're looking for #mono on irc.gimp.net | 05:11 | |
| erm, irc.gnome.org | |||
| B0o-supermario | No not gimp sorry | 05:12 | |
| Ok | |||
| sorear | they have a VM there for static languages | ||
| B0o-supermario | But not gnome: i hate them | ||
| dukeleto | cotto: pong | ||
| B0o-supermario | Vm for static languages? Interesting | ||
| sorear | B0o-supermario: gnome only hosts the IRC | ||
| cotto | dukeleto, what was the goal of your grant? | ||
| 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 | ||
| cotto | ok | ||
| dukeleto, just making sure I don't lie in NEWS | |||
| B0o-supermario | Bye | 05:14 | |
| cotto | dukeleto, anything missing from NEWS? | ||
| dalek | rrot: a76217f | cotto++ | NEWS: update NEWS a bit |
||
| 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 | ||
| cotto | It's a test. Throw it in. | ||
|
05:15
B0o-supermario left
|
|||
| 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 | ||
| cotto | go for it | ||
| dukeleto | cotto: on it, running tests now | 05:16 | |
|
05:22
bubaflub left
|
|||
| dukeleto | error: invalid conversion from āINTVAL (*)(INTVAL)ā to āvoid (*)()ā | 05:24 | |
| good thing for tests | |||
| cotto | awesome. ops2c segfaults | 05:43 | |
| sometimes | |||
| dukeleto, what's your eta? | |||
| dukeleto | cotto: the length of a fulltest that I just started | 05:46 | |
| cotto | dukeleto, k | ||
| dukeleto, while that happens, is NEWS accurate? | |||
|
05:51
fperrad joined
|
|||
| dukeleto | cotto: looking | 05:52 | |
| dalek | rrot: bcee048 | NotFound++ | NEWS: add relevant winxed NEWS |
06:00 | |
| rrot: cbabc06 | dukeleto++ | t/src/embed.t: [t] Parrot_sub_new_from_c_func, whiteknight++ |
06:06 | ||
| rrot: ca2b86e | dukeleto++ | t/src/embed.t: Pay the ANSI 89 tax yet again |
|||
| rrot: 69ed7b0 | dukeleto++ | t/src/embed.t: Fix some castings errors in t/src/embed.t |
|||
| cotto | dukeleto, all happy? | 06:09 | |
| dalek | rrot: a819f8f | dukeleto++ | NEWS: Update NEWS |
06:10 | |
| dukeleto | cotto: just added to NEWS, and fulltest passes for me under g++ on linux | 06:11 | |
| cotto: i am seeing t/library/pg.t fail when all NCI stuff is turned off, because it needs 'p' | |||
| cotto: not a huge deal, but wanted to let you know | |||
| cotto: i.e. the test fails on my "plain parrot" github.com/leto/Util/blob/master/b...rrot_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. | ||
| dukeleto goes afk for a bit | |||
| cotto: sure. good luck on the release! | |||
| cotto: should we list the revision of Winxed that is included in the release? Could be useful. | 06:13 | ||
| dukeleto actually goes | |||
| cotto | dukeleto, that's a good idea. | 06:15 | |
|
06:29
benabik left
06:32
plobsing left,
plobsing joined
06:37
benabik joined
|
|||
| cotto | NotFound, when making the winxed bootstrap, could you add the revision number to the generated pir? | 06:45 | |
| 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. | ||
| 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:12 | |
| dalek | website: cotto++ | Parrot 3.5.0 "Menelaus" Released! | 07:13 | |
| website: www.parrot.org/news/2011/Parrot-3.5.0 | |||
| NotFound | Oh, it's done. | 07:14 | |
| cotto++ | |||
| cotto | NotFound, I didn't mean right now, just in the future when you have the time to implement it. | 07:17 | |
| dalek | rrot: 3e974d2 | cotto++ | / (9 files): cut the 3.5.0 release |
07:23 | |
| NotFound | cotto: sure, the plan is to migrate to git and then use branches and tags to manage release numbers. | 07:26 | |
| afk | 07:27 | ||
| moderator | Parrot 3.5.0 "Menelaus" released | parrot.org | Log: irclog.perlgeek.de/parrot/today | 07:29 | |
|
07:33
mj41 joined
|
|||
| cotto | time to sleep for a bit and hope that nobody finds an egregious error in the release annoucement | 07:41 | |
| and then, os bridge | |||
|
08:45
SHODAN joined
09:16
daniel-s joined
09:44
contingencyplan left
09:45
woosley left
10:04
Drossel left,
Kulag joined
10:11
Kulag left,
Kulag joined
10:34
rurban_ joined
10:37
rurban left,
rurban_ is now known as rurban
10:49
jsut joined
10:54
jsut_ left
11:09
ligne joined
11:15
ambs joined
11:35
jsut_ joined
11:40
jsut left
11:50
cotto left
12:13
bacek_at_work left
12:27
bacek_at_work joined
12:32
redicaps joined
12:49
bluescreen joined
12:52
bubaflub joined
12:56
JimmyZ_ joined
12:58
JimmyZ left,
JimmyZ_ is now known as JimmyZ
13:01
smash joined
|
|||
| smash | hello everyone | 13:01 | |
| Coke | smash: hio | 13:03 | |
| bubaflub | cotto++ on the release | 13:08 | |
|
13:10
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:10 | |
| PerlJam | good morning whiteknight | 13:12 | |
|
13:13
redicaps left
|
|||
| daniel-s | I built rakudo and parrot from the master branches on github a few (I think 2) days ago | 13:14 | |
| is that very close to this most recent release | |||
| whiteknight | hello PerlJam. How are you today? | 13:22 | |
| 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:23 | ||
| PerlJam | whiteknight: mostly tired. Need caffiene | 13:26 | |
|
13:37
contingencyplan joined
13:40
daniel-s left
13:41
daniel-s joined
|
|||
| atrodo | =~ | 13:57 | |
|
13:58
SHODAN left
|
|||
| whiteknight | hello atrodo | 14:08 | |
| atrodo | Morning whiteknight | ||
| I had a chance to look over some of the docs for the new embedding interface | 14:09 | ||
|
14:18
bluescreen left
|
|||
| whiteknight | atrodo: I didn't last night, sorry | 14:19 | |
| are the docs helpful as is? | 14:20 | ||
| atrodo | whiteknight> It's a good overview. I'm not quite clear on what I need to do yet | 14:30 | |
| 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 | ||
| then be able to invoke it with paramaters | |||
| whiteknight | ok | 14:34 | |
| Invoking functions through the embedding API is going to be a bit of a pain. | 14:35 | ||
| You need to construct a CallContext PMC, insert values into it, and then make a call. I think it's Parrot_api_invoke | |||
| or something like that | 14:36 | ||
| look in src/embed/pmc.c for most of those routines | |||
|
14:39
daniel-s left
14:48
dmalcolm joined
|
|||
| dalek | p: bcfe1f0 | pmichaud++ | tools/build/PARROT_REVISION: Bump PARROT_REVISION to 3.5.0 release. |
14:56 | |
| p: c62322b | pmichaud++ | / (5 files): Add initial version of nqp:: pseudo-opcode space for low-level primitives. |
|||
| 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 | 14:58 | |
| 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:00 | |
| I ask because calling PIR methods from C or C++ is not exactly easy or optimized for | 15:02 | ||
| the embedding API is used more frequently for loading in a bytecode file, then executing it, or executing bits of it | |||
| You're going to find yourself doing in 10 lines of C code things that are trivially easy in PIR | 15:03 | ||
| 10 or more lines | |||
| moritz | in pir you're in an explicit context of an interpreter, context, HLL etc. | ||
| I can see how that gets ugly from the outside | |||
| 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:14 | |
| 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 | ||
| 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 | |||
| or, set up your draak program as a dynamically-loaded NCI library, and call it from PIR | 15:16 | ||
| 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 | |
|
15:21
cotto joined
|
|||
| atrodo | whiteknight> And there's another block I had issues with last time, being able get the data needed for a particular chunk | 15:22 | |
| cotto is at os bridge | 15:23 | ||
| atrodo | But I assumed I could solve that since at worse I could map to a hash | 15:24 | |
|
15:24
jsut joined
|
|||
| 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:27 | |
| By convention, the API operates on STRING and PMC pointers, not on char* and void(*)(void) pointers, or whatever | 15:28 | ||
| so at the very least you are going to need to wrap up your data in STRING and PMCs | |||
| atrodo | That's probably not going to be an issue | 15:29 | |
| also, and this is my problem not parrot's, draak is in pascal, not c | |||
|
15:29
jsut_ left
|
|||
| whiteknight | pascal? People still use pascal? | 15:29 | |
| atrodo | well, technically, delphi, but yes | ||
| cotto | They use COBOL, so why not. | ||
| whiteknight | okay, dephi is a little bit beter | ||
| cotto | well, not all of them | 15:30 | |
| whiteknight | The first programming class I ever took was in pascal. Back in highscool | ||
| school | |||
| atrodo | highs cool | ||
| whiteknight | All the other kids were doing exercises with records and arrays, I wrote a clone of the old windows "Mystify" screensaver | ||
| atrodo now knows what whiteknight did when he was younger | |||
| hehe, sounds like my collage years | 15:31 | ||
| whiteknight | I barely graduated from highschool. My GPA was so terrible it was amazing I made it into college at all | 15:32 | |
| At least I was learning things when I goofed off in programming class | 15:36 | ||
|
15:41
whiteknight left
15:59
cotto left
16:12
mj41 left
|
|||
| dalek | p: 3bb5b1c | pmichaud++ | / (3 files): nqp::downcase/nqp::upcase should be nqp::lc/nqp::uc. moritz++ |
16:12 | |
| p: 900cf14 | pmichaud++ | src/stage0/ (6 files): Re-bootstrap to enable nqp:: ops within NQP itself. |
|||
|
16:14
plobsing left
|
|||
| ligne | evening all | 16:27 | |
| dukeleto | ligne: mornin' | 16:31 | |
|
16:31
davidfetter joined
|
|||
| dukeleto | cotto++ # 3.5.0 | 16:31 | |
| davidfetter waves to dukeleto | 16:35 | ||
|
16:40
theory joined
|
|||
| 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 | ||
| dukeleto | ligne: blarg! | ||
|
16:41
Kulag left
|
|||
| dukeleto | ligne: can you gist/nopaste the full output | 16:41 | |
| ligne: that is my fault | |||
|
16:41
Kulag joined
|
|||
| ligne | dukeleto> not much to show i'm afraid: nopaste.info/27631eb995.html | 16:42 | |
| fwiw, that's building with gcc version 4.5.1 20100924 (Red Hat 4.5.1-4), x64 linux. | 16:43 | ||
|
16:58
cotto joined
17:11
plobsing joined
|
|||
| dalek | lrskate: 50047d5 | tcurtis++ | s (7 files): Add LALR.DPDA classes. |
17:12 | |
| lrskate: 87d9837 | tcurtis++ | setup.winxed: Organization in setup.winxed. |
|||
| lrskate: f09d406 | tcurtis++ | t/dpda.t: Add some simple DPDA tests. |
|||
| lrskate: 445e7c1 | tcurtis++ | examples/practical-translators-g-0.winxed: Change G_0 example to build a CFSM and pretty-print it as DOT. |
|||
| lrskate: 4115f64 | tcurtis++ | s (2 files): Implement building the CFSM. Currently buggy. |
|||
| lrskate: e68eae8 | tcurtis++ | t/build_cfsm.t: build_CFSM tests. |
|||
| lrskate: 0a8530f | tcurtis++ | src/LALR/DPDA.winxed: Formalize epsilon handling in DPDAs. |
|||
| lrskate: 6bcbf42 | tcurtis++ | src/LALR/DPDA/ReadTransition.winxed: Remove overly conservative constraint on ReadTransition.symbol. |
|||
| lrskate: e6f3ea8 | tcurtis++ | src/LALR/Generator/BuildCFSM.winxed: Update build_CFSM to account for DPDA changes. |
|||
| lrskate: 9643bae | tcurtis++ | t/build_cfsm.t: Add test case for the problems with G_0. |
|||
| Coke | so, for writing things for parrot's stdlib, do we have a community preference of winxed vs. nqp vs. pir ? | ||
| dukeleto | Coke: i think the preference is up to the individual, but Winxed and NQP are preferred over PIR | 17:14 | |
| 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? | ||
| 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. | ||
| dukeleto | Coke: people who prefer perlishness should use NQP and people who prefer javascriptness should use Winxed | ||
| Coke | Notfound: I have written so much PIR, I'm fine with it now. | ||
| dukeleto: ok. so diversity >> a standard. that's fine. | |||
| NotFound | Coke: I can write it, but I prefer delegate the task to winxed.pbc | 17:17 | |
|
17:18
dodathome joined
|
|||
| Coke | we need a better pointer than "the winxed repository" in the README. | 17:18 | |
| 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.) | ||
| bubaflub | afternoon dukeleto | ||
| 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 | |||
| dukeleto is still enjoying the morning of the longest day of the year | 17:21 | ||
| Coke | NotFound: no worries. | ||
| dalek | rrot: eb78bb5 | coke++ | ext/winxed/README: fix spelling typo. |
||
| dukeleto | Coke: whiteknight.github.com/Rosella/winxed/index.html looks useful | ||
| bubaflub: nice work! You are making awesome progress on parrot-gmp | 17:22 | ||
| looks like whiteknight.github.com/Rosella/winx...ction.html needs some love | |||
| 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. | ||
| dalek | rrot: e9dddc3 | NotFound++ | ext/winxed/README: add url of the Winxed web site |
17:24 | |
|
17:26
smash left
|
|||
| Coke | NotFound++ | 17:30 | |
| what's the file extension for winxed? | 17:31 | ||
| *preferred | |||
| NotFound | I use .winxed | 17:33 | |
| JimmyZ suggest .wxd | 17:34 | ||
|
17:35
Eclesia joined
|
|||
| Eclesia | hi | 17:35 | |
| NotFound | We don't nee TLAs. The ms-dos times are long gone. | 17:36 | |
| PerlJam | NotFound: yet we still use the term "extension" as if it were an "extended filename". | 17:37 | |
| 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
|
|||
| 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:41 | |
| I'm open to suggestions from the community, so please build a big community ;) | 17:42 | ||
|
17:48
JimmyZ left
|
|||
| 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:49 | |
| (like for example, how to include another lib, like rosella) | 17:51 | ||
|
17:52
cotto joined
|
|||
| NotFound | Eclesia: I'll try to write something. | 17:53 | |
|
18:05
cotto left
|
|||
| Eclesia | is there an xml api in parrot ? | 18:06 | |
| and zip api ? | 18:07 | ||
| dukeleto | Eclesia: we have some tools to deal with zip and tar files, not sure about xml | 18:10 | |
| Eclesia: runtime/parrot/library/Archive/Zip.pir | |||
| Eclesia: runtime/parrot/library/Archive/Tar.pir | |||
| Eclesia | thanks | 18:13 | |
| ligne | if anyone is interested, i've been playing around with extending checkdepend to handle .pir files: <github.com/ligne/parrot/commits/checkdepend> | 18:18 | |
| bubaflub | ligne: looks interesting. how's the work going? | 18:21 | |
| dukeleto | ligne: cool! | 18:22 | |
| bubaflub | ligne: that's a nice GDB hack | ||
| ligne | bubaflub> nothing since the weekend, i'm afraid. $day_job getting in the way :-) | ||
| thanks. though i fear it'll take a few more showers before i feel properly clean again... | 18:23 | ||
| 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:25 | |
| 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:26 | |
| 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. | ||
| ligne | righto. i'm in BST, so the conversion is nice and easy! | 18:32 | |
| bubaflub | haha. yeah, i'm in Illinois and the daylight savings time always gets me. | 18:33 | |
|
18:34
rurban_ joined
|
|||
| 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 | |
|
18:37
rurban left,
rurban_ is now known as rurban
|
|||
| dukeleto won't be at #ps today | 18:41 | ||
| atrodo | It helps to spell parrotsketch correct, AND be on the right irc network | 18:44 | |
| davidfetter | atrodo, did you happen across something that was already occupied over on fleanode? | 18:50 | |
|
18:51
cotto joined
|
|||
| atrodo | davidfetter> actually, i was on quakenet | 18:51 | |
| so a very empty room, which is very noticeable | 18:52 | ||
|
18:54
jsut_ joined
18:59
jsut left
19:23
ligne is now known as ligne_work
|
|||
| NotFound | Eclesia: try $load 'Rosella/FileSystem/File.pbc'; | 19:39 | |
| Eclesia | NotFound: to late, already found it | 19:40 | |
|
19:44
TiMBuS left
19:47
TiMBuS joined
|
|||
| Eclesia | NotFound: it's not possible to concatenate strings in a print() ? | 19:51 | |
|
19:52
ligne joined
|
|||
| NotFound | Eclesia: Why not? | 19:52 | |
| Eclesia | NotFound: I have something like that : print(" - Compiling source : " + file.short_name()); | 19:53 | |
| but it prints '0' | |||
| 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 | |
| print(" - Compiling source : ", file.short_name()); | |||
| benabik | Is there a reason #parrotsketch has no /topic? | 19:56 | |
| Eclesia | NotFound: I can print as much parameters as I want separated by ',' ? | 19:57 | |
| NotFound | Eclesia: yes | ||
| Eclesia | nice :) like a java '...' | ||
| wasn't expecting this. ^^ good news | |||
| 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 | ||
| tadzik | or? /o\\ | ||
| good it's not xor :) | |||
| cotto | only one person at a time can go to any given conf | 20:01 | |
| #ps in 29 | |||
| dukeleto, ping | 20:02 | ||
| Eclesia | NotFound: I see it's possible to compile from .wx to .pir , but is it possible to compile directly .wx to .pbc ? | 20:08 | |
| 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
|
|||
| 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:11 | |
| I must first* | 20:12 | ||
| NotFound | Eclesia: right | ||
| Eclesia | NotFound: what if I have cross references between them ? | ||
|
20:14
ligne left
|
|||
| 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 | |
|
20:14
ligne joined
|
|||
| NotFound | current file | 20:15 | |
|
20:16
dodathome left
20:19
mj41 joined,
whiteknight joined
20:21
bacek_at_work left,
bacek_at_work joined
20:25
darbelo joined
|
|||
| dalek | sella/gh-pages: d4afe69 | Whiteknight++ | winxed/index.md: fix typo. Thanks to (Andrew Johnson)++ for the report |
20:26 | |
| whiteknight is actually going to be able to attend #ps today. Fun times! | |||
| benabik | \\o/ whiteknight! | 20:27 | |
| cotto | woot | ||
| whiteknight | I got out of work early today to meet up with a home inspector, we're done that nonsense so here I am! | ||
| cotto | I've been sitting next to chromatic for the last 10 minutes and didn't realzie it, | ||
| 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. | ||
| whiteknight | cotto: lucky you! capture some of his essence in a small glass bottle and mail it to me | ||
| cotto: but try to do it in a non-creepy way | 20:28 | ||
| Eclesia: sounds reasonable. | |||
| cotto | he says no | ||
| benabik | What #parrot people are giving talks at YAPC::NA? | 20:29 | |
| cotto | me, dukeleto and kid51 | ||
| darbelo | "capture" does not require consent. | ||
| cotto | and chromatic, though I don't think he's talking about Parrot | ||
| 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 | ||
| Eclesia | whiteknight: the 'get' is also unusual for me. but I guess it's form my java background ^^ (java has listXXX methods) | ||
| whiteknight | Eclesia: names are not set in stone. I'm not always very consistent | 20:31 | |
| cotto | #ps in now | ||
| whiteknight | I put the verb in there because it is a lookup, not just returning an existing array | ||
|
20:31
soh_cah_toa joined
20:32
kid51 joined
|
|||
| 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. | ||
| 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? | ||
| Eclesia | darbelo: At work I would be whip to blood if I named a method with a _ in it :D | ||
| 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 | ||
| When I'm coding C#, I do it AllInCamelCase | |||
| or, whatever that's called | |||
| soh_cah_toa | whiteknight: absolutely | ||
| Eclesia | whiteknight: camelcase , same in java | ||
| 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' | ||
| dalek | sella: 0a337e4 | Whiteknight++ | src/filesystem/Directory.winxed: Refactor Directory methods .get_files and .get_subdirectories. Add a .get_entries which returns both. Eclesia++ for the idea |
||
| 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 | ||
| benabik | Even better: "obj.stuff" and "obj.stuff = value". But that's more syntatic sugar than most languages like. | ||
| Eclesia | thanks | ||
|
20:37
kid51 left
|
|||
| whiteknight | Eclesia: nothing is set in stone. Feedback and requests (and patches and pull requests!) are always welcomed | 20:37 | |
| 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:39 | |
| Eclesia | whiteknight: I don't if that's of interest, but I transposed one of my java classes for x3.64 in winxed : 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 | |
| I don't know* | |||
| benabik | NotFound: Ideally setters and getters are simple enough to be something a good JIT compiler will inline. | ||
| NotFound | benabik: not if you need to introspect to find them. | ||
| whiteknight | Eclesia: oh wow, looks good | 20:41 | |
| benabik | NotFound: Yes. if "obj.attr = val" becomes "obj.findMethod("attr").call(val)", that's poor. | ||
| NotFound | Eclesia: concatenation should work well after yesterday fixes. | ||
| 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 | ||
| 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? | ||
| whiteknight | bugs are nice, until somebody finds them | ||
| 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. | ||
| Eclesia: Have you read "Thinking in java"? | 20:45 | ||
| Eclesia | i did | ||
| whiteknight | NotFound: I found a fun little winxed bug yesterday, I'll put together a test case for you | ||
| NotFound | Eclesia: Then stop doing it ;) | ||
| whiteknight | I found it by being stupid | 20:46 | |
| Eclesia likes java. just oracle how is destroying everything | |||
| who* | |||
| NotFound | Eclesia: think about what you want to do, not about how you do it in java, | ||
| benabik prefers Scala to Java, but enjoyed writing a compiler on the JVM | |||
| Eclesia | scala is so full of {([ a it json, it gets unreadeable very fast | 20:47 | |
| like json* | |||
| dalek | sella: b700024 | Whiteknight++ | src/filesystem/Directory.winxed: +docs and cleanup |
20:48 | |
| 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. | ||
| Eclesia | time to sleep, ++ all | 21:02 | |
|
21:03
Eclesia left
|
|||
| dalek | website: benabik++ | GSoC 6: Q:PIRsand | 21:03 | |
| website: www.parrot.org/content/gsoc-6-qpirsand | |||
| benabik | Ooops, typo... | ||
| New URL: www.parrot.org/content/gsoc-5-qpirsand | 21:04 | ||
| 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:12 | |
| soh_cah_toa is very happy to see people willing to fix imcc line numbers | 21:14 | ||
| 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 | ||
| benabik | +1 It's hard to tell what's driving it wrong without minimal examples. | ||
| 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:16 | |
| benabik | bubaflub: That's why minimal examples really help. It points out which bits of code are wrong. | 21:17 | |
| bubaflub | benabik: agreed. | 21:18 | |
| 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:19 | ||
| soh_cah_toa | bubaflub: c | 21:20 | |
| bubaflub | soh_cah_toa: i read that as Spanish for "Yes". | ||
| soh_cah_toa | bubaflub: github.com/parrot/parrot/commit/21...d6fd0a050d | 21:23 | |
| bubaflub: that's the old code i was using | |||
| bubaflub | soh_cah_toa: great | 21:25 | |
| PerlJam | See pdds/pdd19_pir.pod around line 354 (if this isn't useful, just ignore me :) | ||
| bubaflub: ^-- that was for you | 21:26 | ||
| PerlJam wanders off again | |||
|
21:26
ambs left
|
|||
| dalek | lrskate: aae3f9a | tcurtis++ | src/LALR/ (2 files): Fix the bug. |
21:27 | |
| bubaflub | PerlJam: ok | ||
| dalek | rrot: 86c8b87 | fperrad++ | docs/book/pct/ch04_pge.pod: [doc] remove formatting in code section |
21:34 | |
|
21:39
cotto left
21:41
fperrad left
21:42
mj41 left
|
|||
| 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:43 | |
| 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:44 | ||
|
21:46
Patterner left,
PurityControl joined,
PurityControl is now known as Patterner
|
|||
| soh_cah_toa | are you talking about just hbdb or parrot/imcc in general? | 21:46 | |
| 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 | ||
| 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:50 | ||
| bubaflub | soh_cah_toa: ah, ok. | 21:54 | |
| soh_cah_toa: so what i'd need is a separate program then | |||
| 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 | |
| int old_num; | |||
| while(pc) { | |||
| int new_num = foo_get_line_number(); | |||
| if (new_num == old_num) continue; | |||
| else printf("new_num\\n"); | |||
| } | |||
| bubaflub | soh_cah_toa: ok, that makes sense | 22:01 | |
| soh_cah_toa | bubaflub++ for taking time to look at this nonsense | 22:03 | |
| this makes me very happy :) | |||
| whiteknight | You know what always bugs me? VTABLE_get_string(interp, PMCNULL) doesn't return STRINGNULL | 22:13 | |
| I understand *why* that is what it is, but it always bites me when I'm coding | |||
|
22:14
alester joined
|
|||
| 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:14 | |
| 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. | ||
| whiteknight | yes, calling conventions is where I run into it the most | ||
|
22:16
daniel-s joined
22:19
theory left,
theory joined
22:20
particle1 joined
22:23
particle left
22:24
PacoLinux left
|
|||
| darbelo | tcurtis: ping. | 22:26 | |
| tcurtis | darbelo: pong | ||
| darbelo | Hey. I'm mostly back among the living. Hou have you been? | ||
| How* | 22:27 | ||
| 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
|
|||
| 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. | ||
| 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. | ||
| soh_cah_toa | bubaflub: i think that'd make a great first test | 22:31 | |
| 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:33 | |
| 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:35 | |
| dalek | sella/event_queues: 97c1410 | Whiteknight++ | src/event/ (2 files): Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary |
22:50 | |
| sella/event_queues: 370bda6 | Whiteknight++ | t/event/EventManager.t: Fill in the rest of the tests for Event.Manager |
|||
| sella/gh-pages: 922a260 | Whiteknight++ | libraries/event.md: Rework Event docs to include Queue. Add a quick code example for NQP |
|||
| sella: 97c1410 | Whiteknight++ | src/event/ (2 files): Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary |
|||
| sella: 370bda6 | Whiteknight++ | t/event/EventManager.t: Fill in the rest of the tests for Event.Manager |
|||
| sella: 2ca724d | Whiteknight++ | / (7 files): Merge branch 'event_queues' |
|||
| sella: 3fe6474 | Whiteknight++ | src/event/Manager.winxed: de-null the queue name before we check if the queue exists |
|||
| whiteknight | tcurtis: your apartment sounds a lot like the house I am buying | 22:51 | |
| no internet access, no airconditioning | |||
| tcurtis | whiteknight: we have ceiling fans in every room. | 22:52 | |
| whiteknight | oh, we have out-of-code electrical wiring | ||
| which is almost as good | |||
| dalek | rrot: e612808 | NotFound++ | / (2 files): vtable get_bool in UnManagedStruct |
22:56 | |
| 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!" :) | ||
| darbelo | I was actually reading the code now. "Get it parsing" sounds like a good enough goal for now. | 23:00 | |
| tcurtis is also planning to add more explanatory comments tonight. | 23:01 | ||
| darbelo | Once it's parsing you can iterate from there. | ||
| I might be able to free up some time to cook up some test cases for you this/next week. | 23:02 | ||
|
23:04
daniel-s left
|
|||
| 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:04 | |
| tcurtis | darbelo: ooh. that would be very helpful. | 23:06 | |
| 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:08 | ||
| 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 | |
| But I'll give it a shot. | |||
|
23:11
Tene left
|
|||
| 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. | ||
| darbelo | tcurtis: No problem. | 23:13 | |
|
23:19
whiteknight left
|
|||
| tcurtis | darbelo: would you mind if I head out soon? | 23:31 | |
| darbelo | No prob. | 23:32 | |
| I should probably get away from this screen while I still have retinas. | |||
| mail/msg me if you need anything. | 23:33 | ||
| tcurtis | darbelo: will do. Good luck with retaining your retinas! | 23:34 | |
|
23:36
whiteknight joined
|
|||
| dalek | rrot: c412e89 | Whiteknight++ | / (2 files): Merge branch 'whiteknight/add_vtable_override' |
23:49 | |
|
23:54
Tene joined
23:58
cotto left
|
|||