Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-06-23

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:06 lizmat .
00:06 yoleaux2 22 Jun 2016 21:52Z <timotimo> lizmat: you think you can figure out how to make comb's pull-one not allocate Int? i tried replacing < with islt_i, but that's not it, so maybe it's $!pos++?
00:13 lizmat joined #perl6-dev
00:52 lizmat timotimo: not sure what you benchmark is and which candidate you're talking about
00:53 timotimo oh
00:53 timotimo my benchmark is 'my @res; for line() { @res.append: .comb }' over my linux' word list
00:57 MasterDuke joined #perl6-dev
01:17 lizmat timotimo: ok, will check
01:49 ilbot3 joined #perl6-dev
01:49 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:28 lizmat joined #perl6-dev
02:34 vendethiel- joined #perl6-dev
03:24 lizmat joined #perl6-dev
04:14 dalek rakudo/nom: 78d2ce6 | hoelzro++ | t/harness6:
04:14 dalek rakudo/nom: Chomp fudged filename output
04:14 dalek rakudo/nom:
04:14 dalek rakudo/nom: Otherwise, TAP::Harness ends up with filenames that have a trailing \n,
04:14 dalek rakudo/nom: and run(..., :!err) will silently fail with no TAP plan
04:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/78d2ce6348
05:15 sortiz joined #perl6-dev
05:50 RabidGravy joined #perl6-dev
06:09 cognominal joined #perl6-dev
06:11 lizmat joined #perl6-dev
06:14 lizmat joined #perl6-dev
07:12 sno joined #perl6-dev
07:59 [Tux] This is Rakudo version 2016.06-23-g78d2ce6 built on MoarVM version 2016.06
07:59 [Tux] test            16.725
07:59 [Tux] test-t           9.934
07:59 [Tux] csv-parser      22.277
08:43 brrt joined #perl6-dev
09:37 AlexDaniel joined #perl6-dev
10:06 psch well, i'm not really getting anywhere with trying to figure out what's wrong from scratch, so i thought "just do the thing with the patch-method for the nested cu already"
10:06 psch but then i realized that i need to have the knowledge of the nested cu in the containing cu
10:06 psch and i'm not sure i do
10:25 nine But the containing CU is the one running the EVAL, so it should by definition know about the nested CU?
10:25 yoleaux2 22 Jun 2016 23:14Z <Zoffix> nine: the bug I found last night where a P5 module loaded together with a P6 module had errors was introduced by this commit: https://github.com/rakudo/rakudo/commit/bf59085
10:25 psch nine: i'm not sure.  i only reliably know the classname of the EVAL after it ran
10:25 psch nine: and i cannot say if the outer cu is finished then or not
10:26 nine For a BEGIN time EVAL (which the bug is about) the outer CU cannot be finished before the EVAL ran
10:29 psch okay, yeah, i can see that
10:30 psch ...also i think hack is dying
10:30 psch $ uptime 10:30:48 up 31 days, 11:15, 30 users,  load average: 61.24, 28.46, 13.51
10:31 psch it's 1min, 5min, 10min?
10:32 psch ah, 1 5 15
10:32 psch anyway, yeah, that puts a stop on my hacking for now vOv
10:37 psch moritz: can you poke hack?  with something that reboots it, preferably?
10:38 Woodi I wonder about GC... we have generational one so "promoting" to 2nd generation is coping object memory or moving info about promoted object ?
10:38 psch Woodi: i think it's just putting the pointer in a different array
10:39 psch Woodi: but that's probably more a #moarvm question
10:39 Woodi psch: I hope and right :)
10:39 jnthn We actually move the object
10:39 jnthn Same during the semispace collection
10:40 jnthn Once an object reached gen2 it (at present) never moves any more.
10:40 jnthn uh, "any further" is perhaps clearer
10:40 jnthn So generally an object that makes it to the old generation will have been copied twice
10:40 jnthn Note though that this is about the direct object body
10:41 jnthn Arrays and strings in turn point to buffers, which are not moved.
10:41 Woodi jnthn: why not just reference (and eg. not worry about memory fragmentation, etc)
10:41 jnthn The point of copying is to avoid memory fragmentation, in fact. :)
10:42 jnthn Well, a point of is probably more correct, but still.... :)
10:42 * Woodi have counter-example but forget what it was...
10:42 jnthn A semi-space copying GC lets you just bump-the-pointer allocate your way through a nursery space, and when it's full you evacuate the living objects to the other semi-space, and they all land up packed together at the start of it.
10:43 jnthn Then the old generation in Moar is implemented as - up to a size limit anyway - a set of regions that all contain objects of the same size.
10:45 jnthn Also note that in most programs the majority of objects die young, and so never have to be copied at all.
10:45 timotimo psch: i can also poke hack with something that reboots it
10:45 psch timotimo: ah, i wasn't aware and didn't think to check
10:45 psch timotimo: fwiw, i think your fuzzer ran shortly before this started
10:45 timotimo it's been running for like 3 or 4 days
10:45 psch although i doubt that's what drove hack to (now) 200 load
10:46 timotimo yeah, it shows "task blah blocked for more than 120 seconds" on its screen
10:47 timotimo i bet it's the virtual disks again
10:47 * timotimo forces a reset
10:47 Woodi probably I was imagining outsorcing defragmentation to system malloc, which it don't offer... on the other hand freeing VM from that would be nice :)
10:49 timotimo "force reset" didn't seem to do anything, but "force off" and "power on" did the trick
10:49 timotimo did a bit of fsck, and is now booting
10:49 dalek joined #perl6-dev
10:49 timotimo yup, there it is
10:50 psch joined #perl6-dev
10:51 psch what a wonderful opportunity to reorganize my screen sessions \o/
10:51 timotimo yeah, i guess
10:51 brrt joined #perl6-dev
10:51 timotimo tmux would have let you do that on-the-fly, i bet :P
10:51 psch well, think positive
10:51 psch idk if tmux does that automatically
10:52 psch but getting screen titles to always include CWD or "vim $openfile" was so annoying
10:52 Woodi jnthn: if moust of object have something in common then Flyweight pattern applies (if they group into classes with common, immutable set of attrs)... so it allows to acquire simpler/smaller objects
10:52 psch otoh, with tmux i'd have to conf it for screen binds, so that's annoying too :P
10:54 RabidGravy joined #perl6-dev
10:57 Woodi psch: I lastly learned tmux with ^Z bindings :)
10:59 timotimo all in all, the response time to the crash was about 30 minutes. that's better than the last time.
11:01 timotimo blurgh. the afl commandlines didn't end up in my bash history
11:05 masak joined #perl6-dev
11:13 * timotimo is resuming afl, which seems to take a while
11:13 * timotimo knows what most of the cached portions of hack's RAM will contain for the forseeable future
11:18 moritz there seem to be a few (sd-pam) processes on hack
11:19 moritz does anybody what they do, and if I should care?
11:20 timotimo "I think it's intended to guarantee that pam_close_session() is closed
11:20 timotimo when its parent "systemd --user" exits.
11:20 timotimo "
11:23 timotimo wow, each of the three fuzzers has a sync_dir that's 4 gigs in size
11:24 timotimo hmm. the memory used on the root partition was also going up over the last days. not sure why that would be; all my fuzzing happens in my home directory
11:24 timotimo maybe it's collecting core dumps or something? but afl should prevent that, i'd think
11:28 timotimo going through / with ncdu -x doesn't highlight anything critical
11:35 timotimo oooh, q&a with larry wall, that's gotta be interesting
11:35 nine timotimo++ # teaching me about ncdu
11:36 timotimo ncdu is especially fantastic as it has a "delete this" button
11:36 timotimo and the popup lets you tell it to "never ask me again (in this session)"
11:36 tadzik oh yes :)
11:36 tadzik ncdu is great
11:51 cognominal joined #perl6-dev
11:57 lizmat joined #perl6-dev
12:09 lizmat joined #perl6-dev
12:56 lizmat joined #perl6-dev
13:10 skids joined #perl6-dev
13:15 psch_ joined #perl6-dev
13:35 dalek rakudo/nom: efbfdaa | lizmat++ | src/core/Str.pm:
13:35 dalek rakudo/nom: Make Str.comb 30% faster, timotimo++
13:35 dalek rakudo/nom:
13:35 dalek rakudo/nom: Please note that I got rid of the ProcessStr role, because we cannot
13:35 dalek rakudo/nom: yet work with native int attributes from a role  :-(
13:35 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/efbfdaa74d
14:36 dalek rakudo/nom: 9b579d0 | lizmat++ | src/core/Seq.pm:
14:36 dalek rakudo/nom: Squeeze a few percent out of Seq.iterator|is-lazy
14:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9b579d01d8
14:37 AlexDaniel joined #perl6-dev
14:41 psch i am so confused right now
14:41 psch so i'm declaring an array in nqp
14:42 psch then i iterate over another array and potentially push things into the declared array
14:42 psch then i have some debug output that gives me the size of the array
14:42 psch then i pass the array into a different sub in the same nqp file, and it gets copied into a different array
14:43 psch and after that copy process, numification of the array doesn't work anymore
14:44 psch on the target, though
14:44 psch which maybe means the copying is a silly idea..?
14:44 psch i really have no clue
14:45 lizmat gist?
14:46 psch https://gist.github.com/peschwa/785b29f2ebd9505aabed400267808653
14:46 psch the p6sort is copied from src/vm/moar/Perl6/Ops.nqp
14:47 psch well, plus a default for the &comparator parameter
14:47 psch and the bindpos_i was nqp::push before, didn't work the same way
14:49 lizmat too much code to parse for me during Damian's functional programming tutorial  :-(
14:49 lizmat hope someone else can have the necessary cycles
14:49 psch eh, i got it to work once before, i just lost the stash
14:50 psch i am confident i'll figure it out again somewhen, i'm mostly just venting i guess :/
14:51 nine psch: you lost the stash? Not even recoverable through the ref-log?
14:51 psch nine: well, "lost" in "dropped it"... i'm sometimes a bit stupid, ok? ;)
14:51 psch nine: i have no idea if that means it could still be in the reflog though
14:54 b2gills joined #perl6-dev
14:55 psch s/ in / as in / # vOv
14:58 nine As long as the garbage collection has not run yet, it should be recoverable
14:58 psch well, i also didn't name it :|
14:59 ilmari if you committed it it'll be in the reflog
14:59 ilmari so you can cherry-pick it by id
14:59 psch nope, didn't, i only stashed it
14:59 ilmari the stash is commits too
15:01 psch okay.  can i look at diffs of that somehow?
15:01 psch i mean, the reflog
15:01 ilmari psch: hm, a dropped stash doesn't show up with reflog --all
15:01 |Tux| lizmat, I got an eol failure. re-running now
15:02 psch lizmat: ah, thanks for checking.  i'll just try to recreate whatever i must have done... :)
15:02 ilmari psch: try asking on #git
15:02 nine psch: git reflog -p
15:02 nine I guess git reflog -p | grep p6sort would give a quick answer
15:04 psch nine: ah, yeah, that does indeed find it
15:07 nine Yeah :)
15:07 nine Otherwise you could have tried the really hardcore desparate search:
15:07 nine find .git/objects/ -type f | cut -d/ -f 3- | sed 's/\///' | xargs -n 1 git cat-file -p  | grep p6sort
15:07 psch i don't see the crucial difference between the two patches, but well vOv
15:08 |Tux| lizmat: p6 t/46_eol_si.t
15:08 psch like, the only thing i did different was iterating with for over the methods instead of with a while and incrementing a counter... o.o
15:08 nine If it were an obvious thing, you'd have found it already ;)
15:08 psch probably yeah :)
15:08 |Tux| that does NOT run all tests. every run has a different number of tests
15:09 |Tux| must be efbfdaa or 9b579d0
15:20 lizmat [Tux] : will check it out
15:20 [Coke] joined #perl6-dev
15:22 camelia joined #perl6-dev
15:24 [Coke] joined #perl6-dev
15:25 [Coke] joined #perl6-dev
16:04 psch compiling something that kinda maybe could potentially almost work \o/
16:04 psch the big doubt remaining is "can i actually just call the nested CU main method and don't i have to like pass some program state around..?"
16:05 psch which would be terrible if i had to, but i can easily imagine i'll have to, so there
16:19 timotimo lizmat: wow, 30%, i did not expect this much. nice!
16:32 psch grr
16:33 psch perl6 habits even propagate into indirect jvm bytecode generation
16:33 psch 'cause i compiled three times, trying to fix the same problem in a few ways
16:33 psch but in the end it clearly was just the omitted return
16:52 psch ...or not /o\
16:52 psch well, the return *was* missing, but i still get the same error
16:52 psch codegen over too many abstractions is hard /o\
17:10 lizmat timotimo: well, it broke Text::CSV
17:10 lizmat now looking at that
17:10 timotimo oh crap :(
17:11 timotimo anyway, that'll give us a shiny new spec test ):
17:11 timotimo :)
17:12 lizmat [Tux]: how many test *should* it run?
17:15 timotimo 50000 or something?
17:15 lizmat timotimo: this is not test-t
17:16 lizmat it's t/46_eol_si.t of the Text::CSV test-suite
17:23 lizmat .tell [Tux] looks like the problem existed *before* my patches: first run after re-compile: 693 tests, any other run has 673 tests
17:23 yoleaux2 lizmat: I'll pass your message to [Tux].
17:33 [Tux] one run had over 750
17:33 yoleaux2 17:23Z <lizmat> [Tux]: looks like the problem existed *before* my patches: first run after re-compile: 693 tests, any other run has 673 tests
17:34 [Tux] Now I get 703 every run
17:34 timotimo oh, oof
17:38 [Tux] 703 looks ok, so I must have misremembered the 750+
17:39 [Tux] rm -rf .precomp; make test
17:43 [Tux] This is Rakudo version 2016.06-25-g9b579d0 built on MoarVM version 2016.06
17:43 [Tux] test            16.412
17:43 [Tux] test-t           9.756
17:43 [Tux] csv-parser      21.924
17:45 [Tux] 703 it is
18:11 sno joined #perl6-dev
18:13 cognominal joined #perl6-dev
18:49 FROGGS joined #perl6-dev
19:39 sortiz lizmat, a quick question: After fd98fc342 should we assume that Iterator.count-only, still documented, is not more in 6.c? Should its documentation be removed?
19:46 sortiz Asking 'cus, I understand that many of the removed _implementation_ where, in fact, a premature optimization, but at the interface level, still make much sense, IMO.
19:58 lizmat sortiz: the problem is that .elems did not cache, and this confused people
19:58 lizmat and it potentially give a different result from prefix +
19:59 lizmat (because that *did* cache)
19:59 lizmat so, until we can figure that one out, having count-only is a premature optimization
19:59 lizmat so, what I did was basically 2 things:
19:59 lizmat - remove all internally defined count-only methods
20:00 lizmat - don't let Seq.elems call count-only on the iterator
20:01 sortiz Yep, that clear, but honestly I wold have preferred resolve the confusion the other way, ie. made numification attempt to count-only fist.
20:02 lizmat sortiz: tried that  :-(
20:02 lizmat sortiz: which does not mean you shouldn't try  :-)
20:03 lizmat it's just that *I* gave up, and *I* was the only one between pmichaud / jnthn / TimToady to who it made sense
20:04 sortiz The problem I see is that now, a BIG Iterabkeerator
20:05 lizmat which is what .cache does
20:05 sortiz oops A big iterable, when cached, isn't yet reified but when elems called, that colapse!
20:11 sortiz unless marked lazy, so now there isn't any more for ask the size without loading, in memory, all the elements. And happens that I has an on-disk Hashish (LMDB) potentially really big.
20:11 sortiz *a way for ask
20:15 lizmat sortiz: ok, so you're saying you can know the number of elements of an iterator without generating the values?
20:15 lizmat that's not generally true
20:16 lizmat hmmm... perhaps the default count-only should cache...
20:16 sortiz In all the *DBM files that the case, and all support an Iterable interface.
20:16 lizmat hmmm... lemme think about that
20:17 sortiz *that is
20:17 * lizmat starts paying more attention to Damian's tutorial again  :-)
20:18 sortiz Oops, sorry.. CYL&
20:24 nine lizmat: so you're finally learning Perl 6? ;) Wish I could join you
20:24 lizmat yeah.... finally!   :-)
20:27 bartolin joined #perl6-dev
20:27 cognominal joined #perl6-dev
20:27 RabidGravy joined #perl6-dev
20:27 |Tux| joined #perl6-dev
20:28 timotimo joined #perl6-dev
20:28 bisectable joined #perl6-dev
20:36 tadzik joined #perl6-dev
20:46 lizmat m: multi a() {}; multi a() {}; a    # not taking the foirst
20:46 camelia rakudo-moar 9b579d: OUTPUT«Ambiguous call to 'a'; these signatures all match:␤:()␤:()␤  in block <unit> at <tmp> line 1␤␤»
20:46 lizmat TimToady: was that what you meant ?
20:46 TimToady only if there are constraints
20:46 lizmat ah, ok
20:48 lizmat m: multi a("") { say "first" }; multi a("") { say "second" }; a("")   # first matching constraint
20:48 camelia rakudo-moar 9b579d: OUTPUT«first␤»
21:21 sortiz My point of is that, at the interface level, the Iterator role needs a well defined method to ask for its size, even if the default result is Inf or some kind of 'dunno'.
21:42 bisectable joined #perl6-dev
21:47 Zoffix 2016.04: Stage parse:  81.936        /        Bleed: Stage parse      :  56.483
21:47 Zoffix m: say "{(81.936 - 56.438) / 81.936 * 100}% fastar"
21:47 camelia rakudo-moar 9b579d: OUTPUT«31.119410% fastar␤»
21:48 Zoffix (for rakudo build)
21:51 timotimo nice
22:41 skids joined #perl6-dev
23:19 jdv79 Zoffix: what causes that speedup?
23:24 Zoffix ¯\_(ツ)_/¯ general progress?
23:40 timotimo someone else got a bronze sponsorship for the butterfly
23:51 Zoffix Yeah, saw it :)
23:51 Zoffix They fixed my name!

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary