»ö« 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.
masak 'najt, #perl6 00:07
lizmat good night, masak 00:09
jnthn 'night, #perl6 00:14
lizmat gnight jnthn
TimToady yay, plane got here from Detroit 00:22
carlin_ \o/ 00:23
TimToady catch y'all on the flip side & 00:23
timotimo gnite everyone 00:51
timotimo drives home
Gondii Moin 04:41
Jemand da, der mir ne Frage beantworten kann?
Someone there, who can answer me a question? 04:43
PerlJam I'm here. Dunno if I can answer your question though :) 04:44
I certainly can't answer it if the question isn't in english ;)
Gondii So my question is: I have installed Perl 6 (Rakudo) on my Windows system, but I don't know how to search for new modules and install them... 04:48
PerlJam Gondii: you may want to install panda and use that: github.com/tadzik/panda 04:49
Gondii Yes, that's exactly what i tried, but for some reasons I couldn't install it, due to some error... I'll try again, but last time it didn't work 04:50
PerlJam Gondii: you can also try to go to modules.perl6.org and install modules manually
Gondii: Can you paste the error that you get when trying to install panda on gist.github.com (or some other paste site) 04:51
?
(If you get it again) 04:52
Gondii at the page you liked, there is a describtion how to install it on windows... so I shall type this "git clone --recursive git://github.com/tadzik/panda.git" in my console... but "git" is no command and I don't know how to execute that line
linked* 04:53
PerlJam ah. You have to first install git. See msysgit.github.io/ maybe. (caveat lector, I don't use windows, so I have no first-hand knowledge of using git there) 04:54
Gondii Alright, that sounds good, that might be the software that provides the command 04:55
PerlJam Gondii: you could ask on #git for the "most popular" solution to using git on windows. I just remember msysgit from other people getting help there. 04:56
[Coke] you can probably download a snapshot of that repo from github 04:58
but you'll need git installed for panda to download anything else...
Gondii installing git now... can't be so complicated... and then I'll just execute the commands written at github.com/tadzik/panda ... that should fix the error I got 05:01
seems to work... 05:05
PerlJam excellent 05:09
Gondii looks good, the tests all passed
[Coke] Gondii++ 06:14
moritz good morning 06:31
labster good morning
FROGGS ohh noes!! 08:00
perl -E 'say -e "CHANGES" && -s _'
22849
why?
FROGGS moritz: will my blog show up here? planeteria.org/perl6/ 08:25
masak good antenoon, #perl6 08:45
FROGGS hi masak 08:47
moritz FROGGS: it seems my changes to the feed list were lost; trying again now 09:01
FROGGS moritz++
:o)
itz_ anyone know how to use a ipv4 socket only (not ipv6)? 10:24
I'm trying my $s = IO::Socket::INET.new(:host<feather.perl6.nl>, :port(3000), :family(2));
but see "Cannot find method 'postcircumfix:<( )>'"
masak two questions about parsing, vaguely but not exclusively directed at TimToady: 10:32
(a) sublanguages. let's take HTML and JavaScript as an example. the <script>...</script> tags delimit the inner language, and the inner language doesn't really have a say in where it gets interrupted. how does this work in one-pass parsing? i.e. the JavaScript parser might be in the middle of a rule when the '</script>' shows up. 10:33
masak (b) failures and resumption. for a syntax highlighter it might be desirable to recognize an error (such as a '>' in the middle of an attribute string in a tag), flag it as an error and then *continue parsing from a different rule* -- in this case, we want to terminate the element rule but tentatively continue from outside of it. how is this notion captured in Perl 6 grammars? 10:36
moritz html/js isn't one-pass parsing 10:39
html is parsed first, then js 10:40
I don't see how it could be different here
vendethiel- WRT: recovering from failures -- please don't :P 10:41
moritz vendethiel-: it makes a lot of sese for syntax hilighters 10:45
not in a compiler
vendethiel- syntax highlighters shouldn't need it, because they should be much less complicated, imho
well, I talk with perf. in mind 10:46
masak I'm currently messing around with thoughts of syntax highlighting and AST-based refactoring. 10:47
masak I've realized that a big difference between those two processes is that the syntax highlighter is expected to be robust and resilient in light of failure. 10:47
masak but the refactoring tool requires an AST, which hinges on the parse tree forming properly. 10:48
moritz having never used a refactoring tool, what do those things usually do? 11:00
masak moritz: mark an expression, hit "extract variable". tool makes up a name (derived from context), inserts a declaration in an appropriate place, and replaces all occurrences of the expression with the fresh variable. 11:06
moritz: or similarly for "extract function/method" or "extract class".
moritz: or "turn constant into parameter" -- that one requires finding all callsites and inserting the extra argument, too. 11:07
masak needless to say, this is mostly done in languages with certain static guarantees. :) 11:07
though in all cases involving "replace stuff at callsites", the strongest guarantee tends to be "...in all the code we know of". 11:09
moritz masak: ok, thanks 11:11
vendethiel- masak: Intellij does that with ruby and php, and it works great :) 11:12
vendethiel- (the refactoring part, variable/method extraction, I mean) 11:22
masak sure. those two are unproblematic. 11:23
vendethiel- well, method renaming is, and then everything else 11:24
and yeah, that's where it starts to fall down. I renamed a controller action (rails project), and it changed all occurences of old_name to new_name in the whole project :B
masak one refactor I'd like in JavaScript (and Perls 5 and 6) is "make a type out of this ad-hoc hash". 11:25
vendethiel- (but to be honest, I just didn't check what it was going to replace, it's my fault)
moritz masak: +1
vendethiel- masak: what about "make an ADT of this ad-hoc hash" :P
masak vendethiel-: sure, occasionally that's what I want, too. 11:26
vendethiel-: but neither of those languages have native support for ADTs. (mostly missing destructuring)
vendethiel- masak: yah, but that's easy to fix through macros (for JS and Perl6) 11:27
(adt.js is a very powerful library)
(and matches.js provides the pattern-matching part) 11:28
masak macros, but mostly bundling up declaration, destructuring and tighter given/when semantics into a slang. 11:29
I'm eager to see us have the flexibility and power in Perl 6 to do that \o/ 11:30
concerted language extension is still the *one* field where I think Perl 6 will beat Perl 5 in a tortoise-vs-Achilles but very unmistaking way. 11:31
we have some of the building blocks, but we're not there yet.
vendethiel- is confident enough 11:42
(well, it's easy to be confident in others, right ?)
timotimo o/ 12:01
vendethiel- look at me mom, I've got 100 followers on gh now! 12:04
timotimo wow, how'd you manage that?
ah, you also do js
that explains it :P
vendethiel- timotimo: wow, brushing off all the time I put into open-source like that. 12:05
You boor.
tadzik huh? 12:10
vendethiel- (timotimo: plus it's not for the JS, it's for my work on livescript/coffee :<)
timotimo OK :) 12:15
vendethiel- ( timotimo: actually, at the fpw2014, Maddingue kept saying that jsers were hipsters. So for the rest of the day, I called myself a hipster -- works for me ) 12:18
tadzik hmm. I call myself a tech-hipster because I avoid everything that's widely used. How is JS a hipster language? It's used by everyone everywhere :o 12:27
vendethiel- tadzik: exactly because "hipsters" has degenerated to be a mockery 12:30
"hipsters" aren't people on the edge -- they're people thinking they're cool because they think they're on the edge 12:31
cognominal__ well, livescript and coffeescript are not exactely mainstream. And like Perl 6, their focus is to create a palatable concrete syntax.
jnthn TimToady_: Turns out that "my @a = 0 xx 500000" is 210 times slower than in Perl 5. It ends up using gather/take, like many other things. And it seems that even though it can sort of batch, we never ask it to. Applying gist.github.com/jnthn/ad3f630158cbe969b62a cuts the time it takes to less than half - but makes spectest way slower and probably busts laziness in various ways. 12:31
TimToady_: I'm fairly fed up of the lists code by now. It seems to pessimize for laziness, even though right at the top we know list assignment is mostly eager. 12:32
TimToady_: And it seems there's no model for passing down information like that, just "reify whatever", which seems to mean "do the safest but slowest possible thing". 12:34
I suspect I can make GatherIter batch much more efficiently by having take append to a buffer rather than take a continuation for every single darn element, but right now it doesn't seem to ever get called with a request to batch at all, meaning it makes a new GatherIter every element too. 12:36
As it stands, we do 500,000 exception throws, 500,000 continuation create/invoke sequences, 500,000 GatherIter creations, and 500,000 iterations of the "find something to expend" loop in ListIter. 12:38
FROGGS O.O 12:39
jnthn While Perl 5 is doing something like, allocate an AV with space for 500,000 SVs, and stick a zero in them - if that isn't already optimized out due to getting zeroed memory.
jnthn In fact, if you do the math, that means Moar can throw an exception, take a continuation, make an object and populate it, return it, do a bunch of other stuff, invoke that continuation again, resume from the exception handler...in 0.000025s. 12:46
(Amortizing the GC costs, etc.)
Well, and that's including building up a list of the results too. 12:47
masak \o/ 12:48
jnthn So I don't think the problem is down at that level. It's the darn lists design.
masak Moar, you so fast at doing lots of unnecessary work half a million times!
jnthn (Which has many good aspects, but really shows its weakness here, when we'd want to streamline a completely eager operation.)
masak aye. 12:50
jnthn tl;dr yes, gather/take is slow, but it's really because the primitives its built out of are, it's because the model we have means we can never tell it that it doesn't need to work in an utterly pessimal way.
uh, it's *not* really because the primitives are...
masak jnthn: is any of these blocking on pmichaud?
jnthn Yeah. Though, I think TimToady_++ understands the lists model better than I do.
masak jnthn: or is it a matter of thinking sufficiently hard on the problem, making a column of good things/bad thins
things* 12:51
with the current design, plus what we are currently missing?
jnthn masak: Well, yeah, it's a modeling problem really. 12:53
The model isn't sufficiently representative of the eager case.
masak *nod*
jnthn Which, given assignment is mostly eager, is overwhelmingly common. 12:54
smls So, separate Seq and List again? :P 12:55
jnthn I don't immediately see it as a "not enough types" problem. 12:56
Not to mention that folks already find Array vs List vs Parcel vs LoL quite enough to get their head around. :)
smls I'm starting to like Python 3's model of dealing with iterators in many places, *but* at the same time allowing built-in features like for loops to pretend that iterators are just lists
jnthn Anyway, so far as I can analyze this, until we can deal with this sort of lists issue, we're doomed to be slow at benchmarks like rc-self-describing-numbers and rc-forest-fire. 12:58
cognominal Somehow, pessimizing was a way to design Perl 6 to be capable to handle the lazy case, it has not to be the default everywhere. 13:00
colomon_ for what it's worth, I did some really cool stuff based around lazy lists earlier this month, involving reading in a file two lines at a time. I've been meaning to blog on it. 13:03
jnthn colomon_: I'm not saying they ain't cool, or ain't desirable. Just that we can't currently convey "this is eager" to enough places to be able to optimize those. 13:05
colomon_ jnthn: right, just trying to put in a good word for them. Of course, I want things to be faster, too…
smls LoL is needed so .[] can multi-dispatch based on type rather than having to introspect lists for multi-dimensionality, right?
jnthn colomon_: I'm pretty sure we can have both, it's just that the current model doesn't get us there. 13:07
smls and Parcel is needed to support run-time delayed flattening...
colomon_ Do we need to send someone to Texas for a few weeks? 13:08
jnthn Well, I suspect getting Pm, TimToady_, and me in the same room for some days with nothing to focus on except improving lists would yield results. Not sure how easy it is to make that happen. 13:09
colomon_ sounds kind of like a job for lizmat++ and woolfy++ 13:13
FROGGS jnthn: there is a chance for that in october, but there would be distraction 13:23
FROGGS I'd like to port Perl 5's lines() optimization within the next month... according to leont++ it is about 100 times faster than reading byte by byte 13:28
colomon_ lines() optimization?
colomon_ hopes we're not actually reading files byte-by-byte…. 13:29
colomon_ has just noticed he has an underscore now.
FROGGS colomon_: no, we probably read chunks and then split and concat
colomon_ how do you get 100x faster than that?
FROGGS colomon_: youtu.be/ybTFXG9HWUk?t=6m43s 13:30
I guess we are somewhere in the middle of Perl 5's complicated but fast version and the stupid one... 13:31
but I still thing there is something to improve there
think*
jnthn bah, turns out for (1 .. 10000000) { } failed to get the opt that for 1 .. 10000000 { } does 13:35
And the benchmarks put in the parens
FROGGS well, that is a good thing I think 13:44
so there are faster benchmarks to come :P
ChoHag At some point between yesterday and now I keyboard mashed and lowercased a random section of this source file. 13:45
masak ChoHag: thank heavens for (a) undo, (b) source control, or (c) backups! 13:48
ChoHag or (d) patience. 13:49
Its undo was lost in the mists of vim arcanity.
How can I put defined or undefined as checks (in addition to default) in a given block? 13:50
masak Python 3 picks infix:<@> for matrix multiplication. o.O -- asmeurer.github.io/python3-present...des.html#5
ChoHag Wasn't python basically a reaction to perl's line-noise-like use of symbols? 13:52
masak even looking past that, it's a weird match of symbol and meaning. 13:53
ChoHag Not if you think of matrix multiplication as some weird magic.
Then @ is quite applicable.
Because if you don't grok it, it is some weird twisty loopy thing.
masak I guess that's where I disagree -- I think of matrix multiplication as *multiplication* (that happens to not commute). 13:54
so, I dunno, infix:<*> feels appropriate.
ChoHag Well yes, and so do I,
masak mathematicians tend to treat matrices as a number type.
ChoHag Except you know the terms. I don't do nouns.
masak I think the modern noun is en.wikipedia.org/wiki/Module_(mathematics) 13:55
ChoHag But at one point I didn't have any idea how matrix multiplication worked. @ would have been a pretty good choice of symbol then.
ChoHag But anyway, since I agree completely agree and there is no argument, how do I treat undefinedness as a check in a given block? 13:56
!Any 13:57
?
masak could you rephrase your question? 13:59
is this about "how do I distinguish between 'caller passed undefined' and 'caller didn't pass anything'?" ?
jnthn FROGGS: Aye. Pushed it :) 14:00
ChoHag No.
masak m: constant NOT_PASSED = Any.new; sub foo($param = NOT_PASSED) { if $param == NOT_PASSED { say "not passed" } else { say "passed" } }; foo; foo 42 14:01
ChoHag This is 'How do I change if !$foo:defined { ... } to given $foo { when (?) { ... } }?'
camelia rakudo-moar ea396d: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤ in sub infix:<==> at src/gen/m-CORE.setting:4249␤ in sub foo at /tmp/IIjExIhJfC:1␤ in block at /tmp/IIjExIhJfC:1␤␤»
masak m: constant NOT_PASSED = Any.new; sub foo($param = NOT_PASSED) { if $param === NOT_PASSED { say "not passed" } else { say "passed" } }; foo; foo 42
camelia rakudo-moar ea396d: OUTPUT«not passed␤passed␤»
masak ChoHag: `when !.defined`
or `when not .defined`, I guess. 14:02
ChoHag Oh good that does it.
colomon_ is there a good way to trap hitting "use of uninitialized value of type Any in string context" in Moar using the debugger? 14:48
colomon_ I need to make my code stop outputing that before it drives me insaner. 14:48
ChoHag Why do I have a Capture (from 'method foo(|args) {...}') with named arguments (verified with 'say args'), but args.hash is an empty EnumMap? 14:51
jnthn m: class C { method foo(|args) { say args.hash } }; C.foo(a => 1, b => 2) 14:53
camelia rakudo-moar a9a500: OUTPUT«EnumMap.new("a", 1, "b", 2, )␤»
jnthn Not sure...it seems to work in that isolated example
ChoHag Hmm 14:58
The method in question is BUILDALL, if that makes a difference. 14:59
m: class C { method foo(|args) { say args.list } }; C.foo(a => 1, b => 2) 15:01
camelia rakudo-moar a9a500: OUTPUT«␤»
ChoHag m: class C { method BUILDALL(|args) { say args.hash;callsame } }; C.new(a => 1, b => 2)
camelia rakudo-moar a9a500: OUTPUT«EnumMap.new()␤»
ChoHag m: class C { method BUILDALL(|args) { say args.list;callsame } }; C.new(a => 1, b => 2)
camelia rakudo-moar a9a500: OUTPUT«"a" => 1 "b" => 2␤»
ChoHag Why does it do that? 15:02
colomon_ jnthn: how does one invoke the rakudo debugger these days? 15:03
ah, perl6-debug-m ? 15:06
hmmm...
jnthn ChoHag: BUILDALL doesn't receive a bunch of pairs
AT least, I don't think so
Think it's passed an actual hash.
colomon_: perl6-debug or perl6-debug-m, yeah. And make sure the debugger frontend is installed. 15:07
colomon_ jnthn: I'm not getting perl6-debug at all, just perl6-debug-m. (or whatever, for the other backendss0
jnthn ok 15:08
lizmat_ has dalek gone awol ?
colomon_ hmm… actaully, I'm not getting perl6 built either, just perl6-m. may be a rakudobrew thing? 15:09
jnthn colomon_: Not sure; maybe 15:10
lizmat_: yes
Well, had...
moritz there was no tmux session running 15:11
colomon_ jnthn: >>> LOADING /Users/colomon/tools/hw-dump-compare/diff-report.pl 15:12
Unhandled exception: ctxlexpad needs an MVMContext
:(
colomon_ same thing on linux as well. 15:17
tried a different script: 15:19
>>> LOADING /home/colomon/tools/hw-dump-compare/compare.pl
Unknown compilation input 'optimize'
carlin I can replicate that with this: perl6-debug-m -e "my constant $mm = 25.4 / 72;" 15:36
>>> LOADING -e Unknown compilation input 'optimize'
dalek kudo/nom: 8900d97 | jnthn++ | src/core/Str.pm:
Small optimizations to number parsing.
15:37
colomon_ carlin++ # always nice to know it's not just me 15:38
lizmat_ getting ready to checkout... 15:39
jnthn walk & 15:40
lizmat will probably do some hacking while watching the game NL - Mex
FROGGS jnthn++ 15:41
dalek is back \o/ 15:42
colomon_ feels terrible that he's mostly contributing bug reports to p6 these days.
FROGGS moritz++ I presume 15:43
moritz yes, I started it 15:46
carlin seems the debugger can't handle anything with BEGIN blocks 15:49
colomon_: does your code that it dies on use BEGIN, or constants? 15:50
lizmat checking out& 15:52
colomon_ carlin: not directly. it does load JSON::Tiny, not sure what's going on in there. 15:54
colomon_ has nearly tracked down his bug using say statements. 15:55
colomon_ has officially tracked down his bug 16:00
carlin \o/
japhb_ timotimo: Saw the highlight at irclog.perlgeek.de/perl6/2014-06-28#i_8944084 ... It was you that did that in the first place. :-) I'd be happy to change it; it always bugged me, but not enough to go editing over a co-author's work. Lets go with -moar, because short. 16:15
japhb_ goes to do that now, actually 16:19
timotimo i kinda thought i already tried to make them named the same 16:25
dalek rl6-bench: c306d57 | (Geoffrey Broadwell)++ | microbenchmarks.pl:
Curated tags for the microbenchmarks
16:28
rl6-bench: b933f73 | (Geoffrey Broadwell)++ | comp (2 files):
Rename nqp-moarvm component to nqp-moar

This is shorter and matches rakudo-moar. If you already have an active perl6-bench tree, you must either remove components/nqp-moarvm or rename it to components/nqp-moar. You should then run `bench setup` followed by `bench fetch` so that your components tree is back in a consistent state.
japhb_ ... and I guess I should point out that old timings files for nqp-moarvm aren't all that useful. :-) 16:30
jnthn japhb_: ooc, should perl6-bench work out of the box on Windows?
japhb_ jnthn: I would really like it to, but I don't have access to a Windows system to test on. (I'm not sure what kind of smiley to put on the end of that.) 16:31
jnthn japhb_: Well, I should probably have asked it like this: are you aware of anything that'd be a blocker for it working, or will it just be at worst niggly small things?
japhb_ I'm more than happy to access patches/PRs/collaborators. :-)
timotimo most of what it does should be shelling out to perl5 and then back to perl6 with some commandline flags 16:32
japhb_ I'm pretty sure it will mostly be niggly things. I didn't use much that would be non-portable.
jnthn ok
japhb_ By far the most likely issue will be bare / used when constructing commands to be run in a shell. 16:33
And that we can fix.
@history[*-4].subst(/access/, 'accept') 16:34
jnthn OK. I'll give it a try sometime. 16:35
ChoHag If I have given $foo { when ? { ... } }, what do I put in place of the ? to check against $foo and then, if that is true, something totally unrelated (which may have unwanted side-effects if the first check is not true). 16:47
ie. do what given $foo { when "foo" && $bar.is_bar { ... } } looks like it should do. 16:48
ie. do what it looks like 'given $foo { when "foo" && $bar.is_bar { ... } }' should do.
timotimo the argument to "when" is used with a "smart match" operator internally 16:49
one kind of thing you can smartmatch against is a block, that may be helpful here 16:50
japhb_ Oh interesting, I went looking for obvious sources of non-portability in perl6-bench, and found this in the build instructions for the perl5 component: "./Configure -des -Dprefix=`pwd`/install"
timotimo given $foo { when { $_ eq "foo" and $_.is_bar } { ... } } could work
but in that case, it'd probably be better not to use given/when
japhb_ Something tells me that won't work without change on Windows ....
ChoHag Ah good I can put { $_ ~~ "foo" && $bar.is_bar }
Can the $_ ~~ remain implicit somehow? 16:51
timotimo you can m/^ "foo" $/
ChoHag Right, but $foo is a Promise so it's actually the bareword Kept. 16:52
Are they still called barewords?
timotimo oh
i don't think we call them that
it's an enum value ... dunno what the nicest name for them is 16:53
ChoHag It works now though. Kept when $p is a type of foo, Kept otherwise, and Broken.
jnthn japhb_: yeah, that'll be an issue 16:54
japhb_ timotimo: 'enumerant'?
jnthn japhb_: That sounds like an angry speech about enums... :P
japhb_ :-D
smls_ How is it possible that the xx operator evaluates its argument repeatedly? (re rosettacode.org/wiki/Repeat#Perl_6) 16:55
Is is a macro?
jnthn The compiler thunks the LHS
smls_ *it
japhb_ Hmmm, unsure how to either A. fix the general problem presented by that perl5 Configure line, or B. hack it to make it magically work on both platforms. 16:56
smls_ jnthn: I mean more from a language design perspective, rather than compiler implementation wise
is it a special case in the grammar?
Or a general semantic than can be used by user functions?
japhb_ smls_: That *is* the design. xx thunks LHS. And we use 'thunks' in a conceptual way, not just implementation. 16:57
jnthn smls_: It's a special case, like || and && and // are too, for example
smls_: In userland you'd probably get such behavior by writing a macro
smls_ ok
jnthn Having to implement macros before implementing ||, xx, and so forth would be annoying though ;) 16:58
Most languages just special-case these sorts of things in the compiler.
vendethiel- (lazy eval ftw) 16:59
dalek kudo-star-daily: 19128e2 | coke++ | log/ (14 files):
today (automated commit)
17:08
rl6-roast-data: d1c7819 | coke++ | / (6 files):
today (automated commit)
dalek kudo/nom: c915622 | jnthn++ | src/Perl6/ (2 files):
Move return handler elimination to optimizer.

It already is doing the analysis we need to do a better job than it is possible to do in the actions. Thus, have the optimizer toss unneeded return handlers, and clean up Actions.pm quite a bit thanks to this.
18:18
masak infix:<xx> thunking its lhs is relatively recent.
vendethiel- oh, is it ? 18:19
vendethiel- used it in his first p6 program, but then, he's relatively recent here too ...
jnthn I remember it changing. I think I implemented the change, even. 18:21
Yesterday, while dalek wasn't watching, I popped in a patch that made it not bother to thunk if it's a compile time constant.
colomon_ \o/
vendethiel-
.oO( nobody expects the dalek disparition )
18:22
colomon_ wouldn't it be more like those blinky angels?
colomon_ is not a Doctor Who fan. 18:23
lizmat is back from watching the game and is waiting for the next one, after which we'll decommute& 18:24
jnthn guesses lizmat is quite happy with the result :) 18:25
lizmat woolfy is happier about it :-) 18:26
jnthn Didn't look like it was gonna go that way for a while
lizmat indeed... nobody expects the...
jnthn Ah, dang. So my patch ealier that tossed the return handler analysis from actions...
lizmat yeah> 18:27
?
jnthn ...breaks making inline_info available.
[Sno] the result was not a surprise - a team beating spain should kick out mexico without being on the place :P
lizmat jnthn: after your last patches, running spectests twice, I'm seeing spurious errors in unexpected tests 18:30
which only seem to happen during the parallel test and fully loaded CPU, not when run seperately
jnthn lizmat: Yeah, I've seen them become increasingly noisy 18:32
lizmat: More efficient code = less messing around = more likey for races to materialize, I guess.
lizmat yup
jnthn I'm planning to look into a bunch of those tomorrow 18:33
lizmat: btw, did you make any progress on our startup time? 18:41
lizmat yeah, I made it worse :-( 18:42
working on making it better again now
it appears that path.contents and path.basename are *very* expensive
jnthn Yeah :( 18:44
But glad you're working on it. It's quite a regression.
dalek kudo/nom: 77024fd | jnthn++ | src/Perl6/Actions.nqp:
Need returnless analysis in actions for subs.

This is needed to support making things statically inlinable. No need for it to analyze methods or macros, however. So, a partial revert of the removals in the previous commit.
18:45
grondilu feels like adding ome pointers about where to get more 18:53
oops wrong copy/paste
so, I was saying that I feel like adding rosettacode.org/wiki/Evaluate_binom...nts#Perl_6 to github.com/perl6/perl6-examples/tr...osettacode 18:54
(sub infix:<choose> { [*] $^n - $^p ^.. $n Z/ 1 .. * }) 18:55
colomon_ it is purty 18:56
vendethiel- is `is pure` doing something right now ? 18:56
vendethiel- I was thinking we could warn if a pure function is used in sink context 18:57
colomon_ m: sub infix:<choose> { [*] $^n - $^p ^.. $n Z/ 1 .. * }; say (5 choose 3).WHAT
camelia rakudo-moar 8900d9: OUTPUT«(Rat)␤»
colomon_ :\
m: sub infix:<choose>($n, $p) { ([*] $n - $p ^.. $n) div [*] 1 .. $p }; say (5 choose 3).WHAT; say 5 choose 3 18:59
camelia rakudo-moar 8900d9: OUTPUT«(Int)␤10␤»
colomon_ less magic, better type for result. but… not as elegant 19:00
FROGGS perl6-m -MCompress::Zlib -e 'say Compress::Zlib::Wrap.new( "Inline-v1.tar.gz".IO.open(:r) ).read(1)' 19:01
...
in method Str at src/gen/m-CORE.setting:12858
:o(
grondilu r: sub infix:<choose> { [div] [*]($^n - $^p ^.. $n), 2 .. $p }; say (5 choose 3).WHAT
camelia rakudo-jvm 8900d9: OUTPUT«(timeout)»
..rakudo-{parrot,moar} 8900d9: OUTPUT«(Int)␤»
colomon_ grondilu: if you're not careful, that one will give you the wrong result
m: sub infix:<choose> { [div] [*]($^n - $^p ^.. $n), 2 .. $p }; say (5 choose 3).WHAT; say 5 choose 3 19:02
camelia rakudo-moar 8900d9: OUTPUT«(Int)␤10␤»
grondilu std: say narrow 10/1
camelia std 0f2049c: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'narrow' used at line 1␤Check failed␤FAILED 00:01 123m␤»
colomon_ m: sub infix:<choose> { [div] [*]($^n - $^p ^.. $n), 2 .. $p }; say (5 choose 3).WHAT; say 6 choose 3
camelia rakudo-moar 8900d9: OUTPUT«(Int)␤20␤»
colomon_ m: sub infix:<choose>($n, $p) { ([*] $n - $p ^.. $n) div [*] 1 .. $p }; say (5 choose 3).WHAT; say 6 choose 3
camelia rakudo-moar 8900d9: OUTPUT«(Int)␤20␤»
colomon_ huh 19:04
colomon_ realizes grondilu's code wasn't doing what he thought it was; but he still doesn't know what it is doing 19:05
oh
masak grondilu: +1 on adding that example
colomon_ yeah, that will work
grondilu though I whish there was a way to have the result be an Int
couldn't we have narrow as a sub as well? 19:06
dalek pan style="color: #395be5">perl6-examples: 8a4d87f | (Carl Mäsak)++ | best-of-rosettacode/balanced-brackets.pl:
[balanced-brackets] fix typo
19:07
vendethiel- m: my $a = 1; my $b = 2; say $a === $b; 19:09
camelia rakudo-moar 8900d9: OUTPUT«False␤»
vendethiel- m: my $a = 1; my $b = 1; say $a === $b;
camelia rakudo-moar 8900d9: OUTPUT«True␤»
vendethiel- oh, it's for mutable types 19:10
m: say (1, 2) == (1, 3); 19:11
camelia rakudo-moar 8900d9: OUTPUT«True␤»
ChoHag Is there an example of how to write and use postcircumfix:<( )> as a class (or role) method? 19:14
vendethiel- why do we have `lt` and `<` ? 19:16
they're for strings ? 19:17
vendethiel- WATs 19:18
colomon_ lt is for strings, < is for numbers, before is for whatever 19:24
if that was the question?
vendethiel- yeah, I don't see string sorting comparison that useful haha 19:25
dalek pan style="color: #395be5">perl6-examples: f19628b | (L. Grondin)++ | best-of-rosettacode/binomial-coefficient.pl:
adding binomial coefficient example
19:26
pan style="color: #395be5">perl6-examples: 912947a | (L. Grondin)++ | best-of-rosettacode/binomial-coefficient.pl:
fixed typo
pan style="color: #395be5">perl6-examples: c284d6a | (L. Grondin)++ | best-of-rosettacode/binomial-coefficient.pl:
fix formula
19:30
kudo/nom: 8ed248e | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/File.pm:
Eliminate use of .basename to gain back some speed
19:31
vendethiel- do list-associative operators flatten by themselves ? 19:33
moritz no 19:35
the comma is list-associative, and doesn't flatten
vendethiel- mmh.
then I'm just wondering what a($b; $c) means
jnthn m: class A { method postcircumfix:<( )>() { say 'omg invoked' } }; my $a = A.new; $a() 19:40
camelia rakudo-moar 77024f: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method postcircumfix:<( )> at /tmp/H2tNhMFpck:1␤ in block at /tmp/H2tNhMFpck:1␤␤»
jnthn ah, yeah
m: class A { method postcircumfix:<( )>($cap) { say 'omg invoked' } }; my $a = A.new; $a()
camelia rakudo-moar 77024f: OUTPUT«omg invoked␤»
vendethiel- just updated github.com/Nami-Doc/learnxinyminut...l.markdown 19:43
if I list every single operator, it's gonna be pretty long, hahaha
jnthn Good job y minutes is a variable :P 19:45
dalek osystem: e23f624 | (David Warring)++ | META.list:
Add CSS::Specification

This implements the W3C property specification grammar - www.w3.org/TR/CSS21/about.html#property-defs
19:47
vendethiel- I guess I'll stop at that point and start describing class. I'll most probably even move the associativity / kinds explanations down, along with the before/after and <=> stuff. 19:48
dalek kudo/nom: b80cf18 | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local/File.pm:
next LABEL seems to be more expensive than last
19:55
vendethiel- (the main problem with Perl 6 is that it has too much stuff for a "tutorial" to explain :P) 20:04
dalek kudo/nom: e602e68 | jnthn++ | src/Perl6/Optimizer.nqp:
Avoid messing up nqp::handle in block inlining.

This deals with most of the breakages that making block inlining a level 2 (default) optimization causes.
kudo/nom: f12ff54 | jnthn++ | src/Perl6/Optimizer.nqp:
Check for poisoned for trying to inline blocks.

Should, of course, pay attention to the analysis that's been done.
kudo/nom: a39c092 | jnthn++ | src/Perl6/Optimizer.nqp:
Make block inlining a level 2 optimization.

It's quite worthwhile; we've had it as a level 3 optimization for a long while now, applying it to the setting. perl6-bench also used it. For a while, lack of OSR in MoarVM meant it could make things worse in the odd case; now that's dealt with, and the issues that caused it to blow up a few spectests have been isolated, we'll try enabling it as a default optimization. Plenty of time up to release for testing.
no_libsoup_for_y On Windows x86_64 (with Rakudo Star 2014.04 and Cygwin x86_64), is it possible to use dir on a different drive (e.g. 'E:')? I may have configured something wrong, but /cygdrive seems to be nonexistent to Perl6. 20:17
*Windows 7 x86_64
FROGGS no_libsoup_for_y: you could chdir 'E:', no? 20:20
no_libsoup_for_y FROGGS: I feel dumb now, `chdir('E:/');` did the trick. Thanks! 20:23
FROGGS :o)
glad to be able to help
no_libsoup_for_y Thanks again. I've been exploring Perl6 for the past few days and so far I'm enjoying it. 20:24
FROGGS nice 20:24
FROGGS \o/ 20:28
I'm able to extract a tarball from CPAN! 20:29
FROGGS (a .tar.gz) 20:29
masak \o/
carlin O frabjous day! Callooh! Callay! 20:29
timotimo cool! :) 20:29
lizmat FROGGS++ 20:30
FROGGS and I just ported 50% of Archive::Tar :o) 20:30
I wonder what the rest does
lizmat :-) 20:31
jnthn FROGGS++
lizmat is about to lose the last power from her notebook's battery
and is too lazy to get the power supply
vendethiel- just use your psychic powers to make it come here :-) 20:32
FROGGS or ask wendy in your loveliest voice :o)
lizmat :-) 20:33
we need to leave the hotel shortly anyway...
jnthn lizmat: Safe travels home...or onwards :) 20:34
lizmat will look for my power supply when we get to the airport 20:34
dalek kudo/nom: 34bf025 | jnthn++ | src/Perl6/World.nqp:
Fix on-demand compilation wrapper block mark.

Accidentally marked the code itself as the dynamic compilation wrapper rather than the actual wrapper. This led to sub-optimal code-gen of lexical accesses for lexicals entirely within the code to compile.
20:35
lizmat catch you all later& 20:37
colomon_ o/
FROGGS gnight all 21:02
ChoHag Debug output: :(:())
Looks like a monkey.
jnthn 'night, FROGGS o/ 21:03
colomon_ \o 21:04
masak looks like a monkey with a monkey in its mouth. 21:09
'nacht, FROGGS 21:10
jnthn yo monkey, I heard you like... 21:10
dalek rl6-most-wanted: 7eac5ac | (David Warring)++ | most-wanted/modules.md:
Added CSS::Grammar (WIP) and CSS::Lite (OPEN)
21:16
rl6-most-wanted: b68e296 | (David Warring)++ | most-wanted/modules.md:
typo
21:17
dalek rl6-most-wanted: d141171 | (David Warring)++ | most-wanted/modules.md:
more typos!
21:20
dalek rl6-most-wanted: 18b14ed | (David Warring)++ | most-wanted/modules.md:
CSS::Lite => CSS:Tiny (oops)
21:26
jnthn It's not on the ecosystem, and I don't have tuits to make it happen, but anyone is free to take my work in github.com/jnthn/css-tiny-presenta...er/Tiny.pm and get it ecosystem'd. 21:27
Main remaining work is porting the tests.
jnthn would highlight (David Warring)++, but doesn't know if he's here or what his handle is ;) 21:29
masak think it's dwarring++ or some such. 21:38
vendethiel-
.oO( I should make that ++ part of my username )
21:53
vendethiel--
.oO( I'm a terrible user )
21:54
carlin vendethiel--++ 21:57
vendethiel carlin: that's undefined behavior :P 21:57
carlin m: 42--++ 21:58
camelia rakudo-moar 77024f: OUTPUT«Cannot assign to an immutable value␤ in sub postfix:<--> at src/gen/m-CORE.setting:4558␤ in block at /tmp/zVKZJJNceA:1␤␤»
vendethiel m: my $a = 42; say $a++--; 21:59
camelia rakudo-moar 77024f: OUTPUT«Cannot assign to an immutable value␤ in sub postfix:<--> at src/gen/m-CORE.setting:4558␤ in block at /tmp/bejLNvoV9j:1␤␤»
firefish Good day everyone. I am new to perl6 and have a question regarding method calls with Hash slurping and numeric keys... 22:01
with the " method HashSlurper (*%Hash) { ... } " and call " $Class.HashSlurper( 1 => 'Val 1' , 10c => 'Val 2', In => @Lines ) " are numeric keys, or rather, keys that start with numbers not allowed? (Is it trying to create a variable named $1 ? Can I pass these as keys without a named hash)
jnthn No, named parameter names - weird tricks aside - need to follow the usual rules about identifiers 22:08
(which can't start with digits)
firefish Thanks jnthn, I guess I will need to add some prefix or pass a hash. 22:12
jnthn firefish: There is a special syntax like :1st which makes a named arg like st => 1 22:16
firefish: It's typically used by regex-y things, like .match(/pattern/, :2nd) or so
But made available for general use
Not sure that helps in this case, mind. 22:17
masak 'night, #perl6 22:24
firefish Thanks, It's good to know for future reference. Although in this case prefixing the numbers is probably easier (one less character, plus I was already using type suffixes ) 22:25
ChoHag I have a method which returns '@(%!foo.values, %!bar.value, %!baz.values, self.frobnicate).uniq; 22:29
I know it can look less long-winded but I can't get it to.
colomon_ maybe (%!foo, %!bar, %!baz)>>.values ? 22:30
colomon_ has not tried that, and it might try to go hyper into the various hashes instead of on them. 22:31
colomon_ is pretty sure the rules on doing that have changed at least once since he started working with p6
liztormato has boarded 23:37
See you in the other side of the pond
cognominal In rakudo token code for pod, we see many times : '<'+ <![<]> 23:43
Why the <![<]> part would be necessary knowing that token do ratchet? 23:44
* does 23:45
cognominal github.com/rakudo/rakudo/blob/nom/...r.nqp#L618 23:46