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 |