timotimo | lizmat: ConcBlockingQueue uses locks and blocks, lock-free data structures don't use locks :) | 01:28 | |||||||||||||||||||||||||||||||||||||
lizmat | timotimo: ah, ok, but then why isn't ConcBlockingQueue a lock-free data structure? | 10:01 | |||||||||||||||||||||||||||||||||||||
inquiring minds need to know :-) | |||||||||||||||||||||||||||||||||||||||
Files=1236, Tests=76246, 320 wallclock secs (14.74 usr 5.32 sys + 2192.84 cusr 217.47 csys = 2430.37 CPU) | 10:04 | ||||||||||||||||||||||||||||||||||||||
samcv | so looks like i will have to wait for allowing different classes in 6.d since the encode/decode stuff is in classes | 10:09 | |||||||||||||||||||||||||||||||||||||
though apparently I can have subs that are different in that special file. so would I be able to just create subs for the methods in the classes to call? | |||||||||||||||||||||||||||||||||||||||
and would that cause it to run different code based on 6.d or 6.c? | 10:10 | ||||||||||||||||||||||||||||||||||||||
lizmat | timotimo: it appears I'm getting debugging output when doing a --profile | 10:18 | |||||||||||||||||||||||||||||||||||||
"going to take a profiler snapshot" "took data from main thread" "skipped a thread" "done taking data" | 10:19 | ||||||||||||||||||||||||||||||||||||||
I can live with it, just wanted to let you know | |||||||||||||||||||||||||||||||||||||||
jnthn: would it make sense to add a "shift" to Concurrent::Stack and then use that in the ThreadPoolScheduler ? | 11:21 | ||||||||||||||||||||||||||||||||||||||
www.unicode.org/emoji/charts-11.0/...html#1f99c # too little, too late :-) | 11:24 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 7835652d54 | (Elizabeth Mattijsen)++ | 4 files Make substr() just a front for Str.substr - allows objects to create their own .substr methods and have substr() see them - move all the substr() logic to Str.substr candidates - simplify the logic in each candidate for better inlinability - makes substr() up to 1.5x faster, and Str.substr() up to 3x faster |
11:40 | |||||||||||||||||||||||||||||||||||||
lizmat | I guess having a callsite in the setting explains the substr() improvements | 11:42 | |||||||||||||||||||||||||||||||||||||
on to substr-rw | 11:45 | ||||||||||||||||||||||||||||||||||||||
timotimo | lizmat: you can't block on the concurrent stack, which you often want if you have, for example, the ThreadPoolScheduler with threads waiting for jobs | 12:38 | |||||||||||||||||||||||||||||||||||||
yoleaux | 07:56Z <brrt> timotimo: the usual suspect for bigger-code in the expr jit is spilling | ||||||||||||||||||||||||||||||||||||||
lizmat | timotimo: ah, yes, of course :-) | ||||||||||||||||||||||||||||||||||||||
timotimo | "blocking" on a new job getting available in the concurrent stack would be looping and polling with a sleep in the middle - or without, if you're sure you're going to get something soon | 12:39 | |||||||||||||||||||||||||||||||||||||
imagine the ThreadPoolScheduler firing up 8 workers to satisfy one big workload and the rest of the program's life being single-threaded :D | |||||||||||||||||||||||||||||||||||||||
dogbert2_ | lizmat: could you try running ./perl6 t/05-messages/03-errors.t? Does it fail for you? | 13:31 | |||||||||||||||||||||||||||||||||||||
lizmat | indeed it does, looking into it | 13:32 | |||||||||||||||||||||||||||||||||||||
spectest was clean, didn't expect any fallout in "make test" :-( | |||||||||||||||||||||||||||||||||||||||
dogbert2_ | it's easy to forget those tests | 13:33 | |||||||||||||||||||||||||||||||||||||
lizmat | wonder how difficult it would be to make a target "make test+spectest" | ||||||||||||||||||||||||||||||||||||||
dogbert2_ | doesn't sound impossible | 13:36 | |||||||||||||||||||||||||||||||||||||
lizmat | well, I probably should just add a little discipline to myself :-) | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: b688a6f33c | (Elizabeth Mattijsen)++ | src/core/Str.pm Apparently a |c doesn't select the candidate Fixes error in error reporting in t/05-messages/03-errors.t . dogbert++ for spotting |
13:50 | |||||||||||||||||||||||||||||||||||||
lucasb | Any reason for substr to be in Any instead of Cool? | 14:09 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 038837f8b2 | (Elizabeth Mattijsen)++ | 4 files Make substr-rw() just a front for Str.substr-rw - objects can create their own .substr-rw methods and have substr-rw() see them - move all the substr-rw() logic to Str.substr-rw candidate - simplify the logic, eradicate SUBSTR-SANITY helper method - makes substr-rw() up to 20% faster, and Str.substr-rw() up to 30% faster |
14:10 | |||||||||||||||||||||||||||||||||||||
lizmat | lucasb: the whole point of the exercise was so that you can create your own class Foo with a .substr method | 14:12 | |||||||||||||||||||||||||||||||||||||
and that &substr(Foo:D) would also see that | |||||||||||||||||||||||||||||||||||||||
since most classes inherit from Any, rather than Cool, it seemed logical to me to put the proto and catcher methods there | 14:13 | ||||||||||||||||||||||||||||||||||||||
if we want to enforce that classes should inherit from Cool to be able to use .substr, then we could move them to Cool I guess | 14:14 | ||||||||||||||||||||||||||||||||||||||
hmmm... | |||||||||||||||||||||||||||||||||||||||
moving the substr proto to Cool tickles a test for RT #124455 | 14:27 | ||||||||||||||||||||||||||||||||||||||
synopsebot | RT#124455 [open]: rt.perl.org/Ticket/Display.html?id=124455 substr on compact array | ||||||||||||||||||||||||||||||||||||||
lizmat | the test is already todo'd, but I guess we should skip it then | 14:29 | |||||||||||||||||||||||||||||||||||||
m: subbuf | 14:31 | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Undeclared routine: subbuf used at line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | hmmm | ||||||||||||||||||||||||||||||||||||||
dogbert2_ | what happened to jnthn, did he go on vacation? | 14:33 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: aad79f8a98 | (Elizabeth Mattijsen)++ | 2 files Move substr/substr-rw catcher methods from Any to Cool lucasb++, zoffix++ for bringing this up |
14:34 | |||||||||||||||||||||||||||||||||||||
lizmat | dogbert2_: by the looks of irclog.perlgeek.de/perl6-dev/2018-...i_15865647 , I'd say yes | 14:35 | |||||||||||||||||||||||||||||||||||||
dogbert2_ | cool, perhaps he's having a well deserved beer somewhere :-) | 14:36 | |||||||||||||||||||||||||||||||||||||
Geth | roast: b04cf46cae | (Elizabeth Mattijsen)++ | S02-types/compact.t Bogus tests started failing, so skip them instead of todo |
||||||||||||||||||||||||||||||||||||||
roast/6.c-errata: 5e5e6ef13f | (Elizabeth Mattijsen)++ | S02-types/compact.t Bogus tests started failing, so skip them instead of todo |
14:37 | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Apparently a |c doesn't select the candidate | 14:39 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347277543 github.com/rakudo/rakudo/compare/7...88a6f33c44 | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 6f2cbcf797 | (Elizabeth Mattijsen)++ | src/core/Any.pm Remove no longer used helper sub |
15:03 | |||||||||||||||||||||||||||||||||||||
rakudo: 15b9478642 | (Elizabeth Mattijsen)++ | src/core/atomicops.pm Make clearer what works where Started some refactoring, having missed the fact that only some of the subs work on each backend. |
15:17 | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Make substr-rw() just a front for Str.substr-rw | 15:22 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347285965 github.com/rakudo/rakudo/compare/b...8837f8b292 | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: c3358851de | (Elizabeth Mattijsen)++ | src/core/atomicops.pm Add some more guidance in comments for atomics |
15:35 | |||||||||||||||||||||||||||||||||||||
rakudo: 51fccdfe8c | (Elizabeth Mattijsen)++ | src/core/atomicops.pm Make several atomic subs multi's - atomic-fetch-inc, postfix:<ā++> - atomic-inc-fetch, prefix:<++ā> - atomic-fetch-dec, postfix:<ā--> - atomic-dec-fetch, prefix:<--ā> - full-barrier |
15:55 | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Move substr/substr-rw catcher methods from Any to Cool | 16:02 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347296195 github.com/rakudo/rakudo/compare/0...d79f8a985f | |||||||||||||||||||||||||||||||||||||||
lizmat_ | m: nextcallee | 16:20 | |||||||||||||||||||||||||||||||||||||
camelia | nextsame is not in the dynamic scope of a dispatcher in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat_ | appears to not be in specs, but is tested in S12-methods/defer-call.t and has no documentation I could find | 16:21 | |||||||||||||||||||||||||||||||||||||
github.com/perl6/doc/issues/1806 | 16:22 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 3a4056bf32 | (Elizabeth Mattijsen)++ | src/core/control.pm Make internal RETURN-LIST sub faster for common case If we're returning / take get a List, then probably it has more than 1 element in it. |
16:25 | |||||||||||||||||||||||||||||||||||||
rakudo: 474c512c2d | (Elizabeth Mattijsen)++ | src/core/Cool.pm Make subs sprintf/printf/samecase/split multi's |
16:46 | ||||||||||||||||||||||||||||||||||||||
rakudo: 4f04698f11 | (Elizabeth Mattijsen)++ | src/core/Hash.pm Make sub circumfix:<{ }> a multi |
16:58 | ||||||||||||||||||||||||||||||||||||||
lizmat_ | m: multi sub term:<foo>($a) { "foo" } # feels to be this should complain about multi-ness and having parameters ? | 17:00 | |||||||||||||||||||||||||||||||||||||
camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
lizmat_ | afk& | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: fc643a215c | (Zoffix Znet)++ (committed using GitHub Web editor) | lib/NativeCall.pm6 Fix typo in comment |
17:14 | |||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Add some more guidance in comments for atomics' | 17:29 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347324780 github.com/rakudo/rakudo/compare/1...358851de13 | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo/fix-R-1576--native-call-segv: 91e1f222d6 | (Zoffix Znet)++ | 2 files Differentiate precomp NC sub setup markers Fixes github.com/rakudo/rakudo/issues/1576 R#1576 If a NativeCalled sub used is during precomp, it's marked as `$!setup`. However, when it's later used in non-precomp environment, the stuff setup does is not available and so we get a SEGV. Fix by using a separate marker for $!setup when we're in precomp mode so that when we switch to non-precomp mode, we setup again. |
17:49 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#1576 [open]: github.com/rakudo/rakudo/issues/1576 [SEGV] Assigning NativeCall return value to constant segfaults on calling the sub again | ||||||||||||||||||||||||||||||||||||||
rakudo/fix-R-1576--native-call-segv: 5556e4ff0b | (Zoffix Znet)++ | 2 files Differentiate precomp NC sub setup markers Fixes github.com/rakudo/rakudo/issues/1576 R#1576 If a NativeCalled sub used is during precomp, it's marked as `$!setup`. However, when it's later used in non-precomp environment, the stuff setup does is not available and so we get a SEGV. Fix by using a separate marker for $!setup when we're in precomp mode so that when we switch to non-precomp mode, we setup again. |
17:51 | ||||||||||||||||||||||||||||||||||||||
rakudo: zoffixznet++ created pull request #1577: Differentiate precomp NC sub setup markers |
|||||||||||||||||||||||||||||||||||||||
[Tux] |
|
18:10 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/fix-R-1576--native-call-segv: b27c548fb6 | (Zoffix Znet)++ | 2 files Differentiate precomp NC sub setup markers Fixes github.com/rakudo/rakudo/issues/1576 R#1576 If a NativeCalled sub used is during precomp, it's marked as `$!setup`. However, when it's later used in non-precomp environment, the stuff setup does is not available and so we get a SEGV. Fix by using a separate marker for $!setup when we're in precomp mode so that when we switch to non-precomp mode, we setup again. |
18:53 | |||||||||||||||||||||||||||||||||||||
synopsebot | R#1576 [open]: github.com/rakudo/rakudo/issues/1576 [SEGV] Assigning NativeCall return value to constant segfaults on calling the sub again | ||||||||||||||||||||||||||||||||||||||
rakudo/optimize-boolification: 4a31d0daf7 | (Zoffix Znet)++ | src/core/Bool.pm Optimize boolification methods Replace .Bool calls with nqp::p6bool() in Bool.pm (other areas of the compiler still use the method call, which could be changed too) Using `my $x = ā¦; {for ^3000_000 {my $ = ?$x}; say now - ENTER now}` Makes: - with Num; 9x faster - with `class {}.new`; 11% faster - with `class { method Bool { False } }.new` or `but False` of core types; 4.6x SLOWER - with an unmixed Int or Str, no change |
19:36 | ||||||||||||||||||||||||||||||||||||||
rakudo: zoffixznet++ created pull request #1578: Optimize boolification methods |
19:37 | ||||||||||||||||||||||||||||||||||||||
rakudo: 2a42cdbb2e | (Zoffix Znet)++ | src/core/Num.pm Make Num.Bool 9x faster Just use nqp ops to equate self to zero, instead of going through Numeric.Bool and trying to != against Int 0, using which would involve .Numerics and .Bridges Closes github.com/rakudo/rakudo/pull/1578 R#1578 |
20:06 | ||||||||||||||||||||||||||||||||||||||
synopsebot | R#1578 [closed]: github.com/rakudo/rakudo/pull/1578 Optimize boolification methods | ||||||||||||||||||||||||||||||||||||||
roast: 979f3e20f8 | (Zoffix Znet)++ | S02-types/num.t Cover Num.Bool Accidentally introed a hang when working on github.com/rakudo/rakudo/commit/2a42cdbb2e and the only thing that blocked was recent allomorph proptests, so it doesn't look like this is tested anywhere. |
20:16 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | bad news: evalable now segfaults on its tests | 20:21 | |||||||||||||||||||||||||||||||||||||
good news: I made it much easier to test locally | |||||||||||||||||||||||||||||||||||||||
sooooo I guess everyone will be able to reproduce it now | |||||||||||||||||||||||||||||||||||||||
(when I commit it at least) | |||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Elizabeth Mattijsen 'Make sub circumfix:<{ }> a multi' | 20:29 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347362835 github.com/rakudo/rakudo/compare/4...04698f11c5 | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | MasterDuke: \o/ github.com/perl6/whateverable/issu...-369378922 | 20:53 | |||||||||||||||||||||||||||||||||||||
AlexDaniel drops to bed | |||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Zoffix Znet 'Fix typo in comment' | 21:10 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347371409 github.com/rakudo/rakudo/compare/4...643a215cd0 | |||||||||||||||||||||||||||||||||||||||
Geth | nqp: ef12d28506 | usev6++ | src/vm/jvm/runtime/org/perl6/nqp/io/StandardReadHandle.java [JVM] Fix readfh with stdin A return value of -1 from method read on InputStream signals end of file. Also, the previous implementation didn't leave the while loop for large inputs, since is.read returns 0 if it's third argument (bytes - offset) is zero. ... (7 more lines) |
21:11 | |||||||||||||||||||||||||||||||||||||
nqp: bd2a8aca59 | usev6++ | docs/ops.markdown Note that filenofh doesn't really work on the JVM It's hard (or impossible) to implement because the JVM hides things like file descriptors. I tried to fiddle with sun.misc.SharedSecrets, but to no avail. (But even if there is a way to use SharedSecrets in combination with NIO, it would break with Java 9.) |
21:30 | ||||||||||||||||||||||||||||||||||||||
jnthn | lizmat: Because a thread pool wants a queue, not a stack. Unless one has a very interesting idea of fairness. :-) | 21:33 | |||||||||||||||||||||||||||||||||||||
lizmat | jnthn: yes, there's that also | ||||||||||||||||||||||||||||||||||||||
jnthn | But there's another thing going on here | ||||||||||||||||||||||||||||||||||||||
lizmat | and what timotimo said: blocking for a new element | ||||||||||||||||||||||||||||||||||||||
jnthn | Concurrent::Stack is a lock-free, non-blocking thing. | 21:34 | |||||||||||||||||||||||||||||||||||||
It's possible to make a Concurrent::Queue like that, and I will | |||||||||||||||||||||||||||||||||||||||
The best that I'm aware you can do if you need blocking is to have separate head and tail locks | |||||||||||||||||||||||||||||||||||||||
[Coke] | Any devs going to salt lake for TPCus this year? | ||||||||||||||||||||||||||||||||||||||
jnthn | which is what MoarVM already does | ||||||||||||||||||||||||||||||||||||||
[Coke] | (trying to figure out how early/late I should go) | ||||||||||||||||||||||||||||||||||||||
jnthn | As to "why is the queue in the VM", because it's the way we dispatch events from the event loop to the thread pool | 21:35 | |||||||||||||||||||||||||||||||||||||
lizmat | [Coke]: seems I will at least be giving a 40 minute presentation there, so looks like I will be going :-) | ||||||||||||||||||||||||||||||||||||||
[Coke] | \o/ | ||||||||||||||||||||||||||||||||||||||
lizmat | jnthn: seems like a shortcut is possble there ? | 21:36 | |||||||||||||||||||||||||||||||||||||
jnthn | Where? :) | ||||||||||||||||||||||||||||||||||||||
jnthn isn't sure which of the things he said that is a response to :) | |||||||||||||||||||||||||||||||||||||||
If it's about the head/tail locks: we *may* be able to find a way to avoid the tail lock because we don't have a concept of "full" in ConcBlockingQueue. The head lock is required for its condition variable. | 21:38 | ||||||||||||||||||||||||||||||||||||||
bartolin | Speaking of conferences: is anyone going to the German Perl Workshop? (I'm thinking about traveling to Cologne.) | ||||||||||||||||||||||||||||||||||||||
jnthn | Which is how we signal non-empty | 21:39 | |||||||||||||||||||||||||||||||||||||
bartolin: I'll be there for some of it | |||||||||||||||||||||||||||||||||||||||
(Thu, Fri, and the Sat hackathon until mid-late afternoon) | |||||||||||||||||||||||||||||||||||||||
bartolin | oh, nice! | ||||||||||||||||||||||||||||||||||||||
jnthn | I should submit my talks :) | 21:40 | |||||||||||||||||||||||||||||||||||||
lizmat | bartolin: I will be there as well | ||||||||||||||||||||||||||||||||||||||
bartolin | \o/ | ||||||||||||||||||||||||||||||||||||||
ha, I've now registered for the GPW | 21:55 | ||||||||||||||||||||||||||||||||||||||
lizmat | \o/ | 21:56 | |||||||||||||||||||||||||||||||||||||
afk again& | 21:59 | ||||||||||||||||||||||||||||||||||||||
travis-ci | Rakudo build passed. Zoffix Znet 'Make Num.Bool 9x faster | 23:55 | |||||||||||||||||||||||||||||||||||||
travis-ci.org/rakudo/rakudo/builds/347444572 github.com/rakudo/rakudo/compare/f...42cdbb2e8f | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 423e7cc0de | (Elizabeth Mattijsen)++ | src/core/Junction.pm Make subs infix:<|>/infix:<&>/infix:<^> multi's |
23:56 |