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 |