»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
jnthn morning, #perl6 03:22
FROGGS[mobile] morning jnthn 03:26
ingy jnthn: where on earth are you? 03:37
jnthn ingy: Shenzhen, China.
ingy aha
no way you'd be waking up at 4am in sweden 03:38
tell all the Chinese people that Ingy sez HAI 03:39
better get started!
jnthn :P
Not sure I@m here long enough to get round all billion :P
FROGGS[mobile] saying "hallo" would be worse 03:40
ingy Auf Wiedersehen would really multiply the syllables 03:43
FROGGS[mobile] additionally you'd have to explain everytime 03:47
dalek p: b87a73b | usev6++ | 3rdparty/dyncall/configure:
compile dyncall with -fPIC on DragonFly BSD

It's the same fix as in commit 5ed99d26b3c3ac2d65bc622afdbd987a547046f5 for FreeBSD and 008f60c31bbd82ca090486468e8ffc8cd51bfb11 for NetBSD.
04:27
p: 034304d | (Tobias Leich)++ | 3rdparty/dyncall/configure:
Merge pull request #184 from usev6/master

compile dyncall with -fPIC on DragonFly BSD
dalek ar: 77018e1 | (Tobias Leich)++ | modules/perl6-digest-md5:
bump Digest::MD5 revision
04:51
FROGGS [Coke]: in order to unbreak NativeCall on star-daily, I have to port nqp::nativecallglobal to parrot and jvm... will do that ASAP 04:56
jnthn FROGGS: Hmm...what does that mean for the Star release? Just ship a NativeCall without the C globals patch? 04:58
FROGGS jnthn: yes, I intentionally did the cglobals merge after the compiler release 05:00
jnthn: and star uses NativeCall HEAD^
so that's fine
FROGGS just the star-daily shows it, since it smokes most recent versions 05:00
bbl 05:02
lizmat good *, #perl6 08:46
itz++ for setting up pl6anet.org/hackday/ 08:47
virtualsue \o/ 08:50
jnthn o/ lizmat 08:51
lizmat jnthn virtualsue o/ 08:54
diego_k is trying to compile p6-moarvm on osx but having some problems... 08:59
lizmat assumes diego_k has Xcode installed ? 09:00
diego_k lizmat: sure :)
now I'm using brew to update gcc, just in case :-/ 09:01
lizmat gcc ? afaik, clang is used with Xcode 09:02
diego_k ouch :D
It's strange all seems to be ok, but at some point of make, it says "write error" :-/ 09:04
lizmat which version are you trying to compile? 09:05
does the file 'tools/build/moar_core_sources exist ? 09:06
diego_k I'm trying with 2014.08 09:08
I got some warns -> clang: warning: argument unused during compilation: '-fno-optimize-sibling-calls'
lizmat ah, then please ignore the make error 09:09
it was fixed in 2014.09
it always was just a nuisance
yes, also known ignorables
diego_k I don't have tools/build/moar_core_sources 09:10
jnthn guesses diego_k may be doing the r* build, in which case trying make again is maybe a little less easy (I guess cd rakudo && make install would do it though). Guess there isn't a 2014.09 r* yet.
diego_k jnthn: Oh, I'm just following README :-) 09:11
let me try...
jnthn If it's just the compiler then there#s a 2014.09 that fixes it.
diego_k make goes well for a while, but ends with make[1]: write error / make: *** [rakudo/perl6-m] Error 1 09:12
cd rakudo; make install workerd 09:14
thanks!, time to play :)
carlin m: my $buf = $*IN.slurp(:bin); if $buf eq "foo" { say 1 }; say 'alive' 09:15
camelia rakudo-moar 7a381f: OUTPUT«(timeout)»
lizmat m: "a:b".words.say 09:29
camelia rakudo-moar 7a381f: OUTPUT«a:b␤»
lizmat m: "a:b".words.elems.say 09:30
camelia rakudo-moar 7a381f: OUTPUT«1␤»
lizmat that feels wrong...
would have expected 'a b' and 2
oddly enough, the spec test doesn't check for non-alphanumeric / non-whitespace cases 09:31
sergot mo/rning 09:48
jnthn lizmat: I thought words was about splitting on whitespace 09:54
lizmat that's the spec, right
jnthn lizmat: Do it the other way and can't can't be a word and maybe we don't want that... :)
lizmat true: I guess I will have to adjust my mental image :-) 09:55
lizmat fwiw: a datapoint wrt to push performance 09:58
working on IO::Handle.words: I can't get the eager version to outperform the lazy one
jnthn How is that push related ooc? :)
lizmat well, if I use an rpa, and nqp::push, I need to create a loop, which is slower 09:59
and if I create a HLL array, with a .push, it's a bit faster, but slower still than the gather / take combo (1.6x slower) 10:00
lizmat jnthn: nothing to worry about, just a datapoint :-) 10:01
pmurias jnthn: the hack I'm using to make the serialization do what I want on MoarVM: github.com/pmurias/nqp-js/commit/a3cf6e7ca7 10:08
jnthn pmurias: Nice hack ;) 10:17
jnthn pmurias: While we maybe could find a more elegant solution, given this is temporary until nqp-js self-hosts I guess it's not pressing to do so? :) 10:18
jnthn timotimo: Maybe you could try a perl6-bench run of abc97dbcc2fec (or just HEAD) too? Your run took in my work to get push performance back to how it was, but my follow-up patch was a further factor of 2 improvement for me here... 10:20
itz "The following step can take a long time, please be patient." <=- is this still true? :) 10:24
jnthn itz: Depends on what backend you build and how fast your hardware is :) 10:26
itz: It only says it can take a long time, not that it will. :)
lizmat on parrot, definitely :-)
jnthn dinner & 10:27
vendethiel o/, #perl6 :) 10:37
lizmat vendethiel o/
pmurias vendethiel: hi 10:39
vendethiel masak: do macros in P6 (currently) have sublexical scope?
dalek p: 783e870 | (Elizabeth Mattijsen)++ | docs/ops.markdown:
Add documentation stub for nqp::encode
10:48
jaffa4 hi all 10:52
How can I reference aub parameter by position? 10:54
lizmat sub a (*@positionals) { say @positionals[42] } ?? 10:56
timotimo aye 10:57
another thing you can do:
timotimo m: sub a(*@positionals ($one, $two)) { say "$one, $two!"; say @positionals.perl } 10:58
camelia ( no output )
timotimo m: sub a(*@positionals ($one, $two)) { say "$one, $two!"; say @positionals.perl }; a(1, 2)
camelia rakudo-moar 7a381f: OUTPUT«1, 2!␤Array.new(1, 2)␤»
timotimo m: sub a(*@positionals ($one, $two)) { say "$one, $two!"; say @positionals.perl }; a(1, 2, "extra nonsense")
camelia rakudo-moar 7a381f: OUTPUT«Too many positionals passed; expected 2 arguments but got 3 in sub-signature of parameter @positionals␤ in sub a at /tmp/3RnGe1A2qr:1␤ in block <unit> at /tmp/3RnGe1A2qr:1␤␤»
timotimo m: sub a(*@positionals ($one, $two)) { say "$one, $two!"; say @positionals.perl }; a("too few")
camelia rakudo-moar 7a381f: OUTPUT«Too few positionals passed; expected 2 arguments but got 1 in sub-signature of parameter @positionals␤ in sub a at /tmp/wftKLGG8R8:1␤ in block <unit> at /tmp/wftKLGG8R8:1␤␤»
timotimo jnthn: will run the benchmarks now :) 10:59
jaffa4 so there is no @_ 11:00
timotimo you can have a @_
m: sub foobar { say @_.perl }; foobar(1, 2, 3)
camelia rakudo-moar 7a381f: OUTPUT«Array.new(1, 2, 3)␤»
dalek ecs: 65bdb0f | (Stéphane Payrard)++ | S99-glossary.pod:
Update S99-glossary.pod
11:01
timotimo but you cannot have a signature *and* @_
jaffa4 m: sub f ($a.$b) { print $_[0]} ; f(1,2);
camelia rakudo-moar 7a381f: OUTPUT«===SORRY!=== Error while compiling /tmp/hj1CmebZPq␤Missing block␤at /tmp/hj1CmebZPq:1␤------> sub f ($a⏏.$b) { print $_[0]} ; f(1,2);␤ expecting any of:␤ statement list␤ prefix or term␤ …»
jaffa4 m: sub f ($a,$b) { print $_[0]} ; f(1,2);
camelia ( no output )
vendethiel jaffa4: sigil invariance ;-)
jaffa4 How do I reference a function pointer? 11:02
vendethiel &fn
(and that's not a pointer)
jaffa4 whic his passed in as a parameter
sub AppendClipboard(Str $format,Value $data,&render(Value $data1)--> Str ) 11:03
$render does not seem to work
jaffa4 : sub f ($a,$b) { print @_[0]} ; f(1,2); 11:05
m: sub f ($a,$b) { print @_[0]} ; f(1,2); 11:06
camelia rakudo-moar 7a381f: OUTPUT«===SORRY!=== Error while compiling /tmp/ItYu74gU9T␤Placeholder variable '@_' cannot override existing signature␤at /tmp/ItYu74gU9T:1␤------> sub f ($a,$b) { print @_[0]}⏏ ; f(1,2);␤ expecting any of:␤ …»
diakopter how do you read that error?
jaffa4 yes, just checking
lizmat timotimo: perhaps a question for you while jnthn is nomming 11:22
jaffa4 this does not seem to work pastebin.com/t0ziKCju
lizmat so I've read 64K from a filehandle into a Buf
how do I make it a native str ?
my str $str = nqp::unbox_s(nqp::encode($buf, $utf8, $utf8_type)); # gives me: This representation (VMArray) cannot unbox to a native string
jaffa4 can you think of a work around? 11:23
lizmat is a complete NativeCall noob :-( 11:24
pflanze Hi. lizmat, I'm the guy from London.pm working on functional modules. 11:30
lizmat hi pflanze !
pflanze I haven't followed Perl6 for some years, so I don't know what or if anything has been going on re functional in Perl6. 11:31
lizmat Perl6 caters for most different methodologies 11:32
m: <a b c d e e f f g g g>.Bag.pairs.say
camelia rakudo-moar 7a381f: OUTPUT«"a" => 1 "b" => 1 "c" => 1 "d" => 1 "e" => 2 "f" => 2 "g" => 3␤»
lizmat answering my own question: my str $str = nqp::unbox_s($buf.decode); 11:33
pflanze In my modules, I'm following how things are done in Scheme pretty closely: linked lists, what Scheme calls promises (structure containing thunk when unevaluated and result when evaluated) as building blocks for lazy algorithms, then streams (lazy lists) on top. 11:36
I know many languages use generators for lazy sequence generation; does Perl6 it that way? I feel that approach less elegant than lazy lists, but perhaps it has its own benefits that I'm not aware of. 11:38
generators or, more to the point, yield.
lizmat you probably want to read: S17:01 11:40
synopsebot Link: perlcabal.org/syn/S17.html#line_01
lizmat most of that is implemented
pflanze Note that what Perl6 calls "Promise" is generally called a "future" in the FP world; whereas the Scheme "promise" has nothing to do with concurrency; Haskell calls them "thunks" (Scheme people call a parameter-less function a thunk; when wrapped with struct that swaps the thunk for a value on eval, it's called promise). 11:51
Well "nothing to do" is maybe too strong since the use of a promise can be changed to a use of a future when wanting to evaluate speculatively; that doesn't *always* make sense though. 11:55
pflanze reading the section about "supplies" 11:57
(I just realized you're one of the authors.) 11:59
lizmat hehe... well, mostly following jnthn implementation :-) 12:00
diakopter lizmat: I think you need to use the chr routine on the resulting array and join the strings? or if there's an optimized version of that? 12:16
timotimo jnthn: t.h8.lv/p6bench/2014-09-20-post_rel...udo_2.html - t.h8.lv/p6bench/2014-09-20-history_rakudo_2.html
i still wonder what the heck happened to the parse json benchmarks 12:17
lizmat diakopter: you mean my str $str = nqp::unbox_s($buf.decode); ???
diakopter lizmat: like chrs(array of codepoints -> Str)
encode is returning the array
diakopter [I'm thinking of a mythical aggregate-form of chr()] 12:18
lizmat I'm not interested in chrs per se, I'm interested in something I can run nqp::findcclas on 12:19
*class
diakopter that can only run on strings, I thought 12:21
lizmat yup
diakopter I don't know of a way to go from an array of codepoints to a string without using chrs 12:27
is chrs too slow?
lizmat isn't that what .encode is meant to do ? 12:28
diakopter that runs on a string..? 12:29
lizmat on a Buf
diakopter I don't see an encode method on Buf 12:30
just on Str 12:31
lizmat what can I say: it works for me... 12:37
grondilu would have expected such a Buf method to be called rather "decode" 12:47
Str->Blob is encode, Blob->Str is decode, isn't it? 12:48
lizmat ah, du
yes, decode
my str $str = nqp::unbox_s($buf.decode); 12:49
diakopter oh 13:03
jnthn lizmat: Did you figure out what you wanted with the string/buf thing? 13:04
timotimo: Nice, we do better on all the push benchmarks now, it seems :) 13:05
timotimo yup, i'm impressed
good work!
dalek kudo/nom: 48244cc | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm:
Implement IO::Handle.words
13:06
lizmat jnthn: ^^^
timotimo i don't have the time necessary to get the parse json benchmark bisected or something
jnthn timotimo: You could maybe see if it's the CAPHASH elimination patch. While in theory it should be a speedup, it's maybe possible something in it is accidentally costly... 13:07
lizmat: Why read a buf and decode it, ooc? 13:08
lizmat jnthn: are you implying that I can read directly into a str ?
jnthn nqp::readcharsfh 13:09
lizmat aha, another undocumented nqp function :-) 13:10
timotimo oh, right
that's a good hint, i'll check that
jnthn Yeah, I actually knew moar has an op called read_fhs and looked it up that way in QASTOperationsMAST.nqp... :)
lizmat does that work on JVM and parrot as well ? 13:11
jnthn timotimo: I'd guess it may be accidental boxing. I did pour over the NQP one with the profiler for quite a while after getting it working.
timotimo ah
good to know
jnthn lizmat: Oh...no :( 13:12
lizmat: Seems they both miss it.
masak vendethiel: "sublexical" relates to "lexical" how? macros have lexical scope AFAIK.
lizmat yeah, looking at IO::Socket
it's moarvm only
Ven masak: sublexical is basically the ... "visible" lexical scope from a macro.
yoleaux 18 Sep 2014 21:29Z <ingy> Ven: applied,thanks!
18 Sep 2014 21:34Z <ingy> Ven: join #lingy
jnthn That's unfortunate.
lizmat I'll use nqp::readcharsfh in the case of moar only then 13:13
masak Ven: in order to clarify your question, could you give me a concrete case where different answers would make a difference?
Ven masak: I'm writting one up :)
jnthn lizmat: Yeah. Feel free to file an NQP ticket requesting availability of that on the other backends?
lizmat will do
Ven writing*, even 13:14
Ven masak: i.e., (defmacro foo () (let (name (gensym)) `(+ 1 2 ,(some-macro name)))) 13:15
masak: here, the code generated by the macro `some-macro` won't have the let's lexical scope at disposal 13:16
letoverlambda.com/textmode.cl/guest/chap6.html
masak hold on, distracted 13:21
dalek ecs: 1c17220 | (L. Grondin)++ | create_contents.p6:
S99/create-contents.p6, explicitely specify encoding, avoid .pod~ files, and add a blanck line before =end pod
13:32
grondilu ^hope it's OK. it was generated errors in contents.pod so I fixed it. 13:33
lizmat grondilu++ 13:35
masak letoverlambda.com/textmode.cl/guest/chap6.html looks very interesting, but is too long for me to read right now. 13:44
it's also telling me that I should read 'On Lisp' at some point.
sooner rather than later.
<Ven> masak: here, the code generated by the macro `some-macro` won't have the let's lexical scope at disposal 13:45
Ven: could you clarify "at disposal"?
Ven masak: just jump to "sublexical"
(ctrl-F, I mean :P)
Ven masak: On Lisp is pretty bad, tbh. "Pratical Common Lisp" and "50 years of lisp" are much better 13:46
timotimo jnthn: your supposition was correct, the "if $match.Bool" block in the MATCH method allocates a gigantic crapton of Int objects 13:47
Ven masak: the basic difference between lexical scope and sub-$0 is macro expansion: if I'm traversing a body of some sort in a macro, it hasn't been macro-expanded yet
masak I jumped to "sub-lexical", but it feels exactly like jumping into something the surrounding context of which I don't have. 13:48
Ven right, my bad 13:49
masak oh, but by the definition you just gave, I don't think macro expension is sub-lexical in p6.
...by current spec.
I'm glad you mention it, though, because I'm gearing up to rethink macros and the way we want to do them.
and I'll especially be looking towards having something that composes in ways we find useful. 13:50
Ven so i.e., in a macro "(do-replacement-onbody 'a)", if your "do-replacement-onbody" wants to change 'a, it'll work
but if you change `'a` with " "(defmacro say-foo () 'a)", it'll blow up: the macro hasn't been expanded yet, and it won't see the "final" 'a
masak the sub-lexical thing seems to be a kind of (non-)composition that might sometimes be useful.
Ven ...and sometimes bit you :)
masak *nod*
Ven the solution proposed here (with sublet and sublet*) is to manually macroexpand(-1) the macro so that you can walk into its expansion code 13:51
I was just thinking things through stuff like that while commuting 13:52
and I actually thought about something else: how do you want to "disable" hygiene?
timotimo roar
there is hardly something more annoying than a b0rked tab key
Ven because, as I understood it, we want hygiene by default (scheme-like, cl-unlike). But we still need a way to break hygiene sometimes (I can think of anaphoric macros being the "simplest" example)
masak Ven: I refer you to current S06 for current ideas about that. 13:53
Ven I'll just finish my sentence then :)
masak Ven: the mechanism today is the COMPILING:: namespace.
Ven there are several solutions: scheme allow you to fall back to a "cl-like defmacro", elixir has a `var!()`, but racket has another very interesting mechanism: `define-syntax-parameter` 13:54
(actually, scheme should have it now too, but it's a pretty recent addition. around 2011)
dalek kudo/nom: 6499f8d | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm:
use nqp::readcharsfh on Moar, fix some logic issues
13:55
Ven www.schemeworkshop.org/2011/papers/...ay2011.pdf <- the basic idea is that you predefine, outside of the macro, the reserved identifiers, and you give them a "default value" (when they've not been by-macro-shadowed) (which might be a `(raise)` if you only want it to be used in said macros), and then in the macro you override their value
masak by the name alone, `define-syntax-parameter` sounds like something TimToady has proposed numerous times.
ok, I clearly need to research all of the above a bit. 13:56
thanks for the pointers.
Ven sorry for the pointers :P.
masak Ven++
no, don't be sorry.
Ven well, it's quite a big area
masak prior art in this case is some of the best input I can get.
Ven masak: I really recommend 50 years of lisp. reading "on lisp" isn't really necessary: it's basically just a bunch of macros threw in there, with little to no explanations on language features. I've been told PCL (practical CL) is a good book, though I havn't read it. And anyway, I'd be happy to chat some more about that :-) 13:58
timotimo i can't really see anything boxing any ints here :\
Ven timotimo: maybe they're waiting for christmas
you sure there aren't gift boxes :p?
timotimo %) 14:01
the little block inside MATCH is in 1st place for routines allocating Int, MATCH itself is in 2nd place with about a quarter of the amount of the block inside itself ... 14:02
dalek ast: b4fc0fe | (Steve Mynott)++ | S0 (4 files):
RT # 76608, 75370, 77158 and 67222 were testneeded should be closable in RT
lizmat itz++ 14:04
jaffa4 masak: I found a nasty bug 14:06
itz hmmm if I login RT with bitcard I seem to have *less* access than as an anon user! (I can't see any tickets at all) 14:09
timotimo i was looking at the spesh log of MATCH and i don't see any hllboxtype_i or box_i or anything like that :( 14:10
how does it allocate int boxes?
FROGGS o/ 14:28
lizmat FROGGS /o 14:31
timotimo hey FROGGS
do you know how to investigate allocations?
the MATCH method we have in use now for rakudo allocates a gigantic crapton of Int objects
FROGGS eww
timotimo: no, I don't 14:32
timotimo that is likely the cause of the gigantic performance drop
have you seen it? %)
FROGGS timotimo: no, I've not seen that 14:33
timotimo: I've even benched MATCH intense stuff without noticing anything
well that's not true
it allocated less objects, but the runtime was identical 14:34
lizmat said that stage parse would take .5s more time
lizmat tha's my impression, yes 14:35
FROGGS but I recompiled rakudo ten times with, and ten times without the patch
timotimo huh.
FROGGS showing that all stages were about 0.02s "faster"
lizmat but if you don't see it...
then it's probably something special on OS X / SSD's
timotimo well, look at a profile of parse-json, it'll show a gigantic amount of allocations of Int
FROGGS lizmat: scratch SSD :P
timotimo like 3x as many as Scalar
FROGGS parse-json? is that in p6bench? 14:36
timotimo (gimme and reify are the top allocators of Scalar, fwiw)
yes, it is
FROGGS k
I'll do that tonight
timotimo t.h8.lv/p6bench/2014-09-20-history_rakudo_2.html - have a look
lizmat timotimo: gimme / reify on Scalar ?
timotimo lizmat: indeed 14:37
lizmat that feels, *odd*
FROGGS ohh wow
timotimo 239032 Scalar in gimme, 110556 in reify, 38798 in bind_one_param
JimmyZ yeah, as I said, run reify once causes a GC, while twice didn't, which is odd 14:39
err, I meant samecase, which runs reify
dalek p: 53515d6 | (Elizabeth Mattijsen)++ | docs/ops.markdown:
Add documentation stub for nqp::readcharsfh
14:40
timotimo FROGGS: for comparison, the numbers i gave were from entering MATCH 167103 times 14:41
and we spent 6.81% exclusive time there
The profiled code ran for 6920.76ms. Of this, 1014.51ms were spent on garbage collection and dynamic optimization (that's 14.66%). - OTOH, it doesn't seem like allocation alone would be responsible for such bad performance?!
dalek kudo/nom: ae35377 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Make $limit always imply eager
14:51
timotimo m: say "that's { (489876 + 167103) / 167103 } Int objects per run of Match. " 14:52
camelia rakudo-moar 6499f8: OUTPUT«that's 3.931581 Int objects per run of Match. ␤»
FROGGS time perl6 --profile perl6/parse-json components.json 128 # 13.9s without my patch 14:53
time perl6 --profile perl6/parse-json components.json 128 # 25.2s with my patch 14:54
FROGGS alloc without my patch: Int 664_880, Scalar 1_611_344, with my patch: Int 2_932_839, Scalar 2_322_004 14:54
timotimo oh wow.
FROGGS much wow
lizmat that's 2 for the price of 1 ! 14:55
Scalar
Int would be more like 4 for the price of 1 ?
timotimo maybe we need more := to get rid of scalar containers? 14:57
colomon lizmat: does that leave a way to call .lines with a $limit and get a lazy list as a result?
timotimo colomon: you could just [^100]
colomon timotimo: so .lines()[^100] would be lazy? 14:57
timotimo yes 14:58
colomon guess that works for me
colomon doesn't have a use case in mind, just hates to presume no one else ever might.
FROGGS timotimo: but I already bind anything that is not a native...
FROGGS .oO( maybe we just need more cowbell ) 14:59
timotimo hmm
FROGGS there is nothing obvious to me that I could optimize... 15:01
timotimo nothing obvious to me either 15:03
i wanted to look back at some boxing-lessening commits to figure out how they worked
lizmat colomon: no, but if you want a limit, you're probably not being lazy anyway, was my thoiught
timotimo i think sometimes in if or while we can't be sure that the result of something can give us a bool "the right way" and so we have to box and call a method or something?
FROGGS we call .Bool, aye 15:04
that's why it is invokish...
timotimo that shouldn't be responsible for the Int creation, though
FROGGS I remember a discussion about exactly that on #moarvm
timotimo github.com/rakudo/rakudo/commit/6b...839a8ed72b - look at this commit for example
FROGGS +$name maybe?
hmmm, I should try nqp::coerce_si 15:06
m: my str $foo = "42"; say nqp::coerce_si($foo) 15:07
camelia rakudo-moar 6499f8: OUTPUT«===SORRY!===␤No registered operation handler for 'coerce_si'␤»
FROGGS eww
m: my str $foo = "42"; say nqp::fromstr_I($foo) 15:08
camelia rakudo-moar 6499f8: OUTPUT«===SORRY!===␤Arg count 1 doesn't equal required operand count 3 for op 'coerce_sI'␤»
FROGGS m: my str $foo = "42"; say nqp::fromstr_I($foo, Int)
camelia rakudo-moar 6499f8: OUTPUT«42␤»
FROGGS that seems to help a good bit... 15:10
time: bad 25.2s, now 20.5s, before: 13.9s 15:11
timotimo ah, we're getting there
maybe nqp::istrue in a few places? 15:12
FROGGS hmmm
Int allocs a slightly more
but we only have 340_000 Parcels instead of 880_000
no, 340_000 and about 680_000 15:13
itz is there anything on github to do https .. I thought I saw something?
(client I mean)
FROGGS itz: HTTP::UserAgent supports it
via OpenSSL
itz ty 15:14
FROGGS timotimo: testing nqp::istrue now
FROGGS timotimo: nqp::istrue only has the effect of allocation more Ints (just a few), the others stayed the same 15:18
timotimo: that's why I have so far: gist.github.com/FROGGS/6b9bf1faa006aeed0c1b
(I reverted the istrue changes) 15:19
It is hard to concentrate on that train... 15:20
timotimo don't concentrate on the train, concentrate on your code! :P 15:21
i'll be AFK for a bit. 15:22
FROGGS *g*
dalek kudo/nom: 9926536 | (Elizabeth Mattijsen)++ | docs/ChangeLog:
Mention IO::Handle.words
15:28
TimToady timotimo: my new pushme test didn't show up :'( 15:29
did you not pull it, or did it not work?
dalek ecs: 8d48f69 | (Elizabeth Mattijsen)++ | S32-setting-library/Str.pod:
The basis of changes I'd like to make to IO spec

  - Str.IO gives an IO::Path that only does absolutifying paths *once*
  - IO::Path gets a caching "isDir" and "exists" attribute
  - IO::Path.lines/words open/close handle from IO::Path.path
  - IO::Handle.lines/words give lines / words from current file position
  - $*SPEC contains the appropriate IO::Spec::filesystem object
  - IO::Path gets a $.SPEC from a given IO::Spec object, default to $*SPEC
  - IO::Path.methods become wrappers around $!SPEC rather than $.SPEC
This should allow for better optimizations (e.g. doing rel2abs only *once*) and for better resource usage (e.g having .lines/words close handles). This should also make all filetest methods much faster.
15:41
FROGGS lizmat: IO::Spec::*file*system? 15:43
lizmat ::Unix, ::Win32 what would you call that? 15:44
perhaps just IO::Spec::system ?
FROGGS I can't say OS, because TimToady would slap me :P
lizmat we have currently 4 of those: IO::Spec::Cygwin/QNX/Unix/Win32.pm 15:45
FROGGS I guess 'system' would do, yeah 15:46
because Cygwin really is not a filesystem
Ven used windows for quite a good numbers of years, and can't understand how people stomach cygwin 15:47
FROGGS it is usually what the user think of when they hear operating system
Ven: I used cygwin...
... to test that my stuff works
but I'm also a windows+strawberry fan
Ven just cmd.exe works fine :p
or powershell if you want 15:48
FROGGS +putty.. what else do you need
I have like zero powershell experience
and no time to improve it
Ven (I far prefer cmd.exe to cygwin...)
FROGGS nwc10: btw, I just ordered an (old) IBM BladeCenter... so you might hear from me about smoking perl6-m/p on weird platforms 15:49
Ven: me too
jnthn Me three. :) 15:51
colomon FROGGS: how do you order something like that? and what would be weird about it?
FROGGS colomon: ebay actually
colomon: I think AIX is weird in some sense 15:52
colomon FROGGS: oh! yes, yes it is 15:52
FROGGS have to do some research what OSes are still in use
like, is HP/UX still alive? on what arch does it run etc...
colomon probably ever evil thing you can think of is still being used somewhere. 15:53
FROGGS I'll have 14 xeon blades, one opteron blade and three powerpc blades
colomon had terrible troubles with his software on AIX once upon a time.
FROGGS IRIX is also a thing, right? 15:54
colomon yes
FROGGS all these *X-es...
colomon used all mentioned so far back in the 90s
FROGGS wow :D
colomon is very glad Linux has mostly taken over that corner of the market
FROGGS colomon: thanks for offering support *g*
lizmat cycling& 15:55
colomon FROGGS: many (most?) of my college programming classes were done on a timesharing IBM mainframe.
and everyplace had different Unix-y workstations. 15:56
and all those machines had siginicantly better capabilities than the PCs of the day, and sucky *nix clones. 15:57
FROGGS yeah, it is a wonder that there is not a huge disaster about all these different unixes
colomon and of course, each was its own incompatiable dialect
Linux conquering all the *X-es but OS X is a huge win. 15:58
FROGGS I need to get an OS X that runs on such a powerpc box... 15:59
colomon FROGGS: assuming you didn't have to take out a mortgage to get the BladeCenter, I'm kind of sorry I didn't get it instead. :)
FROGGS colomon: there are more :o) 16:00
colomon lots of Xeon cores would be great for running my $work test suite
FROGGS 1 € -> www.ebay.de/itm/321527220795
colomon and PowerPC would be awesome to have around for portability testing.
FROGGS I just paid 106€ plus shipping
made back in 2007 or so
colomon FROGGS: Google's English translation claims it cannot be shipped? 16:01
FROGGS colomon: he/she states that you have to ask before bidding 16:02
because its weight is about 50kg
colomon gotcha
jnthn 50kg?!
FROGGS but I'd recommend you look at ebay.us or so :o) 16:03
jnthn: yes, why not?
a single blade is up to 5kg
and there are 14 in it :o)
colomon FROGGS: yeah, I never thought of trying to get machines like this there.
jnthn Oh...right...
Yes, the picture explains it nicely :)
FROGGS I even doubt that it is just 50kg, I bet it is almost twice that many 16:04
my biggest problem will be the noise... its blowers are extreem
EXTEEM, even
+R
you normally can't talk when it is switched on, so I have to modify it a bit, and then only run four blades at once or so 16:05
colomon huh. prices are more expensive on ebay.com, but still almost sane.
I mean, 14 quad core 2.7 GHZ opterons for $4,049 seems pretty reasonable, assuming they actually work well. 16:06
FROGGS I can buy a single opteron blade here for 20€, but without ram and hdd - and these are expensive on their own 16:07
colomon Bet that could get my test suite down to under an hour, if I could figure out how to load balance it
FROGGS so I'm happy to get a complete bladecenter for just 106€
jnthn 14 quad cores would probably do the spectest in good time :D
colomon whoops, actually it's 28 quad core opterons. dang.
jnthn Even better :) 16:08
FROGGS jnthn: problem is... its power supplies might be at max then... which means 4 times 2_000 Watts
but it would be funny to see that working :o) 16:09
itz is there any perl6 short cut to print "foo=$foo" or similar from $foo (like Perl 5 Data::Dumper::Names)
FROGGS hmmm
jnthn m: my $foo = 42; say :$foo
camelia rakudo-moar ae3537: OUTPUT«Unexpected named parameter 'foo' passed␤ in sub say at src/gen/m-CORE.setting:15401␤ in block <unit> at /tmp/_8ujF0YrnG:1␤␤»
jnthn m: my $foo = 42; say :$foo.perl
camelia rakudo-moar ae3537: OUTPUT«"foo" => 42␤»
itz sweet 16:10
BinGOs FROGGS: HP-UX runs on Itanium
FROGGS ohh
maybe I can get such a blade one day
BinGOs: you've got one I bet :o)
BinGOs nope, but TuX likely has 16:11
definitely in fact
FROGGS hehe, yeah
BinGOs I have a PowerPC Mac sat a foot or so from me 16:12
FROGGS BinGOs: with or without EFI?
must be the older without EFI I guess 16:13
I was able to run an OSX in a VM on my old dual core laptop, but it sadly doesnt work on my core i5 :o( 16:14
colomon has been meaning to set up a Raspberry Pi for $work and p6 testing on ARM 16:15
BinGOs FROGGS: its one of these en.wikipedia.org/wiki/Power_Mac_G4
FROGGS ahh, OS X 10.4.something, yeah, that's what I thought 16:17
colomon actually has a PowerPC Mac sitting in the basement too, probably the sane solution is to get it running again rather than buying a bladecenter…. 16:22
FROGGS *g* 16:30
itz overuses :$foo.perl when he should be using the debugger :)
Ven :D! 16:31
colomon itz: me too -- in fact, I pretty much never use the debugger. :) 16:42
raiph github.com/jnthn/rakudo-debugger/pull/21 # I'd appreciate a response to the "if there's an easier/quicker/proper/better way" question from anyone (doesn't need to be jnthn) 17:41
timotimo FROGGS: were you able to improve MATCH further? 18:04
gtodd a cluster of Raspberry Pi's would be nice ... 18:55
Ven a clusterpie
timotimo i don't think so 18:57
raspberry pis are vastly underpowered
gtodd a raspberry bush ...
timotimo maybe a cluster of cubieboards or beaglebone blacks, though ...
colomon was idly looking at refurbished PowerPC Macs after the previous conversation. They're almost cheap enough that buying one to play with is a no-brainer... 19:09
dalek kudo/nom: 8a55aea | (Elizabeth Mattijsen)++ | src/core/Int.pm:
Implement Range coercer for Int types
19:45
dalek kudo/nom: 77e4f64 | (Elizabeth Mattijsen)++ | src/core/Int.pm:
Add Range coercers for unsigned int types
19:56
raiph .ask grondilu Does it make sense to you to remove github.com/perl6/modules/blob/mast...Digest.pm? 20:00
yoleaux raiph: I'll pass your message to grondilu.
dalek kudo/nom: 8ad504c | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Remove type.min/max/minmax experiment
20:11
raiph .ask pmurias Does it make sense to remove github.com/perl6/simple-tests ? 20:28
yoleaux raiph: I'll pass your message to pmurias.
raiph .ask rurban Does it make sense to remove github.com/perl6/nqp-rx ? 20:37
yoleaux raiph: I'll pass your message to rurban.
vendethiel
.oO( Reactive NQP; back in 2012? )
20:38
vendethiel hehehe. A friend of mine had to do some parsing in python (a project for about a week) 20:43
lizmat colomon, itz: how about: $ 6 'my $foo = 42; my @bar = <a b c>; dd $foo,@bar'
$foo = 42
@bar = Array.new("a", "b", "c")
vendethiel he told me "since you showed me p6, I couldn't stop thinking about how easier it'd be" :D
lizmat colomon, itz: as a debugging aid ? 20:44
vendethiel: :-) 20:46
vendethiel lizmat: we're currently going over it, but this time in P6. He's quite receptive :P
lizmat cool!
colomon lizmat: yes, :$variable.perl is a lovely debugging aid. 20:49
lizmat but: 'dd $variable' would be shorter, no?
lizmat but: 'dd $variable, $var2, @array' would be shorter, no? 20:49
colomon lizmat: sorry, I wasn't clear in the commit comment, I meant in your implementation. Once I figured out what unit.Range (for example) was meant to do, it makes sense to me. 20:50
lizmat: what is dd?
lizmat short for datadumper 20:51
colomon is it a built-in in rakudo? 20:52
lizmat it could be
colomon m: my $a = [1, 2]; dd $a
camelia rakudo-moar 77e4f6: OUTPUT«===SORRY!=== Error while compiling /tmp/7U8740cBgb␤Undeclared routine:␤ dd used at line 1␤␤»
dalek kudo/nom: e630782 | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Naive implementation of dd() tiny data dumper
20:54
lizmat colomon: ^^^
colomon lizmat: good service! ;) 20:55
lizmat: Just finally followed all your links. 20:57
afk # family
gtodd couldn't one make "dd" into prefix operator that's short for :$whatever.perl 21:04
TimToady would need to be a macro to get the variable names 21:05
lizmat m: my @a = <a b c>; say :@a.perl # doesn't say it was an array 21:07
camelia rakudo-moar 77e4f6: OUTPUT«"a" => ["a", "b", "c"]␤»
lizmat $ 6 'my @a = <a b c>; dd @a'
@a = Array.new("a", "b", "c")
gtodd oh you have dd :-) 21:09
lizmat I've added that in e630782f55
gtodd :-D builtin
lizmat I hope I'll be forgiven for adding that :-)
gtodd heh ... just keep giving examples in here of using dd and people will get addicted 21:11
colomon lizmat: okay, family off to Toys R Us
lizmat: so the idea is instead of Int.max, it's Int.Range.max? 21:12
lizmat m: int32.Range.say 21:12
camelia rakudo-moar 77e4f6: OUTPUT«-2147483648..2147483647␤»
Ven TimToady: would it? 21:13
lizmat so yes, I think
Ven m: dd($v) { say $v.VAR.name => $v }; my $a = 1; dd $a;
camelia rakudo-moar 77e4f6: OUTPUT«===SORRY!=== Error while compiling /tmp/oRXwQMwUlp␤Variable '$v' is not declared␤at /tmp/oRXwQMwUlp:1␤------> dd($v⏏) { say $v.VAR.name => $v }; my $a = 1; ␤ expecting any of:␤ postfix␤»
Ven m: sub dd($v) { say $v.VAR.name => $v }; my $a = 1; dd $a;
camelia rakudo-moar 77e4f6: OUTPUT«"\$v" => 1␤»
Ven TimToady: ^ a bit of a hack 21:13
lizmat Ven: that's basically how I implemented multi dd
Ven oh, lizmat++ actually added it 21:14
annnd spooked me
colomon lizmat++ 21:15
gtodd m: sub dd2($v) { say $v.VAR.name ~ "=>" ~ "$v" }; my $a = 1; dd2 $a; 21:29
camelia rakudo-moar e63078: OUTPUT«$v=>1␤»
lizmat gtodd: I chose to do .perl for the value, so that you can do arrays/hashes and see what they are better 21:30
gtodd right
better that way 21:31
dalek kudo-star-daily: de28d60 | coke++ | log/ (15 files):
today (automated commit)
rl6-roast-data: 742582c | coke++ | / (4 files):
today (automated commit)
21:32
lizmat :m my $foo = 42; my @bar = [<a b c>]; dd $foo, @bar 22:27
m: my $foo = 42; my @bar = [<a b c>]; dd $foo, @bar 22:28
camelia rakudo-moar e63078: OUTPUT«$foo = 42, @bar = Array.new(["a", "b", "c"])␤»
lizmat :-)
m: my $foo = 42; my @bar = <a b c>; dd $foo, @bar
camelia rakudo-moar e63078: OUTPUT«$foo = 42, @bar = Array.new("a", "b", "c")␤»
lizmat dd has landed :-)
good night, #perl6!
grondilu wth? 22:29
yoleaux 20:00Z <raiph> grondilu: Does it make sense to you to remove github.com/perl6/modules/blob/mast...Digest.pm?
lizmat grondilu: a debug helper, tiny data dumper
sleep& 22:30
grondilu .tell raiph I'm not sure what this is. It's not mine anyway. Still, I notice this uses Parrot-specific code. If it can be shown that the pure P6 version is as least as good, it should prevail, shouldn't it? 22:33
yoleaux grondilu: I'll pass your message to raiph.
[Coke] m: dd.WHY.say
camelia rakudo-moar e63078: OUTPUT«===SORRY!=== Error while compiling /tmp/s1Rnmdm2RN␤Calling 'dd' requires arguments (if you meant to operate on $_, please use .dd or use an explicit invocant or argument)␤ Expected any of: ␤ :(Any \a) ␤ :(Any \a, Any \b) …»