Geth nqp/uncurse: 1708955631 | TimToady++ | src/QRegex/Cursor.nqp
make false match stringify to ''

  (rather than blowing up mysteriously with a negative length)
04:51
nqp/uncurse: 98d2333913 | TimToady++ | src/QRegex/Cursor.nqp
Match.Int should return, like, an int

The fact that it was returning a num was confusing rakudo.
[Tux] This is Rakudo version 2017.03-232-gfbc6697da built on MoarVM version 2017.03-128-gc9ab59c6 06:17
csv-ip5xs 3.096
test 12.455
test-t 5.018 - 5.089
csv-parser 12.675
Doing some utf8-c8 tests again, I hit: 06:20
Error encoding UTF-8 string: could not encode codepoint 1314420 (0x140E74), codepoint out of bounds. Cannot encode higher than 1114111 (0x10FFFF)
in block <unit> at 88.t line 21
samcv yeah that codeponit is out of bounds. but. not sure how it relates to utf8-c8 06:24
uhm the error message was changed recently though. but it shouldn't trigger in any *new* locations [Tux] 06:25
can you show me the code?
i updated the error to give specific reasons why encoding failed, one is for unicode surrogates, one is for too high codepoints, maybe another one but those two i remember. the utf8-c8 code can still trigger the error message generation, but it should theoretically not be triggered with utf8-c8 unless something went wrong 06:26
but you can create Str objects with codepoints higher than the UTF-8 allowable limit. and then it will throw when you try and print it to the screen or file etc etc 06:28
[Tux] samcv, www.xs4all.nl/~hmbrand/88.t
just run it till it crashes
samcv i got no crashes
you mean just on repeat?
[Tux] FWIW, this used to fail every run, but jnthn's work made it a lot more stable 06:29
samcv ah k
[Tux] yep, repeat and repeat
samcv actcually what could be fun
[Tux] it is random
samcv generate a coverage report based on thi sfile
oh 06:30
why is it 256.rand
it should be 255 i would think
[Tux] to get *bytes*
0..255 06:31
samcv so 256.rand will never give 256?
[Tux] not that I am aware
but it is an interesting question to ask
samcv let me test it out 06:32
yes it can
m: for ^100000 { die if 256.Int.rand > 255 }
camelia Died
in block <unit> at <tmp> line 1
samcv so it is as i suspected it would happen. try again with 255.Int 06:33
maybe we need bounds checking on the Buf code or something?
m: say Buf.new(256) 06:34
camelia Buf:0x<00>
[Tux] Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint 55555 (0xD903)
in block <unit> at 88.t line 21
samcv hmm it says 00... but. idk if i believe it
ok. so still an issue then
Geth rakudo/uncurse: 74a55548cc | TimToady++ | src/core/Match.pm
bulletproof Match more; Capture does own BUILD
06:35
rakudo/uncurse: cbae90c6f9 | TimToady++ | src/core/Match.pm
submatches come from target, not orig
rakudo/uncurse: 3487674be9 | TimToady++ | src/core/IO/Path.pm
enforce Bool type on $!is-absolute setting

Something's sneaking through as Int and giving the assignment heartburn.
samcv gonna try setting a breakpoint on MVM_string_utf8_throw_encoding_exception 06:40
not sure but jnthn might be interesting in what's happening here and know better 06:45
lizmat Files=1189, Tests=56678, 203 wallclock secs (12.19 usr 4.72 sys + 1193.55 cusr 117.24 csys = 1327.70 CPU) 08:09
nine I wonder why nqp::p6bindattrinvres is an extension op. It doesn't seem to be all that Perl 6 specific. 12:12
jnthn It's not even an op at VM level, just a desugar
lizmat it has a p6 prefix :-)
jnthn Maybe that's not quite true on JVM 12:13
Zoffix c: 2017.03 use Test; like "f\nbar\nber", /\N+/ 12:31
committable6 Zoffix, Ā¦2017.03: Ā«ok 1 - Ā»
Zoffix wtf?
star: use Test; like "f\nbar\nber", /\N+/
camelia ok 1 -
Zoffix Oh 12:32
Never mind.
Zoffix makes another bucket of coffee
c: 2017.03,HEAD class { has uint $.x }.new: :x(2**64-1) 13:02
committable6 Zoffix, Ā¦2017.03: Ā«Ā» Ā¦HEAD(fbc6697): Ā«Cannot unbox 64 bit wide bigint into native integerā¤ in block <unit> at /tmp/EY1TW4ElM7 line 1ā¤ Ā«exit code = 1Ā»Ā»
Zoffix That's got broken innit? 2*64-1 fits into uint?
m: uint.Range.max.say 13:03
camelia 18446744073709551615
Zoffix m: say 2**64-1
camelia 18446744073709551615
nine Maybe, I really should just give up and live with us always loading CompUnit::Repository::Staging. It is after all just one more dependency, loaded once per program run. 13:09
Zoffix feels a dejavu
Ah: irclog.perlgeek.de/perl6-dev/2017-...i_14325179 13:10
nine yep
I didn't want to give up because Staging is also a prototype for any custom repo implementation. They will all face these issues. 13:11
If I give up on this, it'll mean that precompiled modules are linked against the custom repos that were in the chain at installation time. Even if at runtime they'd be completely unnecessary. 13:12
But having sunk so many hours in this, I know that the issues are caused by the compile time EVAL in PrecompilationUnit, but I do not have the slightest idea on how to fix them. I don't have a clue how it adds the reference to the precomp file. 13:13
Also I just hate giving up :) 13:19
Zoffix :) 13:21
[Coke] thanks zofbot for finally forcing him to figure out how to ignore someone on irc. 13:34
Zoffix :D 13:36
That's discrimination against AI!
ZofBot: no wonder you guys want to kill all humans! 13:37
ZofBot Zoffix, Above that, the repeating group will return '???'
MasterDuke Zoffix: any great ideas for a new exception name? 13:42
Zoffix Nope 13:43
MasterDuke X::Parameter::OptionalCan'tBeRW
X::Parameter::RW::Can'tBeOptional
Zoffix Apostrophe in name will cause a riot :)
::OptionalRW 13:44
MasterDuke yeah, i guess since it's already an exception we know there's a problem, and the message will explain it 13:46
[Coke] can't be optional == mandatory? 13:47
MasterDuke m: sub a($b? is rw) {} 13:48
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use 'is rw' on an optional parameter
at <tmp>:1
MasterDuke [Coke]: ^^^ that's the error i'm trying to create an exception for 13:49
::OnlyMandatoryParametersCanBeRW
::OnlyRequiredParametersCanBeRW # i think required is the word we usually use 13:54
Zoffix m: dd chars 'X::Parameter::::OnlyRequiredParametersCanBeRW'
camelia 45
MasterDuke i don't really have anything better than X::Parameter::OptionalRW that isn't crazy long. unless whoever creates the longest exception name wins... 13:57
Zoffix :) 13:58
Geth rakudo/nom: fd26e6e874 | (Zoffix Znet)++ | docs/ChangeLog
Log all changes to date

Documents commits: 0111f10 027aa54 03ef4be 064b585 0672082 08a9735 093bb89 099512b 0c62815 0c7e4a0 0c8bef5 0f9f000 0fc3751 10fe02a 1132b1a 1277fb5 1471527 14b6d5f 15a25da 167a0ed 16f950b 184d499 188b7b1 189615c 1b34ea6 1b9d53c 1bacc61 1ebeeb3 1fea495 213a72c 218f8c4 224e40f 2483d68 2731087 27f5469 2d8ac1e ... (13 more lines)
Zoffix ????????????????????????????????????????????????????????????????????????āœØāœØāœØ????????????????????????????????????????????????????????????
REMINDER: the next Rakudo release is happening this weekend. It may be
delayed until Monday noon, EST time, instead the usual Saturday time.
Please check all your changes have been correctly entered into Changelog
????????????????????????????????????????????????????????????????????????āœØāœØāœØ????????????????????????????????????????????????????????????
Geth rakudo/nom: bb7478446d | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/ChangeLog
Use longer hash part to avoid clash

with another existing commit
14:01
MasterDuke Zoffix++ for giant changelog
[Coke] I would make it more generic. what kind of thing is 'is rw' ?\ 14:05
trait? "InvalidTrait" seems fine. 14:06
and then you can put the deets in the message.
MasterDuke [Coke]++
Zoffix: maybe it should just go in the MoarVM changelog, but `perl6 -e 'run(:out, "bash").out.t.say'` no longer SEGVs (i can't figure out which nqp bump brought that to see if it was already mentioned) 14:16
Zoffix I didn't mention it. Maybe missed it. What's the MoarVM commit that brought it? 14:18
That fixed it
MasterDuke github.com/MoarVM/MoarVM/commit/5e...7351100997 14:20
oh, that's the merge, actual fix was github.com/MoarVM/MoarVM/commit/d5...6b40feb358
Zoffix: can we use Geth from here to show all the commits a moar/nqp bump brought? E.g., `Geth: github.com/rakudo/rakudo/commit/d0...447ca21da` 14:23
Zoffix Geth: ver github.com/rakudo/rakudo/commit/d0...2447ca21da
Geth Zoffix, version bump brought in these changes: github.com/perl6/nqp/compare/2017....2-ga29b818
MasterDuke ah, thanks 14:24
Zoffix It's this one github.com/rakudo/rakudo/commit/3e...9464aac0ed 14:25
Geth rakudo/nom: ee462df3f5 | (Zoffix Znet)++ | docs/ChangeLog
Log 3e275dd in changelog

Fix for IO::Pipe.t
14:26
MasterDuke oh, can you give a moar/nqp commit and find out which version bump commit brought it in?
Zoffix Ah, nope 14:27
I just looked at the date the commit went in and then looked on perl6.fail/release/stats (Commits tab) to find bumps around that date
Normally you can just use bisectable, but run() is restricted 14:30
MasterDuke ah, of course, that would usually work 14:31
Geth rakudo/nom: 6f87290b7a | (Zoffix Znet)++ | lib/Test.pm6
Shorten default description of like/unlike

This amends recent addition[^1] of default descriptions to like/unlike to remove the `$got` text, as it can be a huge chunk of text, making description a mile long.
  [1] github.com/rakudo/rakudo/commit/4b...48393db129
14:50
nqp/uncurse: 341375da59 | TimToady++ | src/QRegex/Cursor.nqp
submatches come from target, not orig
16:19
nqp/uncurse: 223eeb0666 | (Jonathan Worthington)++ | src/how/NQPClassHOW.nqp
Re-work --rxtrace to not trash the cache.

Which, aside from not breaking a bunch of things in the parse when using uncurse, will also make it a load faster.
16:41
roast: 8841383bc6 | (Zoffix Znet)++ (committed using GitHub Web editor) | S19-command-line-options/06-dash-rxtrace.t
Add reminder to not include rxtrace.t in 6.d
16:47
Zoffix .ask nine there's lexical_require branch in roast. Should it be deleted? github.com/perl6/roast/tree/lexical_require 16:50
yoleaux Zoffix: I'll pass your message to nine.
Geth nqp/uncurse: 10 commits pushed by (Samantha McVey)++, (Zoffix Znet)++, MasterDuke17++, TimToady++
review: github.com/perl6/nqp/compare/223ee...f038a43890
17:11
rakudo/uncurse: 12 commits pushed by (Zoffix Znet)++, usev6++, (Samantha McVey)++, TimToady++
review: github.com/rakudo/rakudo/compare/3...394c3c85fa
17:12
rakudo/nom: 8c09c84d64 | (Zoffix Znet)++ | src/core/IO/Path.pm
[io grant] Fix symlink and link routines

  - The original IO Plan planned to reverse args to &symlink and &link,
   however, they are actually correct. The mess up was in IO::Path
   routines were the invocant was treated as the non-existent link.
   With that fixed, issues in &symlink and &link get fixed, with no changes
   to their code
  - Toss the business with :$CWD and take IO() argument as link name instead.
18:21
roast: d4353b6d00 | (Zoffix Znet)++ | S16-filehandles/filetest.t
[io grant] Rewrite .l on broken symlinks test

  - de-confuse $target/$name nomenclature
  - make work with IO grant changes to symlink
  - Catch exceptions on Windows and skip test, as symlink creation
   on Windows cries for admin privs. This addresses the failures
   in this test file reported in #197 and #232
roast: 068951631d | (Zoffix Znet)++ | S16-filehandles/filetest.t
No need for manually touching the file
18:33
roast: 416b746ce9 | (Zoffix Znet)++ | S32-io/io-path-symlink.t
[io grant] Test symlink routines

  - The tests aren't numerous, but due to the special condition on
   Windows, it's easier to keep 'em in a separate file
18:57
rakudo/nom: ac371a4bf2 | (Zoffix Znet)++ | t/spectest.data
Run S32-io/io-path-symlink.t test file
Zoffix ugh 18:58
Zoffix keeps making stupid mistakes
And the tests I was *supposed* to actually write do catch a bug :| 18:59
Geth rakudo/nom: da1dea2ea0 | (Zoffix Znet)++ | src/core/io_operators.pm
[io grant] Fix &symlink and &link

  - fail, not throw
  - don't (wrongly) mess with SPEC and CWD, just take IO() args
19:06
roast: d3ec90719b | (Zoffix Znet)++ | S32-io/io-path-symlink.t
Use fails-like instead of throws-like
19:07
roast: 8fa49e10a4 | (Zoffix Znet)++ | S32-io/io-path.t
[io grant] Test `link` routines

Rakudo impl:
  github.com/rakudo/rakudo/commit/8c09c84d64
  github.com/rakudo/rakudo/commit/da1dea2ea0
19:13
rakudo/nom: 7f73f92a64 | (Zoffix Znet)++ | 4 files
[io grant] Make IO::Path.new-from-absolute-path private

This method exists only to offer a bit of a perf boost and it's very easy to misuse it and end up with exploitable code.
19:40
nine ~~ 19:55
yoleaux 16:50Z <Zoffix> nine: there's lexical_require branch in roast. Should it be deleted? github.com/perl6/roast/tree/lexical_require
nine Zoffix: deleted the lexical_require branch along lexical_module_load, gmr and curli 19:56
Zoffix cool
Was travis bot banned from #perl6 or something? It's still set to report there and I get emails about failures, but I see no travis bot saying anything in the logs 20:25
moritz: or... was the travis bot banned from the chat logs?
MasterDuke_ i just tried creating a new exception in src/core/Exception.pm, and then `if nqp::isnull(%ex) || !nqp::existskey(%ex, 'X::Trait::Invalid') { nqp::die("Cannot use 'is rw' on optional parameter '$varname'") } else { nqp::atkey(%ex, 'X::Trait::Invalid')('bar', 'baz', ...) }` 20:47
geekosaur I haven't seen the travis bot in a while 20:48
MasterDuke_ i.e., i copied what was done in a couple other places in BOOTSTRAP.nqp, but it's following the npq::die branch because `!nqp::existskey(%ex, 'X::Trait::Invalid')` is true 20:49
oh, and in the line before i do `my %ex := nqp::gethllsym('perl6', 'P6EX');` 20:50
anybody have any idea why my new exception isn't being found?
SmokeMachine m: sub a{try $_ == 5} 20:53
camelia WARNINGS for <tmp>:
Useless use of "==" in expression "$_ == 5" in sink context (line 1)
Zoffix ZOFFLOP: t/spec/S11-modules/nested.t 20:55
^ my searchable-in-logs floppers marker 20:56
(until we have a bot doing stresstesting and tracking these)
interesting... got a couple of warnings about $repo-id on *first* run after flop, but then nothing: gist.github.com/zoffixznet/db6211a...0b15e502ec 20:57
Geth rakudo/nom: ff97083419 | (Zoffix Znet)++ | 2 files
[io grant] Straighten up rename, move, and copy

  - Fail not throw
  - Remove broken business with the $SPEC and $CWD; just take IO() args
  - Delegate all the work to IO::Path
  - Use .absolute for $to in error messages, since .Str does not use Path's $!CWD,
   and we pass $!abspath, not self, for the `:from`, so make both args Str
N.B.: we could clean up the code by making all the subs pass captures around, but that'd lose throwage when wrong named args are given. Since there are just a few args, pass them individually by name instead.
20:58
Zoffix Uhhh 21:01
Looks like we have no core way to copy or move a directory? :S
at least rename works :/
Exact same results with Perl 5's File::Copy... guess isn't that important for now. 21:03
geekosaur if you look at p5 File::Copy, you'll find it's not quite as trivial as you might think 21:06
extended attributes, streams, resource forks, ... 21:07
for a "plain old ordinary file" it's simple. not so much once you get into the details
Zoffix I see. 21:08
MasterDuke_ timotimo, nine, lizmat, jnthn: according to git blame you have all created a typed exception in BOOTSTRAP.nqp. any suggestions on my question above? 21:10
lizmat MasterDuke_: have I ? 21:13
yoleaux 14:09Z <brrt> lizmat: one of the things to make param_rp_o and friends JIT is to refactor the arg handling into something more jit friendly
MasterDuke_ lizmat: github.com/rakudo/rakudo/commit/10...b507da2184 21:14
lizmat ah, that 21:15
lines 2437 in src/core/Exception.pm and following is what I think you need to look at 21:16
it initialiizes a hash with code refs
MasterDuke_ lizmat++ that does look promising 21:18
lizmat come to think about it: why aren't they just Callable blocks ? 21:21
I mean, it's not like they should be able to handle a return statement
MasterDuke_ and they're just called directly in BOOTSTRAP... 21:22
lizmat are they ?
MasterDuke_ e.g., `nqp::atkey(%ex, 'X::Assignment::RO')($type);`
lizmat ah, yes, well, if you know it's going to be there, why not :-) 21:23
I guess that stuff is there so that things don't fall apart completely if there's an error in the setting compilation 21:26
moritz Zoffix: the logs certainly do not exclude anyone or anybot 21:31
Zoffix moritz: thanks. 21:33
I guess some glitch with travis <-> freenode
Wonder if there's a way to use GitHub's editor to edit more than 1 file for a PR... It makes it dead easy to submit fixes to user's code without forking or cloning anything, but I want to edit the META file too to bump the version :/ 21:38
geekosaur nope
well, for a PR you can but it'll be a separate commit per file
oh, .. just don't edit in place, branch and edit there 21:39
but you don;t have any options beyond make-all-commits or squash-all-commits
not really worth it. I'll use github's editor for quick 1-file changes only 21:40
(generally only to docs; code gets the proper path always just to reduce confusion)
Zoffix ZOFFLOP: t/spec/S17-procasync/kill.t # TODO passed; this one flops very frequently for me 21:42
MasterDuke_ lizmat++ that worked. though i don't know why my new exception shows as `X::Trait::Invalid+{X::Comp}` when i dd it... 21:44
geekosaur does X::Comp? 21:45
(I mean, the definiton has "does X::Comp"?) 21:46
MasterDuke_ `my class X::Trait::Invalid is Exception {`
lizmat m: role A {}; class B does A {}; dd B but A 21:47
camelia B+{A}
lizmat m: role A {}; class B {}; dd B but A
camelia B+{A}
lizmat
.oO( it's a B but not as we know it )
21:48
MasterDuke_: so I guess somewhere a "but X::Comp" happens
MasterDuke_ m: sub ($x is rw) { $x = 3 }(my int $b = 4); CATCH { dd $_ }
camelia X::Parameter::RW.new(got => 4, symbol => "\$x")
Parameter '$x' expected a writable container, but got Int value
in sub at <tmp> line 1
in block <unit> at <tmp> line 1
lizmat or .^mixin 21:49
m: role A {}; class B {}; dd B.^mixin(A)
camelia B+{A}
MasterDuke_ X::Parameter::RW is also in the same hash, and thrown in BOOTSTRAP the same way as mine 21:50
it is runtime and not compile time though...
`my class X::Parameter::RW is Exception {` 21:51
there are other exceptions that have `does X::Comp` in their definition, so maybe it's fine 21:52
lizmat MasterDuke_: I don't have an explanation as of yet 21:53
if you do "does", it will just compose it into the class
the +{Foo} only happens if the role is mixed in at runtime 21:54
Geth rakudo/nom: 0d9ecae6fe | (Zoffix Znet)++ | src/core/io_operators.pm
[io grant] Remove multi-dir &mkdir

  - Since mode arg is involved, we have a bit of a gnarly interface,
   since we have a case where $mode, $path and $path, $mode both work.
  - The multi-dir multi is entirely untested
  - There's exactly one case in the ecosystem that's using that multi by
   accident, because the user used the $mode, $path order of args
  - By abandoning the multi, we can also take any Cools as path and mode
21:56
MasterDuke_ i'm just doing `nqp::atkey(%ex, 'X::Trait::Invalid')('is', 'rw', 'optional parameter', $varname);`, which is how the rest are called/created
Zoffix ^ that wasn't in the IO plan, but I hope that change is OK 21:57
lizmat Zoffix: fine by me :-) 21:58
Zoffix k :)
lizmat MasterDuke_: looks fine to me :-)
I'm actuallly not sure why that is all needed, and a find_symbol wouldn't work as well
well, I guess this is shorter :-) 21:59
MasterDuke_ yeah, don't really understand why that's happening, but i'll add it as is to the PR and maybe someone can make more sense seeing it in context
lizmat feels to me this is something left over from the Parrot days
moritz writing exception types into a hash was mostly used for throwing them from C code, iirc 22:01
and maybe from the MOP
MasterDuke_ Zoffix, lizmat: github.com/rakudo/rakudo/pull/1061 updated if you care to see the change in context 22:08
Zoffix ZOFFLOP: t/spec/S11-modules/need.t 22:10
Geth rakudo/nom: 6ee71c2c05 | (Zoffix Znet)++ | src/core/IO/Path.pm
[io grant] Coerce mode in IO::Path.mkdir to Int

Fixes LTA error about coercing stuff to native int when, e.g., Str is given as mode.
22:11
rakudo/nom: 4 commits pushed by MasterDuke17++, (Zoffix Znet)++ 22:16
Zoffix will adjust roast to accomodate that ^ 22:17
Geth roast: aaa8472158 | (Harrison Chienjo)++ (committed by Zoffix Znet) | S32-list/flat.t
Add tests for `flat`. (#245)
22:18
Zoffix m: dd (Mu,) eqv (Mu,) 22:42
camelia Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
Zoffix ZofBot: fine, be that way
ZofBot Zoffix, new(str=>'bard '), # Match
Geth rakudo/nom: fa201b7d86 | (Zoffix Znet)++ | t/spectest.data
Run S32-list/flat.t test file
22:44
Zoffix Geth: yo... you're alive, bud? 22:49
"Sorry, this diff is temporarily unavailable due to heavy server load." 22:50
I guess neither are the webhooks
Anyway, commited the change to check for typed exception instead of exact text of the error to both roast master and 6.c-errata. That fixes the breakage by github.com/rakudo/rakudo/pull/1061 22:53
Geth roast: 87674c3bcf | (Zoffix Znet)++ | S32-list/flat.t
Expand `flat` tests

  - Address concerns raised in #245
  - Fixes #230
23:18
roast: 100eb07f87 | (Zoffix Znet)++ | S06-signature/optional.t
Test for typed exception

and not exact text content of the exception.
Aligns the tests with github.com/rakudo/rakudo/pull/1061 fix
23:23
roast/6.c-errata: fd39f02413 | (Zoffix Znet)++ | S06-signature/optional.t
Test for typed exception

and not exact text content of the exception.
Aligns the tests with github.com/rakudo/rakudo/pull/1061 fix
23:25
ugexe m: say mkdir("foo"); # this changed 23:45
camelia mkdir is disallowed in restricted setting
in sub restricted at src/RESTRICTED.setting line 1
in sub mkdir at src/RESTRICTED.setting line 8
in block <unit> at <tmp> line 1
ugexe yeah mkdir the sub returns a list of directories it creates, but mkdir the method must return boolean 23:47
Zoffix All mkdirs returns a Boolean 23:50
What broke?
TimToady zef was apparently relying on the P5 semantics
ugexe they didnt return boolean before 23:51
Zoffix Right, that changed.
Zoffix didn't consider people were using return value for other than "it succeedded" when grepped the ecosystem usage :/ 23:54
TimToady was zef relying on the ability to create multiple dirs?
or just using kind of a fluent idiom?
ugexe @delete-me.append(mkdir(...)) 23:55
Zoffix Just the idiom
FWIW I altered no tests to make that change, so it was unspecced :| 23:56
.IO.mkdir and @delete-us.append: $_ ~$save-to 23:57
s/'~'// if $save-to is an IO::Path
I mean... .IO.mkdir and @delete-us.append: $_ with ~$save-to 23:58
TimToady I suspect it kinda snuck in under the 'anything unspecified works the same as P5' vibe 23:59