Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_logs/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by AlexDaniel on 12 June 2018.
AlexDaniel looks at github.com/rakudo/rakudo/commit/472f6e48 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 github.com/rakudo/rakudo/commit/89a4cf0d 09:01
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.`: colabti.org/irclogger/irclogger_log...06-12#l191
Geth rakudo: 874ead515d | (Elizabeth Mattijsen)++ | src/core/Deprecations.pm6
Re-instate DEPRECATED as a global sub for now
09:53
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
ended
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 :-)
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
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
11:08
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...3-ge485ab3
11cf77d330 | (Jonathan Worthington)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
rakudo/rescalar: 11 commits pushed by (Jonathan Worthington)++
review: github.com/rakudo/rakudo/compare/c...21c3b86d13
11:09
rakudo/rescalar: edc3935998 | (Jonathan Worthington)++ | 2 files
Move Scalar CAS internals to NQP
jnthn lunch & 11:10
stmuk 12:06
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]: github.com/rakudo/rakudo/pull/1916 Ease maintenance of Actions.nqp, Grammar.nqp
Geth rakudo/rescalar: 752819868e | (Jonathan Worthington)++ | 2 files
Move Scalar atomic store to NQP code
12:42
rakudo/rescalar: 645b1b63c6 | (Jonathan Worthington)++ | 2 files
Eliminate a bunch of now-dead C code in the extops
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
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
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
japhb
.oO( "Who knew? No one knew. No one could have predicted!" )
15:12
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
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)
16:01
jnthn timotimo: No, it's going way. The above commit should mean we never create one.
*away
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.
16:13
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:21
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
jnthn Seems I've now got rid of the rw flag entirely, thus shrinking ContainerDescriptor too 16:34
Geth rakudo/rescalar: c002ff1e30 | (Jonathan Worthington)++ | 5 files
Remove now-unused `rw` from ContainerDescriptor
16:37
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 :)
brrt jnthn++ 16:49
lizmat weekly: news.ycombinator.com/item?id=17303557 17:13
notable6 lizmat, Noted!
Geth rakudo/pod-slang-tbrowder: 94 commits pushed by 14 authors
review: github.com/rakudo/rakudo/compare/f...4ead515dfe
17:26
Zoffix New blog post: "A Call to Action: Polish Perl 6 First Steps Experience": rakudo.party/post/A-Call-To-Action...Experience 17:38
lizmat Zoffix++ 17:42
weekly: rakudo.party/post/A-Call-To-Action...Experience
notable6 lizmat, Noted!
jnthn
.oO( Why Polish? Why not Czech? :P )
17:43
lizmat I guess Zoffix wants us to Czech it out ? 17:44
Zoffix :)
timotimo #CzechALook 17:49
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
dogbert17 timotimo: shouldn't github.com/rakudo/rakudo/issues/1886 be labeled 'testneeded' ? 18:42
lizmat dogbert17: label added 18:51
dogbert17 lizmat++ 18:53
timotimo thank you 18:54
lizmat stackoverflow.com/questions/508445...-statement 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
Zoffix DID SOMEONE SAY AN EPIC HACK!? 19:48
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
meow
dog says
meow
chicken says
meow
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
:D
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
lizmat wee, Zoffix++ It works :) 20:15
argh no :-( 20:18
whee, it does :-) 20:19
fg 20:20
geekosaur No jiush job.
...
such
way to wreck it >.>
timotimo fg: there are no suitable jobs 20:23
AlexDaniel bash: fg: current: no such job 20:24
NEED MORE COLONS
geekosaur just went with ancient csh :p 20:26
timotimo mine's fish
geekosaur and then botched it anyway because fingers, what fingers