»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
raiph am i right in saying timotimo recently created added an optimization phase for nqp? 00:04
japhb_ preflex: tell timotimo An optimization for you -- make sure /^ \d / doesn't turn into: concat(scan, concat(anchor:bos, cclass:\\d), pass) -- that leading scan shouldn't be there if the next atom is an anchor:bos. I fear how many places this is happening (and might nearly by itself explain weird Rakudo parsing slowness if it's common). 00:10
preflex Consider it noted.
raiph japhb_: that optimization would be in nqp code, not c, right? 00:12
japhb_ raiph: Yes, I'm pretty sure so.
raiph thx
japhb_ It's a pessimal code generation, not a failure of the regex engine itself. 00:13
timotimo i already made the optimisation 00:16
preflex timotimo: you have 1 new message. '/msg preflex messages' to read it.
timotimo to remove scans before BOS
i don't know if it's in master yet
fixing that didn't cause a significant improvement for stage parse at least.
japhb_ \o/ /o\
Wait ... did you do the optimization *both* in NQP and Rakudo? 00:17
Because since it's code generation, I think you'd need to do both.
TimToady are you using star? 00:19
timotimo ah, yes, i have a branch with a single commit that does nothing except invoke the P6QRegex optimizer 00:20
it's not in nom, though
japhb_ TimToady, no, from-scratch build as of a few days ago. 00:22
timotimo, Is there a reason not to merge?
timotimo good question 00:23
do you want to test the branch for me? :P 00:24
8i'll get an overview in a minute
dalek p/simplify_before: 1c3737b | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
remove futile scan operations in poscaps and subrules.
00:29
p/simplify_before: b45fce6 | (Timo Paulssen)++ | src/QRegex/P6Regex/Optimizer.nqp:
teach the regex optimizer about LEVEL
timotimo this is the branch in which the beginning-of-string-scan gets eliminated
dalek kudo/regex_optimizer: b2f1e2b | (Timo Paulssen)++ | src/Perl6/Optimizer.nqp:
run the QRegex optimizer from rakudo's optimizer.
00:30
timotimo this is the branch that launches the regex optimizer from rakudo
if you want to test them, feel free :)
japhb I'm literally about to start a meeting ...
timotimo that's all right :) 00:31
japhb but I do have a testing suggestion: This seems like the perfect kind of thing to test against the parse-json test, and exactly the kind of thing perl6-bench was supposed to make "easy". :-)
timotimo i think i'll rebase the regex_optimizer branch on nom and see if i can make it work
or rather: if i have to do anything to make it work
japhb nodnod
timotimo Method 'optimize' not found for invocant of class 'NQPMu' 00:53
not sure what i did wrong exactly
timotimo it works on parrot and breaks on jvm with that error; it seems like QRegex::Optimizer.new() returns NQPMu on jvm?! 01:00
timotimo wow, it was really worth it plugging that drive into the desktop instead of doing it via LAN; 60 MB/s instead of 6. 01:23
i've learnt a valuable lesson today.
japhb ... that your LAN is really slow? ;-) 01:49
timotimo well, it was WLAN, but it's supposed to be much faster
in the other direction i got 12 MB/s 01:50
but the CPUs of both machines weren't taxed at all and gzipping the datastream didn't make a difference whatsoever
japhb What kind of WLAN? 01:55
timotimo n 01:56
at least i think it is!
japhb MIMO? 01:57
timotimo hm, i don't think so
japhb Made a big difference for me. Cheap enough there to just buy a new one? 01:58
timotimo hm. i could have used a cable over this distance instead, but i have a feeling that the ethernet adapter in my laptop is a bit derpy
otherwise i'm very happy with my cable box + wifi access point 01:59
it's an AVM Fritz!Box; AVM is a cool company
jeffreykegler On the Marpa mailing list, I talk about S15, focusing on the Marpa point-of-view: groups.google.com/forum/#!topic/ma...ar3Boxu3B0 02:59
mjreed perl6: class Vector is Array { method subtract(@vec) { .new( self >>-<< @vec ) } }; say Vector.new(1,2,3).subtract([0,0,0]) 03:01
camelia rakudo-parrot 02af63: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method new at gen/parrot/CORE.setting:6921␤ in method subtract at /tmp/qlckTYTnQR:1␤ in block at /tmp/qlckTYTnQR:1␤ in any at /tmp/qlckTYTnQR:1␤ in any at gen/parrot/stage2…»
..niecza v24-108-g17d73e4: OUTPUT«(timeout)[auto-compiling setting]␤»
..rakudo-jvm 02af63: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in block at /tmp/vHSZfWb3J9:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤ in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196…»
mjreed ^^ that's straight from the Perl6 advent calendar day 8. what is going on? where's the extra positional param?
hm. works with explicit `self.new` instead of just `.new` 03:05
BenGoldberg r: say 1 R, 2 03:18
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«2 1␤»
BenGoldberg r: say 1 R, 2 R, 3
camelia rakudo-jvm 02af63: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in block at /tmp/Dhk70K2JLE:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤ in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196…»
..rakudo-parrot 02af63: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in block at gen/parrot/CORE.setting:16520␤ in block at /tmp/Ojj9IpYcyA:1␤ in any at /tmp/Ojj9IpYcyA:1␤ in any at gen/parrot/stage2/NQPHLL.nqp:1146␤ in any eval at gen/parrot/…»
BenGoldberg std: say 1 R, 2 R, 3
camelia std 3b262af: OUTPUT«ok 00:01 124m␤»
BenGoldberg n: say 'alive' 03:20
camelia niecza v24-108-g17d73e4: OUTPUT«(timeout)[auto-compiling setting]␤» 03:21
Woodi morning! 06:24
moritz \o 06:28
raiph preflex: tell dwarring added comment to your advent gist 07:23
preflex Consider it noted.
dwarring raiph: thanks! 08:05
preflex dwarring: you have 1 new message. '/msg preflex messages' to read it.
hoelzro morning #perl6! 09:16
moritz \o hoelzro, * 09:44
jnthn home :) 13:14
moritz welcome ~, jnthn :-) 13:15
FROGGS .oO( welcome C:Usersjnthn, jnthn ) 13:19
jnthn :P 13:21
FROGGS :o) 13:25
lizmat good *, #perl6! 13:26
backlogging
re irclog.perlgeek.de/perl6/2013-12-12#i_7992956 , the bug is that :exists returns a Parcel rather than a list ? 13:27
jnthn Slicing normally returns a Parcel, so I'd imagine it still does with :exists 13:30
lizmat indeed, and as far as S02:2498 is concerned, it should return a Parcel of Bool 13:34
synopsebot Link: perlcabal.org/syn/S02.html#line_2498
lizmat notes that that link doesn't bring up the right line :-( 13:35
colomon saw 8:34's line out of the corner of his eye as "Parcel of Blood"
lizmat we can do that too, but at extra cost :-) 13:35
colomon realizes 8:34 is EST. 13:36
hoelzro ahoy lizmat! 13:43
lizmat hoelzro o/ 13:44
hoelzro nice running into you last night, even if we didn't get a chance to talk
lizmat it was a nice evening.... the last ones left at midnight :-)
hoelzro =)
lizmat (which would be woolfy, ribasushi and yours truly)
jnthn $dayjob christmas dinner & 14:16
mjreed hey, dumb question, how can I get Rakudo (star 2013.11 running on OS X Mavericks) to interpret command-line parameters as UTF-8? $LC_ALL and $LANG are set properly in the environment, but it's still "Confused" by non-ASCII characters in arguments. 14:44
moritz mjreed: hwat kind of command-line parameters are you talking about? 14:54
mjreed: and are you using the parrot or the JVM backend?
mjreed: and if parrot, do you have the ICU lib + headers? 14:55
mjreed moritz: code passed in via -e, parrot.
perl6 -e '.say for ("A".."Z") >>xx>> 4' # works
perl6 -e '.say for ("A".."Z") »xx» 4' | more # Confused.
moritz mjreed: do you have ICU? 14:56
mjreed yes. Homebrew-installed icu4c. 14:58
moritz mjreed: and does say $*VM<config><has_icu> also say 1? 14:59
mjreed hm. nope. 15:00
moritz then somehow parrot's Configure.pl didn't recognize it 15:01
mjreed Yeah. I probably need to 'brew link' it despite the dire warning about doing so. Will try rebuilding. Thanks.
timotimo mjreed: thanks for spotting the missing self in the post. i went ahead and fixed it for raydiak++ 15:11
mjreed timotimo: so .new with no explicit innocent isn't supposed to work? 15:12
colomon mjreed: it works on $_ instead of self 15:13
timotimo exactly
maybe .foo should warn if it's not in a contextualizer?
or something like that?
mjreed I thought $_ was set to self if there was no other explicit topic, though.. 15:14
colomon nope
timotimo i don't know about that
colomon or at least, not as far as I know. 15:15
seems like that would be very confusing.
rjbs I think my news reader is much more cynical than I might have guessed! 16:30
www.evernote.com/shard/s2/sh/c8e39...4e2a9bf92c
[Coke]: ^ 16:31
PerlJam wonders if that newline was left there on purpose 16:34
timotimo i asked coke to keep that newline 16:35
PerlJam why? 16:36
timotimo it used to just be an unfortunate automatic linewrapping
i thought it was hilarious comedic timing
hm, that newline is a bit aggressive, though
PerlJam or ... now I expect the haters to take the quote out of context ... "Perl 6 people admit their failure! ``When is Perl 6 going to be Ready? ... and the answer is never''" 16:37
PerlJam anyhow ... [Coke]++ 16:39
timotimo i had hoped it would not make a whole new paragraph
were you just locking the editor on that post?
i was going to try a <br/> instead of an actual new paragraph
timotimo ah, perlpilot locked it 16:41
that's not you, is it?
PerlJam oh. I was looking at the post. hold on.
PerlJam all yours ;) 16:42
timotimo thanks 16:47
look at the updated post
it doesn't look as bad any more
actually, if i put evrything after the ? on its own paragraph, it may look more natural
nope. now "never" has its whole own line :) 16:48
PerlJam I dunno. An unfortunate, but humorous line break is one thing amongst friends, but it may do more harm than humor when exposed to a wider audience. 16:51
[Coke] I thought it was hilarious and obviously intentional in the final product, whereas the new version looks like a bad cut and paste. YMMV, but I bow to the will of the masses. 17:29
timotimo [Coke]: and i'll bow to your judgement 17:30
[Coke] er, s/the final product/the initial release that rjbs saw/ 17:31
either way, haters gonna hate.
so I'm fine. :)
(to be clear, y'all are not the haters) 17:32
TimToady lizmat: no, the problem is not that it is returning a Parcel; the problem is that it is not returning a Parcel 18:02
it is instead returning an itemized Parcel, which doesn't flatten properly in the list context supplied by all()
r: my %h = :foo(1), :bar(2); say so all map {.perl.say; $_}, %h<foo bar baz>:exists 18:03
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«$(Bool::True, Bool::True, Bool::False)␤True␤»
TimToady note the $() 18:04
sjohnson nollij
TimToady and that map is getting it unflattened too 18:05
r: my %h = :foo(1), :bar(2); say (%h<foo bar baz>:exists).perl 18:06
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«$(Bool::True, Bool::True, Bool::False)␤»
TimToady r: my %h = :foo(1), :bar(2); say (%h<foo bar baz>:exists).WHAT
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«(Parcel)␤»
TimToady WHAT derefs the $() silently
so it's hard to tell there's an unwanted level of indirection 18:07
moritz and there's no easiy way to introspec the presence of a scalar container (hint, hint) 18:08
TimToady r: my %h = :foo(1), :bar(2); my \thing = (%h<foo bar baz>:exists); say thing.VAR.WHAT 18:09
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«(Scalar)␤»
TimToady you was sayin'?
timotimo perl6: the developers thought of everything
TimToady 'course you could invoke No True Scotsman here :)
camelia rakudo-parrot 02af63: OUTPUT«===SORRY!=== Error while compiling /tmp/xz7wrTk0yU␤Undeclared routines:␤ developers used at line 1␤ everything used at line 1␤ of used at line 1␤ the used at line 1␤ thought used at line 1␤␤»
..niecza v24-108-g17d73e4: OUTPUT«(timeout)[auto-compiling setting]␤»
..rakudo-jvm 02af63: OUTPUT«===SORRY!=== Error while compiling /tmp/QTzJzrSBIB␤Undeclared routines:␤ developers used at line 1␤ everything used at line 1␤ of used at line 1. Did you mean '&on'?␤ the used at line 1␤ thought used at line 1␤␤»
TimToady camelia is very...enthusiastic... 18:10
speaking of ..., that's what I'd do on the line break, if you want it kept 18:11
the answer is never...
...as simple as
TimToady [Coke]: ^^ 18:12
then it's perfectly clear that the joke is intentional 18:13
timotimo arnsholt: will we ever resume work on p6-zmq? :) 18:13
PerlJam TimToady++ good idea 18:15
timotimo also, SDL2 may be something to consider in the near future; especially since it does all graphics operations opengl-accelerated, it may offset the slowness of rakudo-parrot a bit 18:16
(and when NativeCall for jvm is done ... :D )
moritz aren't there Java bindings to SDL? 18:20
timotimo hm, there probably are 18:21
mjreed @moritz - Getting ICU into Parrot didn't help. gist.github.com/markjreed/7948743 Additional ideas welcome. Works fine on Linux... 18:24
TimToady maybe your CLI is defective 18:27
what does perl -e 'say "«»"' give you for output?
what does perl -e 'say "«»".chars' give you for output? 18:28
or echo '«»' for that matter
colomon should that have been perl6 instead of perl back there? 18:29
moritz ------> say ("A".."C")⏏»xx»2
could still be either perl6 or the terminal 18:30
TimToady or perl -E :)
well, not the .chars one...
colomon TimToady: btw, perl6 -e 'say "«»".chars' gives me 4
TimToady should say 2 18:31
colomon yeah, I know
perl6 -e 'say "«»".ords'
194 171 194 187
that's parrakudo
moritz so, a general mac os X problem?
colomon on OSX 10.8
TimToady could be
colomon perl6 -e 'say "«»".ords' 18:32
171 187 # on linux
TimToady perl -E 'say length "«»"' ??
colomon also 4 on OS X 18:33
TimToady interestingly, 4 on Linux too
lue hello world o/
colomon \o 18:34
lue well, you know, I count four angles among those two characters, so... :)
TimToady because perl5 requires a 'use utf8;' to count it as 2 chars 18:38
perl -E 'use utf8; say length "«»"' ??
lue I get 2 using utf8 18:39
TimToady on OS X?
mjreed perl -Mutf8 -E 'say length "«»"'
2
on the same terminal where the perl6 version doesn't so much work 18:40
TimToady okay, so something is just defaulting wrong in rakudo, I guess
mjreed yeah, just strange. same version of rakudo works fine on Linux.
lue TimToady: not OS X, was just providing more data. 18:41
TimToady that's with perl6-p? do you have a perl6-j to try?
mjreed no; installed from the Star release, which has no perl6-j. I shall try building one when I have a moment..
colomon perl6-j -e 'say "«»".ords' 18:43
171 187 # os x
TimToady so just the parrot codepath 18:44
colomon y
TimToady wonders if perl6-m is up to doing .ords
colomon doubts it
TimToady well, just one step beyond say "hello world" 18:45
what could possibly go wron?g
colomon :)
it's not part of the main branch of rakudo yet, is it? 18:46
TimToady not yet
and doesn't compile on linux even that far yet
them winders guys is speshul
sjohnson utf8 is the greatest thing to happen to a computer. 19:06
sjohnson well, it's up there. 19:07
FROGGS TimToady: is P5's pos() really about flags within the supplied string? I'd have trouble translating that to v5 :/ 19:09
TimToady if this is the first insanity you've run into in P5, you're very fortunate :) 19:11
FROGGS hehe
no, yesterday I stumbled upon: push(a, 1) which pushes to @a O.o
TimToady when P5 got a magic hammer, everything started to look like a magic nail
well, that's not insane, that's just ancient cruft :) 19:12
huf there's a lot of stuff in P5 you're not really supposed to see ;)
FROGGS yeah...
TimToady what else would a push push to, other than an array? :D
huf "la la la no it isnt" :)
TimToady: maybe if we wait a few versions, it'll "push" to a hash too?
FROGGS TimToady: I guess that was before lvalue subs were invented? :o) 19:13
TimToady anyway, it's just a bit of syntactic diabetes
FROGGS hehe
TimToady++
TimToady hates it when our make process says: Missing or wrong version of dependency 19:16
THAT'S WHAT MAKE IS FOR!!!
</rant> 19:17
FROGGS TimToady: that is on my todo list for next year :/ 19:18
sjohnson i like rants
<rant type="angry"> ...
diakopter wantrant
FROGGS does that gistify to (FatRant) ? 19:19
diakopter Rantional
sjohnson FatRant < YomamaRant
TimToady hopes that's not Ruby code 19:20
sjohnson C:\>format e: /FS:YOMAMA32 /q 19:21
timotimo the < operator opens classes back up for adding methods, right?
TimToady it's their mixin, iirc 19:22
sjohnson import Java.Mathemathics.ComparisonOperators; int_tmp = new Integer(6); if (int_tmp.Math.lessThan(3)) { ... } etc 19:23
alright, i think i've been silly enough for one day. 19:24
lue <THAT'S_WHAT_MAKE_IS_FOR_!!!>.WHAT.say # output: (RantStr) 19:27
sjohnson lue++ 19:29
lizmat TimToady: I see your point 19:32
meanwhile, I was thinking of speccing / implementing ":any", ":all", ":one" and ":none" adverbs as special versions of :exists on slices 19:33
moritz but you can simply say any %thing<...>:exist, no? 19:34
lizmat does that smell ?
moritz yes
lizmat moritz: yes, but it would huffmanize it (whether there is a reason for it, I don't know)
and it could fail earllier, as any %h<...>:exists would still need to build the entire Parcel of Bools 19:35
moritz I don't buy the huffmanization argument 19:36
same number of characters, afaict
lizmat no, *iinstead* of :exists 19:37
%h<....>:any
TimToady thinks the optimizer can work out what to do with 'any %thing<...>:exists' 19:39
unless we've screwed up the design of junctions too much 19:40
timotimo TimToady: i recently suggested to jnthn to turn such code into a direct loop with quick-fail, but he said the analysis would probably be too costly
TimToady -O3 :)
timotimo (also, yeah, the optimization i had in mind was only going to happen in bool context, like the other junction unfolding) 19:41
lizmat also: the optimizer would then have to optimize into the slice handling?
TimToady well, slices are supposed to be transparent to laziness
timotimo not necessarily
TimToady dunno if rakudo actually accomplishes that though 19:42
lizmat anyway: I could implement them internally, so that the optimizer could convert any %h<...>:exists to %h<...>:ANY (not the capitals to indicate internal adverb)
timotimo the resulting code would just be something like { my $result = True; for %thing<...>:exists { $result = False if !$_; last unless $result } }
lizmat *note
TimToady r: my @array = <a b c>; say @array[2 xx *][^5]
timotimo so there would not be a need to introspect 19:43
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«(timeout)»
TimToady that is supposed to work
timotimo though now i realize you mean that the slice wouldn't have to continue, which i didn't think of yet
lizmat timotimo: indeed
"fail early"
TimToady the whole point of the LoL argument thing is to allow .[LIST; LIST; LIST] to treat each LIST as, well, a list 19:44
lizmat
.oO( I hope jnthn realizes his perl6 advent blog is for tonight )
19:45
TimToady maybe he's just planning to youtube the christmas party
lizmat maybe he is writing the blog post concurrently :) 19:47
TimToady smiles ever so slightly 19:48
lizmat I mean, he *did* Promise
TimToady and you did Supply him with tuits, right?
lizmat plenty of tuits on tap
p: sub a { <a b c>.map( {$_} ).eager.Parcel }; say a.perl; say a.WHAT 19:49
camelia rakudo-parrot 02af63: OUTPUT«("a", "b", "c")␤(Parcel)␤»
lizmat p: sub a { my $return = <a b c>.map( {$_} ).eager.Parcel; $return }; say a.perl; say a.WHAT
camelia rakudo-parrot 02af63: OUTPUT«$("a", "b", "c")␤(Parcel)␤»
lizmat this is the cause of what TimToady just pointed out to me
so somehow not returning it, but putting it into a var, is causing the extra indirection 19:50
TimToady p: sub a { my \result = <a b c>.map( {$_} ).eager.Parcel; result }; say a.perl; say a.WHAT
camelia rakudo-parrot 02af63: OUTPUT«("a", "b", "c")␤(Parcel)␤»
lizmat ah, duh!
lizmat needs to spend less time with P5 programmers :-) 19:51
TimToady p: sub a { my \result = <a b c>.map( {$_} ); result }; say a.perl; say a.WHAT
camelia rakudo-parrot 02af63: OUTPUT«("a", "b", "c").list␤(List)␤»
FROGGS runs away (crying)
TimToady p: sub a { my \result = (<a b c>.map( {$_} ); result }); say a.perl; say a.WHAT
camelia rakudo-parrot 02af63: OUTPUT«===SORRY!=== Error while compiling /tmp/9J8AT5NZzj␤Unable to parse expression in parenthesized expression; couldn't find final ')' ␤at /tmp/9J8AT5NZzj:1␤------> \result = (<a b c>.map( {$_} ); result ⏏}); say a.p…»
TimToady p: sub a { my \result = (<a b c>.map( {$_} )); result }; say a.perl; say a.WHAT 19:52
camelia rakudo-parrot 02af63: OUTPUT«("a", "b", "c").list␤(List)␤»
TimToady p: sub a { my \result = (<a b c>.map( {$_} ),); result }; say a.perl; say a.WHAT
camelia rakudo-parrot 02af63: OUTPUT«(("a", "b", "c").list,)␤(Parcel)␤»
PerlJam <jnap> Catalyst Advent is now covered to Day 26!
I guess the catalyst folks do advent differently :)
TimToady p: sub a { my \result = <a b c>.map( {$_} ).Parcel; result }; say a.perl; say a.WHAT 19:53
camelia rakudo-parrot 02af63: OUTPUT«(ListIter.new(),)␤(Parcel)␤»
TimToady you don't want the eager if :exists is to be lazy
jnap PerlJam: when I know Perl6 well enough I will definitely be involved in advent! 19:54
lizmat TimToady: the eager.Parcel meme was cargo-culted from the previous implementation
do we have lazy Parcels? 19:55
since it is specced to return a Parcel
TimToady a parcel contains a list 19:55
lists are lazy by default
well, a parcel can contain a list
lizmat but you cannot push/pop Parcels, if I remember correctly 19:56
TimToady see my last p: above, which is a Parcel containing a lazy list
p: sub a { my \result = (42 xx *).map( {$_} ).Parcel; result }; say a[^20]; say a.WHAT 19:57
camelia rakudo-parrot 02af63: OUTPUT«42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42␤(Parcel)␤»
lizmat so the Parcel contains 1 item, a lazy list
TimToady like that
lizmat I've always interpreted the spec as each Bool being an item in the Parcel, rather than in a lazy list inside a Parcel 19:58
TimToady a Parcel cannot be infinite 19:59
a slice can be, if you slice with an infinite list
well, supposed to can be :) 20:00
lizmat well, not the way it is implemented now... :-)
but that can be fixed 20:01
p: my %h=a=>1,b=>2; say so all %h<a b c>:exists
camelia rakudo-parrot 02af63: OUTPUT«True␤»
lizmat $ perl6-p -e 'my %h=a=>1,b=>2; say so all %h<a b c>:exists'
False
committing fix now
TimToady \o/
dalek kudo/nom: 7142b7e | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Fix additional dereference, thanks to TimToady++

  $ perl6-p -e 'my %h=a=>1,b=>2; say so all %h<a b c>:exists'
False
20:02
lizmat p: my @a=1; say @a[0..Inf]:exists # only 1 checked? 20:06
camelia rakudo-parrot 02af63: OUTPUT«True␤»
lizmat shouldn't Inf be handled differently from * ?
TimToady ranges autotrim in subscripts
lizmat or will that also be bound by the size of the array ?
ok
TimToady why I used xx instead :)
TimToady r: my @a = <a b c>; say @a[1 xx *][^20]; 20:07
seems like that oughta be allowed
camelia rakudo-parrot 02af63, rakudo-jvm 02af63: OUTPUT«(timeout)»
TimToady though we may get into weirdness with S09ish multidimension slices 20:07
*sional 20:08
obviously you don't want arbitrary size in two different dimensions at once
s/arbitrary size/infinite list of subscripts/
lizmat ah, I was wondering 20:09
lue
.oO(my @space[*;*;*])
TimToady that one is just "all the ones that are there" though
lizmat feels to me you could want N-1 dimensions to be infinite
wollmers Will the Graphems be born at X-mas?
lizmat note the "feels" there
TimToady what's the shape of the items returned, is the question 20:10
probably can support xx * only in the first dimension 20:11
so maybe it makes sense to do it the rakudo way and force people to use map instead, if we can't make it work without pessimizing normal subscripting 20:12
but I'd like to preserve the laziness of lists if we can
lizmat so maybe slices shouldn't return Parcels but lists ? 20:14
dalek ecs: f4b1200 | lue++ | S15-unicode.pod:
[S15] Replace .compose/.decompose methods.

Left behind from the move to multiple string types.
20:19
ecs: e020cb1 | lue++ | S15-unicode.pod:
[S15] Fix ord(s) to work on all Stringy.

This presumes that Unicodey does Stringy. If not, then you simply need to add the signatures for Unicodey things where these changes were made.
Additionally, some clarification on .chr(s).
[Coke] if we have a spec pod in perl6 can we use a .pod6 extension? things that parse perl5 pod can't be expected to not barf on pod6. 20:23
(e.g. github.com/perl6/specs/blob/master...icode.pod)
lue [Coke]: I was tempted to go for .pod6, but S26 already set a pattern for .pod in my mind. 20:24
[Coke] see also: github.com/perl6/specs/blob/master...tation.pod
lue would not hesitate to change the extensions though :)
[Coke] +1 from me if you do it. our pod doesn't live in a perl6-only toolchain. 20:25
lue ye
*yet
TimToady unless we just try the p6 toolchain and failover to p5
lue TimToady: I got the idea from moritz that there was no Pod6 toolchain in place, at least not like the POD one.
moritz there is perl6 --doc=html 20:27
not more
(plus a few bit-rotten scripts for doc.perl6.org)
dalek ecs: c834ab1 | lue++ | S15-unicode.pod:
[S15] More leftover stuff from the pre-multitype days.

Those functions can handle different NFs now through the magic known as a "type system", so that bit about special handling is meaningless.
TimToady seems like it's starting to rise to a dogfood issue 20:28
lue hopes there isn't more cruft :)
moritz the problem with dogfooding is that somebody has to do it :-)
lue TimToady: I plan on making it a more dogfoody issue with a pod6ify branch on the specs repo, after I write some starting tests for S15 in roast :) . 20:29
moritz simply writing pod6 documents doesn't make a toolchain magically appear out of thin air
lue: please start with the toolchain, not with pod6ifying
lue moritz: would I need access to feather to work out a toolchain, or could I run it locally?
moritz: fair enough. We already have two Pod6 specs for testing :)
TimToady
.oO("And cancel Christmas!" --The Sheriff of Nottingham)
moritz lue: I sure hope you can run Perl 6 code locally :-)
lue moritz: I dunno 'bout that, been years since I even thought about Perl 6... :) 20:30
[Coke] TimToady: if you can get github to do that, woohoo. (try to render perl6 pod) 20:32
PerlJam
.oO( If Christmas is cancelled, does that mean advent continues until next Christmas? )
20:34
lue Here's the general idea in my head for a toolchain change: 1) move our Pod6 to .pod6 extensions, 2) setup the Pod6 portion of the toolchain, 3) setup a based-on-extensions script to manage between the two, 4) pod6ify the specs, 5) dump the POD portion
moritz I'm kinda missing step 2.5) write a test suite, for th pod6 tool chain, and make sure the bus factor is at least 2
lue moritz: I assume the only repos I need in order to do is mu and specs, right? 20:35
bus factor...?
moritz en.wikipedia.org/wiki/Bus_factor 20:36
PerlJam moritz: What will this toolchain actually do?
moritz PerlJam: pod6 -> html, plus some extras like inserting dates, links, headers, etc. 20:37
maybe adding an index
maybe integrating smartlinks from roast 20:38
dunno what lue has planned
lue TimToady: ooc, what's the internal-reference syntax for Pod6? I'm thinking something like L<#head1title>, but that feels incomplete (as if there needs to be some sort of anchor complement). It's something I occasionally miss from S26.
:) "This could be a person taking a new job, having a baby, changing their lifestyle or life status, or literally getting hit by a bus: the effect would be the same" 20:39
PerlJam so, "perl6 --doc=html *.pod6" can (eventually) handle the first bit, is there a way to pass "doc options" so that the Pod::To::* modules can know what else to do?
lue PerlJam: there's currently a smartlinks.pl script which, if I'm guessing correctly, allows those links to roast tests to happen. 20:40
lue moritz: fair warning, I'm not writing any new P5 code :) [but I won't destructively replace P5 code either.] 20:45
PerlJam would like a genericish toolset so that it can be used to turn pod6 into a "website" or a "book" 20:46
(and the book could be in PDF or HTML or whatever) 20:47
(and the HTML-book would be different from the HTML-website in the later would have all sorts of extra cross links)
lue Hm, am I supposed to need to change the ROOT_DIR variable in update_syn? (just testing the current process to get a better understanding.) 20:48
moritz lue: I have no idead about "supposed to". You just have to get the damn thing working :-) 20:50
lue well, ROOT_DIR points to /home/pugscode which, to the surprise of no-one, doesn't exist on my computer.
xenoterracide where can I find a good example of the async { } api (IIRC that's what it looks like) 20:51
moritz lue: create it :-)
FROGGS xenoterracide: maybe here: jnthn.net/articles.shtml 20:52
lue I just pointed to a subdir of mu, since I don't want it to finagle with my Real Repositories™.
lue 'll create pugscode after all, just to avoid the headache of not committing a change to ROOT_DIR :) 20:53
japhb_ xenoterracide, It's not async {} anymore. It's Promise.start({}). Or as I tend to use it Promise.start: {} 20:57
xenoterracide japhb_: ah, so are even jnthn slides out of date? 21:00
japhb_ xenoterracide, No, you just have to read the latest version of the concurrency ones.
TimToady just: start {...}
xenoterracide am discussing some of my opinions of async and js callback hell with a friend who does js, in reference to how it appears p6 is going to be doing async 21:01
japhb_ TimToady, ah, it's exposed as a sub as well? Nice.
TimToady statement prefix 21:02
japhb_ xenoterracide, jnthn.net/papers/2013-npw-conc.pdf
perl5 think
xenoterracide japhb_: TimToady thanks
japhb_ preflex: tell jnthn It looks like your articles.shtml is out of date WRT your latest talks. 21:03
preflex Consider it noted.
japhb_ Am I the only one who hears the 80's song "The Reflex" in his head every time he talks to preflex? 21:04
PerlJam japhb_: heh! 21:05
TimToady j: my @promises = (start { sleep rand; .say } for 1..10); await @promises 21:06
camelia rakudo-jvm 7142b7: OUTPUT«NilNil␤␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤»
TimToady hah
japhb_ Caught it cheating. :-)
TimToady j: my @promises = do for 1..10 { start { sleep rand; .say } }; await @promises 21:07
camelia rakudo-jvm 7142b7: OUTPUT«3␤8␤2␤7␤10␤4␤9␤1␤6␤5␤»
TimToady j: my @promises = do for 1..10 { start { sleep rand; .say; $_ } }; say await @promises 21:08
camelia rakudo-jvm 7142b7: OUTPUT«3␤7␤6␤4␤9␤1␤8␤2␤5␤10␤1 2 3 4 5 6 7 8 9 10␤»
TimToady looks like a hyper to me
japhb_ Without any chunking 21:09
TimToady j: my @promises = do for 1..10 { start { .say; $_ } }; say await @promises 21:10
camelia rakudo-jvm 7142b7: OUTPUT«1␤6␤7␤5␤4␤3␤2␤10␤98␤␤1 2 3 4 5 6 7 8 9 10␤»
TimToady heh, 98
funny thing, if you change it to print "$_\n", it can still interleave the output 21:11
japhb_ Thread interruption mid-vm-op? 21:13
Or does it treat the interpolating string as multiple buffers to flush in sequence?
timotimo it might 21:14
TimToady I know it can also deadlock threads that way, which is why the dining philosophers on RC serializes output to a channel 21:15
but maybe we'd better be extra careful about passing lazy things to a channel... 21:16
TimToady perhaps even enforce an eager there 21:17
japhb_ Well, if you pass the lazy thing as a unit. But you want feeding a lazy into a channel to DWIM. 21:18
TimToady sure, but send it by item currently
*is by
japhb_ nod
lizmat TimToady: start is currently implemented as 'sub start(&code) { Promise.start(&code) }' 21:45
if I understand correctly, to make it a statement prefix, it would have to be done by the actions rather than just being a simple sub, right? 21:46
rurban1 TimToady: parrot say vs print "\n" ? we had a parrot threading problem with say 21:47
moritz I'm pretty sure we're talking about the JVM backend 21:49
FROGGS lizmat: it needs to go into the grammar and would then dispatch to &prefix:<start> for example 21:50
It can do the `Promise.start(&code)` in the actions too of course 21:51
lizmat since most people would probably do start {..} rather than Promise.start: { ... } 21:52
it might make sense to put the Promise start code into the prefix:start and make Promise.start return that 21:53
or is that a premature optimization thought ?
moritz sounds like a violation of encapsulation
FROGGS I dunno, I am bad at designing things
lizmat meanwhile I'm getting worried about jnthn's blog post for tomorrow
moritz lizmat: don't worry too much. In the last years it happened frequently that the post wasn't available at 00H UTC, but rather 10AM CET or so :-) 21:54
so it might still happen tomorrow
japhb_ That little indirection from start to Promise.start probably costs way less than all the other stuff involved in spawning a thread, scheduling it, joining it, and tearing it down.
lizmat true 21:55
timotimo japhb_: how far away from having perl6-bench compare multiple versions of the same compiler over time in a graph?
i found the thought of implementing that myself daunting; especially since we have the "automatically scale up the problem size as long as we can" thing 21:56
japhb_ timotimo, That feature was largely gated (in my own mind) on decent tagging for the various tests, because a graph like AWFY wants a single score to compare (or a small number, if you're willing to do multiple graphs). 21:57
timotimo AWFY?
what kind of tagging are you refering to?
lue is File::Find::Rule something Perl 5 is expected to come with? 21:57
japhb_ And you really want to produce a weighted average of the results from various tests (at some representative workload sizes) to produce that score. 21:58
timotimo ah
i thought it would already be nice enough to compare the speeds for the same test across versions
japhb_ timotimo, AWFY is arewefastyet.com/ 21:59
moritz lue: no
japhb_ lue: ISTR File::Find is, but File::Find::Rule is not.
But best way to know is to use the corelist utility, which itself is core as of perl 5.010. 22:00
moritz File::Find::Rule was not in CORE (or so I think)
that's what corelist says
and yes, File::Find is a core module
dalek : 979297b | lue++ | docs/feather/script/update-syn:
[feather] Make update-syn first-time friendly.

Essentially, clones repos if they don't exist. A small convenience, and shouldn't effect existing uses of this script.
lue hah, searching for "File-Find" in my package manager gives me one result: File-Find-Rule :D 22:02
timotimo oic
japhb_ timotimo, So anyway, most tests like AWFY take a weighted average of a suite of benchmarks (usually of one size class, like microbenchmarks or application benchmarks), so that an improvement or weakness in just one component will be visible, but won't pull the total completely off the chart. 22:03
timotimo i'd prefer something like speed.pypy.org, actually 22:05
japhb_ (Throwing away outliers and averaging or totaling would lose the ability to notice a single component, and choosing a single test, even a sizeable one, will tend to be dominated by a small portion of the compiler's performance profile -- regex and DOM performance in JS tests were two famous examples that led to flame wars as I recall.)
timotimo, speed.pypy.org can do that because the baseline is something with decent, relatively even performance across all subsystems. 22:06
timotimo hmm. 22:07
japhb_ (Hence the reason I chose perl5 as the gold standard for perl6-bench -- any AWFY or speed.pypy clone for Perl 6 should seriously consider that.)
timotimo speed.pypy also compares to cpython; why wouldn't we compare to perl5? 22:08
japhb_ My point more or less exactly. ;-)
rjbs timotimo: <rewind> Ah, the line break was intentional! Okay, sometimes my newsreader inserts them in very odd places.
timotimo :)
japhb_ rjbs, Because it's insane, or because the input is, and it's not able to pass a "crappy HTML Turing Test"? 22:09
rjbs japhb_: I think it's mostly the latter.
japhb_ remembers a few years back when someone finally produced a canonical parser for HTML tag soup -- I wonder if that's still considered state of the art. 22:10
moritz IE6? :-) 22:12
lue apparently has a pitiful collection of P5 modules :) 22:13
japhb_ moritz, No, silly. It was something produced in the early days of the HTML 5 effort.
lue moritz: "Please install Perl6::Perldoc v0.0.5 from the CPAN to generate /home/pugscode/syn/S15.html" --- that says to me the setup *can* handle Pod6, maybe. 22:14
moritz lue: don't believe all the lies they tell you 22:15
japhb_ ISTR it was intended as a "Browsers can just all include this free library, and then they will all interpret crazy inputs the same way."
lue :) I got the sense Perl6::Perldoc is perhaps not a stellar choice for Pod6. 22:16
moritz lue: iirc Perl6::Perldoc is an attempt from Damien Conway to support his early S26 versions
moritz lue: and a few hundred mails on p6l later, S26 was altered sufficiently that it can't be parsed without a full-blown Perl 6 parser anymore, and other things changed also 22:17
so Perl6::Perldoc is a hysterical artifact more than state-of-the-art
lue moritz: yeah, I had the sneaking suspicion that Perl6::Perldoc was maybe a bit old, as soon as the message popped up.
japhb_ Chances are pretty good that any given Perl 5 module in the Perl6:: namespace is out of date even for what tiny piece it tried to emulate. 22:20
That said, I can't even tell you how many times at my previous job I would have killed for even the tiniest bit of 6-like syntactic relief. 22:21
lue moritz: should I gut &process_perl6_file (SmartLinks.pm) and leave just a singular warning for now, then? Seeing as the P5 modules for Pod6 apparently won't work anyway? 22:22
moritz lue: +1
moritz lue: just for the record, I'm not really familiar with most of that code; I'm just the one who made that stinking pile of poo run again the last two or three times it stopped working 22:25
lue :) Don't worry, I plan on replacing it with a P6-able version eventually. 22:26
lue will do most of that work in a branch, to not disturb the actual generation in the meantime
lue gaaah! I wanted to print the original POD filename in the new warning, but $pod contains an array and I don't sigil variance! 22:38
lue &
tadzik .u ᴱ 22:43
lue r: say uniname("ᴱ"); # coming soon, hopefully :) 22:52
camelia rakudo-jvm 7142b7: OUTPUT«===SORRY!=== Error while compiling /tmp/1ZCAQVEDHI␤Undeclared routine:␤ uniname used at line 1␤␤»
..rakudo-parrot 7142b7: OUTPUT«===SORRY!=== Error while compiling /tmp/1W0K0XjOBm␤Undeclared routine:␤ uniname used at line 1␤␤»
timotimo i found a (the?) sillyness in my chaining_whatever branch and may now have what it takes to get through spectests 23:07
lue moritz: would you prefer that the new toolchain lives outside of mu/ as much as possible, and then use panda and such? (Feels like the right thing to me, but I don't know.) 23:12
dalek : 3e2808e | lue++ | util/Text-SmartLinks/lib/Text/SmartLinks.pm:
[Text::SmartLinks] Gut Pod6 generation.

It apparently wouldn't work if you had all the stuff anyway.
23:14
: 2998f7e | lue++ | docs/feather/script/update-syn:
[feather] Comment out zh-cn Synopses generation.

It hasn't been looked after in a while from the looks of it, and the code meant to handle it, which was commented out here, doesn't work anyway.
kudo/nom: 455fbcb | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Put the burden of :SINK on :delete only
23:15
lizmat gnight, #perl6! 23:17
timotimo gnite lizmat :) 23:20
so, how's jnthn++'s advent post coming along? =)
BenGoldberg r: 1 23:27
camelia ( no output )
BenGoldberg n:1
n: 1
camelia niecza v24-108-g17d73e4: OUTPUT«(timeout)[auto-compiling setting]␤» 23:28
BenGoldberg j: [R,] 1..3 23:29
camelia rakudo-jvm 7142b7: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in block at /tmp/2uld8ew40l:1␤ in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤ in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤ in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196…»
timotimo nqp: my %foo; say(nqp::isnull(%foo<bar>)); 23:30
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«0␤»
timotimo oooooh!
timotimo that would certainly explain the weirdness 23:32
hm. does nqp::existskey work on QAST::Nodes? 23:33
timotimo tries it out 23:36
seems fine 23:38