»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
sorear TimToady: how nonsensical? 00:00
TimToady does anything even use that $<sym>? 00:01
sorear no 00:02
TimToady and why should it be [':','dba']?
sorear ah
TimToady it just turned it into ':dba' since the «» code is what was giving undef warnings
pugssvn r31062 | sorear++ | [viv] Add a --no-indent option; rebootstrap with it 00:03
sorear how is the new build working for you?
TimToady I hope it still indents the yaml :)
sorear it doesn't affect yaml
it's just no warnings 'redefine'; *indent = \&no_indent 00:04
so the code generator never puts in the spaces
TimToady HACKALERT!!! :)
sorear I'm not afraid of typeglobs 00:05
TimToady
.oO(fools rush in...)
00:06
sorear possibly a conditional in ::indent itself would have been clearer
TimToady oh, I probably didn't actually fix the warning, if $M is undefined... 00:08
00:09 yinyin joined
pugssvn r31063 | lwall++ | [STD,Cursor] suppress undef warnings 00:16
sorear TimToady: how well has the new build system been working for you? 00:20
TimToady pretty okay; I don't know what the new targets are, but 'make clean' and 'make' seem to work :) 00:21
sorear I use make fast, mostly
make STD.pmc too 00:22
00:22 ash__ left
sorear it's slower than I'd like 00:26
00:27 ash__ joined
sorear there's also 'make reboot', which causes the current built version of STD.pm6 to be used for future builds 00:27
TimToady though 'make reboot' can conceivably break the build for 'make clean'ers 00:29
sorear how so? you mean if you wrote a bad version of STD.pm6? 00:31
00:31 ashleydev left
TimToady if you introduced a dependency on something that a fresh build doesn't know how to do 00:31
sorear no, make reboot copies the *compiled* version 00:32
00:32 justatheory left
TimToady std: 63 00:33
00:33 LylePerl left
p6eval std 31063: OUTPUT«ok 00:01 110m␤» 00:33
00:34 LylePerl joined
pugssvn r31064 | sorear++ | [viv] Re-enable required argument checking for only subs 00:35
r31064 | [STD] Declare EXPR argument as optional
00:37 rgrau left
TimToady sorear: have you figured out why \x et al. are not recognized in regexes? 00:40
since t/spec/S05-mass/named-chars.t is one of the regressions
hmm, can recognize /\xAB/ but not /\x[AB]/ 00:45
std: /\xAB/
sorear no
p6eval std 31063: OUTPUT«ok 00:01 108m␤»
TimToady std: /\x[AB]/
p6eval std 31063: OUTPUT«===SORRY!===␤Unrecognized regex backslash sequence at /tmp/utnzSrqANQ line 1:␤------> /\⏏x[AB]/␤Potential difficulties:␤ [AB] appears to be an old-school character class; please use <[AB]> if you␤ mean a character class, or quote it like
..'AB…
TimToady looking...
sorear it might have something to do with the bit where I made '{' ~ '}' mean '{' {} ~ '}' 00:48
std: /\Z/
p6eval std 31063: OUTPUT«===SORRY!===␤Unsupported use of \Z as end-of-string matcher; in Perl 6 please use \n?$ at /tmp/CDErcWmdgI line 1:␤------> /\Z⏏/␤Parse failed␤FAILED 00:01 107m␤»
TimToady I see there's a lazymap in there, perhaps deferring the <stopper> match to outside the local $::GOAL's scope is a problem somehow 00:49
it's not supposed to be using $*GOAL for anything other than messages though now
and the really stopper is supposed to always travel with the type of the Cursor 00:50
00:50 lest_away is now known as lestrrat
TimToady if you want to look at it, I'll stop for now 00:51
sorear no
TimToady the problem with the --no-indent is that there isn't an indented .pm5 out there I can just look at. :)
having it a separate make step meant that both versions were always there 00:52
pugssvn r31065 | sorear++ | [STD-ecosystem] Add a STD.pm5 target 00:54
sorear yes, that is the downside
but with the code-gen side of viv as fast as it is... I think it's tolerable 00:55
TimToady: STD.pm6 +3791. viv is generating $0 as an array because it occurs inside a quantifier. Is this correct behavior? 00:58
01:01 envi^home joined
TimToady yeah, needs a .[0] 01:03
01:04 whiteknight left
TimToady or a way in P5 to add .Str to ARRAY :) 01:04
01:08 pausenclown left 01:09 ashleydev joined 01:13 pausenclown joined 01:16 madalu joined 01:21 masonkramer__ left, masonkramer_ joined 01:22 envi^home left, plobsing joined 01:25 envi^home joined
pmichaud need to add to the README that JSON is now a requirement for STD compilation :) 01:26
awwaiid random rakudo question, why is 'assign' in the filename 'src/builtins/assign.pir' not capitalized like all the other files in that directory? 01:27
pmichaud because it's not a class
or role
or type
awwaiid ok, thanks 01:28
01:30 Schwern joined
pmichaud sorear: I get a lot farther now with building STD than earlier. 01:32
(still building... lots of "Use of uninitialized value ..." warnings) 01:33
sorear yes, TimToady++ just fixed some of those
pugssvn r31066 | sorear++ | [STD] add missing [0] for dumbsmart 01:34
r31067 | sorear++ | [viv] Remove obsolete dependency on JSON 01:36
sorear 1 regression down
01:37 Schwern left
awwaiid ok if I add comments to RT tickets that say "actually it looks like rakudo does this correctly now. <pasted session>" ? 01:37
01:38 uvtc joined
pmichaud awwaiid: please do so, yes! 01:38
awwaiid: and thanks!
awwaiid np 01:39
uvtc Hi #perl6. I just installed Parrot (with Rakudo) into `/usr/local/parrot`. Not sure how much sense this question makes, but, where is Rakudo's implementation of the Perl 6 "standard library"? 01:41
pmichaud uvtc: in the sources, generally in src/core/*.pm 01:42
beyond that, there's not really a "standard library" defined by the language. Different distributions will be able to choose what modules to bundle with the distribution. 01:43
sorear: build completed on my system, trying "make test" now. 01:44
uvtc I don't have a `/src/core` dir. Inside `/usr/local/parrot/src`, there's `2.4.0-devel`, and inside that, `ops`, `pmc`, and a couple of vtable files.
pmichaud uvtc: in the rakudo sources, not in the installed 01:45
the core library is compiled in as part of the rakudo executable
TimToady sorear, it appears that in \x[ it is not matching the [ because the pattern has an extra backslash: 01:46
3/1 TOP comp_unit statementlist statement EXPR termish term term__S_086value value value__S_135quote quote quote__S_142Slash_Slash nibble nibbler EXPR termish quant_atom_list quantified_atom atom metachar metachar__S_037Back backslash backslash__S_065x:::::::: PATTERN (?-xism:\G(?i:\\\[)) didn't match at 3
see that it says \\\[
uvtc pmichaud: Ah. compiled in. I see. Thanks.
TimToady sorear: so I think it's a translation error 01:47
sorear ahhh, backslashes, my sworn enemy 01:52
pmichaud looks like it builds fine on my system now. 01:53
(std, that is)
sorear++ TimToady++
01:54 yinyin left
sorear TimToady: found the error 01:56
01:59 azert0x_ left, azert0x left
pugssvn r31068 | sorear++ | [viv] Fix double escaping of strings in case ignoring contexts (TimToady++ for doing most of the work) 02:00
02:01 bacek joined
sorear Hello bacek 02:01
02:01 [mark] joined
sorear TimToady: All three regressions are now fixed 02:02
TimToady snaptesting 02:07
uvtc I'd like to install Proto and try it out (by having it install the web module), but the install instructions on the Proto page (github.com/masak/proto) aren't working. The command runs, but evidently fails to get the proto.pl file. 02:12
(Aren't working *for me*, I mean.) 02:13
Anyone have any tips on how I might get it installed?
My guess is that, once I get a proto.pl file, it should go with my `perl6` binary in `/usr/local/parrot/bin`.
Oops. Actually, looks like I can just grab the file by itself from github. 02:15
02:18 drbean left, drbean joined
pugssvn r31069 | sorear++ | [STD] Update bootstrap to get TimToady++'s undef fixes into the build 02:18
02:19 ashleydev left 02:23 bacek left, agentzh joined 02:25 envi^home left, rhr left, Sarten-X left, p6eval left, TimToady left, constant left, avar left, kolibrie left, literal left 02:28 envi^home joined, rhr joined, Sarten-X joined, avar joined, p6eval joined, TimToady joined, constant joined, kolibrie joined, literal joined, card.freenode.net sets mode: +vo p6eval TimToady
TimToady Passed 782/815, 95.95% 02:28
that's pretty darn good
02:29 TiMBuS joined
TimToady I pronounce this stage of bootstrap complete. 02:30
sorear++ sorear++ sorear++ sorear++ sorear++ sorear++
gimme5 is now officially pining for the fjords :) 02:31
pugssvn r31070 | sorear++ | [gimme5] Delete. (And there was much rejoicing.)
TimToady I thought you'd enjoy doing that :) 02:32
02:35 uvtc left 02:37 mantovani left, mantovani joined
pugssvn r31071 | lwall++ | [viv] make sure .pmc has trailing newline 02:41
02:48 meppl left
pugssvn r31072 | colomon++ | [t/spec] Update hyper tests to match new spec. 02:49
02:49 satyavvd joined
Wolfman2000 gimme5...wait a second. What was that used for again, and why is there much rejoicing? 02:51
(( and why are you guys copying Python with the references? ))
TimToady just because someone else likes the same thing you do doesn't mean you have to quit liking it... 02:52
Wolfman2000 I wasn't complaining about the Python references. I found it...slightly funny actually.
TimToady gimme5 was the chewing-gum-and-bailing-wire translator from P6 to P5 that we used to run std: with up till today 02:53
Wolfman2000 Then again, I have to remember that Perl 6 seems to be combining many language aspects. Only makes sense for the jokes to translate.
TimToady sorear++ has developed viv to the point where it can now do the same translation, so we no longer need gimme5
and it does the translation "right" rather than cheating all over the place
Wolfman2000 "to the point"...soundsl ike something is missing then.
TimToady well, it still uses modules written in Perl 5, such as Cursor and Lazymap 02:54
next step is to rewrite those in P5 and translate using viv, so the whole system is in P6
02:55 ShaneC left
Wolfman2000 but once those are done...then even more progress in Perl 6 02:56
TimToady with viv we can start to think about running BEGIN blocks, for instance
and we can use viv to target other backends than P5 02:57
02:57 xinming_ is now known as xinming
TimToady and we can do some of the optimizations that were impossible with gimme5 02:57
and we can stop writing STD in the subset of P6 that gimme5 groks
Wolfman2000 alright, viv is the new hero, got it 02:58
TimToady viva la viv
03:02 pausenclown left
sorear gimme5 consisted of 1200 lines of Perl5 s/// statements being used to turn a subset of perl 6 into perl 5 03:03
+800 lines of regex compiler
viv works by passing Perl 6 into STD.pm6, then generating Perl 5 from the parse *tree*
03:03 pausenclown joined
sorear so it accepts a much larger subset of perl 6 03:04
e.g. gimme5 couldn't really handle postcircumfixes
Wolfman2000 I recall a++ has a postfix in ++. What's the postcircumfix again?
sorear @a[2] 03:05
it's a postfix operator that has an expression
with gimme5, you had to write the method call form
Wolfman2000 ...I'm not quite seeing how making a postcircumfix would be useful. Got a sub you can make? 03:06
sorear sub sum(@arr) { my $x = 0; for (0 .. ^@arr) { $x += @arr[$_] } } 03:07
Wolfman2000 ...I think I asked the wrong question 03:08
sorear the reason you can't see why they'd be useful is that you're taking them for granted
Wolfman2000 I've made custom infixes and prefixes before.
But where would a custom postcircumfix come in handy?
sorear I'm not talking about custom ones
gimme5 couldn't handle the *standard* ones
Wolfman2000 ...woah. Okay, missed that detail. 03:09
03:09 satyavvd left, bjarneh joined, justatheory joined 03:16 ash__ left
sorear Is backtracking from one LTM alternative into the next-longest token implemented yet? 03:25
TimToady yes, that's what relex controls
well, $relex, since it's always anonymous 03:26
03:27 yinyin joined
TimToady see Cursor.pmc:531 03:27
sorear aha 03:28
what about something like [ a | aa ] ab 03:29
can it backtrack into a group of alternations
TimToady I believe so, but I could be wrong
if so, it's done with lazymaps 03:30
it won't happen under :r of course
03:30 madalu left
sorear -> svnweb 03:33
What is "failover"? 03:35
TimToady context?
generally, when your first try or set of tries don't work, and you'd ordinarily get an exception, but you have something else to try instead 03:36
we used to do a lot more of it in the design of p6, but we've tended to avoid it in recent years when possible 03:37
we used to failover between methods and functions, and vice versa
looking in GLOBAL for dynvars that aren't in the dynamic scope is also a failover 03:38
sorear die "failover no longer implemented" 03:39
TimToady where?
sorear gimme5, RE_any::walk
TimToady oh, in that case, it originally assumed that the fates or relexes were unreliable, so would retry all the cases one by one, much more like rakudo still does 03:41
when the relexing worked, we didn't have to do that anymore
STD has trusted its relexing for more than a year now, I think
03:45 skids left
sorear debates adding no warnings 'misc' so as to make my $C = foo; my $C = $C->bar; legal without intervening braces 03:52
TimToady that only works if you never need access to the original $C 03:53
03:55 satyavvd joined
TimToady and it doesn't really buy you much in p5 03:57
since most blocks parasitize their sub's lexpad anyway
04:21 ashleydev joined 04:23 jaldhar joined
pugssvn r31073 | lwall++ | [viv] is no longer a "start" on replacing gimme5 :) 04:24
04:33 tedv left 04:38 mtnviewmark joined 04:40 mtnviewmark left 04:41 Wolfman2000 left 04:42 envi^home left, envi^home joined 04:44 plainhao left 04:48 ashleydev left
pugssvn r31074 | sorear++ | [viv] Overhaul indentation engine; should be much more readable now 04:50
04:53 yinyin left
satyavvd Why it is not displaying all the methods of HASH? 04:54
perl6 -e 'for Hash.^methods(:global) -> $meth { say $meth.name , "-", $meth.WHAT }'
but same works for 'Array' 04:55
??? 04:57
05:00 patspam left 05:01 PenThrive left
TimToady interestingly: 05:03
rakudo: for { a => 1 }.^methods(:global) -> $meth { say $meth.name , "-", $meth.WHAT }
p6eval rakudo 18d996: OUTPUT«sort-Multi()␤Bool-Method()␤list-Method()␤postcircumfix:<{ }>-Multi()␤push-Method()␤delete-Method()␤of-Method()␤elems-Method()␤invert-Multi()␤Str-Method()␤reverse-Method()␤keys-Method()␤postcircumfix:<{
..}>-Multi()␤pairs-Method()␤contains-Method()␤exists-Method()␤kv-Method()␤ACCEPTS-…
05:15 kaare joined, kaare is now known as Guest6050 05:23 finanalyst joined 05:30 bacek joined 05:31 cli_ left 05:35 szabgab joined 05:36 dukeleto joined
dukeleto howdy 05:37
sorear hello 05:38
dukeleto i am trying to load perl6.pbc from rakudo in PL/Parrot, and I am running into this: gist.github.com/423516
dukeleto is trying to make PL/Perl6 work on PL/Parrot
sorear If you ever figure out how to make this work, tell us. 05:39
I would very much like to know why loading languages in Parrot is so balky. 05:40
snarkyboojum satyavvd: something like this 05:43
rakudo: class B { method class_B{} }; role A is B { method role_A(Str $test) {} }; say A.^methods(:global)
p6eval rakudo 18d996: OUTPUT«role_A␤»
snarkyboojum rakudo: class D { method class_D{} }; class C is D { method role_C(Str $test) {} }; say C.^methods(:global)
p6eval rakudo 18d996: OUTPUT«role_Cclass_DcanNumericelemsendreduceStrkeysreverseisauniqclassifymappairskvACCEPTSminmaxpickfirstminmaxdoesgrepvaluesjoinWHICHperlCREATECapturePARROTblessWHENCEWHERElistnotdefBUILDALLnewBoolsayprintdefinedWALKitemBUILDREJECTSclone␤»
snarkyboojum rakudo: class B { method class_B{} }; role A is B { method role_A(Str $test) {} }; say A.new.^methods(:global)
p6eval rakudo 18d996: OUTPUT«role_Aclass_BminmaxdoesgrepvaluesjoincanNumericelemsendreduceStrreversekeysuniqisaclassifymappairskvACCEPTSminmaxpickfirstBUILDALLnewBoolsayprintdefinedWALKitemREJECTSBUILDcloneWHICHperlCREATECapturePARROTblessWHENCEWHERElistnotdef␤»
dukeleto sorear: i will let y'all know, but would appreciate any help peeps in here have to give :) 05:44
snarkyboojum not saying it's right, but that's what happens with Hash (a role) inheriting from a class (EnumMap)
satyavvd ok
snarkyboojum ask jnthn or someone.. could be a bug (I don't know enough) :) 05:45
satyavvd yup ..Thanks 05:46
05:46 BrowserUk joined 05:49 yinyin joined
[Coke] anyone recall the git magic to make the old 'ng' branch the new 'master' ? 05:55
sorear git checkout master; git reset --hard ng 05:56
dukeleto [Coke]: git branch -M ng master
05:59 hudnix left 06:01 eternaleye left
[Coke] dukeleto: what happens to master then? 06:02
(old master)?
dukeleto [Coke]: it goes into the ether, maybe not what you want 06:04
[Coke]: but you could do git branch -m master old_master beforehand 06:05
06:05 frodwith left 06:06 uniejo joined
[Coke] dukeleto: eh. ether is prolly OK in this case. danke. 06:06
06:07 frodwith joined 06:18 eternaleye joined 06:19 Su-Shee joined 06:25 abhy joined 06:28 abhy left 06:35 justatheory left 06:45 xomas left
moritz_ good morning 06:46
06:46 viklund joined 06:47 frodwith left
sorear good morning moritz_ 06:48
moritz_ installing Try::Tiny...
BinGOs There is no try there is only do. 06:49
sorear really?
BinGOs was throwing StarWars™ quotes around. 06:50
sorear Try::Tiny has been a Moose dependency for quite a while
06:50 frodwith joined
moritz_ ouch 06:52
szabgab is use v6; required by the specs ? currently rakudo can live without it
moritz_ I've tried to build a debian package for Try::Tiny
and had the local::lib env variables lying around
so it made a debian package that installed into /home/moritz/perl/ 06:53
szabgab: "it depends" (more)
szabgab: when the binary is called 'perl6', v6 is the default mode
szabgab: but if the binary is called 'perl', v5 should be the default, and the 'use v6;' is required to enable Perl 6 mode 06:54
szabgab rakudo: my $x = 0; while ($x < 3) { say $x++ }
p6eval rakudo 18d996: OUTPUT«0␤1␤2␤»
szabgab rakudo: my $x = 0; while ($x < 3){ say $x++ }
p6eval rakudo 18d996: OUTPUT«===SORRY!===␤Missing block at line 11, near ""␤»
szabgab this is a parsing error right?
moritz_ yes
without a space, the {...} is parsed as a postcircumfix
the right thing to do is to omit the parens 06:55
rakudo: my $x = 0; while $x < 3 { say $x++ }
szabgab oh, so it will never work that way?
p6eval rakudo 18d996: OUTPUT«0␤1␤2␤»
moritz_ right
std: my $x = 0; while ($x < 3){ say $x++ }
szabgab ah
p6eval std 31074: OUTPUT«===SORRY!===␤Missing block (apparently gobbled by undeclared routine?) at /tmp/BjbKAwHt8k line 1 (EOF):␤------> my $x = 0; while ($x < 3){ say $x++ }⏏<EOL>␤Parse failed␤FAILED 00:01 111m␤»
szabgab ty
moritz_ you're welcome
sorear: STD.pm build goes much further this time 06:56
like, finished \o/
afk 06:59
06:59 plobsing left
Su-Shee GNAGNA. COULD I PLEASE HAVE PERL6 NOW? this is a nuisance, this old stuff. 07:16
07:16 aindilis left 07:17 aindilis` joined 07:25 xomas_ joined, xomas_ left, xomas_ joined 07:41 clintongormley joined, ejs joined
pugssvn r31075 | sorear++ | [viv] Start bringing _PATTERN under the DEEP framework, and implement combination of quantifiers with atom regexes. -2% STD.pm5 size 07:45
07:48 ejs left, ejs joined
sorear TimToady: I'd love to optimize [ a | b ] into <[ a b ]>; could that be made to play nicely with LTM? 07:49
07:53 aindilis` left 07:57 wallberg joined 07:58 BrowserUk left, zostay left
szabgab what is your suggested way to prompt for a value with a condition? my $val = prompt("Please give number below 50"); while $val >= 50 { $val = prompt("Please...") } 07:59
that has the same prompt twice
07:59 zostay joined 08:00 dms joined
szabgab I guess: my $val; while not defined $val or $val >= 50 { $val = prompt("...") } 08:00
anything better ?
mathw Morning
szabgab gm
08:01 dms left
moritz_ while my $val = promt(...) < 50 { ... } 08:02
while my $val = promt(...) < 50 { 1 }
1 while (my $val = prompt(...)) < 50; 08:04
szabgab "Ask the user. If the answer is incorrect, ask again." 08:05
$val = prompt() while $val < 50;
that's not even the right translation 08:06
sorear sub ask($sm, $prompt) { my $val; do { $val = prompt $prompt } until $val ~~ $sm; $val } 08:07
moritz_ ask: my $val = prompt(); if $val < 50 { got ask };
s/got/goto/
j/k :-)
sorear ask * >= 50, "Enter a number over 50"
moritz_ rakudo: say prompt() 08:08
p6eval rakudo 18d996: OUTPUT«No applicable candidates found to dispatch to for 'prompt'. Available candidates are:␤:(Any $msg)␤␤ in main program body at line 11:/tmp/utKUl1Z0j4␤»
moritz_ rakudo: say prompt('')
p6eval rakudo 18d996: OUTPUT«Land der Berge, Land am Strome,␤»
hejki :D
08:09 Snarkyboojum_ joined, Snarkyboojum_ left
moritz_ rakudo: say $*IN.slurp.substr(0, 10) 08:10
p6eval rakudo 18d996: OUTPUT«Land der B␤»
pugssvn r31076 | sorear++ | [viv] Combine regexes in sequence nodes
sorear is that the German national anthem?
moritz_ rakudo: say $*IN.slurp.comb.classify({$_}).sort({+.value}).batch(5).map({.key}) 08:11
sorear: Australian
p6eval rakudo 18d996: OUTPUT«Method 'batch' not found for invocant of class 'Parcel'␤ in main program body at line 11:/tmp/KZgpvkWzA6␤»
moritz_ rakudo: say $*IN.slurp.comb.classify({$_}).sort({+.value}).[^5].map({.key})
p6eval rakudo 18d996: OUTPUT«TZAÄD␤»
moritz_ sorear: erm, Austrian 08:12
close miss :-)
rakudo: say $*IN.slurp.comb.classify({$_}).sort({-.value}).[^5].map({.key})
p6eval rakudo 18d996: OUTPUT«e rin␤»
08:13 JimmyZ joined
JimmyZ rakudo: &$foo; 08:13
p6eval rakudo 18d996: OUTPUT«===SORRY!===␤Confused at line 11, near "&$foo;"␤»
JimmyZ known bug? 08:15
sorear rakudo: $foo();
p6eval rakudo 18d996: OUTPUT«===SORRY!===␤Symbol '$foo' not predeclared in <anonymous>␤»
sorear JimmyZ: syntactically invalid
moritz_ std: my $foo; &$foo
p6eval std 31075: OUTPUT«ok 00:01 108m␤»
moritz_ JimmyZ: I think it's known
JimmyZ moritz_: ok, ignore it :) 08:16
szabgab rakudo: while my $val = prompt("num ") >= 10 {}; say $val; 08:17
p6eval rakudo 18d996: OUTPUT«num 0␤»
szabgab that's not good as the second $val is not the same scope 08:18
moritz_ it is
in Perl 6
rakudo: while (my $val = prompt("num ")) ~~ /Strome/ {}; say $val; 08:19
p6eval rakudo 18d996: OUTPUT«num num Land der Äcker, Land der Dome,␤»
szabgab ok, maybe it is but I get 0 there
no matter how hard I press the keyboard :-(
moritz_ yes, because $*IN doesn'T contain numbers
(on p6eval at least)
szabgab rakudo: while my $num = 7 >= 10 {}; say $num; 08:20
p6eval rakudo 18d996: OUTPUT«0␤»
moritz_ precedence
szabgab rakudo: while (my $num = 7) >= 10 {}; say $num;
p6eval rakudo 18d996: OUTPUT«7␤»
szabgab rakudo: while (my $num = 12) >= 10 {}; say $num; 08:21
ok I tripped it :-)
p6eval rakudo 18d996: ( no output )
moritz_ no worries, it has a timeout
szabgab so I need the parentheses there I think, right?
for the precedence 08:22
moritz_ right
because comparisons are tighter than assignment
08:24 Maddingue[work] joined
szabgab if I could write it my $num = prompt while $num >= 10; ... 08:25
rakudo: my $num = 7 while $num >= 10; say $num;
p6eval rakudo 18d996: OUTPUT«Use of uninitialized value in numeric context␤Any()␤»
szabgab rakudo: my $num = 7 while not defined $num or $num >= 10; say $num; 08:26
p6eval rakudo 18d996: OUTPUT«7␤»
08:27 eternaleye left
pugssvn r31077 | moritz++ | [t/spec] unfudge some advent tests for rakudo 08:31
08:32 pmurias joined
dalek kudo: a1140cc | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get latest nqp-rx fixes
08:34
08:37 eternaleye joined 08:40 dakkar joined 08:44 wallberg left 08:47 snarkyboojum left
moritz_ \o/ all JSON parsing tests pass agian 08:48
pugssvn r31078 | sorear++ | [viv] Fix a bug which caused 345 unneccessary lazymaps in STD.pm5. (But only saves 15 seconds?) 08:50
08:52 meppl joined 08:53 snarkyboojum joined
moritz_ rakudo: 'a b c'.subst(/<alpha>/, -> $m { uc $m }, :g) 08:54
p6eval rakudo a1140c: ( no output )
moritz_ rakudo: say 'a b c'.subst(/<alpha>/, -> $m { uc $m }, :g)
p6eval rakudo a1140c: OUTPUT«A B C␤»
sorear starts a NYTProf run over STD.pm6 and goes to sleep 09:05
09:08 dju joined
moritz_ rakudo: say 'abc'.samemark('ö') 09:08
p6eval rakudo a1140c: OUTPUT«Method 'samemark' not found for invocant of class 'Str'␤ in main program body at line 11:/tmp/Uip9Zlpb4l␤»
moritz_ rakudo: Range ~~ Iterable 09:18
p6eval rakudo a1140c: ( no output )
moritz_ rakudo: say Range ~~ Iterable
p6eval rakudo a1140c: OUTPUT«1␤» 09:19
moritz_ rakudo: say Positional ~~ Iterable
p6eval rakudo a1140c: OUTPUT«0␤»
09:22 ispeak joined 09:32 pmurias left 09:38 ruoso joined
snarkyboojum hi moritz_ 09:52
someone noticed this today gist.github.com/423699, is it buggy or how things are supposed to work?
moritz_ snarkyboojum: I think it's ok (more) 09:55
snarkyboojum ah ok - so only shows the first method in the role 09:56
moritz_ snarkyboojum: because a role can't really inherit from a class... it can just pass on the inheritance rule to classes it's mixed into
snarkyboojum Mmm.. okydoke.. the real world example was Hash (it's a role that inherits from EnumMap)
so inspecting Hash.^methods for example, only shows the methods in the Hash role 09:57
moritz_ rakudo: my @a = < a b c d e>; my @b = <X Y>; say @a Z @b xx * -> $a, $b { say "$a$b" }
p6eval rakudo a1140c: OUTPUT«===SORRY!===␤Confused at line 11, near "say @a Z @"␤»
09:57 yinyin left, masak joined
moritz_ rakudo: my @a = < a b c d e>; my @b = <X Y>; for @a Z @b xx * -> $a, $b { say "$a$b" } 09:58
p6eval rakudo a1140c: OUTPUT«a_block60␤»
snarkyboojum rakudo: say Hash.^methods()
moritz_ rakudo: my @a = < a b c d e>; my @b = <X Y>; for @a Z (@b xx *) -> $a, $b { say "$a$b" }
p6eval rakudo a1140c: OUTPUT«listBoolpostcircumfix:<{ }>!STOREpushdelete!push_constructsort␤»
rakudo a1140c: OUTPUT«a_block60␤»
snarkyboojum say Hash.new().^methods()
moritz_ snarkyboojum: that's less than awesome... maybe there should be class Hash too, and then introspection should be tricked into using the class variant 09:59
snarkyboojum moritz_: yeah - something to show all the methods you'd expect to see when introspecting perhaps
rakudo: say Hash.new().^methods()
p6eval rakudo a1140c: OUTPUT«postcircumfix:<{ }>BoollistpushdeletesortiteratornewIntNumvaluesperlCaptureofelemsinvertStrreversepostcircumfix:<{
..}>keyspairscontainsexistskvACCEPTSfmtsqrtsinasincoshsuccsignasinhacosechabsucceilingunpolarfloorsamecasesubstrasechordroundflipsplitmatchacoshacosecwordscotancosechata…
moritz_ that matches 'sexist' :-) 10:00
snarkyboojum also matches a 'shaco', an anagram for 'chaos' 10:02
:P
hejki hehe :)
snarkyboojum I certainly never knew 'keyspairscontainssexists'
hejki contain sexist skv :)
10:03 ive joined
masak oh hai, #perl6. 10:04
phenny masak: 02 Jun 23:28Z <jnthn> tell masak I did hack up something for you that should be enough for encode, see example code at gist.github.com/423175
masak: 02 Jun 23:29Z <jnthn> tell masak it's in ya buf branch, btw.
masak jnthn: \o/
will look.
snarkyboojum hi masak o/
masak hi. what a lovely day for some Perl 6 work. :)
snarkyboojum beautiful rainy night here :) 10:05
10:12 agentzh left
mathw masak: what a shame I have to do $day-job instead 10:12
jnthn morning 10:13
well
somewhere it is
masak :)
jnthn masak: I realized that I didn't implement elements.
masak haven't looked yet.
I just woke up too.
jnthn masak: Though you may be able to work out how to do that from what's already theere...it's not like C actually has much syntax to get wrong. ;-) 10:14
masak I'm actually learning C a bit now, so that suits me.
jnthn :-)
masak C is a cute little language.
jnthn Yeah, it annoys me relatively little. 10:15
masak and it's fast. sometimes I compile and I go, "hey, did it actually do anything?"
mathw I usually end up frustrated with its primitiveness
jnthn :-)
mathw but it is refreshing after C++ compile times
jnthn mathw: Well, if I'm writing in C I'm generally doing something that is in some sense "primitive".
arnsholt The hardest thing in C (if you ask me) is function pointers
But they're not that hard =) 10:16
mathw the syntax around function pointers is nasty
jnthn arnsholt: That's only hard because the syntax is horrible.
mathw but they're not that hard to actually use
jnthn mathw: Heh. :-)
masak I'm currently translating the Perl 6 Druid implementation to C, as an exercise: github.com/masak/sea-druid
mathw function pointer typedefs are particularly entertaining
szabgab rakudo: if (3 = 3|4) { say 3 }
p6eval rakudo a1140c: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/bASHFoQTqG␤»
szabgab rakudo: if (3 == 3|4) { say 3 }
p6eval rakudo a1140c: OUTPUT«3␤»
szabgab rakudo: if (3 != 3|4) { say 3 }
p6eval rakudo a1140c: ( no output )
szabgab rakudo: unless (3 != 3|4) { say 3 } 10:17
p6eval rakudo a1140c: OUTPUT«3␤»
szabgab rakudo: unless (3 == 3|4) { say 3 }
p6eval rakudo a1140c: ( no output )
szabgab hmm, I must have seen something else locally
10:22 lestrrat is now known as lest_away 10:24 Trashlord left 10:29 Bzek joined
arnsholt jnthn: Yeah, that's pretty much it =) 10:37
10:42 JimmyZ left
szabgab can I check if a string looks_like_number without regexes involved? 10:55
moritz_ not really
it's something we want to enable in a natural way 10:56
but don't know yet how
szabgab $x.can_convert_to_number
moritz_ the idea is that you just numify, and then somehow tell if there was information lost
jnthn Well, you can always use the grammar's number regex as well rather than rolling your own, I guess.
if +$foo eq $foo { ... } # quite strict 10:57
moritz_ too strict
jnthn Depends what you're doing
moritz_ rakudo: say +"1234e5"
p6eval rakudo a1140c: OUTPUT«123400000␤»
jnthn Right. If you're dealing with exponents it's no good. :-) 10:58
masak perl6: my $i = 5; while (--$i){ say "A" } 10:59
p6eval rakudo a1140c: OUTPUT«===SORRY!===␤Missing block at line 11, near ""␤»
..elf 31078: OUTPUT«Parse error in: /tmp/4U9UVLw5Kb␤panic at line 1 column 11 (pos 11): Can't understand next input--giving up␤WHERE: my $i = 5; while (--$i){ say "A" }␤WHERE: /\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in `scan_unitstopper'␤ STD_red/std.rb:224:in
..`com…
..pugs: OUTPUT«*** ␤ Unexpected end of input␤ expecting operator or bare or pointy block construct␤ at /tmp/XKTZRXP72S line 2, column 1␤»
masak std: my $i = 5; while (--$i){ say "A" }
p6eval std 31078: OUTPUT«===SORRY!===␤Missing block (apparently gobbled by undeclared routine?) at /tmp/QsDBGDtSHU line 1 (EOF):␤------> my $i = 5; while (--$i){ say "A" }⏏<EOL>␤Parse failed␤FAILED 00:01 112m␤»
jnthn masak: The implementations. They all say you're wrong.
masak ah, of course. postcircumfix<{ }>.
jnthn ;-)
Wow though. They all agree on something! 11:00
masak szabgab complains at the end of szabgab.com/blog/2010/06/1275598393.html that this is the case.
szabgab he always just complains :-)
masak but apart from adding an excellent error message for this particular case, I don't really see what to do about it.
szabgab: this is, I think, a sensible complaint.
szabgab but I pulled out my basball cards and showed my son the Indians and Orioles 11:01
masak :)
szabgab so he knows with who do we speak :)
masak 哈哈 11:02
from Twitter today: "roles are flat". twitter.com/zenogantner/status/15315000868 11:06
I find this to be a very compelling explanation.
jnthn masak: It's pretty much right. 11:08
masak: Role composition is described as "flattening composition" in the original paper that proposed them.
masak roles flatten when composed into classes. right.
jnthn That's why beyond composition time, the only runtime connection between a class and a role is that the class knows it does the role. 11:09
(I see some people mistakenly thing that we care about the role during method dispatch. We don't.)
*think
masak nod. 11:10
jnthn Perl 6 has the additional interesting nugget that when you write a role you're actually writing a role factory really. But that's not something you tend to need to think about too much. :-) 11:11
masak right. 11:12
lunch &
11:17 ispeak left 11:20 rv2733 joined
colomon rakudo: my $a = [1, 2, 3]; say ($a xx 4).perl 11:20
p6eval rakudo a1140c: OUTPUT«[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]␤»
colomon rakudo: my @a = (1, 2, 3); say (@a xx 4).perl 11:21
p6eval rakudo a1140c: OUTPUT«[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]␤»
hejki :O
rakudo: my $a = (1,2,3); say ($a xx 4).perl
p6eval rakudo a1140c: OUTPUT«[(1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3)]␤»
hejki funnay 11:22
my $a = (1,2,3); my $b = (4,5,6); say (($a X $b) xx 4).perl
rakudo: my $a = (1,2,3); my $b = (4,5,6); say (($a X $b) xx 4).perl
p6eval rakudo a1140c: OUTPUT«[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]␤»
hejki :O 11:23
i was expecting 4 times that long list
rakudo: my $a = (1,2,3); my $b = (4,5,6); say ($a X $b xx 4).perl
p6eval rakudo a1140c: OUTPUT«(1, (4, 5, 6), 1, (4, 5, 6), 1, (4, 5, 6), 1, (4, 5, 6), 2, (4, 5, 6), 2, (4, 5, 6), 2, (4, 5, 6), 2, (4, 5, 6), 3, (4, 5, 6), 3, (4, 5, 6), 3, (4, 5, 6), 3, (4, 5, 6))␤»
hejki whoa :O
colomon seems to me (($a X $b) xx 4) is a bug. 11:25
probably related to exhausting the iterator that $a X $b returns.
moritz_ aye
colomon rakudo: my $a = (1,2,3); my $b = (4,5,6); my @a = ($a X $b).Seq; say (@a xx 4).perl 11:26
p6eval rakudo a1140c: OUTPUT«[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3,
..5), (…
jnthn Maybe the refactors pmichaud++ is working on will help with that.
hejki :) 11:27
colomon I've just been looking at the new hyper stuff, and it seems to me that the (@dwimmyside xx *).batch(@otherside.elems) formulation is badly broken, in practical terms.
moritz_ aye 11:28
colomon or maybe it's just a flattening thing?
rakudo: my $a = (1,2,3); my $b = (4,5,6); my @a = ($a X $b).Seq; say (@a xx 4).batch(3) 11:29
p6eval rakudo a1140c: OUTPUT«Method 'batch' not found for invocant of class 'Array'␤ in main program body at line 11:/tmp/EtXPsYaQUA␤»
colomon well, that.
hmmm....
hejki :D 11:31
moritz_ has a pseudo-LTM .trans-implementation for literal strings 11:37
11:38 LylePerl left
jnthn moritz_: \o/ 11:39
moritz_: Once .trans is in place, I may be able to find tuits to look at tr///.
moritz_ jnthn: shouldn't be too hard... .trans does the parsing of ranges itself 11:40
jnthn *nod*
11:40 CSSphil joined, CSSphil left
jnthn moritz_: I want to try and fix up smart-matching too 11:40
moritz_ \o/
jnthn moritz_: So it sets $_ as the RHS 11:41
*for the RHS
colomon has a first stab at implementing the new rules for hyper
jnthn moritz_: Though I do wonder...
colomon oooo, and compile fail
jnthn $_ = 42; 'lol' ~~ worreva; say $_; # lol or 42?
colomon: Oh?
moritz_ jnthn: 42 11:42
jnthn colomon: In master, or after the mods?
colomon jnthn: just typos, I think.
jnthn moritz_: Why?
colomon jnthn: announcing my code very prematurely. ;)
jnthn moritz_: That is, does this mean ~~ should not only set $_ but then unset it again afterwards?
11:42 pkkm joined
moritz_ jnthn: I think so... it's a micro-topicalizer 11:42
jnthn: but better check the spec (or TimToady) first
jnthn OK. That makes it less fun to implement.
moritz_ thought so. 11:43
jnthn The spec didn't see to be clear on either, from what I recall. But I should check latest.
Probably it's too surprising if we don't unset it. 11:44
11:44 snarkyboojum left
jnthn Though of course one day somebody is going to write for @x { if $y ~~ $_ { ... } } and get a surprise when they realize they're doing the equivalent of "if $y ~~ $y { ... }" :-) 11:44
colomon > say ((1..10) <<~>> <A B C>).perl 11:45
["1A", "2B", "3C", "4A", "5B", "6C", "7A", "8B", "9C", "10A"]
jnthn ooh!
colomon++
moritz_ colomon++ indeed
11:45 moritz_ sets mode: +o colomon
colomon > say ((1..10) <<~<< <A B C>).perl 11:46
["1A", "2B", "3C"]
> say ((1..10) >>~>> <A B C>).perl
["1A", "2B", "3C", "4A", "5B", "6C", "7A", "8B", "9C", "10A"]
> say ((1..10) >>~<< <A B C>).perl
Sorry, sides are of uneven length and not dwimmy.
jnthn \o/
moritz_ (at this point I'm happy that lambdabot is permanently gone)
colomon code is actually kind of cleaner after the change, too.
11:46 satyavvd left 11:47 JimmyZ joined
pugssvn r31079 | moritz++ | [t/spec] fudge trans.t for Rakudo, and remove ambiguous rule for whitespace translation from one test 11:52
jnthn lunch & 11:56
dalek kudo: 3a6b43f | moritz++ | (2 files):
First shot at pure-Perl Cool.trans

The range unpacking is greatly inspired by (David Green)++'s p6c mail. Also pyramidine++ for his initial implementation.
11:58
szabgab rakudo: say 1; exit; say 2
p6eval rakudo a1140c: OUTPUT«1␤␤ in main program body at line 1␤»
moritz_ rakudo: say ord('ö').fmt('%04x')
p6eval rakudo a1140c: OUTPUT«00f6␤»
szabgab calling exit; is not loved in rakudo ? 11:59
moritz_ szabgab: worth a bug report 12:00
szabgab still rakudobug @ perl.org ? 12:01
moritz_ yes 12:02
12:02 moritz_ sets mode: +o szabgab 12:03 ejs left 12:07 Trashlord joined
szabgab thanks 12:07
12:08 ejs joined
szabgab another strange thing is that prompt() throws and exception but prompt () (with a space) works 12:08
moritz_ that's because the () counts as a positional argument
szabgab also prompt ("what?") works
moritz_ and prompt expects one argument 12:09
it's pretty easy to give it a default value, if you can think of a good default
szabgab so that means that if I want to put parenthese around the function parameters I have to do it without leaving any space, right?
moritz_ right 12:10
szabgab any function I mean
ok
I am not sure what does that mean that we are tripped so easily by such cases 12:11
moritz_ it means that Perl 5 users do need to learn a few rules 12:12
12:15 ejs left 12:16 ejs joined
takadonet morning all 12:16
12:16 cognominal left
szabgab so what would be the recommended way to prompt for nothing? 12:17
prompt('') or prompt () ?
or prompt ''; ?
moritz_ $*IN.get
szabgab :)
moritz_ there's no reason to use prompt if you don't have a prompt 12:18
szabgab I thoughtthat $*IN was gone
moritz_ it's the prefix:<=> that is gone
szabgab ok
moritz_ former =$*IN is now $*IN.get
12:21 cognominal joined
jnthn That exit bug is already ticketed by masak++, I believe. 12:24
12:30 masonkramer_ left
mathw I just realised how appropriate it is that the global filehandles have a * twigil 12:32
12:32 bluescreen joined
mathw I may now have to go and swoon over Perl 6's beauty for a while 12:32
12:33 bluescreen is now known as Guest21689
pmichaud good morning, #perl6 12:47
takadonet pmichaud: morning
colomon o/ 12:48
jnthn morning, pmichaud
pmichaud szabgab++ # excellent Perl tips and tricks posting
12:57 Bzek left 12:58 proller left 13:00 bjarneh left 13:01 sorear left 13:02 sorear joined
pugssvn r31080 | colomon++ | [t/spec] Fix up for new hyper rules, unfudge tests that now work. 13:07
mathw hi pmichaud 13:09
dalek kudo: 2242efb | (Solomon Foster)++ | src/core/metaops.pm:
Implement the new rules for handling hypers of different lengths.
masak morning, pmichaud. 13:10
mathw pmichaud: I'm curious how difficult you think rt.perl.org/rt3//Public/Bug/Display...l?id=73608 is to fix (nqp-rx regexes won't backtrack properly into capturing parentheses or subrules)
13:10 proller joined
masak I'm curious about what causes that. 13:14
mathw I don't care as long as it goes away :) 13:15
pmichaud it's not trivial.
mathw pmichaud: I thought you might say that :(
masak pmichaud: so it's not a bug so much as never implemented in nqp-rx? 13:16
pmichaud basically, we have to suspend execution of the regex submatch (i.e., a Parrot sub), and then have a way to restart it again when we backtrack it.
masak heh, the exact same thing GGE needs to do next. :)
pmichaud: how do you plan to save state? 13:17
pmichaud the cursor already holds state, actually
13:17 bjarneh joined
masak even the internal state of a partial subrule match? 13:17
pmichaud yes
masak cool.
that's just so... right.
pmichaud in PGE it was handled via Parrot coroutines, but for a variety of reasons I didn't want to use that approach in nqp-rx
[Coke] pmichaud: parrot should let you do that with yield already. 13:18
... unless you don't want to use that approach. =-)
pmichaud [Coke]: yes, yield is the way that PGE did it.
masak the approach in GGE will have to be 'insane cheating', I fear.
mathw masak: nooooo
pmichaud 'yield' doesn't seem to play well with methods or lexicals, I fear.
mathw masak: it must be elegant and beautiful
masak mathw: have you actually *looked* at GGE? :P
pmichaud and it also requires an insane amount of cloning in order to work
mathw masak: I assumed it was elegant and beautiful :P
masak mathw: it's Perl 6 code generating Perl 6 code. guess again. :) 13:19
[Coke] pmichaud: still, if you think that's a /bug/ and not a feature you can't use...
mathw masak: and why shouldn't that be elegant? :)
masak mathw: chiefly because we don't have heredocs. :/
(more "can't" than "shouldn't", acutally) 13:20
colomon oh yeah, heredocs would be a lovely thing to have...
mathw mmm heredocs
pmichaud Q {{{
this is a heredoc
with a lot of stuff in it 13:21
}}}
masak that's what I do now.
pmichaud well.... there ya go. :-)
masak still messes up the indentation beyond repair :(
13:21 lest_away is now known as lestrrat
mathw pfft 13:21
pmichaud I keep thinking we ought to have a method on Str that means "remove indentation"
masak and indentation is the first thing on my list of necessities for something elegant.
mathw build a tree that represents the program and render it in one pass so it's all hidden away
pmichaud we're going to need it for the parser anyway, might as well expose it to the programmer too.
mathw you're allowed to be slow, it's in the name 13:22
masak pmichaud: Str.unindent
I like.
mathw pmichaud: a lot of people would love you for that
pmichaud .unindent is perfect
masak and it would have the same semantics as Perl 6 heredocs.
pmichaud sounds like a good weekly challenge
masak \o/
mathw it's also eminently writeable
masak goes to spec it
pmichaud yes, same semantics as heredocs
mathw \o/
13:23 plainhao joined 13:24 ejs left
pmichaud [Coke]: (yield) Given all of the current issues surrounding Parrot continuations and resuming from them, trying to get .yield "fixed" isn't something I'm wanting to invest a lot of time in. 13:24
s/lot of time/lot more time/ 13:25
masak I'll take "same semantics as heredocs" to mean that the terminator of the heredoc is the last line of the string to be unindented, and all indentation is removed relative to that. 13:26
pmichaud I'd think the terminator wouldn't be present
masak it's relative to that we're unindenting.
pmichaud yes, I agree. I can see two possibilities
masak if it's not present during parsing, stick it in there and then do Str.unindent. 13:27
jnthn masak: The heredoc thingy could pass in the number of chars to unindent by.
masak oh, ok.
pmichaud what jnthn++ said
masak I can do that.
that's probably wiser.
jnthn Which means .unindent is a bit more genericly useful.
pmichaud and if nothing is passed in, then compute it based on the least-indented line
jnthn ooh
masak in that case, it feels silly not to have .indent.
jnthn :-D
.oO( Perl 6: optimized for writing an IDE )
mathw indeed
masak let's just have that, and allow negative integers.
mathw jnthn: if it was optimised for writing an IDE, it wouldn't have grammar munging 13:28
jnthn mathw: Optimized for overjoying and tormenting the IDE writer in equal measure? ;-)
mathw :) definitely 13:29
13:32 JimmyZ_ joined 13:33 JimmyZ left, JimmyZ_ is now known as JimmyZ 13:35 uniejo left
pugssvn r31081 | masak++ | [S32/Str] proposed Str.indent 13:35
r31081 |
r31081 | Following an idea bounced around on #perl6, this method was added.
pmichaud oh, I think .indent should be smart enough to handle tabs and other unicode whitespace 13:37
masak then please spec how.
pmichaud the same way that Perl 6 itself will handle them with heredocs 13:38
masak I didn't see that in S02, so I didn't know how.
oh wait. was it the $?TABSTOP thing?
very well. I can add a note about that.
pmichaud (Hard tabs will be assumed 13:39
to be C<< ($?TABSTOP // 8) >> spaces, but as long as tabs and spaces are used consistently
that doesn't matter.)
masak ok.
I'll change it to that.
jnthn 8? That's big.
;-)
masak it's the only real standard there is.
jnthn :-)
masak I keep thinking whether it'd make sense to have $code.indent(*) unindent such that at least one line has indent level 0. good idea or not? 13:40
a sort of 'indent reset'.
pmichaud oh, that works I think.
masak adds that too
szabgab just thinking aloud, what about a construct like this? my $num = prompt("bla", $_ >= 50); 13:44
and $_ would be the value that was just received from the user 13:45
masak szabgab: looks like that would need a closure around the $_ expression.
szabgab: nothing stops you from writing such a multi method yourself.
13:46 [mark] left
szabgab let me try it then 13:46
masak \o/
moritz_ msaak++ # str.indent 13:47
13:49 hudnix joined, cognominal left
pugssvn r31082 | masak++ | [S32/Str] rethinking of tab characters 13:52
r31082 |
r31082 | Also added a Str.indent(*) use case.
masak see how you like these changes.
moritz_ lemmy guess... indent(*) unindents the smallest amount of whitespace that's present on each line?
masak [min] of all indents, yes.
13:53 viklund left
moritz_ \o/ 13:53
masak++ # again
masak that's what I'd primarily use it for in GGE, so it felt right to add it. 13:54
who wants to add tests? :)
moritz_ the one who asks, of course
masak hides behind his GSoC work 13:55
moritz_ speaking of hiding behind work... 13:56
I now have JSON::Tiny far enough to update the grammar chapter
masak \o/
moritz_ the only real blocker left are escapes in char classes 13:57
jnthn moritz_++ 13:58
14:02 ccube joined
moritz_ www.perlmonks.org/?node_id=842911 # I don't quite understand it, but it has 'Rakudo' in the title :-) 14:03
ccube rakudo: sqrt(-1)
p6eval rakudo 3a6b43: ( no output )
moritz_ rakudo: say sqrt(-1) 14:04
p6eval rakudo 3a6b43: OUTPUT«NaN␤»
moritz_ rakudo: say sqrt(-1+0i)
p6eval rakudo 3a6b43: OUTPUT«0 + 1i␤»
ccube thanks
moritz_ you're welcome
ccube rakudo: say 3 ** 2 14:05
p6eval rakudo 3a6b43: OUTPUT«9␤»
ccube rakudo: say 3 ** 1i
p6eval rakudo 3a6b43: OUTPUT«0.45483242282661 + 0.890577041667747i␤»
szabgab paste.lisp.org/display/111108 14:06
14:06 ejs joined
szabgab shouldn't that pastebot support direct pasting to the channel? 14:06
moritz_ it should, but it seemed to be disabled since a recent spam wave 14:07
szabgab ic
moritz_ szabgab: if declare the second argument as Mu $cond, you can also pass junctions as matchers
szabgab so how would you improve my multi prompt?
Mu ?
moritz_ formerly known as Object 14:08
szabgab as the cow speaks?
Mu ?
:)
moritz_ it speaks Muh in German :-)
masak loop { last if $cond(prompt($str)) }
...perhaps. :) 14:09
fewer tests and negations, at least.
oh wait. 14:10
szabgab and how would that cow work?
masak loop { last if $cond($ret = prompt($str)) }
szabgab I would need to check in the prompt method what type I got
and do smart match?
bbl & 14:11
cds
masak it's a bit funny that the main use of 'Mu' will be to make the routine say "I can handle junctions".
14:14 skids joined, pkkm left
pmichaud moritz_: I think I can get escapes in char classes fairly quickly 14:14
moritz_ ++pmichaud
14:15 JimmyZ left 14:17 hudnix left 14:18 JimmyZ joined 14:20 pkkm joined 14:23 hudnix joined 14:29 hudnix left 14:30 plobsing joined, pkkm_ joined 14:31 ccube left 14:32 kaare joined, kaare is now known as Guest17090 14:33 pkkm left, pkkm_ is now known as pkkm 14:35 hudnix joined 14:37 JimmyZ left
moritz_ should rule { <value> ** \, } and rule { value ** [ \, ] } be the same in terms of <.ws> handling? 14:48
masak er, no <> around 'value' in the second instance? 14:49
moritz_ imagine that was there :-)
pmichaud in ultimate effect they're largely the same
masak in that case, I certainly would hope they're semantically equivalent.
pmichaud there may be some case where they're not perfectly the same.
moritz_ because in rakudo I see difference in the whitespace handling
pmichaud because [ \, ] has some extra <.ws> calls
moritz_ right
masak oh, true. 14:50
pmichaud I'm not sure that rakudo/nqp gets the whitespace handling around ** exactly right.
PGE had it there, but I don't know that I ever restored it for nqp-rx
I think nqp-rx still treats { <value> ** \, } exactly the same as { <value>**\, } 14:51
moritz_ that would explain my observations 14:52
masak ...which are...? :)
moritz_ some of my tests fails when I write <value> ** \, but pass if I write <value> ** [ \, ] 14:53
rakudo: say 'a,b,c' ~~ /:s <alpha> ** \,/
p6eval rakudo 2242ef: OUTPUT«a,b,c␤»
moritz_ rakudo: say 'a, b, c' ~~ /:s <alpha> ** \,/
p6eval rakudo 2242ef: OUTPUT«a␤»
masak can I submit that to RT?
moritz_ yes, please
masak submits rakudobug 14:54
14:57 proller left, ruoso left, mantovani left 14:58 pkkm left 14:59 rv2733 left, hercynium left 15:00 proller joined 15:03 justatheory joined 15:04 justatheory left 15:05 Guest43663 joined 15:06 Trashlord left 15:09 patspam joined
szabgab is there a way to write to a file in a simple way as slurp reads? 15:10
moritz_ don't think so 15:11
15:11 ruoso joined
szabgab I think it would be very useful for small scripts and for beginners 15:11
moritz_ aye 15:12
spew vs. slurp
szabgab yeah
spew "file", "content", "more content"
moritz_ let's see what TimToady thinks
jnthn Oooh, here we go with the "who can make the most disgusting name for this" competition again. :-D
szabgab vomit ?
jnthn spit
moritz_ too close to split 15:13
jnthn yeah
pmichaud afk, errand
jnthn "result".spew: chunks($<some_match>)
pmichaud nqp-rx currently has (non-working) .spew in nqp-setting, fwiw
afk, errands 15:14
15:14 finanalyst left, molaf joined 15:15 ejs left
masak TimToady already opined re 'spew': irclog.perlgeek.de/perl6/2010-05-06#i_2298763 15:18
it sure has my unvote. partly due to the name, and partly due to irclog.perlgeek.de/perl6/2010-05-06#i_2298740
moritz_ "we might also end up with @stuff ==> qp/file/ doing the right thing, in an ingyesque sense"
moritz_ likes ingyesque as a word 15:19
szabgab say "Something" > "file"
say "Something" ==> "file"
qp? 15:20
moritz_ quote path
15:20 plobsing left
szabgab oh 15:20
so qp/a b c/ would build a/b/c on linux ?
15:21 cls_bsd left
moritz_ I don't know what the current spec is 15:21
15:21 pmurias joined
pmurias ruoso: ping 15:21
masak I have a mental file named something like "things in the spec which are more flight of fancy than firmly nailed down spec, and whose disappearance or mutation to something else wouldn't surprise me much at all". qp<> is in it. 15:22
15:23 ejs joined, molaf left
moritz_ maybe $filename.IO.print(@stuff) could work as an alternative to spew 15:24
or just s/IO/open/
masak I'd expect 'open' somewhere along the line. 15:25
moritz_ btw I've created a branch in the json repo where I simplify JSON::Tiny
part of it is to remove cruft
the other part is to remove extra rules that just give better error messages 15:26
github.com/moritz/json/commits/simp...ed_parsing
the last few commits have simplified it quite a bit
it seems that I'm now sufficiently familiar with match objects to find straight forward ways to write reduction methods
masak anything bloggable? 15:27
I know I'd be interested to read tips like that. 15:28
moritz_ just click on the last 5 commits or so
moritz_ hopes it's bookable
masak even better.
moritz_ that's the main reason for this whole exercise 15:29
and it was also my driving motivation for getting sane match objects into rakudo again
masak motivations++ 15:30
15:37 cognominal joined 15:43 zenog_ joined
zenog_ hi guys. 15:43
moritz_ hi zenog_ 15:44
15:45 bjarneh left 15:50 rhr left
zenog_ One question about roles: Is it necessary to use a new "does" for each role? 15:52
Like in "class Dog is Animal does Eat does Fetch"
Or would that be possible as well: "class Dog is Animal does Eat, Fetch"
moritz_ it's not possible 15:53
wait a sec, I'll find you a link to a discussion...
15:53 shade__ joined
moritz_ www.nntp.perl.org/group/perl.perl6....33748.html 15:53
15:54 rhr joined
TimToady but see S14:242 15:54
15:55 ashleydev joined
zenog_ moritz_: Thanx. 15:55
moritz_ oh.
zenog_ moritz_: What about "class Dog is Animal does (Eat, Fetch)" ?
TimToady parens solve the precedence problem
jnthn std: role Eat { }; role Fetch { }; class Dog is Animal does (Eat, Fetch) { } 15:56
p6eval std 31082: OUTPUT«===SORRY!===␤Unable to parse class definition at /tmp/2strzWor7B line 1:␤------> ole Fetch { }; class Dog is Animal does ⏏(Eat, Fetch) { }␤ expecting module_name␤Parse failed␤FAILED 00:01 110m␤»
TimToady but could easily be made to parse
jnthn TimToady: We (rightly, imo) only parse a module name there.
TimToady: I'd prefer we either don't, *or* we parse a list of module names there and then say that you do one call to trait_mod:<does> for each of them. 15:57
TimToady: But then we introduce an assymetry with the does operator
So imho I'd prefer we stick with the status quo.
TimToady the question is whether the semantics is sufficiently different...yes
jnthn trait_mod:<does> and infix:<does> do kinda different things already, though. :-) 15:58
TimToady is &[does] different from &[but=] ?
perhaps we could do away with &[does]
jnthn At present, but is implemented in terms of does
That is, it copies and then calls does. 15:59
So does is currently the primitive.
TimToady perhaps we should call that &[mixin] instead
jnthn Perhaps.
TimToady having 'does' mean two different things is a design smell
jnthn Guess it depends of the alalogy with the trait_mod and infix is a helpful way to remember it or misleading. 16:00
(Well, it's both, but I guess that's a spectrum rather than absolutes.)
TimToady alternately, we could make 'does' list associative, and then $a does B does C mixes in both B and C as a composition, currently requiring (B,C) 16:01
sorear finishes backlog
pmurias TimToady: mixing both B and C as composition would be nice 16:02
TimToady hasn't started backloging
we can do that, but currenlty it's does (B,C)
jnthn TimToady: True, though then we make the other thing longer :-)
Well
does
($a does B) does C
If does is list infix then call does twice?
e.g. the parens stop it "collapsing" to one call? 16:03
TimToady that doesn't happen often enough to worry about de-huffmanization
16:03 justatheory joined
jnthn Sure, just want to make sure it's possible 16:03
TimToady yes, they would be staged
jnthn OK
I've no real objections to that change.
Would be make a parallel change to but?
TimToady maybe
jnthn s/be/we/
Renaming it to mixin is fine by me too 16:04
TimToady this might involve a precedence change though
jnthn As is parsing a list of comma-seperated module names, but please spec it as multiple trait_mod calls or I suspect things get awkward.
(that's for the trait_mod case)
16:04 bjarneh joined
TimToady currently does/but are structural infix, which are non-assoc 16:05
jnthn Hmm
I'm not sure people tend to use does and but in especially complex expressions, in general. 16:06
So maybe not too big a deal.
16:06 Trashlord joined
jnthn So long as the common things like my $dugong = $manitee but Cow; works. :-) 16:07
TimToady so they might have to move to one of the X levels in S03:32
jnthn *nod*
That doesn't strike me as immediately problematic.
16:08 Maddingue joined
TimToady I could argue putting them into concatenation, and then they could form values that can be & or | junctioned 16:08
16:09 mikehh joined
TimToady one argument for the listy form is that then you could do $x but @roles 16:10
jnthn Hmm. :-)
Yeah
TimToady will think about it in the
shower &
jnthn Well, maybe you already can though.
rakudo: role Cow { }; role Swim { }; my $manitee = "lol"; my @roles = Cow, Swim; $manitee does @roles; say $manitee ~~ Cow; say $manitee ~~ Swim; 16:11
p6eval rakudo 2242ef: OUTPUT«No applicable candidates found to dispatch to for 'infix:<does>'. Available candidates are:␤:(Mu $do-it-to-me, Role $r)␤:(Mu $do-it-to-me, ConcreteRole $r)␤:(Mu $do-it-to-me, (Parcel) $roles)␤␤ in main program body at line 11:/tmp/oYpaMDzsXB␤» 16:12
jnthn Ah no, it Must Be A Percel
16:12 shade__ left
jnthn :-) 16:12
16:15 Trashlord left 16:16 Trashlord joined
jnthn afk for a little 16:19
16:22 ejs left 16:27 cls_bsd joined 16:30 ejs joined 16:32 ashleydev left, ejs left 16:35 shade__ joined
sorear nice, 264MB nytprof.out 16:36
masak could be worse. 16:37
sorear every once in a while, I'm grateful I upgraded off the old 2000MB disk 16:38
masak :) 16:39
sorear massive error spam from nytprofhtml, though 16:40
nytprof hates me
[Coke] I've found the nytprof authors to be very responsive. 16:41
I know a new release is imminent. 16:42
pmurias sorear: did you try disabling per statement profiling? 16:43
sorear pmurias: not yet. it's so slow I have to run it overnight, anyway 16:44
negative 849 seconds spent in Cursor::_STARr. This profile is useless 16:46
16:47 ive left
masak man, that's fast! 16:47
16:47 ive joined
sorear oh yeah and it was using CLOCK_MONOTONIC 16:49
16:51 masak left
pmurias sorear: you should call Cursor::_STARTr more often ;) 16:52
16:53 justatheory_ joined 16:54 justatheory left, justatheory_ is now known as justatheory 16:56 cdarroch joined, cdarroch left, cdarroch joined 16:59 dakkar left
[Coke] sorear - what version of nytprof are you using? 16:59
17:01 justatheory left, mantovani joined
sorear 3.11 17:02
17:06 ashleydev joined 17:07 stephenlb joined
[Coke] latest released version, eh. 4.0 should be out soon. might be worth grabbing from svn and seeing if that helps. 17:08
pmurias re S29 shouldn't ++FOO a b c ++/FOO set %*OPTS<FOO> to ['a','b','c'] instead of 'a b c'? 17:10
sorear svn co 17:11
17:11 justatheory joined
sorear :/ nytprof svn fails make test 17:14
test22-strevala, test24-strevalc, and test61-submerge all have errors 17:15
17:16 ashleydev_ joined
zenog_ bye guys 17:16
17:16 zenog_ left 17:17 c9s left
sorear oh well, it's not going to be more buggy than what I already have 17:18
diakopter sorear: nytprof was giving me negative measurements on STD a year ago
(so it's not a new thing)
pmurias diakopter: hi 17:19
17:19 ashleydev left
sorear NYTProf and Moose are incompatible locally 17:19
diakopter hi
sorear everybody I have complained to has not been able to repro
moritz_ sorear: should I try to profile STD? 17:20
sorear that said, it's less-incompatible now than it used to be
2.x gagged so hard that I had to comment out a warning message in NYTProf.xs, lest fprintf be 98% of CPU time 17:21
moritz_: let me try with 4.0-pre first
17:23 macdaddy joined, macdaddy is now known as Guest33137 17:24 hudnix left 17:31 supernovus joined
diakopter sorear: I'm ready to begin dipping my emit_pq toes in viv 17:31
sorear excellent 17:32
let's start with regexes; I've made the most progress towards the refactor there 17:33
look at ./viv -e 'grammar Foo; token bar { <?> }'
each line has a node type name
diakopter I was thinking of starting at regexes too :)
sorear some of these have emit_p5 methods; they'll need emit_psq methods 17:34
the insides of the regex are compiled via RE_ast and DEEP, so you'll want to add psq to DEEPbase and children
grr. even with 4.00-pre I get Warning: 1 subroutine calls had negative time! The clock being used (2) is probably unstable, so the results will be as well. 17:35
dalek ok: 3b69131 | moritz++ | src/grammars.pod:
[grammars] mostly rewritten with proto regexes, and code that works in Rakudo
17:37
diakopter oh 17:38
I was running in a VM, so maybe time was adjusted while running.....
are you in a VM?
sorear no
also, the results are reproducable
_STARr always has huge negative time
moritz_ call it more often :-) 17:39
supernovus on my local computer I have a Date.new(::DateTime $dt) {} method and a DateTime.Date() {} method. How would I go about submitting them back to the rakudo tree?
moritz_ supernovus: you make a commit locally 17:40
git commit -am 'implemented $supermethods'
# uhm, write a better message :-)
and then create a patch from it
git format-patch HEAD^
and then mail the resulting file to [email@hidden.address] with [PATCH] in the subject
TimToady szabgab: you really want: my $num; repeat { $num = prompt("Please give a number smaller than 50: "); } until $num < 50; 17:42
supernovus Okay. I know it's a trivial change, but the being able to make Date objects from DateTime objects is a useful feature that was in the spec, but not in the code :-)
moritz_ supernovus++ 17:43
we all start small
17:43 shade__ left
moritz_ (except for sorear++, who went straight for macros :-) 17:43
17:44 shade__ joined
moritz_ sorear: I have a nytprof output from ./tryfile STD.pm6 with positive exclusive time for _STARr 17:44
sorear: should I upload it for you?
sorear yes please 17:45
(what filehost will take 200MB files?)
moritz_ it's 83M here
oh you mean for your nytprof.out 17:46
sorear ah
moritz_ (I was talking about the HTML dir)
sorear probably a good bit smaller with compress too
oh
either works
TimToady <sorear> TimToady: I'd love to optimize [ a | b ] into <[ a b ]>; could that be made to play nicely with LTM?
sorear html dir may be better
moritz_ compressed 8.2M
TimToady with the current LTMer, the first is actually more efficien than the second
moritz_ upload running...
TimToady *efficient
since the first will load into the trie, but the second will force run-time pattern matches 17:47
with a real parallel NFA this would be less of an issue
but it would also be less of an optimization, since both constructs would produce the same states 17:48
17:49 f00li5h left 17:52 bjarneh left
moritz_ sorear: moritz.faui2k3.org/tmp/std/ once packed, once unpacked 17:53
sorear oh right you have a webserver 17:54
diakopter rakudo: { $*num = prompt("Please give a number smaller than 50: "); }() until $*num < 50;
17:54 ispeak_ joined
p6eval rakudo 2242ef: OUTPUT«Method 'Bridge' not found for invocant of class 'Failure'␤ in 'infix:<<>' at line 3096:CORE.setting␤ in main program body at line 11:/tmp/yxP9jUcqkK␤» 17:54
moritz_ all Cursor:: rules point to unknown.html :-(
diakopter blinks
17:56 ejs joined 17:59 shade__ left
TimToady rakudo: my $*num; { $*num = prompt("Please give a number smaller than 50: "); }() until $*num < 50; 18:00
p6eval rakudo 2242ef: OUTPUT«Use of uninitialized value in numeric context␤»
TimToady right, that form still tests first 18:01
jnthn I guess that Failure is a leakage.
TimToady only "repeat" moves the test to the end
since 'repeat' implies always doing it at least once 18:02
jnthn (It's a Parrot Failure PMC and thus didn't respond to .Bridge)
18:03 ejs left
sorear looks like we can save a good 20 seconds by not having Cursor inherit from Moose::Object 18:05
TimToady rakudo: repeat until my $x ~~ /^Land/ { $x = prompt('') }; say 'alive'
p6eval rakudo 2242ef: OUTPUT«alive␤»
18:05 ejs joined
sorear or sub DESTROY {} 18:05
TimToady szabgab: also see ^^^
the ability to put the 'my' into the conditional is one of the reasons we allow repeat's conditional to be moved to the front 18:06
diakopter std: repeat { $*num = prompt "Please give a number smaller than 50: " } until $*num < 50; # i can haz globulz 18:09
p6eval std 31082: OUTPUT«ok 00:01 108m␤»
18:10 ejs left
[Coke] jnthn: parrot has a failure pmc? 18:10
jnthn [Coke]: Ah...Undef. 18:12
I think Failure may be mapped to it / subclass it.
Will check.
18:12 ejs joined
TimToady
.oO(the parrot is leaky)
18:12
supernovus well, the rakudo error messages certainly look nicer lately 18:14
diakopter at least it's not holy
jnthn supernovus: Aye, some work went into that. :-)
18:15 ejs left
TimToady is it still just sending line numbers through, or is it sending positions and then translating to line numbers at the last moment (preferred)? </hotbutton> 18:15
18:16 Gruber joined
sorear line numbers are generated at the last moment when the source is still available 18:16
18:17 ashleydev_ left, cdarroch left, cls_bsd left, dju left, alester left, [Coke] left, awwaiid left, Grrrr left
TimToady one could remember the lineof map even after flushing the source, I suppose 18:17
jnthn TimToady: We emit line numbers into the bytecode.
TimToady ouch 18:18
jnthn TimToady: Though the annotations system is general.
18:18 cls_bsd joined
TimToady for some kinds of errors it's much more awesome to be able to point into the middle of a line 18:18
jnthn TimToady: Well, "into the bytecode" is not quite right - into a segment alongside it.
18:18 ispeak_ left, [Coke] joined
TimToady that might be a useful small project for someone to tackle 18:19
jnthn Aye
18:19 cdarroch joined, cdarroch left, cdarroch joined
TimToady and maybe I can stop cringing someday whenever someone says "line number" :) 18:19
jnthn Well, you can .annotate 'moon phase', 180 if you want. :-)
18:19 dju joined 18:20 awwaiid joined
jnthn TimToady: At least we get errors with some useful information in now. :-P 18:20
TimToady can you .annotate 'moon phase', ᴨ :-P
jnthn Probably needs quotes. 18:21
:-)
TimToady but ᴨ is a number :)
jnthn Ah
My font has no glyph so I can't see what it is. :-)
TimToady was just s/180/pi/ 18:22
jnthn Ah :-)
...what a sucky font, no pi!
TimToady oh, I picked the small cap version
how about π? 18:23
that's straight lowercase
18:23 wasy joined
sorear I can see the latter 18:24
jnthn Ah, that works.
TimToady but jnthn++ for errors with useful information :)
moritz_ indeed
TimToady I like progress even when it's only progress :)
jnthn TimToady: For when we get to stashing a position - do you suggest we go look for the file at runtime when the error occurs to then determine the line number? Or stash the position to line number mapping table somewhere? 18:25
The first sounds evil.
supernovus any idea when jimmy's patch in ticket # 75114 will be applied to master? It fixes augmenting the Int class (tested on my local copy)
moritz_ it might sense to store line numbers even if we store positions
for HLL interop
TimToady either works, though with the former you can delay deciding what the user thinks is a "line"
.u separator 18:26
phenny U+2028 LINE SEPARATOR (
)
jnthn moritz_: Well, my original expectation is that one day we'd store column potentially too.
TimToady does that make a line number?
jnthn moritz_: But TimToady is likely right that position and delay the decision will work out better.
TimToady columns are also subject to interpretation under Unicode
sorear what will vmsperl6 do?
TimToady .u thin 18:27
phenny U+2009 THIN SPACE ( )
TimToady .u em
phenny U+2001 EM QUAD (􏿽xE2􏿽x80􏿽x81)
TimToady what's a column?
sorear vim thinks a column is a codepoint count after last \cJ 18:28
TimToady if we end up with program editors that can use proportional fonts, the file position is really all we have to go on
sorear but how is Carp supposed to knoe that?
TimToady or grapheme position, or something that is not subject to interpretation
18:28 TiMBuS left
jnthn TimToady: heh, well, yes, what units are we storing our positions in. :-) 18:29
TimToady the point being that you want to be able to set your policy indendently of the compiler
jnthn Probably doesn't actually matter though.
moritz_ supernovus: I'll test the patch now, will push it if it works
TimToady lines and columns are not universal 18:30
moritz_ TimToady: I expect some kind of interpretation of the position anyway
TimToady and I'm trying very hard not to bake in any language assumptions of constant spacing
moritz_ when I get an error message at pos 23986, I won't be happy 18:31
TimToady which is why we do JIT lines/columns
supernovus moritz_, thanks! 18:32
TimToady but at that point we are currently making cultural assumptions
moritz_ and how are late cultural assumptions better than early?
TimToady and I want to label such assumptions as, er, assumptions
18:33 patrickas joined
TimToady because early ones have to be undone, and tend to lose info if you are not careful such that they cannot be undone 18:33
pugssvn r31083 | sorear++ | [Cursor] Remove Moose::Object superclass, and with it the DESTROY method. Cuts 50 seconds off time needed to parse STD.pm6. Thanks, NYTProf!
sorear we are below the 3 minute mark now
patrickas hello perl6
TimToady if you make a cultural assumption that only line numbers are important, then you lose column info
moritz_ \o/ patrickas
sorear I had no idea just how much that was costing us
moritz_ TimToady: good point 18:34
patrickas hello boss :-)
TimToady so it's better if all your units in the database are mks or some such
sorear and we weren't using any of the Moose::Object features (->new, ->does, BUILD, DEMOLISH)
TimToady otherwise you tend to crash your Mars craft
patrickas I created a wordpress account (patrickas) for fixing the advent calendar posts
sorear TimToady: the problem is the error reporter - how does it know what editor the programmer used? 18:35
moritz_ I'll give you permissions to change them
moritz_ hugs patrickas++ - welcome to perl6advent 18:37
TimToady presumably via an environment variable, but future editors might be able to change their policy on the fly, which means they would want such information in universal units anyway
patrickas thanks ... off to work :-)
moritz_ have fun 18:38
sorear TimToady: Where should I look for enlightenment on the finer points of fate propagation? 18:39
18:39 Gruber is now known as Grrrr
patrickas It's all fun until somebody loses an eye... I hope wordpress has rollback functionality! 18:39
TimToady depends on what you mean by "propagation"
do you mean upward as calculated by the longest methods? or downward to subrules? 18:40
moritz_ patrickas: I think it has
18:42 ruoso left
TimToady the upward propagation of fates is currently done with lists of strings that are much like what you get in the lex/ files 18:42
18:43 wasy left
TimToady the most complicated one is in RE_sequence, since it has to X the alteratives in the head with the alternatives in the tail 18:43
sorear TimToady: downward 18:44
I have a pretty clear conception of upward
TimToady downward fates are propagated via a _fate entry in the current cursor, and by that point it is a linked list of fate pointers
so each level merely needs to advance along the linked list
and eventually the list runs out
the nice thing about those linked lists is that tails can be shared, even if they have different prefixes 18:45
18:46 justatheory left
sorear Why doesn't RE_any use a helper routine like quantifiers, etc do? 18:47
TimToady I don't understand your question. 18:50
are you talking about RE_ast.pmc:455?
pugssvn r31084 | moritz++ | [t/spec] unfudge some test for augmenting Int 18:52
sorear I'm talking about viv:3017
formerly part of the gimme5 regex compiler
dalek kudo: a0b6d74 | jimmy++ | src/Perl6/Actions.pm:
fixed #75114: Can't augment class Int
18:53
TimToady sorear: well, mostly just because historically Perl routines have been fairly slow to call, and so it's a form of inlining 18:57
pmichaud (line numbers) -- at the moment we emit line numbers, if only because positions may add a _lot_ of annotations. Switching to positions will not be a problem when/if we decide we want them.
TimToady also, we already know the literals, and these would have to be parameterized
18:57 ruoso joined
TimToady one optimization I've long considered is using "symbols" instead of strings in the fates 18:57
pmichaud the position information is indeed readily available -- we just (by choice) don't save all of it into the bytecode at the moment. 18:58
TimToady: If it's "hot button" enough for you to want us to immediately change it, we can do that.
sorear TimToady: what does a symbol in a fate look like? 18:59
TimToady it would change the line that says: 19:00
if (\$fate = \$C->{'_fate'} and \$fate->[1] eq '$altname') {
to:
if (\$fate = \$C->{'_fate'} and \$fate->[1] == $altname) { 19:01
where presumably the symbol is a 'use constant' or some such
it's also possible that we can prove that it will match, and not do the "am I the correct type of fate" check at all 19:04
in which case it's just:
if (\$fate = \$C->{'_fate'}) {
that could be rather fragile in the face of bugs elsewhere though 19:05
lunch &
19:05 gbacon joined
pmichaud 18:25 <jnthn> TimToady: For when we get to stashing a position - do you suggest we go look for the file at runtime when the error occurs to then determine the line number? Or stash the position to line number mapping table somewhere? 19:06
jnthn: I was expecting that we stash the source.
(optionally supressible)
*suppressible
jnthn pmichaud: oh
pmichaud: That also works.
pmichaud we can do a lot more with error diagnostics in that case 19:07
jnthn .annotate 'source', 'blahhhhh'
pmichaud so, my plan was to have annotations for source, line number, position
jnthn And .file
gah
and file
pmichaud and .file, yes.
jnthn (it's .annotate 'file', 'name' )
pmichaud right :-)
I suppose we could stash a position-to-line table somwhere instead of the line numbers, but it seems easier to just go ahead and annotate line numbers since we already readily have them 19:08
(if the source is present, we wouldn't need the line number annotations, no.)
19:08 ive left
TimToady clang gives very nice run-time errors with source 19:13
pmichaud anyway, my plan for a while has been to stash the source with the compiled form, and keep track of things by position (possibly in addition to line number) 19:14
TimToady in face, it tends to record both the .from and .to position so it can highlight the entire suspect construct
pmichaud oh, we could do that also.
I like that.
might also help with those constructs that end up being multi-line.
TimToady s/face/fact/ 19:15
$a X $b will always produce a single element 19:24
because X is a *list* infix 19:25
sorear TimToady: in STD.pm6, lexer 'variable', there is an LTM conflict on the token $<
TimToady @$a X @$b is different
sorear there's a very, very awful cheat in viv to ignore LTM generated by <sym> under :sym['$<']
this is necessary in order to correctly parse $<a>
because otherwise the $*EUID alternative would get there (it has $< as longest token) and cut 19:26
19:29 Guest43663 left
sorear szabgab++ corrupting the youth 19:29
19:30 ShaneC joined 19:31 wallberg joined, plainhao left
moritz_ patrickas++ # perl6advent updates to current spec 19:31
patrickas patrickas+=.5 # Only half of them updated so far :-) 19:32
19:33 pjcj joined 19:34 wallberg left
TimToady sorear: testing a fix 19:34
the problem is that $< isn't a true twigil, so it escapes the requirement for a \w imposed by twigil's endsym 19:35
hmm, but then it blows up on $<~CAPS> 19:36
we may have to make the special_variable rule more specific
19:39 Guest43663 joined, clintongormley left
TimToady testing a different patch 19:40
sorear impressive. I just broke tryfile to the point of memory usage explosion 19:45
19:46 whiteknight joined
moritz_ rakudo: say 1 <=> 2 19:46
p6eval rakudo 2242ef: OUTPUT«-1␤»
19:48 estrabd left
diakopter sorear: left recursion? 19:50
sorear diakopter: shadow hell, more likely
diakopter what's shadow hell :)
pugssvn r31085 | lwall++ | [STD] make p5 $< detection have a longer LT
sorear that's where you shadow one variable with another and create a loop in the wrong place 19:51
19:51 justatheory joined
diakopter I'd probably need an example. I think only 10% of my normally active 10% of my brain is active 19:53
TimToady if your brain is 100% active you'll die 19:54
diakopter all neurons fire at once? 19:55
19:55 supernovus left, masak joined
diakopter MASAK 19:55
masak ahoy!
TimToady that would be something beyond a grand mal seizure
moritz_ that's what some neurotoxic substances do to you
TimToady and you would likely stop breathing
sorear ideally, your brain should be 50% active 19:56
moritz_ like sarin
sorear this maximizes the information content of each action potential
pragma_ Ideally, you shouldn't believe everything you read. 19:57
TimToady well, okay, but 50% of the active brain is inhibitory circuits, so that leaves half of 25% excitatory circuits excited, which is 12.5% which is only slightly better than 10% :)
sorear I am suspecting and does not work the way I think it does
diakopter masak: how many github projects did you start today?
:D 19:58
moritz_ TimToady: in some sense 12.5 is 25% better than 10 :-)
sorear I wonder how hard it was to get gitpan approved
masak diakopter: only one, and related to $work rather than to Perl 6. :)
diakopter on schwern's blog he says it was easy
er, journal
masak diakopter: url? 19:59
diakopter use.perl.org
19:59 xinming left 20:00 xinming joined 20:03 Psyche^ joined
masak this one? use.perl.org/~schwern/journal/40340 20:03
ah, no. this one: use.perl.org/~schwern/journal/40079
sorear pastie.org/991068 This should be the same, but it's not. I think I am missing something *very* obvious here 20:04
sorear goes back to reading B::Concise 20:05
+output 20:06
perl5's sorry excuse for assembly language
szabgab TimToady, thanks for the example with the repeat
pmichaud szabgab: I sent an email with the repeat answer also... did it not arrive or is it filtered somehow or...?
I sent it about 7 hours ago. 20:07
TimToady sorear: what you're missing is that the symbol $C isn't introduced till the next statement start
20:07 Patterner left, Psyche^ is now known as Patterner
TimToady P5 is different from P6 here 20:07
pmichaud (I've been having trouble with email lately, it seems, so I'm trying to track that down)
[Coke] sorear: you have a sub my in the first one.
TimToady and, in fact, that statement wouldn't work in P6 either without OUTER on the rvalue
[Coke] I imagine there's some clobberin' going on.
or, you know, listen to TimToady =-) 20:08
masak TimToady: ah. my brain was groping for the `repeat { ... } until ...` idiom for szabgab, but didn't find it. thanks.
TimToady in 'my $C = blah blah $C blah blah $C blah blah $C' all the non-my $C's are the old one
sorear [Coke]: The idea I'm trying to go for is to reuse the lexslot instead of creating a new scope with a new set of lexicals
TimToady: not introduced until the next *statement*. got it. 20:09
szabgab pmichaud, it did not filter through my brain :)
TimToady so my $C; ($C) = ... and ($C) = might work thoguh
*though
pmichaud szabgab: so you did receive the email, or no?
szabgab but now after it was repeated ....
email yes
pmichaud okay, good.
szabgab thanks
sorear [Coke]: it's a tiny optimization, but it applies a couple thousand times in STD.pmc and could add up to real savings. Only one way to find out
szabgab pmichaud, oh I see, trouble with e-mail, not in this case 20:10
masak TimToady: when you say 'a real parallel NFA', are you referring to something which could be used to parse Perl 6 even better than STD.pm6, but which no-one has even started building yet?
moritz_ s/better/faster/ I think 20:11
masak oh. meant that. silly brain.
moritz_ brainz are overrated 20:12
sorear the Real Parrallel NFA is a hypothetical overhaul to the guts of Cursor
it doesn't change STD.pm6 at all
Tene masak!
masak ponders what a Perl 6 project called 'zombie' might do
Tene! \o/
Tene: I came here tonight mostly to meet up with you. 20:13
let's head over to #november-wiki, shall we?
TimToady masak: it wouldn't parse *better* except in the sense of *faster* 20:16
diakopter as a RPNFA chews characters, it knows exactly which token patterns are invalidated upon encountering certain characters, so it's as it's keeping track of the backtracking states, but doing them "in parallel"
it's as *if
it's
TimToady the current algorithm emulates PNFA for the literal characters using a trie, but any patterns that aren't literal are evaluated at that point, and then sorted into correct LTM order 20:17
20:17 wallberg joined
dalek ok: 6b9ccde | moritz++ | src/operators.pod:
[ops] three-way comparison
20:17
TimToady a PNFA would essentially push those extra patterns down the trie until it looks more like a DFA state diagram
or at least an NFA state diagram 20:18
[Coke] masak: I think a perl6 project called zombie would just be perl 6. =-)
20:18 azert0x joined
TimToady but I've been going for correct over fast 20:18
masak [Coke]: O RLY?
diakopter: sounds a lot like swtch.com/~rsc/regexp/regexp1.html 20:24
sorear I did not realize perl5 had a hardcoded limit on the complexity of subs using goto 20:26
TimToady not qp/a b c/, but probably qp[a/b/c]
20:26 shade__ joined
TimToady sorear: it does? 20:27
not when I wrote it
when I wrote it, label search was all just following linked lists; not necessarily efficient, but not with any inherent limits 20:29
dalek p-rx: a68924f | pmichaud++ | src/Regex/P6Regex/ (2 files):
Update ** quantifier a bit, recognize trailing spaces as request to

specifies, but it's a good first cut.)
p-rx: 9e955a4 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get FileHandle.tell.
p-rx: 38fc6e9 | pmichaud++ | src/Regex/P6Regex/Actions.pm:
Add :sigspace handling to range quantifiers (e.g., <x> ** 0..3)
sorear #define GOTO_DEPTH 64 in pp_ctl.c
20:29 shade__ is now known as \shade
masak whoa. 20:29
sorear I'm not wholly sure what it controls, though
20:30 \shade is now known as \shade\
sorear probably unnesting of blocks 20:30
TimToady perhaps, but who nests blocks 64 deep?
(besides viv :)
20:30 patrickas left
sorear is suspecting that the only way to get a reasonable PNFA engine will be to write the walker as an xsub 20:31
TimToady well, we can still prototype it in Perl, and even that is likely to be faster
20:31 justatheory left
TimToady and someone needs to write a Perl 6 to XS translator. :) 20:31
by which I mean writing the xsub in Perl 6 :) 20:32
std: 0xFACE 20:34
p6eval std 31085: OUTPUT«===SORRY!===␤Whitespace is required between alphanumeric tokens at /tmp/SnbQuPVOBW line 1:␤------> 0⏏xFACE␤Whitespace is required between alphanumeric tokens at /tmp/SnbQuPVOBW line 1:␤------> 0x⏏FACE␤Undeclared name:␤
..'FACE' …
TimToady sorear: did you break that?
pmichaud if there's a Perl prototype, I'm likely to try converting it to nqp and/or pir 20:35
(for PNFA)
20:35 justatheory joined
pmichaud it's on my list of "things I'd like to do" but at the moment there are a lot of heavier things on that list. 20:35
and I'll be perfectly happy to see someone else prototype it :) 20:36
20:36 Guest21689 left, Patterner left
TimToady the hard part is getting the current string token patterns into a nodal graph representation 20:37
pmichaud agreed.
sorear TimToady: it could be my fault
diakopter does std need regression tests
TimToady is that $C scoping thing in the current viv?
std has many regressions tests, all of the t/ files
that's how I noticed 20:38
'make snaptest' compiles all of the *.t files with STD
diakopter I mean, quick-to-run ones.
sorear std needs a higher power/weight ration regression suite
make snaptest takes 90 minutes, I don't run it after every tweak
moritz_ TimToady: t/ only tests one way
TimToady they only take about 20 minutes here
moritz_ it shouldn't contain syntax errors that STD.pm6 then needs to find 20:39
TimToady it always requires that it successfully recompile STD.pm6
and that's a pretty good regression test
20:40 Guest21689 joined
dalek p-rx: 5fb2d58 | pmichaud++ | (3 files):
Add \e in quoted strings, refactor 46-charspec.t .
20:41
TimToady but it doesn't catch 0xFACE :)
20:42 Psyche^ joined, Psyche^ is now known as Patterner
TimToady maybe CORE.setting would catch it if I encoded pi in hex :) 20:42
masak pmichaud++ # \e/ 20:43
sorear viv miscompiles /[ 0 [ B | C ] | D ]/ 20:48
viv does not miscompile /[ 1 [ B | C ] | D ]/
TimToady gee...
sorear I think I screwed up a bool somewhere... 20:49
TimToady nap &
20:50 gbacon left
[Coke] ↖ↂ↗ 20:51
20:51 patspam left 20:53 rgrau joined 20:54 Schwern joined
masak [Coke]: that is the scariest smiley I've ever seen. and I've seen quite a few. 20:57
[Coke] I can't even see it here. 20:58
it's just meant to be a stylized \o/ =-) 21:01
TimToady: <ackbar>IT'S A NAP</ackbar>
pmichaud
.oO(groan)
21:02 Guest17090 left 21:03 Su-Shee left 21:09 gbacon joined 21:10 Guest43663 left
masak jnthn: the "öl" example looks promising for the encoding stuff. I haven't been able to look at it yet, but I will tomorrow. 21:11
jnthn: is there a similar hope for decoding?
jnthn Ja, om jag har mer öl. ;-) 21:12
masak heh. :)
jnthn "om"...seems to play quite a few roles. :-) 21:13
Like "som" :-)
masak 'if', 'about', 'around', 'per'... :)
'som' rocks.
jnthn The slightly interesting thing about the other direction is that we need to say what kinda strig the bytes are in so we can pass that along to Parrot's make_string or whatever it's called. 21:14
Anyway, we work on it when you get there. :-) 21:15
masak let's assume UTF-8 for now.
that seems to be the easiest.
21:17 PZt left
jnthn masak: I was pondering providing a method on the ByteView where you pass in an encoding object 21:17
From find_encoding
Then it can grow into the others you support in The Future.
masak ok. 21:18
sounds like a good idea.
jnthn I'll see if I can make that work.
masak \o/
ok, going offline now.
jnthn Safe trip :-) 21:19
masak I have to catch a bus tomorrow at (*gasp*) 10 am!
jnthn omfg
That's like, EARLY. O.O
masak I know!
masak sleeps
21:19 masak left 21:21 justatheory left 21:23 ispeak_ joined
diakopter sorear: I just tried 'make snaptest' on a fresh perl and got this: Deep recursion on subroutine "Class::MOP::Class::class_precedence_list" at /usr/local/lib/perl/5.10.1/Class/MOP/Class.pm line 841. 21:24
any tips?
/ideas
21:24 hudnix joined 21:25 justatheory joined
bkeeler Are strings in rakudo always utf8 for now? 21:26
Or is there a way to make them plain ol ascii? 21:27
sorear diakopter: ignore it
pmichaud bkeeler: your question needs clarification. :-)
sorear Perl spits out a warning when code recurses more than 100 levels (yes, hard coded) deep
bkeeler Fair enoug
sorear STD implements custom operators by dynamically subclassing the current grammar 21:28
diakopter sorear: ok, next problem. I started with 'make snaptest' Can't exec "./std": No such file or directory at Cursor.pm line 2684.
21:28 xinming_ joined, ashleydev joined
bkeeler pmichaud: I'm trying to write a parser that needs to parse really large files, and I'm assuming the reason that it's horribly slow is that things like PIR length and substr that the regex engine use alot are not exactly O(1) 21:28
sorear Moose recurses over the inheritence graph -> warn if more than 100 levels of superclasses
21:28 skids left
sorear I asked #moose to put a no warnings 'recursion' in the appropriate place, they think I'm crazy 21:29
(they're right)
diakopter heh
bkeeler My input files are plain ascii, so I was hoping I can improve performance but letting parrot/rakudo know that
pmichaud bkeeler: internally, rakudo attempts to keep strings with fixed_8 encoding whenever possible
sorear diakopter: README:18 21:30
pmichaud bkeeler: are you writing this in Rakudo itself?
bkeeler Yes
pmichaud okay.
sorear I'm developing on 5.12, so I may have accidentally slipped in a 5.12ism
pmichaud (thinking)
bkeeler Though I could move to NQP if necessary
pmichaud well, the regex engine is smart enough to keep track of intermediate points in the string being matched
so that it's not always calculating length from the very beginning of a utf-8 encoding string 21:31
*encoded
21:31 xinming left
bkeeler But it still does things like substr on the target string when comparing literals eg, right? 21:31
pmichaud yes, but that substr is relative to the intermediate offset 21:32
not from the beginning of the larger string being matched
diakopter sorear: oh yeah; forgot
pmichaud (module whatever the parrot folks have done to change the way strings work since that code was written)
*modulo
21:32 Guest21689 left
pugssvn r31086 | sorear++ | [viv] Re-use lexicals instead of creating nested scopes when constructing ratcheted sequences. No significant performance effect yet, but brings output much closer to human-like form. 21:33
bkeeler Hmmm
pmichaud anyway, I'm not sure the Perl 6 spec yet provides a mechanism to say "read this file as something other than Unicode". Perhaps it does -- I don't recall. 21:34
diakopter bkeeler: do you have some examples of running times and input lengths and patterns?
bkeeler diakopter: Not yet. I could put something together
pmichaud oh, looks like :bin to .open 21:35
or :enc
bkeeler in src/core/IO.pm open unconditionally does $PIO.encoging('utf8')
pmichaud right 21:36
diakopter sorear: are "===SORRY!===" in 'make snaptest' bad?
pmichaud if you wanted to patch that to accept other values, I'd be agreeable :-)
see the section on 'open' in IO.pod
you could also potentially update the code for slurp() to accept :enc 21:37
bkeeler I'll take a look at doing that
sorear diakopter: yes, but expected
pmichaud if you're just looking for a workaround, use Q:PIR and change the encoding directly :-)
diakopter ok; how will I know when something breaks
sorear diakopter: std doesn't fudge the testsuite and it still fails to parse ~5% of them
diakopter: watch the %passing number for drops
bkeeler So if I set the parrot IO object to encoding('fixed_8') or whatever, I'll get back strings that are similarly flagged? 21:38
pmichaud yes.
bkeeler Cool 21:39
OK, I'll go away and hack for a bit and let you know how it goes :)
pmichaud excellent.
diakopter sorear: in regex_in_variable.t 21:43
it can't find is_run
and it can't find Test::Util 21:44
pmichaud nqp now supports primitive multisubs. bacek++
bkeeler That sounds like one of my tests. Did I goof when I wrote it?
diakopter (I suspect Makefile needs to do some dependency checking, like version of Moose, YAML::XS, and Test::Util maybe?)
sorear diakopter: you should have 43 failing test files
bkeeler Oh wait, no I didn't write that one 21:45
sorear actually, 40
43 was from right after the viv switchover
(actually you'll have a few more because I just broke hex number parsing. but this isn't your fault) 21:46
diakopter heh
pugssvn r31087 | sorear++ | [viv] Fix compilation of '0' followed by a complex atom; this fixes the 0xFACE regression 21:47
21:47 Guest21689 joined 21:49 Guest21689 left
pmurias diakopter: Makefile.PL should do dependency checking 21:49
dalek p-rx: eba2f2b | pmichaud++ | (3 files):
Merge branch 'multis'
p-rx: 7006d42 | pmichaud++ | t/nqp/49-multis.t:
Rename multi tests.
p-rx: 9612a72 | pmichaud++ | src/NQP/ (2 files):
[nqp]: Eliminate $*METHODTYPE from grammar and actions.
p-rx: 9d44980 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap.
diakopter pmurias: svn.pugscode.org/pugs/src/perl6/Makefile.PL 21:50
sorear anyways, Test::Util isn't a dependency 21:51
the tests are failing because we don't yet provide the full Perl *6* standard library
this isn't something you can just install...
21:52 patspam joined
diakopter ok. I thought maybe it was looking for a Perl 5 Test::Util. sry 21:52
21:53 ispeak_ left
diakopter sorear: failed 57 tests 21:56
took about 25min
paste.lisp.org fail 21:57
sorear diakopter: where? 22:00
lisppaste3 got kbd after it started flooding #perl6 with porn ads
so you'll need to post the url yourself 22:01
diakopter: if you want a lowish-effort way to help make snaptest better, try "implementing" Test::Util
22:01 silug joined
sorear look at src/perl6/lib/Test.pm6 22:02
make src/perl6/lib/Test/Util.pm6
TimToady not sure cursor handles :: yet, but it might
pugssvn r31088 | pmurias++ | [mildew] fix submolds in m0ld frontend 22:03
r31089 | pmurias++ | [smop] change the test so that it can be automatically translated into a
r31089 | format mildew can run
r31090 | pmurias++ | [mildew] fix bugs into the to SSA transform
r31091 | pmurias++ | [mildew] minor whitespace tweak to code emitted by -BoptC
22:03 Transformer joined
sorear submolds? 22:03
pugssvn r31092 | pmurias++ | [smop] started implementing SMOP_DUMP, which should make all smop objects, much more easily dumpable
22:05 snarkyboojum joined 22:06 Transformer left
dukeleto howdy folks! i have a question 22:08
parrot ~/git/rakudo/perl6.pbc gives me : Null PMC access in find_method('new_class') when I am not in the same directory as perl6.pbc 22:09
i think it is because perl6_group and friends cannot be found
jnthn Did you make install? 22:10
(If not, you need to.)
dukeleto jnthn: i didn't, trying that now :) 22:11
jnthn Seems to be the usual fix for such things. :-) 22:12
pmurias molds are the objects which store the code and constants for executing a block of code
submolds are molds which are constants in a different mold
sorear: see the above explanation 22:13
dukeleto jnthn: that gets me farther, thanks!
jnthn :-)
sorear I see 22:15
22:16 masonkramer_ joined 22:17 envi^home left 22:24 justatheory left
TimToady diakopter: I get Passed 782/815, 95.95% 22:26
pmurias sorear: generally the design of smop is quite simple, but the code is a bit messy
TimToady (and it runs in 18 minutes) 22:27
(and my lap gets very hot :)
pmurias what was the time for the gimme5 generated one?
sorear TimToady: is that before or after my Cursor patch? 22:28
sorear wants more cores. and a ponie.
rgrau rakudo: for (('abc' => 'ABC')) -> $pair { say $pair.key.comb Z $pair.value.comb }
TimToady that's 31087
p6eval rakudo a0b6d7: OUTPUT«AABC␤»
TimToady well, I'm only using one core 22:29
for the snaptest
but everything else can happen in the other core
rgrau is this the correct behaviour for Z ? 22:30
TimToady doesn't look like it 22:33
rakudo: for 'abc' => 'ABC' -> $pair { say ~$pair.key.comb } 22:34
p6eval rakudo a0b6d7: OUTPUT«a b c␤»
TimToady oh, maybe it's the multiple gather bug 22:35
rakudo: for 'abc' => 'ABC' -> $pair { say (eager $pair.key.comb) Z $pair.value.comb }
p6eval rakudo a0b6d7: OUTPUT«aAbBcC␤»
TimToady yes, it's the gather bug
some state used by gather is not being properly cloned 22:36
and comb is probably implemented with gather/take
rgrau so it's a known one, I shouldn't report it, should I?
TimToady probably not, but you see the workaround there 22:37
rgrau yup :)
TimToady I sure hope this one gets fixed for R* though 22:38
maybe it's really the closure bug in disguise
22:39 pmurias left 22:40 xabbu42 joined
dukeleto this is the error I get when loading an installed perl6.pbc from C: gist.github.com/424624 22:41
bkeeler I thought we had .perl on match objects now. Didn't that make it in? 22:43
sorear diakopter: abort. I've found the *real* problem
sorear un-screws some PERL6LIB hacking and convinces regex_in_variable.t to pass 22:44
sorear is now running a snaptest
22:44 justatheory joined
pmichaud It's the closure bug in disguise. 22:45
22:38 <TimToady> I sure hope this one gets fixed for R* though
22:38 <TimToady> maybe it's really the closure bug in disguise
sorear I thought that was fixed?
pmichaud It's the closure bug in disguise.
not yet. 22:46
it's on my to-do list. I need to get lists working first.
afk, fetching dinner 22:49
bkeeler Aaarghghgh, I see what the problem is. I'm inheriting my grammar from HLL::Grammar, therefore not Rakudo's Cursor, so I'm not getting Rakudo match objects :(
pmichaud oh, interesting 22:52
23:00 lestrrat is now known as lest_away
sorear TimToady: Why are import failures a worry rather than a sorry? 23:00
masonkramer_ I probably know the answer to this question already, but I want to make sure. I've become very interested in Perl6 "the specification", and I'd love to contribute to Rakudo implementation. The problem, of course, is that I only know one language somewhat well (that would be Perl5 - and I am talking about the language, not the implementation), and I'm not a CS major. Despite that, I'm pretty smart, and relatively young, and I'd 23:01
like to learn. Even though, again, I'm 99% certain that a complex project full of experts such as Perl6 has no room for me - does anyone here have some advice for how to learn ?| contribute here?
23:02 orafu left
sorear not being a CS major has never stopped anyone 23:02
I haven't taken a single CS class!
23:02 orafu joined
masonkramer_ That's encouraging! Really. I've been regretting my decision for a while now 23:03
snarkyboojum and I have and it doesn't necessarily help a great deal :)
sorear programming is a craft. the only way to learn is by doing 23:04
so come on in 23:05
the water's fine
masonkramer_ That is what I've come to believe on the job as a perl5 DarkPAN hacker
Well - what the hell? Should I just suck down the repo and start reading?
I can stumble my way through C source 23:06
sorear rakudo is a relatively large system
there's a high-level runtime library
23:07 skids joined
sorear a low level runtime support layer (bonded to Parrot) 23:07
a pair of Parrot C-extension libraries that sit under *that*
a parser
a code generator
jnthn Aye, we don't have that much C in Rakudo itself. Thankfully. :-)
sorear everyone here is at least somewhat specialized
pick a place to start 23:08
jnthn masonkramer_: There's certainly plenty of room for enthusiastic people to jump in and hack on stuff. :-)
And yes, what sorear said. Don't expect to grok the whole thing.
TimToady sorear: import failures usually result in undefined functions, and *those* used to just be a worry 23:09
but it might be time to make import failures fatal
jnthn TimToady: They're fatal in Rakudo, fwiw.
snarkyboojum masonkramer_: also there's moritz's weekly contribution challenges - perlgeek.de/blog-en/ - they might be worth following - subscribe to planetsix if you haven't already planetsix.perlfoundation.org/
sorear TimToady: if they aren't fatal, then how will we know if the module contained a BEGIN { exit }? 23:10
TimToady I hadn't known that was a big problem. :P
sorear t/spec/S02-names_and_variables/varnames.t: Unsupported use of $/ variable as input record separator; ------> $/⏏ = MyMatch.new;
23:12 ruoso left
jnthn masonkramer_: If you do like digging through C code though, then rt.perl.org/rt3/Ticket/Display.html?id=74758 is a mabye-not-too-hard fix to do in src/binder/bind.c. 23:12
(If you're looking for a concrete jumping in point, anyways. :-)) 23:13
masonkramer_ is following all the links ... bbiaf
TimToady std: $/ := Any.new; 23:15
p6eval std 31092: OUTPUT«ok 00:01 108m␤»
TimToady sorear: perhaps it should be := in any case 23:16
and STD doesn't complain about $/ :=
sorear TimToady: why? is $/ a containery thing like an @ or % sigil?
TimToady sure
23:17 Wolfman2000 joined
TimToady := has always been intended to work on scalar vars 23:17
pmichaud we could use a ticket queue review, also.
sorear TimToady: Why can't Cursor use STD->parsefile instead of system("std ?
23:17 Limbic_Region joined
TimToady well, it might clobber some globals we don't want clobbered 23:18
masonkramer_ pmichaud: was that directed at me? 23:19
TimToady but it can probably be made to work pretty easily
sorear what globals does STD/Cursor use without localizing?
TimToady masonkramer_: I suspect it was
sorear ok. task queued.
pmichaud masonkramer_: yes (sorry, forgot to address you properly :-)
TimToady sorear: I don't know, I'm just sayaing we'll find out. :) 23:20
23:23 PZt joined 23:26 ruoso joined, wallberg left 23:28 cdarroch left
pugssvn r31093 | sorear++ | [Cursor,STD-ecosystem] Fix PERL6LIB in snaptests. 23:29
sorear What does S05-mass mean? 23:30
jnthn *mass*ive number of tests 23:32
sorear seriously?
jnthn sorear: Well, kinda. :-)
sorear: It contains the vast majority of the regex tests.
23:32 patspam left
jnthn sorear: Which test a lot of combinations of features. 23:32
sorear: I think a lot of them may well be Perl 6-ifications of similar tests in Perl 5. 23:33
pmichaud I wonder if we could switch back to using the read-from-a-file form of tests, so that we could share a suite with nqp-rx
this would also probably speed up the test speed a fair bit :) 23:34
jnthn orly?
Wouldn't we still be running just as many tests?
pmichaud sure. Right now the parse of the program is pretty big
jnthn Or you mean we'd hae less to parse and would hit less GC pressure?
pmichaud instead of doing several hundred small parses, we end up doing .... right
jnthn I mean, at some level we'd have just as much to parse, just in small bits.
pmichaud rephrase
jnthn OK. Makes some sense then. :-)
pmichaud instead of one huge parse, we'd end up doing a lot of smaller ones 23:35
and it might even be easier to do now that we can variable subst in regexes :-)
jnthn ah, yes :-)
23:36 xomas_ left 23:37 xomas_ joined
pmichaud anyway, I'm thinking I want to write a nqp version of that test script, so perhaps that can then be ported into rakudo. 23:38
and, have to run off for a while -- bbl
sorear makes a list of all [$@%&]::w+ in STD.pmc and Cursor.pmc 23:39
77 of them... *auditaudit* 23:40
@::ACTIVE is localized in initparse but not used anywhere, even as $::ACTIVE 23:42
Why is @::MEMOS localized to its old value? 23:44
23:44 gbacon left 23:45 stephenlb left
TimToady dunno 23:46
23:47 rgrau left 23:53 xabbu42 left