»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:00 cognominal_ left, cognominal_ joined 00:03 Tedd1 joined 00:07 tokuhiro_ joined 00:22 seldon left 00:24 cognominal__ joined 00:25 cognominal_ left 00:27 whiteknight joined 00:28 cognominal__ left, whiteknight is now known as Guest47936 00:40 cognominal joined, tokuhiro_ left 00:42 cognominal left 00:58 Guest47936 left 01:00 cognominal joined 01:01 cognominal left 01:06 UncleFester6 joined 01:26 ponbiki left 01:33 ponbiki joined, ponbiki is now known as Guest90488 01:39 PacoAir left 01:41 Guest90488 left 01:49 UncleFester6 left 02:00 bluescreen10 left 02:09 Chillance left 02:37 Psyche^ joined 02:39 leprevost joined 02:40 Patterner left, Psyche^ is now known as Patterner 02:43 b1rkh0ff left 02:55 orafu left, orafu joined 03:20 bluescreen10 joined
dalek ast: d0cf38e | coke++ | S05-interpolation/regex-in-variable.t:
pugs fudge
03:28
03:29 thelazydeveloper left 03:30 gongyiliao joined
Timbus r: sub ♞ {"knight"} 03:31
p6eval rakudo 1f662c: OUTPUT«===SORRY!===␤Missing block␤at /tmp/QYTg3e9hBc:1␤»
Timbus not allowed?
n: sub ♞ {"knight"}; say ♞; 03:32
p6eval niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Malformed block at /tmp/3WDDbuhVVO line 1:␤------> sub ⏏♞ {"knight"}; say ♞;␤␤Parse failed␤␤»
Timbus guess so
dalek ast: 1b99898 | coke++ | S06-other/main.t:
niecza fudge
[Coke] r: sub postfix<♞> { "knight" }; 03:37
p6eval rakudo 1f662c: OUTPUT«===SORRY!===␤Missing block␤at /tmp/fdJ_TSY3Zl:1␤»
benabik r: sub postfix:<♞>($x) { $x ~ "knight" }; say "white "♞ 03:38
p6eval rakudo 1f662c: OUTPUT«white knight␤»
03:38 gongyiliao left
timotimo what exactly does fudge mean? is it different from "skip" or "xfail"? 03:39
benabik r: sub term:<♞>() { "knight" }; say ♞
p6eval rakudo 1f662c: OUTPUT«===SORRY!===␤Cannot add tokens of category 'term'␤at /tmp/ELsIQfALdE:1␤»
benabik I think "fudge" is for things that fail only in some implementations.
timotimo OK 03:40
oh my, it's already light out. time to go to bed >_>
good * #perl6
Timbus r: macro circumfix:«♞ ♞»($text) { return "kn" ~ "i" x $text.chars ~ "ghts" }; macro circumfix:«☀ ☀»($text) { return "d" ~ "a" x $text.chars ~ "ze" }; say "arabian " ~ ♞'♞♞♞♞'♞; say "like arabian " ~ say "Like arabian " ~ ☀'☀☀☀☀☀'☀; say "more often than not, are hotter than hot" 03:41
p6eval rakudo 1f662c: OUTPUT«arabian kniiiights␤Like arabian daaaaaze␤like arabian True␤more often than not, are hotter than hot␤»
Timbus aw
is it possible to get macros to take non-strings 03:43
03:47 birdwindupbird joined
Timbus r: macro circumfix:«♞ ♞»($text) is parsed / <-[♞]>+ / { return "kn" ~ "i" x $text.chars ~ "ghts" }; say ♞♘♘♘♞ 03:47
p6eval rakudo 1f662c: OUTPUT«===SORRY!===␤Missing block␤at /tmp/IvVjMgDvki:1␤»
Timbus d'oh 03:48
03:51 ingy joined 04:05 jaldhar joined 04:07 Stocks29 joined 04:08 Stocks29 left 04:31 kaare_ joined 04:32 telex left 04:33 telex joined 04:48 thou joined 05:11 JimmyZ_ joined
moritz jnthn: (re documenting metamodel in perl6/doc) yes, reasonable. Go ahead :-) 05:15
good morning everybdoy 05:17
05:18 gongyiliao joined
JimmyZ_ moritz: good morning 05:19
sorear good morning moritz. 05:22
05:45 gongyiliao left 05:54 leprevost left
dalek c: 45054e8 | moritz++ | lib/objects.pod:
[object] self, private methods, submethods
06:13
moritz r: class A { has $.x; submethod BUILD() { } }; A.new(:x<3>).x.say 06:14
p6eval rakudo 1f662c: OUTPUT«Any()␤»
06:39 SamuraiJack joined 07:01 thou left 07:06 cognominal joined 07:16 eternaleye_ is now known as eternaleye 07:30 GlitchMr joined 07:59 tokuhiro_ joined 08:02 nodmonkey joined
masak good antenoon, #perl6 08:19
moritz \o masak 08:20
08:20 brrt joined 08:21 birdwindupbird left
masak back-clogs 08:22
moritz r 08:23
Timbus arr! 08:24
moritz array!
r: say Array.^mro
p6eval rakudo 1f662c: OUTPUT«Array() List() Iterable() Cool() Any() Mu()␤»
moritz r: say Parcel.^mro 08:25
p6eval rakudo 1f662c: OUTPUT«Parcel() Cool() Any() Mu()␤»
moritz thought Parcel was Iterable
Timbus i oh thought you were txting in pirate. "r me hrties. wnt 2 plndr l8r?" 08:26
moritz akshually it was just a mostly dead ssh connection where I didn't see what I typed 08:27
masak r: $_ = "mostly dead ssh connection"; s[ea] = "rea"; .say 08:28
p6eval rakudo 1f662c: OUTPUT«mostly dread ssh connection␤»
08:28 tokuhiro_ left
sorear o/ masak 08:30
JimmyZ_ r: s[ea] = "rea"; .say
p6eval rakudo 1f662c: OUTPUT«No such method 'subst' for invocant of type 'Any'␤ in block at /tmp/htGuR5us8T:1␤␤»
masak sorear: \o
JimmyZ_ r: $_ = ""; s[ ] = "rea"; .say 08:31
p6eval rakudo 1f662c: OUTPUT«rea␤»
JimmyZ_ r: $_ = ""; s[] = "rea"; .say 08:32
p6eval rakudo 1f662c: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter ] (must be quoted to match literally) at line 2, near " = \"rea\"; "␤»
JimmyZ_ std: $_ = ""; s[ ] = "rea"; .say 08:33
p6eval std f43a358: OUTPUT«===SORRY!===␤Null pattern not allowed at /tmp/VK1jegzuR7 line 1:␤------> $_ = ""; s[ ⏏] = "rea"; .say␤ expecting quantifier␤Parse failed␤FAILED 00:00 43m␤»
tadzik good morning 08:34
moritz \o tadzik 08:35
08:36 thelazydeveloper joined
sorear
.oO( there's only one? also, that's quite some Hubris you have there )
08:38
08:38 brrt left
moritz sorear: only one what? /me misses some context 08:39
sorear 01:36 -!- thelazydeveloper [~lazydevel@unaffiliated/thelazydeveloper] has joined #perl6 08:40
masak comes crashing in through the window 08:41
moritz: grammar!
masak runs off
moritz now we can just hope for impatience
sorear I'm missing the context
moritz too 08:44
masak .oO( Perl 6 Coding Context )
by the way, first and second prize winners have gotten their prizes now, if not all their book deliveries yet. 08:45
moritz \o/
masak the p6cc2011 was awesome. the judging was a bit slow, but that's my fault. 08:46
moritz++ helped with a second set of eyeballs, moral support, and occasional necessary reminders.
moritz and much of the review for t1 and t2 :-) 08:47
masak oh, yes. moritz++
also, p6cc2012 will be *awesome*.
moritz r: class A { has $.x = 5; submethod BUILD() { } }; A.new(:x<3>).x.say 08:49
p6eval rakudo 1f662c: OUTPUT«5␤»
masak finds he used "awesome" about both p6cc2011 and p6cc2012, but felt he meant different things... 08:52
moritz MTA: More Than Awesome
masak :P 08:53
08:54 bbkr left 08:55 mucker joined
masak I'm implementing Lambda Calculus. planning to do a small writeup about it. github.com/masak/lambda-calculus/commits/master 09:01
but now I have a case of a left-recursive rule, and I'm thinking about how best to handle it.
here's what the Wikipedia page has to say about it: "Applications are assumed to be left associative: M N P may be written instead of ((M N) P)" 09:02
so both of these create the AST `app[ app[M, N], P ]`. 09:03
moritz with a quantifier :-)
masak heh :)
yes, the thought crossed my mind.
and then just have the action method create the right AST.
moritz right
masak moritz++
moritz or 09:04
build a parser generator that correctly handles left recursion :-)
masak yeah.
moritz or take an existing one :-)
masak I was wondering if maybe the new LTM-y bits would correctly handle left recursion.
moritz you can make bison emit its jump table
recursion terminates longest prefixes
masak but there's a potential infinity in there which I guess is a bit too much even for our LTM.
moritz so, no
masak ah, yes.
does that go for mutual recursion as well? that must be a hoot to compute. 09:05
moritz mutual recursion also terminates longest prefixes
masak head spins
moritz well, it would be much harder to have it not terminate LTM :-) 09:06
because it would mean the NFA/DFA builder would need to know how to turn recursion into quantifiers
masak ah well. it's declarative, and everyone knows declarations don't require any computation :P
moritz now you can just have a hash with all method names that have already been visited (when doing the declarative prefix calculations)
masak ah; yes. 09:07
hm.
moritz I'd say that's one of the simpler parts of LTM implementation :-)
masak I can't quite get that to fit, though.
you have to remove stuff from that hash as you go up the call tree.
oh, I guess it works out. 09:08
arnsholt I think the "standard" way to avoid left-recursion in CFGs is to refactor the grammar
moritz masak: you just have to copy the hash for each new branch
arnsholt There's a weakly equivalent (same language, but different parse tree) Greibach normal form for all CFGs 09:09
dalek c: c6ac771 | moritz++ | lib/objects.pod:
[objects] inheritance, object construction
moritz ah yes, I remember that fun in the formal languages class :-)
masak oh, so much to learn... :)
moritz reviews of the commit above would be very welcome 09:10
is it understandable, is it correct?
masak reviews 09:11
s/the parents' method/the parents classes' method/, perhaps? 09:12
s/of the name/of that name/ -- and this doesn't address "longnames". 09:13
s/The order by which/The order in which/
s/\(mro\)/(MRO)/
sorear sleep& 09:14
masak 'night, sorear.
"All calls to public method are "virtual" in the C++ sense" -- nitpick: is it the call that is virtual? or the public method? 09:15
"Point.new( x => 1, y => 2);" -- unbalanced whitespace inside parens.
09:16 mberends joined
mberends o/ 09:16
masak mberends! \o/
s/\(ie/(i.e./
mberends had time to read irclogs for a change :-) 09:17
moritz \o mberends 09:18
dalek c: 2c69e87 | moritz++ | lib/objects.pod:
fixes by masak++
09:19 Khisanth left
masak ss/However this is considered poor practi<(s)>e/c/ 09:19
masak loves <( )>
moritz: maybe worth pointing out that the $!attr binding in BUILD isn't particular to BUILD, or even submethods 09:20
anyway, moritz++. nice, clear explanation.
09:20 Khisanth joined
masak oh, and I'd perhaps go with s/much harder/harder/ in the end. :) 09:21
09:26 brrt joined
arnsholt Oooh. <( )> is pretty spiffy 09:27
masak moritz, arnsholt: ended up refactoring my l-recursion into a quantifier :) thanks. 09:29
JimmyZ_ likes <( )> too. 09:32
09:41 brrt left, brrt joined
masak rn: grammar G { regex TOP { ^ $ { make "OH HAI" } } }; say G.parse('').ast 09:44
p6eval rakudo 1f662c, niecza v19-15-g051783d: OUTPUT«OH HAI␤»
masak hm. 09:45
09:45 PacoAir joined
jnthn moritz++ # taking my scribblings in objects.pod and adding loads more to them :) 09:46
good morningish 09:47
masak good mornington, jnthn.
rn: grammar G { regex TOP { ^ <foo> $ { make $<foo>.ast } }; regex foo { foo { make "OH HAI" } } }; say G.parse('foo').ast
p6eval rakudo 1f662c, niecza v19-15-g051783d: OUTPUT«OH HAI␤»
JimmyZ_ good morning jnthn 09:48
masak rn: grammar G { regex TOP { ^ <foo> $ { make $<foo>.ast } }; regex foo { [foo|bar] { make "OH HAI" } } }; say G.parse('foo').ast 09:50
p6eval rakudo 1f662c, niecza v19-15-g051783d: OUTPUT«OH HAI␤»
dalek c: 12121ef | jimmy++ | lib/objects.pod:
fixed typo.
09:54
arnsholt starts reading up on S26 10:02
10:09 sftp left 10:13 u_u joined 10:16 GlitchMr left 10:20 xinming left, xinming joined 10:29 brrt left 10:31 brrt joined, spider-mario joined 10:33 brrt left 10:36 M_o_C joined 10:43 SamuraiJack left
masak hehe. the 'λx.M N' abbreviation associates to the left ('(λx.M) N'), but the 'λxyz.N' abbreviation associates to the right ('λx(λy(λz.N))'). 10:43
er, sorry. 'λx.(λy.(λz.N))' 10:44
shachaf λxyz.N isn't really "associating" 10:45
masak but left-associations translate into for loops, and right-associations translate into reverse for loops. the body of the for loop does a new 'make' with $/.ast somewhere inside its new argument. 10:46
shachaf: oh?
shachaf Oh, you weren't done.
masak shachaf: there's a variable and an expression. two things. it associates.
shachaf What would it mean for it to associate to the left?
masak ...heh. 10:47
arnsholt shachaf: For some operators, whether you go from right to left or left to right matters 10:48
masak yeah, I guess there's something else going on here than associativity.
but it felt just like associativity. strange.
moritz it's a bit like with multiple prefix operators 10:49
shachaf arnsholt: Sure. But there's no operator here, really.
moritz !+$foo can *only* mean !(+$foo)
because (!+)($foo) doesn't make sense
masak right.
so it's just a kind of nesting.
moritz right
shachaf++
10:50 crab2313 joined
masak this is very clean and makes me happy: github.com/masak/lambda-calculus/c...23ce805cfe 10:51
moritz ooh, nice use of make and $/.ast to avoid a variable to hold the intermediate AST
masak hm, which is nicer, 'reverse $<variable>[0..*-2]', or '$<variable>[reverse 0..*-2]'?
moritz: yeah, that's what I meant above. 10:52
10:52 spider-mario left
moritz the first 10:52
dalek kudo/inliner: 25d7c81 | jnthn++ | src/Perl6/Optimizer.pm:
A further allomorphy tweak, fixing one more test that the inliner regressed.
masak why?
kudo/inliner: 72075f2 | jnthn++ | src/Perl6/Actions.pm:
Don't consider things that use pseudo-packages to be inlinable.
moritz it has the advantage of working
masak huh?
oh!
moritz 0..*-2 is a WhateverCode
masak right.
sometimes I have too high expectations on *
shachaf Hah, "Lambda/Calculus.pm" 10:53
jnthn
.oO( When you wish up on a *... )
moritz well, it does do many things right intuitively
masak: in fact, (0..^*-2).reverse works
masak 'course, I could go '$<variable>[*-2 ... 0]' ;)
or, hm. 10:54
moritz I don't think you can
masak no.
moritz because the series is evaluated first
masak rn: my @a = <a b c d e f g>; .say for @a[*-2 ... 0]
p6eval rakudo 1f662c: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in block at /tmp/M0eDqs6Y7Y:1␤␤»
..niecza v19-15-g051783d: OUTPUT«Unhandled exception: Need more items on the LHS␤ at /home/p6eval/niecza/lib/CORE.setting line 1414 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3147 (get-next-closure @ 11) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3191 (ANON @ 17) ␤ a…
masak right.
the series grabs the whatevs.
10:55 bluescreen10 left, whiteknight joined 10:56 whiteknight is now known as Guest54824
dalek c: 4d4236e | moritz++ | lib/objects.pod:
[objects] roles, role application
10:57
moritz jnthn: in your talks on roles, do you have a better example than DrunkenGymnast for role conflicts? 10:58
moritz would like to steal one :-)
masak what? clearly, that's the best example possible! :P 10:59
here's one: role VScrollable { method scroll($dy) { ... } }; role HScrollable { method scroll($dx) { ... } }; class MyWindow does VScrollable does HScrollable {} 11:01
jnthn moritz: I recall doing one where it was about booking a train ticket, and there was a $.line (as in, which railway line) but it conflicting with a $.line related to "line on the invoice" 11:02
11:02 JimmyZ_ left
moritz masak: hm, nice 11:06
11:06 GlitchMr joined 11:07 bluescreen10 joined 11:11 JimmyZ joined 11:30 crab2313 left
GlitchMr perl6: printf '% %' 11:34
p6eval rakudo 1f662c: OUTPUT«'%' is not a valid sprintf format␤ in sub sprintf at src/gen/CORE.setting:2079␤ in sub printf at src/gen/CORE.setting:2084␤ in block at /tmp/jZhTBBbewa:1␤␤»
..niecza v19-15-g051783d: OUTPUT«Unhandled exception: invalid format specifier␤ at /home/p6eval/niecza/lib/CORE.setting line 1286 (sprintf @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1287 (printf @ 5) ␤ at /tmp/RNA187pMhC line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE…
11:35 gongyiliao joined
GlitchMr But... Perl 6 Synopsis allows things like '% %' 11:35
I guess it's bug in synopsis
11:37 fgomez left 11:38 birdwindupbird joined
dalek c: 3a0a898 | moritz++ | lib/objects.pod:
roles and stubs
11:41
masak GlitchMr: yes, I would say so. 11:43
GlitchMr: though C prints '%' on printf("% %"); 11:45
so maybe we should allow it after all.
moritz perl 5 also prints % 11:46
11:56 crab2313 joined 12:07 crab2313 left
dalek p: 6589656 | jnthn++ | src/QAST/Operations.nqp:
Add a way for ops evaluating to native types to attach that information to nodes.
12:08
12:08 brrt joined
dalek kudo/inliner: 4a658ee | jnthn++ | src/ (4 files):
Fix return type check handling when inlining.
12:09
kudo/inliner: 57697e2 | jnthn++ | src/Perl6/Actions.pm:
Attach return types to nqp::op nodes.
12:15 MayDaniel joined 12:17 brrt left 12:19 _fall0ut_ joined 12:21 driador left
masak nr: class A { class B {}; method foo { say B.new } }; A.new.foo 12:43
p6eval niecza v19-15-g051783d: OUTPUT«B.new(...)␤»
..rakudo 1f662c: OUTPUT«B.new()␤»
masak nr: class A::B { class C {}; method foo { say C.new } }; A::B.new.foo
p6eval niecza v19-15-g051783d: OUTPUT«C.new(...)␤»
..rakudo 1f662c: OUTPUT«C.new()␤»
12:47 M_o_C left
masak folks, Crypt::Game is now called Game::Crypt. and Hanoi::Game is called Game::Hanoi. all tests still pass and all CLIs still run. 12:48
I believe the code got a little better for it, too. japhb++
12:49 user joined
JimmyZ masak++ 12:49
12:50 brrt joined
masak I've received *lots* of good crypt feedback from Keving Coyler, the winner of July's open challenge. 12:52
I will trawl through it during the weekend, as I find slots of time. 12:53
12:58 tokuhiro_ joined
dalek kudo/inliner: 3bfb7a6 | jnthn++ | src/ (4 files):
Very minimal implementation of the 'soft' pragma, but enough that we'll be able to use it to make wrap.t happy.
12:58
masak hugs vim digraphs 13:04
dalek kudo/nom: 5cd3686 | jnthn++ | src/Perl6/Ops.pm:
Mark some Perl 6 ops as inlinable.
13:09
kudo/nom: 958a3ea | jnthn++ | src/ (2 files):
We will keep around the QAST tree of inlinable things now, not some string thingy.

Bump NQP_REVISION to get improvements needed by the inliner.
13:09 dalek left, nodmonkey left 13:10 dalek joined, ChanServ sets mode: +v dalek, mberends left
moritz ooh, inliner merged? 13:10
jnthn Yeah 13:11
masak yay.
jnthn++
moritz \o/
jnthn It's able to inline more stuff
Also
r: say 2 +< 63
p6eval rakudo 1f662c: OUTPUT«0␤»
jnthn > say 2 +< 63
18446744073709551616
Those kinds of things are mixed. 13:12
moritz \o/
jnthn It's less stupid about literal allomorphy, or whatever it's called. :)
s/mixed/fixed/
oh, dang, I needed to bump NQP_REVISION 13:13
moritz I like to call it stupomorphy :-) 13:14
13:16 brrt left 13:19 user left 13:22 boni joined 13:24 mberends joined
dalek p: e401db5 | jnthn++ | src/6model/serialization.c:
Re-enable re-use of strings on the string heap; it makes a fairly notable difference to the output size of CORE.setting compilation, and a small but certainly worthwhile difference to CORE.setting compilation time. Causes no issues here; hopefully not for anyone else now either.
13:27
13:29 boni left
dalek kudo/nom: 44cb610 | jnthn++ | tools/build/NQP_REVISION:
Get string sharing optimization for faster builds.
13:31
kudo/nom: 5e1b9a8 | jnthn++ | docs/ChangeLog:
ChangeLog updates.
jnthn away for a bit
13:34 cognominal_ joined 13:35 leprevost joined 13:37 cognominal left 13:44 cognominal_ left 13:48 awwaiid left
JimmyZ hmm, I didn't get a difference to the output size of CORE.setting compilation 13:49
sorry, wrong nqp branch 13:51
13:53 awwaiid joined
GlitchMr [\+] ^Inf 13:53
I like Perl 6 :) 13:54
masak :)
GlitchMr I like how this list is lazy
masak well, it turns out it's much easier to have infinite lists if they're lazy... :) 13:55
GlitchMr > ([\+] ^Inf)[^20]
0 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 153 171 190
:)
(well, ok, I could just type [\+] ^20, but whatever
masak the \ was chosen because it makes like a little triangle with the [
GlitchMr > 'ł' gt 'z' 13:59
True
Well, I guess that 'ł' is indeed bigger basing on codepoint
masak yes.
if you want locale-specific sorting, you have to specify that.
GlitchMr How?
masak through some means not specified by the Perl 6 spec.
that sounds like a CPAN module to me. 14:00
GlitchMr > sort 'a' .. 'z', <ą ć ę ł ń ó ś ź ż> 14:01
a b c d e f g h i j k l m n o p q r s t u v w x y z ó ą ć ę ł ń ś ź ż
This isn't really useful
masak depends on your use case.
GlitchMr I was doing it wrong all along 14:02
I shouldn't use sort with names
masak well, you should.
just not the default string sort. 14:03
GlitchMr But whatever, it's hard to determine what should be first: > sort 'a' .. 'z', <ą ć ę ł ń ó ś ź ż> 14:04
oops
sorry for paste
ß or ś for example
What should be first? I've no idea 14:05
masak that's why you need a locale.
mucker hi ... what does <!before ...> mean ?
GlitchMr Well, in case of ß or ś those characters belong to different languages 14:06
masak r: my $polish-alphabet = 'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'; sub polishly($c) { $polish-alphabet.index($c) }; say ('a' .. 'z', <ą ć ę ł ń ó ś ź ż>).sort(&polishly)
p6eval rakudo 1f662c: OUTPUT«a ą ć ę ł ń ó ś ź ż b c d e f g h i j k l m n o p q r s t u v w x y z␤»
masak \o/
GlitchMr: yes. they belong to different languages.
JimmyZ r: say 6.9 / 7.7
p6eval rakudo 1f662c: OUTPUT«0.896104␤»
masak mucker: it's a zero-width look-ahead.
Timbus did uh 14:08
did that actually sort
mucker i basically want to match any characters before END .. so i'm thinking the regex should look like <!before END <.+>>
masak oh ye of little faith :)
GlitchMr <!before > is (?! ) in Perl 5 (if I think correctly)
masak r: my $polish-alphabet = 'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'; sub polishly($c) { $polish-alphabet.index($c) }; say ('b', 'c', 'a', 'd' .. 'z', <ą ć ę ł ń ó ś ź ż>).sort(&polishly)
p6eval rakudo 1f662c: OUTPUT«a ą ć ę ł ń ó ś ź ż b c d e f g h i j k l m n o p q r s t u v w x y z␤»
masak \o/
oh, but it still puts the weird chars wrong :/ 14:09
Timbus so they all just come before 'b'
GlitchMr That sort is weird
masak no :(
masak can't see immediately what's wrong
r: my $polish-alphabet = 'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'; sub polishly($c) { $polish-alphabet.index($c) }; say ('a' .. 'z', <ą ć ę ł ń ó ś ź ż>)>>.&polishly 14:10
p6eval rakudo 1f662c: OUTPUT«0 2 3 5 6 8 9 10 11 12 13 14 16 17 19 21 22 23 24 26 27 28 29 30 31 32 1 4 7 15 18 20 25 33 34␤»
masak that looks... right. 14:11
GlitchMr n: my $polish-alphabet = 'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'; sub polishly($c) { $polish-alphabet.index($c) }; say ('b', 'c', 'a', 'd' .. 'z', <ą ć ę ł ń ó ś ź ż>).sort(&polishly) 14:12
p6eval niecza v19-15-g051783d: OUTPUT«d e f g h i j k l m n o p q r s t u v w x y z ą ć ę ł ń ó ś ź ż a b c␤»
GlitchMr huh?
masak there's something I'm missing here.
GlitchMr r: ('b', 'c', 'a', 'd' .. 'z', <ą ć ę ł ń ó ś ź ż>).flat.sort: {'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'.index($_)}
p6eval rakudo 1f662c: ( no output )
GlitchMr r: my $polish-alphabet = 'aąbcćdeęfghijklłmnńoópqrsśtuvwxyzźż'; sub polishly($c) { $polish-alphabet.index($c) }; say ('b', 'c', 'a', 'd' .. 'z', <ą ć ę ł ń ó ś ź ż>).flat.sort(&polishly) 14:13
p6eval rakudo 1f662c: OUTPUT«a ą b c ć d e ę f g h i j k l ł m n ń o ó p q r s ś t u v w x y z ź ż␤»
masak GlitchMr++
yeah. there was a .flat missing.
I'm surprised it's needed.
GlitchMr I guess that Rakudo sorted by first character in list for some reason 14:14
14:14 sneex joined
GlitchMr karma GlitchMr 14:14
aloha GlitchMr has karma of 12.
GlitchMr Good enough I guess :) 14:15
Timbus r: say ('b', 'c', 'a', 'd' .. 'z', <ą ć ę ł ń ó ś ź ż>).perl
p6eval rakudo 1f662c: OUTPUT«("b", "c", "a", "d".."z", ("ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"))␤»
masak that looks right.
Timbus just m,aking sure
GlitchMr It's not Perl 5 where lists are automatically flattened when possible 14:16
In Perl 5, my %hash = (key => do_something()) always calls do_something in list context 14:17
Potentially causing warnings about missing value for key 14:18
Usually scalar do_something() or [do_something()] or {do_something()} is what you want 14:19
14:23 cognominal joined, cognominal left, cognominal joined 14:30 Chillance joined, tokuhiro_ left 14:31 tokuhiro_ joined
GlitchMr perl6: my hash = <a b c d>; print "%a{}{}[]{}"; 14:31
p6eval rakudo 5e1b9a: OUTPUT«===SORRY!===␤Malformed my␤at /tmp/gHUsgsPaoi:1␤»
..niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Malformed my at /tmp/3SQaGq_ZML line 1:␤------> my⏏ hash = <a b c d>; print "%a{}{}[]{}";␤␤Parse failed␤␤»
GlitchMr perl6: my %hash = <a b c d>; print "%hash{}{}[]{}";
p6eval rakudo 5e1b9a: OUTPUT«a b c d»
..niecza v19-15-g051783d: OUTPUT«a b␤c d␤»
GlitchMr std: my %hash = <a b c d>; print "%hash{}{}[]{}"; 14:32
p6eval std f43a358: OUTPUT«ok 00:00 42m␤»
14:32 Chat3354 joined 14:34 Chat3354 left 14:35 tokuhiro_ left 14:39 nwc10 joined
nwc10 what is the 'soft' pragma? 14:39
jnthn nwc10: See 2889 on in S06 14:41
14:42 sneex left
masak S06:2889 # creates a link in the irclogs 14:42
nwc10 thanks
14:42 brrt joined
nwc10 gosh, I think I must have read that at some time, maybe years ago 14:43
as I remember this phrase: Be aware that this may turn your optimizer into more of a "pessimizer".
is it Christmas yet? :-/ 14:44
jnthn It's *August* :P 14:45
mucker is this a right regex <!before END <.+>> ?? 14:49
before END match anychars
jnthn That doesn't look like it's doing what you wish.
mucker :( 14:50
jnthn In fact, it really ain't
What's an example of the string you're trying to match?
mucker "foo bar baz END" ... I want to match "foo bar baz " 14:51
masak sounds more like you want to set up a goal.
jnthn Dunno goal matching is gonna work out too well for this. 14:52
Maybe...
masak r: say "foo bar baz END" ~~ / '' ~ 'END' [\w+ % [\s+]] /
p6eval rakudo 5e1b9a: OUTPUT«Unable to parse , couldn't find final 'END'␤ in any FAILGOAL at src/stage2/QRegex.nqp:862␤ in regex at /tmp/a1AOYX8xFc:1␤ in method ACCEPTS at src/gen/CORE.setting:9884␤ in block at /tmp/a1AOYX8xFc:1␤␤»
jnthn r: say "foo bar baz END" ~
p6eval rakudo 5e1b9a: OUTPUT«===SORRY!===␤Confused␤at /tmp/hakFlunXjw:1␤»
jnthn argh
masak r: say "foo bar baz END" ~~ / '' ~ 'END' [<!before END> \w+ % [\s+]] /
p6eval rakudo 5e1b9a: OUTPUT«Unable to parse , couldn't find final 'END'␤ in any FAILGOAL at src/stage2/QRegex.nqp:862␤ in regex at /tmp/xQxbJyjH5m:1␤ in method ACCEPTS at src/gen/CORE.setting:9884␤ in block at /tmp/xQxbJyjH5m:1␤␤»
jnthn r: say "foo bar baz END" ~~ /.+? <before END>/
p6eval rakudo 5e1b9a: OUTPUT«q[foo bar baz ]␤ before => q[]␤␤»
jnthn r: say "foo bar baz END" ~~ /.+? <?before END>/ 14:53
p6eval rakudo 5e1b9a: OUTPUT«q[foo bar baz ]␤␤»
jnthn That may be one way
masak yeah, but it backtracks a lot. :/
jnthn Relies on backtracking though.
masak (forwards)
mucker Ah ! thnkx was confused about the before's syntax
14:53 nwc10 left
jnthn Curiously, it is declarative. 14:54
masak not so curious, I think.
14:54 u_u left
jnthn oh, hmm, maybe anyway 14:54
But yeah, it ain't so efficient.
masak in the best case, its contents is just more DFA :)
mucker also whats the p6 equivalent of [^\d] 14:55
masak <-[\d]> 14:56
jnthn \D 14:57
masak heh.
suggestion for a bot: p5re-to-p6re-bot. 14:58
(maybe with a better name) :)
GlitchMr Hmmm... that sounds interesting
Perhaps I should implement this as part of my IRC bot
masak good luck :) 14:59
GlitchMr Well, if I would parse Perl 5 regexpes first :P.
Regexpes like: /$a)/ could mean anything
masak I could imagine implementing something like that with someone as a weekend hackathon thing. 15:00
GlitchMr I mean, Perl is already too clever for its good when it sees any variables in RegExp 15:03
/$length[2345]/
^ what this does?
And what this does? 15:04
/$length[23]/
masak the main task of such a bot would not be to get it right each time, but to be informative. 15:06
GlitchMr I mean, $length[2345] is variable $length followed by character class [2345]
$length[23] is variable $length[23]
masak for example, both of the parentheses-to-indices systems in p5 and p6 are statically knowable, but in different ways.
GlitchMr: oh? what's the difference? just the size of the number? 15:07
GlitchMr Yes
masak what's the rule?
GlitchMr I've no idea
I read about this in... perldiag 15:09
Ambiguous use of %c{%s[...]} resolved to %c%s[...]
15:12 u_u joined
GlitchMr "Interpolation in patterns has several quirks: $| , $( , $) , @+ and @- are not interpolated, and constructs $var[SOMETHING] are voted (by several different estimators) to be either an array element or $var followed by an RE alternative." 15:12
Voted? 15:13
VOTED?
I know about DWIM, but isn't this going too far?
15:14 brrt1 joined
masak wrong channel to be upset about this :) 15:14
15:15 brrt left
GlitchMr I wonder how it is possible that Perl 5 uses like everything EXCEPT for spaces for DWIM. 15:16
masak "Perl 5 users" isn't one coherent group with just one opinion. 15:17
huf the solution is simple! let's give : and {/} yet another meaning! 15:18
GlitchMr Now I wonder how it is voted :P.
15:18 brrt1 left 15:19 nodmonkey joined 15:23 brrt joined
GlitchMr paste.uk.to/c6569207 15:26
Why I have so pointless utilities on my PC...
15:27 MayDaniel left 15:28 cognominal_ joined 15:31 cognominal left, brrt left 15:34 brrt joined 15:45 brrt left 15:46 SamuraiJack joined
birdwindupbird How can one get AST for some statements? 15:50
masak could you provide more of the context in which you're asking this question?
birdwindupbird Sorry. I am trying to golf why LEAVE phaser do not fire in multi sub. I want to see AST of such sub. I am trying 'perl6 --target=past -e "my $k = 1; $k++". But get 'Method '__dump' not found for invocant of class 'Any'. May be i am doing it wrong way? 15:54
masak last I heard, --target=past was never really updated for the nom/6model branches. 15:57
so it's inaccessible except for perhaps really simple stuff, if that.
birdwindupbird Ok. May be there are other means to look into AST? 15:59
16:00 snearch joined
masak no. the feature doesn't seem to be a priority among those who can implement it (jnthn++ and pmichaud++, basically). 16:00
jnthn Well, thing is that phasers are (a) declarative and (b) fired by something in perl6.ops. 16:01
masak which I somewhat understand. it's not on a critical path.
jnthn I'm doubtful that even if --target=past worked it would yield too many clues.
r: multi foo() { 1; LEAVE { say 'bai' } }; foo(); 16:02
p6eval rakudo 5e1b9a: ( no output )
jnthn r: multi foo(:$x) { 1; LEAVE { say 'bai' } }; foo();
p6eval rakudo 5e1b9a: ( no output )
16:02 MayDaniel joined
jnthn r: multi foo(:$x) { 1; ENTER { say 'hi' } }; foo(); 16:02
p6eval rakudo 5e1b9a: OUTPUT«hi␤»
masak submitted on 2012-06-07 by moritz++: rt.perl.org/rt3/Ticket/Display.html?id=113548 16:03
birdwindupbird jnthn: Thanks. I am just trying to find my way into improvement of perl6. My steps seem incompetent and naive, i know. :) 16:05
masak birdwindupbird++ 16:06
birdwindupbird First "plus-plus". It's so inspiring... 16:07
GlitchMr karma birdwindupbird 16:08
aloha birdwindupbird has karma of 1.
jnthn Yeah, I've little idea why we've problems with LEAVE phasers (I guess UNDO and KEEP also) in multis...it's a curious bug.
I wonder if it's anything to do with the callframe re-use that happens in enter_multi_dispatch op. 16:09
16:09 gongyiliao left 16:10 MayDaniel left
dalek p/toqast: 2637cf1 | jnthn++ | src/NQPQ/World.pm:
Create scopes as QAST::Block.
16:22
p/toqast: 8ef56a3 | jnthn++ | src/NQPQ/Actions.pm:
Update a couple other block creations to use QAST.
p/toqast: 18cec82 | jnthn++ | src/NQPQ/ (2 files):
Update comp_unit to start using QAST::CompUnit, and tackle some of the other bits of comp_unit updating.
p/toqast: d579e84 | jnthn++ | src/NQPQ/World.pm:
Update compile-time binding of lexicals.
16:23
p/toqast: a05823a | jnthn++ | src/NQPQ/Actions.pm:
Pull in CTXSAVE override (will update the default one in HLL::Actions after QAST migration).
16:23 bluescreen10 left
16:23 birdwindupbird left 16:25 xinming left 16:27 xinming joined, mucker left
dalek p/toqast: 476dd8e | jnthn++ | src/NQPQ/Actions.pm:
Correct :hll copy-pasto.
16:28
p/toqast: 8440713 | jnthn++ | src/NQPQ/Actions.pm:
Update argument list processing for QAST.
p/toqast: 10f4753 | jnthn++ | src/NQPQ/Actions.pm:
Update numeric literal handling. Now with no setting/regex lib loading, nqp::say(42) works.
16:39 SamuraiJack left 16:46 benabik left 16:57 phenny left, phenny joined, cognominal_ left 17:07 cognominal joined 17:11 JimmyZ left
dalek p/toqast: b9f1e11 | jnthn++ | src/NQPQ/Actions.pm:
Add an EXPR that produces QAST.
17:11
p/toqast: a5e4e27 | jnthn++ | src/NQPQ/Grammar.pm:
Update most of the operators to use :op instead of :pirop/:pasttype.
p/toqast: c945388 | jnthn++ | src/NQPQ/Actions.pm:
Couple of fixes so if/unless now work again.
p/toqast: cd9fe1d | jnthn++ | src/QAST/Operations.nqp:
Add an nqp::isfalse to go with nqp::istrue; NQP wants it.
p/toqast: 375dfd0 | jnthn++ | src/NQPQ/ (2 files):
Get setting/module loading to work again.
p/toqast: 753dc29 | jnthn++ | src/NQPQ/Actions.pm:
Get strings working. With this, we pass a few of the simple tests in t/nqp again.
17:27 u_u left 17:41 cognominal_ joined 17:43 cognominal left 17:59 jaldhar left, jaldhar joined 18:13 leprevost left, jaldhar left 18:15 thou joined, jaldhar joined
moritz nr: say (\1).WHAT 18:15
p6eval rakudo 5e1b9a, niecza v19-15-g051783d: OUTPUT«Capture()␤»
moritz nr: say (\"foo").uc
p6eval rakudo 5e1b9a: OUTPUT«No such method 'uc' for invocant of type 'Capture'␤ in block at /tmp/rZ0YnP39Td:1␤␤»
..niecza v19-15-g051783d: OUTPUT«Unhandled exception: Unable to resolve method uc in type Capture␤ at /tmp/zGzqinNY8A line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3929 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3930 (module-CORE @ 564) ␤ at /home…
moritz nr: say Capture ~~ Positional 18:17
p6eval rakudo 5e1b9a: OUTPUT«False␤»
..niecza v19-15-g051783d: OUTPUT«True␤»
moritz nr: say Capture ~~ Associative
p6eval rakudo 5e1b9a: OUTPUT«False␤»
..niecza v19-15-g051783d: OUTPUT«True␤»
moritz agrees with niecza here
pmichaud, jnthn: is there a good reason that Capture is neither Positional nor Associative in Rakudo?
it implements at_pos and at_key 18:18
nr: say (\(1, a => 2)).list.perl 18:19
p6eval rakudo 5e1b9a: OUTPUT«(1,).list␤»
..niecza v19-15-g051783d: OUTPUT«(1, ).list␤»
moritz nr: say (\(1, a => 2)).hash.perl
p6eval rakudo 5e1b9a: OUTPUT«EnumMap.new("a", 2, )␤»
..niecza v19-15-g051783d: OUTPUT«{"a" => 2}.hash␤»
masak yeah, I agree with Niecza too.
just as Match is Positional & Associative 18:20
moritz nr: say Match ~~ Associative
p6eval rakudo 5e1b9a: OUTPUT«False␤»
..niecza v19-15-g051783d: OUTPUT«True␤»
moritz :-)
18:22 cj left 18:23 cj joined
moritz nr: say (\ a => 1).perl 18:23
p6eval niecza v19-15-g051783d: OUTPUT«"a" => 1␤»
..rakudo 5e1b9a: OUTPUT«===SORRY!===␤You can't backslash that at line 2, near " a => 1).p"␤»
18:24 cognominal_ left
masak r: my $q = quasi { {{{$a}}} } 18:25
p6eval rakudo 5e1b9a: OUTPUT«===SORRY!===␤Variable $a is not declared␤at /tmp/ly_Tyc8lal:1␤»
masak r: my $a; my $q = quasi { {{{$a}}} } 18:26
p6eval rakudo 5e1b9a: ( no output )
masak hm. that probably should compile but not run.
r: my $a; my $q = quasi { {{{$a}}} }; say $q.^name
18:26 u_u joined
p6eval rakudo 5e1b9a: OUTPUT«AST␤» 18:26
18:26 mikemol left
moritz r: my $a; my $q = quasi { {{{$a}}} }; say $q.perl 18:27
p6eval rakudo 5e1b9a: OUTPUT«AST.new()␤»
18:28 mikemol joined
moritz ok, here's a weirdness 18:28
capture literals are made with \
s/capture/Capture/
and then there are Parcel and Capture parameters 18:29
and they use | and \
but it's the | that makes the Capture
isn't that... totally confusing?
masak yes. 18:31
I've never thought about that before.
moritz I realize that there's an analogy to | on the caller side 18:32
f(|$c) interpolates whatever is in |$c in the argument list
and sub f(|$c) { } puts whatever comes in into $c
nr: say (\(1, a => 2)).elems 18:38
p6eval rakudo 5e1b9a, niecza v19-15-g051783d: OUTPUT«1␤»
moritz erm, what?
why does it count only positional elems?
dalek c: 447afc8 | moritz++ | lib/Capture.pod:
document Capture
18:39
masak moritz: because that's what the list nature does? 18:40
18:40 Guest54824 left
TimToady because it's a Capture, not a Parcel 18:40
Capture is after named args have been pulled out separately 18:41
jnthn I suspect Capture not doing Positional and Associative is an accident. 18:42
masak I have a question about unquotes. do they run ASAP on surrounding block entry, or ALAP when evaluating the quasiquote?
masak guesses ALAP
...in resonance with how qq strings work.
TimToady I'd think ALAP would be more useful 18:43
masak yeah.
that's probably what people expect.
I mean, you might want to synthetically create more ASTs in the macro body.
and then unquote them.
jnthn expects ALAP too 18:44
moritz nr: say (\(1, 2, b => 3)).hash
p6eval niecza v19-15-g051783d: OUTPUT«{"b" => 3}␤»
..rakudo 5e1b9a: OUTPUT«EnumMap.new("b", 3, )␤»
moritz doesn't understand "Capture is after named args have been pulled out separately"
the named args are still in the Capture, no?
TimToady but they are no longer part of masak's "list nature" 18:45
moritz so far I've thought of Hash.elems and List.elems in equal terms 18:47
18:47 cognominal joined
moritz but I guess one could say that Hash.elems coerces the hash to list and then obtains the number of elements, at least notionally 18:48
tadzik \o/
TimToady nr: 'foobar' ~~ /(...) $<bar>=[...]/; say $/.elems
p6eval rakudo 5e1b9a, niecza v19-15-g051783d: OUTPUT«1␤»
TimToady same deal
moritz nods 18:49
masak tadzik: \o/
moritz \o tadzik
masak so. ALAP. 18:50
18:50 GlitchMr left
masak next question: on which hook, conceptually, is the code that does the unquote AST stiching-in hung? 18:50
at parse time there's static quasis. but the thing that gets returned from a macro or assigned to a variable is an incarnated quasi. 18:51
on which hook does the code hang that incarnates a static quasi? 18:52
hm. I guess it's just a question of code generation, actually. 18:53
jnthn Isn't it just when we hit the place wher the quasi is in the code?
18:53 p6rd left
masak indeed. 18:53
moritz just like with strings with interpolation, no? 18:54
masak yes, just so.
masak goes to find the piece of code that generates quasis today
moritz ok, making Capture does Positional does Associative causes some spectest fallout
perlpunks.de/paste/show/501d701b.584.228 18:55
t/spec/integration/error-reporting.rakudo seems to be caused by the inliner, not by that patch
hash.t and splicte.rakudo hung 18:56
huh 19:02
make t/spec/S32-array/splice.t say "Non-zero wait status: 11" 19:03
./perl6 -Ilib t/spec/S32-array/splice.rakudo; echo $?
0
masak r: macro foo { my $a = {}; quasi { say $a.WHICH } }; foo; foo 19:04
p6eval rakudo 5e1b9a: OUTPUT«Hash|-1115445535␤Hash|-1108920089␤»
moritz r: say Match.^mro
p6eval rakudo 5e1b9a: OUTPUT«Match() Capture() Cool() Any() Mu()␤»
moritz ah, and the hang in t/spec/S02-types/hash.t is for using a Match object as a hash index
which tries to slice because it's a Positional 19:05
and then loops, because the iteration still returns Match
19:05 fgomez joined
moritz might be solved with special-casing 19:06
r: say 1; ␤␤␤ +Any 19:07
p6eval rakudo 5e1b9a: OUTPUT«1␤use of uninitialized value of type Any in numeric context in block at /tmp/epqfuAfH1b:1␤␤»
masak yeah. the unquote stitching code should go here: github.com/rakudo/rakudo/blob/nom/...AST.pm#L11
moritz jnthn: the line number for the warning is wrong; that's rather new, and causes a test failure in error-reporting.t 19:08
masak right now all that happens there is that the appropriate context gets set.
moritz probably needs to generate code that does the unquoting 19:09
or splicing
or... /me confuses all the terms right now
jnthn moritz: Hmm...curious.
moritz jnthn: does the default optimization level inline stuff? 19:10
jnthn Yeah 19:11
But I'm not sure what it'd inline there
masak moritz: well, there is already code generated to call that method. I think that's all that's needed.
jnthn Oh...
moritz jnthn: the prefix:<+>?
jnthn The + I guess
moritz jnthn: --optimize=0 fixes the line number
19:11 cognominal left
jnthn --optimize=1 too? 19:11
moritz with =1 it's also correct
19:11 cognominal joined
jnthn moritz: Does gist.github.com/3259432 help? 19:13
19:13 p6rd joined
moritz p6rd exited after 3548m26.170s with "Terminated." 19:13
masak amy idea why? 19:14
moritz jnthn: will test
masak any*
jnthn Given that it was terminated, I blame Arnold Schwarzenegger 19:15
moritz masak: it might have leaked memory and exceeded the ulimit
masak: or could be some memory corruption
p6rd: next
p6rd parrot 2012-08-21, rakudo 2012-08-23, niecza 2012-08-27
tadzik oh, I get to release Rakudo during the YAPC 19:16
jnthn ooh :) 19:17
Do it in a lightning talk ;-)
tadzik tee-hee
well, if you bring your PC...
moritz jnthn: huh, your patch applied with offset -50 lines, and then it complained "Symbol '$inlined' not predeclared in inline_immediate_block"
19:17 mberends left
jnthn wtf! 19:17
It was meant to go in inline_call
masak git... making a mistake? surely not! 19:18
19:18 mberends joined
jnthn I know...it normally gits everything right. 19:18
moritz i applied with patch(1), not git apply 19:19
but I think I see where it should go
masak nice to see some other implementation of *anything* saying "It's mainly an architectural change with little visible benefit, but it will be a big improvement in terms of flexibility and modularity inside the compiler.": hackage.haskell.org/trac/ghc/blog/newcg-update
arnsholt jnthn: Are you sure there's enough time to do spectests and everything during a lightning talk? =)
jnthn arnsholt: Probably not even on my main dev machine, actually...
arnsholt Yeah. I might be able to get it done if I do TEST_JOBS=8 on my work machine 19:20
moritz I could let you remote into my 24core $work machine :-) 19:21
but it's windows, and doesn't have a working C compiler :(
jnthn moritz: "Great, another re-write!" 19:22
s/moritz/masak/
arnsholt Oooooh, I could do it on our work big machine 19:25
TEST_JOBS=32 >:D
jnthn o.O 19:26
arnsholt What can I say, we do comp.ling. Lots of data is our business =)
masak jnthn: yeah, can't those Haskell guys just finish one compiler according to spec and *release* the damn thing!? :P 19:27
moritz jnthn: your patch fixes the warning line number
arnsholt jnthn: Don't ask how much memory there is ;)
jnthn moritz: asbra! I can commit it, unless you already did.
moritz jnthn: go ahead
masak arnsholt: TEST_JOBS=32, sure, but t/spec/S32-io/IO-Socket-INET.t will still be the bottleneck :) 19:28
moritz arnsholt: 8GB... per core?
arnsholt moritz: Yeah =)
dalek kudo/nom: 7e1b380 | jnthn++ | src/Perl6/Optimizer.pm:
Don't lose line numbers when inlining; moritz++ for reporting.
jnthn Hm, this means we inline calls to + :D 19:29
arnsholt Oh, and maybe we could just put the bottleneck test first in spectest.data, masak =)
jnthn r: say 32 * 8
p6eval rakudo 5e1b9a: OUTPUT«256␤»
masak arnsholt: that might be a good idea anyway...
jnthn That's bigger than my darn SSD on thi smachine!
tadzik hehe, same here 19:30
arnsholt Well, it's a shared machine. I don't have it all to myself, really =)
moritz can just offer 92GB for 24 cores. Should still be enough for ~30 parallel jobs
easily
19:36 cj left
tadzik masak: Game::Crypt doesn't seem to pass its tests 19:37
59 modules ok, 49 not ok (108 total) on new rakudo 19:38
masak tadzik: huh. I ran them locally, and they passed... 19:40
masak runs them again
19:40 benabik joined
masak tadzik: all tests pass here. do I need to update my nom? 19:41
masak does so 19:42
19:45 kaare_ left, flussence joined 19:48 fgomez left, fgomez joined
masak tadzik: I now have an up-to-date installed nom. tests still pass. 19:48
moritz ==> Testing Game::Crypt
t/crypt.t .. 1/? Could not find symbol '&NoExitThere'
masak :/
moritz masak: do you have local modifications? or local modifications in Adventure::Engine? 19:49
or unpushed commits?
japhb Or a pony? 19:50
masak no, there's still just the one commit there.
(in the Adventure::Engine repository)
I have X::Adventure::NoExitThere defined at line 143 of Adventure/Engine.pm 19:51
I have no idea what would be wrong on your setups. tadzik, moritz, suggestions welcome.
moritz masak: did you precompile Adventure::Engine? 19:52
masak no.
moritz did
masak if precompilation breaks Adventure::Engine, then that's very bad. 19:53
moritz that seems to be exactly what happens 19:54
removing the .pir files, t/crypt.t runs fine
masak submits rakudobug 19:55
moritz might be an instance of rt.perl.org/rt3/Ticket/Display.html?id=112626
masak looks 19:56
yes, that looks very similar. 19:58
20:04 benabik left
masak well, maybe not. 20:06
that one is about declarations colliding which shouldn't be.
mine is about declarations missing.
of course, the underlying cause could still be the same.
I could golf and submit a separate rakudobug if that's deemed worthwhile. 20:07
or golf and add to #112626
g'ah! it's 2012, and precompilation breaks my modules in Rakudo. :( 20:10
20:11 MayDaniel joined 20:12 birdwindupbird joined
jnthn masak: We didn't *have* the serialization bit of precompilation until 2012. 20:13
And we all know how many people clamber to fix the issues in that area. 20:14
masak ...not many? just a guess. 20:16
jnthn suspects the number of people who comitted to serialization.c is somewhere around 1. :) 20:17
masak jnthn: sorry about the overt frustration. I just want Perl 6 to be a reliable platform to build software on.
if these breakages happened in 2008, I wouldn't bat an eyelash. 20:18
jnthn Then try to find ways to increase the bus number in areas where it's too low to have enough people to get to "reliable" as quickly as you'd like. 20:19
20:20 awwaiid left
masak yeah. 20:20
20:20 awwaiid joined, benabik joined 20:23 nwc10 joined
nwc10 jnthn++ # nom now uses only 56% of the RAM that the last release needed to compile the setting (on "my" machine) 20:23
at this rate it will be using negative RAM by about October 20:24
jnthn Uh...I'm not sure extrapolation works like that, but awesome :) 20:25
awwaiid uses the negative-ram to open up some faster-than-light time travel and goes back in time to now to by himself another coffee 20:26
jnthn++ # thanks for the coffee 20:27
jnthn \o/
nwc10: That's...quite a big drop.
nwc10 yes. I wonder if my measurement is duff for some reason.
jnthn The ChangeLog quotes a value around 35%
flussence I came to ask a stupid question, but I ended up fixing it by making my code nicer... 20:28
nwc10 oh, that was a drop from the last release all the way to HEAD
dalek p/toqast: 729ce4d | jnthn++ | src/NQPQ/Actions.pm:
Fix lexical variables.
p/toqast: c115641 | jnthn++ | src/NQPQ/Actions.pm:
Fix empty blocks.
p/toqast: 0758db1 | jnthn++ | src/NQPQ/Grammar.pm:
Spell defor correctly.
p/toqast: 50bd8cc | jnthn++ | src/NQPQ/Actions.pm:
Eliminate many uses of viviself.
p/toqast: bfd58e5 | jnthn++ | src/NQPQ/ (2 files):
A bunch more PAST::Var => QAST::Var, fixing simple sub declarations along the way.
nwc10 but top says 20:29
Mem: 2881M Active, 2534M Inact, 586M Wired, 100M Cache, 399M Buf, 1814M Free
so it's not swapping
jnthn Nice
Well, the string de-dupe thing I did today could easily have helped.
nwc10 OK, to be fair that's top when I'm not running it - let me log in twice
20:30 xinming left 20:33 snearch left
nwc10 This is while running: 20:34
96290 nicholas 1 118 0 905M 835M CPU0 0 5:18 100.00% perl6
size just peaked at 10055M before it exited 20:35
er, 1005M
TimToady whew
jnthn !
nwc10 so it's under a Gb now on (at least one) x86_64 FreeBSD machine
jnthn I don't think we've ever needed 10055M :)
nwc10 maybe on a system with 512 bit pointers 20:36
actually, only 256 bit pointers for the most recent release
sorear good * #perl6 20:38
nwc10 it seems to be a very good * today
tadzik good star sorear
jnthn hopes we can shave some more off yet :) 20:39
o/ sorear
nwc10 me too. but you have to hit diminishing returns at some point, don't you? :-(
jnthn Yeah 20:41
masak sorear! \o/
nwc10 hopes someone else can check his figures aren't insanely wrong 20:42
dalek p/toqast: b1a033c | jnthn++ | src/NQPQ/Actions.pm:
Eliminate multitype usage.
20:45
p/toqast: 8f9d295 | jnthn++ | src/NQPQ/Actions.pm:
Toss hopefully unrequired namespace call.
p/toqast: 263e374 | jnthn++ | src/NQPQ/World.pm:
s/subid/cuid/
p/toqast: e8e11ea | jnthn++ | src/NQPQ/World.pm:
Fix method setup, which gets basic classes working again.
flussence I did stuff: github.com/flussence/perl6-Test-Corpus 20:47
(so that I could be increasingly lazy writing tests) 20:48
masak flussence: nice! 20:50
flussence++
flussence
.oO( now I just need to test it... )
20:51
20:52 nwc10 left
masak flussence: IO::Path has a .basename public attribute. 20:52
flussence: also, I'd write `Callable $test-block` as `&test` if I were you. 20:54
tadzik errr 20:55
flussence I'll make the Callable change, but I'm trying to make this work in rakudo+niecza simultaneously and niecza hasn't caught up on IO yet.
tadzik star: use JSON::Tiny; my $json = "\n [1, 2, 3"; say (from-json $json).perl
p6eval star 2012.07: OUTPUT«Any␤»
tadzik star: use JSON::Tiny; my $json = "[1, 2, 3"; say (from-json $json).perl 20:56
p6eval star 2012.07: OUTPUT«Unable to parse array, couldn't find final ']'␤ in any FAILGOAL at src/stage2/QRegex.nqp:831␤ in regex array at /home/p6eval/star/lib/parrot/4.6.0/languages/perl6/lib/JSON/Tiny/Grammar.pm:8␤ in regex TOP at /home/p6eval/star/lib/parrot/4.6.0/languages/perl6/lib/J…
tadzik star: use JSON::Tiny; my $json = "[1, 2, 3]"; say (from-json $json).perl
p6eval star 2012.07: OUTPUT«[1, 2, 3]␤»
tadzik moritz: is that intentional?
as in: leading \n breaks stuffs
dalek p/toqast: 24fb046 | jnthn++ | src/NQPQ/Actions.pm:
Somewhat fix self, attribute access.
flussence ...and s/&/$/ breaks rakudo too, wtf 20:57
t/expand.t .. Nominal type check failed for parameter '&func'; expected Callable but got Sub instead # github.com/flussence/Text-Tabs-Wra...t/expand.t 20:58
cognominal jnthn, what is a WVal in QAST? 20:59
20:59 Chillance left
jnthn World Value 20:59
As in, something we know at compile time.
20:59 benabik left
jnthn flussence: Did you write something like Sub &foo? 21:00
flussence I'm trying to think why I wrote Callable there in the first place... 21:01
jnthn Note that Callable &foo is like Callable[Callable] $foo 21:02
flussence I guess I could just get rid of the type entirely, the & should be enough
jnthn Rigth
Having the type *and* & is probably messing it up for you
tadzik my %old = from-json slurp $old-results;
my %new = from-json slurp $old-results;
it looked so sensemaking...
cognominal thx jnthn++
masak r: say Sub ~~ Callable 21:03
p6eval rakudo 7e1b38: OUTPUT«True␤»
tadzik i.imgur.com/2lskK.png \o/ 21:05
that may come in handy
jnthn tadzik: ooh! 21:06
tadzik++
tadzik it'll be more awesome. Stay tuned :) 21:07
speaking of which, which feather is a good place to put some resource-heavy operations to be running once in a while?
21:09 birdwindupbird left
cognominal What is the 'soft' pragma? 21:09
jnthn cognominal: S06 explains it in some detail 21:10
cognominal ha, thx
jnthn It's about managing the interaction of wrap and inlining.
cognominal yup, I see that 21:11
dalek mentaler: 34e1831 | tadzik++ | difftool:
Add difftool for nice results comparing
21:12
21:14 RobiX joined 21:15 benabik joined 21:26 benabik left 21:32 benabik joined 21:34 cognominal left 21:35 MayDaniel left 21:36 MayDaniel joined 21:53 cognominal joined, benabik left
tadzik I like how it takes ~5 seconds to install some stuff with panda :) 21:57
masak beats the big drum faster to hasten the Singularity 21:59
21:59 buubot_backup left
sorear o/ masak 22:03
masak \o 22:04
tadzik masak: I fixed Yapsi build and compiler.t, but there are things beyond my understanding there and in runtime.t 22:08
(github.com/tadzik/yapsi) 22:09
masak tadzik: oh, ok. thanks for the heads-up. 22:10
I might have a look tomorrow.
tadzik okay
jnthn hasn't written a module for quite a while 22:11
Maybe I should try my hand at it sometime :)
tadzik random idea from today: Text::Colors
or ::Colours
something along Term::ANSIColor, but able to produce terminal stuff, maybe also HTML text and so
like a common interface for colo(u)ring text
jnthn tadzik++ # awareness of correct spelling as well as American spelling of words 22:12
;-)
tadzik :)
22:12 MayDaniel left
tadzik that reminds me of one of Tim Minchin's pieces 22:13
masak reminds me of guerilla editing of Wikipedia. 22:14
jnthn
.oO( gorilla editing of Wikipedia )
masak secure.wikimedia.org/wikipedia/met..._campaigns
jnthn oO( use GORILLA_EDITING; )
masak the best part of that page? it is categorized both as "Humour" and "Humor" :P 22:16
tadzik :D
No such method 'MATCH' for invocant of type 'Integer' 22:22
that sounds awful
jnthn Indeed. :/ 22:25
How'd you get it?
tadzik use Grammar::Tracer on Yapsi.pm 22:26
gone away when I used <?after> instead of a hack that was there
github.com/tadzik/yapsi/blob/bf9cf...psi.pm#L31 here 22:27
jnthn r: say "ab" ~~ /<?{ $/.CURSOR.pos > 0 }> ./ 22:28
p6eval rakudo 7e1b38: OUTPUT«q[b]␤␤»
22:29 thou left
jnthn oh, but using Grammar::Tracer 22:29
tadzik aye 22:30
22:35 benabik joined
masak tadzik++ # de-hacking Yapsi 22:37
tadzik masak: I made it pass all tests and things :) 22:38
well, almost 22:39
masak tadzik: you rock
tadzik well, almost
I finally stumbled upon something that looks like being not a change in Perl 6 itself and not a rakudo de-regression :) 22:40
yep, all tests pass now 22:45
jnthn Pass all the tests! \o/
tadzik REmove all the warnings! 22:46
(but one)
masak: pull request sent 22:47
now I feel like sleeping. Good knight #perl6! 22:52
jnthn 'night, tadzik 22:53
22:54 LadySainthilaire joined
LadySainthilaire hi 22:55
22:56 LadySainthilaire left
masak hilairious. 22:56
23:02 RobiX left, sftp joined
masak good knight, #perl6. 23:09
23:09 cognominal left
jnthn gets some rest also 23:11
23:22 PacoAir left 23:24 cognominal joined 23:35 sivoais joined 23:52 rvchangue joined