00:29 itz joined
lastofthe pew! pew! pew! see you, -Wpointer-sign 00:34
lastofthe may be dancing in front of the mirror before the party
But things are further along, at least 00:35
Dare I spectest? 00:38
TimToady Are you of clan Korval? 00:40
lastofthe I'm not, I'm a Hunter nee Brunton. 00:42
TimToady if your clan's slogan is not "I Dare" then you shall have to dare on your own :) 00:44
lastofthe Nice!, now I want to know clan Korval! 00:45
TimToady well, they're in the Liaden Universe, so you can only know them in books, alas, unless you are also in a book 00:48
in which case, you're still knowing them in a book, but might not be aware of that contingency :) 00:49
but they are good books, in any case 00:50
very much about knowing when to dare :)
lastofthe Some of my favorite folks are in a book, but I think I've only really been in a book once, and I had a fever, and was young. 00:52
I like the sounds of this place.
TimToady en.wikipedia.org/wiki/Liaden_universe 00:55
I recommend reading in publication order
the prequels are not spoiled by the originals :) 00:56
lastofthe Heh, good to know :) 00:57
I'm getting ready for a trip to see a brother and a sister-in-law of mine. I'll bet my bottom dollar between them they have "Agent of Change" on a shelf. Between turns throwing a pick (I'm gonna be out there digging a hole) I bet they'll let me turn a few pages. 01:00
01:03 itz_ joined
lastofthe Is there are version of 'make spectest' that does a parallel run? 01:17
timotimo you can set the environment variable TEST_JOBS 01:19
lastofthe Sweetness, thank you.
timotimo YW :)
lastofthe ps wwaux | grep perl6 | grep spec | wc -l 01:21
4
*ahhhhh*
01:33 JimmyZ joined
lastofthe Whew. pew! pew! pew! see you, -Wpointer-sign 01:46
lastofthe has his eyes on "gcc -Wall -Werror", and whatever becomes of clang thusly. 01:48
my dancing in front of the mirror before the party is hot. 01:50
01:56 FROGGS_ joined 02:04 itz joined 02:15 cognome joined 03:03 colomon joined 03:13 JimmyZ_ joined 03:26 itz_ joined 03:28 lastofthe joined 03:30 cognome joined 04:04 JimmyZ_ joined 04:30 itz joined
jnthn Very sleep... 04:33
04:46 itz_ joined 04:57 itz joined, JimmyZ_ joined 04:59 JimmyZ__ joined 05:02 JimmyZ__ joined 05:03 JimmyZ_ joined
jnthn FROGGS_: Did you spectest Rakudo on Windows after the libuv bump? 05:08
It seems many tests that spawn are exploding... 05:09
05:10 itz_ joined 05:54 JimmyZ_ joined 06:27 woolfy left 06:51 lastofthe joined
nwc10 jnthn: for me, if libuv is built with ASAN, it seems that all the tests that spawn end up hanging. 07:04
if libuv is built normally, ASAN build of the rest, and all is good
jnthn nwc10: OK. On Windows the result is a SEGV 07:06
nwc10 jnthn: PPC bug I described last night is at Moar 645e0ef3b2d5 NQP ba3354c330e5 rakudo deef0e308c80
which was the oldest version I could get to build (was trying to find the point where the bug was introduced) 07:07
I was assuming that it is the cause at HEAD but I realised after I went to bed that I don't know this for sure. So you might recognise it as "fixed" 07:08
07:13 lizmat joined 07:19 JimmyZ_ joined
dalek arVM: 97adcd6 | jonathan++ | src/io/procops.c:
Workaround for Windows explosions in spawn.
07:30
jnthn files an issue since this needs a closer look 07:32
But at least now spectest isn't a huge mess on Windows
dalek arVM/moritz/debian: d03e1ea | moritz++ | debian/ (2 files):
do architecture amd64 for now
FROGGS_ jnthn: I've tested both on linux and windows 07:34
jnthn Urgh 07:35
So why is it so busted on my box...
FROGGS_ I think I've seen fails about progname.t and args.t, but I had the impression that they've always failed 07:37
nwc10 jnthn: the ASAN-built libuv fails on linux made me wonder if libuv has a race condition, and the different timings with ASAN find it. 07:38
but that's like "#11907 Looking for a compiler bug is the strategy of LAST resort. LAST resort."
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=11907
nwc10 dear synopsebot, the link you want is dave.org.uk/klortho/?n=11907 07:39
lizmat wouldn't be surprised if the rakudo thread load issues are in fact libuv issues under stress
FROGGS jnthn: I reported it upstream 07:59
I perhaps bisect libuv this weekend 08:00
jnthn FROGGS: Awesome, thanks! 08:08
FROGGS jnthn: shall I pass an argument to the --debug option on windows? 08:16
jnthn I jus do --debug
FROGGS k
last time I used the msvc debugger was when we had nqp-cc O.o
the debugger is telling me that it is exploding here: github.com/MoarVM/MoarVM/blob/mast...eam.c#L202 08:20
(without your patch) 08:21
jnthn Hmm 08:24
For args.t it was blowing up where I commented out the line 08:25
nwc10 confirm, SEGV bug is spesh of MVM_OP_getattrs_n on PPC 08:43
FROGGS that's weird 08:47
jnthn: your patch makes it exit with 0 in the debugger, but in the console I still do not get any TAP output 08:48
when running perl6-m t/spec/S29-os/system.t
nine just bought Agent of Change Kindle edition for EUR 0,00 on amazon.de 08:54
08:55 brrt joined
brrt \o 08:55
jnthn FROGGS: Urgh 08:56
FROGGS: Also, socket tests explode even with my patch
walk &
FROGGS :o(
the socket stuff might be due to api changes... 08:57
brrt oh, libuv change
annoying
FROGGS perhaps we have to pass another uv_buf_t where we pass a char*
will investigate in a bit
bbi1h
nwc10 so, as per irclog.perlgeek.de/moarvm/2014-09-05#i_9305662 why is a value being written to the .lit_i16, but read from the .lit_str_idx ? 09:09
brrt hang on 09:11
well
that'd be wrong in general
lit_str_idx is 32 bits
alignment issues may cause.. issues
i.e. will cause issues 09:13
nwc10 it is causing a SEGV
this is why I know about it
brrt but yeah
ok, hmm
where does this happen?
nwc10 t/spec/S32-trig/sin.t and likely othrs 09:14
I think I've answered most questions in the backlog
brrt okok i'm going to look for it
hey i recall seeing that argument :-) 09:15
nwc10 thanks for trying to take a look
specifically, here it's MVM_OP_getattrs_n
but I suspect that all of MVM_OP_getattrs_* might be "at risk" 09:16
this libuv is not as good as the old one. On PPC: 09:35
moar: 3rdparty/libuv/src/unix/signal.c:166: uv__signal_handler: Assertion `r == sizeof msg || (r == -1 && ((*__errno_location ()) == 11 || (*__errno_location ()) == 11))' failed.
Aborted (core dumped)
for 3 NQP regression tests
09:35 JimmyZ_ joined
brrt fuuuu 09:37
i'm wondering what would be making or dealing with MVM_OP_getattrs_n 09:51
hmm 10:10
i can't find any evidence of anybody writing lit_i16 where an lit_str_idx is expected 10:11
10:13 itz joined
brrt then again, that is basically the only explanation of what happens 10:13
oplist is basically correct 10:15
ok, nwc10: what happens in getattrs_n (basically from p6opaque, at any rate) is that MVM_spesh_get_string is /not/ called 10:17
oh, i see 10:23
i'm wrong 10:24
terribly wrong
dalek arVM: ed2227e | (Bart Wiegmans)++ | src/6model/reprs/P6opaque.c:
Use indirect name for slot in p6opaque getattrs_n

This caused issues on PPC because the value of the register is encoded in 16 bits while a string index is 32 bits wide. This should have caused more issues, I might add. nwc10++ for finding the bug.
10:27
brrt basically, MVM_spesh_get_string isn't supposed to be called there, that's what the indirection throught spesh_attr_name is for 10:28
through
it is a lucky (or unlucky) coincidence this didn't cause as much problems as it should have
because you're basically looking into the slots table with a string that might or might not exist there 10:29
nwc10 I was wondering if it was something like that
something more wrong than my diagnosis
brrt anyway, should be fixed now 10:30
:-)
lizmat does this warrant a MOAR_REVISION bump ? 10:31
brrt eh
dunno
maybe :-)
lunch &
(maybe not because jnthn was looking into libuv issues still?)
lizmat trying build with master, master to see what happens 10:33
datapoint: master/master hangs when building the restricted settings 10:41
10:47 JimmyZ_ joined
jnthn lizmat: Ouch.. 10:53
Maybe time to go back to a working libuv in master, and work on the bump in a branch... 10:54
nwc10 brrt++ 11:02
FROGGS daxim: would it be possible for you to bundle libuv 0.11.18? 0.11.28 seems to be buggy in several ways
nwc10 With that fix (cherry picked onto the commit before the libuv bump) nearly everything passes on PPC
for some reason t/spec/S32-hash/delete-adverb.t seemed to go SEGV in the spectest
other failures are consistent with problems seen on x86_64 11:03
odd, malloc corruption in t/spec/S32-hash/delete-adverb.t on PPC 11:05
but valgrind can't spot it
11:21 lastofthe joined 11:25 brrt joined 11:37 daxim joined
FROGGS the on_write callback we pass has a wrong signature... 11:46
11:49 lastofthe left
FROGGS ohh, no, I am wrong 11:50
12:07 zakharyas joined 12:32 Ven joined 12:39 woolfy joined
FROGGS jnthn: with your patch system.t outputs stuff when run using the debugger, but there is nothing when run in cmd.exe 12:41
13:01 cognome joined 13:07 JimmyZ_ joined
JimmyZ github.com/joyent/libuv/compare/66...050a95R431 # looks like this change causes some lock, which spawn hangs on 13:25
qx// doesn't work on ubuntu 14.04 too, revert updating libuv and rebuild works 13:26
FROGGS jnthn: now, after doing a realclean again (I was about to automate a bisect), the system.t passes again 13:27
JimmyZ tries 13:28
FROGGS JimmyZ: do you have a one-liner that does not work? I am on 14.04 since like 20 hours...
JimmyZ perl6 -e 'qx/umask/' 13:29
FROGGS perl6 -e 'say qx/umask/' 13:30
0002
that was with jnthn's patch, now I build HEAD^ 13:31
JimmyZ: it still works with HEAD^ of MoarVM and libuv latest 13:32
JimmyZ hmm, doesn't works here :(
with HEAD of MoarVM 13:33
FROGGS JimmyZ: what happens?
JimmyZ don't know, reverting updating libuv and it works 13:34
FROGGS jnthn: even the socket tests now pass here 13:39
... on windows
13:39 brrt joined
brrt \o 13:41
FROGGS hi brrt
brrt hi FROGGS
anything broken still? :-)
FROGGS brrt: not on my boxes 13:42
brrt that is something at least
FROGGS for me a realclean in MoarVM helps on windows and linux
using MoarVM HEAD^, aka without jnthn's latest patch
spectest details and version summary for windows: gist.github.com/FROGGS/fa7a4a88317676fd36b9 13:45
(linux in the works)
JimmyZ FROGGS: still hangs 13:47
(gdb) bt
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007ffff79ff21d in uv.epoll_wait () from /home/jimmy/OpenSource/MoarVM/install/lib/libmoar.so
#2 0x00007ffff7a0a249 in uv.io_poll () from /home/jimmy/OpenSource/MoarVM/install/lib/libmoar.so
#3 0x00007ffff7a00927 in uv_run () from /home/jimmy/OpenSource/MoarVM/install/lib/libmoar.so 13:48
#4 0x00007ffff79a49ca in read_to_buffer () from /home/jimmy/OpenSource/MoarVM/install/lib/libmoar.so
FROGGS hmmm
testing on an linux x86 now... 13:49
13:50 lastofthe joined
JimmyZ x86_64 :P 13:51
FROGGS my host is 64bits where all is fine... going to test on 32bit 13:53
jnthn: only a single spectest fail on my linux box: gist.github.com/FROGGS/fa7a4a88317676fd36b9 13:54
rakudo also compiles on a 32bit linux 14:04
spectesting now 14:05
nwc10 FROGGS: that failing spectest is unfortunately a known SEGV (or ASAN barf)
FROGGS: do the NQP tests pass on your box? 14:06
FROGGS nwc10: do you have anything that explodes due to the libuv upgrade?
nwc10 PowerPC fails assertions in libuv
FROGGS nwc10: and did you realclean in moarvm? 14:07
nwc10 x86_64 was fine once I didn't build libuv itself with ASAN
git clean -dxf
that may not be exactly the right answer
FROGGS nwc10: does that cleanup submodules?
nwc10 No. Which is why I repeatedly get annoyed about git submodules
or, amongst the reasons
FROGGS it would be very very awesome if you could realclean, make install, and test the failing test again 14:08
14:09 lastofthe joined
FROGGS I hope jnthn's patch does not do any harm, since I tested the revision before his patch fine on my boxes 14:09
nwc10: can I run that powerpc stuff in a virtual box on an intel laptop or do I need proper hardware? 14:10
JimmyZ ah.... git clean -xdf doesn't clean submodules! 14:11
FROGGS gah! I was talking about REALCLEAN! :P
JimmyZ after make reaclean and it works
FROGGS \o/
I have a good feeling now :D
JimmyZ I thought git clean -xdf cleans submodules
FROGGS well, submodules are something like repositories on its own, so... 14:12
nwc10 I thought that git clean -xdff did, but it doesn't seem to
dalek arVM: cf8088a | (Tobias Leich)++ | Configure.pl:
forcing a realclean to get rid of old libuv
14:27
arVM: 78ab168 | (Tobias Leich)++ | src/io/procops.c:
Revert "Workaround for Windows explosions in spawn."

This workaraound is not needed when we remove old libuv files.
14:28
FROGGS now I am eager to hear from jnthn
nwc10 I am more eager for him to have a good night's sleep :-) 14:32
FROGGS yes, of course :o)
it is just that I have no idea how late it is there 14:33
nwc10 Well, we know that the timezone is +08:00 but that's not actually that helpful
lizmat he's +6 hours from nwc10 and FROGGS and me :-) 14:36
22:36 or so
FROGGS k, thanks :o) 14:37
15:34 zakharyas joined 15:41 vendethiel joined 15:47 woolfy joined 15:48 woolfy left 16:07 Ven joined
jnthn FROGGS: Am trying cleaning things up now and rebuilding, will let you know soon 16:09
FROGGS: Yes, HEAD plus realclean works \o/ 16:13
16:13 brrt joined
FROGGS \o/ 16:15
jnthn: Configure.pl does that for you now since my last commit 16:16
so innocent ppl should be kinda safe
(that's a relief)
jnthn Yay, I qualify as an innocent person \o/ 16:17
TimToady you are guilty of being innocient
*cent 16:18
FROGGS *g* 16:20
jnthn: no, you're not :P
lastofthe Some time ago I was walking by a garden in Silver Lake (Los Angeles, CA, USA) and reached out to grab a prickly pear. I didn't think, I just reached and grabbed, it was ripe and pretty. 16:22
Some of the pricles have since decided I'm not a good host, and are working their ways out of me. 16:23
This is true, and remarkably similar to how I feel about the warnings I'm squashing. 16:24
I can't decide if prickly pear puss or a silenced warning is more exciting to me right now, so I'm giving them both play. 16:26
Relatedly, is github the only convenient way to share patches? Or is a branch that is available to the public also convenient? 16:28
(or patch files, or ...)
TimToady we often use branches
lastofthe Oh, that's kind. 16:29
TimToady and pull requests for people who haven't got a commit bit yet
lastofthe You may have heard me correctly, in which case I apologize for shouting, but I meant to say: "Can I submit a branch for review from outside github's purview" 16:31
TimToady I don't know how to do that, other than with a diff 16:32
TimToady heard no SHOUTING... :) 16:33
lastofthe Someone should write a utility to patch those into an existing codebase.
:)
[Coke] if you're already working with git, then the easiest thing for us is for you to use github's pull request mechanism. 16:34
TimToady yeah, why hasn't anyone thought of that before now? :)
lastofthe Sometimes I think I'm old and inflexible for thinking that I shouldn't have to become a member of something in order to submit code to a project 16:35
[Coke] Amnesiator? I think I'd remember inventing something THAT useful.
yes, but it's not about you. it's about the project. :)
lastofthe It is, you're totally right.
[Coke] it raises the barrier of entry for us to look at your code.
lastofthe It raises the barrier of entry to submit code to look at. 16:36
[Coke] Yes. and from our standpoint, that's probably a good thing, right?
lastofthe Sometimes that's a barrier that folks aren't ready to cross, for many reasons. Sometimes completely unrelated to quality.
TimToady it's slightly intentional in this case, since the earlier <mmmph mmmph> had the opposite failure mode
[Coke] Note: I'm just a dude, I'm not the patch police. 16:37
lastofthe We're all just dudes, even the patch police :)
And I mean "dude" as a multi there. 16:38
TimToady hopefully in the west coast genderless sense, yes :)
Dude!
lastofthe Heh, yes indeed.
[Coke] as an east coaster, I'm getting sick and tired of your west coast high and might stuff. :P
*y 16:39
lastofthe Heh
TimToady nah, it's low and sneaky
jnthn I thought the west coast was sliding into the sea?
TimToady insidious surfers
lastofthe hah!, low and sneaky, yes.
TimToady jnthn: strike/slip faults go sideways, not up and down
lastofthe jnthn: but we don't even care
jnthn TimToady: Ah, right. So if you're on the right side of it, and a little patient, you get to be in Alaska... ) 16:40
lastofthe Left side of it, methinks. 16:41
jnthn lastofthe: Generally, those submitting a sequence of patches that Do The Right Thing find themselves landed with a commit bit... :)
TimToady much of the US can be explained in terms of older, middle, and younger child dynamics :)
jnthn Yes, I meant "correct" by that :)
TimToady lastofthe: only if you're facing north
TimToady is facing south currently 16:42
lastofthe begins to wonder about his feng shui
TimToady worries more about his zanshin 16:43
lastofthe jnthn: re patches: rockin'. If I'm to be completely honest, I was looking for an excuse to cry about the centralization that github has imposed (on a decentralized protocol) to modern open source projects. It rubs me wrong, but I'll get used to it. 16:44
And to be completely honest, that wasn't completely honest. Just an approximation.
recur() 16:45
And when I say "protocol" I mean "git", but I also mean "emergent social behaviour" :) 16:48
TimToady well, perhaps you'll be a part of the eventual decentralization after this swing of that pendulum :) 16:49
16:50 timotimo joined
TimToady that one always goes back and forth every half-generation or so 16:50
lastofthe TimToady: Until then, I for one, ... 16:51
It sure does seem to wobble. It's hard for me to forget that the whole idea was about making it easy to share information. 16:53
But I most certainly digress
TimToady nah, that's just half the idea; since information only flows easily downhill, you also need economic drivers for information to flow uphill 16:54
we wouldn't have google without ads 16:55
lastofthe I've never been a fan of dams. 16:56
And now that DoubleClick owns search, I'm less of a fan of it 16:57
(both)it
TimToady nonetheless, you probably turn on the light switch, and do other things to enforce the laws of thermodynamics :) 16:58
jnthn Yowser, the dynamic gen2 tuning from timotimo++ makes some good difference to CORE.setting build time...
And also a "read a million lines" benchmark 16:59
TimToady yes, we noticed that at the beginning when you were distracted
jnthn Since we end up with .lines keeping all the darn lines it ready around somehow :/
Another issue we need to solve in the list refactor.
TimToady: Hopefully the improvemnet is just as good with my re-worked version of the patch. :) 17:00
lastofthe TimToady: I knew Woodie Guthrie before I knew I missed salmon, for sure :)
lastofthe sings *Roll on Columbia* and gets back to silencing warnings
TimToady will be driving from younger child to older child for most of the next two weeks, but will continue thinking about the list refactor 17:02
TimToady really wants Perl 6 to run fast, for some unfathomable reason
timotimo huh, you mean you *still* didn't give up on Perl 6??
clearly you must be Stark Raving Mad 17:03
TimToady indubitably
up till now, I've been the only person who is not allowed to give up on Perl 6, but jnthn++ is in grave danger of falling into that category now :) 17:04
timotimo i'm not sure if i understand what that's supposed to mean 17:05
lastofthe Moar and friends are close, and getting closer 17:06
lastofthe thinks
dalek arVM: 7e8304d | jonathan++ | src/ (4 files):
Base full collections of promotion rate.

There's no point doing a full GC every N collects if we're promoting very little data each time. This patch, largely from timotimo++, uses tracking of the number of bytes promoted to gen2 to decide when to do it. This version of the patch correctly copes with blocked threads by moving where we clear and contribute the promoted bytes.
17:07
jnthn *of, d'oh... 17:08
timotimo ah, very good
i wasn't entirely sure i did the per-thread stuff correctly
decrement_total_promoted_by is now a dead variable fwiw 17:09
jnthn oh, darn, I thought I removed that...
timotimo and you're saying this improves the timing of the core setting compilation? :)
maybe we need the pruning of excessive call graphs soon for the profiler 17:10
jnthn Yeah
timotimo did you see avuserow and me try to get a profile of the core setting compilation up? :D
jnthn Also
The profiler lies.
timotimo AHA!
jnthn Not on execution times 17:11
But on allocations
timotimo oh
that's interesting
jnthn It doesn't know about some of our allocate-y extops
timotimo oh, so we're actually allocating even more than it already shows?
jnthn Potentitially yes
Well 17:12
The GC numbes are always correct
But the Allocations tab mises some things.
timotimo right, makes sense 17:13
so ... the html file avuserow pried out of the profiler's smoldering remains was 1.1gb big. it took "only" 22 hours and 59 minutes to finish up ...
jnthn o.O 17:14
timotimo how do you feel about we directly print out the data into the file instead of concatenating strings together?
jnthn Did anybody have a web browser that could load a 1.1GB file? :)
timotimo that may improve things
i tried it with firefox and chrome, both didn't want to
firefox seemed to just ignore the script outright
chrome very quickly said "oops, this tab has crashed. want to try again?"
jnthn So much for web scale... :P 17:15
timotimo no, this is already Big Data
jnthn Quick! To the cloud! 17:16
timotimo it ballooned up to 40 gig of maxrss i believe
jnthn o.O
timotimo anyway, gotta BBL :)
it == the profile dumping thingie
jnthn Nice box avuserow++ has...
timotimo aye
jnthn And that he set it on this
timotimo we shouldn't require that kind of box to profile the core setting compilation, though :)
jnthn Yes. 17:17
I think I need to look at pruning the graph
timotimo hah! i managed to convince you! ;))
jnthn The million lines thing goes from 52.165s to 43.998s with the gen2 tuning :) 17:18
It was 71.016s at the start of the day, before my take patches, then lizmat++'s many patches. 17:20
timotimo sweet! 17:33
jnthn Another 1.5s off with local patches 17:35
timotimo it's kind of sad, that we can't benefit from our ropes for doing the chomp thing 17:37
lastofthe Y'all here might be the folks to ask this question of, and it's one that's been on my oatmeal lately... 17:42
I came here via Julia, because it has multimethods. I wondered, "who else" 17:43
timotimo i recently attended a little presentation of julia by a friend, who's a physicist 17:44
lastofthe and found lisp (CLOS) and ocaml and a couple others, but perl 6's multis seem special to me in that parameter values can be used for dispatch
timotimo i need to finally get off my lazy butt and do the ipython protocol thing, god damn it.
lastofthe And I thought, "that must be hard to optimize", but when I thought about that some more, I couldn't figure out why I thought that. 17:45
timotimo heh. 17:46
we're quite fortunate that we are allowed to assume multi subs are "fixed" at the time we encounter them in the optimizer
but multi methods are, of course, virtual
lastofthe Are they fixed because the parameters are unboxed and inspected before they are passed along? 17:47
timotimo oh, no, not like that
lastofthe realizes he might just be using words, here
timotimo i meant the list of candidates cannot be changed "afterwards"
so if we see an 1 + 1 we can already go ahead and look for the right candidate of &infix:<+> and we even inline small subs like that 17:48
lastofthe Oh. Can multis not be punched into the symbol table at runtime?
timotimo they can, but then you get zero guarantees for runtime behavior
lastofthe behavior or performance? 17:49
timotimo if you invoke the multi sub indirectly, it'll likely be fine
TimToady lexical scopes are officially immutable once finished compiling
timotimo right, was just about to correct my claim there
lastofthe Cool, I dig it.
And can thusly be passed around, I imagene. 17:50
TimToady and we make a very careful separation between things that belong to the current language, and are fixed in the current lexical scope, vs things that belong to the objects, which are virtual by default
lastofthe even imagines
TimToady operators belong to the current language, methods belong to the objects
timotimo you can probably dig deep into VM internals to F with a multi sub's candidate list, but at that point, any given call to that sub may already have been inlined or candidate-decisioned (o_O) at that time and may not even know what multi they'd *have* to look at
TimToady at the end of compilation, the compiler is also allowed to close and finalize classes that haven't been pried open or already derived from 17:52
but we don't do that optimization yet
in fact, we don't even implement the LINK phaser yet, which is when that would happen
lastofthe TimToady: okay. When one multifies an operator, does that push it over a boundary?
lastofthe needs to read some specs, probably 17:53
timotimo no, it does not
TimToady only the boundary that it is legally a double dispatch, first to the proto, and then the proto redispatches to the multis
but that's almost always optimized away
timotimo the operator has to be declared "multi" or a "proto" has to be created on the first definition for that operator
(or you can override a previously multi operator with a non-multi operator in a lexically "inner" scope with the "only" keyword)
(or by providing a new proto, i believe) 17:54
TimToady
.oO(if you cannot afford a proto attorney, one will be provided for you)
lastofthe That's fantastic. 17:55
TimToady well, we think so, but we're known to be prejudiced in the matter
timotimo i don't think i can provide an outsider's view on perl 6 any more, even though i've only been involved some 2 years 17:56
(has it been that long already? wow.)
TimToady we have been thinking about this a goodly long time now, so we'd like to think we've got a few things right by now :)
and still have a few things wrong we want to fix
17:57 zakharyas joined
lastofthe By all rights, you all have! Multimethods seem to be a bit of a tough thing for folks outside of a world that intersects with ML/CLOS to get right, I'm sure I didn't get the right in my head until I instersected with those worlds. 17:58
s/right/Mu/
(..you all have!): got some things right, that is 18:00
18:01 brrt joined
TimToady well, and we don't think CLOS got multis right either :) 18:03
our rules are agnostic to parameter order, unlike CLOS
lastofthe No, but one could make them right :) 18:04
TimToady (Int,Num) and (Num,Int) are both considered the same distance from any (X,X)
so formally ambiguous 18:05
timotimo ah, that. of course.
TimToady whereas CLOS, iiuc, would pick the left one over the right one
well, Int and Num are a bad example maybe 18:06
since they are only cousins
but yeah, CLOS does more cascading decisions left-to-right, and we don't 18:07
lastofthe That's also fantastic. 18:08
TimToady but that's sort of the historical FP bias coming through of priviledging the car over the cdr
lastofthe Which makes not having syntax easy, which is maybe an odd thing to optimize. 18:10
TimToady if we all optimized for the same things, life would be kinda boring :) 18:11
lastofthe Can I get an ...
TimToady m: say 0,1,*+* ... * 18:12
camelia rakudo-moar 4a7429: OUTPUT«0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408…»
lastofthe Show off :) 18:13
TimToady ayah... 18:14
18:14 teodozjan joined
timotimo m: say 1 , *.rand ... 0.0001 18:16
camelia rakudo-moar 4a7429: OUTPUT«1 0.185797766360854 0.134341292914885 0.0126081342347814 0.00654983537965583 0.00357668111091382 0.00240665709688171 0.00113202482912126 5.32329151742171e-05 3.44407453064244e-05 9.11938041984839e-06 7.08717585672882e-06 8.48999551213041e-07 4.502952053892…»
lastofthe My new seed for everything 18:17
timotimo m: say (1, 1 , *.rand + *.rand ... 0.0001) 18:19
camelia rakudo-moar 4a7429: OUTPUT«1 1 1.28732767501881 0.712114840272033 1.32522605348956 0.904939122185709 0.885580364714935 0.912687391448989 1.11714281386194 0.805584158737667 1.41191989868245 1.03590889369564 0.310556727034583 0.362401945299584 0.270688460496896 0.334274831310506 0.443…»
timotimo pretty <3
18:30 FROGGS joined
brrt ugh, i'm into java distributed systems middleware land tonight, wish me luck 19:00
19:21 lastofthe joined 19:29 vendethiel joined, xiaomiao joined 20:11 brrt left 20:17 lastofthe joined 20:32 lizmat joined 20:33 woolfy joined 20:50 lastofthe joined
avuserow timotimo: it's might be worth mentioning that "my" machine (at $dayjob) with lots of memory is fairly old so it's not very fast, at least CPU-wise. I think it's 2009-vintage. Plus it's actually a VM, so I figure it might be up to ~10% slower for CPU/memory 21:47
timotimo oh, hm 21:55
fair enough
but we *still* need to make it faster :D
did it swap memory out, btw?
avuserow I think it swapped out some of the base system but not moar
since it had a few MB of swap used when I came back, but the time output didn't say any swaps happened 21:56
I've noticed Linux does that as a precaution when memory gets used a bunch (for certain values of "a bunch")
[Coke] had to skip a a few commits doing this rakudo-jvm bisect, another weird build failure showed up. 22:10
timotimo :< 22:12
22:55 nebuchadnezzar joined 23:55 colomon joined