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.
Geth roast: 3f056e33b8 | (Zoffix Znet)++ | docs/announce/6.d.md
Add 6.d announcement
00:29
Zoffix holy shit 00:31
2018.09 zoffix@VirtualBox~/R/rakudo/t/spec (6.d)$ G '#?rakudo' . | wc -l
1873
ain't nobody got time for that
1302 for '#?rakudo ' 00:32
00:33 cognominal-p6 joined
Zoffix I'm leaving them in then. It will be just purely a policy thing: fudged stuff in a spec with no working mostly-usable implementation does not imply that feature was definitely decided to be part of the spec. 00:33
00:34 p6bannerbot sets mode: +v cognominal-p6
AlexDaniel oh wow 00:40
Zoffix++
Geth rakudo: 7a85985d0b | (Zoffix Znet)++ | tools/update-passing-test-data.pl
Fix shebang
Zoffix ?
AlexDaniel Zoffix: it is actually happening, this is so great 00:41
Zoffix I'm leaving files that are in roast but not in Rakudo's t/spectest.data as well, even though we originally wanted to nuke them ('cause no PoV). We already did 6.c with fudges/dead files. We can survive another version. 00:42
(there's like a screenful of them and I don't want to blindly nuke them) 00:43
Geth roast: d694464998 | (Zoffix Znet)++ | README.md
Document SAP is not included in releases
00:45
roast/6.d: 8559d91f4b | (Zoffix Znet)++ | 9 files
Delete appendices for release
00:46
00:57 cognominal-p6 left
Zoffix ZOFFLOP: t/spec/S09-typed-arrays/native-int. 01:10
Parse errors: Bad plan. You planned 1652 tests but ran 225. 01:11
Geth roast/6.d: 6f831af20b | (Zoffix Znet)++ | 1404 files
Switch to explicit `use v6.d` pragma for released spec
01:13
01:21 lizmat left 01:23 dalek left, dalek joined, ChanServ sets mode: +v dalek, dalek left, dalek joined, ChanServ sets mode: +v dalek 01:24 p6bannerbot sets mode: +v dalek
Zoffix ZOFFLOP: t/spec/S05-mass/properties-script.t 01:34
MasterDuke just got a 'MoarVM panic: Register types do not match between value and node' in t/02-rakudo/12-proto-arity-count.t 01:36
Geth roast/6.d: 99d64b36ac | (Zoffix Znet)++ | 21 files
Replace new exceptions by Exception

As discussed, new exceptions did not receive much thought in naming and organization, so we'll exclude them from 6.d release to have a chance to redesign them better if needed.
These exceptions were found by doing 6.c-errata/6.d: ... (5 more lines)
01:41
roast: c2c7e1a8f7 | (Zoffix Znet)++ | S24-testing/fails-like.t
Use 6.c exception for testing fails-like

6.d exceptions are being removed from 6.d release
01:44
roast/6.d: cb6fe96e0c | (Zoffix Znet)++ | S24-testing/fails-like.t
Use 6.c exception for testing fails-like

6.d exceptions are being removed from 6.d release
01:45
roast: jmaslak++ created pull request #496:
Tests listening on port 0 returns usable tap with whenever
Zoffix is about to tag 6.d branch 01:46
Been awhile since I tagged anything
AlexDaniel: do you want to tag stuff? :)
1 sec tho, lemme do final changelog/authors corrections form #perl6 and then I'm ready 01:47
Geth roast: cb3b079a13 | (Zoffix Znet)++ | docs/announce/6.d.md
Fix typos and duplicate names
01:51
roast/6.d: b0c8e4ec64 | (Zoffix Znet)++ | docs/announce/6.d.md
Fix typos and duplicate names
Zoffix I guess it's night in Europe and AlexDaniel is sleeping 01:54
Zoffix tries to remember how to sign stuff
"error: gpg failed to sign the data" great... 01:57
ah, k, no keys on this box thatss why 01:59
OK. I'm ready to go. 02:00
Signing and finishing off in 10m. Speak now or forever hold your silence :)
Geth roast: cbb9d5863a | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/announce/6.d.md
Nuke one more dupe name
02:24
02:24 Kaiepi left, Kaiepi joined
Geth roast/6.d: 96cbdabc3b | (Zoffix Znet)++ | docs/announce/6.d.md
Nuke one more dupe name
02:25
Zoffix Kaiepi: so what are you legalizing? P)
02:25 p6bannerbot sets mode: +v Kaiepi 02:30 Kaiepi left
AlexDaniel Zoffix: I don't have a schedule, unfortunately. It's 04:32 AM and I'm not sleeping 02:32
there's a graph here: github.com/AlexDaniel/orgsleep
Zoffix AlexDaniel: well, I already figured out how to tag :)
Nice sleepping pattern tho :) 02:33
AlexDaniel when I don't feel like a zombie, yeah… usually I do
Zoffix: but what are we tagging exactly?
some roast commit?
Zoffix AlexDaniel: 6.d release in roast
Like, I'm in 6.d branch and I'm gonna run git tag and tag it with `6.d` tag and leave it that way. 02:34
That works right?
No merges to master (it has stuff that was removed from release)
AlexDaniel yeah, totally fine 02:35
master branch is also somewhat arbitrary, it's just the default branch
you can also create tags even if you're not on any branch, and it should work fine I think (although people will probably be a bit surprised) 02:36
if I understand correctly, the branch will be merged back into master, no?
but even if not it's fine too… whatever, just push :) 02:37
Zoffix No, no merges to master 02:38
Basically the difference between 6.d branch and master right now is that 6.d branch had APPENDICES and 6.d exceptions removed 02:39
and `use v6` was changed to `use v6.d`
god marketing repo is unclonable -_- takes ages 02:40
AlexDaniel ah, ok
I see
these changes probably need to be mentioned in the release guide, so that we do the same for v6.e 02:41
Zoffix Yeah, I'm gonna mop everything up later in the week 02:42
AlexDaniel :o now both 6.c-errata and 6.d-errata branches need to be tested when doing the release :o
which is fine
Zoffix crap 02:52
cpan@perlbuild4~/R/rakudo/t/spec (6.d)$ git push
error: src refspec 6.d matches more than one.
error: failed to push some refs to 'github.com/perl6/roast'
AlexDaniel: is that normal?
AlexDaniel what's the name of the branch?
Zoffix 6.d
AlexDaniel I'm pretty sure that has to be 6.d-errata 02:53
Zoffix AlexDaniel: is there an easy way to rename a branch? I've just pushed a 6.d tag
AlexDaniel just `git checkout -b 6.c-errata`
oops 6.d-errata
Zoffix AlexDaniel: and what happens with 6.d branch? 02:54
AlexDaniel we delete it :)
Zoffix k, that worked. AlexDaniel++ 02:56
AlexDaniel I changed the branch protection rule to *-errata on github
so any errata branch is protected automatically
kinda cool 02:57
Zoffix: yeah, that looks normal! 02:59
geez I still can't believe how fast 6.d happened 03:00
and tbh amazed how Zoffix++ did it almost single-handedly 03:01
Geth roast: 3a37f5b713 | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/announce/6.d.md
Add brochure link to announcement
03:03
roast: 4731f5164b | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/announce/6.d.md
Oops, wrong brochure link
03:04
Zoffix 😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍 03:07
Announcing: Raku Perl 6 'Diwali' 6.d Specification Release: blogs.perl.org/users/zoffix_znet/20...lease.html
😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍😍
03:08 ufobat___ joined
MasterDuke Zoffix++ 03:09
03:09 p6bannerbot sets mode: +v ufobat___, PufferBot joined 03:10 p6bannerbot sets mode: +v PufferBot
AlexDaniel “release process will start on 2018-11-17” he-he… yeah, that's more accurate… :X 03:11
03:12 ufobat_ left, Kaiepi joined 03:13 p6bannerbot sets mode: +v Kaiepi
Kaiepi Zoffix, on other servers my vhost is [email@hidden.address] a reference to a copypasta 03:13
Zoffix I see 03:17
Geth roast: c5bf699892 | (Zoffix Znet)++ | S32-list/toggle.t
Revert "Temporarily remove .toggle tests"

This reverts commit 6879061884baa16b946acb4c41749e22c2215581.
We're past 6.d release and this is fine to go into 6.e propspec
03:21
03:52 cognominal-p6 joined 03:53 cognominal-p6 left, cognominal-p6 joined 03:54 p6bannerbot sets mode: +v cognominal-p6 03:56 MasterDuke left 04:17 cognominal-p6 left
Zoffix MasterDuke: just noticed the same error on docs travis build: R#2477 04:34
synopsebot R#2477 [open]: github.com/rakudo/rakudo/issues/2477 MoarVM panic: Register types do not match between value and node
04:57 Zoffix left
Kaiepi working away on implementing getsockopt/setsockopt support 05:43
i'm starting out by adding a getsockopts op that can be used in rakudo to get an enum of the available socket options similar to how signals work
s/work/\0s/ 05:44
after that it's just a matter of adding getsockopt/setsockopt ops, which should be a bit less annoying to write 05:45
apart from the jvm, it makes things a bit more complicated the way it deals with socket options 05:46
some socket options that'd work with async sockets on moar won't work with them on the jvm, like SO_OOBINLINE 05:48
05:51 robertle left 06:07 ufobat___ left
nine Zoffix: massive congratulations on 6.d! Sometimes really all it needs is someone to just do it :) 06:24
Kaiepi bastille% perl6 -e 'say +SO_OOBINLINE.base: 16' 06:38
100
06:38 PufferBot left
Kaiepi \o/ partway there 06:38
07:13 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 07:27 cognominal-p6 left, cognominal-p6 joined 07:28 p6bannerbot sets mode: +v cognominal-p6 07:37 cognominal-p6 left
Geth nqp: Kaiepi++ created pull request #515:
[WIP] Implement getsockopt/setsockopt support
07:42
07:43 robertle joined 07:44 p6bannerbot sets mode: +v robertle
Geth rakudo: Kaiepi++ created pull request #2478:
[WIP] Implement .set-option/.get-option for async and INET sockets
07:45
[Tux] Rakudo version 2018.10-77-g7a85985d0 - MoarVM version 2018.10-74-g2fdde4a21
csv-ip5xs0.942 - 1.011
csv-ip5xs-207.098 - 7.349
csv-parser24.462 - 25.407
csv-test-xs-200.435 - 0.436
test7.563 - 8.256
test-t1.903 - 1.937
test-t --race0.835 - 1.034
test-t-2031.973 - 35.587
test-t-20 --race10.079 - 12.455
08:21
I'll do a second run later today
08:31 dct joined, p6bannerbot sets mode: +v dct 08:50 dct left 09:01 ufobat joined 09:02 p6bannerbot sets mode: +v ufobat 09:27 lizmat joined, p6bannerbot sets mode: +v lizmat
|Tux| What is the promoted way to support transparent «my $x = foo(grey => 1);» === «my $x = foo(gray => 1);» 10:18
as in attribute aliasses 10:19
lizmat provide a infix:<eqv>(foo:D $a, foo:D $b) { ... } 10:20
*infix:<===> # duh
timotimo i don't think that's what tux means 10:21
[Tux]: you'll want grey => gray => $gray or :grey(:$gray)
i think :grey(:gray($g)) will also work?
|Tux| will it impose a speed penalty? 10:22
and yes, what timotimo suggests 10:23
lizmat I think 2 is still fast pathed, 2+ is definitely much slower
which means you're probably better off doing a *%_ and then checking %_<gray> // %_<grey> // %_<g>
timotimo yeah, we have special ops for the case where it's only 2
|Tux| so «sub foo(Int $gray); my $x = foo(gray => 1);» → «sub foo(Int :grey($gray); my $x = foo(grey => 1); my $y = foo(gray => 1);» ? 10:25
another question, probably to lizmat : to check if my list only contains unique elements, I do «@row.Bag.elems == @row.elems» 10:29
lizmat .unique is probably faster 10:30
|Tux| if that fails, what is the fastest way (or the most perl6-ish way to non-destructively report the duplicates?
|Tux| looks up the docs for unique
lizmat hmmm.. you only want to know *if* there are any duplicates... 10:31
|Tux| yes, and *if* there are duplicates, I want to report the duplicates and FAIL. at this point speed is not important anymore 10:32
I was thinking about .Bag and grepping where count > 1 10:35
lizmat would you need to know *all* of the doubles? 10:36
then yes
@row.Bag.grep: *.value > 1 10:37
|Tux| yes, I want to know all of the doubles and their count, so Bag is perfect. But I was wondering if there were new tools to get them
@row.unique.elems == @row.elems or self!fail (1013, @row.Bag.grep (*.value > 1) 11:02
.map({ "{$_.key}({$_.value})" }).join: ", ");
works perfectly
11:03 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 11:04 cognominal-p6 left 11:05 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6
|Tux| is there a way to see if a parameter is passed at all? (other than setting a bizarre default and checking on it). Where not passed is different from passed with a default undefined 11:25
«method foo(Int Bar);» and $a.foo() should be different from $a.foo(Int) 11:26
lizmat [Tux]: multi method foo() { }; multi method foo(Int Bar) { } 11:54
|Tux| that would be undoable with 10+ possible (named) arguments 12:06
|Tux| imagines something like «method foo (Int bar) { if $bar.provided { ... } }» 12:07
lizmat [Tux] : if it is about named args, you can still do the perl 5 approach, by just slurping all nameds into a hash and look at them "manually" 12:30
|Tux| that has multiple disadvantages 12:31
1. type checking
2. default
3. documentation
4. program changes
lizmat how would you do it in Perl 5 ? 12:33
|Tux| not :) 12:34
lizmat ah, ok
|Tux| I ended up with this:
if ($key.defined) {
$out //= Hash if $out === Any;
lizmat m: my %h = a => "b"; my Int \a = %h<a> # perhaps that could be a way ? 12:35
camelia Type check failed in binding; expected Int but got Str ("b")
in block <unit> at <tmp> line 1
lizmat m: my %h = a => 42; my Int \a = %h<a>
camelia ( no output )
lizmat by binding to a variable, the typecheck is applied
m: my %h = a => "b", b => 27; my Int \a = %h<c> // %h<a> # using alternatives 12:36
camelia Type check failed in binding; expected Int but got Str ("b")
in block <unit> at <tmp> line 1
|Tux| is backporting(forward porting) changes to Text::CSV_XS to Text::CSV
lizmat m: my %h = a => "b", b => 27; my Int \a = %h<c a>:v.head # using a slice 12:38
camelia Type check failed in binding; expected Int but got Str ("b")
in block <unit> at <tmp> line 1
Kaiepi what nqp ops are there that take a list as an argument? 12:39
or a hash
never mind, found some in the docs 12:47
|Tux| lizmat, pushed. feel free to optimize :P 12:59
Rakudo version 2018.10-77-g7a85985d0 - MoarVM version 2018.10-74-g2fdde4a21
csv-ip5xs0.888 - 0.902
csv-ip5xs-206.929 - 6.973
csv-parser21.344 - 21.610
csv-test-xs-200.430 - 0.432
test7.966 - 8.513
test-t1.736 - 1.784
test-t --race0.804 - 0.840
test-t-2029.750 - 30.369
test-t-20 --race10.361 - 10.491
13:14
13:48 ggoebel left 14:06 cognominal-p6 left
dogbert2_ Hmm, so the 32 bit build is still broken 14:22
14:28 tbrowder_ joined, p6bannerbot sets mode: +v tbrowder_ 14:33 tbrowder_ left 15:49 cognominal-p6 joined 15:50 p6bannerbot sets mode: +v cognominal-p6
b2gills |Tux|: You could probably use `.repeated()` => `if @row.repeated() -> \repeats { self!fail( 1013, repeats.Bag.map({ "{$_.key}({$_.value+1})" }).join: ", "); }` 15:52
|Tux| isn't repeated about entries being adjacent? 15:53
b2gills m: (0,1,0).repeated.say
camelia (0)
b2gills .repeated() is the inverse of .unique() 15:54
not of .squish()
|Tux| just read the docs. Thanks
b2gills Anyway `if .repeated() {…}` is going to be more performant than `.unique.elems` 15:58
m: (gather for ^10 { .say; take 0 }).repeated.Bool
camelia 0
1
b2gills It might have to be `@row.repeated.cache` 15:59
|Tux| only "problem" is that the syntax you posted isn't supported under Slang::Tuxic 16:00
b2gills I've been trying to think of a way to do something like `andthen` except that .repeated() always returns an instance of Seq 16:01
|Tux| if (my @dup = @row.repeated) { self!fail (1013, @dup.Bag.map ({ "{$_.key}({$_.value+1})" }).join: ", "); } 16:02
that PASSes. I'll go for that
b2gills Perhaps Slang::Tuxic needs `if( my $v = … ){…}` to translate to `if … -> $v {…}` 16:03
|Tux| I think FROGGS might say "Patches weelcome" and/or give you commit :) 16:06
timotimo [Tux]: i believe you can use destructuring of a slurpy hash to get type checking and defaults and binding to variables back 16:18
|Tux| lets not overcomplicate :) 16:19
my current implementation works for «my $h = csv (in => "file.csv", key => "code")» *and* for «my $h = csv (in => "file.csv", key => [ ":", "code", "color" ]);» 16:20
16:23 cognominal-p6 left 16:40 pyrimidine joined 16:41 p6bannerbot sets mode: +v pyrimidine 16:52 cognominal-p6 joined 16:53 p6bannerbot sets mode: +v cognominal-p6 16:54 cognominal-p6 left, cognominal-p6 joined 16:55 p6bannerbot sets mode: +v cognominal-p6 17:22 lizmat left 17:43 ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy 17:58 cygx joined, p6bannerbot sets mode: +v cygx
stmuk_ is IRC safe again? 18:01
cygx still some discussions happening in #perl6 re YAPC Riga 18:03
btw, I would still like to see tighter integration between Perl5 and Perl6 happen 18:05
does anyone have any thoughts on something like this: gist.github.com/cygx/de15015296c90...3bd1df526c
nine: would that ^^^ work?
stmuk_ that looks like the old v5! 18:06
cygx no, old v5 actually parsed Perl5 - this would only have to detect blocks (and thus must have some idea about quoting constructs as well) 18:08
also, unless someone comes up with something more sophisticated, as written, access to foreign lexicals would be read-only 18:10
18:14 lizmat joined, p6bannerbot sets mode: +v lizmat 18:26 ExtraCrispy left 19:10 go|dfish left 19:11 go|dfish joined, p6bannerbot sets mode: +v go|dfish
cygx .tell nine does this sound viable to you: gist.github.com/cygx/de15015296c90...3bd1df526c 19:13
yoleaux cygx: I'll pass your message to nine.
cygx o/
19:13 cygx left
Geth rakudo: 8b93ec9f50 | (Elizabeth Mattijsen)++ | 4 files
Give QuantHashes proper .of / keyof methods

So that hyper methods may actually properly recognize them.
Note that properly parameterizing Associative gave rise to all sort of weird errors during the building of the setting. Which is why the local overrides.
19:43
19:48 reportable6 left
nine .tell cygx I've been thinking about that for years actually :) The trick is to find the end of the v5 block. If you can do that, the rest seems easy. metacpan.org/pod/PPR seems to be the best bet for that 19:49
yoleaux nine: I'll pass your message to cygx.
19:49 reportable6 joined, ChanServ sets mode: +v reportable6, p6bannerbot sets mode: +v reportable6 19:51 patrickb joined, p6bannerbot sets mode: +v patrickb 20:31 lgtaube joined 20:32 p6bannerbot sets mode: +v lgtaube
Kaiepi for implementing getsockopt/setsockopt support, should different vms be able to use different socket options? 20:44
the jvm in particular is lacking a lot of useful options
japhb Kaiepi: I believe the JVM is similarly impoverished WRT signals and such. I think we let it be. 20:50
21:17 pmurias joined, p6bannerbot sets mode: +v pmurias 21:30 brrt joined 21:31 patrickb left, p6bannerbot sets mode: +v brrt
pmurias if I'm running precompiling and running roast tests in the browser what's the sanest way to handle 'use lib' inside them? 21:34
my current approach is to just comment them with a preprocessing step and add a -I 21:35
21:47 brrt left 21:55 robertle_ joined 21:56 p6bannerbot sets mode: +v robertle_ 22:06 robertle_ left
b2gills Call to anyone who uses StackOverflow, discussion of adding [raku] as a synonym for [perl6]: meta.stackoverflow.com/q/376267/1337 22:14
lizmat has answered 22:30
AlexDaniel b2gills: how can the synonym idea work? 23:16
b2gills: does it mean that two tags will be added to each question, or that either one will work fine?
b2gills If you try to tag a post with [raku], it will have the [perl6] tag instead 23:17
AlexDaniel “Whenever you see questions being repeatedly tagged with the wrong or incorrect tag -- or multiple tags that mean the same thing -- it's a good idea to propose a tag synonym.” 23:20
I don't really like the idea of replacing 「raku」 with 「perl6」, but it seems to be the stackoverflow way to deal with this situation 23:21
b2gills If Raku catches on, it can be swapped 23:25
AlexDaniel yeah 23:26
b2gills: so what exactly is preventing me or anybody else to click the button to suggest a synonym? 23:27
b2gills The number in the name of Perl6
The code behind SO thinks that Perl6 is a version of Perl 23:28
Trust me, I tried that first.
AlexDaniel “Version specific synonyms can only be created by moderators” 23:29
hehehe
b2gills: maybe you should add that to your thread 23:30
that moderator intervention is required because of technical limitations… 23:31
23:36 pmurias left
b2gills I was on meta.SO in the very beginning, that used to be the only way to ask for tag synonyms 23:36
jdv79 why can't they just be tagged as both or one or the other? 23:39
b2gills There are rules that have been developed over time. Such an action will not be looked upon favorably. 23:40
AlexDaniel tagging with both means that someone will have to run around and add tags, which is exactly what synonyms are trying to solve 23:41
and keeping them separate is just wrong, it's all about the same language
23:49 lizmat left