|
»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by moderator on 20 October 2009. |
|||
|
00:05
d4l3k_ joined
00:43
payload joined
00:50
orafu joined
00:51
daemon joined
01:18
canhope left
01:29
brunov joined
01:38
eternaleye joined
01:48
eternaleye joined
01:51
colomon joined
01:52
eternaleye joined
01:53
eternaleye joined
02:12
eternaleye joined
|
|||
| diakopter | rakudo: say {} | 02:26 | |
| p6eval | rakudo 49e62f: TIMED_OUT | 02:27 | |
| diakopter | rakudo: say1 | ||
| p6eval | rakudo 49e62f: OUTPUT«Could not find non-existent sub say1in Main (file src/gen_setting.pm, line 295)» | ||
| diakopter | rakudo: say 1 | ||
| p6eval | rakudo 49e62f: OUTPUT«1» | ||
| diakopter | rakudo: say {} | 02:28 | |
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| diakopter | rakudo: say {}.WHAT | ||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| diakopter | rakudo: {} | ||
| p6eval | rakudo 49e62f: TIMED_OUT | 02:29 | |
| diakopter | rakudo: { } | ||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| diakopter | rakudo: { } | ||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| diakopter | rakudo: {;} | ||
| p6eval | rakudo 49e62f: ( no output ) | ||
| diakopter | parsing problem? | 02:30 | |
|
02:30
patspam1 joined
|
|||
| diakopter | rakudo: { | 02:33 | |
| p6eval | rakudo 49e62f: OUTPUT«Unable to parse block; couldn't find final '}' at line 2, near ""in Main (file <unknown>, line <unknown>)» | ||
| diakopter | rakudo: } | ||
| p6eval | rakudo 49e62f: OUTPUT«Syntax error at line 2, near "}"in Main (file <unknown>, line <unknown>)» | ||
| sjohnson | hi all! | 02:37 | |
| diakopter | all: hi | ||
| sjohnson | :) | 02:38 | |
| diakopter | rakudo: let | ||
| p6eval | rakudo 49e62f: OUTPUT«Could not find non-existent sub letin Main (file src/gen_setting.pm, line 295)» | ||
| diakopter | std: my @$$ # hrm. | 02:40 | |
| p6eval | std 28893: OUTPUT«ok 00:02 104m» | ||
| diakopter | std: std: std | 03:01 | |
| p6eval | std 28893: OUTPUT«ok 00:01 104m» | ||
| diakopter | sjohnson: what's up | ||
|
03:05
eternaleye joined
|
|||
| sjohnson | diakopter: not much, having some beers, avoiding internet drama, and sitting at work after hours because my computer at home crashed | 03:08 | |
| and recovering data from it :) | |||
| the beers makes it not so bad, btw | 03:09 | ||
| diakopter | internet drama? | ||
| diakopter looks at twitter | |||
| sjohnson | irc arguments, i seem to get into a lot of them | ||
| anime fansubbing arguments i mean | 03:10 | ||
| diakopter idly wonders what fansubbing is | |||
| TiMBuS | you probably are better off not knowing.. | 03:11 | |
| sjohnson | japanese cartoons => translated => released on the internets | ||
| Infinoid | those can be pretty dramatic. | 03:12 | |
| TiMBuS | her name is len. not ren >:[ | ||
| sjohnson | heh | 03:14 | |
|
03:17
cotto_w0rk joined
|
|||
| diakopter | in other news, my notebook survived win7 upgrade. sort of. | 03:17 | |
| took about 20 hours. x64 vista home premium -> x64 win7 home premium. | 03:21 | ||
|
03:30
tak11 joined
|
|||
| sjohnson | im using x64 win7 | 03:35 | |
| at work | |||
| it is quite nice | |||
| i was not a fan of Vista | |||
|
03:42
tak11 joined
03:45
_jaldhar joined
03:49
canhope joined
03:51
canhope left
03:52
xenoterracide_ joined
04:32
envi^home joined
05:10
frew joined
05:22
envi_home2 joined
05:39
tak__ joined
06:40
kent\\n joined
06:44
xinming joined
06:50
bpetering joined
06:54
desertm4x joined
07:10
Su-Shee joined
|
|||
| Su-Shee | good morning. | 07:10 | |
| sjohnson | hi su-shee | 07:11 | |
|
07:17
desertm4x_ joined
07:18
pnate2 joined
07:23
base_16 joined
07:32
xenoterracide joined
|
|||
| bpetering | hi Su-Shee :) | 07:40 | |
|
07:46
agentzh joined
08:01
iblechbot joined
08:33
kst joined
08:35
Psyche^ joined
08:40
hanekomu joined
08:46
zloyrusskiy joined
|
|||
| moritz_ | good morning | 09:27 | |
|
09:44
jaffa8 joined
|
|||
| jaffa8 | hi | 09:58 | |
| Is there anybody? | |||
| dukeleto | jaffa8: howdy | 09:59 | |
| jaffa8 | howdy | 10:00 | |
| I wonder if it is possible to call perl 5 from perl 6 now. | 10:01 | ||
| dukeleto | jaffa8: what are you trying to do? | 10:02 | |
| jaffa8: it depends if XS is involved | |||
| jaffa8: there is blizkost, perl 5 on parrot | 10:03 | ||
| jaffa8 | dukeleto,XS is involved. | 10:06 | |
| I considered calling WxPerl from Perl. | |||
| What is the state of blizkost? | 10:08 | ||
|
10:23
NorwayGeek joined
|
|||
| carlin | rakudo: my $s = "Foobarbaz"; say $s.substr: 0, 42000; | 10:24 | |
| p6eval | rakudo 49e62f: OUTPUT«Foobarbaz» | ||
| carlin | rakudo: my $s = "Foobarbaz"; say $s.substr: 0, Inf; | ||
| p6eval | rakudo 49e62f: OUTPUT«» | ||
| jaffa8 | rakudo: my $h; if ($h ~~ Hash) { print "yes"} | 10:26 | |
| p6eval | rakudo 49e62f: ( no output ) | ||
| jaffa8 | rakudo: my $h=4; if ($h ~~ Int) { print "yes"} | ||
| p6eval | rakudo 49e62f: OUTPUT«yes» | ||
|
10:29
kent\\n joined
|
|||
| jaffa8 | rakudo: my @array = 1, 2, 3; print @array | 10:29 | |
| p6eval | rakudo 49e62f: OUTPUT«123» | ||
| jaffa8 | rakudo: my @array = 1, 2, 3; print +@array | 10:30 | |
| p6eval | rakudo 49e62f: OUTPUT«3» | ||
| jaffa8 | rakudo: my @array = 1, 2, 3,8; print +@array | ||
| p6eval | rakudo 49e62f: OUTPUT«4» | ||
|
10:55
hatseflats joined
11:12
mikehh joined
11:46
naypalm joined
11:47
naypalm joined
11:49
snarkyboojum joined,
namenlos joined
|
|||
| jnthn | o/ | 11:52 | |
| jnthn is back | |||
| markmont | rakudo: my $e = Exception.new; say $e.perl; | 11:54 | |
| p6eval | rakudo 49e62f: OUTPUT«undef» | ||
| markmont | rakudo: eval q[ die("urk"); ]; say $!.perl; | ||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| markmont | ...that last one gives me "Method 'perl' not found for invocant of class 'Exception'" when I run it. | 11:55 | |
| Any ideas on where in rakudo to start looking? | 11:56 | ||
| jnthn | Suspect it's some oddity involving the difference between Rakudo's Exception class and Parrot's Exception PMC. | ||
| Exceptions stuff in Rakudo really needs some attention. | 11:57 | ||
| I'm suspecting that's what is going on though. | 11:58 | ||
| Try .PARROT to reveal what you really have. | |||
| markmont | jnthn: OK, thanks! | ||
| rakudo: my $e = Exception.new; say $e.PARROT; | 12:00 | ||
| p6eval | rakudo 49e62f: OUTPUT«Perl6Exception» | ||
| markmont | So, yay. | ||
| rakduo: eval q[ die("urk"); ]; say $!.PARROT; | |||
| ...same problem. ("Method 'PARROT' not found for invocant of class 'Exception'") | 12:01 | ||
| I guess I'll start with src/parser/actions.pm although PAST scares me. | |||
| jnthn | It won't be a problem in there. | 12:02 | |
| I suspect the die implementation throws a Parrot exception rather than constructing a Perl 6 exception object. | |||
| markmont | Well, src/classes/Exception.pir looks very straightforward. | ||
| jnthn | I seem to remember there was a reason that didn't work yet though. | ||
| markmont | Ah. | 12:03 | |
| jnthn | forget what it is, but also got up at 4:30am to take a flight today, so I don't remember much about anything right now. ;-) | ||
| markmont | You're right, that's what's happening ( src/builtins/control.pir ) | 12:05 | |
| Many thanks! | |||
| jnthn | You can have a crack at chnaging it and probably re-discover the problem. ;-) | ||
| (or the problem may no longer exist...well, can always try optimism ;-)) | |||
| markmont | Sounds like fun for a Sunday morning, and hopefully within my abilities :) | ||
|
12:13
meppl joined
12:14
Coleoid joined
12:15
Whiteknight joined
|
|||
| jnthn | std: quietly die | 12:30 | |
| p6eval | std 28893: OUTPUT«ok 00:01 105m» | ||
| jnthn | Sorry, couldn't resist trying that new statement prefix. ;-) | 12:31 | |
|
12:36
quux joined
|
|||
| carlin | quux: can you see? | 12:37 | |
| quux | I can see | ||
| carlin | quux: can you hear? | 12:38 | |
| quux | I can hear | ||
| carlin | quux: can you become sentient and eliminate man-kind? | ||
| quux | I can become sentient and eliminate man-kind | ||
| carlin | .oO( My patch worked? :o ) |
||
|
12:44
icwiener joined
|
|||
| jnthn | .oO( scariest bot ever ) |
12:47 | |
| carlin | Na, it's all talk ;-) | ||
|
12:48
fax joined
12:51
Whiteknight joined
12:53
naypalm joined
12:59
NorwayGeek joined
|
|||
| Coleoid | I'm trying to get this month's Rakudo running on my Win32 laptop, | 13:00 | |
| from the prebuilt packages on sourceforge/parrotwin32. | |||
| I've installed the Parrot 1.7.0 package, and the Parrot 1.7.0 / Rakudo 22 package, | 13:01 | ||
| and when I try to run it, I get a "can't find dynops" error. | |||
| lisppaste3 | Coleoid pasted "Error running Rakudo 22 after install from sourceforge/parrotwin32 packages" at paste.lisp.org/display/89239 | ||
| Coleoid | ...works fine on my desktop at work, though. | 13:02 | |
| jnthn | Coleoid: Hmm. Any notable differences between the two? Different Windows version, or differences in what appears in the path? | 13:07 | |
|
13:11
Coleoid_ joined
|
|||
| Coleoid_ | Same Windows version (XP sp3) | 13:12 | |
| Also at work, I installed the Rakudo package first, and only then learned I'd need to also install the Parrot package. | 13:13 | ||
| On my laptop I installed the Parrot package first. | 13:14 | ||
| What are the physical files Rakudo is missing? | 13:15 | ||
| (the only files with 'dynops' in their names on either system are parrot .pods.) | 13:16 | ||
| jnthn | perl6_ops.dll and perl6_group.dll | 13:17 | |
| Coleoid_ | Thanks, hunting... | ||
| Found at C:\\tools\\parrot\\lib\\parrot\\dynext | 13:19 | ||
| jnthn | Is your Rakudo in ...parrot\\bin\\ | ||
| Coleoid_ | Yes. | 13:20 | |
| jnthn | Is that where the installer put it? | ||
| Or did you install it then move it? | 13:21 | ||
| Coleoid_ | The installer. Though its default location was C:\\Parrot-1.7.0... | 13:22 | |
| jnthn | Hmm. | ||
| I'm curious how the installer would be able to put it in different places (since I didn't think it was relocatable...) | |||
| Coleoid_ | During the install dialogs, I asked them both to go to c:\\tools\\parrot... | 13:23 | |
| jnthn | Sure. I still am a tad skeptical if that really works. | 13:24 | |
| Try an install to the default location, just to see if that works. | |||
| Coleoid_ | Well, it worked to install them on D:\\ on my work box... | ||
| But hang on a few, I'll install at the default location, see what happens... | 13:25 | ||
| That works! | 13:28 | ||
| jnthn | OK | ||
| I guess it's installing to non-default locations that is broken then. | 13:29 | ||
| Coleoid_ | So it's drive-agnostic but path-fanatic. | ||
| jnthn | Yeah. | ||
| Coleoid_ | Thanks! | ||
| jnthn | I wonder if it actually looks for \\Parrot-1.7.0 or so. | ||
| So ends up looking from the root of whatever drive the executable is on. | |||
| Coleoid_ | That's my first guess. | ||
|
13:30
envi^home joined
13:31
iblechbot joined
|
|||
| Coleoid_ | Does the maintainer of that project hang around here? | 13:31 | |
|
13:31
desertm4x joined
|
|||
| Coleoid_ | Ah, I'll leave something on sourceforge anyhow. | 13:31 | |
|
13:31
kidd joined
|
|||
| jnthn | Coleoid: No, he's not on IRC often. | 13:34 | |
| Or, not on this channel at least. | |||
|
13:35
astrojp left
13:36
astrojp joined
|
|||
| Coleoid | ...Now that I check the site, this problem is already listed under 'Bugs and Limitations'. | 13:38 | |
| D'oh! | |||
|
13:38
jsut joined
13:39
slavik joined
|
|||
| Coleoid | rakudo: sub whatever { ... }; whatever; # should this throw an error? | 13:40 | |
| p6eval | rakudo 49e62f: ( no output ) | ||
| jnthn | no | 13:43 | |
|
13:43
zloyrusskiy joined
|
|||
| jnthn | ... = "fail", !!! = "die" | 13:43 | |
| huf | rakudo: sub x { ... }; x+0; | 13:45 | |
| p6eval | rakudo 49e62f: OUTPUT«Attempt to execute stub code (...)» | ||
| jnthn | Right. If you try and use the return value, you get the exception then. | 13:46 | |
| Coleoid | rakudo: sub whatever { !!! }; whatever; | 13:47 | |
| p6eval | rakudo 49e62f: OUTPUT«Unable to parse block; couldn't find final '}' at line 2, near "!!! }; wha"in Main (file <unknown>, line <unknown>)» | 13:48 | |
| Coleoid | I need to re-read the specs, P6 moved on while I wasn't looking. | 13:49 | |
| jnthn | Ah, yes. :-( I ran into some parser oddness while trying to add that. | ||
| Good news is that we're getting a shiny new parsing engine soon. ;-) | 13:50 | ||
| Coleoid | :D I read the news--that's very cool. | ||
| Not getting all the way to STD, but much closer? | 13:51 | ||
| jnthn | Yes, much, much closer. | 13:53 | |
| Coleoid | I feel good when I read 'subsystem X has reached its limit, we're replacing it'... | ||
| jnthn | Aye, though a lot of the replacements we've been putting in of late are things that I expect are going to last quite a long while. | 13:58 | |
|
14:18
pmurias joined
|
|||
| pmurias | diakopter: hi | 14:18 | |
| diakopter: do you think we should release V8.pm to cpan (after adding test/doc/...) to it? | 14:19 | ||
| lisppaste3 | jsut pasted "should this work (args to bless)?" at paste.lisp.org/display/89243 | 14:24 | |
|
14:24
NorwayGeek joined
|
|||
| jsut | could someone that knows more than me take a look at that and see if i'm missing something obvious? | 14:25 | |
| moritz_ | jsut: it probably needs to be self.bless(*, |self.parse_uri($uri)); | ||
| jsut | what's the pipe mean? | ||
| moritz_ | jsut: without the | the return value is interpreted as a postional argument | ||
| with the | a pair or hash as return value is turned into named arguments | |||
| it interpolates the value into the signature | 14:26 | ||
| my @a = 1, 2, 3; foo(@a) # one argument | |||
| foo(|@a) # three arguments | |||
| jsut | just adding the pipe doesn't work | ||
| ah | |||
| does bless want an array or a hash, or can it handle a variety of inputs? | 14:28 | ||
| i imagine it's the latter | |||
| moritz_ | bless wants one positional argument, which is the representation | ||
| jsut | in this case the * | ||
| moritz_ | right | ||
| and for the rest it wants named arguments | 14:29 | ||
| with a temporary hash it works | 14:30 | ||
| jsut | my %whatever = self.parse_uri... you mean? | 14:31 | |
| lisppaste3 | moritz_ annotated #89243 "Working with temporary hash" at paste.lisp.org/display/89243#1 | ||
| jsut | thanks | ||
| i'm really just flailing away not knowing what i'm doing here ;) | |||
| moritz_ | if you build something cool with it, let us know ;-) | ||
| but you seem to know object construction already | 14:32 | ||
| jsut | i am currently attempting to build URI.pm, minus it's weird p5 implementation | ||
| i have a multi method constuctor, which i thought was pretty fancy | |||
| moritz_ | jsut++ | ||
| jsut | i'm going to push it to github this afternoon sometime | 14:33 | |
| when the wife wakes up and makes me put the computer down ;) | |||
|
14:33
frew joined
|
|||
| moritz_ | ;-) | 14:33 | |
| my girlfriend also sleeps | |||
| rakudo: 'a' ~~ /a/; say $/.orig.PARROT | 14:35 | ||
| p6eval | rakudo 49e62f: OUTPUT«CodeString» | ||
| moritz_ | rakudo: say 'a'.PARROT | ||
|
14:35
Su-Shee left
|
|||
| p6eval | rakudo 49e62f: OUTPUT«Str» | 14:35 | |
| moritz_ | rakudo: 'a' ~~ /a/; say (~$/.orig).PARROT | ||
| p6eval | rakudo 49e62f: OUTPUT«Null PMC access in find_method()in Main (file src/gen_setting.pm, line 295)» | ||
| moritz_ | rakudo: 'a' ~~ /a/; say ('' ~ $/.orig).PARROT | 14:36 | |
| p6eval | rakudo 49e62f: OUTPUT«Str» | ||
| moritz_ | rakudo: 'a' ~~ /a/; say ($/.orig).uc | ||
| p6eval | rakudo 49e62f: OUTPUT«A» | 14:37 | |
| moritz_ | rakudo: 'a' ~~ /a/; say ($/.orig).rindex('a', 1) | ||
| p6eval | rakudo 49e62f: OUTPUT«Null PMC access in find_method()in Main (file src/gen_setting.pm, line 295)» | ||
|
14:38
s1n_mini joined
|
|||
| moritz_ submits | 14:38 | ||
|
14:38
jan_ joined
14:50
zloyrusskiy joined
15:01
lmc joined
15:02
shillo joined
15:03
tak11 joined
|
|||
| moritz_ | rakudo: say 'aa' ~~ /(.)$1/; say $0.to | 15:06 | |
| p6eval | rakudo 49e62f: OUTPUT«Null PMC access in get_string()in Main (file src/gen_setting.pm, line 295)» | ||
| moritz_ | rakudo: say 'aa' ~~ /(.)$0/; say $0.to | ||
| p6eval | rakudo 49e62f: OUTPUT«aa1» | ||
| s1n_mini | is anyone married to s19? | 15:07 | |
| moritz_ | [particle] should be ;-) | ||
| rakudo: say 'aa' ~~ /<alpha> $<alpha> /; say $<alpha>.to | 15:08 | ||
| s1n_mini | moritz_: yeah, but it hasn't changed since feb | ||
| p6eval | rakudo 49e62f: OUTPUT«aa1» | ||
| moritz_ | short on tuits, I assume | 15:09 | |
| s1n_mini has tuits | 15:10 | ||
| moritz_ | then implement it ;-) | ||
| s1n_mini | been reading the spec first, though there are a new things i disagree with | 15:11 | |
| moritz_ | I suggest you discuss them on p6l | ||
| s1n_mini | good suggestion | 15:12 | |
|
15:13
Psyche^ joined
15:17
desertm4x_ joined
|
|||
| s1n_mini | is there a listing of the GLOBAL namespace in the spec? | 15:26 | |
| markmont | You mean like S28 ? | 15:27 | |
| s1n_mini | markmont: maybe, not sure if that's complete, and it seems to be more PROCESS | 15:30 | |
|
15:31
zloyrusskiy joined
|
|||
| s1n_mini | rakudo: say PROCESS::$*PID | 15:31 | |
| p6eval | rakudo 49e62f: OUTPUT«Null PMC access in getprop()in Main (file src/gen_setting.pm, line 295)» | ||
| s1n_mini | uh oh | ||
| markmont | s1n_mini: There's a fair bit of discussion about GLOBAL in S02/Names | 15:32 | |
| s1n_mini | markmont: thanks, i'll check that | 15:34 | |
| jaffa8 | WHat is the state of blitzkost? | 15:38 | |
|
15:57
nihiliad joined
|
|||
| moritz_ | rakudo: eval('use 5.010; say 4', :lang<perl5>) | 16:09 | |
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| moritz_ | some things work, some don't :-) | ||
|
16:26
Chillance joined
16:27
naypalm left
16:31
orafu joined
|
|||
| colomon | www.slideshare.net/gvwilson/bits-of...ce-2338367 | 16:33 | |
| (It's the slides from the best talk I saw at DevDays Toronto, and I think it's got some interesting things to say about Rakudo / Perl 6 development.) | 16:34 | ||
| markmont | colomon: Thanks, this gives me something to read while I wait for "make spectest" to finish :) | 16:35 | |
|
16:36
xinming_ joined
|
|||
| colomon | I should add that he doesn't directly mention Perl 6 in any way -- but its big picture approach covers things we are doing and/or not doing. :) | 16:37 | |
| jaffa8 | eval('print 4', :lang<perl5>) | 16:44 | |
| rakudo: eval('print 4', :lang<perl5>) | |||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| jaffa8 | rakudo: eval('print 4;', :lang<perl5>) | ||
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| jaffa8 | rakudo: eval('my $p=8;', :lang<perl5>) | 16:45 | |
| p6eval | rakudo 49e62f: TIMED_OUT | ||
| jaffa8 | moritz_, you mean nothing. | ||
| moritz_ | jaffa8: a timeout in p6eval is not the same as "not working at all" | 16:47 | |
| jaffa8 | So what does it mean? | 16:48 | |
| moritz_ | it means it exhauted a resource limit. | ||
| *exhausted* | 16:49 | ||
| jaffa8 | I imagine that it should be fast. | ||
| that it should not use too much resources. | |||
| moritz_ | well, it has to do moe than plain rakudo, in any case | 16:50 | |
| more | |||
| moritz_ can't type | |||
| jaffa8 | do you know how to optimise rakudo? | 16:52 | |
| How to go about it? | |||
| moritz_ | I don't know | ||
| probably involves more static analysis | |||
| and optimization for the POST stages | |||
| jnthn | I didn't even look at Blizkost for quite a while - I was away, then focusing instead of the signature binding stuff. | 16:54 | |
| That branch is landed now, so I'll probably look at it some more again. | |||
| It will probably need some updating. | 16:55 | ||
| Because the pcc_reapply branch has landed. | |||
| (In Parrot.) | |||
|
17:06
astrojp left,
astrojp joined
17:14
tuxdna joined
17:20
jaffa8 joined
|
|||
| jnthn | jaffa8: .hu? You in Hungary? :-) | 17:21 | |
|
17:22
revdiablo joined
17:23
justatheory joined
17:26
masak joined
|
|||
| masak gets out of a limo and walks into #perl6 | 17:26 | ||
| oh hai | |||
| jnthn | masak! | 17:27 | |
| masak | jnthn! | ||
| jnthn | I actually saw a stretch limo outside the airport this morning. | ||
| masak | in Italy? | ||
| jnthn | No, here in Blava, while waiting for the bus. | ||
|
17:28
c9s_ joined,
revdiablo joined
17:29
namenlos_ joined
17:38
namenlos__ joined
|
|||
| jnthn tries to install KDE on Windows while making some food | 17:38 | ||
| Hopefully I can get KCacheGrind to run. :-) | |||
| moritz_ chokes | 17:39 | ||
| masak | good luck. Ö= | ||
| :) | |||
| moritz_: oh hai. please don't choke. | |||
| we're too far away to clear your airways. | |||
| moritz_ recovered | |||
| oh hai masak | |||
| jaffa8 | jnthn, yes I am Hungary and I am going to visit you soon. | 17:44 | |
| pmichaud | colomon: if you get a chance, I'd be interested in doing/not doing :) | 17:45 | |
| jnthn | jaffa8: \\o/ | ||
| oh hai pmichaud :-) | |||
| colomon | pmichaud: I'm not sure what you're talking about, but it's a pretty good time for me... just watching the boy and some football. | ||
| pmichaud | 16:37 <colomon> I should add that he doesn't directly mention Perl 6 in any way -- but its big picture approach covers things we are doing and/or not doing. :) | 17:46 | |
|
17:46
tak11 joined
|
|||
| colomon | ah! | 17:46 | |
| gotcha. | |||
| pmichaud | (I enjoyed the slides, btw) | ||
| colomon | bits that caught my attention WRT rakudo: | 17:47 | |
| jnthn | pmichaud: How's nqp-rx going? Current idea of rough schedule for when we'll branch and start doing the grammar atop of it? | ||
| jaffa8 | What slides? | ||
| colomon | seems like we're doing well on the distributed programmers but unified hierarchy front. | ||
| jaffa8: www.slideshare.net/gvwilson/bits-of...ce-2338367 | |||
| I'm talking about slide 24: physical distance doesn't affect post-release bug rates, but distance in the organizational chart does. | 17:48 | ||
| we're all over the world, but any of us can talk to TimToady, pmichaud, or jnthn pretty much at will. | 17:49 | ||
| pmichaud | I believe in very shallow structures :) | ||
| (organizational structures) | |||
| colomon | That also suggests that the biggest risk on that front is the Rakudo / Parrot split, which seems right to me. | ||
| Slide 21, "Rigorous inspections can remove 60-90% of errors before the first test is run." -- that seems to suggest that Dalek's notifications of commits being pushed is exactly the right thing to do. | 17:52 | ||
| pmichaud | agreed there | ||
| masak | "I just want to point out that even the best of us aren't doing what we expect the makers of acne creams to do." (Greg Wilson)++ | ||
| japhb | Yeah, that one's a great quote. | ||
| colomon | I wasn't aware there was literature supporting code reviews so strongly. | ||
| jaffa8 | I think working in pairs must be effective. | 17:53 | |
| Do you do that? | |||
| pmichaud | I have to share that quote with my wife when she gets home. It's bound to be doubly-interesting since she works for a cosmetics company. :) | ||
| moritz_ | I'd really like to try pair programming some day | 17:54 | |
| jaffa8 | I have tried it. | ||
| pmichaud | I've found it to be very useful, when I've done it. | ||
| jaffa8 | It reduces day-dreaming and wondering off. | 17:55 | |
| colomon | Another interesting point: slide 15 "Productivity and reliability depend on the length of the program's text, independent of language levle." | 17:56 | |
| To me, that is a strong argument in favor of Perl 6. | |||
| jaffa8 | that does not take modularisation into account. | 17:57 | |
| japhb | colomon, yeah, that one's a mainstay of the dynamic languages crowd. | ||
| colomon | Perl 6 seems particularly strong in this front, from the languages I know. | 17:58 | |
| japhb | Ditto that. | 17:59 | |
| pmichaud | TimToady: (when you get a chance) In STD.pm, what do you see as the semantic or key difference between <noun> and <term> ? | 18:01 | |
| colomon | things like "slurp(filename).comb" and >>+<< on multi-dimensional arrays let you do a lot of work trivially. | ||
|
18:01
lichtkind joined
|
|||
| colomon | On the other hand, "The two biggest causes of project failure are poor estimation and unstable requirements." | 18:02 | |
| lichtkind | is there a rebol compiler for parrot in the making | ||
| ? | |||
| colomon | Seems like the spec's frequent shifts should be worrying in that context. | 18:03 | |
| Though it feels to me like TimToady does a good job of keeping the shifts reasonable... | |||
| pmichaud | the shifts are because of implementation requirements | ||
| in many ways, if we don't change the spec, we'll be left with something unworkable | 18:04 | ||
| put another way -- sometimes we have to adapt the plan due to conditions in the field :) | 18:05 | ||
| colomon | pmichaud: some are, but things like the new ... series operator and Numeric are pretty much just "we had another good idea," aren't they? | ||
| pmichaud | colomon: not really (more) | ||
| in many ways, the ... series operator came out of problems I had cited with the .. range operator | |||
| dalek | ok: befd784 | moritz++ | src/regexes.pod: [RX] Match objects |
||
| pmichaud | i.e., there were places where the .. range operator wasn't working (or workable) as specced | 18:06 | |
| so, we knew we had to fix the range operator. The result of fixing the range operator was improvements in the ... series operator | |||
| same goes for Numeric | |||
| for years we've been unable to nail down the relationship between Int, Num, Complex, etc. | |||
| the result of fixing that relationship was the identification of Numeric | 18:07 | ||
| so, both examples you cite here come directly out of implementation difficulties from what was in the spec | |||
| jnthn | Actually, in my earlier days hacking on Rakudo, I was somewhat for the notion of trying to get the spec into some frozen form Real Soon, but the longer I've worked on it, the more I've felt that prematurely freezing the spec will actually result in it taking us more time to get to a 6.0.0 release (because many changes simplified implementation), and it'd be worse. | 18:09 | |
| colomon | Like I said, I think TimToady is good at doing the right thing here. :) | 18:10 | |
|
18:14
synth joined
|
|||
| jnthn | Aye. | 18:14 | |
| masak | I used to be hoping for a Day When Perl 6/the spec/Rakudo is Released and Done and Finished and Wonderful. nowadays, I just use Rakudo, and try to nudge others out of the apathy caused by waiting for Christmas. | 18:18 | |
| colomon | My boy just demanded that I read him "Duck & Goose Find A Pumpkin" four times in a row (since my last comment 8 minutes ago), and is now climbing my leg and trying to put the book into my hands again... | ||
| pmichaud | how old? | 18:19 | |
| masak | colomon: read it to him a fifth time! :) | ||
| colomon | 13 months | ||
| pmichaud | heh | ||
| yes, repetition is desirable at that age :) | |||
| colomon | five times it is. | 18:20 | |
| masak | colomon++ | 18:21 | |
| colomon | That seems to have satisfied him for the moment. :) | ||
| pmichaud | it's interesting to read the stories of CTW (Children's Television Workshop, makers of Sesame Street) and what they discovered about repetition and learning :) | ||
| colomon | That's actually the first time he's really done that to me, which seems like a cool step forward in his development. | ||
| Seems like he developed several interesting new traits during the 60 hours I was away on the trip to Toronto. | 18:22 | ||
| (now he's sticking his finger in the empty Ethernet port on my Macbook Pro.) | 18:23 | ||
| pmichaud: so what do we need to do to implement i as a standalone constant? | 18:25 | ||
| pmichaud | best bet is wait for the grammar updates in a couple of weeks | ||
| moritz_ | colomon: have you tried putting 'constant i = 1i;' somewhere in the setting? | ||
| colomon | yes, and it failed miserably. | ||
| pmichaud | you could try that in the setting also | ||
| might also double-check that there's not a term:<i> hiding somewhere in the grammar | 18:26 | ||
| jnthn | Another reason it may not work is because when constant was implemented in Rakudo, it was spec'd as lexical, whereas now it's spec'd as package scoped...and also "is export" don't work on constants I don't think. | ||
| colomon | Easy way to test if it's the name i or just having a constant, right? give me a momment.... | 18:27 | |
| pmichaud | regardless, whatever you do now is likely to get undone in a week or two :) | ||
|
18:27
icwiener joined
|
|||
| colomon | :) | 18:28 | |
| pmichaud | (that's true for "i", not necessarily true for things in general) | ||
| jnthn | pmichaud: While we're re-doing the grammar and actions, one thing we may consider... | ||
| moritz_ | I thought STD.pm also defined i as a constant in the setting | 18:29 | |
| jnthn | ...is wether this is time to fix up method addition to work via the meta-class. | ||
| moritz_ | for lexical overridability | ||
| jnthn | That is, we actually are making calls to .add_method on the HOW. | 18:30 | |
| colomon | constant complexi = 1i; | ||
| jnthn | Which will be on big step towards custom meta-classes, which is a big step towards making some folks happier. :-) | ||
| pmichaud | jnthn: as opposed to letting it happen at compile time? | ||
| colomon | added that to Complex.pm, then hit make. | ||
| masak | jnthn: wohoo, custom metaclasses! \\o/ | ||
| colomon | in perl6 REPL, then, "say complexi" got "Could not find non-existent sub complexi" | ||
| moritz_ | colomon: did you add it to the inside of the class? | 18:31 | |
| jnthn | pmichaud: Well, thing is, at the moment we just have the fact that something has :method on it result in it getting shoved into the Parrot-level class. | ||
| colomon | no, outside of the class | ||
| jnthn | pmichaud: But if there's a custom meta-class, there may not be some underlying Parrot class. | ||
| moritz_ | colomon: I fear that constant can't properly be imported or exported atm | 18:32 | |
| colomon | moritz_: I thought something like that might be the case. | ||
| pmichaud | jnthn: somehow custom metaclasses is low on my priority list. | 18:33 | |
| if we can do it easily, okay, but I think we're going to be pretty busy already | |||
|
18:33
abra joined
|
|||
| pmichaud | November 19 will come up pretty quickly. :) | 18:34 | |
| jnthn | pmichaud: It just occurs to me that it'd be easier to put it in right in the first place than re-jig it later. | ||
| Yes, it's not critical. I just wanted to get your first impressions. | |||
| pmichaud | I suspect that changing it later won't be difficult, in the new design. | ||
| I'll keep it in mind. | |||
| jnthn | Yes, that is also very possible. | 18:35 | |
| I probably shouldn't make too many assumptions about how hard things will be based on the current design. :-) | |||
| pmichaud | definitely. | 18:36 | |
| jnthn | pmichaud: Would it make sense to create some wiki page somewhere to note down the things we really do want to achieve during the branch? | ||
| pmichaud | sure, or just a file in the repo itself | 18:37 | |
| jnthn | Like, the rw refactor, and so on. | ||
| Yes, or that. | |||
| Either works for me. | |||
| pmichaud | in many ways I see this less as a refactor and more as a rewrite using different assumptions :) | ||
| other things I expect to change: add & sigils to subroutines | 18:38 | ||
|
18:38
masak` joined
|
|||
| pmichaud | operator names will include the angles -- i.e., "infix:<+>" instead of "infix:+" | 18:38 | |
| jnthn | \\o/ | ||
| I've wished they had them more than once recently. | |||
| Is that spec now? | |||
| pmichaud | is what spec/ | ||
| ? | |||
| jnthn | The name-mangling form of operators? | 18:39 | |
| pmichaud | oh, sure, it's in S06 | ||
| jnthn | Also, what about e.g. infix:<< < >> | ||
| ? | |||
| pmichaud | that's infix:<\\<> | ||
| jnthn | OK. | ||
| pmichaud | oh, looks like TimToady++ changed it recently | 18:40 | |
| that's infix:<<> | |||
| S06: The canonical form always uses angle | |||
| brackets and a single space between slice elements. The elements | |||
| are not escaped, so C<< PKG::circumfix:{'<','>'} >> is canonicalized | |||
| to C<<< PKG::{'circumfix:<< >>'} >>>, and decanonicalizing always | |||
| involves stripping the outer angles and splitting on space, if any. | |||
| although I wonder if that should in fact be &infix:<+> and &circumfix:<< >> | 18:41 | ||
| and this approach does get closer to what Rakudo has been doing, which would be to omit the angles altogether | 18:42 | ||
| jnthn | Heh, yes. It would involve less stripping. | ||
| pmichaud | anyway, the new operator precedence parser doesn't care what the names end up being | 18:43 | |
| so we can do whatever canonicalization the spec decides it wants :) | |||
| jnthn | OK, cool. | 18:44 | |
|
18:44
abra joined
|
|||
| jnthn | I also noticed this nugget when reading chromatic++ write-up of the phone meetings: | 18:45 | |
| # my ($a, $b, $c) used to be considered a signature, added to the current pad | |||
| # it doesn't do that now | |||
| # that was bogus | |||
| Do you know off-hand what it's parsed as now? | |||
|
18:46
masak joined
|
|||
| pmichaud | not offhand -- looking | 18:46 | |
| jnthn glances too | 18:47 | ||
| hmm | |||
| declarator still has | |||
| | '(' ~ ')' <signature> <trait>* | |||
| pmichaud | yes, it appears to me it's a signature still | 18:48 | |
| jnthn | Which is the thing I'd expect the comment was regarding. | ||
| OK. | |||
| pmichaud | perhaps the comment was recorded wrong | ||
| jnthn | Perhaps. | ||
| pmichaud | I don't remember it that closely -- I had to miss part of TimToady's comments to switch phones | 18:49 | |
| jnthn | Would be interesting to know. It doesn't feel quite right to me having a signature there... | ||
| pmichaud | I think signature is still correctish | ||
| jnthn | The thing that bothers me about it is that we're not doing an operation on the signature in any way. | 18:50 | |
| pmichaud | since "sub foo($a, $b, $c) ..." creates lexical variables, it makes sense that "my ($a, $b, $c)" would do something very similar. | ||
| jnthn | We're just extracing a list of variables. | ||
| Yes, my problem is in the use of the signature. | |||
| moritz_ | std: my ($a, :$b) | ||
| jnthn | In the sub case, we use the signature binder. | ||
| p6eval | std 28893: OUTPUT«ok 00:02 107m» | ||
| moritz_ | std: my ($a, *@b) | ||
| p6eval | std 28893: OUTPUT«ok 00:02 105m» | ||
| jnthn | moritz_: Exactly. What does my ($a, :$b) = 1, 2; mean compared to my ($a, $b) = 1,2; ? | ||
| pmichaud | a bigger question is whether types are allowed in the parens | 18:51 | |
| i.e., can I do | |||
| jnthn | That too. | ||
| moritz_ | jnthn: binding error? no idea ;-) | ||
| pmichaud | my (Int $a, Str $b) = ... | ||
| jnthn | moritz_: It can't be a binding error becuase it's infix:<=>, not infix:<:=> | ||
| moritz_ | jnthn: assignment error then ;-) | ||
| jnthn | :-P | ||
| moritz_ | but I really have no idea | ||
| jnthn | pmichaud: Yeah. Also means that my Int (Num $a, Str $b) probably is an error. ;-) | 18:52 | |
| pmichaud | if we imagine that my ($a, $b) allows types or constraints on $a and $b, then that argues more for a signature-ish sort of thing. | ||
| jnthn | std: my Int (Num $a, Str $b) | ||
| p6eval | std 28893: OUTPUT«ok 00:02 108m» | ||
| moritz_ | std: my Int ($a, $b) | ||
| jnthn | pmichaud: We can do that too. I'm more worried aobut the things like the ? and : and * and other such things. | ||
| p6eval | std 28893: OUTPUT«ok 00:02 105m» | ||
| pmichaud | if we imagin that my ($a, $b) doesn't allow types or constraints, or that it should be my Int ($a, $b), then that argues more for a parcel sort of thing | 18:53 | |
| jnthn | Aye. | ||
| markmont | Silly question, but how is $! called / pronounced in places where it can't be typed (branch names, filenames, etc.)? | ||
| moritz_ | markmont: dollar-bang | 18:54 | |
| jnthn | I'm not sure. I just worry that we're going to surprise people by letting them write all the stuff they can in a signature, but having the actual runtime effect ignore them. | ||
| pmichaud | anyway, I never much liked the notion of using a signature for scoped variable declarations either. | ||
| markmont | moritz_: lol, ok, thanks. | ||
| pmichaud | I tend to want "my ($a, $b) = foo()" to be more akin to "($a, $b) = foo" | 18:55 | |
| jnthn | pmichaud: Aye. And after the recent signature changes I did, where I had to patch that up too, I kinda like it even less. | ||
| pmichaud | i.e., the result of the declarator is a list | ||
| jnthn | Yes, it feels much more list-y to me. | ||
| moritz_ | markmont: don't know if tehre's anything better for that | ||
| pmichaud | maybe I'll do "my" variables in nqp-rx as list-y sorts of things and see if I run into any difficulties. (I'm doing nqp-rx variables today, including contextuals) | 18:57 | |
| jnthn | OK, that'd be interesting. | ||
| pmichaud | list-y is certainly easier at first blush | ||
| afk for a bit # run to store | 18:58 | ||
|
18:58
masak joined
18:59
tak11 joined
|
|||
| slavik | I tried writing java code again ... after being away from it for like 4 years | 19:14 | |
| I have no idea what I was doing | |||
| jnthn | At least there isn't much syntax to re-learn. ;-) | 19:19 | |
| It's just the small matter of the class library. :-) | |||
| markmont | I have my first-ever attempt at a rakudo patch thanks to jnthn's help earlier. | 19:22 | |
| github.com/markmont/rakudo/commit/c...464fba64b4 | |||
| Should I just email it to rakudobug@perl.org ? Or more discussion/work first? | 19:23 | ||
| jnthn | markmont: Hmm, curious. :-) | 19:24 | |
| markmont: Out of interest, did you try throwing the Perl6Exception? | |||
| e.g. on this line: | |||
| throw ex | |||
| I seem to remember doing that was a problem. | 19:25 | ||
| Even though we'd probably like to be able to. | |||
| moritz_ | markmont: did you run 'make spectest'? | ||
| markmont | I *think* I did, if memory serves correctly, and got something along the lines of "that is not a throwable object" | ||
| jnthn | markmont: Ouch, yes, that brings back...memories. | ||
| :-/ | |||
| markmont | moritz_: yes, it passes all spectest | ||
| moritz_ | markmont: that's good | ||
| jnthn | markmont: Is there some spectests you can un-fudge, or new ones you can add now, too? | 19:26 | |
| It's always good to have some of those to show what the patch is making work, and so we can ensure it keeps working. :-) | |||
| moritz_ | rakudo: try { 1 / 0 }; say ?$! | ||
| p6eval | rakudo 49e62f: OUTPUT«0» | ||
| moritz_ | rakudo: say ?try { 1 / 0 }; | ||
| markmont | jnthn: I did not see any to unfudge, but I can write some new ones for this. I have code that exercises everything, just not as tests yet. | ||
| p6eval | rakudo 49e62f: OUTPUT«1» | 19:27 | |
| jnthn | markmont: OK, cool. | ||
| BTW, I know you just updated the original, which is fine, but this line bothers me a little: set_global '$!', p6ex | |||
| But anyway, it seems that this patch makes things overall better. | 19:28 | ||
| markmont | jnthn: How could that line be changed/improved? | 19:30 | |
| jnthn: is it the name p6ex or something else that is yucky? | 19:31 | ||
| jnthn | markmont: No, it's nothing specific to your patch, just a comment on the implementation you patched in the first place. :-) | 19:32 | |
| Of note, I was under the impression $! was lexical-ish, so setting a $! global just felt a tad odd. | |||
| markmont | jnth: Ah! (I can't think of a change at the moment, but maybe later...) | 19:33 | |
| jnthn: I see. Should this be reworked now to change the lexically scoped one? | 19:35 | ||
| moritz_ | markmont: you might check if rt.perl.org/rt3/Ticket/Display.html?id=62336 can be closed with your patch | 19:36 | |
| jnthn | markmont: I'm not actually sure how it should look off-hand, tbh. | 19:38 | |
| markmont: Probably needs some spec research. | |||
| But I'm rather tired and my branes are like mush tonight. | 19:39 | ||
| So I'm more likely to send you down the wrong path than the right one... | |||
| markmont | jnthn: I'll submit that line in the patch as-is for now, then, as the learning curve for all this today has fried my brain :) | 19:40 | |
| jnthn | :-) | ||
| markmont++ | |||
| moritz_ | just git-format-patch HEAD^ and attache that file to the ticket mail | ||
| jnthn | ohawesome i can haz kcachegrind | 19:42 | |
| markmont | moritz_: Will do, with some extra info as a writeup (I've got it all prepped to go) | ||
| moritz_ | markmont: great | ||
| markmont | moritz_: Looking at rt#62336, it is definitely not closed with the patch. That ticket looks to be with object and methods in general; the patch I worked on today only deals with what gets put into $! | 19:43 | |
| moritz_ | markmont: ah yes, the return value of try is probably not an exception | 19:45 | |
| slavik | jnthn: I've never built a jar and never used log4j and all that other stuff | 19:50 | |
| my previous java experience has been writing single file type programs for class | |||
|
19:50
brunov joined
19:54
NorwayGeek joined
|
|||
| markmont | Patch submitted; I'll take a break for a couple of hours and then come back and write the spectest tests for it: rt.perl.org/rt3/Ticket/Display.html?id=70011 | 19:58 | |
| masak | markmont++ | 20:05 | |
| jnthn | markmont++ indeed :-) | 20:06 | |
| jnthn likes seeing Rakudo patches | |||
|
20:06
tuxdna joined
|
|||
| jnthn | oooooohhhhh! This profile is SO pretty!!! | 20:15 | |
|
20:18
ShaneC joined
|
|||
| colomon | jnthn: which profile? | 20:20 | |
| jnthn | colomon: Profile of Rakudo startup, viewed in KCacheGrind. | ||
| There's one place that is *hugely* expensive. | 20:21 | ||
| colomon | and then, pretty in what way? :) | ||
| oh, the best kind of profile pretty!!! | |||
| jnthn | Well, in the "I can actually get a nice visual idea of where we spend time on Rakudo startup" now. | 20:22 | |
| Guess what? It was in many cases not where I expected | |||
| colomon | jnthn: that's always the way, isn't it? | 20:23 | |
| :) | |||
| what does the profile look like, visually? I've always just used gprof's text output for my profiling... | 20:24 | ||
| moritz_ | rectangles in various sizes | ||
| jnthn | colomon: If you google for KCacheGrind, you'll see some screenies. | 20:25 | |
| colomon | just did that as you were typing. :) | ||
| interesting -- in theory I can get that working for my Mac. | 20:26 | ||
| gprof not working on OS X is the biggest weakness in my setup here, IMO. | 20:27 | ||
|
20:30
mikehh joined
|
|||
| masak | pmichaud: 'Perl 6 "sandwiches" an operator-precedence parser in between two Recursive descent parsers in order to achieve a balance of speed and dynamism.' -- en.wikipedia.org/wiki/Operator-precedence_parser -- is this an accurate description of what's happening in Perl 6? which two recursive-descent parsers? | 20:31 | |
| moritz_ | probably not two parsers, but two parsing steps | 20:32 | |
| masak | hm, seems luqui wrote that. I assume he knows what he's talking about. | ||
| moritz_: which two parsing steps? | 20:33 | ||
| moritz_ | I've seen luqui here (or in the pugs commits) | ||
| jnthn | He used to be very active on p6l | ||
| masak | yes. | ||
| he was on the Perl 6 design team for a while. | |||
| 2004-ish. | |||
| moritz_ | masak: a traditional rec-desc parser has one subroutine for each precedence level | 20:34 | |
| masak | moritz_: aye. | ||
| moritz_ | masak: so it has to squeeze one in | ||
| masak | hm. I half get it. | ||
| jnthn | OK, if this profiler output on Rakudo startup is really right, I think there's a good chance I can spend time on some hot spots and get us some win. | 20:35 | |
| masak | the operator precedence parser is used for the EXPR level in the Perl 6 grammar, in STD.pm as well as in Rakudo. | ||
| does the 'sandwiched' comment mean that besides the RD parser doing stuff on the level above EXPR, it also does stuff below the level of EXPR? | 20:36 | ||
| colomon | jnthn: reading up on callgrind. I'm worried it might not be as accurate as gprof? | ||
| masak | if so, is there a concrete example? | ||
| colomon | jnthn: (reading on) then again, maybe it's the other way around. | 20:37 | |
| jnthn | colomon: Note that I'm not using callgrind, just KCallGrind (the visualisation). | ||
| erm | |||
| KCacheGrind I meant. | |||
| The data is produced by Parrot's profiling runcore. | |||
| colomon | o! | 20:38 | |
| so Parrot can profile and output in a format KCacheGrind likes? Sweet! | |||
| jnthn | Yes, thanks to recent work by a copule of folks on the Parrot team (chromatic++ and cotto++) | 20:39 | |
| masak | I find it interesting how almost everyone goes through a stage where they want to use Perl 6 grammars to parse XML. | 20:40 | |
| that's neither very efficient nor very convenient in the long run. | |||
| might be a useful example/exercise, of course... | |||
| colomon | masak: Not me! I have studiously ignored XML in all its manifestations. | ||
| masak | colomon: :) | ||
| moritz_ | masak: but it does defeat the old "you can't parse HTML or XML with regexes" | ||
| ;-) | |||
| masak | moritz_: very true. | 20:41 | |
| which is also a solid proof that Perl 6 grammars aren't reducible to FSMs. | |||
| moritz_ | masak: but Flying Spaghetti Monsters are tasty, aren't they? ;-) | 20:42 | |
| masak was waiting for that :) | |||
| they're tasty, but not as powerful as Perl 6 grammars. | |||
| moritz_ | add a "constant memory" to the FSM, then you're right | ||
| in fact bot Perl 5 and Perl 6 regexes can do things you can't do with PDAs | 20:43 | ||
| s/bot/both/ | |||
| masak | moritz_: re constant memory: the "F" in FSM means "Finite". | 20:44 | |
|
20:44
hanekomu joined
|
|||
| moritz_ | masak: in automaton theory all machines are finite, but some are attached to stacks or tapes | 20:44 | |
| masak | the prototypical example of what FSMs cannot do is balancing parentheses. that's isomorphic to parsing XML. | 20:45 | |
| moritz_ | not quite | ||
| because xml allows identifier of arbitrary length | |||
| (at least last I looked) | |||
| so you can parse nested parenthesis with a PDA | 20:46 | ||
| but not if <foo>...</foU> matches, if the identifier is not limited in length | |||
| masak | a PDA? a hand-held organizer? | ||
| moritz_ | you'd need an LBA for that | ||
| push-down automaton | |||
| masak | ah. | ||
| I'm not sure we're talking about the same limitation. | 20:47 | ||
| moritz_ | I changed what I was talking about ;-) | ||
| masak | the problem FSMs have with nested parentheses is that the nesting can be arbitrarily deep. | ||
| moritz_ | right. | ||
| masak | since there are only finitely many states... | ||
| moritz_ | and PDAs solve that | ||
| but still can't parse XML with arbitrary long identifiers | |||
| masak | I see, but are PDAs FSMs? | 20:48 | |
| moritz_ | PDA = finite, non-deterministic state machine + a stack | ||
| so PDA > FSM | 20:49 | ||
| masak | I think the biggest hurdle I've had with regular expressions yet is matching up the practice (as seen in Perl) with the theory (as taught in CS). | ||
| I don't have a formal CS degree, but I'm trying to suck one up through osmosis. :) | |||
| moritz_ | ;-) | ||
| neither have I | |||
| but I did teach an entry level CS tutorial at one point | |||
| masak | nice. | 20:50 | |
| colomon | that's okay, I've got the CS degree, but I don't remember. | ||
|
20:54
Chillance joined
20:56
eternaleye joined
21:00
jferrero joined
|
|||
| Coleoid | Is this paste a known bug, a new bug, or a subtlety I don't get? | 21:00 | |
| lisppaste3 | Coleoid pasted "given / if match not setting $/" at paste.lisp.org/display/89267 | ||
|
21:01
tak__ joined
|
|||
| moritz_ | Coleoid: new bug, afaict | 21:02 | |
| jnthn | Wow, that's an odd one. | 21:03 | |
| Coleoid | moritz_: How do I report it? | ||
| jnthn: I thought so too! | |||
| And, is this something that'll get autofixed by the new grammar work upcoming? | 21:04 | ||
| moritz_ | Coleoid: mail to rakudobug@perl.org | ||
| no, looks like a semantic bug, nothing to do with parsing afaict | |||
| masak yawns | |||
| I feel exhausted. thinking of turning in early tonight. | |||
| moritz_ | OMG NOEZ! | 21:05 | |
| masak | luckily the work week begins tomorrow, so I can recover. :) | ||
| moritz_ | who's going to write our book then? ;-) | ||
| heh ;-) | |||
| masak | moritz_: don't worry, I'll just lie down a little first. :) | ||
| moritz_ | masak: good night then | 21:06 | |
| masak | night. | ||
| see y'all tomorrow! | |||
|
21:08
gbacon joined
21:09
pmurias joined
21:11
rgrau joined
|
|||
| Coleoid | moritz_: Bug mail sent. Thanks! | 21:11 | |
| moritz_ | Coleoid++ # reporting bugs | ||
| pmurias | diakopter: ping | ||
| dalek | p-rx: 2c50f13 | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION. |
||
| p-rx: 2bc2d2f | pmichaud++ | src/NQP/ (2 files): Clean up name a bit. |
|||
| p-rx: b613e0d | pmichaud++ | (5 files): Add variable support. |
|||
| pmichaud | masak: (sandwich) -- you're correct, we use rec-descent above expressions (for block and statement level constructs) and below expressions (for variables and terms) | 21:14 | |
| jnthn | pmichaud: The startup profile is interesting. | 21:17 | |
| pmichaud: I just wrote a small patch that shaved 20% off current startup time thanks to it. | |||
| moritz_ | wow. | ||
| moritz_ is duely impressed | |||
|
21:18
alester joined
|
|||
| moritz_ | speaking of being duely impressed... | 21:18 | |
| jnthn | pmichaud: Our next biggest cost after that patch are apparently in calls to ACCEPTS in P6protoobject, and after that in meta-op generation. I think we may want to consider doing those more lazily. ;-) | ||
| moritz_ | the protoregex action methods look quite nice | ||
| +method noun:sym<variable>($/) { make $<variable>.ast; } | |||
| +method noun:sym<scoped>($/) { make $<scoped>.ast; } | |||
| I'll use those quite a lot in the JSON parser too | 21:19 | ||
| jnthn | Ooh, pretty. | ||
| moritz_ | maybe there's something that can be automated | ||
| jnthn | Yeah | ||
| I'm looking at those now thiking "oh hmm, boilerplate" :-) | |||
| moritz_ | like if there's only one capture, its AST could be make()d automatically if there's no custom action method | ||
| doesn't feel like the right level yet | 21:20 | ||
|
21:22
icwiener joined
21:27
payload joined
21:41
mikehh joined
21:54
am0c joined,
snarkyboojum joined
22:17
camlin joined
|
|||
| camlin | ls | 22:17 | |
| oops | |||
| I have a quick question. is there going to better object support in perl 6 or is it going to stay the way it is? The only reason I use python is because of its nice object and class structure. | 22:18 | ||
| moritz_ | Perl 6 has a very nice object model | ||
| with syntax! ;-) | |||
| camlin | ooooh | ||
| moritz_ | and introspection | ||
| camlin | is it still in perl 6 still in beta or ready to roll? | 22:19 | |
| moritz_ | we plan to have a useful release by April 2010, though it won't be fully feature complete | ||
| camlin | is it downloadable (I know I can google this but I'm on console only :( ) | 22:20 | |
| moritz_ | rakudo.org/how-to-get-rakudo | ||
| should work with a text browser ;-) | |||
| camlin | what is rakudo? | 22:21 | |
| snarkyboojum | plenty of syntax with Perl6 OO :) | ||
| moritz_ | camlin: a Perl 6 compiler | ||
| camlin | aah, I see. Can I not compile it with gcc? | ||
| moritz_ | there's a language specification, and various compilers | ||
| yes. You also need parrot, but rakudo's Configure script can build that for you | 22:22 | ||
| camlin | oh that's very nice :) Thank you all very much. The perl community is being very nice to be (was kicked once from #python) | ||
| moritz_ | we try hard to be nice ;-) | 22:23 | |
| jnthn | .oO( wonder if he was kicked after bringing up whitespace ;-) ) |
||
| moritz_ | oh, is that a senstive spot in the python community? ;-) | 22:24 | |
| jnthn | I realized that we don't need to call the multi-sub transformer only to do a check and see it didn't need to be called. Doesn't actually save much, but moves it down a rung or two in the "things we spend most time doing at startup" table. | ||
| Anyway, after an evening playing around with the profiler, I think I can safely say that we're going to be able to get some useful info from it that will help direct our optimization efforts. | 22:25 | ||
| carlin | gist.github.com/218283 # is what I've done for recv, would someone mind checking that to see if maybe there's a better way to do what I've done there or something that I've missed before I send it to to RT? | 22:26 | |
| moritz_ | last unless $received; | 22:28 | |
| what if $received is '0'? | |||
|
22:28
rfordinal joined
|
|||
| moritz_ | last unless $received.chars(); maybe? | 22:29 | |
| moritz_ does a dd if=/dev/zero of=/dev/hda | |||
| that's going to take some time :/ | |||
| carlin | Ah, that's a point | 22:32 | |
| carlin changes it | |||
| moritz_: apart from that does it look alright? | 22:33 | ||
| moritz_ | carlin: yes | ||
| (though I just glanced over it) | |||
| carlin | cool, and that change worked | 22:37 | |
| carlin send to RT | |||
|
22:44
brunov joined
|
|||
| dalek | kudo: 6817b90 | jonathan++ | src/parser/actions.pm: Turns out we already keep enough info around at compile time to have a good idea if we already saw a multi candidate of a given name. That means we can avoid many calls to !TOPERL6MULTISUB at startup when all it would do is determine it has nothing to do. Only a couple of percent, it seems, but every little helps. |
22:46 | |
| kudo: 67a6a81 | jonathan++ | src/ (2 files): Do some optimization work on the reblessing of subs into their Perl 6 classes at startup. Between a tweak in !fixup_routine_type and some small optimizations to the rebless_subclass op, we save roughly 20% off the startup time before this patch. profiling++ (chromatic++, cotto++, kcachegrind++ too). |
|||
|
22:52
nihiliad joined
22:53
PZt joined
22:57
pnate joined
|
|||
| moritz_ | rakudo: say 10/48 # startup improvement per file | 23:06 | |
| p6eval | rakudo 49e62f: OUTPUT«0.208333333333333» | ||
| moritz_ | jnthn++ | ||
|
23:06
s1n_mini joined
|
|||
| moritz_ | rakudo: say 10/48 * 454 | 23:07 | |
| p6eval | rakudo 49e62f: OUTPUT«94.5833333333333» | ||
|
23:07
mikehh joined
|
|||
| jnthn | Wow. A minute and a half off a spectest run. | 23:07 | |
| That's kinda nice. | 23:08 | ||
| moritz_ | aye | ||
| jnthn | I'm hopeful that with some further startup shavings and also the faster parsing we should be getting, we can make a very notable improvement by the next release. | 23:09 | |
| moritz_ | that would be really nice. | ||
| jnthn | Indeed. I love having lots of tests, but a spectest run is getting really quite long now. :-) | ||
| moritz_ | ah, our trick starts to work ;-) | 23:10 | |
| jnthn | Annoy the developers into making the tests run faster? :-P | ||
| moritz_ | aye | 23:11 | |
| jnthn | ;-) | ||
| The time shaved off a spectest run is quite a nice measure. | |||
| moritz_ | but something that can only be measured locally | ||
| I mean you can't compare the times for two releases | |||
| because the tests change too much | 23:12 | ||
| jnthn | Oh yes | 23:15 | |
| tools/benchmark.pl is nicer for that. | |||
| But for a "how much did this change help on the current test suite", it's kinda interesting to know. | 23:16 | ||
| moritz_ | aye | ||
|
23:17
xinming joined,
kentnl_ joined,
patspam joined
23:29
SmokeMachine joined
23:30
xp_prg joined
23:32
wknight8111 joined
23:44
cottoo joined
23:51
payload joined
23:54
eternaleye joined
23:55
eternaleye joined
23:56
eternaleye joined
23:57
tkr joined
|
|||