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:13
epony left
00:28
epony joined
00:32
fake_space_whale left
01:00
lizmat joined,
lizmat left
03:03
vrurg left
04:54
statisfiable6 left,
greppable6 left,
nativecallable6 left,
unicodable6 left,
bloatable6 left,
notable6 left,
undersightable6 left,
squashable6 left,
releasable6 left,
committable6 left,
evalable6 left,
shareable6 left,
bisectable6 left,
coverable6 left,
quotable6 left,
reportable6 left,
benchable6 left,
greppable6 joined,
reportable6 joined,
nativecallable6 joined,
committable6 joined
04:55
benchable6 joined,
evalable6 joined,
releasable6 joined,
bisectable6 joined,
ChanServ sets mode: +v bisectable6
04:56
unicodable6 joined,
ChanServ sets mode: +v unicodable6,
coverable6 joined
04:57
undersightable6 joined,
ChanServ sets mode: +v undersightable6,
statisfiable6 joined,
notable6 joined,
quotable6 joined,
ChanServ sets mode: +v quotable6
04:58
bloatable6 joined,
squashable6 joined
04:59
shareable6 joined
05:22
robertle left
06:52
ufobat__ joined
06:55
ufobat_ left
07:20
epony left
07:26
Geth joined
07:27
epony joined
07:52
[TuxCM] left
07:57
lizmat joined
08:12
[TuxCM] joined
08:20
robertle joined
08:32
fake_space_whale joined
09:19
lizmat_ joined
|
|||||||||||||||||||||||||||||||||||||||
[TuxCM] |
|
09:20 | |||||||||||||||||||||||||||||||||||||
09:22
lizmat left
09:27
lizmat_ is now known as lizmat
10:25
pmurias joined
11:06
pmurias left
11:19
lizmat left
11:43
pmurias joined
12:08
lizmat joined
12:51
pmurias left
12:53
pmurias joined
12:54
lucasb joined
|
|||||||||||||||||||||||||||||||||||||||
pmurias | //e/exit | 13:18 | |||||||||||||||||||||||||||||||||||||
13:18
pmurias left
13:23
vrurg joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | I was thinking on making a module that would parse a spesh-log and allow for some object oriented introspection of it | 13:23 | |||||||||||||||||||||||||||||||||||||
does such a thing already exist? timotimo jnthn brrt ^^^ | 13:24 | ||||||||||||||||||||||||||||||||||||||
jnthn | No, though also that format wasn't really designed with easy parsing in mind :) | ||||||||||||||||||||||||||||||||||||||
Though it's relatively regular | 13:25 | ||||||||||||||||||||||||||||||||||||||
Just any parser will be fragile as we add new things to it | 13:26 | ||||||||||||||||||||||||||||||||||||||
lizmat | that's why I was thinking of adding it to the "lib" directory | 13:29 | |||||||||||||||||||||||||||||||||||||
so we can keep it inn sync, similar to Telemetry | |||||||||||||||||||||||||||||||||||||||
jnthn | I'd be more inclined to have a way to request it in a sensible format :) | ||||||||||||||||||||||||||||||||||||||
lizmat | in the long run, I'd agree | 13:30 | |||||||||||||||||||||||||||||||||||||
jnthn | I did discuss that with timotimo recently; was thinking of a profiler option where the hottest code gets its specializations dumped too | ||||||||||||||||||||||||||||||||||||||
lizmat | I was thinking of something like "snapper", which would by default dump all of the nqp::ops that didn't get JITted after the program has run | 13:31 | |||||||||||||||||||||||||||||||||||||
jnthn | (I want that, of course, to be able to get them included alongside the code in Comma, and potentially for some analyses to suggest how to improve performance :)) | 13:33 | |||||||||||||||||||||||||||||||||||||
13:33
squashable6 left
13:35
AlexDani` joined
|
|||||||||||||||||||||||||||||||||||||||
jnthn | It occurs to me that we could, if we had a structured form of the data, even then expose an op where you can query the specializations | 13:36 | |||||||||||||||||||||||||||||||||||||
For a given code objet | |||||||||||||||||||||||||||||||||||||||
c | 13:37 | ||||||||||||||||||||||||||||||||||||||
13:37
squashable6 joined,
ChanServ sets mode: +v squashable6
13:41
AlexDani` is now known as AlexDaniel,
AlexDaniel left,
AlexDaniel joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | kawaii: what's the situation with the release? I'm out of the loop | 13:45 | |||||||||||||||||||||||||||||||||||||
kawaii | AlexDaniel: I've notified the MoarVM guys and awaiting a release from them. | 13:46 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | releasable6: status | 13:47 | |||||||||||||||||||||||||||||||||||||
releasable6 | AlexDaniel, Next release will happen when it's ready. 4 blockers. 61 out of 236 commits logged (ā 51 warnings) | ||||||||||||||||||||||||||||||||||||||
AlexDaniel, Details: gist.github.com/85b139dca0c79365eb...c289fd9c60 | |||||||||||||||||||||||||||||||||||||||
kawaii | I didn't want to keep annoying them though. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | kawaii: what about github.com/rakudo/rakudo/issues/2856 ? | ||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: nine is looking at that afaik... | 13:48 | |||||||||||||||||||||||||||||||||||||
kawaii | So I'm waiting on both a MoarVM release and a fix for 2856 currently. | 13:49 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | are we positive that 2856 is not a Moar issue? | ||||||||||||||||||||||||||||||||||||||
kawaii | Looks like it could be actually. | 13:50 | |||||||||||||||||||||||||||||||||||||
jnthn | It's not | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | ok | ||||||||||||||||||||||||||||||||||||||
jnthn | It's almost certainly due to my change to fix a BUILDALL performance issue, whereby constructing an object with no attributes was inexplicably slower :) | ||||||||||||||||||||||||||||||||||||||
I was about to settle down to fix it 10 minutes ago, then got stolen to look at an urgent $dayjob project issue | 13:51 | ||||||||||||||||||||||||||||||||||||||
lizmat | meanwhile, I've removed the BLOCKER tag, as nine doesn't consider it a blocker for release anymore | ||||||||||||||||||||||||||||||||||||||
jnthn | I suspect it'll be a single line of code to fix, just need some spare moments to figure out which line :) | ||||||||||||||||||||||||||||||||||||||
kawaii | If it's a trivial fix then I don't mind waiting for it alongside the Moar release. | 13:52 | |||||||||||||||||||||||||||||||||||||
jnthn | I hope $urgent-thing will not take me long, so I should get to it soon. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: maybe you can check 2758? Looks like a non-issue if nobody else is complaining, maybe it's already fixed or something? | 13:53 | |||||||||||||||||||||||||||||||||||||
kawaii | Good luck with $urgent-thing | ||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: looking | 13:56 | |||||||||||||||||||||||||||||||||||||
ugexe | if i try to --profile zef it works unless i use sqlite e.g. --profile-filename=demo.sql | 14:20 | |||||||||||||||||||||||||||||||||||||
MoarVM panic: Internal error: zeroed target thread ID in work pass | |||||||||||||||||||||||||||||||||||||||
sqlite profile *does* work if i do MVM_JIT_DISABLE=1 | 14:34 | ||||||||||||||||||||||||||||||||||||||
moarperf, when given the sqlite file or not, just shows a blank page. the only hint is `[ERROR] 403 /js/main.js - ::1` | 14:39 | ||||||||||||||||||||||||||||||||||||||
jnthn | ugexe: Haven't worked on moarperf, but at a guess, main.js would be generated by some kind of frontend build | 14:46 | |||||||||||||||||||||||||||||||||||||
Maybe that failed somehow? | |||||||||||||||||||||||||||||||||||||||
14:46
hankache joined
|
|||||||||||||||||||||||||||||||||||||||
ugexe | jnthn: yeah thats it | 14:47 | |||||||||||||||||||||||||||||||||||||
segfaults generating the flame graph, (or whatever is after it) | 14:53 | ||||||||||||||||||||||||||||||||||||||
timotimo | yeah, did "npm run build" succeed? | 15:03 | |||||||||||||||||||||||||||||||||||||
ugexe | yeah i got past that. now im trying to view the data in moarperf, but it just says 'Hold on...'. I can click through to whatever the second tab is (Routines?), but clicking back to Overview segfaults | 15:06 | |||||||||||||||||||||||||||||||||||||
gist.github.com/ugexe/814d52de9693...b84f1131cf | |||||||||||||||||||||||||||||||||||||||
timotimo | huh. i wonder what's up with that; you could remove the flame graph part of moarperf | 15:07 | |||||||||||||||||||||||||||||||||||||
oh, but the flamegraph succeeded | |||||||||||||||||||||||||||||||||||||||
it isn't even big | |||||||||||||||||||||||||||||||||||||||
ugexe | [OK] 200 /flamegraph-for/0 - ::1 | ||||||||||||||||||||||||||||||||||||||
Segmentation fault: 11 | |||||||||||||||||||||||||||||||||||||||
so its not always the closed socket thing it complains about in the gist either | 15:08 | ||||||||||||||||||||||||||||||||||||||
timotimo | did you try getting a backtrace with gdb? | 15:10 | |||||||||||||||||||||||||||||||||||||
15:12
robertle left
|
|||||||||||||||||||||||||||||||||||||||
ugexe | no gdb on latest osx | 15:13 | |||||||||||||||||||||||||||||||||||||
or rather you can get it, but it doesnt work | |||||||||||||||||||||||||||||||||||||||
timotimo | oh crap | 15:14 | |||||||||||||||||||||||||||||||||||||
lldb at least? | |||||||||||||||||||||||||||||||||||||||
ugexe | perl6-lldm-m just does the initial output from lldb/gdb and never runs the script | 15:20 | |||||||||||||||||||||||||||||||||||||
gist.github.com/ugexe/0621096386c4...9047ac1c76 | 15:21 | ||||||||||||||||||||||||||||||||||||||
timotimo | maybe it doesn't understand the "run" command? | 15:25 | |||||||||||||||||||||||||||||||||||||
i mean the "when you start, immediately run" commandline flag | 15:26 | ||||||||||||||||||||||||||||||||||||||
i've gotta head out now, sorry! | |||||||||||||||||||||||||||||||||||||||
15:32
hankache left
15:37
lizmat left
15:39
lizmat joined
15:43
hankache joined
|
|||||||||||||||||||||||||||||||||||||||
hankache | hello #perl6 | 15:49 | |||||||||||||||||||||||||||||||||||||
can someone have a look at this issue: github.com/rakudo/rakudo/issues/2782 | 15:51 | ||||||||||||||||||||||||||||||||||||||
<3 | |||||||||||||||||||||||||||||||||||||||
lizmat | bisectable6: class A { has $.a; }; class B { has $.b }; class C is B is A { }; say C.new(:a(1), :b(2)) | 15:54 | |||||||||||||||||||||||||||||||||||||
bisectable6 | lizmat, Bisecting by output (old=2015.12 new=cb691da) because on both starting points the exit code is 0 | ||||||||||||||||||||||||||||||||||||||
lizmat, bisect log: gist.github.com/2bf89d7b2cc83eecd9...0360f36043 | 15:55 | ||||||||||||||||||||||||||||||||||||||
lizmat, (2017-10-07) github.com/rakudo/rakudo/commit/16...81067d3f8c | |||||||||||||||||||||||||||||||||||||||
jnthn | Oops :) | 15:56 | |||||||||||||||||||||||||||||||||||||
yoleaux | 15:20Z <guifa> jnthn: sadly I ended up having to go with the custom associative class (re GH question). I managed to find a way to do the backtracking to work well enough to warn my users though the calling file check isnāt the prettiest (one liner, but still). But itās actually given me some cool other ideas for instantiating some other class objects along the way so itās not for naught | ||||||||||||||||||||||||||||||||||||||
jnthn | Hm, but that still doesn't answer much | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | hmm almost 10000 gists on whateverable account | 15:57 | |||||||||||||||||||||||||||||||||||||
jnthn | Does it even need MI I wonder... | 15:58 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | I'll be slapped for that eventuallyā¦ | ||||||||||||||||||||||||||||||||||||||
jnthn | "# Take the first "super"class's BUILDALLPLAN if possible" - the code below that is wrong | 15:59 | |||||||||||||||||||||||||||||||||||||
Pushed a fix for github.com/rakudo/rakudo/issues/2856 in case anything else would be broken by it | 16:02 | ||||||||||||||||||||||||||||||||||||||
hankache: Testing a fix for that issue | |||||||||||||||||||||||||||||||||||||||
hankache | jnthn++ | 16:03 | |||||||||||||||||||||||||||||||||||||
jnthn | The fix works, just need spectest to finish before I push | 16:04 | |||||||||||||||||||||||||||||||||||||
m: use Test; class A { has $.a; }; class B { has $.b }; class C is B is A { }; given C.new(:a(1), :b(2)) { is .a, 1, "Initialization of attributes in multiple inheritance works (1)"; is .b, 2, "Initializatino of attributes in multiple inheritance works (2)"; } | 16:05 | ||||||||||||||||||||||||||||||||||||||
evalable6 | (exit code 1) not ok 1 - Initialization of attributes in multiple inheritance works (1) # ā¦ |
||||||||||||||||||||||||||||||||||||||
jnthn, Full output: gist.github.com/9c6df881dd249a31d3...81ed8be84c | |||||||||||||||||||||||||||||||||||||||
jnthn | hankache: Pushed fix, along with a spectest to cover it :) | 16:09 | |||||||||||||||||||||||||||||||||||||
hankache | jnthn <3 | 16:10 | |||||||||||||||||||||||||||||||||||||
nine | ugexe: github.com/rakudo/rakudo/commit/50...0674e963b1 | 16:21 | |||||||||||||||||||||||||||||||||||||
Good thing the release did not actually happen before the PTS | 16:22 | ||||||||||||||||||||||||||||||||||||||
16:24
vrurg left
16:25
vrurg joined,
vrurg left
16:29
vrurg joined,
fake_space_whale left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | rakudo in debian is currently stuck at 2018.12 anyway | 16:34 | |||||||||||||||||||||||||||||||||||||
16:37
hankache left,
travis-ci joined
|
|||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build errored. Jonathan Worthington 'Merge pull request #2858 from patzim/moar-option-doc | 16:37 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/525013693 github.com/rakudo/rakudo/compare/c...2dc965b97e | |||||||||||||||||||||||||||||||||||||||
16:37
travis-ci left,
hankache joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | i'm back; ugexe, did lldb give you anything? | 16:43 | |||||||||||||||||||||||||||||||||||||
ugexe | changing `lldb $DIR/perl6-m -- "$@"` to `lldb -o run $DIR/perl6-m -- "$@"` makes it run | 16:50 | |||||||||||||||||||||||||||||||||||||
and naturally it doesn't segfault when using lldb | |||||||||||||||||||||||||||||||||||||||
timotimo | ah, of course :( | 16:51 | |||||||||||||||||||||||||||||||||||||
i know that feeling | |||||||||||||||||||||||||||||||||||||||
ugexe | gist.github.com/ugexe/94d6061dcb2f...0440cd993d (this is related to generating the profile) | 17:00 | |||||||||||||||||||||||||||||||||||||
subsequent runs worked (mind you I mentioned earlier i couldnt run that without doing MVM_JIT_DISABLE=1 | |||||||||||||||||||||||||||||||||||||||
timotimo | ah dang | 17:01 | |||||||||||||||||||||||||||||||||||||
ugexe | that command seems to always segfault if i delete .precomp first | 17:04 | |||||||||||||||||||||||||||||||||||||
timotimo | which one? the one that gives "profiler lost sequence" otherwise? | 17:06 | |||||||||||||||||||||||||||||||||||||
ugexe | yeah. but i only got that "profiler lost sequence" once | 17:07 | |||||||||||||||||||||||||||||||||||||
after that it ran | |||||||||||||||||||||||||||||||||||||||
(it wasnt precompiling during that "profiler los sequence" fwiw) | |||||||||||||||||||||||||||||||||||||||
gist.github.com/ugexe/6c246e488490...4e887cfeb7 | 17:08 | ||||||||||||||||||||||||||||||||||||||
i just got profiler lost sequence again | |||||||||||||||||||||||||||||||||||||||
but it didnt dump a stack trace like the previous one | |||||||||||||||||||||||||||||||||||||||
timotimo | "profiler lost sequence" happens when it leaves more frames than it entered, iirc | 17:09 | |||||||||||||||||||||||||||||||||||||
ugexe | oh wait | ||||||||||||||||||||||||||||||||||||||
that error *is* different | |||||||||||||||||||||||||||||||||||||||
MoarVM panic: Profiler lost sequence in continuation control | |||||||||||||||||||||||||||||||||||||||
additional "in continuation control" | 17:10 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | jnthn: github.com/perl6/problem-solving/issues/18 is an interesting one. Is it about the language or is it about the compiler? | 17:23 | |||||||||||||||||||||||||||||||||||||
ugexe | given `-lwc` what if you want a multi MAIN(:$lwc) | 17:26 | |||||||||||||||||||||||||||||||||||||
means you cant have `multi MAIN(:$lwc, :$l, :$w, :$c) | 17:27 | ||||||||||||||||||||||||||||||||||||||
that is inconsistent with a normal subroutine. inconsistent behavior like that should go in external modules. | |||||||||||||||||||||||||||||||||||||||
17:37
[TuxCM] left
17:39
lizmat left
18:01
[TuxCM] joined
18:03
hankache left
18:05
hankache joined
|
|||||||||||||||||||||||||||||||||||||||
bartolin_ | since Geth isn't here: I've just committed github.com/rakudo/rakudo/commit/07b4f74381 as a workaround for the JVM backend | 18:19 | |||||||||||||||||||||||||||||||||||||
18:47
robertle joined
19:17
hankache left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | AlexDaniel: Well, about language in the sense that it's about how MAIN's signatures are interpreted as command line arguments | 19:38 | |||||||||||||||||||||||||||||||||||||
AlexDaniel: Trouble is, I'm not sure one semantics for mapping those can please everybody. | |||||||||||||||||||||||||||||||||||||||
AlexDaniel: Like, if I'm building something in Perl 6, I just use whatever is made easy by the way MAIN's argument handling works :) | 19:39 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | jnthn: wellā¦ the broken ones we have right now only please those who'd be fine with any semanticsā¦ | 19:40 | |||||||||||||||||||||||||||||||||||||
jnthn | But if folks are wanting a matching implementation of something that already exists and need to match its interface, as the person originally opening that issue does, then it's trickier... | ||||||||||||||||||||||||||||||||||||||
AlexDaniel: The other general design principle was that we were meant to 1) transform command line arguments to a Capture, 2) let multi-dispatch take care of the rest | 19:41 | ||||||||||||||||||||||||||||||||||||||
Rather than going and looking through all the signatures and doing ad-hoc matching up of stuff | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | hm | ||||||||||||||||||||||||||||||||||||||
jnthn | So for -lwc you'd have to make a policy that -abc always becomes (:a, :b, :c), for example | 19:42 | |||||||||||||||||||||||||||||||||||||
And so could never match a sub MAIN(:$abc) { } | 19:43 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | that sounds about right, actually. There are tools that do that, but I'm not sure if that's the norm | 19:44 | |||||||||||||||||||||||||||||||||||||
jnthn | Whereas today it does | ||||||||||||||||||||||||||||||||||||||
But if we change *that*, then anyone who wants the -foo ==> :foo style will be disappointed :) | |||||||||||||||||||||||||||||||||||||||
And as ugexe++ points out, if you try and do too much magic then you create ambiguous cases | 19:45 | ||||||||||||||||||||||||||||||||||||||
So what we maybe want is 1) refined default semantics for arguments ==> capture, 2) a way to load a module that that replaces that arguments ==> capture transform for different schemes | 19:46 | ||||||||||||||||||||||||||||||||||||||
Maybe shipping one or two alternatives that we feel are common | 19:47 | ||||||||||||||||||||||||||||||||||||||
I'd quite like to retain the "first you transform, then you dispatch" approach, though. In that folks have a hope fo debugging it: at least they can get hold of the Capture and see which side is misbehaving :) | 19:48 | ||||||||||||||||||||||||||||||||||||||
19:52
Kaypie joined,
Kaiepi left
|
|||||||||||||||||||||||||||||||||||||||
nine | +1 for transform, then dispatch | 20:15 | |||||||||||||||||||||||||||||||||||||
jnthn: is it OK for a DESTROY submethod to create a new reference to the to-be destroyed object, thereby resurrecting it? | 20:19 | ||||||||||||||||||||||||||||||||||||||
timotimo | yes | ||||||||||||||||||||||||||||||||||||||
nine | \o/ | ||||||||||||||||||||||||||||||||||||||
timotimo | the semantics you get are "DESTROY will only be called once" | ||||||||||||||||||||||||||||||||||||||
so if your finalizer resurrects the object, it will not become finalized again | |||||||||||||||||||||||||||||||||||||||
nine | oh | ||||||||||||||||||||||||||||||||||||||
That's unfortunate | 20:20 | ||||||||||||||||||||||||||||||||||||||
timotimo | spawn a new object that hangs off of the object with its own DESTROY :) | ||||||||||||||||||||||||||||||||||||||
then you can pass the "got destroyed" message "back up", while the original object is being kept alive only by the sentinel object | |||||||||||||||||||||||||||||||||||||||
nine | That....could work. But also sounds quite expensive | ||||||||||||||||||||||||||||||||||||||
timotimo | how often do you expect this object to die? :D | 20:21 | |||||||||||||||||||||||||||||||||||||
nine | Think of a Perl 6 subclass of a Perl 5 object. It consists of a P5 object and a matching P6 object. At any time the only reference to the combined thing may be in P5 code or P6 code. What I need the magic in the destructor for is to check if the counter part is still alive and abort destruction. | 20:23 | |||||||||||||||||||||||||||||||||||||
If the object in question is just passed around a lot, the destructor could run quite often | 20:24 | ||||||||||||||||||||||||||||||||||||||
timotimo | resurrection won't push the object back to the nursery | 20:25 | |||||||||||||||||||||||||||||||||||||
so it'll be until the next full collection before the object would be considered dead again | |||||||||||||||||||||||||||||||||||||||
oh, you mean the newly created object i was refering to | |||||||||||||||||||||||||||||||||||||||
... have a pool of objects that do nothing but wait until they go to the old generation, at which point they may be used :D | 20:26 | ||||||||||||||||||||||||||||||||||||||
nine | Of course if you have a better idea for cutting this circle, I'm all ears :) | ||||||||||||||||||||||||||||||||||||||
timotimo | i do not :| | 20:27 | |||||||||||||||||||||||||||||||||||||
nine | Actually, a third object may be the solution. | 20:28 | |||||||||||||||||||||||||||||||||||||
We declar the P6 part of the whole to be the master. It's life time decides the life time of both. The P5 side of the program will only see yet another P5 object that encapsulates the P6 object (which wraps the P5 object core). | 20:29 | ||||||||||||||||||||||||||||||||||||||
Seems like even after removing the build-date, there's one more reproducibility issue left. | 20:32 | ||||||||||||||||||||||||||||||||||||||
This one's only affecting rakudo, not nqp | 20:33 | ||||||||||||||||||||||||||||||||||||||
SC deps seem to be in a different order for one | 20:43 | ||||||||||||||||||||||||||||||||||||||
21:11
lizmat joined
22:20
lizmat left
23:47
MasterDuke left
23:53
lucasb left
|