»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
rudi_s Hi. Is there a quick way to to if $a{$b}:exists and $a{$b}.foo eqv $bar { .. }? I don't want to retype $a{$b}. 00:28
raiph m: my $bar; say Nil eqv $bar 00:30
camelia rakudo-moar 1ef247: OUTPUT«False␤»
ugexe but his will autovivify on the second eqv i believe 00:31
raiph m: my %hash; %hash<a>.foo; dd %hash 00:33
camelia rakudo-moar 1ef247: OUTPUT«Method 'foo' not found for invocant of class 'Any'␤ in block <unit> at /tmp/Qs_ioOD1x2 line 1␤␤»
raiph m: my %hash; say %hash<a>.foo; dd %hash
camelia rakudo-moar 1ef247: OUTPUT«Method 'foo' not found for invocant of class 'Any'␤ in block <unit> at /tmp/R70qhRhDM_ line 1␤␤»
raiph m: my %hash; say %hash<a>.?foo; dd %hash 00:34
camelia rakudo-moar 1ef247: OUTPUT«Nil␤Hash %hash = {}␤»
ugexe i've been avoiding a non-existing problem, excellent 00:35
raiph rudi_s: use `.?` as the dispatcher instead of `.`
rudi_s raiph: Thank you. But this will break if $bar is e.g. a (Int) and $a is an Int hash, right? 00:38
raiph ugexe: those are generally the best type of problem to have but not if you're avoiding them
ugexe: :)
rudi_s raiph: Ah, it returns Nil for undefined values. So unless $bar is Nil, everything is fine? 00:39
raiph m: say Nil eqv Nil
camelia rakudo-moar 1ef247: OUTPUT«True␤»
raiph m: say Nil.foo eqv Nil 00:40
camelia rakudo-moar 1ef247: OUTPUT«True␤»
raiph m: role MyNil {}; say Nil.foo eqv Nil but MyNil 00:41
camelia rakudo-moar 1ef247: OUTPUT«False␤»
rudi_s Hm. When does Nil occur "in normal life"? It's not the same as undefined (undef) in perl5, right? 00:42
raiph rudi_s: Nil represents an explicit absence of a value 00:43
rudi_s But that's different from unitialized or no value for the given key, right? 00:45
raiph rudi_s: correct
rudi_s Good. Thank you. Then that should work fine for me. 00:47
raiph rudi_s: One doesn't encounter Nil nearly as often as Any.
rudi_s: But perhaps more than the almost zero you're thinking.
rudi_s Hm.
So there's no short way which always works? I don't like solutions which may break sometimes. 00:48
raiph rudi_s: Perl 6 is so beautiful. I'm still figuring stuff out. 00:57
ugexe maybe `if %x<a> andthen $_ -> $foo { say $foo.perl; }`, but its probably even more to type 00:58
raiph m: my $a = Nil; say $a
camelia rakudo-moar 1ef247: OUTPUT«(Any)␤»
timotimo ugexe: that looks syntactically wrong
$_ -> $foo ?
ugexe i meant $_.?foo -> $foo
raiph rudi_s: if one assigns Nil to a container, it resets the container's content to the default value. The default default value is Any.
timotimo that still looks wrong :) 00:59
TTIAR, no?
raiph rudi_s: Nil, which represents an absence of value, disappears when you assign it to things. So $bar won't be Nil 01:02
timotimo yeah, assigning Nil into a scalar variable will reset it to its default value
ugexe what is ttiar? 01:04
timotimo S99:TTIAR 01:05
what's wrong with synopsebot6?
Two Terms In A Row. A common error message often resulting from a missing "semicolon" between two "statement"s or putting an operator directly after a "sub".
looks like synopsebot6 netsplit out and never came back? 01:06
timotimo S99:TTIAR 01:07
synopsebot6 Link: design.perl6.org/S99.html#TTIAR
rudi_s raiph: ugexe: Thanks for the explanation. I think for now I'll stick with the explicit check as it feels clearer to me (as perl6 beginner). 01:09
timotimo has someone suggested the "with" syntax? 01:10
that'll check for definedness rather than truthness
raiph timotimo: That was my first thought and it works too 01:11
timotimo ok
rudi_s timotimo: How can I extend that with a second condition? 01:12
raiph timotimo: but I felt there ought to be a nicer solution and I thought using `.?` fits the bill 01:13
timotimo can you show example code for what you mean, rudi_s?
rudi_s timotimo: if $a{$b}:exists and $a{$b}.foo eqv $bar { .. }?
(Or actually !eqv is what I need.) 01:14
timotimo ah. for that "with" probably wouldn't be the right thing 01:18
raiph timotimo: darn it, `with` was my first thought but please ignore the rest of what I said about it 01:19
ugexe `say "same" with my $xxx = %x<a> and $xxx.?foo !eqv $bar` i think
raiph (ie I don't know if it works or not)
timotimo ugexe: but the eqv will only ever return a boolean value and the with will check on that, rather than the %x<a> 01:20
rudi_s Something like this would be nice: $a{$b}:exists -> $_ and $_.foo eqv $bar { .. } - then I don't have to write $a{$b} two times.
raiph rudi_s: I don't understand why that's not just: use `.?` instead of `.` 01:21
timotimo you can use "my" inside that line, kind of like ugexe showed
rudi_s raiph: Sorry, eqv should be !eqv. 01:23
How would I combine that with ".?"? 01:24
raiph m: my $bar; my %a; %a<b> = 1; if %a.?foo !eqv $bar { ... } 01:25
camelia rakudo-moar 1ef247: OUTPUT«Stub code executed␤ in block <unit> at /tmp/1twOXXJaxX line 1␤␤»
timotimo raiph: you mean %a{$b}.?foo
raiph m: my $bar; my %a; %a<b> = 1; if %a<b>.?foo !eqv $bar { ... }
camelia rakudo-moar 1ef247: OUTPUT«Stub code executed␤ in block <unit> at /tmp/P6yb16sYjP line 1␤␤»
rudi_s m: my $bar; my %a; if %a<b>.?foo !eqv $bar { ... } 01:26
camelia rakudo-moar 1ef247: OUTPUT«Stub code executed␤ in block <unit> at /tmp/V_2pld3Jb0 line 1␤␤»
rudi_s I don't want to enter the block in this case. 01:27
timotimo ah, right 01:36
because Nil wouldn't eqv $bar
raiph rudi_s: ping 04:57
dalek Iish: 46af42f | (Salvador Ortiz)++ | / (9 files):
Move testing framework to DBIish::CommonTesting

Remove t/lib, we don't want an extra "use lib 't/lib';" in our tests.
The work that was done 't/lib/Test/Config/Pg.pm' is useless as the Pg C library implements all the PG* env vars handling.
05:14
Iish: 8f4d682 | (Salvador Ortiz)++ | / (3 files):
Make panda happy bumping the version number.

Continuous Integration needs that every change be reflected in the version of our META6.json.
We take this opportunity to unify the name of the test databases.
dalek Iish: db002ce | (Salvador Ortiz)++ | t/35-pg-common.t:
Pg: Fix typo in test db name
05:27
Iish: f979c70 | (Salvador Ortiz)++ | lib/DBDish/mysql (2 files):
mysql: Better error handling at connect
jdv79 that is sad about shimmerfairy bouncin:( 06:23
buharin moritz, hi 07:16
buharin why cant I use variable to initialise itself like in python 07:29
or even C 07:30
buharin someone here? 07:47
Timbus ? in what way
buharin perl6 t/basic.t 12.66s user 0.18s system 99% cpu 12.850 total
wtf I write simple function 07:48
and it run it 12s
crazy
xD
Timbus how do you "use a variable to initialize itself" in C ? 07:51
moritz m: my $x = 42; say $x; # initialized variable, for buharin
camelia rakudo-moar 1ef247: OUTPUT«42␤»
buharin a = 2 07:54
b = 3
a = a + b
OUTPUT a = 5
moritz sure
arnsholt m: my $a = 2; my $b = 3; $a = $a + $b; say $a
camelia rakudo-moar 1ef247: OUTPUT«5␤»
Timbus put dollar signs in there and you got it 07:55
moritz you can shorten that to
m: my $a = 2; $a += 2; say $a
camelia rakudo-moar 1ef247: OUTPUT«4␤»
buharin hey see this 07:56
github.com/buharin/facebook-sdk
I have started to write it but ;d
my test going thorough 12sec
buharin and sure I cant initialize 07:57
my $temp = $.GRAPH_API ~ "/" ~ $!version ~ "/" ~ $url;
$url = $temp;
buharin ?? 08:02
buharin moritz, Timbus arnsholt 08:03
moritz buharin: what makes you think you can't do that? 08:04
buharin an error
moritz buharin: what error? 08:08
buharin: do you seriously expect us to be able to help you if you don't even tell us the error you get?
buharin need to go 08:17
moritz can't shake off the feeling that buharin trolls us 08:18
nine_ Would be an elaborate way of trolling though. 08:20
CIAvash Is "Missing serialize REPR function for REPR VMException" a bug in HTTP::UserAgent or a general issue? 08:29
dalek kudo/nom: 6f96209 | lizmat++ | src/core/Rakudo/Internals.pm:
Streamline error handling for shaped arrays

Hopefully gaining a bit of performance because of easier inlineability and get some clearer code as a bonus
09:22
El_Che ls 09:24
lizmat El_Che o/
lizmat clickbaits p6weekly.wordpress.com/2016/02/29/...ping-away/
El_Che it is OK to add additional information to the META6.json file? Maybe "namespaced" prefix_something: "blah" 09:25
El_Che reading p6weekly
lizmat moritz++ 09:33
afk for a few hours&
arnsholt m: role R { my $a = 0; method foo() { $a++; say $a; } }; class A does R {}; class B does R {}; A.foo; B.foo # I wonder... 09:36
camelia rakudo-moar 6f9620: OUTPUT«1␤1␤»
arnsholt Spiffy, spiffy 09:37
RabidGravy BOO! 09:42
bioexpress Hello, is there a Perl6 signature which I could use to convey a native `wchar_t`? 09:49
CIAvash RabidGravy: Can you take a look at this question? irclog.perlgeek.de/perl6/2016-03-01#i_12121045 09:50
RabidGravy It's both :)
it should however be fixed for H::UA for the most recent 09:51
CIAvash Before, that message would just be printed but the code would work, now the code that uses H::UA dies. 09:53
RabidGravy what causes it is some code in the compile time mainline giving rise to a Failure, in the case of H::UA it is a "try require IO::Socket::SSL" that was in the mainline of the class 09:54
I moved it as late as possible
arnsholt bioexpress: Not currently, I think. Unfortunately
bioexpress Thx, than I have to wait a little bit. 09:57
CIAvash RabidGravy: You mean a fix was released?
arnsholt bioexpress: How much variation is there in how wchar_t is defined on various platforms? 09:58
RabidGravy Hmm I thought so but I may have made a mistake, it's in my local copy but not on GH :( 'ang on a sec 09:59
this will be why I'm not seeing it anymore but every one else is
CIAvash :)
bioexpress arnsholt: I don't know. I asked because I'ld like to use the ncurses `int addwstr(const wchar_t *wstr);` in Perl6. 10:00
arnsholt Right. If you'd like to get stuck in you can always just hardcode the relevant type for the platform you're working on 10:03
And then lobby one of the people working on NativeCall ATM to add a wchar_t type 10:04
bioexpress I will try it 10:05
RabidGravy CIAvash, there github.com/sergot/http-useragent/c...3b5beaf4c4 10:08
CIAvash RabidGravy: thanks :) 10:12
partly Hi 10:43
I just search 15 minutes for an error. In the end it was an if $foo = -1 instead if $foo == -1. May be the compiler should warn one about this? Or is it a feature? 10:44
DrForr There are legitimate reasons to assign inside an 'if' expression. 10:45
partly DrForr: There were? (not arguing, trying to understand) 10:46
s/There/They/
jast in some languages a warning like that is generated only if the assignment is directly on the top level of the expression
e.g. if foo = 4 creates a warning, if (foo = 4) doesn't
DrForr Sure, think about do_stuff() if $index++; "Tested the index, now move on." 10:47
partly DrForr: Is $index++ not different from $index = -1? The first one is a function call, the second one is an assignment? 10:48
DrForr They're both assigning. 10:49
partly Maybe a similar warning like jast mentioned?
RabidGravy regarding the wchar_t thing, it would need to be implemented in NativeCall::Types, MetaModel::NativeHOW and the P6Int repr 10:50
DrForr Well, propose it, I suppose. I do it myself on occasion but usually find it quickly.
RabidGravy not so trick
partly DrForr: how do i propose something? Any manual on that? 10:51
DrForr Pull requests speak louder than words ;)
I wouldn't know though. Discussing it here can't hurt. 10:52
partly DrForr: ic :)
RabidGravy lots of places where you might want to test an assignment 10:54
if $a = something() { } is quite common 10:55
partly RabidGravy: yeah i see how this can be useful. 10:57
DrForr Worst case, rely on the old C trick of '1 == stuff()' :) 10:59
partly DrForr: TIL. thank you! 11:01
RabidGravy is there some web server module that a) won't output any headers at all if you don't ask it to, b) can support arbitrary request methods 11:02
DrForr Patience, Daniel-San :) 11:03
RabidGravy the icecast source protocol is a bit, er, special
DrForr Will Crust allow [] in place of the usual content-type?
RabidGravy well, HTTP::Server::Tiny always adds the Date and Server headers 11:04
DrForr Feature request of them, maybe? 11:06
RabidGravy and the source protocol don't work if you send anything other than a "HTTP/1.0 200 OK\r\n\r\n" in response to a valid SOURCE request
which is all a bit yuck 11:07
and it appears the client on receipt of that just splurges the data over the open connection 11:10
RabidGravy the documentation alludes to modern servers using PUT but I haven't find a client that actually does that 11:16
Juerd 11:55 < RabidGravy> if $a = something() { } is quite common 11:17
Well, it used to be. And then we got: if something() -> $a { ... }
DrForr Well, Prancer accepts PUT but I don't know if the P6SGI layer does. I've had to rewrite the core because I found a problem in the URL mapping.
RabidGravy yes
Juerd So far, I haven't written a single "if $a = something() { ... }" yet, simply because I never wanted that $a to be scoped outside the block anyway. 11:18
(iirc)
RabidGravy well the HTTP::Parser thing will accept any old request method 11:19
Juerd So this does change my mind from not wanting that warning to really wanting it :)
Might even try to patch that myself
RabidGravy I'm relaxed about it, but I think it should be limited to constant values on the RHS 11:20
lizmat re: if $a = something() { } being quite common: yes, in P5 11:33
in P6 we can do: if something() -> $a {} 11:34
so perhaps a general warning for if $a = something *could* be in order in P6, pointing to the something -> $a alternative 11:35
ah, I see Juerd already made the point :-(
llfourn I don't think that should be a warning. You can legit reasons for not using pblock. 11:38
like not wanting a ro container and not wanting to write 'is rw'
or "is copy" rather 11:39
jnthn The "only warn if it's a literal on the RHS" may be a reasonable compromise
llfourn but people don't usually if literals :P 11:40
lizmat m: sub a(\a) is raw { a }; my $a; if a($a) <-> $b { $b = 42 }; dd $a # hmmm.. sorta expected $a to be 42 11:41
camelia rakudo-moar 6f9620: OUTPUT«Any $a = Any␤»
lizmat *or* fail
llfourn doesn't even know what <-> is
lizmat short for "is rw" ? 11:42
arnsholt It's -> {} but with the parameters being is rw, IIRC
llfourn oh cool
jnthn llfourn: Yes, that's exactly the point
llfourn: if $a = 1 { } is very likely a mistake
llfourn ah right yep I understand now
m: say <-> $a { }.perl 11:44
camelia rakudo-moar 6f9620: OUTPUT«-> $a is rw { #`(Block|55179248) ... }␤»
llfourn m: say <-> $a { }.(2)
camelia rakudo-moar 6f9620: OUTPUT«Parameter '$a' expected a writable container, but got Int value␤ in block <unit> at /tmp/n_pG5HSnJC line 1␤␤»
llfourn is there an 'is copy' one?
jnthn No, but it's fun to imagine what it might look like :P 11:45
moritz -||> 11:47
-(c)> 11:48
-(:c)> # we can put adverbs here!
llfourn -⎘> $a { ...} #? 11:49
dakkar has anyone tried to embed a perl6 runtime into some other programs? 11:56
llfourn I think there's an Inline::Perl6 that nine++ made... 11:56
dakkar ah right, that may be a nice starting point 11:57
llfourn metacpan.org/pod/Inline::Perl6
dakkar will look
nine_ dakkar: documentation is sorely lacking, but I'm happy to answer questions. Also there's niner.name/talks/Building Bridges/examples/inline_perl6.html 12:01
dalek kudo/nom: cf3b121 | lizmat++ | src/core/Parameter.pm:
Streamline Parameter.named a bit
12:11
Skarsnik Hello 12:13
lizmat Skarsnik o/ 12:15
DrForr \o 12:16
dalek kudo/nom: b9a79ec | lizmat++ | src/core/Parameter.pm:
Simplify Parameter.named_names|type_captures
12:25
lizmat jnthn: do you have any idea why it is impossible to create a class that does Blob in the setting? 12:30
nine_ lizmat: "A module can now print to $*OUT while being compiled without messing up the precompilation process." Shouldn't this be $*ERR? 12:33
lizmat: "Of which one really sad." is missing a verb 12:34
lizmat nine_: not sure about that verb missing there 12:34
nine_ Though that might be a subtle hint to that a part of us is missing.
lizmat yeah, the verb omission there was intentional 12:35
nine_ lizmat++ # I like subtlety
lizmat nine_: cc0472b43e9edb6c777e7 states: fix precompiling a file that outputs to stdout
nine_ Oooh I missed that patch. 12:36
I'm also not sure I like it :/
lizmat yeah, FROGGS didn't like it either... but it makes it work for now
nine_ I wonder why a module's mainline would want to write to STDOUT? 12:37
RabidGravy would it be enormously difficult to "upgrade" a normal IO::Socket client socket to an IO::Socket::Async one? 12:53
lizmat RabidGravy: I think so, because they differ at the nqp level 13:01
RabidGravy is the actual VMIO different?
lizmat nqp::asyncconnect vs nqp::open (I think) 13:02
that I'm not sure of
RabidGravy it was just something that occurred to me while I was playing with this noddy streaming server 13:03
jnthn Moving handles between libuv event loops is very fraught
We may actually have more luck doing it once we stop using libuv for sync I/O
timotimo o/ 13:37
lizmat wonders what magic is happening here: $!default_value ~~ Code ?? $!default_value !! { $!default_value } 13:46
lizmat wakes up
tadzik heh 13:47
"callify" the default_value, it seems
lizmat yeah, which means adding overhead
jnthn Probably coping with a place where we may get a funk or may get a value and want it to be consistent
*thunk 13:48
tadzik it may make sense to call it if it's code, save it if not
unless it's meant to be lazy
jnthn It's rather hard to say without context ;)
tadzik ye :)
lizmat $rest ~= ' = { ... }' if $default;
it's about Parameter.perl 13:49
jnthn Hm
If it's a value we could actually .perl the value...
lizmat now, if $default were just a value, we could actually say: $rest ~= " = $default";
jnthn $default.perl() :)
lizmat yeah...
OTOH, this Parameter.perl is really Parameter.gist 13:50
if it's about roundtripping, we could as well do Parameter.new(flags => 723) etc
jnthn Well, .perl certainly needs to get it .perl'd
lizmat instead of figuring out how each flag influences how we look at it
jnthn Yeah, but .perl there is used when .perl-ing Block, Sub, etc. 13:51
And so you want a signature literal out of it really
So they can come out syntacticly sane 13:52
lizmat agree
jnthn Phone call, then - at last - should have some Perl 6 hacking time \o/
bbs
Ven o/ 13:58
masak \o 13:59
RabidGravy so if I had a thing to decode the input stream so I can emit a properly encoded output stream this streaming server might actually work 14:08
RabidGravy erk, the mad decoder has a waay weird interface 14:37
rudi_s Hi. I'm having a problem with the classify solution to split an array into two based on a predicate: my (@a, @b) := (1,2,3,4).classify({ $_ %% 2 }).{True, False} 14:41
It works fine if @a and @b are not empty, but if they are, it fails: 14:42
m: my (@a, @b) := (1,3).classify({ $_ %% 2 }).{True, False}
camelia rakudo-moar b9a79e: OUTPUT«Type check failed in binding @a; expected Positional but got Any (Any)␤ in block <unit> at /tmp/VfJiSa2CWB line 1␤␤»
rudi_s Any idea how I could fix this?
*but if either one is empty, it fails.
lizmat commute to Amsterdam.PM& 14:53
RabidGravy rudi_s, > 14:59
rudi_s RabidGravy: ?
RabidGravy m: my (@a, @b) := (1,3).classify({ $_ %% 2 }).{True, False}.map({ $_ // []}).list; say @a, @b;
camelia rakudo-moar b9a79e: OUTPUT«[][1 3]␤»
rudi_s RabidGravy: Thanks. But that's a little ugly. With just {True, False} it was nice, but this needs quite a lot of boilerplate. 15:01
RabidGravy I won my bet with mysefl 15:02
rudi_s Which was? 15:02
RabidGravy there was going to be a "but"
rudi_s Well ;-)
Please don't tell me you think this is a nice solution for the simple task to split a list in two? 15:03
RabidGravy I don't have any opinion whatsoever about it
rudi_s Hm.
masak rudi_s: whenever you feel a solution is insufficiently nice or un-idiomatic, there's a particular language pattern that helps 15:04
it's called "named subroutines"
it can help abstract away some tedious code, pulling it out of the way of your main sentence 15:05
all the while providing an action or a transformation with a nice, domain-aligned designation
people underestimate this pattern
rudi_s masak: And how's that going to help? I have to write that small subroutine in each perl6 project where I need that particular feature. 15:06
masak yes, that's an excellent start, IMO
whenever the name makes sense, at least
timotimo C question, if i may 15:07
src/6model/reprs/P6opaque.c:686:52: error: lvalue required as left operand of assignment
(void *)(repr_data->attribute_offsets) += (char *)allocated_repr_blob;
geekosaur or you can make a private library of such things as modules
rudi_s I don't like duplication. Anyway, would be nice if perl6 had a short way to express that.
timotimo all i want to do is move the pointer on the lhs by the amount of bytes on the RHS. how do i spell that correctly?
masak rudi_s: one of the nice parts about this is re-use -- if you end up using the pattern in many places, and you need to change the underlying code, you only need to change the code in one place.
geekosaur timotimo, it's the cast that's doing it
LHS cast
timotimo geekosaur: right, but if i don't cast, wouldn't i have to divide the RHS by the pointer size of the LHS? 15:08
masak rudi_s: I guess it's all a question of what's more important at this point -- using an abstraction mechanism and making the code nicer, or being stubborn
rudi_s masak: Not sure if you're trolling.
masak not trolling.
genuinely trying to help.
rudi_s timotimo: You'd need to cast to char *.
timotimo i had (char *) on the lhs before, that errored the same way
rudi_s Pointer arithmetic is not defined on void *.
geekosaur casting to (char *) still makes an rvalue 15:09
rudi_s Yeah, what geekosaur said. void * vs. char * is a separate problem.
timotimo well, if i drop the cast, i get "invalid operands to binary +"
so i just won't be able to += ?
and instead replicate the LHS with the cast onto the RHS of a simple =?
geekosaur yep 15:10
rudi_s timotimo: Yeah.
But you don't need the cast on the left side (unless it's C++).
geekosaur note that old versions of gcc used to permit that because the optimizer removed the cast before it was detected 15:11
geekosaur so it seems to be biting a bunch of people who got used to gcc allowing it 15:11
timotimo OK
src/6model/reprs/P6opaque.c:688:79: error: invalid operands to binary + (have ‘char *’ and ‘char *’)
well, that's fun
rudi_s masak: I know I can abstract things, but I'd like to get core features in the language. 15:12
geekosaur hm
rudi_s timotimo: You can't add a char *, you can only add a int. 15:13
s/int/numeric value/
masak rudi_s: is this about wanting .classify to work differently? maybe the discussion would be more productive if it was clearer what exactly you're currently missing.
geekosaur timotimo, what is allocated_repo_blob? 15:14
(in particular what is its type?)
rudi_s masak: I want to split an array/list into two based on a predicate. The first contains the ones where the predicate returns true, the second where it's false. 15:14
Btw. how can I return two arrays from a function so that I can do my (@a, @b) = foo()? 15:15
timotimo geekosaur: void *
masak rudi_s: the first list can be had through .grep
pyrimidine Anyone here interested in bioinformatics apps for Perl 6? Open Bioinformatics Foundation is accepting proposals for the Google Summer of Code: summerofcode.withgoogle.com/organi...329984000/
geekosaur so how were you expecting to add two addresses together?
did you want the size instead of the address? (you can't derive that from the address if it's allocated) 15:16
masak m: sub split_on_predicate(@l, &p) { [@l.grep(&p), @l.grep({ !&p($_) })] }; say split_on_predicate [1, 3], * %% 2
camelia rakudo-moar b9a79e: OUTPUT«[() (1 3)]␤»
timotimo geekosaur: the current value of those fields is an offset. so really, i'd want to reverse the arguments to +
masak rudi_s: about the same length as your solution, and much less cluttered ;) 15:17
geekosaur rudi_s, arrays, like other objects, are "passed by reference". so return (@a, @b) should work
not like perl 5 where it would flatten them into a single list
pyrimidine re: GSoC and OBF: not just limited to Perl 6 of course, but figured it's worth mentioning here :) 15:18
geekosaur timotimo, so they're not really pointers?
RabidGravy classify also has an (albeit undocumented) argument "into"
geekosaur (I know you're working on a memory manager, but if it's not actually a pointer then it's a bad idea to tell C that it is a pointer.)
timotimo geekosaur: not yet at that point
RabidGravy m: my (@a, @b) := (1,3).classify({ $_ %% 2 }, into => {True => [], False => []}).{True, False}; say @a, @b 15:18
camelia rakudo-moar b9a79e: OUTPUT«[][1 3]␤»
timotimo chat C type would i use to hold the value of a pointer as an int? 15:19
rudi_s geekosaur: Thanks. 15:21
masak: But I have to iterate twice over the list which is something I'd like to avoid.
RabidGravy: Perfect, thank you. 15:23
RabidGravy wonders why that isn't dpcumented
or indeed the "as" option either 15:24
nine_ timotimo: shouldn't your rhs just be an int? 15:27
masak m: sub split_on_predicate(@l, &p) { my (@yes, @no); (&p($_) ?? @yes !! @no).push($_) for @l; (@yes, @no) }; say split_on_predicate [1, 3], * %% 2 15:29
camelia rakudo-moar b9a79e: OUTPUT«([] [1 3])␤»
timotimo nine_: should i still be on relocatable_precomp on nqp and rakudo? :)
masak rudi_s: ^^
m: sub split_on_predicate(@l, &p) { (&p($_) ?? (my @yes) !! (my @no)).push($_) for @l; (@yes, @no) }; say split_on_predicate [1, 3], * %% 2 15:30
camelia rakudo-moar b9a79e: OUTPUT«([] [1 3])␤»
masak ...if you want to golf things down a little.
nine_ timotimo: if it works for you ;) Note however that that branch is a little out of date wrt nom. And I probably won't do any more development on it for a week as I've still got two talks to prepare and a room to book for GPW 15:30
timotimo OK, so maybe i'll revert to master/nom for now 15:31
thanks!
RabidGravy so there I was thinking that the output from this stupid streaming toy was all messed up, and it turns out the file I was streaming *was actually like that* 15:32
masak m: sub split_on_predicate(@l, &p) { return my (@yes, @no) given ((&p($_) ?? @yes !! @no).push($_) for @l) }; say split_on_predicate [1, 3], * %% 2
camelia rakudo-moar b9a79e: OUTPUT«([] [1 3])␤»
masak :)
masak probably an Evil use of statement_mod `given`, just for its sequencing logic 15:33
RabidGravy evil is fair enough 15:33
timotimo RabidGravy: damn; your stuff seems really hard to do :S 15:37
RabidGravy :) BWAHAHA
timotimo like, everything's trying to murder your productivity 15:38
RabidGravy along with the cat, facebook, and OooOOoooh why has that big bus stopped outside ;-) 15:39
rudi_s masak: Thanks.
RabidGravy so anyway with one client Perl 6 is fast enough to stream MP3 at 320kbps (with the server and source client being perl6 apps) 15:40
so
masak rudi_s: for what it's worth, I agree with you that the API of .classify is clunky and cumbersome in practice.
RabidGravy perl6++
masak rudi_s: not so sure what to do about it, though :/
it looked better at the earlier stages of the design, when not everything had to fit together in practice 15:41
masak rudi_s: (as you can see, I'm actually arguing exactly the same point as you -- a core construct for this behavior -- it's just that I've seen it happen, and what we got was .classify) 15:42
timotimo RabidGravy: so, will you turn up the client count now? :) 15:43
RabidGravy let's see if I have a client application on another machine 15:44
rudi_s masak: I thought about adding a new function "partition" (which would be your split_on_predicate) but I failed to understand the rakudo internals. 15:45
masak you'll probably want to look at src/core/List.pm or something 15:46
hehe, that file starts with '# for our tantrums' :) 15:47
RabidGravy Any.pm
masak lizmat++
it sounds like the rageful version of '# for our sins' :P
rudi_s Is there an easy way to convert a blob to a hex string? 15:48
masak .oO( # for our laziness, impatience, and hubris )
perlpilot rudi_s: as soon as you do make your partition routine, be sure to put up a version of quicksort that uses it on rosettacode :) 15:49
hoelzro o/ #perl6 15:50
masak m: say Blob.new(12, 10, 15, 14, 11, 10, 11, 14).list.fmt("%X", "") 15:51
camelia rakudo-moar b9a79e: OUTPUT«CAFEBABE␤»
rudi_s perlpilot: Will do ;-) 15:51
masak a bit more legwork needed if the Blob has values beyond the 0..0xF range, though
RabidGravy timotimo, three clients is worky, no appreciable wobble 15:53
timotimo whoa.
RabidGravy (difficult to tell with my friend Mike Stern's techno mixes however)
rudi_s masak: Thank you, that works fine, even with values up to 0xff.
timotimo hahaha :D 15:54
skids m: my %h is default([]); my (@a, @b) := (%h = (1,3).classify({ $_ %% 2 })).{True, False}; say @a.perl, @b.perl 15:54
camelia rakudo-moar b9a79e: OUTPUT«[][1, 3]␤»
psch m: say Blob.new(202, 254, 186, 190).list.fmt("%X", "")
camelia rakudo-moar b9a79e: OUTPUT«CAFEBABE␤»
skids m: my %h is default([]); my (@a, @b) := (%h = (1,3).classify({ $_ %% 2 })).{True, False}; say @a.perl, @b.perl; @a.push(4); %h = (); %h{5}.say # heheh. So much evil could be accomplished. 15:59
camelia rakudo-moar b9a79e: OUTPUT«[][1, 3]␤[4]␤»
masak rudi_s: oh, so it does 16:02
skids m: sub foo {my %h is default([])}; my %h := foo(); %h{5}.push(4); my %g := foo(); %g{3}.say 16:02
masak rudi_s: you might want to pad with zeroes, though. %02X or so
camelia rakudo-moar b9a79e: OUTPUT«[4]␤»
rudi_s masak: Good idea, thanks.
skids m: sub foo {my @a = (); my %h is default(@a)}; my %h := foo(); %h{5}.push(4); my %g := foo(); %g{3}.say # I don't know maybe this one is pushing into bug territory. 16:05
camelia rakudo-moar b9a79e: OUTPUT«[4]␤» 16:06
masak skids: seems you ordered your foot to be shot by giving default() a reference type 16:25
perlpilot skids: I'd say not a bug.
masak but I agree it's a wee bit odd that you're getting the *same* reference twice from two function calls, seemingly 16:26
hankache The first draft of the French translation of perl6intro.com is available at fr.perl6intro.com PRs are welcomed: github.com/hankache/perl6intro
masak I wonder if there's a more direct way to show that...
hankache hello *
masak hullo hankache
congrats on the draft
timotimo neat! 16:27
there's a draft, can you please shut the window?
hankache This is a community effort so ++ everyone who contributed
perlpilot masak: "is default()" happened at compile time, so it's only got the one reference
hankache draft beer? ;) 16:27
skids perlpilot: perhaps, but should "is default(@a)" work in the first place, given @a is something cloned with the block? 16:33
skids Probably a question for (much) later, anyway. 16:36
masak perlpilot: in a way the `my` itself happens at compile time, but it still gets the right per-actual-scope behavior.
perlpilot skids: It should probably work, but differently from how it works now :)
masak I don't see offhand why `is default` should be different
kalkin- ugexe: I've read your github comment on my PR for sergot/openssl. After reading the docs about Version, wouldn't it make more sense to use the build in Version type? Yes this will obviosly break the api, but it would be a saner solution, wouldn't it? 16:38
ugexe kalkin-: than naming it something else like AllowedVersion? 16:39
kalkin- ugexe: it would be nice to have v2.0 v3.0 v1.2 in the when clause ;), but obviosly renaming is the simplest way 16:40
kalkin- is probably getting overexcited with the perl6 syntax sugar stuff
ugexe if you take the where clause out of the signature you can then give a sensible error message as well instead of 'type constraint failure' 16:42
kalkin- ugexe: but then the compiler could not evaluate it at compile time, if i understand it right 16:44
ugexe maybe something like this as the first new candidate? `multi new(:$!version! where {Version.new($_) !~~ v1.1 | v1.2}) { die "this module only supports versions 1.1 and 1.2"; }` 16:52
you could use `Version :$!version! where * ~~ v1 | v2`, but that would break backwards compat with modules that use it 16:53
kalkin- ugexe: but the first example wouldn't be evaluated at compile time, or would it? 16:54
ugexe why do you want it evaluated at compile time instead of runtime? 16:55
kalkin- ugexe: because I want to catch errors early? It's not like there is a new TLS version every week, so it needs to be dynamically determined if a specific version is available. I prefer the compiler doing the work for me, or I would code in Python :) 16:58
But may be I don't full undestand the Prl 6 spirit 16:59
*fully understand*
sjn useful for static code checking/analysis? (e.g. automatically pick up requirements from code)
ugexe there are any number of ways to do that. but i dont think the signature is the place for it
sjn sees now that this was a signature 17:00
yeah, that's... hm.
API versioning might be nice, but perhaps a bit ambitious to put that information in signatures, yes 17:01
sjn wonders if API versioning can be done with roles 17:02
kalkin- why is it bad or ambitious? Like I said it's not like it needs to change that often and if TLSv1.3 will be released there should be no issue just extending the subset? Or am I missing something basic?
ugexe because 'failed type constraint' is not a useful error to the user 17:03
kalkin- ugexe: i see
ugexe m: say Distribution.new(:name<foo>).Str 17:06
camelia rakudo-moar b9a79e: OUTPUT«foo:ver<>:auth<>:api<>␤»
ugexe when the :api part of the above is implemented it will provide a more ideal solution 17:08
RabidGravy yeah I was thinking that
RabidGravy couple of things where it would be useful I've already encountered in the last few weeks 17:08
kalkin- ugexe: i think i lost you. What is this api part you are talking about and how do you want to reuse it? p6doc has no information on Distribution class 17:12
(or you lost me :) )
RabidGravy it's not documented 17:13
RabidGravy the Distribution is the thing that gets installed when some installer does "... install Foo" 17:14
kalkin- About the 'failed type constraint' error. A proper IDE would normally show that you are allowed only to enter the values 2, 3, .... May be the compiler could do the same? 17:17
RabidGravy: Ok but the Distribution api version is module specific, while the SSL version stuff are just different protocols, or did I misunderstand something? 17:18
ugexe but you can have `where $_ * 100 > 3 ?? die !! True`
ugexe because you could theoretically use :api to handle multiple versions of (most likely nativecall) apis/protocols/whatever in a single Distribution 17:20
sjn hm 17:21
kalkin- ugexe: you mean by adding some api suffix to my `use OpenSSL;` import?
sjn isn't :api about which API version a module *provides*? 17:22
ugexe yes, so it would probably provide a bunch of `new` methods to handle each type of version 17:23
you are providing the same apis in essence 17:24
kalkin- Ok but how would i map the following case (which currently isn't possible): I'm writing an application which I want to limit to support only TLS 1.1 and TLS 1.2. If the server does not support the both versions i want, i don't want to connect
(besides that using TLS does not work with the current api at all, i wanted to submit the bugerport for this, but first needed to fix the Int issue) 17:25
kalkin- Or shouldn't the case of limiting to TLS 1.1 & 1.2 handled by the OpenSSL api at all, and be done in the application logic? 17:28
RabidGravy yes, the latter, assuming you can get the version from the OpenSSL 17:28
the only way it would make sense in the libray API is if you can supply an optional matcher for the version when making the connection 17:30
kalkin- This is the issue i mentioned github.com/sergot/openssl/issues/22 For some reason OpenSSL always tries to use SSLv3 instead of TLS 17:34
atweiden is there a concise way of writing this: 17:35
m: sub foo(&c where *.signature.params.elems == 1 && *.signature.params.grep(*.positional).elems == 1) { c(Any) }; sub bar($) { say 'works' }; foo(&bar)
camelia rakudo-moar b9a79e: OUTPUT«works␤»
atweiden docs say something like sub f(&c:(Int)){} should work, but couldn't understand how to use it 17:35
psch m: sub foo(&c:($)) { c(Any) }; sub bar($) { say "works" }; foo(&bar) 17:36
camelia rakudo-moar b9a79e: OUTPUT«works␤»
RabidGravy kalkin-, I think there's a bug in the way that the library selects the version
atweiden psch: is it possible to specify &c returns Any ?
psch m: sub foo(&c:($ --> Any)) { c(Any) }; sub bar($ --> Str) { say "works" }; foo(&bar) 17:37
camelia rakudo-moar b9a79e: OUTPUT«Constraint type check failed for parameter '&c'␤ in sub foo at /tmp/2xGQvfGHAD line 1␤ in block <unit> at /tmp/2xGQvfGHAD line 1␤␤»
RabidGravy it specifies Int for version then tries to match e.g. 1.1 which is impossible
atweiden psch++
psch atweiden: note that you can use trait_mod<returns> for the argument, but not in the subsignature
kalkin- RabidGravy: yeah i think fixed it with my pr github.com/sergot/openssl/pull/21
psch atweiden: as in, you can define &bar with 'returns Str', but you can't do so for &c 17:38
kalkin- RabidGravy: Also specifieng 1 which should pass as the Int type, does not work either. Same error 17:38
atweiden psch: &c return type check seems to check against *.isa(Any) 17:40
so that if &bar returns Str it fails
psch atweiden: i mean syntax, specifically. as in "sub f(&c:($) returns Any) {..}" doesn't parse 17:41
atweiden i could do without the return type checking but is there any way to fix tha?
m: sub foo(&c:($ --> Any)) { c(Any) }; sub bar($ --> Any) { say "works" }; foo(&bar)
camelia rakudo-moar b9a79e: OUTPUT«works␤»
atweiden m: sub foo(&c:($ --> Any)) { c(Any) }; sub bar($ --> Str) { "does not work" }; foo(&bar)
camelia rakudo-moar b9a79e: OUTPUT«Constraint type check failed for parameter '&c'␤ in sub foo at /tmp/dvZsgH7G8l line 1␤ in block <unit> at /tmp/dvZsgH7G8l line 1␤␤»
psch m: sub foo(&c:($ --> Any)) { c(Any) }; sub bar($) returns Any { say "works" }; foo(&bar) # e.g. 17:42
camelia rakudo-moar b9a79e: OUTPUT«works␤»
psch m: sub foo(&c:($Any) returns Any) { c(Any) }; sub bar($) returns Any { say "works" }; foo(&bar) # e.g.
camelia rakudo-moar b9a79e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3GbbtdzNrz␤Cannot call trait_mod:<returns>(Parameter, Any); none of these signatures match:␤ (Routine:D $target, Mu:U $type)␤at /tmp/3GbbtdzNrz:1␤»
psch well, it does parse but doesn't dispatch 17:43
a Parameter:D $target candidate for trait_mod:<returns> probably could fix that, if desired... 17:44
although probably not quite that easily, i don't think
ptolemarch Hi, there. I'm looking for information on Rakudo/JVM-Java interoperability. In particular, I can find a lot on calling Java from Perl6, but nothing on calling Perl6 from Java. 17:45
(I asked this yesterday afternoon, and I don't want to be a pest but I'm hoping to catch other eyes today...)
psch ptolemarch: github.com/rakudo/rakudo/blob/nom/...erver.java 17:46
ptolemarch: well, and the corresponding superclass, hang on...
ptolemarch: github.com/perl6/nqp/blob/master/s...erver.java 17:47
ptolemarch psch: Awesome. It looks like this accepts a String and can run the resulting code.
psch ptolemarch: in the end, to call into Perl 6 from Java you have to build the whole interpreter 17:48
where "build" means "set up"
ptolemarch psch: Sure, fair enough, especially 'cuz eval() and such.
psch: but is it possible also to run already-compiled code?
psch ptolemarch: there's an nqp branch that explored packaging into .jar, if that fits your use-case 17:49
ptolemarch: it's kinda stalled though, no tuits :)
github.com/perl6/nqp/tree/standalo.../tools/jvm
ptolemarch Interesting.
psch the .sh script there explains the process as used there, but it's quite an out of date branch
no idea how easy it'd be to get that merged into master, though 17:50
ptolemarch I'm able to get `perl6 --target=jar --output blah.jar blah` to work, at least in the sense that it creates a .jar, but I have no idea what code is really resulting.
ptolemarch decompiling seems to result in a handful of `public static void` methods (none `main`), and classes embedded into the script don't seem to result in multiple .class files 17:51
psch ptolemarch: yeah, that gets you jvm bytecode that needs to be invoked via the Perl 6 interpreter
ptolemarch Huh. 17:52
psch well, not quite, actually
as in, the .jar contains program state after Perl 6 level BEGIN (or INIT, not sure) time 17:53
ptolemarch Here's what I'm hoping for: a jar, however big it needs to be, that I can use as a Minecraft server mod. :-)
oh, huh
that explains why there's both a [long hex hash].class and [long hex hash].serialized
psch and that still needs all the Perl 6 language level stuff to make sense to the JVM
ptolemarch Hmm.
I have no problem with the idea of a huge .jar with all the Perl6 interpreter in it. I'm just hoping to be able to write a mod in Perl6 rather than Java. 17:54
psch i don't know if the minecraft classloader can load nested jars, but if it can the standalone-jar branch should do most of what you need 17:55
well, assuming you can see through my minimal docs and get it working :S
ptolemarch :-) 17:56
psch if you don't need 6.c you can just get the nqp and rakudo standalone-jar branches as is and build them
ptolemarch Okay, this is somewhere to look, then. Thank you.
psch note though that you get lots of overhead and a very slow mod that way, 'cause you're effectively embedding a Perl 6 interpreter instead of adding a mod 17:56
ptolemarch Hmm. 17:57
I hadn't quite realized how very little of "compiling perl6 to JVM bytecode" was really going on. 17:58
psch well, our MOP alone doesn't fit directly onto the JVM 17:59
add &EVAL and things like BEGIN... vOv 18:00
i don't doubt that some jvm/indy wiz could make it all fit a lot closer, but those seems to be rather rare :) 18:01
ptolemarch Right. 18:02
Thank you for your help and advice. 18:03
Skarsnik gah the @array = %hash<stuff> not working as you can expect is annoying :(
RabidGravy it depends what you expect ;-) 18:05
dalek kudo/faster-accessors: e10c487 | jnthn++ | src/ (12 files):
Start to code-gen simple accessors.

This makes them rather simpler/faster than adding them as closures. Most importantly, though, it will enable inlining of them, which is where the real speed-up will come from.
18:06
Skarsnik to affect the array in %hash<stuff>; I know you need to use := but it's causing me issue when it's not defined
Skarsnik I am not sure how to transform my @exclude-structs := %conf<exclude-structs>; without having 2 lines to avoid the := when it's not defined 18:07
jnthn dinner & 18:08
timotimo i like the look of that ^ 18:09
Skarsnik could we have an operator that only apply the operator next to him if the left side is defined/exists in 6.d? x) 18:11
Skarsnik Yay, I finally generate file with gptrixie, see gist.github.com/Skarsnik/59355769f91e49e68abd if you are interessed ^^ 18:23
timotimo sweet :) 18:37
RabidGravy Skarsnik, can't you just do "my @f; my %h; @f := (%h<foo> // ())" 18:37
mspo hey did perl6 make it into GSOC 2016? 19:10
timotimo no 19:11
volunteer time was spread far too thin, and last year's GSoC has made potential volunteers pretty grumpy
mspo netbsd was rejected last year but got in this year 19:12
so we're pleased
timotimo good :) 19:13
mspo but i'm with you on feeling burned
dalek kudo/nom: 231b898 | lizmat++ | src/core/Parameter.pm:
Abstract modifier logic into a method
19:29
kudo/nom: 609e54a | lizmat++ | src/core/Buf.pm:
Buf.splice takes the same params as Array.splice

Also handle :SINK (although this is not codegenned yet)
[Coke] needs an apache conf file guru. :| 19:31
timotimo hey everyone, i'm back! 19:32
sjn hi timotimo, welcome back!
timotimo thanks!
moritz [Coke]: not really guru, but I can try to help 19:34
stmuk allowoverride all :) 19:36
mspo [Coke]: sure, ask away 19:38
although #apache is also good :)
RabidGravy stmuk++ 19:41
having worked at a certain large UK media organisation I'm an absolute master at rewrite rules, but no jack-shit else about apache 19:42
know 19:43
moritz RewriteEngine OFF # just for RabidGravy 19:44
El_Che [Coke] likes to keep people in suspence
stmuk I know enough to use heavy logging when debugging mod_rewrite rules :) 19:45
RabidGravy is doing "my &bar = self.^method_table<bar>; &bar.assuming(self); $supply.tap(&bar);" asking for trouble? it seems to work fine 19:45
moritz RabidGravy: won't work with inheritance 19:46
RabidGravy: but, why not just $supply.tap(-> |c { self.bar(|c) }) ? 19:47
seems less convoluted
RabidGravy I had a strange idea that the self went away there, let me try that 19:48
[Coke] just doesn't treat IRC like a live convo. 19:49
(apache conf) I am using mod_auth to do OIDC; trying to copy the http headers; but the headers aren't available when I'm running mod_rewrite, (but they are when the app tier gets called). Trying github.com/pingidentity/mod_auth_o...issues/55, but having little luck. 19:51
RabidGravy moritz yep that does work, dunno why I thought you couldn't use self there 19:56
mush nicer 19:57
RabidGravy there's nothing like testing an audio software with a mix that has three deck beat cutting, spinbacks and bit crushing, maybe some Bach would be better 20:19
DrForr Hrm. I'm not getting any errors or warnings for 'use Test; is-deeply $foo, {...}\nq{Route is correct};' There should be an error about a missing comma between {...} and q{}, no? 20:27
DrForr But it does throw a warning if the \n becomes a ' '. 20:28
timotimo a } at the end of a line gives you a ; for free 20:30
[Coke] } ending a line is special.
timotimo++
timotimo [Coke]++
timotimo hm. so, when /proc/cpuinfo says "cache alignment: 64" does that mean 64 bytes is how wide a single cache line is? 20:33
rudi_s What is the recommended way to write (unit) tests?
timotimo: AFAIK yes.
moritz rudi_s: so far I've used Test.pm for all of my p6 testing needs 20:34
rudi_s moritz: Thanks. 20:35
And doc.perl6.org even has docs, nice.
Btw. we really should change the color of selections in search results in doc.perl6.org - I missed test because it looked like a section header. Any recommendations for a color? 20:36
psch gist.github.com/anonymous/0f7bdd4742cd745a1a37
that gist has the reason for why methods added with .^add_method to a Java class aren't found 20:37
apparently the JavaObjectWrapper STable has the authorative method cache
but the nqp::setmethcacheauth call in MethodContainer.add_method only turns off the meth cache authorativeness of the Perl 6 level STable... 20:38
psch i'd be tempted to fix this by adding a decont to the nqp::setmethcacheauth call in Metamodel::MethodContainer.add_method... 20:38
but i think that's not really fixing this in the right spot - the fact that everything else works fine without a decont there aside 20:39
psch $ ./perl6-j -e'use nqp; use java::util::zip::CRC32:from<Java>; say nqp::iscont(CRC32);' 20:45
1
i suppose that plays a role there as well
m: use nqp; class Foo { }; say nqp::iscont(Foo) 20:46
camelia rakudo-moar 609e54: OUTPUT«0␤»
timotimo rudi_s: github.com/perl6/doc/issues/357 20:49
rudi_s timotimo: Yeah, found that as well. Still needs a fix and I'm not sure what color to use. I'd use a light yellow for the current selection but I'm not sure if that's visible enough. 20:50
timotimo i thought it'd be enough to post that issue and mention it in the irc; there was a bit of discussion, but nobody actually did a fix :| 20:51
i'd be willing to merge pretty much any pull request you could come up with
though please include a screenshot :)
timotimo dinner time! 20:55
dalek kudo/jvminterop: 5d57154 | peschwa++ | src/vm/jvm/CompUnit/Repository/Java.pm:
Don't import a container around the Java type.

With this all the original tests pass again.
20:56
psch yay rubber ducking \o/ 20:57
rudi_s I thought that was a background color but it's actually an image. Hm. 20:58
And no source file available to modify it.
nine_ psch++ 20:59
Hotkeys do we have an equivalent of perl.h for perl6? 21:11
perlpilot Hotkeys: for embedding rakudo in something? 21:12
Hotkeys yeah
I am thinking of taking on the task of making a perl6 plugin for weechat 21:13
dalek kudo/nom: 1b6c901 | lizmat++ | src/core/Str.pm:
Fix problem with "q b c d".words -> $a, $b {

Spotted by Juerd++
21:14
nine_ Hotkeys: what you need to embed is MoarVM, but that doesn't have an official embedding interface yet. github.com/niner/Inline-Perl6/blob...r/Perl6.xs is a somewhat hackish way to do it anyway.
Hotkeys ah 21:15
perlpilot nine++ 21:16
[Coke] (color on docs: github.com/perl6/doc/issues/357) 21:20
probably github.com/perl6/doc/blob/master/h...e.css#L202 or so 21:21
rudi_s [Coke]: I think it's github.com/perl6/doc/blob/master/h...i.css#L206 - but not 100% sure. 21:25
Yeah, that seems to be it. Problem is, I've no idea how to create this image in a different color. 21:26
Zoffix Znet [email@hidden.address] was the last one to update it. 21:27
[Coke] I don't think it's an image that is tied to the categories. 21:29
(if that does turn out to be it, though, put an override in the styles file, don't edit the jquery-ui.css file) 21:30
rudi_s [Coke]: Ah, I tried to change the selection. But the categories should work fine too.
rudi_s [Coke]: timotimo: Maybe like this: pbot.rmdir.de/5oHPbugQe0Q8TfjfHOllYw.png ? 21:33
kalkin- how do i access a constant defined in a c header?
timotimo still not happy with it, tbh
rudi_s timotimo: Suggestions?
kalkin- I know how to wrap native functions, but how does this work with constants
timotimo kalkin-: we have a "cglobal" thingie in NativeCall that probably does the trick
not having the text bold, perhaps 21:34
have the gradient horizontal instead of vertical?
make the left-margin higher on the headings?
rudi_s timotimo: pbot.rmdir.de/PwJm1WUYj_bGPgGsaXZ0Dw.png 21:37
kalkin- timotimo: thanks will try that
timotimo rudi_s: that already looks a noticable bit better, IMO
buharin hi 21:41
rudi_s timotimo: Not sure if the padding makes it look better: pbot.rmdir.de/PwJm1WUYj_bGPgGsaXZ0Dw.png
[Coke]: How can I override the font-weight in jquery-ui.css? My CSS knowledge is very limited. 21:42
timotimo i don't see any padding there
timotimo it seems like you've pasted the same link twice in a row 21:42
rudi_s timotimo: Sorry: pbot.rmdir.de/BCekMXOlW9n7tbCFD_2E6A.png 21:44
timotimo you're right, it looks a bit weird
DrForr Would I be incurring a significant runtime penalty by using 'my %routes{Any}'? I'm guessing it affects lookup at the very least.
timotimo you mean by making it an object hash? 21:45
DrForr Yeah.
buharin could you help me
my code works very slow
timotimo hmm, good question
buharin :/
timotimo buharin: please show us your code?
buharin sure
DrForr buharin: Put your code up on a gist or pastebin, we won't know until then. 21:46
timotimo that's right
also, you could give perl6 --profile foobar.p6 a try
see if that gives you anything obvious
DrForr timotimo: I'm rebuilding Prancer's handlers, and I want to be able to have stuff like undefined Str and Int as keys, so I can keep them out-of-band as handler types. 21:47
timotimo i believe object hashes will work with WHICH, could that be right? 21:48
it should be all-right performance-wise. but calculating a WHICH for strings and ints means to concatenate a bit of stuff, so there's that 21:49
buharin timotimo, github.com/buharin/facebook-sdk 21:50
yeah Im analysing 21:52
timotimo i'm not sure you want the token to stay in your t/basic.t
buharin why not?
timotimo or the playground 21:53
that's something personal to you, isn't it?
buharin <anon>
gen/moar/stage2/NQPHLL.nqp:1298
timotimo, yeah
thats not important yet
just trying to understand why it is going so long 21:54
mst well, except that people have bots that scan github repos for keys and abuse them
timotimo yeah
DrForr Actually it'd probably make a little more sense internally to use a leading '%(Str)' or '%(*)' since % is an illegal character in a URL.
timotimo potentially
buharin Inclusive time is important? 21:55
timotimo the first thing i do is usually sort by exclusive time
that tells me what routines have "overhead" or "do actual work"
buharin timotimo, <anon> 21:56
gen/moar/m-BOOTSTRAP.nqp:2048
timotimo inclusive time tells you more about "what paths in the program take much time" 21:56
buharin 0.15ms
timotimo that.s not so long
buharin and inclusive time is 1.4ms
max
timotimo ah, yeah, the 2048 one is "find_best_dispatchee"
buharin <anon>
gen/moar/stage2/NQPHLL.nqp:1298
timotimo it doesn't optimize very well yet
buharin what?:D 21:57
timotimo can you upload the .html file instead of pasting individual things?
buharin sure
timotimo how long does the thing take all in all, btw? 21:58
rudi_s Proposed patch for the search focus: pbot.rmdir.de/eZcAG5cLx84P43bAlAY1mQ (result image: pbot.rmdir.de/PwJm1WUYj_bGPgGsaXZ0Dw.png ). Disclaimer: I don't know CSS.
timotimo actually, perhaps we could give the results a bit of margin to the left, rather than the headers
buharin timotimo, perl6 t/basic.t 12.43s user 0.19s system 99% cpu 12.643 total 22:00
timotimo OK, that's enough to be interesting 22:01
buharin where to upload?
timotimo when you pasted something that takes 1.4ms i was like "are you kidding me."
how big is it?
those files usually gzip extremely well
buharin it is small
omg
timotimo upload it whereever you like 22:02
buharin could you type me link :D
your favourite
timotimo i always upload these profiles to my private server
mspo github
DrForr It's probably better to keep them out-ofband entirely, I'll just use $routes=:{} for the moment. 22:03
buharin www.megafileupload.com/rbjw/profile...92423.html
check this ;D
timotimo it could be your program only runs slow because it's compiling dependencies 22:04
it only takes 10 miliseconds to actually run the resulting code
you can check with perl6 --stagestats playground.p6 22:05
if it's spending all the time in dependencies being compiled, you'll see a lot of time spent under "parse" 22:06
DrForr That *does*, however, mean that it'll throw warnings when I print the bare Any as part of the hash.
timotimo mhm 22:07
i'll be AFK for a bit
DrForr Oh, ne'er mind, just create Any.new.
rudi_s timotimo: Next try: pbot.rmdir.de/v9Pk63aIeq9sM9a7WRUtiw.png (patch: pbot.rmdir.de/rOhpIzyERe1VMKcV9RndhA )
buharin timotimo, I used basic.t 22:08
Stage parse : 12.602
timotimo i like it. how do you like it, rudi_s?
buharin it is so long
[Coke] rudi_s: your snippet points out a typo in denominator
timotimo buharin: there's your answer
demon-inator? 22:09
DrForr Crap, two copies of Any.new don't compare the same under Test::is-deeply. 22:09
rudi_s timotimo: Looks good. The padding is a nice touch.
buharin why it took so long?
timotimo DrForr: of course not
rudi_s [Coke]: Is the patch fine? I don't know much about CSS.
timotimo buharin: it's probably not precompiling some dependency for some reason. recompiling it every time. 22:10
DrForr Different memory addresss, most likely.
timotimo well, Any isn't a value type
rudi_s: looks OK to me, but i don't know much about css either
DrForr It works with (Str), which is all I really need, as that's the ultimate fallback. I'll just roll with that. 22:11
buharin timotimo, ok so my perl virtual machine
compile source code all the time 22:12
without reason
how can I check which dependencies are compiled? 22:13
DrForr Ho...ly shit, the trie insertion worked without modification. 22:14
rudi_s [Coke]: I'll fix the typo too. 22:14
buharin DrForr, ?? 22:15
DrForr Prancer core uses a trie to store URL paths for matching. I didn't design it initially for object hashes, jus static strings. Change it to :{} and insert a Str.new type, and it worked without modification. 22:16
(yes, I know, there are tries in the ecoystem, I have special wildcard needs that those wouldn't accommodate.) 22:17
buharin do you mean 22:18
I cant modify $url in place
cause I will lose performance?
DrForr buharin: That wasn't directed at you, I was just commenting on what I'm working on. 22:19
buharin omg
buharin I got a few lines of code 22:19
which take 12sec
and no-one cannot point me
what is going on
buharin crazy shit 22:21
DrForr Cut out dependencies until the time starts to drop? If you're just testing, it shouldn't matter if the code works or now, just what is compiled. 22:24
buharin DrForr, ok 22:25
HTTP:UserAgent
is dependency which takes so long
why?
why I cant use this dependency?
DrForr Noone but you is saying you can't use a dependency. And what do you mean by "so long"? 22:27
buharin perl6 t/basic.t 0.30s user 0.03s system 99% cpu 0.327 total 22:28
without use
perl6 t/basic.t 12.43s user 0.19s system 99% cpu 12.643 total
with use
thats x times faster 22:29
only because I cut my dependency from source file
dependency what I am not using actually
thats crazy
RabidGravy the t/basic.t has "use lib "lib"; use HTTP::UserAgent;" I'd wager, the very large module doesn't get compiled 22:46
dalek c: 6b3a12c | (Simon Ruderich)++ | html/css/style.css:
html/css: make categories better distinguishable from focus

Closes #357.
22:47
c: f6bb663 | (Simon Ruderich)++ | doc/Language/operators.pod:
operators: fix typo in reference
c: e9056d0 | (Simon Ruderich)++ | doc/Type/List.pod:
Revert "List: add example to classify to split a list based on condition"

This reverts commit 531e97fa509e75fff9920828c45f778ed1df5d72.
The proposed solution doesn't work if one result array would be empty.
timotimo i told buharin it's just that it isn't being precompiled 23:25
did he just not understand?
dalek kudo/nom: 50a4df3 | lizmat++ | src/core/Buf.pm:
Optimize the Buf.splice(offset,size?) case

And by consequence, also optimize the other cases
23:56
lizmat good night, #perl6!