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] Rakudo version 2018.02.1-74-gfc643a215 - MoarVM version 2018.02-22-g9233d85e7
csv-ip5xs0.807 - 0.811
csv-ip5xs-207.599 - 7.623
csv-parser36.653 - 37.237
csv-test-xs-200.438 - 0.476
test9.167 - 9.174
test-t2.539 - 2.593
test-t --race1.068 - 1.092
test-t-2046.113 - 47.081
test-t-20 --race16.771 - 16.989
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