Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
00:48 leont left 01:15 fake_space_whale joined 01:16 p6bannerbot sets mode: +v fake_space_whale 01:35 ggoebel left 01:47 ggoebel joined 01:48 p6bannerbot sets mode: +v ggoebel
Geth roast: 246481f488 | (Zoffix Znet)++ | 30 files
Add missing plans to subtests

Closes github.com/perl6/roast/issues/485 S#485
02:06
synopsebot S#485 [open]: github.com/perl6/roast/issues/485 [6.d review] Add plans to subtests that are missing them
02:38 PufferBot left 03:32 ufobat___ joined 03:33 p6bannerbot sets mode: +v ufobat___ 03:36 ufobat_ left 04:11 fake_space_whale left 04:26 fake_space_whale joined, p6bannerbot sets mode: +v fake_space_whale 05:19 lizmat left 05:22 lizmat joined, p6bannerbot sets mode: +v lizmat 05:33 leont joined, p6bannerbot sets mode: +v leont 06:18 AlexDaniel` left 06:20 AlexDaniel` joined, p6bannerbot sets mode: +v AlexDaniel` 06:26 leont left 06:36 fake_space_whale left 06:40 AlexDaniel` left 06:47 AlexDaniel` joined, p6bannerbot sets mode: +v AlexDaniel` 06:57 dct joined, p6bannerbot sets mode: +v dct 07:06 fake_space_whale joined 07:07 p6bannerbot sets mode: +v fake_space_whale 07:14 dct left 07:31 [TuxCM] joined, p6bannerbot sets mode: +v [TuxCM] 07:36 lizmat left 08:01 fake_space_whale left 08:03 robertle joined 08:04 p6bannerbot sets mode: +v robertle 08:38 ufobat___ is now known as ufobat 08:51 AlexDaniel` left 08:57 mryan joined, p6bannerbot sets mode: +v mryan 09:02 AlexDaniel` joined, p6bannerbot sets mode: +v AlexDaniel` 09:03 mryan left 09:09 dogbert17 left
Geth rakudo: b685036b94 | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
add a new trap, reword another
09:17
rakudo: 1c1527f426 | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
correct example
09:33
09:42 lizmat joined, p6bannerbot sets mode: +v lizmat 09:58 robertle left
tbrowder___ .ask [Coke] do you know dates for TPC::NA 2019? 10:11
yoleaux tbrowder___: I'll pass your message to [Coke].
11:46 cog left 12:06 robertle joined 12:07 p6bannerbot sets mode: +v robertle 12:18 cog joined 12:19 p6bannerbot sets mode: +v cog 12:25 cog left 12:26 cognominal-p6 joined 12:27 p6bannerbot sets mode: +v cognominal-p6
jnthn Hmm, startup time seems to have gotten worse sometime recently 13:17
timotimo wow, yeah, 0.2s instead of the usual 0.1s is what i'm seeing 13:18
"perf report" shows MVM_string_ascii_encode_substr at a surprisingly high place 13:22
i put a breakpoint and got some very long strings that look a bit like base64 perhaps
jnthn o.O 13:23
timotimo at <unknown>:1 (/home/timo/perl6/install/share/nqp/lib/QRegex.moarvm:<dependencies+deserialize>)
const_s, then some invoke, then deserialize 13:24
didn't we kick out base64 strings as blobs?
jnthn Yes 13:25
Hmm, there's MoarVM commit e92f6572e58f99b8
timotimo i believe nine explained what's going on there on IRC around the time of the commit, but i'd expect it's been rebased a few times 13:26
so you can't find it by id any more, should still be findable based on the comment
jnthn Well, the code in NQP does this: 13:27
nqp::isnull_s($serialized)
?? QAST::Op.new( :op('null_s') )
!! QAST::SVal.new( :value($serialized) ),
That is, checks if there's no base64'd stuff, and if there is, uses the string, otherwise uses null so it will find it in the bytecode file 13:28
I'm wondering if the change that's in MoarVM HEAD works out OK with the changes in some NQP branch that switches the code-gen over to the new mechanism, but with NQP master results in it doing this less efficient serialization 13:29
In which case I guess that work is close to merge anyway, so "wait a bit" might be a reasonable answer.
timotimo right 13:30
Geth rakudo/more-local-lowering: 071854b224 | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Remove dead code
13:31
rakudo/more-local-lowering: f4be43c83a | (Jonathan Worthington)++ | 2 files
Work towards more aggressive lexical lowering

This starts us down the path of turning "normal" variables into locals, which will not only be a little faster for lookup, but give dynamic optimizers a good bit more to work with too. It will also enable more block flattening.
This gets the transformation essentially working, however there's quite a bit of spectest fallout that needs to be investigated yet
  (most likely with just a few root causes).
jnthn Just a rebase :)
timotimo how old was that code? i don't even remember seeing it the last time
jnthn I started working on it..hmm, earlier this month? 13:33
nine IOW ancient 13:35
Oh, that base64 stuff was not exactly intentional. A later commit in my branch makes it obsolete anyway. I'll have a look probably tomorrow. 13:37
jnthn nine++ 13:39
nine Unfortunately I lost a day because my desktop wouldn't start anymore. Spent hours tinkering with the hardware and only the very last thing I tried before sending the mainboard off to a 4 week long warranty replacement trip brought it back to life - clearing the CMOS
jnthn Wow 13:40
timotimo oh wow
jnthn 1 day is better than 4 weeks, at least...
timotimo is that the same thing that lets you b0rk an efi bios by putting something in some register even though the spec allows for it? that's like 2 years old at the very least
nine Thing just wouldn't turn on anymore. Not even a flicker of one of the LEDs or any movement of a fan.
timotimo have you ever had a POST card? like that would output the state somehow? 13:41
nine Thing is...I didn't do anything :) Turned it off in the morning and when I came back from work it was bricked
The mainboard has it even integrated :) But not even that would turn on
timotimo wow
jnthn It's been years since I sent a postcard...
timotimo try it again, i'm sure people would be delighted to receive one :) 13:42
"oh how quaint. ol' jonathan has always been into this retro technology"
jnthn oh ffs 13:45
sub throws-like($code, $ex_type, $reason?, *%matcher) is export {
...
EVAL $code, context => CALLER::CALLER::CALLER::CALLER::; 13:46
Now consider this test:
my $baz of Int;
throws-like q[$baz = 'xyz'], X::TypeCheck::Assignment, 'of Int restricts to integers';
So, Test.pm6 is using something unsupported.
I bet this is why so many spectests blow up with the new opt 13:47
timotimo hah
should it put a my $context := CALLER::<enough times>::; at the very start of throws-like perhaps?
jnthn throws-like is from a completely different compilation unit 13:48
timotimo well, yeah, but what about inner blocks?
oh, they aren't even considered for CALLER, right?
jnthn They are but the compiler sees use of CALLER:: and disables all block inlining opts
Lexical use of CALLER:: is fine, we can see it 13:49
timotimo oh, so it's about actually the caller's layout
13:50 lizmat left
jnthn The lexical to local lowering opt means that the $baz there goes away 13:50
It doesn't exist as a lexical any more
timotimo oh! 13:51
that's what's happening
jeez
jnthn Things are spec'd so as to make alright
*make this
But Test.pm6 is using a non-spec feature
timotimo context of EVAL? 13:52
jnthn Yes
13:53 lizmat joined, p6bannerbot sets mode: +v lizmat
timotimo i'm not entirely sure why that uses a string instead of a curly block 13:54
to prevent the optimizer from complaining early?
jnthn yeah, I guess
But it could do the EVAL in the curly block
timotimo not a bad idea i think 13:55
jnthn As a hack, I've stuck throws-like into the list of poison calls to see how many spectests still fail
Plenty do, so there's obviously more I need to fix
timotimo that doesn't sound fun :| 13:56
jnthn Why do you think I put off working on this until I really need it to make PEA worthwhile? :P 13:57
timotimo it all makes sense
m: say .substr(*-3) ~ .substr(*-6, 3) ~ "t" given "implementor" 13:58
camelia torment
timotimo m: say .substr(*-3) ~ .substr(*-6, 3) ~ .substr(*-3, 1) given "implementor"
camelia torment
13:58 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix jnthn: FWIW, there's been a ticket about throws-like for ages: RT#128419 13:59
synopsebot RT#128419 [new]: rt.perl.org/Ticket/Display.html?id=128419 [BUG] throws-like uses :context CALLER:: that will break soon
jnthn Hah. D'oh. :)
I wonder how widely the string form of throws-like is used in the ecosystem...
Zoffix greppable6: throws-like\s+['"qļ½¢] 14:00
greppable6 Zoffix, 4 lines, 3 modules: gist.github.com/fbe76050ecc9b8f307...7115d127d6
jnthn One person. :P
Zoffix AlexDaniel: why does greppable put `git@github` stuff in? In makes links unclickable. 14:01
timotimo could be based on the meta6 14:02
hm, no
"source-url" : "git://github.com/sergot/datetime-parse.git"
that's not a ssh-style url
14:07 Zoffix left
[Tux] Sorry 14:13
Rakudo version 2018.10-26-g1c1527f42 - MoarVM version 2018.10-25-gfb57d40b8
csv-ip5xs1.076 - 1.088
csv-ip5xs-207.792 - 7.924
csv-parser20.728 - 22.597
csv-test-xs-200.436 - 0.448
test8.228 - 8.392
test-t1.980 - 2.071
test-t --race0.964 - 1.009
test-t-2030.868 - 32.112
test-t-20 --race10.668 - 10.803
Geth rakudo/more-local-lowering: 853330d7aa | (Jonathan Worthington)++ | src/Perl6/World.nqp
Mark our-decls in `our ($a, $b)` form too

So they won't be mangled by the optimizer.
14:14
rakudo/more-local-lowering: bc88e438c1 | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Can't lower if `:($a, $b) := $capture` is used

Since that uses the signature binder, which needs the real lexicals to bind in to. (In the future, when we're smarter, we might be able to just compile the destructuring rather than interpreting it in the binder, which would get us back to allowing lowering again.)
14:20
timotimo good on you for finding all these rude causes 14:21
jnthn Those fixed quite a few of the failures
There's a whole bunch of I/O ones that fail 14:22
All looking similar
oh, interesting 14:24
my $fh will leave {.close} = open make-temp-file :content<meows>;
I guess things with variable traits applied will indeed need some special handling.
14:34 klapperl joined 14:35 p6bannerbot sets mode: +v klapperl, klapperl_ left 14:39 klapperl_ joined 14:40 p6bannerbot sets mode: +v klapperl_ 14:41 klapperl left, leont joined 14:42 p6bannerbot sets mode: +v leont
Geth rakudo/more-local-lowering: f2d7269935 | (Jonathan Worthington)++ | 4 files
Don't lower lexicals used by traits

Otherwise, we break things like `my $x will leave { .close }` style constructs.
14:49
jnthn With those fixed, plus the throws-like hack, I'm now down to 3 spectests with complaints 14:52
timotimo very good
jnthn (throws-like hack kept locally)
AlexDaniel Zoffix: it used to work before, I'm not sureā€¦ hmm 14:54
Zoffix: because perl6-all-modules changed: github.com/moritz/perl6-all-module...rAgent.pm6 14:57
github.com/moritz/perl6-all-module...ter/github
:S 14:58
moritz: ā†‘ any idea?
moritz AlexDaniel: about what? is there something wrong? 15:02
timotimo why everything is called [email@hidden.address] 15:10
moritz ah, likely a programming error 15:11
lizmat m: my %m is Map = a => { b => 42 }; dd %m; %m<a><b> = 666; dd %m # feels to me that should die 15:12
camelia Map.new((:a({:b(42)})))
Map.new((:a({:b(666)})))
timotimo deep immutability is Really Hardā„¢
jnthn But Map doesn't promise that :)
lizmat well, atm this is perhaps also a syntax thing
jnthn And { b => 42 } is quite clearly a mutable Hash
timotimo right 15:13
do we want syntax for a map literal? like we do for object hashes?
lizmat but we don't have syntax for a Map
well, perhaps we do ?
moritz Map.new
jnthn m: my %m is Map = a => Map(b => 42); dd %m; %m<a><b> = 666; dd %m
camelia Cannot coerce to Map with named arguments
in block <unit> at <tmp> line 1
jnthn m: my %m is Map = a => Map((b => 42)); dd %m; %m<a><b> = 666; dd %m
camelia Map.new((:a(Map.new((:b(42))))))
Cannot change key 'b' in an immutable Map
in block <unit> at <tmp> line 1
jnthn m: my %m is Map = a => (b => 42).Map; dd %m; %m<a><b> = 666; dd %m
camelia Map.new((:a(Map.new((:b(42))))))
Cannot change key 'b' in an immutable Map
in block <unit> at <tmp> line 1
lizmat yeah, I realize I can do that... 15:14
still, for initializing multi-level Map's, that's sorta LTA
moritz timotimo, AlexDaniel: fix forthcoming
lizmat I guess this looks like module space and a "is immutable" trait :-) 15:16
timotimo immumap 15:19
lizmat it would also do arrays: modules.perl6.org/dist/Tuple:cpan:ELIZABETH
hmmm... bad news: a violation of contract: 15:21
m: my %m is Map = a => { b => 42 }; dd %m.WHICH; %m<a><b> = 666; dd %m.WHICH
camelia ValueObjAt.new("Map|48F9E6CA8891782BD4CA62AB57C97BE3FED940B2")
ValueObjAt.new("Map|29DFBC4D51E71664D7DF9C4CDB232F3E227A9CE9")
lizmat a changing value type :-(
timotimo probably difficult to make that work properly 15:23
15:23 fake_space_whale joined
timotimo only create a ValueObjAt if it's been constructed from only ValueObjAt instances 15:24
as soon as one thing no matter how deep in the hierarchy goes in that isn't a ValueObjAt, "infect" the tree upwards and have it result in an ObjAt instead?
15:24 p6bannerbot sets mode: +v fake_space_whale
lizmat yeah, yuk :-( 15:26
nine rakudo startup performance should be restored with latest moar 15:27
timotimo glad to hear it :) 15:28
lizmat jnthn: are we fine with Map sometimes being a value type, and sometimes not, depending on contents ? 15:36
AlexDaniel moritz: cool, thanks! 15:37
Geth rakudo: 4e0a1c2432 | (Elizabeth Mattijsen)++ | src/core/Map.pm6
Map.WHICH only value type if all its elements are

As soon as a value is encountered that is not a ValueObjAt, revert to Mu::WHICH. Fixed R#2447
15:48
synopsebot R#2447 [open]: github.com/rakudo/rakudo/issues/2447 Map can have a changing ValueObjAt
jnthn lizmat: I'm not so keen on that 15:52
Though may be even less keen on alternatives :P 15:53
lizmat well, *if* we're going to do this, then we could also do it for List.WHICH 15:54
jnthn I don't think a type changing its value nature based on content is right
lizmat which would solve a lot of issues for some people and remove one of the reasons for the existence of Tuple
jnthn It feels rather too unpredictable 15:55
lizmat true
jnthn Plus it's actually OK to have a value type refer to things that are reference types and just care about their object identity
lizmat perhaps we need a fully immutable Tuple type, and a fully immutable Dict type ?
jnthn For example, storing tuples of two objects
lizmat why would that be ok ? 15:56
if you change one of the objects, shouldn't that change the WHICH of the tuple ? 15:57
jnthn No 16:00
Not if the objects are reference types
Imagine my objects are nodes and I want to have a set of arrows between them
Geth nqp: 21b7d3c506 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/MOAR_REVISION
[MoarVM Bump] Brings 8 commits

MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...g318e1ec55 318e1ec55 Revert "Have nqp::serialize always return the serialized data" fb57d40b8 Fix some format directives add43502e prof: log parent thread id in thread creation acb5000bf call node's first entry time should be relative 5e142f46a expose a thread's start time 3eadf7653 expose first entry time in profiler data 543f53aad store time of "first ever entry" of call nodes a4d4c95d4 factor out profile call node creation
16:01
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g318e1ec55
rakudo: b8176dc5bf | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/NQP_REVISION
[NQP Bump] Brings 18 commits

NQP bump brought: github.com/perl6/nqp/compare/2018....g21b7d3c50 21b7d3c50 [MoarVM Bump] Brings 8 commits 18df0daf0 throw out silly debug print 8d4d1e756 expose thread's parent thread id in profile 85187cee2 make sure to stringify thread start time ... (14 more lines)
rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....g21b7d3c50
052067fd13 | (Elizabeth Mattijsen)++ | src/core/Map.pm6

Always use the .WHICH of objects in the map to create the value type .WHICH. Since the .WHICH is supposed to be immutable for an object even if it is not a value type, this can create a stable .WHICH for a Map, even though it still be mutable at a deeper level.
AlexDaniel Zoffix: hmmm these bumps look a bit wrong to me 16:02
some pre-release commits there
the description I mean, the bumps themselves are ok 16:03
lizmat jnthn: should (1, 42) be a value type? (1,my $ = 42) ? (1,Node.new()) ? 16:04
jnthn lizmat: Given we don't consider List to be one, then no
That's entirely what I'm arguing :) 16:05
If we had a Tuple type, then the answer for all the above would be "yes" if those we made as tuples instead.
lizmat ok, how about Map (which we *do* consider to be a value type atm)
jnthn I'm not convinced it should be one, tbh 16:06
lizmat dindins&
16:17 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix AlexDaniel: like which commits? 16:17
AlexDaniel: it uses git log --oneline "$before...$after" 16:18
AlexDaniel hmm maybe you're right 16:21
ok let's see 16:22
Zoffix g2g
AlexDaniel github.com/rakudo/rakudo/commit/b8...d00ef80ccf
16:22 Zoffix left
AlexDaniel so it should be commits after 2018.10, right? 16:22
O_o 16:23
OK nevermind I was looking at an old bump
haha
16:29 robertle left 16:47 [TuxCM] left 16:52 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Map.WHICH only value type if all its elements are 16:52
travis-ci.org/rakudo/rakudo/builds/448406297 github.com/rakudo/rakudo/compare/1...0a1c243210
16:52 travis-ci left
buggable [travis build above] ā˜  Did not recognize some failures. Check results manually. 16:52
17:05 robertle joined 17:06 p6bannerbot sets mode: +v robertle 17:11 cognominal-p6 left
lizmat m: my %m is Map = a => (my $ = 42); %m<a> = 67 # jnthn, do you think this is correct ? 17:20
camelia Cannot change key 'a' in an immutable Map
in block <unit> at <tmp> line 1
timotimo i got rid of moarperf's silly requirement for the user to sometimes click "load this data" buttons 17:32
japhb timotimo++ 17:40
timotimo i still have an ungodly combination of pure react with setState and react/redux
japhb The devil is in the details, I suppose 17:41
17:48 ufobat left
synopsebot R#2447 [open]: github.com/rakudo/rakudo/issues/2447 Map can have a changing ValueObjAt
timotimo do you do anything with react?
Geth roast: 49795d8724 | (Elizabeth Mattijsen)++ | S32-hash/map.t
Add test for R#2447
17:56
synopsebot R#2447 [closed]: github.com/rakudo/rakudo/issues/2447 Map can have a changing ValueObjAt
timotimo method digit ($/) { @!numbers[*-1] ~= $/.ord.&[+](2358).chr } 18:12
^- does the language page on grammars really need to write it this concisely?
like, .&[+] is pretty advanced, and probably not easy to find in the docs themselves
lizmat yeah, I guess that's one of those cases where people were trying to show off :-) 18:13
timotimo yeah 18:14
BBL 18:15
18:46 j3nnn1 joined, p6bannerbot sets mode: +v j3nnn1
lizmat m: class Axe { has $.x = 666 }; say Axe.new.perl # shouldn't that need to be "Axe.new" ? 19:49
camelia Axe.new(x => 666)
lizmat aka, shouldn't the default .perl look at the value and if it is eqv to the default, not show the parameter ?
or is that taking it too far? 19:50
19:51 AlexDaniel left, AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
Geth star/2018.10: fba8e2c456 | (Steve Mynott)++ | 3 files
remove panda-stub #118
19:51
19:52 AlexDaniel left
Geth star/2018.10: 6fe562ca06 | (Steve Mynott)++ | ports/win32/panda.bat
remove window's panda.bat
19:53
star/2018.10: 68ff8e6bc5 | (Steve Mynott)++ | docs/announce/2018.10.md
import draft announce
20:01
lizmat ++stmuk_ 20:03
20:07 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel, cognominal-p6 joined 20:08 p6bannerbot sets mode: +v cognominal-p6 20:15 cognominal-p6 left, cognominal-p6 joined 20:16 p6bannerbot sets mode: +v cognominal-p6 20:35 cognominal-p6 left 20:44 ufobat joined 20:45 p6bannerbot sets mode: +v ufobat
ufobat does anyone still has an idea regarding stackoverflow.com/questions/530621...6-with-cro because it just doesn't work on my box :( 20:58
oups wrong channel
21:02 AlexDaniel left 21:03 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 21:22 AlexDaniel left, AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 21:28 robertle left
samcv .tell Zoffix I will update it soonish. on vacation atm, but should have some time to do it in the next few days 22:06
yoleaux 29 Oct 2018 10:49Z <Zoffix> samcv: would you be able to changelog log 6.d Unicode-related changes and collation stuff? It's over my head and I don't know how to document it all properly: github.com/perl6/6.d-prep/blob/mas...angeLog.md
samcv: I'll pass your message to Zoffix.
22:15 ufobat left 22:28 dct joined, p6bannerbot sets mode: +v dct 22:44 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke 22:45 MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 22:48 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 22:58 fake_space_whale left 23:28 dct left