geekosaur keeps wanting to look at boxing/unboxing analysis and optimizations based on it, but has not enough reliably available time :/ 01:01
also I suspect it would mean that code generation would have to change a lot in able to take advantage of it
(and then there's the question of whether it would confuse spesh enough to lead to pessimization)
samcv not sure why returns has to be deprecated, i mean. it's basically the same thing as --> right. i mean we have && and `and` 04:34
geekosaur it's not 04:36
aside from the fact that --> is in the .signature, there are some other places where returns and --> do different things apparently
samcv and we have `is raw` and etc and i thought it seemed natural reading the line 04:37
sub foo ( ) is export returns Str
hmm.
i mean if we want --> to be the `proper form` we could state that in the docs 04:43
or real form or something and that `returns Str` is syntatic sugar for it or something
but i don't think we should remove it
i think having warnings is going to far, but we could heavily tout it in the docs and mention the `returns` as an aside because people will encounter that reading existing code 04:46
geekosaur I perso ally prefer returns because it stands out more 04:47
the --> is buried
samcv yeah i think so too
lizmat samcv: && and 'and' are *not* the same, they have differente precedence 09:40
samcv yeah i know that
but they're mostly the same
you put returns and --> in different locations, so they aren't identical either syntatically. so i thought it was a not terrible comparison 09:41
lizmat m: say .prec<prec> for &[&&],&[and]
camelia l=
d=
samcv so high letter is high prec 09:42
d sounds pretty low
lizmat yeah
samcv m: say .prec<prec>.uc for &[&&],&[and]
camelia L=
D=
lizmat m: sub a() returns Int {}; dd &a.signature # appears to set the signature 09:43
camelia :( --> Int)
lizmat I think TimToady wants to get rid of "returns" because it is more verbose, and its visual position in the code may make it seem like it is part of the Block, rather than part of the Signature of the Block 09:44
masak at least at some point, `-->` and `returns` were slightly different semantically 09:45
samcv hmm, i always asumed it was not part of the block and was a part of the rest of the signature 09:50
since putting it inside the parens just looks kind of ugly and visually more work to look at 09:51
Geth rakudo: vendethiel++ created pull request #1038:
update name in CREDITS file
09:58
rakudo/nom: 7380215fc5 | ven++ | CREDITS
update name in CREDITS file
10:00
rakudo/nom: cc9192f225 | lizmat++ | CREDITS
Merge pull request #1038 from vendethiel/patch-1

update name in CREDITS file
IOninja fwiw, even right now returns doesn't do all the things --> can 10:12
m: sub (--> -42) {}().say
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed return value
at <tmp>:1
------> 3sub (-->7ā5 -42) {}().say
IOninja uuh
moritz m: sub (--> 42) {}().say
camelia 42
IOninja Nevermind. I thought that worked /o\
moritz works only for simple literals, not expressions
m: sub () returns 42 {}().say
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed trait
at <tmp>:1
------> 3sub () returns7ā5 42 {}().say
moritz m: sub () returns Int {}().say 10:13
samcv interesting
IOninja It's supposed to work for -42 too
camelia Nil
IOninja But yeah, at least returns 42 don't work. So I was right :)
samcv i can't find the source for sym 10:19
oh wait hold on. need to up my regex game. but if anybody knows where <sym> token is
jnthn The thing that implements <sym> to match whatever's in the :sym<foo>?
samcv yeah 10:20
jnthn Probably handled in P6RegexActions somewhere in an assertion action method
samcv token quote_mod:sym<w> { <sym> }
jnthn yup: github.com/perl6/nqp/blob/master/s...s.nqp#L559
samcv from Grammar.nqp
thx jnthn 10:21
jnthn It's just rewritten at compile time
samcv ah
jnthn Into $<sym>=[w]
Or some such
Well, same AST that'd be produced
liAealneDx NeuralAnomaly: status
NeuralAnomaly liAealneDx, [āœ˜] Next release will be in 2 days and 18 hours. Since last release, there are 57 new still-open tickets (2 unreviewed and 0 blockers) and 5 unreviewed commits. See perl6.fail/release/stats for details
samcv is that because it happens too early in the setting?
jnthn Think just because it's the most sensible place to implement it :) 10:22
It's meant to be declarative 10:23
So it needs to be handled then
Rather than introspection at runtime
(Which would also be really slow, though it's the declarative aspect that means it really has to be resolved at compile time) 10:24
Geth rakudo/nom: 47a2a425dd | (Elizabeth Mattijsen)++ | 26 files
Eradicate returns in favour of -->

Since there is talk of deprecating the "returns" syntax, I thought it would be a good idea to see what would happen if we did this to the setting.
This spectests clean. Please revert if considered too close to the release.
10:51
lizmat jnthn: re "nqp::semtryacquire(self) ?? True !! False", any reason you didn't use nqp::p6bool() there ? 10:52
hmmm... timotimo ^^^ :-)
fwiw, I've seen a lot of signatures claiming to e.g. return Int rather than Int:D 10:53
when clearly Int:D was intented
*intended
.oO( too much int in that lne )
10:54
samcv lizmat, type checking will just fail right?
lizmat it won't fail if it returns a type object by some chance 10:55
samcv i mean it would only not return defined if a problem happenend in it right, or is there something i don't know about smiliey
lizmat otherwise it will fail as expected
samcv yeah
lizmat I think most of those signatures predate :D and :U as typecheck options 10:56
samcv can you coerce that way?
m: sub thing ($blah --> Cool (Str)) { return 10 }; say thing('hi')
camelia 5===SORRY!5=== Error while compiling <tmp>
Type 'Cool' is not declared. Did you mean 'Bool'?
at <tmp>:1
------> 3sub thing ($blah --> Cool7ā5 (Str)) { return 10 }; say thing('hi')
samcv heh and when you try Bool it says Bool isn't declared did you mean Cool
m: sub thing ($blah --> Bool (Str)) { return 10 }; say thing('hi')
camelia 5===SORRY!5=== Error while compiling <tmp>
Type 'Bool' is not declared. Did you mean 'Cool'?
at <tmp>:1
------> 3sub thing ($blah --> Bool7ā5 (Str)) { return 10 }; say thing('hi')
lizmat weird 10:57
IOninja m: sub thing ($blah --> Str(Cool)) { return 10 }; say thing('hi') 10:58
camelia 10
IOninja no space; and the thing to coerce from goes inside
samcv ah thx IOninja
lizmat okmij.org/ftp/papers/LogicT.pdf # masak jnthn TimToady might be interested ?
samcv m: sub thing (Str(Mu) $var --> Int(Mu) ) { $var }; thing(10).WHAT.say 11:01
camelia Unable to coerce the return value from Mu to Int; no coercion method defined
in sub thing at <tmp> line 1
in block <unit> at <tmp> line 1
samcv m: sub thing (Str(Mu) $var --> Int(Cool) ) { $var }; thing(10).WHAT.say
camelia Unable to coerce the return value from Cool to Int; no coercion method defined
in sub thing at <tmp> line 1
in block <unit> at <tmp> line 1
samcv m: sub thing (Str(Mu) $var --> Str(Cool) ) { $var; 10 }; thing(10).WHAT.say
camelia WARNINGS for <tmp>:
Useless use of $var in sink context (line 1)
(Str)
samcv well at least it works for some things
brrt .ask nine if he had any plans on going to polyconf 12:00
yoleaux2 brrt: I'll pass your message to nine.
IOninja m: sub thing (Str() $var --> Int(Str) ) { $var }; thing(10).WHAT.say 12:05
camelia Unable to coerce the return value from Str to Int; no coercion method defined
in sub thing at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja m: sub thing (Str(Int) $var --> Int(Str) ) { $var }; thing(10).WHAT.say
camelia (Int)
IOninja well-weird 12:06
brrt so, i think it may be a good idea to give a talk at yapc::eu^W the european perl conference 12:07
but i'm wondering if everybody isn't already quite bored with it
DrForr Bored with the conference? With the talk? 12:08
brrt with my potential talk topics, which is quite a narrow speciality 12:09
DrForr Well, I submitted "Notes from the Trenches" (what I did at FOSDEM), a new one on Machine Learning and either a full day or 2-hour "intro" course. 12:10
brrt hmmm 12:11
DrForr And by "new" I mean I'm not sure if it's possible to do it yet :) 12:12
Geth rakudo/nom: 85743228e0 | (Elizabeth Mattijsen)++ | 41 files
Add :D to return type where it was obviously intended

Spectests clean, please revert if considered too close to release.
12:13
IOninja lizmat: FWIW the two changes in src/core/CompUnit/Handle.pm have "# The EXPORTHOW package from the UNIT of the compilation unit; # a Stash type object if none." comments above them. Are those outdated? 12:24
lizmat IOninja: feels more like a question you should ask ugexe nine :-) 12:26
I just looked at the code, not at its meaning :-)
IOninja .ask nine all the comments in this file say "return blah *type object* if none..." but all the codes return Nil. Is the code wrong or are the comments wrong? github.com/rakudo/rakudo/blob/nom/.../Handle.pm 12:32
yoleaux2 IOninja: I'll pass your message to nine.
lizmat will ba afk for a few hours at least 12:43
Geth roast: b4d4df1e09 | (Zoffix Znet)++ | S03-operators/ternary.t
Remove tests for ā‡ ā€¼

  See rt.perl.org/Ticket/Display.html?id=131002
The tests were added recently and are not part of 6.c-errata
This reverts commit b8965869d22f2e24a41aa5c10eef81563cf9d888.
13:32
IOninja ZOFVM: Files=1228, Tests=132839, 132 wallclock secs (22.20 usr 3.48 sys + 2504.87 cusr 294.97 csys = 2825.52 CPU) 13:53
Geth rakudo/nom: 9644fc360f | (Zoffix Znet)++ | src/Perl6/Grammar.nqp
Remove ā‡ā€¼ Unicode ternary operator

  See rt.perl.org/Ticket/Display.html?id=131002
ugexe IOninja: the comments are outdated yes. See: github.com/rakudo/rakudo/commit/88...8e7310208e 14:01
Geth rakudo/nom: e1357ac6c3 | (Zoffix Znet)++ | src/core/CompUnit/Handle.pm
Update info in the comments to match reality

Code switched to use Nil in
  github.com/rakudo/rakudo/commit/ā€‹8...1d673ae5a4
14:10
IOninja ugexe: thanks
.tell nine never mind. ugexe++ found the answer in github.com/rakudo/rakudo/commit/ā€‹8...1d673ae5a4 and I updated the comments
yoleaux2 IOninja: I'll pass your message to nine.
timotimo one thing i never thought about: p6bool can be speshed (because we have hooks for spesh in extops) but not jitted (because these hooks will only be available once even-more-jit is merged and that feature is added) 16:02
lizmat timotimo: so that implies that p6bool should not be used in hot code paths ? 16:22
timotimo good question 16:23
if the ternary operator is much more expensive than turning the whole thing into an interpreted frame ... it could be the other way around
without measurements, i really can't say
lizmat preliminary tests: nqp::p6bool is about 2.3x slower 16:28
IOninja that ?? !! ? 16:29
*than
lizmat m: my int $a; for ^1000000 { my $ = $a ?? True !! False }; say now - INIT now
camelia 0.53784421
lizmat m: use nqp; my int $a; for ^1000000 { my $ = nqp::p6bool($a) }; say now - INIT now
camelia 0.6436974
timotimo okay, but the bigger that frame gets, the stronger the benefit of jitting the whole thing, maybe? 16:30
so yeah, in really tight loops it's probably better to use the ternary
lizmat that's so counter-intuitive :-)
timotimo thinking about it a little bit more, we can probably provide a hook for extops to get "simple" jitting going 16:31
p6bool is a very simple function call, after all
we wouldn't have to make moar's minilua + dasc-to-c pipeline available that way 16:32
lizmat we got 222 occurrences in the setting of p6bool :-(
timotimo that sounds like it'd be a lot more work to convert all of these properly than it would be to make the simple jit extendable
lizmat feels like it :-)
OTOH, it would improve readability of the setting :-) 16:33
timotimo well, when p6bool is jitted it might be a whole lot cheaper
lizmat I mean, would that improve it beyond ?? True !! False ?
timotimo when it's exprjit-jitted it'll be a bit faster still
no clue :<
of course, adding a piece of API from moarvm that is to be used from rakudo requires a little bit of compatibility-checking or what have you 16:36
brrt let me think about that for a bit 16:37
timotimo investigates further
oh yeah, it totally gets jitted already 16:38
brrt yea
but
that's not a very good JIT, i'd add
Geth roast: FCO++ created pull request #252:
Fix test for #130998
17:13
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
Geth rakudo: FCO++ created pull request #1039:
Fix #130998
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
Geth rakudo/nom: f94a2c734b | (Timo Paulssen)++ | src/vm/moar/Perl6/Ops.nqp
make p6bool aware of lexicalref, improving perf with natives

ought to close the performance gap between ?? !! and p6bool op.
17:22
rakudo/nom: 3de5fb24c9 | (Zoffix Znet)++ | src/core/Bool.pm
Fix crash on Bool:U.Str

Do not add the proto, as that shadows the Mu.Str one that handles the :U case for us.
Part of fixing RT #130867
  rt.perl.org/Ticket/Display.html?id=130867
Several other methods being added in the same code area are an issue as well, but when I tried to remove a chunk of them, I got compilation failures with Numeric...
18:36
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130867
roast: de5f00b909 | (Zoffix Znet)++ | S02-types/bool.t
Test Bool:U.Str does not crash

RT #130867: rt.perl.org/rt3//Public/Bug/Displa...?id=130867 Rakudo fix: github.com/rakudo/rakudo/commit/3de5fb24c9
18:38
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130867
rakudo/nom: e1ebb503c6 | (Fernando Correa)++ | src/Perl6/Grammar.nqp
Fix #130998
20:02
rakudo/nom: ee0b6d173c | lizmat++ | src/Perl6/Grammar.nqp
Merge pull request #1039 from FCO/fix-130998

Fix #130998
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
lizmat hmmm... seems we have a spectest error in integration/weird-errors.t, last test 20:16
Geth roast: 1674c23c9b | (Fernando Correa de Oliveira)++ | integration/weird-errors.t
Fix test for #130998 (#252)
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
IOninja lizmat, ^ that should fix it 20:17
it was a bad test that was accidentally testing a buggy result and SmokeMachine++ just fixed that bug in the PR you merged 20:18
lizmat IOninja: oki 20:25
timotimo IOninja: i'm glad you're trusting JSON::Fast to handle data from the wide internets 22:09
how do you come up with your version numbers? :) 22:10
maybe i'll be able to figure out the memory hogging thing of JSON::Fast that whateverable found 22:19
i wonder if i should change the description of json::fast 22:32
a naive imperative json parser in perl6, to evaluate performance against JSON::Tiny Edit
Add topics
oops
Geth roast: FCO++ created pull request #253:
Test for 130998
22:56
roast: 79e9f56c6f | (Fernando Correa)++ | integration/weird-errors.t
Fix test for #130998
23:01
roast: 156f15d686 | (Fernando Correa)++ | S13-overloading/metaoperators.t
Add test for #130998
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130998
roast: c337a9534b | lizmat++ | S13-overloading/metaoperators.t
Merge pull request #253 from FCO/test-for-130998

Test for 130998
IOninja timotimo: I use semver and start at 1.001001 unless it's a big project that needs thinking and then I start at 0.001001 23:02
timotimo OK
but we allow you to use as many . as you need
IOninja I like normal numbers. 23:05
Geth nqp: c710edc313 | (Samantha McVey)++ | tools/build/MOAR_REVISION
Bump MoarVM to get new indexic op

MoarVM commits pulled in by this bump: 6954d203 Merge pull request #550 from samcv/indexic_s e05f3960 Use MVMROOT to make sure we don't GC haystack or needle 1a5ee0da Add indexic_s Op, calls MVM_string_index_ignore_case 9ac53146 Set update_ops.p6 as executable and add perl6 shebang ... (5 more lines)
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...-g6954d203
19c1885fce | (Samantha McVey)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp

This op has the same arguments and functionality as nqp::index, except it is case-insensitive. For now we only have it under MoarVM, but the plan is to support it on other platforms as well.
On MoarVM uses proper Unicode foldcase type comparison.
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...-g6954d203
bcfb6e5b04 | (Samantha McVey)++ | docs/ops.markdown
samcv IOninja, Geth is best :)