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 :) |