masak [Coke]: I confess the bot completely slipped my mind. I'll be happy to learn (again) how to interact with it. 04:43
bisectable6: help
bisectable6 masak, Like this: bisectable6: old=2015.12 new=HEAD exit 1 if (^∞).grep({ last })[5] // 0 == 4 # See wiki for more examples: github.com/perl6/whateverable/wiki/Bisectable
masak approves of this reply
bisect: my $n = " ".indent(0); $n.indent(1) for ^1000 04:48
bisectable6 masak, Bisecting by exit signal (old=2015.12 new=347da8e). Old exit signal: 0 (None)
masak, bisect log: gist.github.com/8278100f4bb4642713...6d9c5eea5a 04:49
masak, (2017-09-06) github.com/rakudo/rakudo/commit/cb...67e75f0dad
masak is glad to see his bisect agrees with bisectable6's 05:13
lizmat Files=1223, Tests=67402, 292 wallclock secs (11.07 usr 4.65 sys + 1977.90 cusr 206.27 csys = 2199.89 CPU)
masak though I guess it's only so informative when the commit identified is an NQP bump
if I were slightly more savvy with Rakudo's build system, I might be able to bisect locally with different commits of NQP built 05:14
...which would no doubt flag up a MoarVM bump... :P
actually, out of the four NQP commits in the bump, one is indeed a MoarVM bump: d016ffd 05:15
which then brings in 25 commits, most of which seem to consist of a MoarVM branch. 05:16
[Tux] This is Rakudo version 2017.08-95-g347da8e5b built on MoarVM version 2017.08.1-128-gde6dceda 06:09
csv-ip5xs 1.304 - 1.352
test 9.665 - 10.005
test-t 3.486 - 3.492
csv-parser 10.644 - 10.780
pmurias passing a native int when a native str is expected should fail? 08:59
jnthn Yes 09:00
Well, die
m: sub foo(str) { }; my int $i = 42; foo($i)
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling foo(int) will never work with declared signature (str)
at <tmp>:1
------> 3sub foo(str) { }; my int $i = 42; 7⏏5foo($i)
jnthn Heh, it's even caught at compile time :)
pmurias ok, the jvm backend needs that fixed then (was checking if maybe the nqp tests are wrong and the JVM backend is correct ;) ) 09:01
dogbert2 .seen samcv 10:05
yoleaux I saw samcv 00:24Z in #moarvm: <samcv> neat
dogbert2 jnthn: shouldn't we close github.com/MoarVM/MoarVM/issues/653 10:14
jnthn Ah, I thought it had been :) 10:17
pmurias bartolin: if you get stuck with anything while unbitrotting the jvm backend I can try to help 12:26
Geth nqp: 0e78e6b603 | pmurias++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java
[jvm] When getting a wrong kind of native argument throw an exception instead of trying to coerce
12:31
nqp: 91d6538e0b | pmurias++ | t/nqp/112-call.t
Test passing wrongly typed required native named arguments
rakudo/nom: e5a600997c | (Will "Coke" Coleda)++ | docs/windows.md
Note how to build on windows
rakudo/economic_thread_pool_scheduler: dad3f3c68b | (Timo Paulssen)++ | src/core/ThreadPoolScheduler.pm
spawn threads only if not enough idle threads exist

the magic trick is to mark a thread "claimed" for the duration of its startup. This allows a bunch of "start"s in a row to spawn equally many threads rather than seeing "one's already starting, so we're fine". Now we can start threads only if there are no free threads available (but we want one idle thread in there anyway for a safety margin).
12:36
travis-ci NQP build passed. pmurias 'Test passing wrongly typed required native named arguments' 13:00
travis-ci.org/perl6/nqp/builds/273280091 github.com/perl6/nqp/compare/ad835...d6538e0b1c
Geth roast: 638ad9b2ed | skids++ (committed by Moritz Lenz) | S32-str/sprintf-b.t
Alter tests to avoid unintended/irrelevant interpolation

Allows us to change some skips to todos
   New RT#132040 added to deal separately with the "%+ " issue
   Alters tests... will need cherry-pick into 6.c-errata as well
14:45
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=132040
scovit I suspect I found a bug: 15:21
gist.github.com/anonymous/a07655f2...73a7c221dc
is it intended behaviour? should I RT?
(I found it in unrelated code) 15:22
timotimo what behavior are you seeing? 15:23
scovit the 0 byte in the second input is ignored 15:24
if the second input is shorter then the first
I suspect a .decode bug 15:25
timotimo utf8 is allowed to have null bytes, isn't it?
m: say "hello\0how\0are\0you?".encode("utf8")
camelia utf8:0x<68 65 6c 6c 6f 00 68 6f 77 00 61 72 65 00 79 6f 75 3f>
timotimo m: say "hello\0how\0are\0you?".encode("utf8").decode("utf8")..perl
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
perl used at line 1
timotimo m: say "hello\0how\0are\0you?".encode("utf8").decode("utf8").perl
camelia "hello\0how\0are\0you?"
jnthn yeah, the decoder isn't intended to consider the 0 byte as a string terminator 15:26
scovit putting ASCII there is the same
timotimo if you're interfacing with C you'll want to use either CString or functions that give you the intended length of a string
scovit timotimo I think it is a bug
timotimo i think it's intended behavior
jnthn scovit: Why do you think it's a bug?
scovit because it forces me to change the interface for an obscure reason.. ok lets try with CString 15:28
jnthn What input are you giving the gets?
timotimo a long thing and then a short thing
scovit I am not using gets of course, this it an error string retrieval function from a C library 15:29
ilmari so the buffer will be 'short\0endoflongthing\0\0\0\0\0'
jnthn Right, that's exactly what i see
scovit when shorter error message come out, there is a problem
ilmari if you want to stop at the first null, you need to do that yourself
perl6 string are not null-terminated
*strings
timotimo how does this function work? 15:30
jnthn scovit: do .perl on the first string and you'll see there's actually a bunch of null bytes at the end of it
timotimo do you pass it a size, or do you get a size back or what?
scovit jnthn I noticed that; timotimo: the size is just the size of the buffer, this is the C api
timotimo the function can't know the size of the buffer
scovit (probably originally was a fortran api. otherwise i dont undertand the terribility)
timotimo because such a thing doesn't exist in C
jnthn Anyway, Buf.decode is defined as deocding the full content of the buffer 15:31
scovit timotimo: I puss the size as an argument
timotimo OK
m: say "hello".split("\0").perl
camelia ("hello",).Seq
timotimo you can decode it, split by \0 and just take the head
oh, unless the 0 byte makes the utf8 invalid 15:32
which it can, i suppose
so maybe more like
scovit I can use the ASCII encoder, this is a library made in the '80s 15:33
timotimo m: say "hello\0oldstring".encode("utf8").list.grep({ 0 ff False }).decode("utf8")
camelia No such method 'decode' for invocant of type 'Seq'
in block <unit> at <tmp> line 1
timotimo m: say "hello\0oldstring".encode("utf8").list.grep({ 0 ff False }).Buf.decode("utf8")
camelia No such method 'Buf' for invocant of type 'Seq'
in block <unit> at <tmp> line 1
timotimo m: say "hello\0oldstring".encode("utf8").list.grep({ 0 ff False }).list.Buf.decode("utf8")
camelia No such method 'Buf' for invocant of type 'List'
in block <unit> at <tmp> line 1
timotimo we don't have that, eh 15:34
m: say Buf.new("hello\0oldstring".encode("utf8").list.grep({ 0 ff False })).decode("utf8")
camelia ␀oldstring
timotimo wrong way around %)
jnthn You can just .index("\0")
On the decoded string
timotimo yeah, but then you have to [ ] on that number
i was hoping i could only mention the buffer once
jnthn .substr(0, .index("\0")) given .decode('ascii') or some such mebbe? 15:35
timotimo heh. yeah
scovit Ok, I can do this. the problem is that users will use the library interface. And it going to become very clumpsy
for them
timotimo why do you give them the clunky interface, then? :) 15:36
scovit timotimo: peraphs because I do not know how to do that properly :)
jnthn Often modules doing native bindings will go to a bit of effort beyond exposing the native calls themselves, to present a more Perl 6-y interface 15:37
Or provide both: the guts and then a convenience API on top
scovit that was my plan
jnthn So I guess you'd only have to do this bit in fiddling in your wrapper, and then it's nice for users 15:38
timotimo you can use "is symbol" to have your sub with a different name from the native symbol 15:39
sub lolwhatisthis() is native('foo') is symbol("actual_function_name") { * }
scovit thanks, ok, not a bug 15:40
ugexe [Coke]: as a heads up I do my windows build with Strawberry/VS (so does travis) re github.com/rakudo/rakudo/commit/e5...13fb3c4R59 17:04
[Coke] ugexe: ... ok. feel free to update any mistakes in there; was just trying to document it because at some point a few weeks ago there was a rash of windows issues, and I went through the steps of getting a compile together. (and after that several people mentioned that they too had windows builds) 17:18
ugexe yeah i was mentioning it more because i was curious if that setup didnt work for you, and if the difference could be the `git` package (+ utils) 17:33
[Coke] ... that's the setup I'm using? 17:34
strawberry & VS2016
er, 17
ugexe ah sorry i misunderstood. those two alternatives were... alternatives to exactly that 17:35
[Coke] (though we could easily add a gcc variant to that doc if we've already got strawberry) 17:46
scovit What would it take to implement CArray[Buf] ?
[Coke] going to update doc's t/valid-pod.t to also die if there is a pod *warning*, not just an error.
right now, for example, "C<" is valid
timotimo scovit: in what way is it currently not possible to have that? 17:48
you can have CArray[CArray], can you not?
probably will have to have CArray[Pointer] instead and nativecast all the time 17:49
scovit A C array can only hold: not Buf.. Are you suggesting to replace all Buf with CArray?
^ this is the error message
timotimo yeah, a buf has to know its size
you can't do that within a CArray because we would have to create a Buf for every slot in the CArray (which we have no idea how big it is) 17:50
also, Buf really wants to manage its own memory, because it can grow, i.e. realloc
scovit ok, understood the problem
timotimo have you looked at NativeHelpers::Blob? 17:51
scovit I will check it out
yes, I look'd at that already, basically it is a way to get the pointer out of the Buf object 17:52
timotimo hm, isn't it the other way around?
not sure 17:53
scovit both
timotimo oh wait, isn't that the thing that grabs the WHERE of the buf and takes a fixed offset to find the pointer to the data storage?
scovit timotimo, what about a Blob ? there would not be problems with reallocs, but is it ok to break the immutability of the content (not the one of the memory area)? 18:33
CArray[Blob] I mean
or would it realloc due to GC? 18:34
Skarsnik CArray[Type, size] could solve some issue already I think? 18:56
Geth roast: 37a6bb9bfd | pmurias++ | S02-types/capture.t
Stop test from depending on implementation specific hash element ordering
19:13
rakudo/nom: fb140b89ac | usev6++ | src/core/Kernel.pm
Make attribute visible for all backends

  (part of unbusting the jvm build)
19:19
rakudo/nom: dd52b07b71 | usev6++ | src/core/Match.pm
Use nqp::eqaticim on MoarVM only

Fall back to old behaviour (pre 215a5fa731) on other backends.
bartolin pmurias: thanks for the offer (helping to unbust the jvm build)! indeed I'm clueless how to fix the NullPointerException during happening here: github.com/rakudo/rakudo/blob/1ada...r.nqp#L256 19:22
that code was changed recently (ed4f6cc998). using '#?if jvm' to restore the old behaviour for jvm seems to have no effect there 19:23
^^skids do you have a clue, maybe?
with that NPE gone, it would be possible to build rakudo-j again. (but then precompilation seems to be busted, too) 19:24
skids bartolin: hard to imagine that an #?if would not put the code back exactly... 19:31
pmurias bartolin: I'll look into that tommorow
bartolin pmurias++ 19:33
skids: that's what I thought, too. on the other hand the NPE happened when the following command is executed: bin/rakudo.jvm/bin/nqp-j --module-path=blib --target=jar --javaclass=perl6 --output=perl6.jar gen/jvm/main.nqp 19:36
however, I'll probably wait for pmurias++ ;-) 19:37
travis-ci Rakudo build errored. Will "Coke" Coleda 'Note how to build on windows' 19:45
travis-ci.org/rakudo/rakudo/builds/273280313 github.com/rakudo/rakudo/compare/3...a600997c30
buggable [travis build above] ✓ All failures are due to timeout (0), missing build log (3), GitHub connectivity (0), or failed make test (0).
skids bartolin: well, that code is a failure path so even getting there in the first place is not a good thing. Or, the line number is wrong... 19:53
bartolin skids: the strange thing is, that the build continues if I comment out lines 256 and 257. masking them with '#?if moar .. #?endif' does not help, though. 19:56
skids Hrm... well the first thing I might try is introducing two extra variables to be more SSA-like. Failing that maybe hand-coding nqp ops to do the whitespace chomp. 20:01
Geth roast: fd78ffd3b3 | (Moritz Lenz)++ | S05-grammar/action-stubs.t
Test for Match.actions
20:24
pmurias bartolin: #?if moar #?endif are just comments in Perl6/Grammar.nqp because that file is not run through the preprocessor 20:42
Geth rakudo/nom: 591b93eaf8 | pmurias++ | src/Perl6/Grammar.nqp
Refactor a regex in a way that avoids a JVM backend bug and is cleaner
21:11
pmurias bartolin: ^^ that commit avoids the NPE, the bug in nqp-j needs to be fixed (but that can be dealt with later) 21:12
at least Hello World now works on the JVM backend, precompilation needs fixing 21:46
MasterDuke pmurias++ bartolin++ 21:47
scovit Skarsnik, timotimo, of course CArray[Type, size] could solve the issue. Possibly also with a method called .decode, or .Blob 23:20
is it a safe workaround to allocate a CArray[Type] with a native call to malloc and then NativeHelper::Blob to do the .decode ? 23:23
no, CArray will also get moved :( 23:37