Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-02-26

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:10 llfourn joined #perl6-dev
00:25 Geth ¦ rakudo/nom: dd4dfb14d3 | (Zoffix Znet)++ | src/core/IO/Special.pm
00:25 Geth ¦ rakudo/nom: [io grant] Fix crash in IO::Special .WHICH/.Str
00:25 Geth ¦ rakudo/nom:
00:25 Geth ¦ rakudo/nom: Currently crashes, saying it wants :D type.
00:25 Geth ¦ rakudo/nom:
00:25 Geth ¦ rakudo/nom: Use `multi` instead of `only` methods, so that Mu candidates take care
00:25 Geth ¦ rakudo/nom: of :U subtypes.
00:25 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dd4dfb14d3
00:26 Geth ¦ roast: 63370fe054 | (Zoffix Znet)++ | 2 files
00:26 Geth ¦ roast: [io grant] Test IO::Special .WHICH/.Str do not crash
00:26 Geth ¦ roast:
00:26 Geth ¦ roast: Rakudo fix: https://github.com/rakudo/rakudo/commit/dd4dfb14d3
00:26 Geth ¦ roast: review: https://github.com/perl6/roast/commit/63370fe054
00:39 llfourn joined #perl6-dev
01:01 IOninja .ask lizmat would you have an idea why `my @data; @data.elems; @data.sort;` crashes? Bisectable points to https://github.com/rakudo/rakudo/commit/5ac4c06447e1ce0255e75489d9758fbd89e45f12
01:01 yoleaux2 IOninja: I'll pass your message to lizmat.
01:11 IOninja .tell lizmat tracked it down to this line that returns a List on empty reified array but IterationBuffer on non-empty (when it doesn't crash). Dunno if we want some conditional or make everything iteration buffer or whatnot: https://github.com/rakudo/rakudo/blob/dd4dfb14d3ccfe50dbd4b425778a005d3303edb9/src/core/Rakudo/Internals.pm#L84
01:11 yoleaux2 IOninja: I'll pass your message to lizmat.
02:07 Guest60735 joined #perl6-dev
04:32 pyrimidi_ joined #perl6-dev
05:06 IOninja .tell jnthn here's the notice draft and it deliniates the timeline on when more concrete info will be available, so people would know to look for it: https://gist.github.com/zoffixznet/b625809972d76952f05931e949a19ece
05:06 yoleaux2 IOninja: I'll pass your message to jnthn.
05:22 tbrowder_ joined #perl6-dev
05:30 samcv_ joined #perl6-dev
05:31 Ulti_ joined #perl6-dev
06:46 pyrimidine joined #perl6-dev
09:00 RabidGravy joined #perl6-dev
09:04 llfourn joined #perl6-dev
09:08 [Tux] This is Rakudo version 2017.02-106-gdd4dfb14d built on MoarVM version 2017.02-9-gc5379702
09:08 [Tux] csv-ip5xs        3.170
09:08 [Tux] test            12.663
09:08 [Tux] test-t           4.810 - 5.038
09:08 [Tux] csv-parser      13.413
09:14 llfourn joined #perl6-dev
09:35 nine_ Is it at all possible to add a name to a lexpad at runtime?
09:36 nine_ I start to suspect that it actually isn't.
09:54 moritz nine_: it's not, by design
09:55 nine_ Ok, so I do need some other vehicle to get those names into indirect lookup
10:04 moritz nine_: what are you trying to achieve?
10:06 nine_ Fixing the interaction between require and indirect lookup after breaking it by making global merging lexical.
10:07 nine_ Require still creates symbols like A::B in global scope. But "use" could have created a lexial "A" which hides the global "A" that contains A::B.
10:08 moritz ah, I see
10:09 nine_ So I figure "require" should behave like "use" and make the imported symbols lexical. Though in fact all I need is to make them available to indirect lookup in the same lexical scope, as there's no other way to get at them anyway.
10:11 moritz I wonder if 'require A::B' could install a lexical A::B, and the compile-time lookup tries to resolve that before it tries to resolve A
10:12 nine_ require A::B is probably easy. require ::($foo) is the hard part
10:21 llfourn joined #perl6-dev
10:21 lizmat .
10:21 yoleaux2 01:01Z <IOninja> lizmat: would you have an idea why `my @data; @data.elems; @data.sort;` crashes? Bisectable points to https://github.com/rakudo/rakudo/commit/5ac4c06447e1ce0255e75489d9758fbd89e45f12
10:21 yoleaux2 01:11Z <IOninja> lizmat: tracked it down to this line that returns a List on empty reified array but IterationBuffer on non-empty (when it doesn't crash). Dunno if we want some conditional or make everything iteration buffer or whatnot: https://github.com/rakudo/rakudo/blob/dd4dfb14d3ccfe50dbd4b425778a005d3303edb9/src/core/Rakudo/Internals.pm#L84
10:23 lizmat m: use nqp; my @a; say @a.DUMP
10:23 camelia rakudo-moar dd4dfb: OUTPUT: «Array<1>(␤    :$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),␤    :$!reified(▶List),␤    :$!todo(Mu)␤)␤»
10:23 lizmat star-m: use nqp; my @a; say @a.DUMP
10:23 camelia star-m 2016.10: OUTPUT: «Array<1>(␤    :$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),␤    :$!reified(Mu),␤    :$!todo(Mu),␤    :$!WHICH(Str)␤)␤»
10:24 lizmat note that now apparently we *do* have a List in reified, whereas before we didn't
10:26 lizmat there shouldn't be, in my opinion: an empty Array should just have a container descriptor
10:28 lizmat am about to go out for most of the day, will look at it in depth when back
10:49 nine_ Progress!
10:55 ZzZombo_ joined #perl6-dev
10:55 ZzZombo_ joined #perl6-dev
10:56 nine_ What still does not work is: try require ::($foo); ::($foo).new; as the try prefix actually creates a block, so the symbol does not survive to the second statement.
11:02 nine_ Using a CATCH block works just fine
11:04 ZzZombo joined #perl6-dev
11:04 ZzZombo joined #perl6-dev
11:05 ZzZombo joined #perl6-dev
11:05 ZzZombo joined #perl6-dev
11:15 ZzZombo joined #perl6-dev
11:15 ZzZombo joined #perl6-dev
11:20 geekosaur joined #perl6-dev
11:36 MasterDuke .tell lizmat https://github.com/rakudo/rakudo/commit/e48fb80d0f7a6906f58c81509999982681956629 is where i changed List.$!reified to a List instead of Mu. the reason i did was nothing more than so the .perl/.gist/etc of such things was more informative
11:36 yoleaux2 MasterDuke: I'll pass your message to lizmat.
12:06 geekosaur joined #perl6-dev
12:42 AlexDaniel joined #perl6-dev
13:06 llfourn nine_: Shouldn't require ::($foo); return whatever the package $foo is anyway?
13:06 llfourn also nine_++ (progess)
13:07 llfourn m: my $test = (require Test); say $test
13:07 camelia rakudo-moar dd4dfb: OUTPUT: «(Test)␤»
13:07 llfourn m: my $foo = 'Test'; my $test = (require ::($foo)); say $test
13:07 camelia rakudo-moar dd4dfb: OUTPUT: «(Test)␤»
13:09 llfourn Even though it's what we do now, I'm not sure it's a good idea to try and set lexical things with require that aren't explicitly asked for
13:10 llfourn I think you should have to declare them like: require Foo <Foo::SomeSubPacakge &some-sub>, so that we can predeclare them.
13:35 geekosaur joined #perl6-dev
13:58 pyrimidi_ joined #perl6-dev
15:05 RabidGravy joined #perl6-dev
15:27 MasterDuke anybody have an idea why an EVAL inside a test gives different results than outside? i was testing out some changes to Int.div, and getting some failures in t/spec/S32-num/rounders.t
15:27 MasterDuke but when i run the code in the individual test from the command line it succeeds
15:27 MasterDuke m: say EVAL("truncate(-0.5)")
15:27 camelia rakudo-moar dd4dfb: OUTPUT: «0␤»
15:28 MasterDuke that's what i get on the command line also, but it's 1 if i `make` the test file (or just run it directly)
15:31 IOninja Are you running on command line with same version of perl6?
15:32 IOninja Rat.ceiling was recently fixed. Are you sure you got that fix?
15:32 IOninja bisect: (<2/1> + <2/1>).ceiling.say
15:32 bisectable6 IOninja, On both starting points (old=2015.12 new=dd4dfb1) the exit code is 0 and the output is identical as well
15:32 bisectable6 IOninja, Output on both points: 4
15:32 IOninja star: (<2/1> + <2/1>).ceiling.say
15:32 camelia star-m 2016.10: OUTPUT: «4␤»
15:33 IOninja star: (<1/2> + <3/2>).ceiling.say
15:33 camelia star-m 2016.10: OUTPUT: «3␤»
15:33 IOninja m: (<1/2> + <3/2>).ceiling.say
15:33 camelia rakudo-moar dd4dfb: OUTPUT: «2␤»
15:33 IOninja bisect: (<1/2> + <3/2>).ceiling.say
15:33 bisectable6 IOninja, Bisecting by output (old=2015.12 new=dd4dfb1) because on both starting points the exit code is 0
15:33 bisectable6 IOninja, bisect log: https://gist.github.com/817e70f7723518f77d08ca32572bf70e
15:33 bisectable6 IOninja, (2017-02-10) https://github.com/rakudo/rakudo/commit/6372417035b959f971a58490101b9d7cb3db4004
15:34 IOninja 16 days ago was fixed
15:34 MasterDuke This is Rakudo version 2017.02-106-gdd4dfb14d built on MoarVM version 2017.02-16-g43ef38c0
15:34 IOninja m: say $*PERL.compiler.version
15:34 camelia rakudo-moar dd4dfb: OUTPUT: «v2017.02.106.gdd.4.dfb.1␤»
15:36 IOninja MasterDuke: how can I repro this on my box?
15:37 MasterDuke i'll gist a diff in a minute or two, just rebuilding to make sure
15:40 MasterDuke https://gist.github.com/MasterDuke17/5d63c32bae0c719df31370b78bc65c66
15:42 IOninja How come this change? It's much faster?
15:43 MasterDuke it's a little faster. but regardless i am puzzled by the EVAL/test business
15:45 MasterDuke mostly afk for a while, will check back later
15:46 IOninja MasterDuke: wait, how do I repro the issue? Do I stick an eval into a test fail or something?
15:46 IOninja *test file
15:48 IOninja MasterDuke: can't reproduce it.
15:50 IOninja Ah, OK, I see the failures now
15:58 IOninja zoffix@VirtualBox:~/CPANPRC/Standard-Rakudo$ ./perl6 -e 'my @v = unique (EVAL("(-0.5).truncate") for ^40); say @v'
15:58 IOninja [0 1]
15:58 IOninja zoffix@VirtualBox:~/CPANPRC/Standard-Rakudo$ MVM_SPESH_DISABLE=1 ./perl6 -e 'my @v = unique (EVAL("(-0.5).truncate") for ^40); say @v'
15:58 IOninja [0]
15:59 IOninja .tell MasterDuke it looks to be a spesh bug with EVAL: https://irclog.perlgeek.de/perl6-dev/2017-02-26#i_14168730  the same don't happen if I truncate without EVAL
15:59 yoleaux2 IOninja: I'll pass your message to MasterDuke.
16:26 IOninja .tell lizmat filed the .sort issue we talked earlier about as https://rt.perl.org/Ticket/Display.html?id=130866
16:26 yoleaux2 IOninja: I'll pass your message to lizmat.
17:01 llfourn joined #perl6-dev
17:15 dogbert17 IOninja: do you have this on your list? https://docs.perl6.org/type/IO$COLON$COLONHandle#method_s
17:16 nine_ Haha: Stage parse      : 20176.650
17:17 nine_ Good thing, that this is just because I suspended the computer for a couple of hours in the middle of the build
17:20 IOninja :)
17:20 IOninja dogbert17: haven't looked at it yet. What's up with it?
17:21 dogbert17 I guess 's' should return the size in bytes rather than a Bool :)
17:22 IOninja it does; seems just a doc issue (I'll fix it as part of the grant)
17:26 dogbert17 your list is getting longer :)
17:31 geekosaur I'm having flashbacks to pugs...
17:32 geekosaur (then-"-s" being allomorphically typed was one of the things whose implications ultimately led to a rethink of smartmatching, iirc)
17:34 geekosaur hm, actually I think -s ended up being ok aside from the lexical conflict; it was some of the other weird stat typing that caused problems
17:43 timotimo nine_: that's a 2017 build, eh?
18:01 llfourn joined #perl6-dev
18:12 nine_ timotimo: indeed it is :)
18:34 MasterDuke IOninja++ nice find
18:34 yoleaux2 15:59Z <IOninja> MasterDuke: it looks to be a spesh bug with EVAL: https://irclog.perlgeek.de/perl6-dev/2017-02-26#i_14168730  the same don't happen if I truncate without EVAL
18:46 MasterDuke timotimo: any idea how to troubleshoot the spesh bug IOninja++ discovered with EVAL?
18:47 timotimo hm. we have a bisecting tool that can figure out the first frame that causes the bug to appear when it gets speshed
18:47 IOninja I don't know if it's actually with eval, but if I remove eval and run code directly, the issue disappears
18:49 MasterDuke timotimo: ./tools/spesh_diff.p6 in moarvm?
18:49 timotimo nope
18:49 timotimo i don't know where it lives and how it works :)
18:50 timotimo IOninja: and turning spesh on and off toggles the bug, too?
18:50 IOninja with  MVM_SPESH_DISABLE=1, yes
18:58 timotimo right, but that's the biggest hammer we have
18:59 timotimo how does SPESH_OSR_DISABLE, SPESH_INLINE_DISABLE and JIT_DISABLE change the behavior?
19:00 MasterDuke still happens with MVM_SPESH_OSR_DISABLE=1
19:00 MasterDuke and *INLINE*
19:01 pyrimidine joined #perl6-dev
19:01 llfourn joined #perl6-dev
19:01 timotimo also with both of these set?
19:01 MasterDuke but not *JIT*
19:01 timotimo OK, that's interesting, too
19:01 MasterDuke happens with both OSR and INLINE
19:02 MasterDuke i.e., both set at the same time
19:07 timotimo mhm
19:16 Zoffix joined #perl6-dev
19:17 timotimo i wonder where that bisection tool went
19:17 timotimo huh. i see only a jit bisecting tool in the git log
19:17 timotimo i thought we had one for spesh as well?!
19:19 MasterDuke i just searched back through some of the irc logs. a couple times you mentioned wanting a spesh bisect tool...
19:20 timotimo huh?! am i hallucinating now?
19:21 MasterDuke maybe you're a time traveling timotimo from the future where there already exists a spesh bisect tool?
19:24 MasterDuke i have an MVM_SPESH_LOG from before and after my change, but it's pretty big and the diff shows lots of different memory address and such, not very easy to read
19:28 samcv timotimo, let's go to the future 10 years and get the MVM source code
19:29 samcv and then 5 mins later go farward another 10 years and bring the sou;rce code made after 10 years of the future's code
19:37 timotimo that'd help, but wouldn't it be difficult to make it work with nowaday's rakudo and nqp?
19:40 timotimo oh, except if we get the git log along with the code, that'd help a lot
19:40 timotimo but imagine we'd send out mails thanking everybody for their future contributions to perl6
19:44 MasterDuke i wonder which would be harder, upgrading current rakudo to work with future moar, or upgrading current moar to work with future rakudo?
19:49 Geth ¦ rakudo/nom: 796b6a87d7 | (Nick Logan)++ | src/core/CompUnit/Repository/Installation.pm
19:49 Geth ¦ rakudo/nom: Fix install wrapper when no binaries are found
19:49 Geth ¦ rakudo/nom:
19:49 Geth ¦ rakudo/nom: The call to `.files` requires parameter :$name to be passed.
19:49 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/796b6a87d7
19:49 MasterDuke if it helps, on my machine, the first 41 times the code is called it gives the right answer, then it just keeps giving the wrong answer after that
20:02 llfourn joined #perl6-dev
20:20 ugexe m: say Version.new(1.00) ~~ Version.new(1.02), Version.new(1.01) ~~ Version.new(1.02), Version.new(1.02) ~~ Version.new(1.02);
20:20 camelia rakudo-moar 796b6a: OUTPUT: «TrueFalseTrue␤»
20:20 ugexe trailing 0 seems to be treated as a * ?
20:20 Zoffix s: Version.new(1.02), 'ACCEPTS', \(Version.new: 1.00)
20:20 SourceBaby Zoffix, Something's wrong: ␤ERR: Unhandled exception: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp' (from 'gen/moar/main.nqp')␤   at <unknown>:1  (/home/zoffix/services/sourceable/building-perl6/perl6.moarvm:<dependencies+deserialize>)␤
20:21 Zoffix m: dd Version.new: 1.00
20:21 camelia rakudo-moar 796b6a: OUTPUT: «v1␤»
20:21 Zoffix m: dd Version.new: 1.01
20:21 camelia rakudo-moar 796b6a: OUTPUT: «v1.01␤»
20:23 Zoffix s: Version.new(1.02), 'ACCEPTS', \(Version.new: 1.00)
20:23 SourceBaby Zoffix, Sauce is at https://github.com/rakudo/rakudo/blob/796b6a8/src/core/Version.pm#L82
20:24 Zoffix m: say v1.1 ~~ v1.1.5
20:24 camelia rakudo-moar 796b6a: OUTPUT: «True␤»
20:24 Zoffix ugexe: it basically goes by parts and matching them until it runs out of them
20:25 moritz m: say v1.1 eqv v1.1.5
20:25 camelia rakudo-moar 796b6a: OUTPUT: «False␤»
20:25 moritz m: say v1.1 eqv v1.1
20:25 camelia rakudo-moar 796b6a: OUTPUT: «True␤»
20:25 Zoffix m: say v1.1.5.6.7.8.9.1 ~~ v1.1
20:25 camelia rakudo-moar 796b6a: OUTPUT: «True␤»
20:25 moritz if you want to check for exact matches, use eqv
20:25 ugexe i dont
20:25 ugexe need to match against 1.* and whatnot
20:27 ugexe seems like .new would need to retain the explicit .0s, but I imagine that will cause some other problem
20:28 ugexe e.g. Version.new(1.00).say outputs v1.00 (or at least has the ability to look at the original value when doing a ~~)
20:29 ugexe this would affect stuff such as: https://github.com/rakudo/rakudo/blob/nom/src/core/CompUnit/Repository/Installation.pm#L414
20:42 pyrimidine joined #perl6-dev
20:43 lizmat .
20:43 yoleaux2 11:36Z <MasterDuke> lizmat: https://github.com/rakudo/rakudo/commit/e48fb80d0f7a6906f58c81509999982681956629 is where i changed List.$!reified to a List instead of Mu. the reason i did was nothing more than so the .perl/.gist/etc of such things was more informative
20:43 yoleaux2 16:26Z <IOninja> lizmat: filed the .sort issue we talked earlier about as https://rt.perl.org/Ticket/Display.html?id=130866
20:44 pyrimidine joined #perl6-dev
20:50 lizmat MasterDuke: I believe  https://github.com/rakudo/rakudo/commit/e48fb80d0f7a6906f58c81509999982681956629 to be in error
21:03 llfourn joined #perl6-dev
21:04 pyrimidine joined #perl6-dev
21:09 Geth ¦ rakudo/nom: 8e250db615 | (Elizabeth Mattijsen)++ | 2 files
21:09 Geth ¦ rakudo/nom: Revert "Make List.$!reified a List instead of Mu"
21:09 Geth ¦ rakudo/nom:
21:09 Geth ¦ rakudo/nom: This reverts commit e48fb80d0f7a6906f58c81509999982681956629.
21:09 Geth ¦ rakudo/nom:
21:09 Geth ¦ rakudo/nom: It doesn't make sense to have an attribute of type A inside type A.
21:09 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8e250db615
21:12 ugexe m: dd Version.new(1.0); dd Version.new("1.0") # ah so it was from coercing a Rat to Str that loses the 0
21:12 camelia rakudo-moar 796b6a: OUTPUT: «v1␤v1.0␤»
21:14 Zoffix Ahh lol
21:14 pyrimidine joined #perl6-dev
21:15 Zoffix m: say 1.00.perl
21:15 camelia rakudo-moar 796b6a: OUTPUT: «1.0␤»
21:28 lizmat Zoffix: re http://rakudo.org/2017/02/26/advance-notice-of-significant-changes/ , did you consider making those changes in 6.d.PREVIEW ?
21:30 Zoffix lizmat: yes, if we do that then all the books being published right now will be heavily outdated and wrong in just a few months after their publication.
21:30 Zoffix So far link() is the only change that would not have backwards compatible improvement. No modules in ecosystem use it.
21:32 lizmat afaik, Perl at a glance, nor Think Perl 6 mention link()
21:32 lizmat so would be safe to make it 6.d in that respect
21:32 lizmat I'm not seeing the outdated reasoning (yet)
21:35 Zoffix If all changes were to be done in 6.d, then link() would simply be removed from the documentation, as it's currently not part of the language.
21:36 lizmat and if a book doesn't mention link, this would be a problem how ?
21:36 Zoffix It wouldn't for link().
21:36 * lizmat must be dazed from just having been driving for ~ 2 hours
21:37 * moritz won't mention link() either
21:38 Zoffix To clarify: none of the changes will break any of 6.c-errata tests.
21:41 Zoffix And once entire set of proposed changes it know we can review what to change now and what should be left for 6.d, I think.
21:42 Zoffix s/it know/is known/; # can't type today -_-
21:42 moritz "it is known!" :-)
21:43 gfldex is 6.d still planned to hatch in summer?
21:43 moritz I think we can hatch it when we want
21:44 lizmat well, I would like to revive IO::CatPath and IO::CatHandle at some point  :-)
21:49 Zoffix gfldex: if by hatch you mean be released, then nope :)
21:54 ugexe m: use MONKEY-TYPING; augment class Version { multi method new(Rat $ver) { samewith($ver.DUMP) } }; say Version.new(1.0); # maybe something like this makes more sense (although adds another multi)
21:54 camelia rakudo-moar 8e250d: OUTPUT: «v1.0␤»
21:54 ugexe alas no 1.00
21:56 moritz is v1.0 different from v1.00?
21:59 Zoffix note that will give stuff like <1/3> for many rats
21:59 Zoffix m: say .5.perl
21:59 camelia rakudo-moar 8e250d: OUTPUT: «0.5␤»
21:59 Zoffix m: say <1/3>.perl
21:59 camelia rakudo-moar 8e250d: OUTPUT: «<1/3>␤»
22:05 llfourn joined #perl6-dev
22:08 ugexe mortiz: They are treated as the same in perl6, although I dont know the neck beard answer. The problem I'm forseeing is that versions are not normalized in a distributions meta file before being saved to CURI, but do get normalized when acting on those distribution's versions
22:10 ugexe so you could have say XXX:ver<1.0>:auth<foo> and XXX:ver<1.00>:auth<foo> both installed
22:11 ugexe not that doing such a thing is a good idea, its just a possible state someone may find themselves in
22:23 Geth ¦ rakudo/nom: 75e070fdea | (Elizabeth Mattijsen)++ | src/core/List.pm
22:23 Geth ¦ rakudo/nom: Fix RT #130866
22:23 Geth ¦ rakudo/nom:
22:23 Geth ¦ rakudo/nom: Basically, the nqp::attrinited test is too fragile.  Apparently .elems
22:23 Geth ¦ rakudo/nom: changes something to the state of $!reified causing nqp::attrinited to
22:23 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130866
22:23 Geth ¦ rakudo/nom: return 1 on $!reified, even though it still isn't DEFINITE.
22:23 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/75e070fdea
23:06 llfourn joined #perl6-dev
23:23 llfourn joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary