Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-01-21

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
02:48 ilbot3 joined #moarvm
02:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
04:21 brokenchicken joined #moarvm
04:21 brokenchicken joined #moarvm
06:07 geekosaur joined #moarvm
06:45 TimToady joined #moarvm
09:22 TimToady joined #moarvm
11:09 domidumont joined #moarvm
11:15 domidumont joined #moarvm
11:34 jnthn I'm guessing wildly about phones here, but it may be that multiple slower cores is more power-efficient (or easier to do power-management on) than one really fast core. Perhaps ditto for heat. Both matter plenty for phones.
11:45 Geth MoarVM/master: 6 commits pushed by jnthn++
11:45 Geth MoarVM/master: 5787bc1481 | Factor out adding to active work list.…
11:45 Geth MoarVM/master: 40f4a7e831 | Factor out fetching active async work items.…
11:45 Geth MoarVM/master: 4241f5e9e7 | Add function to remove active work list entries.…
11:45 Geth MoarVM/master: 4fad8111ad | Have async procs and timers remove from active.…
11:45 Geth MoarVM/master: 2b015490c9 | Active work cleanup for async sockets.…
11:45 Geth MoarVM/master: 8193e8e983 | Merge pull request #506 from MoarVM/inactivate-async-tasks…
11:45 Geth MoarVM/master: review: https://github.com/MoarVM/MoarVM/compare/5971948a13...8193e8e983
11:45 Geth MoarVM: cc8a133a28 | MasterDuke17++ | 5 files
11:45 Geth MoarVM: Fix format strings that warn during compile
11:45 Geth MoarVM:
11:45 Geth MoarVM: Change to the suggested types+modifiers.
11:45 Geth MoarVM: review: https://github.com/MoarVM/MoarVM/commit/cc8a133a28
11:45 Geth MoarVM: ac79dfb2a6 | (Jonathan Worthington)++ | 5 files
11:45 Geth MoarVM: Merge pull request #501 from MasterDuke17/fix_warnings_during_compile
11:45 Geth MoarVM:
11:45 Geth MoarVM: Fix warnings during compile
11:45 Geth MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ac79dfb2a6
11:51 timotimo a veritable deluge of mails directly after the release :)
11:54 jnthn :)
12:20 * timotimo didn't read the PR description of inactivate-async-tasks until now
12:20 timotimo interesting
12:23 timotimo managing memory is difficult, yo
12:23 jnthn Indeed.
12:23 jnthn Anyway, with that merged we should see a lot less leaks in thing using Proc::Async and friends.
12:24 timotimo i mean ... virtual memory means that if the array grows unboundedly and we never touch the slots near the beginning, and make sure to null them out properly, they'll just be dedup'd :P
13:15 jnthn haha
13:16 jnthn That's horrible, but yes :P
13:16 jnthn We'll still fix it though, it's good for locality :)
13:17 timotimo aye
13:17 timotimo interesting. that "riptide" gc does its "draining" (aka DFS to set marking bits) in parallel without considering what thread an object belongs to, and they CAS the mark bits in parallel
13:17 timotimo (extra bonus: the words "parallel" line up in my terminal right there
13:17 timotimo )
14:37 dogbert17 o/
14:38 dogbert17 deafening silence :)
14:39 dogbert17 m: class SQLString { }; my $stringy = Str.^find_method("Stringy"); my $handler = $stringy.wrap(method () { SQLString.new(:str(callsame)) }); say "foo".Stringy # should this loop indefinitely?
14:39 camelia rakudo-moar 8a6bfc: OUTPUT«(timeout)»
14:57 Ven joined #moarvm
15:16 dogbert17 and another question, what does this message mean? MoarVM panic: Zeroed owner in item added to GC worklist
15:25 Geth MoarVM: MasterDuke17++ created pull request #510: Change tabs to spaces
15:25 Geth MoarVM: review: https://github.com/MoarVM/MoarVM/pull/510
15:40 samcv guys so our strings aren't always stored in one long string or they are? looking at how we find a needle's inside haystack
15:40 samcv we just call MVM_string_substrings_equal_nocheck which does memcmp(a->body.storage.blob_8 + starta,..)
15:40 samcv so it would seem as if they are continuous regions of memory? or is there something i'm not seeing
15:43 timotimo oh hey samcv :)
15:43 samcv hey
15:43 timotimo strings can be "ropes"
15:43 MasterDuke samcv: i don't know much about the internal representation, but if you're planning on working on string searching you might be interested in https://github.com/MasterDuke17/MoarVM/tree/boyer_moore_for_index
15:43 timotimo which is a list (can be a tree) of references to other strings including offset and length
15:45 timotimo looking forward to you commenting on my PR on UCD, samcv :)
15:45 samcv yeah about tho check it out now
15:45 timotimo but the next ~hour&half will be spent on the road and i should really rather not stare at screens, lest i projectile-vomit people to death
15:45 samcv hah
15:46 timotimo we're still waiting on one person, though
15:48 samcv i think switching to memmem instead of memcmp would bring us a pretty big improvement
15:48 samcv also i'm not sure how we get different locations comparing how we are doing, in case it uses ropes or something
15:52 timotimo i wasn't aware of memmem, actually
15:53 timotimo substrings_equal_nocheck will fall back to grapheme iterators if one of the strings is a rope
15:54 timotimo i'd expect memcpm to be as fast as memmem, as memcmp can already abort when a single byte differs
15:56 timotimo oh
15:56 timotimo "C's memcmp is actually pretty slow because it tries to preserve useful string comparison semantics" - sounds like the writer of this SO question confused memcmp with strcmp?
15:58 timotimo oh wait a minute
15:59 timotimo substrings_equal_nocheck isn't about "where in this string is another string", it's about "is the n graphemes after offs equal to the first(?) n graphemes in the other"
15:59 timotimo but yeah, finding a string in another would be right for memmem
16:00 timotimo okay, time to drive
16:03 samcv see ya soon
17:28 timotimo re
17:29 timotimo i see you didn't comment on my cod e:S
18:34 samcv timotimo, will soon. have a question, is it able to parse multiple 0 values for one base 40 int?
18:34 samcv like if we have 3 codepoints with no name in a row, that would be value 0.
18:34 samcv so we can save a lot of space by not having to use three 0's and just have one
18:58 geekosaur joined #moarvm
19:04 timotimo how often do codepoints not have names?
19:04 timotimo it doesn't currently handle that, but it totally can
19:04 timotimo iirc i keep the state around for the Decoder
19:04 timotimo so it keeps the queue, and there's the eos_signaled bit that could perhaps have something to do with this
19:04 timotimo samcv: ^
19:05 samcv uhm
19:05 timotimo i'm currently attending the Anime Season Kickoff Frenzy, in which many first episodes of anime shows are being shown
19:06 timotimo not really able to communicate a bunch
19:06 samcv ah kk. well looks like we're ignoring blank characters. but i think there are enough that we should just treat it as a stream of data to be decoded
19:07 samcv shouldn't require too much change, but basically if we see a 0 in the highest place, then we still need to retain the smallest place which is a number, or if there's multiple 0's places then we need to assign to a diff cp
19:08 timotimo right. we already don't have "places" any more when we're looking through them
19:09 timotimo i.e. the queue already contains the up-to-40 numbers as individually addressable things in the queue
19:09 timotimo and we can pull individual ones out
19:09 samcv yeah
19:10 timotimo so when we get three 0s, it'll be fine to take a single one for each call to nom_a_string
19:13 timotimo of course it'[l have to go into the encoding part, too
19:13 timotimo maybe it'd
19:13 timotimo be interesting to adopt a queue-like approach to the code that encodes
19:13 samcv yeah. gotta adjust the encoding part
19:13 timotimo so we'll split the code that wants to emit up-to-40-numbers from the code that takes care to take triplets of it and makes 16bit numbers
19:16 timotimo it'll also handle setting up the very last bit
19:17 samcv i will make a function which we just push our strings to, and then we call at the end to get our hash table
19:17 samcv err not hash table, but uh, array
19:18 timotimo that sounds doable
19:28 timotimo it'd be nice if we could generalize the code for generating compressed stuff so we could also use different tables to generate the sequence names
19:28 samcv ah
19:28 samcv yeah
19:29 timotimo we can put the character table and the level one (and more) tablet behind pointers that live in the decoder in the C code
19:30 timotimo so we can just switch them out to decode other stuff, like sequence names
19:30 samcv unless $no-empty  # yeah this is the variable that needs to be true to begin generating null names
19:30 samcv yea
19:31 samcv should also factor in the memory we lose by storing the string, and maybe those strings should be encoded? (the shift levels?)
19:32 timotimo could definitely do that
19:33 timotimo we might have to make the queue longer then, so that we can just decode a whole second-level string into it at any time
19:33 timotimo otherwise we'd have to store more state in the decoder to tell when we're in a second-level string and how long it'll go for
19:33 timotimo *shrug*
19:34 samcv yeah
19:35 timotimo but since the Decoder will live on the stack (since it doesn't have to be long-lived ever) it can be big
20:28 domidumont joined #moarvm
21:41 zakharyas joined #moarvm
22:10 BinGOs joined #moarvm
22:10 BinGOs joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary