Geth rakudo/nom: dd4dfb14d3 | (Zoffix Znet)++ | src/core/IO/Special.pm
[io grant] Fix crash in IO::Special .WHICH/.Str

Currently crashes, saying it wants :D type.
Use `multi` instead of `only` methods, so that Mu candidates take care of :U subtypes.
00:25
roast: 63370fe054 | (Zoffix Znet)++ | 2 files
[io grant] Test IO::Special .WHICH/.Str do not crash

Rakudo fix: github.com/rakudo/rakudo/commit/dd4dfb14d3
00:26
IOninja .ask lizmat would you have an idea why `my @data; @data.elems; @data.sort;` crashes? Bisectable points to github.com/rakudo/rakudo/commit/5a...bd89e45f12 01:01
yoleaux2 IOninja: I'll pass your message to lizmat.
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: github.com/rakudo/rakudo/blob/dd4d...als.pm#L84 01:11
yoleaux2 IOninja: I'll pass your message to lizmat.
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: gist.github.com/zoffixznet/b625809...e949a19ece 05:06
yoleaux2 IOninja: I'll pass your message to jnthn.
[Tux] This is Rakudo version 2017.02-106-gdd4dfb14d built on MoarVM version 2017.02-9-gc5379702 09:08
csv-ip5xs 3.170
test 12.663
test-t 4.810 - 5.038
csv-parser 13.413
nine_ Is it at all possible to add a name to a lexpad at runtime? 09:35
I start to suspect that it actually isn't. 09:36
moritz nine_: it's not, by design 09:54
nine_ Ok, so I do need some other vehicle to get those names into indirect lookup 09:55
moritz nine_: what are you trying to achieve? 10:04
nine_ Fixing the interaction between require and indirect lookup after breaking it by making global merging lexical. 10:06
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:07
moritz ah, I see 10:08
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:09
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:11
nine_ require A::B is probably easy. require ::($foo) is the hard part 10:12
lizmat . 10:21
yoleaux2 01:01Z <IOninja> lizmat: would you have an idea why `my @data; @data.elems; @data.sort;` crashes? Bisectable points to github.com/rakudo/rakudo/commit/5a...bd89e45f12
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: github.com/rakudo/rakudo/blob/dd4d...als.pm#L84
lizmat m: use nqp; my @a; say @a.DUMP 10:23
camelia Array<1>(
:$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),
:$!reified(ā–¶List),
:$!todo(Mu)
)
lizmat star-m: use nqp; my @a; say @a.DUMP
camelia Array<1>(
:$!descriptor(Perl6::Metamodel::ContainerDescriptor<2>(...)),
:$!reified(Mu),
:$!todo(Mu),
:$!WHICH(Str)
)
lizmat note that now apparently we *do* have a List in reified, whereas before we didn't 10:24
there shouldn't be, in my opinion: an empty Array should just have a container descriptor 10:26
am about to go out for most of the day, will look at it in depth when back 10:28
nine_ Progress! 10:49
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. 10:56
Using a CATCH block works just fine 11:02
MasterDuke .tell lizmat github.com/rakudo/rakudo/commit/e4...2681956629 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.
llfourn nine_: Shouldn't require ::($foo); return whatever the package $foo is anyway? 13:06
also nine_++ (progess)
m: my $test = (require Test); say $test 13:07
camelia (Test)
llfourn m: my $foo = 'Test'; my $test = (require ::($foo)); say $test
camelia (Test)
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:09
I think you should have to declare them like: require Foo <Foo::SomeSubPacakge &some-sub>, so that we can predeclare them. 13:10
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
but when i run the code in the individual test from the command line it succeeds
m: say EVAL("truncate(-0.5)")
camelia 0
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:28
IOninja Are you running on command line with same version of perl6? 15:31
Rat.ceiling was recently fixed. Are you sure you got that fix? 15:32
bisect: (<2/1> + <2/1>).ceiling.say
bisectable6 IOninja, On both starting points (old=2015.12 new=dd4dfb1) the exit code is 0 and the output is identical as well
IOninja, Output on both points: 4
IOninja star: (<2/1> + <2/1>).ceiling.say
camelia 4
IOninja star: (<1/2> + <3/2>).ceiling.say 15:33
camelia 3
IOninja m: (<1/2> + <3/2>).ceiling.say
camelia 2
IOninja bisect: (<1/2> + <3/2>).ceiling.say
bisectable6 IOninja, Bisecting by output (old=2015.12 new=dd4dfb1) because on both starting points the exit code is 0
IOninja, bisect log: gist.github.com/817e70f7723518f77d...32572bf70e
IOninja, (2017-02-10) github.com/rakudo/rakudo/commit/63...7cb3db4004
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
IOninja m: say $*PERL.compiler.version
camelia v2017.02.106.gdd.4.dfb.1
IOninja MasterDuke: how can I repro this on my box? 15:36
MasterDuke i'll gist a diff in a minute or two, just rebuilding to make sure 15:37
gist.github.com/MasterDuke17/5d63c...b78bc65c66 15:40
IOninja How come this change? It's much faster? 15:42
MasterDuke it's a little faster. but regardless i am puzzled by the EVAL/test business 15:43
mostly afk for a while, will check back later 15:45
IOninja MasterDuke: wait, how do I repro the issue? Do I stick an eval into a test fail or something? 15:46
*test file
MasterDuke: can't reproduce it. 15:48
Ah, OK, I see the failures now 15:50
zoffix@VirtualBox:~/CPANPRC/Standard-Rakudo$ ./perl6 -e 'my @v = unique (EVAL("(-0.5).truncate") for ^40); say @v' 15:58
[0 1]
zoffix@VirtualBox:~/CPANPRC/Standard-Rakudo$ MVM_SPESH_DISABLE=1 ./perl6 -e 'my @v = unique (EVAL("(-0.5).truncate") for ^40); say @v'
[0]
.tell MasterDuke it looks to be a spesh bug with EVAL: irclog.perlgeek.de/perl6-dev/2017-...i_14168730 the same don't happen if I truncate without EVAL 15:59
yoleaux2 IOninja: I'll pass your message to MasterDuke.
IOninja .tell lizmat filed the .sort issue we talked earlier about as rt.perl.org/Ticket/Display.html?id=130866 16:26
yoleaux2 IOninja: I'll pass your message to lizmat.
dogbert17 IOninja: do you have this on your list? docs.perl6.org/type/IO$COLON$COLON...e#method_s 17:15
nine_ Haha: Stage parse : 20176.650 17:16
Good thing, that this is just because I suspended the computer for a couple of hours in the middle of the build 17:17
IOninja :) 17:20
dogbert17: haven't looked at it yet. What's up with it?
dogbert17 I guess 's' should return the size in bytes rather than a Bool :) 17:21
IOninja it does; seems just a doc issue (I'll fix it as part of the grant) 17:22
dogbert17 your list is getting longer :) 17:26
geekosaur I'm having flashbacks to pugs... 17:31
(then-"-s" being allomorphically typed was one of the things whose implications ultimately led to a rethink of smartmatching, iirc) 17:32
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:34
timotimo nine_: that's a 2017 build, eh? 17:43
nine_ timotimo: indeed it is :) 18:12
MasterDuke IOninja++ nice find 18:34
yoleaux2 15:59Z <IOninja> MasterDuke: it looks to be a spesh bug with EVAL: irclog.perlgeek.de/perl6-dev/2017-...i_14168730 the same don't happen if I truncate without EVAL
MasterDuke timotimo: any idea how to troubleshoot the spesh bug IOninja++ discovered with EVAL? 18:46
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
MasterDuke timotimo: ./tools/spesh_diff.p6 in moarvm? 18:49
timotimo nope
i don't know where it lives and how it works :)
IOninja: and turning spesh on and off toggles the bug, too? 18:50
IOninja with MVM_SPESH_DISABLE=1, yes
timotimo right, but that's the biggest hammer we have 18:58
how does SPESH_OSR_DISABLE, SPESH_INLINE_DISABLE and JIT_DISABLE change the behavior? 18:59
MasterDuke still happens with MVM_SPESH_OSR_DISABLE=1 19:00
and *INLINE*
timotimo also with both of these set? 19:01
MasterDuke but not *JIT*
timotimo OK, that's interesting, too
MasterDuke happens with both OSR and INLINE
i.e., both set at the same time 19:02
timotimo mhm 19:07
i wonder where that bisection tool went 19:17
huh. i see only a jit bisecting tool in the git log
i thought we had one for spesh as well?!
MasterDuke i just searched back through some of the irc logs. a couple times you mentioned wanting a spesh bisect tool... 19:19
timotimo huh?! am i hallucinating now? 19:20
MasterDuke maybe you're a time traveling timotimo from the future where there already exists a spesh bisect tool? 19:21
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:24
samcv timotimo, let's go to the future 10 years and get the MVM source code 19:28
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:29
timotimo that'd help, but wouldn't it be difficult to make it work with nowaday's rakudo and nqp? 19:37
oh, except if we get the git log along with the code, that'd help a lot 19:40
but imagine we'd send out mails thanking everybody for their future contributions to perl6
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:44
Geth rakudo/nom: 796b6a87d7 | (Nick Logan)++ | src/core/CompUnit/Repository/Installation.pm
Fix install wrapper when no binaries are found

The call to `.files` requires parameter :$name to be passed.
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
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 TrueFalseTrue
ugexe trailing 0 seems to be treated as a * ?
Zoffix s: Version.new(1.02), 'ACCEPTS', \(Version.new: 1.00)
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>)ā¤
Zoffix m: dd Version.new: 1.00 20:21
camelia v1
Zoffix m: dd Version.new: 1.01
camelia v1.01
Zoffix s: Version.new(1.02), 'ACCEPTS', \(Version.new: 1.00) 20:23
SourceBaby Zoffix, Sauce is at github.com/rakudo/rakudo/blob/796b...ion.pm#L82
Zoffix m: say v1.1 ~~ v1.1.5 20:24
camelia True
Zoffix ugexe: it basically goes by parts and matching them until it runs out of them
moritz m: say v1.1 eqv v1.1.5 20:25
camelia False
moritz m: say v1.1 eqv v1.1
camelia True
Zoffix m: say v1.1.5.6.7.8.9.1 ~~ v1.1
camelia True
moritz if you want to check for exact matches, use eqv
ugexe i dont
need to match against 1.* and whatnot
seems like .new would need to retain the explicit .0s, but I imagine that will cause some other problem 20:27
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:28
this would affect stuff such as: github.com/rakudo/rakudo/blob/nom/...on.pm#L414 20:29
lizmat . 20:43
yoleaux2 11:36Z <MasterDuke> lizmat: github.com/rakudo/rakudo/commit/e4...2681956629 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
16:26Z <IOninja> lizmat: filed the .sort issue we talked earlier about as rt.perl.org/Ticket/Display.html?id=130866
lizmat MasterDuke: I believe github.com/rakudo/rakudo/commit/e4...2681956629 to be in error 20:50
Geth rakudo/nom: 8e250db615 | (Elizabeth Mattijsen)++ | 2 files
Revert "Make List.$!reified a List instead of Mu"

This reverts commit e48fb80d0f7a6906f58c81509999982681956629.
It doesn't make sense to have an attribute of type A inside type A.
21:09
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 v1
v1.0
Zoffix Ahh lol 21:14
m: say 1.00.perl 21:15
camelia 1.0
lizmat Zoffix: re rakudo.org/2017/02/26/advance-notic...t-changes/ , did you consider making those changes in 6.d.PREVIEW ? 21:28
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
So far link() is the only change that would not have backwards compatible improvement. No modules in ecosystem use it.
lizmat afaik, Perl at a glance, nor Think Perl 6 mention link() 21:32
so would be safe to make it 6.d in that respect
I'm not seeing the outdated reasoning (yet)
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:35
lizmat and if a book doesn't mention link, this would be a problem how ? 21:36
Zoffix It wouldn't for link().
lizmat must be dazed from just having been driving for ~ 2 hours
moritz won't mention link() either 21:37
Zoffix To clarify: none of the changes will break any of 6.c-errata tests. 21:38
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:41
s/it know/is known/; # can't type today -_- 21:42
moritz "it is known!" :-)
gfldex is 6.d still planned to hatch in summer? 21:43
moritz I think we can hatch it when we want
lizmat well, I would like to revive IO::CatPath and IO::CatHandle at some point :-) 21:44
Zoffix gfldex: if by hatch you mean be released, then nope :) 21:49
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 v1.0
ugexe alas no 1.00
moritz is v1.0 different from v1.00? 21:56
Zoffix note that will give stuff like <1/3> for many rats 21:59
m: say .5.perl
camelia 0.5
Zoffix m: say <1/3>.perl
camelia <1/3>
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:08
so you could have say XXX:ver<1.0>:auth<foo> and XXX:ver<1.00>:auth<foo> both installed 22:10
not that doing such a thing is a good idea, its just a possible state someone may find themselves in 22:11
Geth rakudo/nom: 75e070fdea | (Elizabeth Mattijsen)++ | src/core/List.pm
Fix RT #130866

Basically, the nqp::attrinited test is too fragile. Apparently .elems changes something to the state of $!reified causing nqp::attrinited to return 1 on $!reified, even though it still isn't DEFINITE.
22:23
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130866