Geth roast: 6c42b17ba7 | (Martin Ryan)++ | S02-types/int-uint.t
Add tests for type byte

  See RT #276
04:10
roast: 7b3edb289a | (Martin Ryan)++ (committed using GitHub Web editor) | S02-types/int-uint.t
Merge pull request #332 from mryan/byte-type

Add tests for type byte
roast: mryan++ created pull request #333:
Add tests for $*INITTIME
05:40
[Tux] This is Rakudo version 2017.09-85-gebd6440c2 built on MoarVM version 2017.09.1-36-gfbd89898 06:12
csv-ip5xs 1.316 - 1.447
test 9.988 - 10.100
test-t 3.506 - 3.556
csv-parser 12.545 - 12.824
Geth roast: d67a3ca396 | (Martin Ryan)++ | S28-named-variables/inittime.t
Add tests for $*INITTIME

  See RT #296
08:48
roast: ae62664e3e | lizmat++ (committed using GitHub Web editor) | S28-named-variables/inittime.t
Merge pull request #333 from mryan/init-time

Add tests for $*INITTIME
lizmat Files=1229, Tests=75177, 309 wallclock secs (14.68 usr 5.31 sys + 2127.23 cusr 218.70 csys = 2365.92 CPU) 08:50
eater hehe 09:18
m: DEPRECATED("the garbage bin") 09:19
camelia ( no output )
eater asks himself where the output went
Zoffix eater: deprecated can be disabled with an env var, which the bot has enabled 09:21
eater hehe
lizmat m: %*ENV<RAKUDO_NO_DEPRECATIONS>:delete; DEPRECATED("the garbage bin") 09:22
camelia Saw 1 occurrence of deprecated code.
================================================================================
Block <unit> (from unknown) seen at:
<tmp>, line 1
Please use the garbage bin instead.
-------------------------------------…
eater :D
Zoffix :)
eater tbh kinda suprised I could call that in "user"-land
Zoffix m: sub f is DEPRECATED('the garbage bin') {}; f 09:23
camelia ( no output )
Zoffix m: %*ENV<RAKUDO_NO_DEPRECATIONS>:delete; sub f is DEPRECATED('the garbage bin') {}; f 09:24
camelia Saw 1 occurrence of deprecated code.
================================================================================
Sub f (from GLOBAL) seen at:
<tmp>, line 1
Please use the garbage bin instead.
---------------------------------------------…
lizmat deprecations are collected until END time: only then the env variable is checked
eater Zoffix: ah, then it makes sense you can call that function from userland
private multi methods aren't allowed? 09:29
why so?
Zoffix Not implemented
yet
eater ah, not a technical limitation? 09:30
Zoffix ZOFFLOP: t/spec/S17-procasync/kill.t 09:40
t/spec/S32-io/IO-Socket-Async.t fails for me: "`Failed to resolve host name '::1'. Error: 'Address family for hostname not supported'`"
cuonglm Zoffix: Do you know where the code of `-n` command line flag? 09:42
I found it was added to main here github.com/rakudo/rakudo/blob/nom/...in.nqp#L22
Zoffix cuonglm: not off hand. MasterDuke would know 09:43
eater Zoffix: let me see
I may have broke that
cuonglm Zoffix: Yeah, I saw that LAST seems not work with `-n` 09:44
Geth rakudo/nom: 3f0f321469 | (Zoffix Znet)++ | src/core/Exception.pm
Remove trailing whitespace
cuonglm Zoffix: echo 1 | perl6 -ne 'LAST .say' prints nothing
sounds like the code isn't wrapped inside a loop like Perl 5 09:46
Zoffix cuonglm: there's a ticket: rt.perl.org/Ticket/Display.html?id...et-history 09:47
cuonglm: it's likely wrapped into nqp loop and the LAST handler isn't installed
ilmari looks like none of the block/loop phasers are set up 09:48
Zoffix cuonglm: like was the case here: github.com/rakudo/rakudo/commit/3b...f234c5ba3d
oh wait, those ain't phasers
never mind
ilmari )$ echo 1 | perl6 -ne 'ENTER .say' 09:49
===SORRY!===
Cannot reference undeclared local 'enter_result__1'
cuonglm ilmari: I saw it was setup, with output of --target=optimize 09:50
but in wrong scope 09:51
Zoffix m: Rakudo::Internals.REGISTER-DYNAMIC: '$*Z', { say "meow"; }; say $*Z; say $*Z
camelia meow
True
meow
True
Zoffix oh, nm (had a question but found what I did wrong)
eater how do I run single tests within rakudo again? ? 09:54
Zoffix t/fudgeandrun some-test.t
eater sometests doesn't seem to be generated in my Makefile?
ah
cuonglm .tell MasterDuke can you tell me where is the code for `-n` command line flags 09:56
yoleaux cuonglm: I'll pass your message to MasterDuke.
eater Zoffix: stupid question but do you have IPv6 support on your machine? (at least, does your loopback interface have it) 09:58
Zoffix eater: how can I find out? 09:59
eater what OS are you on?
Zoffix Debian
eater Zoffix: `ip address show lo` 10:01
if that show an error it's just the first entry in `ip address show`
there should be an 'inet 127.0.0.1/8' for IPv4 and 'inet6 ::1/128' for IPv6 10:02
ilmari cuonglm: Perl6::Actions::wrap_option_n_code()
cuonglm ilmari: thanks ++ 10:03
ilmari the comment says «Turn $code into "for lines() { $code }"», but to me it looks more like lines().map($code)
i.e. not a loop
m: (1..3).map({ LAST say "last" }) 10:04
camelia last
ilmari ah, no, loop phasers do work with map
Zoffix 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
eater: ^
eater there are no addresses assigned to it? :o 10:05
cuonglm ilmari: I'm not sure, but I think that LAST phaser was installed in wrong scope
Zoffix inet6 ::1/128 scope host
cuonglm ilmari: I missed perl -MO=Deparse :)
Zoffix eater: full output: gist.github.com/zoffixznet/2ead25c...77227bda11
eater hmmm
weird
cuonglm ilmari: the AST requires many knowledge about rakudo internal to understand 10:06
eater you have ipv6 at least :)
so lets see if I fucked something up
Zoffix huggable: swear jar
huggable Zoffix, Help Perl 6. Donate: donate.perlfoundation.org/
eater D:
teatime lol
eater Zoffix: you have that fail with rakudo/nom and moar/master ? 10:12
Zoffix eater: no, whatever moar the rakudo specifies as needing 10:13
eater but rakudo/nom?
Zoffix Yes.
nom+1 10:14
ZOFVM: Files=1280, Tests=152159, 143 wallclock secs (20.49 usr 3.34 sys + 2970.36 cusr 225.37 csys = 3219.56 CPU)
Geth roast: 84b48ec92b | (Zoffix Znet)++ | 2 files
Spec $*INIT-INSTANT
10:16
rakudo/nom: 6bdb2dd368 | (Zoffix Znet)++ | 3 files
Rename $*INITTIME to $*INIT-INSTANT

  - $*INITTIME was never specced
  - Use kebob-case as all of our other multi-word dynamics use
  - Encode the value type in the name
Part of 6.d-prep featurelist:
  github.com/perl6/6.d-prep/blob/mas...EATURES.md
10:18
Zoffix ^ (deprecate $*INITTIME for 6 months)
lizmat meh 10:19
:-)
Zoffix meh?
Geth 6.d-prep: 346b27c7ec | (Zoffix Znet)++ | TODO/FEATURES.md
Mark $*INIT-INSTANT as now implemented
10:20
lizmat was this discussed somewhere ? 10:21
I mean, I just merged tests for $*INITTIME 10:22
color me surprised, that's all
Zoffix Yeah, it was discussed on the Issue the PR mentioned.
Zoffix & for the rest of the day 10:23
lizmat *
eater Zoffix: :/ can't reproduce your failure 10:24
.tell Zoffix the tests pass for me even in a clean environment so your changes may have broke it? 10:50
yoleaux eater: I'll pass your message to Zoffix.
eater very helpful feedback ofc 10:51
~works on my machine~
lizmat "Object of type X::Comp in QAST::WVal, but not in SC"
I get this with the QAST generation part of Foo in "nqp::getattr(self,Foo,'$!a') = %init.AT-KEY('a')" 10:52
it now is "QAST::WVal.new( :value( nqp::atpos($task,1) ) )"
I guess I need to register that somewhere somehow? but where and how?
timotimo jnthn moritz ^^^
jnthn $*W.add_object iirc 10:55
yoleaux 24 Sep 2017 03:55Z <MasterDuke> jnthn: instead of github.com/rakudo/rakudo/pull/1171, could nqp::join return the input string if there was only one?
jnthn .tell MasterDuke I'm surprised join doesn't already know that trick! Yes, let's do that, it's far more general
yoleaux jnthn: I'll pass your message to MasterDuke.
lizmat jnthn: trying that
jnthn fwiw, probably won't be doing much useful today...got sick over the weekend, and improving but still got a horrible headache :/ 10:59
Zoffix eater: just built HEAD on my home Bodhi Linux box (fork of Ubuntu, which is a fork of Debian) and the test passes there. So the failure is due to some setup of the VM; would be nice if the test could be skipped when whatever that condition is exists 11:00
yoleaux 10:50Z <eater> Zoffix: the tests pass for me even in a clean environment so your changes may have broke it?
Zoffix VM => Google Compute Engine VM I was using where the test failure happened 11:01
eater >need google account
ffff
I rather find out what those conditions are tho 11:02
Zoffix If I'm the only one for whom the failure happens, then just leave it to me. I 11:04
If I'm the only one for whom the failure happens, then just leave it to me. I'll fix it later
lizmat jnthn: gist.github.com/lizmat/16e79ba1013...db7f767e49 # hopefully this will help with your headache
eater Zoffix: poke me if you need help resolving it :) 11:05
jnthn lizmat: # ?? not sure why this is 11:08
lizmat: That line is what attaches the block you produce into the AST :)
lizmat could it be because the class isn't composed at that time ? 11:11
jnthn Oh, you're still getting the error/ 11:16
That'd be odd in that type objects are created/installed right at the start
after the class Foo ...traits... { 11:17
lizmat right
hmmm... perhaps I need a decont
it's been through HLL land already then
nope :-( 11:20
from what I can tall, with .HOW.name, it *is* the object for which we're creating the BUILD 11:22
jnthn: what is the meaning of "$!w.cur_lexpad()[0].push($block);" 11:23
where $block is the Block of the method being created 11:24
jnthn Take the QAST::Block of the current scope, get its first QAST::Stmts node (which is where we install declarations), and push the block into it 11:26
It's just putting the QAST::Block you've created into the AST
So that it will be compiled as part of the overall program
lizmat jnthn: being a complete noob (again) at this, how do I take the QAST::Block of the current scope ? 11:28
jnthn: another issue I just realized: can you replace a method in an augment ? 11:33
if we're adding a BUILD method at compose time, we cannot add a possibly changed BUILD method when augmenting
m: use MONKEY; class Foo {}; augment class Foo { has $.a } # this appears to be legal 11:34
camelia ( no output )
jnthn $!w.cur_lexpad() gets the QAST::Block of the current scope 11:36
It's...barely legal
I'm a bit surprised it allows it, but I guess the actual constraint is loose enough that you get away with it if you never made an instance of the class 11:37
m: use MONKEY; class Foo {}; BEGIN Foo.new; augment class Foo { has $.a }
camelia ( no output )
jnthn Huh... 11:38
m: use MONKEY; class Foo {}; BEGIN Foo.new; augment class Foo { has $.a }; Foo.new
camelia ( no output )
jnthn m: use MONKEY; class Foo {}; BEGIN Foo.new; augment class Foo { has $.a }; Foo.new.a.say
camelia P6opaque: no such attribute '$!a' in type Foo when trying to get a value
in block <unit> at <tmp> line 1
jnthn Right, that clearly can't work, but where is the error going :S
lizmat so: we should disallow adding attributes on augment ?
jnthn It used to throw (at compile time) if you tried 11:39
I don't know when that regressed
lizmat ok, well, that's a relief 11:40
I guess we need to add a test :-)
jnthn github.com/MoarVM/MoarVM/blob/mast...que.c#L652 fwiw
lizmat well, I'll just make sure we don't try to change the BUILDPLAN or try to create a BUILD method when augmenting 11:43
er, I mean BUILDALL method :-) 11:44
jnthn: $!w.cur_lexpad()[0].push($block); # this is what you meant, right ? 11:53
that's already in the code :-(
jnthn: thinking about this though, isn't the lexpad of that World method at compile time not the wrong place ? 11:55
jnthn: RT #132157 fwiw 11:58
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132157
[Coke] samcv, jnthn : RT #132154 - my guess is that slurp isn't doing anything specific, it's just normal unicode \r\n normalization? 12:02
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132154
jnthn "Basically, slurp is changing \r\n to \n. This may seem like a reasonable thing, except that then it has to also change \r to \n." 12:06
Do we actually run on any platforms that use \r as the line ending?
Anyway, too headache to write it up now, but rejected.
\r\n => \n transformation is done consistently
DrForr Mac uses \r I believe. 12:07
jnthn DrForr: Yes, I know, and does anyone run Rakudo on a Mac? :)
stmuk classic MacOS < 10
yoleaux 24 Sep 2017 21:07Z <tbrowder> stmuk: please check the docs (Programs | Reading the docs | p6doc - the Perl 6 pod reader) and see if the blurb needs changes
[Coke] No, I don't think we have any p6 platforms that use that line ending. 12:08
jnthn (pre-OSX, I mean)
Right
We should add a :!translate-nl option at some point
DrForr Oh, that changed as of OS X? Ya learn something new every day...
jnthn All the guts for it are there, just needs exposin 12:09
*exposing
With translation enabled as the default
As it is today
Zoffix m: "foo\rbar".lines.say # I think the ticket primarily was created because Str.lines does split on bare \r 12:11
camelia (foo bar)
Zoffix And so you have the inconsistency that lines() gives you one thing, but slurp.lines gives another 12:12
[Coke] wonders how !translate-nl would work - you'd have an "invalid" Str at that point, no? (Something not in NFG) 12:13
jnthn Ah
I was more concerned with consistency with the rest of I/O
Which only does \r\n -> \n
[Coke]: There's two separate things here
[Coke]: \r\n becoming a grapheme is a normalization step 12:14
(And part of Unicode)
[Coke]: Translating the \r\n grapheme into \n is a separate step, and done as part of the definition "text mode" I/O
The proposed :!translate-nl would just contorl the second step 12:15
[Coke] ah, thanks.
jnthn *control
The first one, you're always going to be getting with a Str 12:16
lizmat jnthn: a progress report: it appears to happen only if atpos($task,1) !=:= the class for which we're creating the BUILDALL 12:57
this is the case if we e.g. have a subclass
lizmat tests a brainwave 12:58
yup, that's it 13:00
I was registering the Wval, but the original object should be registered :-) 13:01
jnthn Ah! 13:02
Yes :)
lizmat m: class A { submethod BUILD() { dd self } }; class B is A { submethod BUILD () { dd self } }; B.new # shouldn't that be A.new/B.new ??? 13:07
camelia B.new
B.new
lizmat jnthn: ^^^
I guess not... hmmm...
ok
sorry for the noise 13:08
jnthn: do we have some function that translates primspec to "i", "n", "s" respectively ? 13:11
jnthn No, usually I just make an array and index into it with the primspec result 13:14
lizmat yeah, I seem to be doing a lot of that lately :-)
progress report: native + opaque setting from %init now completed 13:57
afk for a bit& 14:13
timotimo only in compatibility situations though? 14:17
oops, wasn't scrolled down all the way
ugexe what are the valid values a package name part (e.g. Part1::Part2) can start with? 15:52
timotimo hm, i'd expect it's the same rule as identifiers 15:53
ugexe seems likely, do you know what the rules for identifiers are? 15:55
timotimo i was expecting <alpha> followed by <alpha + numeric> 15:58
ugexe isnt emoji a valid identifier?
timotimo don't think so, aren't they "symbol"? 16:00
Zoffix Nope. You can make it a term though
Identifiers are `<.ident> [ <.apostrophe> <.ident> ]*`
timotimo m: say uniprop("☺")
camelia So
timotimo that counts as emoji, right?
m: say uniprop("☺", "Emoji") 16:01
camelia True
Zoffix where apostrophe is <[ ' \- ]> and ident is something from nqp
ugexe ah forgot about ' 16:03
Zoffix ident is \w 16:04
nqp checks for nqp::const::CCLASS_WORD
ugexe foo_::bar is ok, but not foo-::bar
Zoffix m: say 95.chr 16:05
camelia _
Zoffix and ident can only start with _ or nqp::iscclass(nqp::const::CCLASS_ALPHABETIC
ugexe ah ha, thats what i was after
cognominal nice landing page jnthn++ 16:06
Zoffix And there's something involving parentheses that I'm unsure of: github.com/rakudo/rakudo/blob/nom/...#L524-L543 16:08
timotimo cognominal: the cro one? 16:09
cognominal timotimo, this one jnthn.net/, the cro one is nice too 16:57
ilmari haha, ma.cro.services/ works too :) 17:00
and vel.cro.services/
(wildcard dns)++
cognominal ilmari, wish long life to Perl 6 so we don´t need ne.cro.services 17:03
Zoffix lol 17:09
timotimo oooh that's a cool front page, yeah 17:28
jnthn: a whole bunch of course page links on the "ourexpertdetails" page on you are 404 :( 17:32
jnthn timotimo: ooh, nice catch 17:40
jnthn passed it on to the folks who tend that site :) 17:41
Zoffix I'm just gonna rip out the temporary-fix commit. 18:03
There's a whole bunch of places with >= <= != ops that don't deal with Reals; trying to plug them al up feels iffy :/
Rip out the github.com/rakudo/rakudo/commit/a1...b1b5950faa I meant 18:04
I don't get why old version is slow at all. The `is pure` on the sub would've inlined the sub in static optimizer, no? 18:11
Zoffix builds and looks at ASTs
ZOFFLOP: t/spec/S29-os/system.t 18:21
ZOFVM: Files=1280, Tests=152159, 141 wallclock secs (21.29 usr 3.52 sys + 2831.09 cusr 221.26 csys = 3077.16 CPU)
Geth rakudo/nom: 1af2a745fc | (Zoffix Znet)++ | src/core/Numeric.pm
Revert "Temporary fix for RT #131626"

This reverts commit a13bad95b2e1ad48a1d1a023e84912b1b5950faa.
The commit breaks Version ≥ Version, Date ≥ Date, and possibly more. I looked at trying to plug up those candidates in a similar fashion, but seems quite messy and doesn't guarantee total fix. For something that's meant to be just temporary, feels like overkill.
18:25
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131626
roast: 1f6a182301 | (Zoffix Znet)++ | S03-operators/misc.t
Test ≤, ≥, and ≠ for non-Real values

Rakudo fix: github.com/rakudo/rakudo/commit/1af2a745fc
18:28
samcv . 18:32
Zoffix : 18:34
[Coke] 18:35
samcv good *
Zoffix \o 18:36
[Coke] good ⍟
Zoffix Ah, OK, static optimizer constant folds `is pure` ops only if args are known at compile time 18:45
Is constant folding the same thing as inlining/ 18:46
?
I guess not 18:47
lizmat no, constant folding is more like changing 1 + 2 to 3 so you don't have to do the addition at runtime 18:53
Zoffix Ah 18:54
lizmat [Tux]: is utf8-c8 now clean in your experience ? 18:55
Zoffix m: my constant &infix:«zof» = &infix:«>=»; for ^1000_00 { $ = rand zof rand }; say now - INIT now 18:57
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '&infix:<zof>' is not declared
at <tmp>:1
------> 3 = &infix:«>=»; for ^1000_00 { $ = rand 7⏏5zof rand }; say now - INIT now
Zoffix Can't use &foo as constants?
seems to work if you just use &foo instead of the &infix:«zof» 18:58
m: say 20.33786761/0.3678445 19:19
camelia 55.289307330
Zoffix ouch
^ that comit made those ops that much slower than Texas versions 19:20
Buut... good news. I have another "temporary" workaround that makes them just say 0.59670900/0.42650955 slower
m: say 0.59670900/0.42650955
camelia 1.3990519
AlexDaniel u: ≤ 19:21
unicodable6 AlexDaniel, U+2264 LESS-THAN OR EQUAL TO [Sm] (≤)
Zoffix And looks like pre-compit slowage factor was 1.43x, so I'd say it's it's a wash :D
.oO( Zoffix takes away and Zoffix giveth back )
19:22
ZOFFLOP: t/spec/S03-operators/misc.t 19:29
:S test dies with No such method 'CALL-ME' for invocant of type 'Sub+{<anon|47455808>}' 19:31
in block <unit> at t/spec/S03-operators/misc.rakudo.moar line 149
but if I run the code of the test alone it works
Oh. Way weird. ./perl6 -e 'say 5 ≤ 5'; works, but ./perl6 -e 'say 16 ≥ 8; say 5 ≤ 5' dies with that error :S 19:37
I just did stuff like `my &infix:«≤» = &infix:«<=»;` (and earlier had `BEGIN my &infix:«≤» = &infix:«<=»;`) in src/core/Numeric.pm
Geth rakudo/faster-mexico: 04612ba00a | (Zoffix Znet)++ | src/core/Numeric.pm
Make Mexico numeric ops 1.3x slower than 50x slower

Temporary workaround for RT#131626 to restore the benefit of
  github.com/rakudo/rakudo/commit/1af2a745fc
Got a weird bug in it where using one of the ops and then using another one of the ops crashes:
  irclog.perlgeek.de/perl6-dev/2017-...i_15214686
19:46
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131626
Zoffix relocates
timotimo "mexico" %)
Zoffix it's across from Texas :)
timotimo right 19:47
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/09/25/...-the-pool/ 20:02
Geth tap-harness6/master: 23 commits pushed by (Leon Timmermans)++
review: github.com/perl6/tap-harness6/comp...439b9ed661
20:19
lizmat jnthn: would it make sense to add the World.nqp / line number to the generated accessor methods so that it's clear where they originated? 20:29
jnthn: instead of "<unknown>:<unknown>" in stack traces / profiles ?
jnthn: if so, how to go about this?
timotimo you can attach a :node to specific qast nodes 20:32
that's what we use for line number annotations and such
it has to be a match object
the compiler cross-references the match object's position to where line endings are
lizmat ok, I think In need to grok this a bit more :-) 20:34
timotimo we could probably teach the compiler to accept a list of three things as line number annotations, too 20:38
like file, line, column
but i'm not sure how you'd get, for example, the line number that belongs to an attribute or something 20:39
lizmat I was thinking of using the file/line of the generator method 20:46
timotimo oh, the one that does the compiling? 20:49
lizmat yup
I mean, if you want to know what's going on in there, you would need to go there, not to some line in the class's source 20:50
timotimo right
not sure if that's so great 20:51
lizmat why ?
timotimo pointing people at the compiler's guts .. :\ 20:52
|Tux| lizmat, yes, I think it is. But I have had no time yet to actually implement the parts that would need it 20:55
lizmat timotimo: if someone takes the trouble at looking at stack traces that deeply, the deserve to see the guts :-) 20:56
[Tux]: ok, so fixed until you prove it not to be :-)
|Tux| yes 20:58
pmurias btw do we want to also have columns in back traces (in addition to line numbers) when they are available? (like on the js backend) 21:16
Geth nqp/master: 13 commits pushed by pmurias++
review: github.com/perl6/nqp/compare/cd588...a254cd808f
21:17
rakudo/js: 8 commits pushed by pmurias++
Zoffix m: my &infix:<foo> = &infix:«<=»; my &infix:<bar> = &infix:«>=»; say 2 foo 4; say 3 bar 1
camelia True
True
21:19
Zoffix hmm.. weird works here fine :/
m: my &infix:<≤> = &infix:«<=»; my &infix:<≥> = &infix:«>=»; say 2 ≤ 4; say 3 ≥ 1 21:20
camelia No such method 'CALL-ME' for invocant of type 'Sub+{<anon|53916432>}'
in block <unit> at <tmp> line 1
Zoffix give up your secrets, compiler... 21:22
timotimo m: my &infix:<lolol> = &infix:≪<=≫; say 1 lolol 2 21:23
camelia 5===SORRY!5=== Error while compiling <tmp>
Confused
at <tmp>:1
------> 3my &infix:<lolol> = &infix:7⏏5≪<=≫; say 1 lolol 2
expecting any of:
colon pair
timotimo oh, wrong kind of french quotes 21:24
m: my &infix:<lolol> = &infix:«<=»; say 1 lolol 2
camelia True
timotimo must have something to do with that one you have already being declared?
Zoffix The one in core? I get the same error if I change the core ones to ^ that declaration. I'm guessing it's something to do with the fact taht there are grammar rules for ≤ and the like, but none for `foo` 21:26
and grammar rules do things
teatime
Zoffix This core change gives same error: github.com/rakudo/rakudo/commit/04612ba00a
timotimo hmm 21:27
Zoffix Note that the error happens only when you combine it with another op. The op by itself works fine :S
s/combine/use another op in unrelated statement/;
Zoffix dinners
timotimo anything odd in the target=ast or target=optimize? anything --optimize=off does? 21:28
travis-ci NQP build failed. pmurias 'Test nqp::base_I with base 36' 21:30
travis-ci.org/perl6/nqp/builds/279700205 github.com/perl6/nqp/compare/cd588...54cd808f85
lizmat gets some sleep& 21:37
Zoffix --optimize off don't do nothing 21:53
timotimo OK 21:58
jnthn lizmat: Don't think we can get the line number of the location where the code-gen happened; we could put the line number on the class decl perhaps, we'd need to just :node($/) or so (provided we have a match object to hand) 22:10
cognominal in Promise, why the @!thens are scheduled all in a loop ? github.com/rakudo/rakudo/blob/nom/...se.pm#L106 this seems to defeat the purpose of chaining the Promise with .then. One being executed when the preceding one has succeeded 22:12
I probably miss something essential :(
jnthn You mean like $promise.then(...).then(...).then(...) ? 22:13
cognominal yes 22:14
jnthn The first .then(...) returns another Promise
Which will only be kept/broken when the then completes
And has its own @!thens
The loop is for if you do things like: my $p = some-promise(); $p.then(...); $p.then(...); 22:15
That is, you want to react to the same Promise being completed in two different ways
cognominal each promise in the chain has its own @!thens ! That's probably what I missed
jnthn Yes :)
cognominal don't see yet how they are set 22:16
jnthn++ # learning so much reading your code
jnthn github.com/rakudo/rakudo/blob/nom/...se.pm#L147 in method then
cognominal I did not think about that idiom : <jnthn> The loop is for if you do things like: my $p = some-promise(); $p.then(...); $p.then(...); 22:21
jnthn Two `await`s on the same Promise is a similar case 22:23
timotimo imagine you're waiting for some object to do a lengthy calculation that a user asked for; simultaneously another user might make the same request and you'd end up having one .then (or await) for each user's request waiting for the same background calculation 22:24
only if the lengthy calculation would give the same answer for any future query, of course
cognominal reactive programming needs brain rewiring. 22:29
timotimo react/whenever is an amazing construct that can make that stuff easier to work with 22:30
jnthn Well, time to go and see if I can sleep myself back to healthyish... 'night o/ 22:31
cognominal yea, I enjoy reading cro code
timotimo good luck, jnthn! 22:32
Zoffix .tell jnthn feedback on your blog from Twitter: twitter.com/hercynium/status/912443716836741120 22:48
yoleaux Zoffix: I'll pass your message to jnthn.
Zoffix Hm. Swapping all the <= to ≤ could be done in static optimizer c'd'n't 22:54
I guess $op.name = 'new-name' would be too easy. 23:04
Zoffix compiles with $op = QAST::Op.new: @$op, |$op, :name('&infix:name«<=»'); 23:05
timotimo you'd have to $op.name('new-name') if anything :) 23:08
bedtime o/
Zoffix Ohhh :) Thanks. 23:10
waaat 23:34
$ ./perl6 -e 'my $mark = now; my $n = 1000_000; for ^$n { $ = rand ≥ rand }; say now - $mark; $mark = now; for ^$n { $ = rand >= rand }; say now - $mark;'
0.504100
0.72118403
It probably means it's not working right....
oh, wait, that's not the op I optimized... what's going on :/ It should be 50x slower :/ 23:35
Oh wait, yeah, it is the op I optimized 23:36
.oO( maybe I shouldn't be operating computers after eating sleeping pills... )
gfldex .oO( I should be sleeping after operating computers ) 23:37
good night
Zoffix \o
:S this makes even less sense: $ ./perl6 -e 'my $mark = now; my $n = 1000_000; for ^$n { $ = rand ≥ rand }; say now - $mark; for ^$n { $ = rand ≥ rand }; say now - $mark; $mark = now;' 23:43
0.50753306
22.9959289
Only first call gets rewritten to Texas, second one is left as ≥
even though they're identical in code :/ 23:45
oh I didn't update the mark >_< 23:47
Nope, even used Benchy and I get "NEW version is 32% faster" if I use the op just once and "OLD version is 59.88x faster" if I use the op more than once >:| 23:51
wonder if name change messes with .is_from_core value. This is what I'm using: gist.github.com/zoffixznet/75b1785...4d7f0074e8 23:55