sortiz gfldex, may be a note about .DEFINITE can be useful too 01:56
gfldex .tell soritz i believe to remember being told that .DEFINITE is a implementation detail. It was removed from S12, yet there are still spectests. It's a design question I can not answer. 02:22
yoleaux2 gfldex: I'll pass your message to soritz.
Zoffix If someone knows C, would be sweet to add tests for rt.perl.org/Ticket/Display.html?id=127823 so it could be closed. I believe they go here instead of roast: github.com/rakudo/rakudo/tree/nom/...nativecall 04:15
m: say(s/^// and s/^//) 04:23
camelia rakudo-moar 405519: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> say(s/^//⏏ and s/^//)␤ expecting any of:␤ infix␤ infix stopper␤»
Zoffix m: say(s/^// && s/^//)
camelia rakudo-moar 405519: OUTPUT«Method 'match' not found for invocant of class 'Any'␤ in block <unit> at <tmp> line 1␤␤»
Zoffix Ticketed: rt.perl.org/Ticket/Display.html?id=128589 04:25
If someone has OSX, it would be appreciated to test whether this bug still exists in bleed rakudo: rt.perl.org/Ticket/Display.html?id...et-history 04:33
sortiz .tell Zoffix Test requested for RT#127823 at rakudo's PR#823 07:05
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127823
nine psch: isn't CompUnit::Repository::Jar your class loader? When you use lib 'jar#/foo/bar.jar', 'jar#foo/baz.jar'; we add two CompUnit::Repository::Jar instances to the repository chain. 07:34
dalek kudo/nom: b0cd70c | (Salvador Ortiz)++ | t/04-nativecall/02-simple-args. (2 files):
A test for native ssize_t

Need for close RT#127823, Zoffix request
07:55
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127823
dalek kudo/nom: 37ead59 | (Salvador Ortiz)++ | t/04-nativecall/02-simple-args.c:
Use the proper tested type
kudo/nom: e80060e | FROGGS++ | t/04-nativecall/02-simple-args. (2 files):
Merge pull request #823 from salortiz/test_ssize_t

Test native ssize_t
psch nine: gist.github.com/peschwa/c25caca2ae...3da677f1ca is what i'm seeing 07:56
nine psch: have CompUnit::Repository::Java do the CompUnit::Repository::Locally role. That will give it a $.prefix property pointing to the path following the # 08:01
psch alright, building that now 08:05
nine is crossing fingers 08:24
psch yeah, just gotta fix all those silly oversights... /o\
like, not checking if Repo::Locally declares any stubs for example :S 08:25
nine Silly oversights? Ah, your copying my development methodology now ;)
psch humm, now it complains about $prefix not getting value somewhen during install-core-dist.pl /o\ 08:37
that means the "original" Repo::Java in RepositoryRegistry would need to be initialized with a $.prefix i assume 08:38
but that's not a situation where we have or need one..?
nine What original repo?
psch the one in the repo-chain
in setup-repositories 08:39
nine That looks like hardly more than stub code. 08:40
Thinking a bit about this, it would seem like you'd want 2 Repository implementations. A CompUnit::Repository::Java that just loads a Java class by name (i.e. one that's already available in the CLASSPATH) and a CompUnit::Repository::Jar does CompUnit::Repository::Locally for adding jars to the CLASSPATH 08:41
psch right, the one i have already works fine for the former 08:42
and it does seem like i can't easily stuff it in one 08:43
although i really don't wanna limit people to jars :P
classfiles are fine too
nine Well we do have 3 different Repository implementations for Perl 6 modules. No reason to restrict yourself with Java repos 08:44
psch well, the loading differences between .jar and .class are already handled in nqp-j is my point 08:45
nine So you'd just need to find a better name than Repository::Jar? 08:46
psch probably, yeah
or maybe Repository::Java should be different
i mean, the one that loads from the standard classpath
which is actually mostly rt.jar
right, JavaRuntime for the one that loads Java core classes i guess
and Java for the one that loads whatever you point it at 08:47
that also means having different short-ids i guess? 08:49
nine yes
psch okay, so do_pragma calls into RepoReg.file-for-spec 09:25
that calls into Repo::Locally.source-file
but the class that does Repo::Locally already has to have a prefix at that moment..? 09:26
but file-for-spec seems to be the first spot we know what should be the prefix..?
this is weird 10:07
the .perl of Repo::Java reports the path, but in $*REPO.repo-chain is comes out as "java#", without the path after the #..? 10:08
dalek kudo/nom: ba4fff4 | lizmat++ | src/core/Str.pm:
Make Str.Int about 5% faster

By not making use of intermediates
10:40
kudo/nom: c549267 | lizmat++ | src/core/Str.pm:
Pass on Str.Numeric failures in Str.Int|Num

Re-imagined PR #822 by salortiz++
10:56
tbrowder anyone here? 10:58
lizmat is somewhat 11:15
psch hrm, a minimal, reduced example of the Java code works 11:43
but the URLClassLoader instantiated in BootJavaInterop doesn't find the class, even though the path and classname are both correct 11:44
and i have no idea what's going on :| 11:45
nine psch: where do you find a call to file-for-spec? 12:15
psch nine: it's in World.do_pragma iirc?
nine: part of the Actions for statement_mod:<use>
nine nope?
PrecompilationRepository and Backtrace are the only classes containing calls 12:16
psch ah, right, it was repository-for-spec 12:17
or, well, *is*
not sure what i saw earlier
so, yeah, apparently i was mistaken on some level 12:18
still no idea what's happening, which might be related :P
nine psch: yes. repository-for-spec takes the 'java#/path/to/jar' and should give you a CompUnit::Repository::Java.new(:prefix</path/to/jar>)
spec is always such a string with parts joined by # 12:19
psch $ ./perl6-j -I. -e'use lib q[java#.]; say $*REPO[0]' 12:20
java#
that really confuses me, fwiw
$ ./perl6-j -I. -e'use lib q[java#.]; say $*REPO[0].perl;'
CompUnit::Repository::Java.new("/home/psch/rakudo/rakudo/install/bin")
i mean, yeah, the prefix is there, but..?
nine psch: can you past Repository::Java somewhere? 12:21
s/past/paste/ 12:22
psch gist.github.com/peschwa/9f3236e850...6bc4752cab 12:23
i mean, the path still arrives in BootJavaInterop, so i don't know if that really matters
well, except from a "it'd be nice if users knew what's going on" perspective
nine psch: your method path-spec returns just 'java#' so that's what you get :)
Just remove that, it's provided by Locally 12:24
psch i *think* i copied that from ::Perl5 :P
few weeks ago though, so w/e
nine psch: yep, there it's on purpose since Perl 5 handles all the path stuff
psch yeah, that's fundamentally different between p5 and jvm interop
dalek kudo/nom: f34953b | lizmat++ | src/core/ (2 files):
Streamline chop()/.chop()

  - .chop(N) about 20% faster
  - .chop about 3.5x faster
  - use MMD for fast-pathing .chop
  - no longer create native str copy, we have $!value, duh!
12:43
Zoffix sortiz++ # tests 13:27
dalek kudo/nom: 89470a6 | lizmat++ | src/core/ (2 files):
Make Str.chomp about 20% faster

  - don't unbox a copy of the string, we have $!value
  - be smarter about the cutoff condition
13:39
Zoffix :o 13:41
dalek p: c054305 | (Daniel Green)++ | src/vm/jvm/ (2 files):
Speed up nqp::x by ~20% for large values of count on the JVM

Do this by setting the StringBuilder's initial capacity since we can calculate the expected value. Also throw an exception for negative values of count to match nqp-m's behavior.
13:43
p: 5dc9350 | lizmat++ | src/vm/jvm/ (2 files):
Merge pull request #294 from MasterDuke17/Ops.java_optimizations

Speed up nqp::x by ~20% for large values of count on the JVM
Zoffix .ask masak should this be closed based on liz's comments or should there be more discussion? rt.perl.org/Ticket/Display.html?id...et-history 13:49
yoleaux2 Zoffix: I'll pass your message to masak.
Zoffix m: ('az'…'bb').join(' ').say 14:11
camelia rakudo-moar 89470a: OUTPUT«az ay ax aw av au at as ar aq ap ao an am al ak aj ai ah ag af ae ad ac ab bz by bx bw bv bu bt bs br bq bp bo bn bm bl bk bj bi bh bg bf be bd bc bb␤»
Zoffix m: ('az'..'bb').join(' ').say
camelia rakudo-moar 89470a: OUTPUT«az ay ax aw av au at as ar aq ap ao an am al ak aj ai ah ag af ae ad ac ab bz by bx bw bv bu bt bs br bq bp bo bn bm bl bk bj bi bh bg bf be bd bc bb␤»
Zoffix I kinda expected at least one of them DTRT (RTed at rt.perl.org/Ticket/Display.html?id...et-history )
psch arguably the bug is that .. does anything at all 14:14
m: say "aa".succ
camelia rakudo-moar 89470a: OUTPUT«ab␤»
Zoffix m: say "az".succ
camelia rakudo-moar 89470a: OUTPUT«ba␤»
psch but "aa".."bb" is ("a".."b") Z ("a".."b") or somesuch
err, that's ... in all cases
m: say ("az", *.succ ... "bb").join: " " 14:15
camelia rakudo-moar 89470a: OUTPUT«az ba bb␤»
Zoffix It's kinda LTA even if there is a way to do it with *.succ. I can't recall any time I needed the current behaviour, but I did use the *.succ version. And Perl 5 does it sanely too: perl -E 'say join " ", "az" .. "bb"' 14:17
az ba bb
In other words, the current behaviour doesn't represent a range in my eyes 14:18
psch m: say (10..1).WHAT 14:20
camelia rakudo-moar 89470a: OUTPUT«(Range)␤»
psch ...there was quite a long discussion about this somewhen in the past, but i don't remember whether that was here or in #perl6 14:22
m: say ('a7'..'b2').join: ' '
camelia rakudo-moar 89470a: OUTPUT«a7 a6 a5 a4 a3 a2 b7 b6 b5 b4 b3 b2␤»
psch but afair that discussion, that one is fully on purpose
it's possible that 'az'..'bb' accidentally falls into the same logic and shouldn't, but i don't know 14:23
Zoffix It's pretty ironic that in Perl 6 generating the fibonacci sequence needs less code than a range from two strings. 14:28
psch ...but what 'az'..'bb' returns is a Range?
sure, it goes backwards, and whether that's right or wrong is why the ticket exists 14:29
Zoffix It's a range from individual characters of the strings 14:30
Not strings
psch m: say ("az"..."bb")[1]
camelia rakudo-moar 89470a: OUTPUT«ay␤»
nine I worry a bit that optimizations like "Speed up nqp::x by ~20% for large values of count" can regress other cases (without having looked at this one specifically). We do write regression tests for functionality, yet we don't similarily collect benchmarks with all this optimization work. Even though the benchmarks are obviously being written. 14:32
lizmat nine: your worry is heard... 14:40
fwiw, atm it's more important to me at least, to get more people involved in rakudo, and on the JVM backend specifically :-)
a quick merge of a PR helps in that respect, I think 14:41
nine Oh yeah, I'm absolutely with you there.
MasterDuke nine: at least in this case i did run some benchmarks with small values of count both before and after, no noticeable difference 14:50
nine MasterDuke: thanks :)
MasterDuke: I guess the main message was that I hate to see all those benchmarks thrown away after a commit when they could still be useful. 14:51
lizmat nine: also, I see people that do PR's as potential committers:
so, if a committer breaks code, this is much more visible immediately
a PR submitter will need to get used to that, the sooner the better :-) 14:52
nine Yep, I do believe that a liberal commit access policy leads to contributors just taking responsibility sooner. Even if we suffer the occasional regression in the process. 14:53
Heck I'm currently trying to fix a regression of my own ;0
lizmat :-)
lucasb re this recent ticket about s/// inside argument lists, I think it's not specific to s/// 14:58
it's not possible to use 'and'/'or' inside argument lists because of some precedence detail
m: sub f {}; f(1 or 2) 14:59
camelia rakudo-moar 89470a: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> sub f {}; f(1⏏ or 2)␤ expecting any of:␤ infix␤ infix stopper␤»
psch m: sub f {}; f( (1 or 2) )
camelia rakudo-moar 89470a: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
psch m: sub f {$^a}; f( (1 or 2) )
camelia ( no output )
psch m: say "hi" or die "foo"; 15:00
camelia rakudo-moar 89470a: OUTPUT«hi␤»
psch m: Nil or die "foo";
camelia rakudo-moar 89470a: OUTPUT«foo␤ in block <unit> at <tmp> line 1␤␤»
psch i think all of these are perfectly reasonable 15:01
dalek kudo/nom: 140c422 | lizmat++ | src/core/List.pm:
Make Reifier.reify-at-least about 30% faster

  - rewrite in NQP, so no scopes needed
Still would be nice to figure out why this method is not getting JITted
15:02
lucasb psch: yes, I agree
psch but i'm also frequently wrong, so having invocation parenthesis do a similar expr-grouping as, well, grouping parenthesis do might be a good idea
lucasb Zoffix: ^^^ (about ticket #128589) 15:03
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128589
Zoffix psch, you mean sub f {}; f(1 or 2) crashing is reasonable?
timotimo lizmat: you can MVM_JIT_LOG and grep for reify-at-least, then find the line that says "BAIL"
psch Zoffix: yes, to me "or" always drops to statement precedence, invocation parenthesis notwithstanding - as they are optional
m: sub ($) { }(1 if 0) # same here 15:04
camelia rakudo-moar 89470a: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> sub ($) { }(1 if⏏ 0) # same here␤»
jnthn Yes, I'd expect `or` inside of an argument list to need extra parens, because it's too low precedence.
yoleaux2 9 Jul 2016 03:32Z <Zoffix> jnthn: are you able to comment on this ticket? The proposal is to use multi-dispatch instead of separate subs to be consistent with other subs in Test.pm6 and liz's comments suggest I should ask your opinion: rt.perl.org/Ticket/Display.html?id...et-history
Zoffix That's pretty crazy, but OK, I'll reject the ticket.
jnthn m: sub f {}; f(1 || 2) 15:05
camelia rakudo-moar 89470a: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
jnthn m: sub f($a) {}; f(1 || 2)
camelia ( no output )
jnthn Use ||
If || and or were the same thing there'd be no point having both of them :P
lizmat timotimo: I can't seem to find a BAIL associated with reaify-at-least 15:09
timotimo: the log is here: gist.github.com/lizmat/514f34124ee...972789e078
timotimo: am I missing something ?
timotimo the method gets jitted, but if you don't see it jitted in the profile or whatever, then that means something else is b0rked 15:11
lizmat aha! well, it is yellow in the profile 15:12
that means it isn't JITted, right ? 15:13
timotimo: what does "BAIL: op <param_rp_o>" mean ? 15:14
timotimo that's one of the ops we can't jit 15:15
we'll require a rewrite of argument handling for that to be possible, if i understand correctly? 15:16
param_* are some of the most common bail reasons
lizmat sub a(*@a) I guess ? 15:17
any slurpu
*slurpy 15:18
lucasb For the RT people, can I suggest that tickets #128390 and #127224 should be merged into one?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128390
Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127224
timotimo "required positional" 15:19
sp_o is slurpy positional, iirc
nine lucasb: merged 15:22
lucasb nine: thanks!
dalek kudo/nom: 320efdf | lizmat++ | src/core/List.pm:
Make Reifier.reify-until-lazy about 20% faster

  - rewrite in NQP, so no scopes needed
15:48
kudo/nom: 2ad3239 | lizmat++ | src/core/List.pm:
Make Reifier.reify-all about 20% faster

  - rewrite in NQP, so no scopes needed
16:01
lizmat afk& 16:04
MasterDuke nine: re benchmarking, you might find this interesting, irclog.perlgeek.de/perl6-dev/2016-0...i_12812777 17:21
nine indeed! 17:23
MasterDuke you obviously need a bunch of rakudos built for it to be usefull, but luckily AlexDaniel has that for the bisectbot already 17:25
AlexDaniel MasterDuke: so right now I'm waiting for github staff to enable my another account for committable and other bots 17:30
MasterDuke sure, no prob
AlexDaniel MasterDuke: my idea is that instead of taking the first part of the output (as camelia does right now), committable should gist it and give a link to that
Zoffix Is one no longer seems to happen. Can we close it without tests? rt.perl.org/Ticket/Display.html?id...et-history 17:31
s/Is/This/;
MasterDuke AlexDaniel: you think always, or only if the output is over a certain length?
AlexDaniel MasterDuke: only for very long output 17:32
MasterDuke good idea
AlexDaniel I already have some code for it so just waiting for the account. Once committable works with that, I think we will be able to use the same thing for benchable
cool thing about github gists is that you can have multiple files
so we can have an svg graph, log and whatever we need at the same time :) 17:33
MasterDuke seems like it might start to be the time to refactor out some common code between the three bots?
AlexDaniel yeah… definitely!
MasterDuke: wanna try it? 17:43
MasterDukeLaptop AlexDaniel: i'll start playing around (oops, accidentally tranfered the conversation to #perl6) 17:54
nine Zoffix: I'm leaning towards just closing as it's unclear where the bug actually was and it would be very difficult to write it in a way that will end in ok/not ok 18:07
or even ok/segfault
Zoffix Closed. Thanks. 18:40
How can I find the rakudo version based on the "Rakudo version 2016.02-136-g412d9a4 built on MoarVM version 2016.02-25-gada3752"? Nothing comes up for github.com/rakudo/rakudo/commit/412d9a4 19:27
even though that worked for some other versions 19:28
dalek kudo/nom: a02fdbe | lizmat++ | src/core/Code.pm:
Make Code.arity|count 2x as fast

It's just that these are called for every iteration / meta op / etc.
20:20
Zoffix m: 'foo' . rand 20:51
camelia rakudo-moar a02fdb: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
Zoffix m: 42 . rand 20:52
camelia ( no output )
Zoffix m: 42 . rand.say
camelia rakudo-moar a02fdb: OUTPUT«18.8111874611344␤»
Zoffix I see.
(my error was using `.` as concat)
[Tux] This is Rakudo version 2016.06-221-ga02fdbe built on MoarVM version 2016.06-9-g8fc21d5 20:55
test 16.330
test-t 9.096
csv-parser 16.611
(in MET still on time for today :)
lizmat :-)
AlexDaniel so close
dalek ast: cf752f7 | (Zoffix Znet)++ | S19-command-line/repl.t:
-I dir shows up in REPL

RT#127695
20:56
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127695
dalek ast: 09755fb | (Zoffix Znet)++ | S19-command-line/repl.t:
Clean up after test
21:14
Zoffix .ask skids What's EnumMap on this ticket? I no longer see it on the ecosystem: rt.perl.org/Ticket/Display.html?id...et-history 21:40
yoleaux2 Zoffix: I'll pass your message to skids.
skids Zoffix: Map used to be named EnumMap. 21:41
yoleaux2 21:40Z <Zoffix> skids: What's EnumMap on this ticket? I no longer see it on the ecosystem: rt.perl.org/Ticket/Display.html?id...et-history
lizmat Zoffix: I think EnumMap was a previous incarnation of Map ?
Zoffix: and as such a builtin
Zoffix So the ticket can be closed now? 21:48
m: class a { has Map $.f = Map.new() }; my $f = a.new(); $f.f.perl.say; $f.f = :a1, :b2; $f.f.perl.say
camelia rakudo-moar a02fdb: OUTPUT«Map.new(())␤Map.new((:a1,:b2))␤»
Zoffix Do we need tests? (Using Map instead of EnumMap) 21:49
dalek rakudo/nom: de5d9e7 | lizmat++ | src/core/List.pm: 22:40
rakudo/nom: Re-imagine List.from-slurpy-flat
rakudo/nom:
rakudo/nom: It struck me that if a sub has a slurpy array, and the values specified
rakudo/nom: are all simple scalars without any additional Slippy/Iterable functionality,
rakudo/nom: that the $!future created (which is the $!todo of the List/Array to be)
rakudo/nom: is in fact already what $!reified will be in the end. So in that case
rakudo/nom: we can just put the $!future into $!reified, and we're done:
rakudo/nom:
rakudo/nom: sub a(*@a) { }; a(1,2,3,4);
rakudo/nom:
rakudo/nom: sees an improvement of 30% compared to a(), and 3 allocations less.
rakudo/nom:
rakudo/nom: This spectests clean. But this is the area of dragons, so there may
lizmat sorry dalek: 22:41
github.com/rakudo/rakudo/commit/de5d9e7
and with this I wish #perl6-dev a good night! 22:42
Zoffix night
nm my question. 22:53
b2gills bisect: Promise.in(1).then({exit 1}); say (0..10).rotor(1,2 xx *); 23:56
bisectable b2gills: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel m: Promise.in(1).then({exit 1}); say (0..10).rotor(1,2 xx *); 23:57
camelia ( no output )
AlexDaniel committable: 2015.10 Promise.in(1).then({exit 1}); say (0..10).rotor(1,2 xx *); 23:58
committable AlexDaniel: 「exit=1」
b2gills I think something isn't treating the 2 xx * as lazy 23:59
m: Promise.in(1).then({exit 1}); say (0..10).rotor(1,2 xx 1000);
camelia rakudo-moar de5d9e: OUTPUT«((0) (1 2) (3 4) (5 6) (7 8) (9 10))␤»