Perl 6 language and compiler development | Logs at | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by AlexDaniel on 12 June 2018.
00:03 j3nnn1 left 00:10 AlexDaniel`` joined, CIAvash[m] joined 00:27 AlexDaniel left, AlexDaniel joined 00:41 cognominal left 02:49 shareable6 joined 04:19 MasterDuke left 05:22 squashable6 joined 05:51 skids left 06:28 robertle joined, brrt joined 06:58 [TuxCM] left 07:05 AlexDaniel left 07:08 [TuxCM] joined 07:18 [TuxCM] left 07:38 brrt left 08:03 lizmat left 08:11 lizmat joined 08:26 cognominal joined 08:52 AlexDaniel joined 08:55 robertle left
AlexDaniel looks at 08:59
oh, I guess that's why there are many toaster failures with a bunch of stuff about DEPRECATED? 09:00
will check later today…
or maybe 09:01
09:17 AlexDaniel`` left, AlexDaniel`` joined
lizmat yeah, DEPRECATED as a sub was not really meant to be public :-( 09:17
or memory is playing tricks on me 09:18
if it was supposed to be, I case we could add a shim to R:I:DEPRECATED
at least for the release
jnthn Anything people can discover/use, they will :) 09:19
yoleaux 12 Jun 2018 18:26Z <bartolin_> jnthn: fwiw, I increased Xmx (and Xms) in Makefile to 3GB and was able to build rakudo on the jvm backend with HEAD of your rescalar branch. spectest is currently running. With the original value for Xmx it didn't finish stage classpath (I only tried once, though).
12 Jun 2018 18:29Z <Zoffix> jnthn: FYI: `[Coke] ok, finally got a copy of MasterDuke's CLA, so we're clear to give him the rakudo commit bit.`:
09:29 scovit left 09:32 brrt joined 09:44 robertle joined 09:51 brrt left
Geth rakudo: 874ead515d | (Elizabeth Mattijsen)++ | src/core/Deprecations.pm6
Re-instate DEPRECATED as a global sub for now
lizmat AlexDaniel: ^^^ hope that helps with the burned toast
AlexDaniel cool, thanks 09:54
lizmat m: END say "ended"; LEAVE say "left"; exit # not sure this is a bug or a feature 10:02
camelia ended
lizmat jnthn ^^^ 10:03
jnthn exit means exit 10:04
moritz m: END say "ended"; LEAVE say "left";
camelia left
lizmat yeah, just noticed it's documented as such: exit does prevent the LEAVE phaser to be executed.
jnthn We do run `END` blocks, but it doesn't throw an exception and unwind the stack 10:05
That'd arguably be surprising too, and then we'd get in to "does it cause all the other threads to unwind their stacks"
lizmat yeah, I realize why it is the way it is. It's just that if we state "LEAVE is reliably called whenever a scope is exited" is maybe technically true 10:11
but not conceptually in the minds of many 10:12
I guess we need to document this better: use "die" if you want LEAVE blocks to execute, using "exit" will not
but I guess the docs already say that 10:13
ok, I will shut up now :-)
10:17 brrt joined
timotimo will we mark DEPRECATED as deprecated in user code? 10:19
lizmat timotimo: yeah, was considering that :-) 10:20
but it's a bit tricky, as calling it would call itself :-) 10:21
timotimo so we'll need to have two versions? :) 10:23
lizmat yeah, I don't think it's worth the effort 10:26
10:35 llfourn joined
jnthn I guess the real DEPRECATED would be in Rakudo::Internals and then the sub DEPRECATED just forwards to that 10:41
And then we can mark it deprecated I guess :) 10:42
.tell zoffix Commit access granted :) 11:04
yoleaux jnthn: I'll pass your message to zoffix.
jnthn .tell MasterDuke I've granted you push access to the Rakudo repo; please let me know if any problems :) 11:05
yoleaux jnthn: I'll pass your message to MasterDuke.
AlexDaniel o yey 11:07
welcome, MasterDuke! ♥
Geth nqp: 6a27f87d2d | (Jonathan Worthington)++ | tools/build/MOAR_REVISION
Bump MOAR_REVISION for new atomic ops
nqp: version bump brought these changes:
11cf77d330 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
rakudo/rescalar: 11 commits pushed by (Jonathan Worthington)++
rakudo/rescalar: edc3935998 | (Jonathan Worthington)++ | 2 files
Move Scalar CAS internals to NQP
jnthn lunch & 11:10
11:56 AlexDaniel left
stmuk 12:06
12:10 |Tux| left, |Tux| joined
jnthn back 12:19
tbrowder_ MasterDuke++ 12:26
folks, please consider (and vote) on my rakudo PR #1916. 12:31
lizmat is for it and Zoffix is not (and he has a strong argument against it). 12:32
timotimo R#1916 12:38
synopsebot_ R#1916 [open]: Ease maintenance of Actions.nqp, Grammar.nqp
Geth rakudo/rescalar: 752819868e | (Jonathan Worthington)++ | 2 files
Move Scalar atomic store to NQP code
rakudo/rescalar: 645b1b63c6 | (Jonathan Worthington)++ | 2 files
Eliminate a bunch of now-dead C code in the extops
12:44 scovit joined
jnthn Hm, wondering if we can get rid of non-rw ContainerDescriptor 12:56
That is, it being null is what conveys a readonly Scalar
lizmat that seems like a nice opt, but how many readonly scalars do we have ? 12:59
jnthn All the ones that wrap sub parameters
lizmat I guess when we do a for @a -> $foo { }
jnthn Or block parameters
lizmat ah, yes, ok
jnthn Also .item
lizmat right, so that feels like a very nice opt 13:00
jnthn In theory, yes. In practice, no descriptor passed to p6scalarfromdesc currently results in it sticking a default rw descriptor in there
So I'll need to hunt down where that's happening
I so far just removed all the places that we created an ro descriptor 13:01
To see what happens
And the answer is a relatively small number of spectest failures, so it feels like it's probably possible with some compensating tweaks 13:02
13:02 AlexDaniel joined
jnthn m: sub foo(Int $x is copy) { $x = 'foo' }; my $y = 42; foo($y) 13:24
camelia Type check failed in assignment to $x; expected Int but got Str ("foo")
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn ah, ok 13:25
Thoguht that might have a type check bug, but then realized I forgot a detail of the code I removed :)
Language lesson time; bbiab 13:27
13:38 AlexDaniel left 13:39 skids joined 13:40 AlexDaniel joined 14:51 brrt left
jnthn grmbl, latest version of the "no descriptor = ro" change still has some spectest failures 15:08
Who'd have thought refactoring the most-used data structure in the language would be tricky... :) 15:09
.oO( "Who knew? No one knew. No one could have predicted!" )
15:18 robertle left
jnthn Argh 15:22
m: sub foo($x) { $x = 42 }; foo(10) 15:23
camelia Cannot assign to a readonly variable ($x) or a value
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn m: sub foo(Int $x) { $x = 42 }; foo(10)
camelia Cannot assign to an immutable value
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn So at least one failure is because in some cases (but certainly not reliably) we have the varname available thorugh the descriptor 15:24
m: sub foo(Mu $a) { say $a.isa(Scalar) }; my $x; foo($x.VAR) 15:36
camelia True
jnthn Hurrah, got it down to that one test, whihc I think I can argue is overly-expectant (not to mention that such a check could ideally happen at compile time anyway) 15:52
This isn't doing the switch to using lack of descriptor as indicating ro yet, just eliminating all the places I could find that create an ro descriptor 15:53
timotimo so if they don't create an ro descriptor, what do they do? a shared ro descriptor? 15:57
jnthn Null descriptor 15:58
15:58 brrt joined
timotimo ah, so no ro descriptor where-ever possible, otherwise the ro descriptor stays? 15:59
Geth rakudo/rescalar: 35ecc99016 | (Jonathan Worthington)++ | 2 files
Don't create readonly container descriptors

This way, we'll be able to use the container descriptor's presence as a means to indicate rw-ness, which is a simplification over checking both that *and* then checking the rw flag. This simplification will also aid us in moving what started out as the Rakudo Scalar container spec into the MoarVM core, since then it won't need to be coupled to ... (11 more lines)
jnthn timotimo: No, it's going way. The above commit should mean we never create one.
Just seperating out the interesting part of the refactor from the (hopefully) grunt work that now follows 16:02
timotimo oh, OK! 16:03
jnthn I'm also quite happy to be getting rid of C code that made assumptions about the layout of P6opaque :)
timotimo oh, yes
jnthn When we move it into MoarVM, we can do it by just configuring the attribute holding the value to fetch and the attribute to null-check for rwness 16:05
BTW, this also opens the door to us implementing a kind of container that has storage, but lets you do some custom logic on STORE 16:07
Which'd handle some use cases of Proxy without having the costly many-FETCH thing happen 16:08
timotimo nice. 16:09
Geth rakudo/rescalar: 2e78e6b2b6 | (Jonathan Worthington)++ | 2 files
Start switching to null descriptor to meaning ro

This updates the code behind the `isrwcont` and various other things inside of the VM that care about rw-ness (such as the multi cache) to just use the presence or absence of a container descriptor to decide rw or not for Scalar.
jnthn No extra regressions from that part 16:15
Geth rakudo/rescalar: 968b73dfa0 | (Jonathan Worthington)++ | src/Perl6/Metamodel/BOOTSTRAP.nqp
Stop checking the ContainerDesciptor rw flag

The assignment logic now also simply uses the absence of the descriptor to mean it is writable.
16:23 robertle joined
timotimo "35 additions and 53 deletions" :) 16:24
ilmari shouldn't that be s/ab/pre/? 16:25
jnthn ilmari: oops, yes
timotimo that's for abpre ski 16:26
16:27 huggable joined, ChanServ sets mode: +v huggable 16:28 lizmat left
jnthn Seems I've now got rid of the rw flag entirely, thus shrinking ContainerDescriptor too 16:34
16:34 j3nnn1 joined, AlexDaniel left
Geth rakudo/rescalar: c002ff1e30 | (Jonathan Worthington)++ | 5 files
Remove now-unused `rw` from ContainerDescriptor
jnthn Next up will be to get the JVM fixed up for these changes 16:44
*JVM backend
And then I can dig in to the elimination of $!whence 16:45
And then spesh plugins :)
16:46 ggoebel left
brrt jnthn++ 16:49
17:05 cognominal left, ggoebel joined 17:11 lizmat joined
lizmat weekly: 17:13
notable6 lizmat, Noted!
Geth rakudo/pod-slang-tbrowder: 94 commits pushed by 14 authors
17:28 PufferBot left 17:31 Zoffix joined
Zoffix New blog post: "A Call to Action: Polish Perl 6 First Steps Experience": 17:38
lizmat Zoffix++ 17:42
notable6 lizmat, Noted!
.oO( Why Polish? Why not Czech? :P )
lizmat I guess Zoffix wants us to Czech it out ? 17:44
Zoffix :)
timotimo #CzechALook 17:49
17:56 cognominal joined 17:57 Zoffix left
jnthn Zoffix++ # good initiative :) 17:58
Maybe I'll suffer a look at the Windows build :)
And see if I can do anything
timotimo i was able to build a 32bit one using appveyor + RDP, but for some reason i had to cut out the mathematical symbols for pi and e 18:00
jnthn o.O
timotimo the parser would complain if i left them in
also, it was just a regular rakudo build, not a rakudo star build or msi
geekosaur if it needs to bootstrap using the older version, the old parser wasn't handling unicode in the setting yet? 18:03
timotimo no, that was the core setting, that's always the current parser
18:28 AlexDaniel joined 18:41 dogbert17 joined
dogbert17 timotimo: shouldn't be labeled 'testneeded' ? 18:42
lizmat dogbert17: label added 18:51
dogbert17 lizmat++ 18:53
timotimo thank you 18:54
18:58 brrt left
lizmat 19:08
afk for a bit&
jnthn Pretty sure there's no way to do that, or at leaest if there is it's an epic unsupported hack :) 19:32
19:36 dct joined 19:45 robertle left 19:48 Zoffix joined
lizmat jnthn: is there a reason to not make something like that possible somehow ?
jnthn lizmat: I sorta wonder if it's in macro-like teritory :) 19:49
lizmat oh, that it definitely is
Zoffix m: BEGIN '/tmp/20180713'.IO.mkdir.add('Foo.pm6').spurt: 「sub EXPORT { $*W.add_phaser: $*LANG, 'LEAVE', { say 'meow' }; {} }」; use lib </tmp/20180713>; { use Foo; say "cat says" }; { use Foo; say "dog says" }; { use Foo; say "chicken says" }
camelia cat says
dog says
chicken says
timotimo that situation is very similar to the "stand back, i know regular expressions" comic 19:50
geekosaur also fits "unsupported", I suspect :p
lizmat actually, if that works :-)
Zoffix Yeah, that's totally unsuppoorted 19:51
lizmat hmmm... setting $/ to $*LANG works ? 19:52
Zoffix m: BEGIN say $*LANG.^name 19:53
camelia Perl6::Grammar
Zoffix yeah, 'cause IIRC $/ would be Perl6::Grammar object and $*LANG is that object. Dunno if it's actually needed there, it's prolly used just for :node annotations 19:54
lizmat is going to run with that :-) 19:55
gfldex is $*W speced? 19:57
Zoffix gfldex: nope 19:59
20:03 Zoffix left
lizmat wee, Zoffix++ It works :) 20:15
argh no :-( 20:18
whee, it does :-) 20:19
fg 20:20
geekosaur No jiush job.
way to wreck it >.>
timotimo fg: there are no suitable jobs 20:23
AlexDaniel bash: fg: current: no such job 20:24
geekosaur just went with ancient csh :p 20:26
timotimo mine's fish
geekosaur and then botched it anyway because fingers, what fingers
21:05 cognominal left 21:10 MasterDuke joined, cognominal joined 21:42 skids left 22:35 dct left 22:38 lizmat left 22:53 lizmat joined 23:18 skids joined 23:26 j3nnn1 left