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:00
p6bannerbot sets mode: +v cognominal-p6
00:03
cognominal-p6 left,
cognominal-p6 joined
00:04
p6bannerbot sets mode: +v cognominal-p6
00:23
cognominal-p6 left
01:01
Ven` joined
01:02
p6bannerbot sets mode: +v Ven`
01:06
Ven` left
01:09
squashable6 left,
committable6 left,
committable6 joined,
squashable6 joined,
notable6 left,
releasable6 left
01:10
notable6 joined,
p6bannerbot sets mode: +v committable6,
p6bannerbot sets mode: +v squashable6,
greppable6 left,
p6bannerbot sets mode: +v notable6
01:16
fake_space_whale joined
01:17
p6bannerbot sets mode: +v fake_space_whale
01:46
CIAvash[m] left
01:47
eater joined,
p6bannerbot sets mode: +v eater
01:48
CIAvash[m] joined,
p6bannerbot sets mode: +v CIAvash[m],
committable6 left,
squashable6 left
01:49
notable6 left
01:50
undersightable6 left
02:28
CIAvash[m] left,
ilmari_ left,
jnthn left,
p6bannerbot left,
benchable6 left,
bisectable6 left,
coverable6 left,
bloatable6 left,
quotable6 left,
b2gills left,
synopsebot_ left,
Geth left,
p6lert_ left,
dalek left,
aeruder left,
nine left,
ZofBot left
02:30
greppable6 joined,
releasable6 joined,
statisfiable6 joined,
CIAvash[m] joined,
ilmari_ joined,
jnthn joined,
p6bannerbot joined,
cherryh.freenode.net sets mode: +vvvo CIAvash[m] ilmari_ jnthn p6bannerbot,
coverable6 joined,
bisectable6 joined,
benchable6 joined,
bloatable6 joined,
cherryh.freenode.net sets mode: +vvvv coverable6 bisectable6 benchable6 bloatable6,
quotable6 joined,
b2gills joined,
synopsebot_ joined,
Geth joined,
cherryh.freenode.net sets mode: +vvvv quotable6 b2gills synopsebot_ Geth,
p6lert_ joined,
dalek joined,
aeruder joined,
nine joined,
cherryh.freenode.net sets mode: +vvvv p6lert_ dalek aeruder nine,
ZofBot joined,
cherryh.freenode.net sets mode: +v ZofBot,
ChanServ sets mode: +vvv greppable6 releasable6 statisfiable6
02:31
p6bannerbot sets mode: +v tbrowder_,
p6bannerbot sets mode: +v chansen_,
p6bannerbot sets mode: +v SmokeMachine,
p6bannerbot sets mode: +v TimToady,
p6bannerbot sets mode: +v sivoais,
p6bannerbot left,
p6bannerbot joined,
ggoebel left,
timotimo left,
samcv left,
[Coke] left,
tyil left,
dogbert17 left,
a3f left,
nebuchadnezzar left,
DrForr left
02:32
camelia left,
bartolin left,
awwaiid left,
robertle left,
DrForr_ joined,
bartolin joined,
tyil joined,
nebuchadnezzar joined,
dogbert17 joined,
awwaiid joined,
[Coke] joined,
robertle joined,
tyil left,
tyil joined
02:33
timotimo joined,
camelia joined
02:39
[Coke] left,
[Coke] joined
02:43
ChanServ sets mode: +v camelia
|
|||||||||||||||||||||||||||||||||||||||
Geth | ¦ rakudo: AlexDaniel self-assigned SEGV in Audio::Sndfile github.com/rakudo/rakudo/issues/2231 | 02:45 | |||||||||||||||||||||||||||||||||||||
¦ rakudo: AlexDaniel self-unassigned SEGV in Audio::Sndfile github.com/rakudo/rakudo/issues/2231 | |||||||||||||||||||||||||||||||||||||||
¦ rakudo: AlexDaniel assigned to niner Issue SEGV in Audio::Sndfile github.com/rakudo/rakudo/issues/2231 | |||||||||||||||||||||||||||||||||||||||
02:46
samcv joined
02:47
undersightable6 joined,
squashable6 joined,
samcv left,
samcv joined
02:49
ggoebel joined,
a3f joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: ping? ETA? | 02:51 | |||||||||||||||||||||||||||||||||||||
03:00
pavlushka13 joined
03:01
Ven` joined
03:05
[TuxCM] left,
AlexDaniel left,
jdv79 left,
dogbert2 left,
eater left,
japhb left
03:06
x[LGWs4x4i]uG2N0 left,
btyler left,
[TuxCM] joined,
AlexDaniel joined,
jdv79 joined,
dogbert2 joined,
cherryh.freenode.net sets mode: +vvvv [TuxCM] AlexDaniel jdv79 dogbert2,
Ven` left
03:07
eater joined,
japhb joined,
x[LGWs4x4i]uG2N0 joined,
btyler joined,
cherryh.freenode.net sets mode: +vvvv eater japhb x[LGWs4x4i]uG2N0 btyler
03:08
pavlushka13 left
03:13
AlexDaniel left,
AlexDaniel joined,
sinisalo.freenode.net sets mode: +v AlexDaniel,
ChanServ sets mode: +o p6bannerbot
03:16
ChanServ sets mode: +vvvv DrForr_ bartolin tyil nebuchadnezzar,
ChanServ sets mode: +vvvv dogbert17 awwaiid [Coke] robertle,
ChanServ sets mode: +vvvv timotimo samcv undersightable6 squashable6,
ChanServ sets mode: +vv ggoebel a3f
03:19
cognominal-p6 joined,
cognominal-p6 left,
cognominal-p6 joined
03:20
p6bannerbot sets mode: +v cognominal-p6
03:43
cognominal-p6 left
|
|||||||||||||||||||||||||||||||||||||||
samcv | AlexDaniel: just got done flying all day. i will be fully free sat and sunday | 04:41 | |||||||||||||||||||||||||||||||||||||
i must go to sleep now though. will check irc when i wake | 04:42 | ||||||||||||||||||||||||||||||||||||||
05:02
Ven` joined
05:03
p6bannerbot sets mode: +v Ven`
05:07
Ven` left
05:22
committable6 joined
05:23
p6bannerbot sets mode: +v committable6
05:36
fake_space_whale left
05:43
ufobat joined
05:44
p6bannerbot sets mode: +v ufobat
05:53
fake_space_whale joined,
p6bannerbot sets mode: +v fake_space_whale
05:54
pharv joined
05:55
p6bannerbot sets mode: +v pharv
06:22
fake_space_whale left
06:39
cognominal-p6 joined
06:40
p6bannerbot sets mode: +v cognominal-p6
06:48
stmuk_ joined
06:49
p6bannerbot sets mode: +v stmuk_
06:50
stmuk left
06:53
cognominal-p6 left,
cognominal-p6 joined
06:54
p6bannerbot sets mode: +v cognominal-p6
07:02
Ven` joined
07:03
p6bannerbot sets mode: +v Ven`,
cognominal-p6 left
07:05
epony joined,
p6bannerbot sets mode: +v epony
07:07
Ven` left
07:21
a3f left,
a3f joined,
tolkien.freenode.net sets mode: +v a3f,
p6bannerbot sets mode: +v a3f
07:23
[TuxCM] left
07:26
lizmat joined,
p6bannerbot sets mode: +v lizmat
07:36
lizmat left
08:15
epony left
08:31
epony joined,
p6bannerbot sets mode: +v epony
08:50
[TuxCM] joined,
p6bannerbot sets mode: +v [TuxCM]
09:03
Ven` joined
09:04
p6bannerbot sets mode: +v Ven`
09:07
Ven` left
09:45
Ven` joined
09:46
p6bannerbot sets mode: +v Ven`
09:47
Ven` left,
Ven` joined
09:48
p6bannerbot sets mode: +v Ven`
09:59
cognominal-p6 joined
10:00
p6bannerbot sets mode: +v cognominal-p6
10:01
cognominal-p6 left,
cognominal-p6 joined
10:02
p6bannerbot sets mode: +v cognominal-p6
10:09
lizmat joined
10:10
p6bannerbot sets mode: +v lizmat
10:14
Ven` left
10:22
cognominal-p6 left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/post-release-2018.08: fcd45ff802 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm6 Move some iterators from Range to R::Iterator |
11:06 | |||||||||||||||||||||||||||||||||||||
rakudo/post-release-2018.08: a949a16144 | (Elizabeth Mattijsen)++ | src/core/Range.pm6 Rework Range.iterator Most important semantic change is the behaviour of "AAS" .. "ABS" *not* producing just two values |
|||||||||||||||||||||||||||||||||||||||
rakudo/post-release-2018.08: c1e62f0884 | (Elizabeth Mattijsen)++ | src/core/Range.pm6 Restore the "AAS" .. "ABS" behaviour a949a161446d7698e2 changed the behaviour to be a simple .succ based iterator (aka, the second element being "AAT"). This restores the referring to the "..." behaviour, which apparently was TimToady's original intent. ... (5 more lines) |
|||||||||||||||||||||||||||||||||||||||
11:18
brrt joined
11:19
p6bannerbot sets mode: +v brrt
11:26
j3nnn1 joined,
p6bannerbot sets mode: +v j3nnn1
11:37
Ven` joined,
p6bannerbot sets mode: +v Ven`
12:06
brrt left
12:07
brrt joined,
p6bannerbot sets mode: +v brrt
12:15
AlexDani` joined,
p6bannerbot sets mode: +v AlexDani`
12:19
AlexDaniel left
12:29
leastbit joined
12:30
p6bannerbot sets mode: +v leastbit
12:32
Ven` left
12:36
leastbit left
|
|||||||||||||||||||||||||||||||||||||||
|Tux| |
|
12:37 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/post-release-2018.08: fa4fccb11e | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm6 Don't close over anonymous classes in Rakudo::Iterator, part 2 |
12:52 | |||||||||||||||||||||||||||||||||||||
lizmat | disembarking& | 12:53 | |||||||||||||||||||||||||||||||||||||
12:53
lizmat left
12:58
Ven` joined
12:59
p6bannerbot sets mode: +v Ven`
13:10
brrt left
13:29
pharv_ joined,
pharv left
13:30
p6bannerbot sets mode: +v pharv_
13:36
diakopter joined,
p6bannerbot sets mode: +v diakopter
|
|||||||||||||||||||||||||||||||||||||||
nine | Oh boy. explicitly-manage has always been broken but in a different way: all strings marked by that function would always report the encoding that was passed to the function last | 14:11 | |||||||||||||||||||||||||||||||||||||
ye olde class definitions are not closures issue: github.com/rakudo/rakudo/blob/mast...l.pm6#L635 | |||||||||||||||||||||||||||||||||||||||
jnthn | oops | 14:12 | |||||||||||||||||||||||||||||||||||||
[Coke] | good find | 14:14 | |||||||||||||||||||||||||||||||||||||
jnthn | nine++ | ||||||||||||||||||||||||||||||||||||||
nine | I wonder if there is a better way to implement explicitly-manage that won't involve having to check each and every string passed to a native sub for a .cstr method. | 14:15 | |||||||||||||||||||||||||||||||||||||
jnthn | Surely there is | 14:17 | |||||||||||||||||||||||||||||||||||||
nine | Shouldn't the "who's in charge of freeing this string" depend more on the native sub than the string itself? If the sub (or code it passes the string to) will free the string, we need to handle it specially. If not, then not. | ||||||||||||||||||||||||||||||||||||||
14:18
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
nine | Thus the information should be part of the sub's definition. I.e. it should require a CStr instead of a Str. | 14:18 | |||||||||||||||||||||||||||||||||||||
14:19
p6bannerbot sets mode: +v Kaiepi
14:20
pharv_ left
|
|||||||||||||||||||||||||||||||||||||||
nine | The whole thing makes even less sense the more I think about it. explicitly-manage mixes in a role that adds an attribute with a copy of the string in CStr representation. NativeCall will encode the string in the target encoding and only if the string's repr is not CStr free the encoded string afterwards. So why copy the string in the first place? The copy will be GCed just like the original in any case. | 14:28 | |||||||||||||||||||||||||||||||||||||
jnthn | I think the idea was to pass in a string that would become owned by the callee | 14:31 | |||||||||||||||||||||||||||||||||||||
Rather than freeing it after the call | |||||||||||||||||||||||||||||||||||||||
No argument that it's a good solution :P | 14:32 | ||||||||||||||||||||||||||||||||||||||
14:34
skids joined
|
|||||||||||||||||||||||||||||||||||||||
nine | But whether the string would become owned by the callee is a static property of the callee, i.e. whether it contains some call to free() or not. It doesn't depend on the individual string. | 14:35 | |||||||||||||||||||||||||||||||||||||
14:35
p6bannerbot sets mode: +v skids
|
|||||||||||||||||||||||||||||||||||||||
jnthn | Yes, I agree. | 14:35 | |||||||||||||||||||||||||||||||||||||
nine | Luckily there's already quite some machinery implemented for tracking whether a string argument is supposed to be free'd after the call. Which is used to tell the VM that arguments ought to be free'd while returned strings are not. | 14:40 | |||||||||||||||||||||||||||||||||||||
This is just waiting for an explicitly-managed trait on the argument :) | 14:42 | ||||||||||||||||||||||||||||||||||||||
What I absolutely don't understand is why removing that call to explicitly-manage in Audio-Sndfile fixes the segfault. As the compiled native call code doesn't handle the trait it shouldn't change anything. | 14:49 | ||||||||||||||||||||||||||||||||||||||
14:54
pmurias joined
14:55
p6bannerbot sets mode: +v pmurias
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: a778b81a07 | (Paweł Murias)++ | src/vm/js/nqp-runtime/package-lock.json [js] Remove package log with outdated vulnerable package |
14:58 | |||||||||||||||||||||||||||||||||||||
nqp: 0f9772bee7 | (Paweł Murias)++ | src/vm/js/nqp-runtime/io.js [js] Make nqp::istype and boolification work on directory handles |
|||||||||||||||||||||||||||||||||||||||
nqp: b47d5ef585 | (Paweł Murias)++ | 3 files [js] Make nqp::getppid and nqp::getpid return -1 in the browser |
|||||||||||||||||||||||||||||||||||||||
nqp: c22105be09 | (Paweł Murias)++ | src/vm/js/nqp-runtime/core.js [js] Make nqp::backendconfig work in the browser |
15:04 | ||||||||||||||||||||||||||||||||||||||
15:06
leastbit joined,
leastbit left
15:16
fake_space_whale joined
15:17
p6bannerbot sets mode: +v fake_space_whale
15:18
pharv joined
15:19
p6bannerbot sets mode: +v pharv
15:37
[TuxCM] left
16:08
Ven` left
16:50
Ven` joined,
p6bannerbot sets mode: +v Ven`
17:03
[TuxCM] joined
17:04
p6bannerbot sets mode: +v [TuxCM]
17:55
pharv left
17:56
pharv joined,
p6bannerbot sets mode: +v pharv
18:25
ggoebel left
18:30
Ven` left
18:43
Ven` joined
18:44
p6bannerbot sets mode: +v Ven`
18:47
ggoebel joined
18:48
p6bannerbot sets mode: +v ggoebel
18:52
Ven`` joined,
Ven` left
18:53
p6bannerbot sets mode: +v Ven``
19:01
pharv left
19:02
pharv joined,
pharv left
19:03
pharv joined
19:04
p6bannerbot sets mode: +v pharv,
pharv left,
pharv_ joined
19:05
p6bannerbot sets mode: +v pharv_,
pharv_ left
19:06
pharv joined
19:07
p6bannerbot sets mode: +v pharv,
pharv left,
pharv_ joined
19:08
pharv_ left,
pharv joined
19:09
p6bannerbot sets mode: +v pharv,
pharv left,
pharv_ joined
19:10
Ven`` left,
p6bannerbot sets mode: +v pharv_
19:12
pharv_ left,
pharv joined
19:13
p6bannerbot sets mode: +v pharv
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: 53053c56bb | (Samantha McVey)++ | tools/build/Makefile-Moar.in Don't store owner or group in our release's tar archive Set owner and group to ID 0 and don't store the same either. This is done so the archive will not show the username of the user who created the release. |
19:13 | |||||||||||||||||||||||||||||||||||||
19:14
pharv left
19:15
pharv joined
19:16
p6bannerbot sets mode: +v pharv
19:21
Keanu733 joined
19:25
Keanu733 left
|
|||||||||||||||||||||||||||||||||||||||
samcv | looks like i don't have push permissions to rakudo/rakudo anymore | 19:39 | |||||||||||||||||||||||||||||||||||||
19:44
stmuk joined,
p6bannerbot sets mode: +v stmuk
19:46
stmuk_ left
20:01
tailgate joined,
p6bannerbot sets mode: +v tailgate
20:04
pharv left,
pharv joined
20:05
p6bannerbot sets mode: +v pharv,
pharv left,
pharv joined
20:06
p6bannerbot sets mode: +v pharv
|
|||||||||||||||||||||||||||||||||||||||
timotimo | samcv: could it be caused by the recent switch-around of roles in the repos? or was that just in perl6/ ? | 20:50 | |||||||||||||||||||||||||||||||||||||
samcv | timotimo: that's what i'm guessing? dunno who to ask to get it fixed | ||||||||||||||||||||||||||||||||||||||
timotimo | i don't seem to have access for that | 20:51 | |||||||||||||||||||||||||||||||||||||
21:04
skids left
|
|||||||||||||||||||||||||||||||||||||||
AlexDani` | samcv: you should have now | 21:29 | |||||||||||||||||||||||||||||||||||||
21:29
AlexDani` is now known as AlexDaniel
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: I locked master so that people push somewhere else :) | 21:30 | |||||||||||||||||||||||||||||||||||||
samcv | ah i can do that from now on | ||||||||||||||||||||||||||||||||||||||
if that's what the new thing is I will do it | |||||||||||||||||||||||||||||||||||||||
21:35
Kaiepi left
21:36
Kaiepi joined,
p6bannerbot sets mode: +v Kaiepi
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 5d1cec5a4c | (Samantha McVey)++ | tools/build/Makefile-Moar.in Don't store owner or group in our release's tar archive Set owner and group to ID 0 and don't store the same either. This is done so the archive will not show the username of the user who created the release. |
21:44 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv++ | 21:48 | |||||||||||||||||||||||||||||||||||||
samcv | s/same/name | ||||||||||||||||||||||||||||||||||||||
jnthn | AlexDaniel: In the future, I think we should have a release branch rather than blocking master. (It's what I plan to have us switch to doing in MoarVM.) | 21:51 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | jnthn: sure, I can do that. In fact I've done that for the last two releases, I think? | 21:52 | |||||||||||||||||||||||||||||||||||||
for me it makes no difference from which branch I release | |||||||||||||||||||||||||||||||||||||||
jnthn: in fact, why future | 21:54 | ||||||||||||||||||||||||||||||||||||||
jnthn | Didn't want to disrupt what you're doing ;) | ||||||||||||||||||||||||||||||||||||||
AlexDaniel unlocks master | |||||||||||||||||||||||||||||||||||||||
jnthn: branches are cheap | 21:55 | ||||||||||||||||||||||||||||||||||||||
cool, there're now github.com/rakudo/rakudo/tree/release-2018.08 github.com/perl6/nqp/tree/release-2018.08 | 21:56 | ||||||||||||||||||||||||||||||||||||||
moarvm side you guys handle yourself please :) | |||||||||||||||||||||||||||||||||||||||
jnthn: fwiw it doesn't resolve the problem fully. Say we're a few days before the release and someone decides to push breaking stuff into master. Do we expect the release branch to exist at that point already? If yes, then all good and needed fixes to master will need to be cherrypicked, so that's a lot of cherrypicking… and if we don't want that, then we're still blocking master, just in a different (less strong) way | 22:01 | ||||||||||||||||||||||||||||||||||||||
I guess something like that is what git flow is attempting to fix, but it has its own issues | |||||||||||||||||||||||||||||||||||||||
jnthn | AlexDaniel: Yeah, there's no perfect option. Probably about the right point to do it is when toaster looks clean enough that "we must be very close" :) | 22:03 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | cool, we'll try it out next time | ||||||||||||||||||||||||||||||||||||||
jnthn | I'm also wondering what it'd take to get more regular toaster runs | 22:04 | |||||||||||||||||||||||||||||||||||||
So far as I can tell, automation + somebody providing a place to run it | 22:05 | ||||||||||||||||||||||||||||||||||||||
22:06
Ven`` joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | basically a rewrite of toaster, see colabti.org/irclogger/irclogger_log...08-12#l652 | 22:06 | |||||||||||||||||||||||||||||||||||||
like, of some parts of it at least | |||||||||||||||||||||||||||||||||||||||
22:06
p6bannerbot sets mode: +v Ven``
|
|||||||||||||||||||||||||||||||||||||||
jnthn | Ah, that'd be a way to make it run in less time, yes | 22:06 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | basically the way it works now is very wasteful, if I understand correctly it will install most modules more than once (sometimes as a dependency) | ||||||||||||||||||||||||||||||||||||||
jnthn | Though how long does a run take with it today? | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | about an hour on the machine I was using | 22:07 | |||||||||||||||||||||||||||||||||||||
but that's google cloud thingy with a bunch of cores | |||||||||||||||||||||||||||||||||||||||
or maybe ≈2 hours, I don't remember | |||||||||||||||||||||||||||||||||||||||
but personally I also want it to bisect right away so that I'm not spending any time on that | 22:08 | ||||||||||||||||||||||||||||||||||||||
jnthn | Hm, like a 32-core one? | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | yeah mine has 24 cores | 22:09 | |||||||||||||||||||||||||||||||||||||
if it can already run tests there's no good reason for it not to run the same tests with a different rakudo, bisecting is also cheap :) | |||||||||||||||||||||||||||||||||||||||
timotimo | have we considered mounting a filesystem that can do snapshots and doing some magic with that for the installation stuff? or maybe trickery with hard links? | ||||||||||||||||||||||||||||||||||||||
22:10
Ven`` left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | timotimo: no, why? Like, what is this going to help with? | 22:11 | |||||||||||||||||||||||||||||||||||||
timotimo | i should perhaps have read that irclog :D | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | and now that I figured out that zef has --to thingy, it looks even easier | 22:15 | |||||||||||||||||||||||||||||||||||||
also it sounds like fun project to work on if you have time, so if anybody is looking for a way to contribute ;) ;) ;) | 22:17 | ||||||||||||||||||||||||||||||||||||||
jnthn | I'd guess one could just topo-sort the whole ecosystem, and then install/test that way? | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | jnthn: yes | ||||||||||||||||||||||||||||||||||||||
jnthn | It's fun but I'm not exactly short of things to do :P | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | yeah that's exactly what I mean | ||||||||||||||||||||||||||||||||||||||
I wish we had something like GSoC or similar | 22:18 | ||||||||||||||||||||||||||||||||||||||
jnthn | Indeed | ||||||||||||||||||||||||||||||||||||||
22:33
diakopter left
22:54
pmurias left
22:56
dalek left
23:16
j3nnn1 left
23:20
Ven`` joined,
p6bannerbot sets mode: +v Ven``
23:57
pharv left
23:58
Ven` joined,
p6bannerbot sets mode: +v Ven`
|