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 |