»ö« 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.
00:02 slmult0_z_y_h_g left 00:05 slmult0_z_y_h_g joined 00:14 raiph joined 00:15 Akagi201 joined 00:19 Akagi201 left 00:27 Akagi201 joined 00:33 bjz left 01:02 molaf left 01:11 FROGGS_ joined 01:14 FROGGS left 01:24 xenoterracide joined 01:28 leont left 01:33 xenoterracide left 01:39 raiph left 01:45 ilbot3 left 01:47 ilbot3 joined 02:02 aborazmeh joined 02:18 araujo joined 02:21 masak_grr is now known as masak 02:22 masak is now known as Guest79116 02:24 Guest79116 is now known as masak_grr 02:31 slmult0_z_y_h_g left 02:32 slmult0_z_y_h_g joined 02:42 noganex joined 02:45 noganex_ left 02:47 firnsy joined, firnsy left, firnsy joined 02:55 aborazmeh left 03:03 firnsy left 03:04 FROGGS_ left 03:21 FROGGS[mobile] joined
jnthn morning, #perl6 03:22
FROGGS[mobile] morning jnthn 03:26
03:27 firnsy joined, firnsy left, firnsy joined 03:28 slmult0_z_y_h_g_ joined, slmult0_z_y_h_g left
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
03:46 BenGoldberg left
FROGGS[mobile] additionally you'd have to explain everytime 03:47
03:58 tinyblak joined 04:08 Guest16580 left 04:09 colomon joined, no-doz joined 04:23 FROGGS[mobile] left
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
04:29 FROGGS joined 04:35 tinyblak left 04:40 itz_ joined 04:50 FROGGS left
dalek ar: 77018e1 | (Tobias Leich)++ | modules/perl6-digest-md5:
bump Digest::MD5 revision
04:51
04:53 FROGGS joined
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
05:00 jerrycheung joined
FROGGS just the star-daily shows it, since it smokes most recent versions 05:00
bbl 05:02
05:02 FROGGS left 05:04 jerrycheung left 05:06 araujo left 05:16 FROGGS[mobile] joined 05:28 molaf joined 05:33 tinyblak joined 05:39 molaf left 05:51 [Sno] left, [Sno] joined 05:53 ggherdov___ left, xenoterracide joined 05:58 tinyblak left 06:13 tinyblak joined 06:15 isacloud______ joined 06:16 pnu_ joined 06:19 clkao joined 06:20 kurahaupo left, tinyblak left 06:21 tinyblak joined 06:22 ggherdov___ joined 06:23 tinyblak left 06:27 xinming_ joined 06:28 tinyblak joined 06:29 xinming left 06:33 slmult0_z_y_h_g_ left 06:34 slmult0_z joined 06:37 tinyblak_ joined 06:39 slmult0_z left, tinyblak left 06:40 darutoko joined, kaare_ joined 06:46 tinyblak_ left 07:06 uniejo joined 07:07 uniejo left 07:08 bjz joined, itz_ is now known as itz 07:10 tinyblak joined 07:13 xenoterracide left 07:22 mr-foobar left 07:23 mr-foobar joined 07:30 tinyblak_ joined 07:31 tinyblak left 07:43 Isp-sec joined 07:47 mr-foobar left 07:49 mr-foobar joined 07:51 [Sno] left, [Sno] joined 07:55 mr-foobar left 07:56 mr-foobar joined 08:03 tinyblak joined 08:04 tinyblak_ left 08:08 anaeem1 joined 08:10 kurahaupo joined, kurahaupo left 08:17 anaeem1 left 08:29 telex left 08:30 telex joined 08:34 anaeem1 joined 08:37 anaeem1 left 08:40 Isp-sec left 08:41 anaeem1 joined 08:45 virtualsue joined, spider-mario joined
lizmat good *, #perl6 08:46
itz++ for setting up pl6anet.org/hackday/ 08:47
08:50 anaeem1 left
virtualsue \o/ 08:50
jnthn o/ lizmat 08:51
lizmat jnthn virtualsue o/ 08:54
08:56 diego_k joined
diego_k is trying to compile p6-moarvm on osx but having some problems... 08:59
08:59 leont joined
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)»
09:16 anaeem1 joined 09:20 anaeem1 left 09:26 virtualsue left
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
09:38 anaeem1 joined 09:39 anaeem1 left, anaeem___ joined 09:45 masak_grr is now known as masak 09:46 anaeem___ left
sergot mo/rning 09:48
09:48 leont left 09:50 bjz left, bjz joined 09:51 anaeem1_ joined 09:52 jerrycheung joined 09:53 jerrycheung left
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
09:55 mr-foobar left 09:56 mr-foobar joined
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
10:00 PZt left
lizmat jnthn: nothing to worry about, just a datapoint :-) 10:01
10:03 denis_boyun_ joined 10:06 pmurias joined
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
10:09 virtualsue joined 10:11 anaeem1_ left 10:12 denis_boyun_ left 10:13 anaeem1 joined 10:15 itz_ joined 10:16 itz is now known as not_itz, itz_ is now known as itz
jnthn pmurias: Nice hack ;) 10:17
10:17 anaeem1 left
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
10:18 bjz left 10:20 darutoko- joined
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
10:21 bjz joined 10:22 darutoko left 10:24 dalek left, tadzik left, dalek joined, ChanServ sets mode: +v dalek
itz "The following step can take a long time, please be patient." <=- is this still true? :) 10:24
10:24 FROGGS[mobile]2 joined, tadzik joined 10:25 FROGGS[mobile] left 10:26 SHODAN left, MilkmanDan joined
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 :-)
10:27 cxreg left
jnthn dinner & 10:27
10:28 cxreg joined, SHODAN joined 10:29 BinGOs joined 10:33 MilkmanDan left 10:34 vendethiel joined, Akagi201 left, MilkmanDan joined 10:35 Akagi201 joined
vendethiel o/, #perl6 :) 10:37
lizmat vendethiel o/
pmurias vendethiel: hi 10:39
vendethiel masak: do macros in P6 (currently) have sublexical scope?
10:43 tinyblak left
dalek p: 783e870 | (Elizabeth Mattijsen)++ | docs/ops.markdown:
Add documentation stub for nqp::encode
10:48
10:51 jaffa4 joined
jaffa4 hi all 10:52
How can I reference aub parameter by position? 10:54
10:55 petercommand joined
lizmat sub a (*@positionals) { say @positionals[42] } ?? 10:56
timotimo aye 10:57
another thing you can do:
10:58 cognome joined
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
11:04 FROGGS[mobile]2 left 11:05 FROGGS[mobile] joined
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
11:19 Ven joined
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
11:29 pflanze joined
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
11:55 raiph joined
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
12:10 virtualsue left, FROGGS[mobile] left
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
12:18 Ven left
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
12:23 virtualsue joined
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
12:35 ggoebel11111113 joined, Ven joined
lizmat what can I say: it works for me... 12:37
12:39 ggoebel11111112 left 12:46 spider-mario left
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
12:49 spider-mario joined 12:56 anaeem1_ joined 12:59 anaeem1__ joined 13:03 anaeem1_ left
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
13:14 anaeem1__ left, anaeem1_ joined
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
13:20 SamuraiJack joined, anaeem1_ left
masak hold on, distracted 13:21
13:24 camelia left 13:30 camelia joined 13:32 ChanServ sets mode: +v camelia
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
13:37 BenGoldberg joined, JimmyZ joined 13:39 anaeem1 joined 13:41 SamuraiJack_ joined 13:42 SamuraiJack left
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)
13:46 anaeem1 left
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*
13:51 molaf joined
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?
14:01 anaeem1 joined
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
14:05 raiph left
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?
14:22 FROGGS joined
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
14:40 PZt joined
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?!
14:46 pmurias left, FROGGS left 14:47 pmurias joined 14:48 MikeFair joined, lucvn joined 14:50 lucvn left
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. ␤»
14:53 FROGGS joined
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
14:54 SamuraiJack_ left
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]
14:57 pmurias left
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␤»
15:10 pmurias joined
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
15:17 anaeem1 left
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?
15:30 anaeem1_ joined 15:38 guru joined 15:39 guru is now known as Guest96602, Guest96602 is now known as ajr_
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
15:52 anaeem1_ left
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
16:15 JimmyZ left
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
16:15 mberends left
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
16:45 virtualsue left 16:46 kaare__ joined 16:49 kaare_ left, itz left 16:53 FROGGS left, BenGoldberg left 16:55 bartolin joined 16:59 bartolin left, bartolin joined 17:05 raiph joined 17:25 raiph left 17:26 Ven left 17:31 kjs_ joined, raiph joined 17:33 zakharyas joined 17:37 Ven joined
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
17:52 FROGGS joined 18:00 pmurias left
timotimo FROGGS: were you able to improve MATCH further? 18:04
18:21 pmurias joined 18:22 molaf_ joined 18:25 molaf left 18:39 pmurias left 18:50 pmurias joined 18:51 kjs_ left
gtodd a cluster of Raspberry Pi's would be nice ... 18:55
Ven a clusterpie
18:56 camelia left
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 ...
18:59 pmurias left 19:01 camelia joined 19:03 ChanServ sets mode: +v camelia
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
19:14 telex left, telex joined 19:20 panchiniak joined 19:21 anaeem1_ joined 19:23 anaeem1_ left, darutoko- left 19:35 vendethiel left 19:42 anaeem1 joined 19:45 Psyche^_ joined
dalek kudo/nom: 8a55aea | (Elizabeth Mattijsen)++ | src/core/Int.pm:
Implement Range coercer for Int types
19:45
19:48 anaeem1 left 19:49 Psyche^ left 19:50 vendethiel joined 19:51 diego_k is now known as diegok, jaffa4 left 19:54 raiph left 19:55 raiph joined
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.
20:06 vukcrni joined, bartolin left 20:07 xragnar is now known as Guest78145, xragnar_ joined, Guest78145 left, xragnar_ is now known as xragnar 20:08 anaeem1 joined, anaeem1 left 20:09 anaeem1_ joined
dalek kudo/nom: 8ad504c | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Remove type.min/max/minmax experiment
20:11
20:13 kurahaupo joined 20:14 anaeem1_ left, panchiniak left 20:18 rindolf left 20:28 dolmen joined
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
20:41 ajr_ left
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?
20:49 leont joined
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
20:51 Ven left
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␤␤»
20:54 Ven joined
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
21:01 woolfy joined 21:02 kaare__ left 21:04 woolfy left
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
21:06 woolfy joined
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 :-)
21:11 spider-mario left
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
21:12 zakharyas left
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␤»
21:13 MikeFair left
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
21:44 BenGoldberg joined 21:49 aborazmeh joined 21:57 aborazmeh left 22:02 raiph left 22:03 Ven left 22:05 Ven joined 22:12 colomon left 22:18 colomon joined
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) …»
22:33 bobbinnumerous joined 22:34 DarthGandalf joined 22:41 dolmen left 22:44 ctlM joined 22:50 Ven left 22:52 SamuraiJack_ joined 23:01 cognome left 23:02 cognome joined 23:06 ctlM left, cognome left 23:17 SamuraiJack_ left 23:29 ctlM joined 23:33 leont left 23:34 ctlM left 23:35 ctlM joined 23:36 ctlM is now known as cgrid24 23:37 cgrid24 left 23:43 eupcan277 joined, eupcan277 left 23:47 eupcan277 joined, colomon left 23:57 cognome joined 23:58 colomon joined