Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-10-24

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:03 [Coke] Files.getAttribute(Paths.get(filename), "unix:dev")).longValue(); - what's this returning?
00:03 [Coke] (from STAT_PLATFORM_DEV)
00:11 diakopter [Coke]: device or something?
00:11 diakopter :)
00:12 diakopter http://perldoc.perl.org/functions/stat.html
00:12 Psyche^_ joined #perl6
00:12 [Coke] nqp-m: say(nqp::stat("/dev/zero",nqp::const::STAT_PLATFORM_DEV));
00:12 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:12 _sri joined #perl6
00:12 [Coke] nqp-j: say(nqp::stat("/dev/zero",nqp::const::STAT_PLATFORM_DEV));
00:12 camelia nqp-jvm: OUTPUT«5␤»
00:13 diakopter nqp-m: say(nqp::stat("/dev/null",nqp::const::STAT_PLATFORM_DEV));
00:13 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:13 diakopter *cry*
00:13 [Coke] You're welcome. ;)
00:13 diakopter .oO( "BUT AT LEAST IT FAILED FAST!" )
00:14 diakopter nqp-m: say(nqp::stat("/dev/random",nqp::const::STAT_PLATFORM_DEV));
00:14 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:14 diakopter nqp-m: say(nqp::stat("/dev",nqp::const::STAT_PLATFORM_DEV));
00:14 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:14 diakopter nqp-m: say(nqp::stat("/",nqp::const::STAT_PLATFORM_DEV));
00:14 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:14 diakopter sigh.
00:15 Mouq nqp-m: nqp::const::STAT_PLATFORM_DEV;
00:15 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:15 diakopter lolz.
00:15 Mouq Not SEGVing there may help
00:16 diakopter nqp-m: nqp::const::STAT_PLATFORM_DEV;
00:16 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:16 diakopter nqp-m: nqp::const::STAT_PLATFORM_FOOOOOOOOOOOOOOOOO;
00:16 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:17 Mouq nqp-m: nqp::const::halp;
00:17 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:18 Mouq nqp-m: nqp::const::CCLASS_ALPHABETIC
00:18 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:22 diakopter nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHABETIC)
00:22 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:22 diakopter nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHA)
00:22 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:24 Mouq diakopter: I don't think camelia supports recursion yet :)
00:25 d^_^b hey everyone
00:26 Mouq Do I get a prize if I made my rakudo build die in stage parse with: 'maximum recursion depth exceeded'? :D
00:27 Mouq Hey d^_^b. Your name is very hard to type
00:27 d^_^b Mouq: really? I never type usernames
00:27 d^_^b I just use tab-key.
00:27 d^_^b d^
00:27 Mouq Woah
00:28 * Mouq has only started using irssi recently
00:28 d^_^b irssi ftw
00:36 diakopter Mouq: yes, you get a prize
00:36 diakopter your commit bit gets doubled
00:40 BenGoldberg joined #perl6
00:42 Mouq r: say 0b01 * 2 % 1
00:42 camelia rakudo 2ce544: OUTPUT«0␤»
00:42 Mouq r: say 0b01 * 2 % True
00:42 camelia rakudo 2ce544: OUTPUT«0␤»
00:43 TimToady r: say 0b01 * 2 %% 1
00:43 camelia rakudo 2ce544: OUTPUT«True␤»
00:44 Mouq TimToady: It was supposed to be a bad pun on getting my commit bit doubled
00:45 Mouq diakopter: Or wait, did you mean for the rakudo repo?
00:46 * TimToady was just checking to make sure your commit bit was divisible by 1, or your pun would have been invalid :)
00:47 Mouq r: say 2.5 %% 1
00:47 camelia rakudo 2ce544: OUTPUT«False␤»
00:47 diakopter r: say 0 %% 0
00:47 camelia rakudo 2ce544: OUTPUT«Divide by zero using infix:<%%>␤  in method gist at src/gen/CORE.setting:11913␤  in method gist at src/gen/CORE.setting:972␤  in sub say at src/gen/CORE.setting:12813␤  in block  at /tmp/EaX14yeJlv:1␤␤»
00:47 diakopter r: say 0 %% 1
00:47 camelia rakudo 2ce544: OUTPUT«True␤»
00:47 TimToady r: say 2.5 %% 0.5
00:47 camelia rakudo 2ce544: OUTPUT«True␤»
00:48 diakopter r: say 2 * pi %% pi
00:48 camelia rakudo 2ce544: OUTPUT«True␤»
00:48 diakopter o_O
00:48 diakopter r: say 22034592837465 * pi %% pi
00:48 TimToady that uses *long* division
00:48 camelia rakudo 2ce544: OUTPUT«True␤»
00:48 TimToady really really long
00:48 Mouq rn: say 2 * pi %% pi
00:48 camelia rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«True␤»
00:49 Mouq rn: say (2 * pi).DUMP
00:49 TimToady rn: say pi.WHAT
00:49 camelia rakudo 2ce544: OUTPUT«(Num)␤»
00:49 camelia ..niecza v24-98-g473bd20: OUTPUT«Num()␤»
00:49 camelia niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Unable to resolve method DUMP in type Num␤  at /tmp/urNWtSVzQ4 line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576) ␤…»
00:49 camelia ..rakudo 2ce544: OUTPUT«6.28318530717959e0␤»
00:49 * TimToady thinks pi.WHAT should say (Irrat) :)
00:50 diakopter nqp-m: say(nqp::mod_n(3.14159,3.14159))
00:50 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:50 diakopter *whimper*
00:50 geekosaur (Wtf)
00:50 * diakopter starts to get gun-shy
00:50 TimToady nqp-m: say(nqp::mod_n(3,3))
00:50 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:51 TimToady nqp-m: say(nqp::mod_n(3e0,3e0))
00:51 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:51 Mouq nqp-m: say(nqp::mod_I(3,3))
00:51 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:51 diakopter nqp-m: say(nqp::mod_i(1,1))
00:51 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:51 diakopter _-_-
00:52 * TimToady wonders if this qualifies as a foolish consistency
00:52 TimToady it being close to halloween and all
00:52 diakopter it really likes the seggies today
00:52 TimToady maybe it needs more segments
00:53 diakopter nqp-m: nqp::segment()
00:53 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:53 diakopter *headdesk*
00:53 TimToady nqp-m: nqp
00:53 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:53 geekosaur well, it does seem to be consistent...
00:54 TimToady nqp-m: say("(signal SEGV)")
00:54 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:54 diakopter no newline!
00:54 TimToady it's just a semipredicate problem :)
00:54 TimToady nqp-m: print("(signal SEGV)")
00:54 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:54 TimToady happy now?
00:55 Mouq nqp-m: 1
00:55 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:55 diakopter nqp-m:
00:55 diakopter nqp-m: ;
00:55 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:55 diakopter nqp-m: die
00:55 camelia nqp-moarvm: OUTPUT«(signal SEGV)»
00:55 TimToady maybe "needs more segments" means "needs one segment" :P
00:56 jferrero joined #perl6
00:56 jferrero joined #perl6
00:58 REPLeffect joined #perl6
01:23 sizz joined #perl6
01:34 xinming joined #perl6
01:45 TimToady this segment of #perl6 brought to you by the number ∅ and by the letters π and ε
01:45 colomon ∅ is not a number, is it?
01:45 TimToady well, church numerals and such...
01:45 colomon eh, I suppose.
01:45 diakopter I'm a number
01:47 * TimToady goes to play a number of drums and to do some cymbalic computation
01:47 TimToady afk &
01:47 diakopter er, oops, still at office
01:48 colomon I am not a number. I am a person.
01:51 geekosaur I'm a number... if you Gödel encode my genome and epigenome
01:54 geekosaur (which admittedly is a bit like FFTing your cat)
01:55 wbill joined #perl6
01:56 colomon … are you implying your genome is an expression in Peano arithmetic?
01:56 BenGoldberg Musical genes?
01:58 BenGoldberg nqp: 1
01:58 camelia nqp-jvm, nqp-parrot: ( no output )
01:58 camelia ..nqp-moarvm: OUTPUT«(signal SEGV)»
01:58 colomon ouch
01:59 diakopter nqp-m isn't running much of anything today
02:10 benabik IANaN
02:12 dalek Heuristic branch merge: pushed 91 commits to nqp/stdsigspace by Mouq
02:13 benabik My perl6 toolchain is not very test clean.  test failures in parrot, nqp-p (possibly related), and nqp-j.  nqp-m doesn't even build.  Kinda sad.  :-/
02:21 * Mouq sent a CLA to TPF some time ago. Could someone with the capacity please (I would .tell moritz, but, alas, poor yoleaux, I knew it well) verify that TPF got it and, if they're feeling super nice, give me a commit bit for Rakudo?
02:22 Mouq s/me/him/ I suppose
02:23 Mouq s/they're/that person is/ too
02:25 Mouq I guess I could email pr@perlfoundation.org
02:25 [Coke] I don't think there's anyone on channel who would get the physical mail.
02:26 [Coke] I can check the spreadsheet to see if you were added...
02:26 [Coke] no string matching "mou"
02:27 [Coke] (last updated jul 10)
02:27 * Mouq == Alexander Moquin
02:27 [Coke] no string matching "moq"
02:27 Mouq Okay, thank you [Coke]
02:27 [Coke] so, need to ping someone at the tpf itself, closer to the mailbox (snail or e)
02:32 colomon Does it still go somewhere in Michigan?  When I sent in mine, I think the PO box was just a few hours' drive away...
02:34 BenGoldberg r: my @H := say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take $b; push @b, $b } } }[1..10]
02:34 camelia rakudo 2ce544: OUTPUT«1 1 2 3 3 4 5 5 6 6␤Type check failed in binding; expected 'Positional' but got 'Bool'␤  in block  at /tmp/Oxm_pEy5gQ:1␤␤»
02:35 BenGoldberg Hmm, nevermind...
02:35 grondilu joined #perl6
02:37 BenGoldberg nr: say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take $b; push @b, $b } } }[0..10]
02:37 camelia niecza v24-98-g473bd20: OUTPUT«Inf 1 1 6 6 6 6 6 6 6 6␤»
02:37 camelia ..rakudo 2ce544: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6␤»
02:37 BenGoldberg Now, that's a bug
02:39 BenGoldberg There's a workaround, but it shouldn't be necessary:
02:39 BenGoldberg nr: say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take 0+$b; push @b, $b } } }[0..10]
02:39 camelia rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6␤»
02:40 lue Quick question about some recent changes: do I now need to be mindful of nqp => nqp-* and perl6 => perl6-* when I next update my repos, and worst case set up a symlink for the unqualified names based on whatever VM I like best?
02:42 Mouq [Coke]: Okay, sounds good. I can't find them online right now, but I'll for them again at some point.
02:48 Mouq *look :p
02:48 [Coke] nqp: say(nqp::stat("barf",nqp::const::STAT_PLATFORM_BLOCKSIZE))
02:48 camelia nqp-parrot: OUTPUT«stat failed: No such file or directory␤current instr.: '' pc 40 ((file unknown):39) (/tmp/n9gB72jW8c:1)␤»
02:48 camelia ..nqp-jvm: OUTPUT«java.lang.UnsupportedOperationException: STAT_PLATFORM_BLOCKSIZE not supported␤  in  (/tmp/0BxIcdLN6Z:1)␤  in  (src/stage2/gen/NQPHLL.nqp:1098)␤  in eval (src/stage2/gen/NQPHLL.nqp:1084)␤  in evalfiles (src/stage2/gen/NQPHLL.nqp:1290)␤  in command_eval (src…»
02:48 camelia ..nqp-moarvm: OUTPUT«(signal SEGV)»
02:49 [Coke] nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKSIZE))
02:49 camelia nqp-parrot: OUTPUT«4096␤»
02:49 [Coke] nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS))
02:49 camelia nqp-parrot: OUTPUT«8␤»
02:49 [Coke] nqp-j: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS))
02:49 camelia nqp-jvm: OUTPUT«java.lang.UnsupportedOperationException: STAT_PLATFORM_BLOCKS not supported␤  in  (/tmp/w5_9rqCuyX:1)␤  in  (src/stage2/gen/NQPHLL.nqp:1098)␤  in eval (src/stage2/gen/NQPHLL.nqp:1084)␤  in evalfiles (src/stage2/gen/NQPHLL.nqp:1290)␤  in command_eval (src/st…»
02:55 xenoterracide joined #perl6
02:56 dalek nqp: 2c2d3bc | coke++ | docs/ops.markdown:
02:56 dalek nqp: first pass at stat() docs.
02:56 dalek nqp:
02:56 dalek nqp: Pulled solely from the JVM impl.
02:56 dalek nqp: review: https://github.com/perl6/nqp/commit/2c2d3bceb1
02:56 dalek perl6-roast-data: ceb900f | coke++ | / (4 files):
02:56 dalek perl6-roast-data: today (automated commit)
02:56 dalek perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/ceb900f6f6
02:57 [Coke] lizmat: rakudo.jvm is aborted 45 tests in re: deprecations.
02:57 [Coke] (there are several other various failures that need addressing)
02:58 [Coke] my attempt at an indented list failed for stat(). markdown help appreciated.
02:59 [Coke] https://github.com/perl6/nqp/blob/master/docs/ops.markdown#stat
03:04 Mouq [Coke]: I don't think you can, but how does this work for you: https://gist.github.com/Mouq/7130628
03:05 Mouq Of course, you could use html somehow, but I don't know how well Github deals with that
03:13 preflex joined #perl6
03:26 uvtc joined #perl6
03:30 uvtc [Coke], re. Markdown help, I'm not sure what you mean by "indented list". Aside from that though, I suggest following the 4-space rule: all content (counting list markers as just whitespace) should start at column nums which are multiples of 4. Pandoc follows this rule, and nested lists work out very nicely.
03:32 uvtc [Coke], not sure how closely github's flavor of markdown follows the 4-space rule though.
03:37 preflex_ joined #perl6
03:38 uvtc [Coke], Oh, I see. You want to indicate that the variants might throw an exception. No markdown markup for that, that I know of. Though, aside, Pandoc-markdown supports definiton lists, which work well for docs like this, IMO (github's md does not).
03:38 fridim_ joined #perl6
03:39 dansamo joined #perl6
03:41 uvtc An opportunity for languages wishing to compete with PHP, IMO: https://news.ycombinator.com/item?id=6582012 .
03:50 uvtc compete for users, I mean.
03:50 uvtc left #perl6
04:04 wbill joined #perl6
04:22 GlitchMr joined #perl6
04:33 GlitchMr joined #perl6
04:56 moritz \o
05:08 moritz lizmat: seems to be an error in some exception handling code
05:09 moritz use of uninitialized value of type Any in string contextCannot look up attributes in a type object
05:09 moritz current instr.: 'print_exception' pc 135403 (src/gen/p-CORE.setting.pir:57754) (src/gen/p-CORE.setting:10667)
05:09 moritz r: say ~Any
05:09 camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context  in block  at /tmp/4M1TtjQoXz:1␤␤␤»
05:09 moritz hm, not that one.
05:11 moritz oh, it happens in Array stringification
05:12 moritz my @array = <a b c>; my @other; @other[1] = @array; say ~@other
05:12 moritz dies
05:14 xinming joined #perl6
05:20 moritz r: my @array = <a b c>; my @other; @other[1] = @array; say @other.perl
05:20 camelia rakudo 2ce544: OUTPUT«Array.new(Any, ["a", "b", "c"])␤»
05:21 moritz r: my @a; @a[1] = 42; say ~@a
05:21 camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context  in block  at /tmp/2wpuIfxlMP:1␤␤ 42␤»
05:21 moritz r: my @a; @a[1] = <a b c >; say ~@a
05:21 camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context  in block  at /tmp/FX8CqGlhU6:1␤␤ a b c␤»
05:25 [Sno] joined #perl6
05:42 SamuraiJack joined #perl6
05:42 dansamo joined #perl6
05:49 Rotwang joined #perl6
05:57 kaleem joined #perl6
06:22 darutoko joined #perl6
06:35 xenoterracide joined #perl6
06:39 * masak .oO( ∅ is a number in the Church of Zermelo )
06:39 * masak .oO( I am the Empty Set, AMA )
06:43 denis_boyun joined #perl6
06:55 moritz good morning masak
07:02 arnsholt o/
07:03 masak good moritz, morning.
07:04 masak and good \o, arnsholt.
07:07 GlitchMr joined #perl6
07:08 FROGGS joined #perl6
07:08 moritz diakopter++ seems to be right that after the branch landed, some compiler flags are missing
07:13 moritz I have to $work now; if anybody wants to investigate, the CFLAGS line is much shorter after the merge
07:14 moritz might just be a matter of propagating the information inside Configure.pl
07:15 dalek nqp: e336a06 | moritz++ | tools/build/Makefile-Parrot.in:
07:15 dalek nqp: [parrot] fix race condition in the build
07:15 dalek nqp:
07:15 dalek nqp: the dyncall ops depend on the basic nqp ops; this failed reliably for me
07:15 dalek nqp: with make -j3
07:15 dalek nqp: review: https://github.com/perl6/nqp/commit/e336a066e1
07:18 dansamo joined #perl6
07:20 LWA joined #perl6
07:20 iSlug joined #perl6
07:25 frettled Good masak, everyone! :)
07:26 masak good frettled, (morning+antenoon)/2.
07:32 masak r: role Greeting { method greet { ... } }; class NormalGreeting does Greeting { has $.name; has $.time; method greet { "good $.time, $.name" } }; class ConfusedGreeting does Greeting { has $.name; has $.time; method greet { "good $.name, $.time" } }; say .new( :name<frettled>, :time<morning> ).greet for NormalGreeting, ConfusedGreeting
07:32 camelia rakudo 2ce544: OUTPUT«good morning, frettled␤good frettled, morning␤»
07:32 masak \o/
07:33 dalek rakudo/nom: 78f9616 | moritz++ | tools/lib/NQP/Configure.pm:
07:33 dalek rakudo/nom: [Configure] fix parsing of config values
07:33 dalek rakudo/nom:
07:33 dalek rakudo/nom: = should not be allowed inside option names, because it is the delimiter
07:33 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/78f9616928
07:34 moritz I'm a bit scared that some rakudo features seem to rely on the compiler flags that parrot considers "warning" flags
07:35 frettled masak: lovely :D
07:36 frettled masak: with a little bit of work, I'm sure Perl 6 will become as verbose as Java. *G,D&R*
07:42 arnsholt moritz: Which features is that?
07:42 arnsholt It's worth noting that Parrot's cflags are set on a policy of "as many warnings as possible"
07:43 lizmat r: my @array = <a b c>; say ~(@array[2, *-1]:delete)
07:43 camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context  in block  at /tmp/CRUGQnLTJQ:1␤␤c ␤»
07:43 lizmat hmmm
07:45 masak hmmm indeed.
07:46 masak are the values all returned before they're deleted? does .elems stay the same the whole time?
07:46 masak intuitively, I'd say "yes" to both of those.
07:47 sqirrel joined #perl6
07:49 moritz arnsholt: stuff like -falign-functions=16
07:51 arnsholt Why is that a warning?
07:51 moritz huh, but re-adding it didn't help :(
07:52 * masak .oO( too late, you already said "no warnings"! ) :P
07:53 lizmat [Coke]: re: deprecations testing, I guess jakudo doesn't have properly functioning Backtrace ?
07:56 zakharyas joined #perl6
08:01 * arnsholt hates fighting with Python and encodings
08:01 * tadzik hates fighting
08:01 arnsholt Troo, troo
08:01 tadzik unless it's the usual "the man above wins" on the grass outside the bar :D
08:03 * masak .oO( the man above always wins )
08:06 * lizmat nuked parrot/nqp/install directories and did a rebuild, to no avail :-(
08:06 lizmat how come camelia doesn't suffer the same problem?  is that running jakudo nowadays ?
08:08 moritz r: my @array = <a b c>; my @other; @other[1] = @array; say ~@other
08:08 camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context  in block  at /tmp/1Z_nP1CSXf:1␤␤ a b c␤»
08:09 moritz lizmat: it's still on a pre-branch revision
08:09 lizmat $ git describe
08:09 lizmat 2013.10-75-g6ee9539
08:09 moritz lizmat: I might have a "fix"
08:09 moritz that is, I don't understand why it's necessary
08:10 moritz but it helps with the test (autoref.t) that I've been looking at
08:11 dalek rakudo/nom: c37dfc7 | moritz++ | src/core/Backtrace.pm:
08:11 dalek rakudo/nom: guard against undefined code object in backtraces
08:11 dalek rakudo/nom:
08:11 dalek rakudo/nom: I have no idea why this is necessary, but it seems to fix a lot of broken spectests
08:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c37dfc740e
08:12 lizmat testing
08:12 lizmat feels like this is fixing the symptom rather than the cause  :-)
08:12 moritz agreed
08:12 moritz that's why I said "fix"
08:13 lizmat masak would say workaround  :-)
08:15 masak hehe
08:16 masak no, "fix" is right here :) as in "make working".
08:17 lizmat builds ok, primary test now works, spectesting now
08:18 iSlug joined #perl6
08:19 jnthn morning o/
08:22 LWA joined #perl6
08:23 FROGGS o/
08:23 donaldh joined #perl6
08:24 lizmat o/ jnthn FROGGS !
08:24 FROGGS hi lizmat :o)
08:26 lizmat one fail in spectest now: t/spec/integration/error-reporting.t    not ok 11 - warning reports correct line number and subroutine
08:26 lizmat fitness&
08:27 dakkar joined #perl6
08:29 dmol joined #perl6
08:38 denis_boyun joined #perl6
08:39 daxim joined #perl6
08:40 ximarin joined #perl6
08:44 LWA joined #perl6
08:59 dalek rakudo/config: 36ce066 | (Tobias Leich)++ | / (3 files):
08:59 dalek rakudo/config: added perl6_ops.c and compile it to dll
08:59 dalek rakudo/config:
08:59 dalek rakudo/config: This pulls in nqp::backendconfig to get build flags to build it.
08:59 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/36ce0662ff
09:00 FROGGS .tell jnthn I dunno how right or wrong this is... you'd need config/config/config, and create a stage0
09:01 FROGGS argg
09:01 FROGGS jnthn: after that you should be able to: make dynext/libperl6_ops_moar.so - or - make dynext/libperl6_ops_moar.dll - or so
09:01 FROGGS depends to what you dll pattern is set to
09:04 FROGGS on linux it looks like this: https://gist.github.com/FROGGS/332e4ac29be58cdf3361
09:08 FROGGS hmmm, does it needs to be linked agains libmoar.a or against the 3rdparties (too)?
09:08 FROGGS against*
09:12 DarthGandalf joined #perl6
09:15 LWA joined #perl6
09:19 iSlug joined #perl6
09:29 LWA joined #perl6
09:37 dmol joined #perl6
09:39 fhelmberger joined #perl6
09:48 xinming joined #perl6
10:02 pecastro joined #perl6
10:06 denis_boyun joined #perl6
10:25 denis_boyun joined #perl6
10:48 lizmat moritz: I think the patch makes warnings not die, but the result is that warning now do not show the right location
10:48 lizmat $ perl6 -e 'sub a { +Any }; a()'
10:48 lizmat use of uninitialized value of type Any in numeric context  in sub warn at src/gen/p-CORE.setting:672
10:48 lizmat which line is: multi sub warn(*@msg) is hidden_from_backtrace {
10:52 moritz lizmat: yes, I noticed, and I tried several things to fix it. So far without success :(
10:52 moritz I guess I have to do more forensics :/
10:54 FROGGS I have noted that too that 'is hidden_from_backtrace' does not seem to work everywhere
10:54 FROGGS like it does not work in the v5 guts
10:54 moritz FROGGS: it'll most likely only work on p6 level subs
10:58 FROGGS moritz: my Perl5::Terms is perl6-level
10:59 moritz huh.
11:00 FROGGS only the grammar and actions are nqpish
11:02 LWA joined #perl6
11:08 moritz pro tip: connect your laptop to the power supply once you're in the office.
11:08 nwc10 pro tip 2: remember the charger :-)
11:08 nwc10 (no, not me, at least not today)
11:09 moritz at least the battery held from around 8:10H to at least 12:20H
11:09 moritz including several recompiles of NQP and Rakudo
11:11 pmurias joined #perl6
11:15 lizmat FROGGS: hidden_from_backtrace is only used in Backtrace.pm, line 104: next if $cand.is-hidden;          # hidden is never interesting
11:16 lizmat anything not using "next-interesting-index" will see it
11:17 moritz the default stringification of Backtrace uses it though (iirc)
11:17 lizmat indeed
11:22 rurban joined #perl6
11:22 japhb joined #perl6
11:38 iSlug joined #perl6
11:57 dansamo joined #perl6
12:54 flussence joined #perl6
13:14 PacoAir joined #perl6
13:15 denisboyun joined #perl6
13:21 jnthn afternoon, #perl6
13:22 moritz \o jnthn
13:24 FROGGS hi jnthn
13:25 FROGGS jnthn: would be cool if you scroll 4.3 hours up :O)
13:25 FROGGS ohh, something is wrong with my nose O.o
13:25 timotimo it appears to be a dot
13:26 FROGGS yeah, don't wanna appear nosy :o)
13:26 jnthn yeah, will backlog in a moment :)
13:37 bluescreen10 joined #perl6
14:01 masak interesting: https://fedoraproject.org/wiki/Changes/Python_3_as_Default
14:01 masak they're not switching *yet*, AFAICT, but they are discussing switching.
14:01 timotimo by christmas, there'll be Perl6 by default :P
14:01 moritz masak: some people on HN (?) mentioned that Arch Linux and Gentoo (or some other distro) already has python-3 as the default
14:01 masak oh! I didn't know that.
14:02 moritz masak: and since both versions can coexist happily, it's not such a huge deal for the user
14:02 timotimo except all the programs that have #/usr/bin/python started exploding
14:02 timotimo because you can't just use python2 in the shebang, because that only exists on a few distros
14:03 moritz https://news.ycombinator.com/item?id=6604447
14:03 moritz timotimo: ok, that's not nice
14:03 masak timotimo: are they actually switching the executable name? :/
14:03 timotimo yes, "python" is python3 on archlinux
14:03 masak that seems unusually irresponsible.
14:04 tadzik that's what "python3 by default" means
14:04 timotimo yeah, i've been making fun of archlinux users for a long time because of that :P
14:04 moritz well, there were times when 'perl' would have been Perl 1, and those days are past now too
14:04 moritz .oO( and in the past they must remain )
14:04 timotimo it would be nice if there was something like use v6 for python
14:04 tadzik from __future__ import perl
14:04 timotimo because the hashbang approach doesn't work properly
14:05 moritz tadzik: from __future__ import perl :ver<6> :auth<perl6.org> # :-)
14:05 masak tadzik: SyntaxError: future feature perl is not defined
14:06 tadzik so it _is_ a future feature....
14:06 tadzik sorry: so it __is__ a future feature....
14:06 masak :P
14:07 masak (python breaks out in a cold sweat, stammers, and goes "look! a penguin!")
14:09 benabik joined #perl6
14:10 masak r: role Greeting { has $.name; has $.time; method greet { ... } }; class NormalGreeting does Greeting { method greet { "good $.time, $.name" } }; class ConfusedGreeting does Greeting { method greet { "good $.name, $.time" } }; say .new( :name<frettled>, :time<morning> ).greet for NormalGreeting, ConfusedGreeting
14:10 camelia rakudo 2ce544: OUTPUT«good morning, frettled␤good frettled, morning␤»
14:10 masak oh, that's even better.
14:11 moritz masak++ # iterating over type objects to instantiate
14:13 masak well, that's why they are in value space, so you can treat them as values ;)
14:14 timotimo and now do them as lvalues! :)
14:14 moritz sure; it's still not very common to seem them used that way
14:14 moritz timotimo: you're fired :-)
14:25 tadzik :D
14:25 iSlug joined #perl6
14:26 tadzik Int .= but role { } # \o/
14:26 timotimo moritz: is tadzik fired now, too?
14:26 tadzik my class Int is the other int but role { }
14:27 timotimo it surprises me that that would work, tbh
14:28 moritz r: Int does role { method blerg { say 'OH NOEZ' } }; Int.blerg;
14:28 camelia rakudo 2ce544: OUTPUT«Cannot use 'does' operator with a type object.␤  in sub infix:<does> at src/gen/CORE.setting:16088␤  in sub infix:<does> at src/gen/CORE.setting:16070␤  in block  at /tmp/3qa388bI5N:1␤␤»
14:28 moritz \o/
14:28 moritz r: Int := Int but role { method blerg { say 'OH NOEZ' } }; Int.blerg;
14:28 camelia rakudo 2ce544: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/pyTD915uYQâ�¤Cannot use bind operator with this left-hand sideâ�¤at /tmp/pyTD915uYQ:1â�¤------> [32m role { method blerg { say 'OH NOEZ' } }[33mâ��[31m; Int.blerg;[0mâ�¤    expecting any of:â�¤      â€¦Â»
14:28 tadzik OH NOEZ
14:29 moritz of course you can still augment
14:29 timotimo so is tadzik fired for the attempt or not fired because it didn't turn out to actually work?
14:29 moritz WE ARE ALL FIRED!
14:30 masak well, that takes the pressure off things.
14:31 benabik joined #perl6
14:31 tadzik can someone be fried?
14:32 moritz fried and tasty!
14:32 * moritz is just being silly now
14:32 timotimo you're making me hungry again =o
14:32 * geekosaur is fried but not very tasty...
14:33 * masak is tasty but not very fried...
14:33 xenoterracide joined #perl6
14:36 * geekosaur would like to clarify that this does not involve any illicit or questionable substances, aside from the ones known to collect in his defective sinuses...
14:39 masak well, it's better to have defective sinuses than to have defective cosinuses.
14:39 masak or defective tangentses.
14:40 raiph joined #perl6
14:42 timotimo doctor, doctor, my sinuses seem to have become hyperbolic!
14:42 jnthn FROGGS: Nice work on the config stuff...will try it out :)
14:42 jnthn FROGGS: We do need to be able to call things in the VM...
14:42 masak timotimo: "tanh!" -- "bless you"
14:43 jnthn FROGGS: Like, the thing to register an ext op :)
14:45 tadzik masak: for a moment I wondered if that's Klingon
14:49 masak tadzik: or Dothraki.
14:49 FROGGS jnthn: is there already an ext op registering thingy?
14:50 jnthn yes
14:50 FROGGS -> #moarvm
14:51 jnthn MVM_ext_register_extop
14:51 jnthn k
14:51 rindolf joined #perl6
15:03 spider-mario joined #perl6
15:07 benabik joined #perl6
15:07 DarthGandalf joined #perl6
15:09 jnap joined #perl6
15:12 jnap1 joined #perl6
15:14 dalek rakudo/config: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in:
15:14 dalek rakudo/config: One fix needed for Win32 extops build.
15:14 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/6f20b5f2bc
15:14 dalek rakudo/unified-moar: 7b98827 | moritz++ | / (13 files):
15:14 dalek rakudo/unified-moar: Merge branch 'nom' into unified-moar
15:14 dalek rakudo/unified-moar: review: https://github.com/rakudo/rakudo/commit/7b98827dea
15:14 dalek rakudo/unified-moar: d0033ea | moritz++ | tools/build/Makefile- (3 files):
15:14 dalek rakudo/unified-moar: prepare Makefile-Moar.in for unified build
15:14 dalek rakudo/unified-moar: review: https://github.com/rakudo/rakudo/commit/d0033ea278
15:14 moritz that's a branch off of moar-support, fwiw
15:15 jnthn k
15:18 japhb__ GAH!  Incorrect line numbers in error messages kill ... time.
15:18 masak tell me about it.
15:19 * FROGGS .oO( don't write incorrect code in the first place )
15:19 * masak fondly remembers http://strangelyconsistent.org/blog/the-typo-trap-a-farcical-faq
15:19 moritz masak: incorrect line numbers in error messages kill time
15:23 masak moritz: I deserved that one.
15:23 dalek rakudo/config: ad22d73 | jnthn++ | tools/build/Makefile-Moar.in:
15:23 dalek rakudo/config: More Win32 extops build fixes.
15:23 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/ad22d7325d
15:23 masak moritz: taking idioms literally kills time, too :)
15:23 jnthn masak: I heard that the problem is that it makes you look at the wrong line, to find the error.
15:24 masak thanks for telling me.
15:25 masak now go do something useful :P
15:27 pernatiy joined #perl6
15:28 daxim_ joined #perl6
15:28 FROGGS[mobile] joined #perl6
15:33 kaare_ joined #perl6
15:34 dalek rakudo/config: d123601 | jnthn++ | / (2 files):
15:34 dalek rakudo/config: More fixes for Windows build.
15:34 dalek rakudo/config:
15:34 dalek rakudo/config: This seems to unregress stuff.
15:34 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/d123601e1b
15:35 japhb__ masak: seems he took you literally.
15:36 masak japhb__: I should try that more often :P
15:36 jnthn I literally did something useful!
15:36 * masak .oO( "seems he took you, literally" )
15:37 dalek rakudo/config: fc58712 | jnthn++ | tools/build/Makefile-Moar.in:
15:37 dalek rakudo/config: Correct Makefile to not just build extops.
15:37 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/fc587120c0
15:41 japhb__ Hmmm, after a few months of greek yogurt, anything else seems ... runny.
15:42 timotimo what's special about greek yogurt? i seem to recall seeing greek yogurt "with honey" in the supermarket
15:43 arnsholt It's thicker, mostly
15:43 arnsholt But Greek yoghurt and honey is a very tasty combo
15:43 masak ooh, gotta try that.
15:44 timotimo probably a bit like kefir?
15:44 arnsholt Honey and berries is awesome too
15:44 masak timotimo: no, kefir is runny.
15:45 daxim_ I chop up onions && parsley || dill, add salt and 花椒
15:45 timotimo hm, to me, kefir was less runny than normal yogurt
15:45 masak daxim_: om nom
15:45 masak timotimo: yeah, but you're talking about the kind you pour into a bowl.
15:45 arnsholt What's the Chinese word at the end?
15:45 timotimo oh, i do?
15:45 masak arnsholt: 花椒 :)
15:45 arnsholt =p
15:46 timotimo i'm glad there's already a pizza in the oven for me, otherwise i would be in trouble now :P
15:46 pernatiy joined #perl6
15:46 TimToady well, the characters mean "flower" and "pepper"
15:47 masak GT has it as "pepper" or "peppercorns".
15:47 TimToady beats me
15:48 arnsholt Sounds potentially reasonable
15:48 TimToady but probably peppercorns, as in "seeds come from a flower"
15:48 daxim_ http://zh.wikipedia.org/zh-cn/花椒
15:49 dalek p6-pb: dceaa31 | (Geoffrey Broadwell)++ | lib/PB/Binary/Reader.pm:
15:49 dalek p6-pb: Begin building low-level binary PB reader code
15:49 dalek p6-pb:
15:49 dalek p6-pb: Only enough to handle the very first example of Google's PB encoding docs,
15:49 dalek p6-pb: plus a decoder for zigzag-encoded integers.  Tests in next commit.
15:49 dalek p6-pb: review: https://github.com/samuraisam/p6-pb/commit/dceaa31677
15:49 dalek p6-pb: aad9d50 | (Geoffrey Broadwell)++ | t/binary-reader.t:
15:49 dalek p6-pb: Add tests for first parts of binary PB reader
15:49 dalek p6-pb: review: https://github.com/samuraisam/p6-pb/commit/aad9d50e08
15:49 daxim_ the seeds (shiny black balls) are not edible.  the prickly spice is in those dried pods
15:50 masak ooh, sichuan pepper.
15:50 masak I like how it's not actually that spicy in itself, but it's a kind of force multiplier for other spicy stuff.
15:50 TimToady http://en.wikipedia.org/wiki/Zanthoxylum
15:52 timotimo japhb__: TDD says you should commit the test cases before the code that implements them! :P
15:53 TimToady that's one way to avoid success...
15:53 jnthn timotimo: Tests are just one way to drive a design process... :P
15:54 timotimo hm, implementation driven design? :)
15:54 timotimo implementation driven testing :D
15:54 TimToady well, arguably the US ACA website is the test case, now they just have to make it work :)
15:56 jnthn timotimo: Well, no, but sometimes you come up with a design away from the keyboard and are comfortable enough with it to go straight to code to flesh it out :)
15:56 jnthn Thus why the concurrency stuff in Rakudo JVM has no spectests yet... :)
15:56 TimToady s/you/you/
15:56 jnthn ...what? :P
15:57 TimToady well, you said "you", but you meant you.
15:58 jnthn "one" :P
15:59 jnthn But using constructs like, "sometimes one does X" always feels a bit too, well, southerner to me :P
16:00 arnsholt Perhaps even stuffy?
16:00 arnsholt I try to avoid that phrasing, even in my academic writings
16:01 TimToady it's okay to say "I" occasionally, if it's true :)
16:02 TimToady ...I claim, as a Cretan...
16:04 sqirrel joined #perl6
16:10 dalek rakudo/config: fec3db7 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
16:10 dalek rakudo/config: Try adding ext-op; comment out what won't link.
16:10 dalek rakudo/config: review: https://github.com/rakudo/rakudo/commit/fec3db7d69
16:11 xenoterracide joined #perl6
16:12 dalek nqp: 31129a2 | moritz++ | tools/build/install-moar-runner.pl:
16:12 dalek nqp: install nqp-on-moar as nqp-m
16:12 dalek nqp: review: https://github.com/perl6/nqp/commit/31129a2a40
16:13 [Coke] lizmat: very likely that's the issue, aye.
16:13 dalek rakudo/unified-moar: 7df2b37 | moritz++ | / (4 files):
16:13 dalek rakudo/unified-moar: Munge ConfigureMoar.pl into Configure.pl
16:13 dalek rakudo/unified-moar: review: https://github.com/rakudo/rakudo/commit/7df2b37cba
16:15 moritz jnthn: in unified-moar, rakudo-on-moarvm builds until Actions.nqp, where it dies with "Method register_extop not found in cache, and late-bound dispatch NYI"
16:17 arnsholt Shouldn't that branch be called moar-unified? =)
16:18 moritz arnsholt: I'll get CS-linguistics consulting for my next branch before I start it
16:18 moritz :-)
16:18 arnsholt ^.^
16:19 dalek rakudo/unified-moar: 650f2e7 | moritz++ | tools/build/Makefile- (3 files):
16:19 dalek rakudo/unified-moar: [Makefile] moar*JVM makefile unification
16:19 dalek rakudo/unified-moar: review: https://github.com/rakudo/rakudo/commit/650f2e796a
16:19 TimToady joined #perl6
16:23 moritz jnthn: shall I merge unified-moar into moar-support?
16:27 benabik joined #perl6
16:28 FROGGS joined #perl6
16:33 odoacre joined #perl6
16:33 FROGGS jnthn: it seems to work, even when stripping the comment
16:36 FROGGS but this remains: Bytecode validation error at offset 866, instruction 140:
16:36 FROGGS extension op 'p6init' not registere
16:36 FROGGS d
16:37 iSlug joined #perl6
16:46 [Sno] joined #perl6
16:47 japhb__ timotimo: Two answers to your comments about tests first:
16:47 timotimo but i wasn't even being serious!
16:48 japhb__ 1) Published commit history doesn't match private commit history, which itself does not match the actual order I do work.  The reality is that I alternate code and tests until I'm satisfied, then I commit, and I build up some number of commits into a group, rebase -i for clean published history, then push.
16:49 japhb__ I know you weren't serious, but my answer is.  :-)
16:49 timotimo :)
16:50 japhb__ 2) In order to make sure git bisect doesn't find spurious failures, while at the same time not mixing implementation, tests, docs, and so on all in the same commit, my published history will generally be in the order implementation, tests, docs.
16:51 japhb__ It's something I'd been subconsciously doing for quite a while, but I more recently decided to be conscious of it, and when I'm waffling about how to commit a ball-of-stuff, decide based on the above rule of thumb.
16:52 timotimo ah, yes, that makes sense
16:54 * arnsholt just understood a Czech word, thanks to jnthn++
16:54 masak japhb__: interesting.
16:55 stevan_ hey 6ixers
16:55 stevan_ can anyone explain what is going on in the second example here: https://github.com/stevan/p5-mop-redux/issues/126
16:56 arnsholt There won't be an accessor if you declare your attribute has $!foo
16:57 arnsholt So it looks like there's a method called one further up in the hierarchy
16:57 FROGGS and it treats "one" as a junction
16:57 FROGGS ahh, or that
16:58 stevan_ wtf
16:58 moritz r: say Any.one
16:58 camelia rakudo 2ce544: OUTPUT«one()␤»
16:58 stevan_ so it is impossible to generate an accessor for a private attribute?
16:58 moritz yes, there are methods in Any for the junctions (any, all, none, one)
16:58 stevan_ or is that just not what the readonly trait does?
16:59 moritz stevan_: if it has an accessor, it's not private anymore
16:59 timotimo readonly doesn't create an accessor.
16:59 moritz read-only in the default
16:59 moritz if you want an rw-accessor, write  'has $.two is rw;'
16:59 stevan_ can you do "has $!two is rw"?
16:59 moritz stevan_: doesn't make any sense
17:00 moritz r: class A { has $!two is rw }
17:00 timotimo the ! means: "no accessor autogenerated"
17:00 camelia rakudo 2ce544: ( no output )
17:00 stevan_ ok, let me rephrase
17:00 moritz r: class A { has $!two is rw }; say A.new.two
17:00 camelia rakudo 2ce544: OUTPUT«No such method 'two' for invocant of type 'A'␤  in block  at /tmp/1ZHVwC0PL6:1␤␤»
17:00 moritz ok, it just ignores the 'is rw'
17:00 moritz I guess it could also carp at compile time
17:00 timotimo if it should, i think i can implement that :)
17:00 moritz timotimo: +1
17:00 stevan_ r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } }
17:00 camelia rakudo 2ce544: ( no output )
17:01 stevan_ but it compliled :)
17:01 stevan_ r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } } say A.new.two
17:01 timotimo need to do some compiling first, though
17:01 camelia rakudo 2ce544: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Ze9aIWrBDEâ�¤Two terms in a rowâ�¤at /tmp/Ze9aIWrBDE:1â�¤------> [32m) { $!two = $x if $x.defined; $!two } } [33mâ��[31msay A.new.two[0mâ�¤    expecting any of:â�¤        postfixâ�¤        statement …»
17:01 moritz stevan_: need a ; after the second }
17:01 timotimo oh
17:01 timotimo running perl Configure.pl in nqp gave me sh: /home/timo/build/rakudo/nqp/install/bin/parrot: No such file or directory
17:01 stevan_ r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two; } }; say A.new.two
17:01 camelia rakudo 2ce544: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤  in method two at /tmp/WNdTP24jy4:1␤  in block  at /tmp/WNdTP24jy4:1␤␤»
17:01 timotimo and then it just continued
17:01 timotimo should i be worried?
17:01 stevan_ ok, anyway
17:03 stevan_ I guess I am confused about what is rw and is readonly actually do
17:03 stevan_ I assumed they created accessors to the attribute regardless of whether it was private or public
17:03 timotimo yes, that assumption is in fact wrong
17:03 stevan_ like C# properites
17:04 stevan_ timotimo: can you clear things up for me then?
17:04 timotimo sure
17:04 stevan_ thanks :)
17:04 timotimo if you write has $.foo, you'll get an accessor generated for you
17:04 timotimo if you write nothing more, that's a readonly accessor
17:04 stevan_ a lvalue style accessor right?
17:04 timotimo yes
17:04 stevan_ k
17:04 timotimo if you write is rw after the $.foo or after the class, you'll get a read-write accessor (lvalue as well)
17:04 stevan_ k
17:05 stevan_ and is readonly is really just redundant then
17:05 stevan_ since default is readonly
17:05 timotimo yes, that's true
17:05 stevan_ so then, that explains why this doesnt work with private attributes
17:05 timotimo except, i suppose, if your class is "is rw", you can have single attributes "is readonly"
17:05 stevan_ right
17:05 stevan_ that makes sense
17:06 timotimo yes, and the .one thing is just a surprise that was derived from Any
17:06 stevan_ so, the reason this doesnt work with private attributes is because you are not really generating an accessor method so much as allowing field access
17:07 * stevan_ assumes that some kind of optimizer might remove any method call overhead or something
17:07 timotimo i'm not sure what you mean by that. what does "this" refer to in the first sentence?
17:07 stevan_ if it is even there at all
17:07 timotimo there is method call overhead, yes
17:07 stevan_ this == "has $!foo is rw"
17:07 stevan_ timotimo: but in theory you can optimize it away since it is a lvalue method that looks a lot like direct field access
17:08 timotimo yes, but you can not be sure if a given instance has the accessor you're expecting
17:08 stevan_ but thats probably digging too deep into stuff I am not really familiar with :)
17:08 japhb__ r: class A { has $!two; method two ($x?) { $!two = $x if $x.defined; $!two; } }; my $a = A.new; say $a.two; $a.two('five'); say $a.two;
17:08 camelia rakudo 2ce544: OUTPUT«(Any)␤five␤»
17:08 japhb__ stevan_: You needed $x?   ^^
17:08 timotimo you can mixin a role that overrides your accessor and then you're doing it wrong
17:08 stevan_ japhb__: right, thanks
17:09 stevan_ timotimo: yes, roles and accessors were always something that concerned me with Moose
17:09 stevan_ since in Moose an accessor can be responsible for generating many methods
17:09 timotimo even if you have something like sub foo(MyFancyClass $a) { $a.foo = 10 }; you cannot optimize, because it could be a subclass or something mixin'd or somebody could have been augmenting your classes :(
17:09 * stevan_ always wanted Moose attributes to generate a mini-role which would be applied to the class
17:09 stevan_ but too much overhead
17:10 timotimo what you can do, though, is generate a specialised version of your sub that gets executed if and only if the $a is nonspecial, and that would be checked at runtime
17:11 timotimo we don't do that yet, but then it's one optimisation that targets accessors and regular methods, because accessors could just be inlined
17:11 timotimo unfortunately, i don't know how to properly add such a check, otherwise i'd totally be down to try to do this as a QAST transformation :)
17:11 japhb__ AIUI, methods can be optimized, but not all the way to not being method calls anymore.  Accessors are just methods.  But you *can* directly access the attributes themselves from within the class or the REPR of the class.
17:12 timotimo that's true, every $!foo access is already good, perhaps even optimal.
17:13 yoleaux joined #perl6
17:13 timotimo welcome back, yoleaux!
17:15 Khisanth joined #perl6
17:16 japhb__ masak: Oh, another thing I've started being conscious of is the 50-character first line summary for git commit messages.  This one came up as an accident of tooling -- I forgot to set my EDITOR before doing a commit on an office machine, got vim by default, and wondered why part of the first line of my commit was yellow and part not.
17:16 timotimo :)
17:17 yoleaux joined #perl6
17:17 japhb__ I'd heard about the 50-character thing back when I first started using git, but forgot about it not long thereafter as I spent my brain cells learning all the *other* stuff I needed to know about git.  But seeing it recently reminded me to give a try at doing so.  I'm finding several tools are more useful now, as my summaries no longer get truncated.
17:18 japhb__ yoleaux: Is it really you?
17:18 japhb__ .ping
17:18 yoleaux There is no ping command; nor can this be construed as a response.
17:18 sqirrel joined #perl6
17:18 japhb__ Ahhh, much better ....
17:21 jnthn moritz: Sorry, went for a nap... :) Yes, can merge it...I'll pick up any fails after dinner
17:22 jnthn FROGGS: It doesn't work on Windows? Any idea why?
17:23 LWA joined #perl6
17:24 masak japhb__: yeah, the 50-char limit is challenging but highly useful.
17:25 Mouq joined #perl6
17:26 TimToady it forces one to be succinct and leave out the usual boilerplate
17:26 TimToady clarifications in the documentation of one variant of....oops
17:27 japhb__ There are so *many* variants of oops.
17:27 TimToady I know what I mean when I say "oops"; whaddyou mean when you say "oops"?
17:28 japhb__ "Object Oriented Programming Systems", of course!
17:28 japhb__ .oO( Acronym is appropriate )
17:29 jnthn stevan_: Just to make sure all is clear: the "is readonly" and "is rw" traits on an Attribute meta-object simply set whether the accessor will be rw or not. It's the . vs ! is what controls a has_accessor property on the Attribute meta-object. At class composition time (closing curly) we compose all the attributes, at which point an accessor method is added to the method table of the class.
17:29 jnthn stevan_: And the rw property on Attribute - settable through the trait - controls the kind of accessor that is genreated.
17:29 japhb__ ... assuming there wasn't a method of that name already.
17:30 jnthn stevan_: If you don't generate an accessor then those traits still set things on Attribute. It's just ultimately useless to have done so... :)
17:30 kurahaupo joined #perl6
17:30 jnthn japhb__: Correct, modulo that.
17:30 jnthn And also there's:
17:30 jnthn r: class A { has $.x; has @.x; }
17:30 camelia rakudo 2ce544: OUTPUT«===SORRY!===␤Two or more attributes declared that both want an accessor method 'x'␤»
17:31 jnthn Which we put in after somebody confuzzled themselves. :)
17:31 japhb__ heh
17:31 japhb__ CDD = Confusion Driven Development
17:32 japhb__ .oO( This is the point at which I normally expect TimToady to comment that's his normal style ;-)  )
17:32 TimToady I guess the actual quote is: "I know what I did when I say 'oops'; what did you do when you said 'oops'?"
17:32 * TimToady was confused...
17:33 TimToady (Bill Cosby, if you're wondering, or even if you're not.)
17:34 timotimo rakudo just swapdeath'd my computer :(
17:35 japhb__ The usual solution to that is to swapoff and let it get killed.
17:35 japhb__ These days swap ain't what it used to be.
17:35 stevan_ jnthn: thanks for the clarification
17:36 japhb__ .oO( Just how many orders of magnitude slower do you want your program to run before you consider it "no longer running"? )
17:36 Rotwang joined #perl6
17:42 benabik The cool people use compressed memory instead of swap.  ;-)
17:43 timotimo japhb__: swapoff is only ever useful if you can reach a terminal in time
17:44 timotimo also, yeah, i'd like to try compressed memory. how do i set that up? do i need a restart or something?
17:44 japhb__ I'm reminded of my single favorite FreeBSD feature from back in the day -- reserving a few percent of system resources for whoever sat at console.  Saved our butts multiple times when someone hozed up the department dev server.
17:45 timotimo oh, that's nice
17:45 timotimo you can get the same behavior with the cgroups thing, IIRC
17:48 dalek Heuristic branch merge: pushed 45 commits to rakudo/moar-support by moritz
17:48 timotimo jnthn: +1 on compile-time error for "has $!foo is rw" and "has $!foo is ro"?
17:50 moritz fwiw I find swapoff very useful. I simply let my desktop and laptop machines not use any swap whatsoever
17:50 moritz if the memory consumption is 100%, something's wrong, and I want the processes to die fast instead of swapping for half and hour
17:50 diakopter * too
17:51 timotimo yes, i've removed swap from my fstab now
17:55 jnthn timotimo: For some reason, warning feels more natural to me here. "Useless use of ..." style
17:57 arnsholt I'm starting to see why NQP's grammars have different arglists for <subrule($args)> and <subrule: $args>
17:57 lue Hello world o/
17:57 yoleaux 22 Oct 2013 06:49Z <jnthn> lue: I need your github name :)
17:58 lue yoleaux!
17:58 yoleaux lue!
17:59 nwc10 .ask yoleaux what year is it?
17:59 yoleaux nwc10: Thanks for the message.
17:59 timotimo jnthn: can do. anything i have to do to make it suppressed by # OK or something?
17:59 timotimo or can i just warn inside the trait_mod for rw and ro?
18:05 japhb I like the yoleaux! greet-back.  Very nice.
18:07 arnsholt jnthn: Any ideas what's needed to use MAIN's arglist when parsing the args in a <subrule: $args> call?
18:08 arnsholt I've tried sort of mimicing what Rakudo does, but it doesn't work
18:11 sqirrel joined #perl6
18:15 timotimo jnthn: do you think it's a sensible idea to try a QAST-level transformation of subs/methods that checks if a typed argument is "pure" and then specialises the body of the sub/method based upon that verified assumption?
18:15 Mouq .u ␤
18:15 yoleaux U+2424 SYMBOL FOR NEWLINE [So] (␤)
18:16 Mouq .u NEWLINE
18:16 yoleaux U+2424 SYMBOL FOR NEWLINE [So] (␤)
18:16 yoleaux U+2B92 NEWLINE LEFT [So] (⮒)
18:16 yoleaux U+2B93 NEWLINE RIGHT [So] (⮓)
18:16 dansamo joined #perl6
18:18 Mouq .botsnack
18:18 yoleaux :D
18:18 diakopter .botsuicide
18:19 jnthn arnsholt: Do we not override the assertion rule in NQP's regex thing too?
18:19 arnsholt Nope
18:20 arnsholt Or, the assertion rule is overriden
18:20 arnsholt But the args case with colon uses the default QRegex::P6Regex::Grammar.arglist
18:20 timotimo that was straightforward :)
18:21 arnsholt Just plonking in <arglist=.LANG('MAIN','arglist'> (which is what we do with parens) doesn't work
18:21 arnsholt Possibly because it doesn't know to consider > a terminator?
18:21 jnthn arnsholt: ah...yeah...
18:22 jnthn I think I remember having to teach Rakudo's grammar somewhere about that.
18:22 jnthn Yeah, see token terminator:sym<ang>
18:22 arnsholt Yeah. I tried to dup that, but Rakudo's arglist rule is a bit more complex, so it didn't quite take
18:23 arnsholt Not sure why
18:39 Mouq n: use Test; ok 'a , b ,c' ~~ /:s^ <alpha>+ % \, $/, "wut?"
18:39 camelia niecza v24-98-g473bd20: OUTPUT«ok 1 - wut?␤»
18:39 Mouq (From S05-metasyntax/repeat.t)
18:39 Mouq Isn't this wrong?
18:41 Mouq I mean, pretty sure. It should work for 'a, b, c '
18:41 Mouq But 'a ,b , c' is <alpha> +% \,
18:42 jnthn arnsholt: No, I can't guess why. Maybe push what you did to a branch.
18:42 jnthn arnsholt: And I can take a peek alter
18:42 jnthn *later
18:48 timotimo https://github.com/rakudo/rakudo/pull/218 <- "does this need to be spectested?"
18:51 dalek nqp: 7109d14 | moritz++ | tools/lib/NQP/Configure.pm:
18:51 dalek nqp: import NQP::Configure changes from Rakudo
18:51 dalek nqp: review: https://github.com/perl6/nqp/commit/7109d144a4
18:51 SamuraiJack joined #perl6
18:52 LWA joined #perl6
18:55 lizmat timotimo: I would say yes, but warnings atm are sort of borked  :-(
18:55 arnsholt jnthn: Found it, I think. infixstopper needs to know about it, so that the > doesn't get gobbled as an infix
18:56 LWA joined #perl6
18:56 dalek rakudo/nom: 7378b2a | (Timo Paulssen)++ | src/core/traits.pm:
18:56 dalek rakudo/nom: warn on is rw/readonly on private attributes
18:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7378b2ae51
18:56 dalek rakudo/nom: 4e1c185 | lizmat++ | src/core/traits.pm:
18:56 dalek rakudo/nom: Merge pull request #218 from timo/warn_useless_private_attribute_traits
18:56 dalek rakudo/nom:
18:56 dalek rakudo/nom: warn on is rw/readonly on private attributes
18:56 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4e1c185f16
18:57 lizmat afk again&
19:06 pernatiy joined #perl6
19:16 benabik nqp-j script is built with a prefix including the DESTDIR.
19:16 benabik That's not so useful.
19:26 dalek joined #perl6
19:27 dalek Heuristic branch merge: pushed 86 commits to nqp/config by jnthn
19:28 dalek nqp/config: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files):
19:28 dalek nqp/config: Updated MoarVM stage0 for config info.
19:28 dalek nqp/config: review: https://github.com/perl6/nqp/commit/bbc47f83f3
19:29 dalek nqp: 6437a71 | moritz++ | / (4 files):
19:29 dalek nqp: [Configure] implement --gen-moar
19:29 dalek nqp: review: https://github.com/perl6/nqp/commit/6437a71c7b
19:32 timotimo jnthn: http://irclog.perlgeek.de/perl6/2013-10-24#i_7759786 - very bad idea or just bad idea?
19:34 jnthn What do we mean by "pure" here?
19:35 timotimo "not derived and having no mixins"
19:36 timotimo pure as in "exactly the thing the signature talks about"
19:36 jnthn How does that help us?
19:36 jnthn As in, what can we do with that knowledge that we couldn't otherwise?
19:36 timotimo method calls could be inlined
19:36 jnthn oh
19:37 jnthn I think we may want to leave that to the VM.
19:37 timotimo (i'd probably only get far enough to resolve method calls at compile time, though)
19:37 timotimo mhm, OK
19:37 jnthn It may even already be happening on JVM.
19:37 timotimo oh. well, that's good then
19:37 timotimo i have no idea how to verify that assumption
19:38 dalek nqp: 85b85cf | moritz++ | tools/ (2 files):
19:38 dalek nqp: [Configure] fix double quoting fail
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/85b85cfeb7
19:38 jnthn argh!
19:38 dalek nqp: 9a1455c | (Tobias Leich)++ | src/vm/moar/ (2 files):
19:38 dalek nqp: wire up and use nqp::backendconfig
19:38 dalek nqp:
19:38 dalek nqp: This is just lacking a fresh stage0 to work.
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/9a1455cc85
19:38 dalek nqp: edc5d88 | jnthn++ | / (56 files):
19:38 dalek nqp: Merge branch 'master' into config
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/edc5d882a2
19:38 dalek nqp: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files):
19:38 dalek nqp: Updated MoarVM stage0 for config info.
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/bbc47f83f3
19:38 dalek nqp: 031cc32 | jnthn++ | src/vm/moar/ (11 files):
19:38 dalek nqp: Merge branch 'config'
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/031cc32309
19:38 dalek nqp: 77f6891 | jnthn++ | / (4 files):
19:38 dalek nqp: Merge branch 'master' of github.com:/perl6/nqp
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/77f6891e1a
19:38 dalek nqp: 29fc96c | jnthn++ | tools/ (2 files):
19:38 dalek nqp: Merge branch 'master' of github.com:/perl6/nqp
19:38 dalek nqp: review: https://github.com/perl6/nqp/commit/29fc96cc3c
19:39 jnthn Only took 3 attempts to push thanks to moritz++
19:39 timotimo %)
19:41 dalek nqp: 94b174b | (Arne Skjærholt)++ | src/NQP/ (2 files):
19:41 dalek nqp: Use consistent grammar to parse subrule arguments.
19:41 dalek nqp:
19:41 dalek nqp: This fixes the problem where <subrule(...)> could take any kind of arguments,
19:41 dalek nqp: while <subrule: ...> only accepted a list of strings (and didn't interpolate
19:41 dalek nqp: variables in double-quoted strings).
19:41 dalek nqp:
19:41 dalek nqp: Closes #105.
19:41 dalek nqp: review: https://github.com/perl6/nqp/commit/94b174b14c
19:41 jnthn arnsholt++ \o/
19:42 arnsholt Adding --rxtrace helped narrow it down
19:42 arnsholt (Massive log, but thankfully only the very last bits were relevant)
19:43 arnsholt I'd like to nail down the term:sym<return> bug as well, but that's for some other night
19:45 Rotwang joined #perl6
19:47 moritz diakopter: looks like we need to change the infrastructure for building nqp and rakudo on host07 again :-)
19:47 masak to detect whether an object is of an exact type (for inlining, etc), you'd generally need some kind of closed-universe assumption, I guess.
19:47 masak as in "it is known that no-one has tampered with this object".
19:48 moritz if you want do it at compile time, yes
19:48 timotimo i had hoped it would be enough to do something like a single integer check or something ...
19:48 jnthn Well, I think I'd rather we see how well runtime-inlining those in the VM does
19:48 moritz timotimo: with .WHAT.WHICH maybe
19:48 timotimo burn what witch?
19:51 moritz all of them!
19:53 jnthn Gee, this config merge into moar-support ain't fun...
19:53 timotimo i'll burn that witch when i've crossed it
19:54 masak timotimo: sure, whatever floats your witch.
19:55 lowpor03 joined #perl6
19:56 Mouq rnp: say '§«¶' ~~ /<:Punctuation>*/
19:56 camelia niecza v24-98-g473bd20: OUTPUT«「§«¶」␤␤»
19:56 camelia ..rakudo 2ce544: OUTPUT«「」␤␤»
19:56 camelia ..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤    unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120717/blib6/pugs/perl5/lib';␤    eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤**…»
19:57 Mouq rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).say
19:57 timotimo afkbbl
19:58 camelia niecza v24-98-g473bd20: OUTPUT«(timeout)»
19:58 camelia ..rakudo 2ce544: OUTPUT«! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { } ¡ « · » ¿␤»
19:58 Mouq rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).join.say
19:58 camelia niecza v24-98-g473bd20: OUTPUT«(timeout)»
19:58 camelia ..rakudo 2ce544: OUTPUT«!"#%&'()*,-./:;?@[\]_{}¡«·»¿␤»
19:59 dalek rakudo/moar-support: 36ce066 | (Tobias Leich)++ | / (3 files):
19:59 dalek rakudo/moar-support: added perl6_ops.c and compile it to dll
19:59 dalek rakudo/moar-support:
19:59 dalek rakudo/moar-support: This pulls in nqp::backendconfig to get build flags to build it.
19:59 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/36ce0662ff
19:59 dalek rakudo/moar-support: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in:
19:59 dalek rakudo/moar-support: One fix needed for Win32 extops build.
19:59 dalek joined #perl6
20:00 * arnsholt &
20:02 Mouq r: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<punct>/).join.say
20:02 camelia rakudo 2ce544: OUTPUT«!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ¡¢£¤¥¦§¨©«¬­®¯°±²³´¶·¸¹»¼½¾¿×÷␤»
20:03 jnthn That's more than just ascii... :)
20:04 * Mouq is just testing the tests
20:19 LlamaRider joined #perl6
20:19 k1lldash9 joined #perl6
20:23 cognominal joined #perl6
20:36 jnap1 left #perl6
20:38 panchiniak joined #perl6
20:42 woolfy left #perl6
20:42 woolfy joined #perl6
20:49 jnap joined #perl6
20:50 panchiniak left #perl6
20:51 timotimo perl6 has poor support for codepages!
20:53 ajr joined #perl6
20:57 xenoterracide joined #perl6
21:10 * hoelzro saw a timotimo lookalike on the streets today
21:10 hoelzro I could've sworn it was you!
21:14 zwut00 joined #perl6
21:16 timotimo oh
21:16 timotimo i'm glad other people decide to look the way i do. that must mean i look good! :P
21:17 masak at least two people can't be wrong!
21:18 timotimo that's right!
21:18 hoelzro ;)
21:18 timotimo but get this: hoelzro isn't the first one to see a timotimo lookalike! and i'm kind of sort of certain that those two timotimo lookalikes are probably not the same person
21:18 timotimo so it's 3 already!
21:23 tadzik you looked a bit familiar to me as well...
21:25 dalek rakudo/moar-support: 0ee6fa8 | jnthn++ | / (2 files):
21:25 dalek rakudo/moar-support: Get moar.dll symbols visible in extops on Win32.
21:25 dalek rakudo/moar-support:
21:25 dalek rakudo/moar-support: This has all the elegance of a manatee, but seems to work.
21:25 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/0ee6fa8bc0
21:25 dalek rakudo/moar-support: ab490e1 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
21:25 dalek rakudo/moar-support: Uncomment extop registration of p6init.
21:25 dalek rakudo/moar-support:
21:25 dalek rakudo/moar-support: Builds on Win32 now. Hopefully it still builds elsewhere too.
21:25 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/ab490e1db0
21:29 dalek nqp: ad5b106 | jnthn++ | src/NQP/ (2 files):
21:29 dalek nqp: Support --vmlibs on MoarVM.
21:29 dalek nqp: review: https://github.com/perl6/nqp/commit/ad5b1061d1
21:29 japhb Awww, don't be so harsh on manatees!
21:29 diakopter I thought my manatee was pretty elegant..
21:36 jnthn Last time I showed a photo of one to somebody, they asked if I was showing them the head or the butt :P
21:36 diakopter is that a manatee in your pocket or are you just happy to see me
21:39 dalek rakudo/moar-support: 4f6d59a | jnthn++ | src/vm/moar/ops/perl6_ops.c:
21:39 dalek rakudo/moar-support: Make sure to export extops init symbol.
21:39 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/4f6d59a7ad
21:39 dalek rakudo/moar-support: 0738b78 | jnthn++ | tools/build/Makefile-Moar.in:
21:39 dalek rakudo/moar-support: Add --vmlibs for compiling BOOTSTRAP.
21:39 dalek rakudo/moar-support:
21:39 dalek rakudo/moar-support: Gets us further into handling the huge BEGIN block.
21:39 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/0738b783cd
21:40 denis_boyun joined #perl6
21:42 jnthn Cannot iterate this
21:42 jnthn add_parent
21:42 jnthn ...that's a curious failure mode...
21:43 diakopter sounds like blanked object
21:47 jnthn Curious if anybody else can reproduce
21:48 jnthn Note that if you do so on Windows, it certainly needs a --shared in the MoarVM Configure
21:56 Mouq Heh.
21:56 Mouq r: /<.-[ab]>/
21:56 camelia rakudo 2ce544: ( no output )
21:56 Mouq r: say 'd' ~~ /<.-[ab]>/
21:56 camelia rakudo 2ce544: OUTPUT«「d」␤␤»
21:56 Mouq std: /<.-[ab]>/
21:56 camelia std 082981d: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Unable to parse metachar at /tmp/2jQfpwSDRQ line 1:â�¤------> [32m/[33mâ��[31m<.-[ab]>/[0mâ�¤Couldn't find final '>'; gave up at /tmp/2jQfpwSDRQ line 1:â�¤------> [32m/<.[33mâ��[31m-[ab]>/[0mâ�¤    expecting any of:â�¤ ass…»
22:01 pecastro joined #perl6
22:02 japhb__ Wanted: a way to decode *part* of a Blob to a string as a single without a laborious subbuf copy as an intermediate step.  The PB code is going to want to pull lots of big strings using (offset, length) pairs out of a multi-megabyte buffer, and it would be nice to reduce copying to the absolute minimum, since Blobs are immutable.
22:02 japhb__ *single operation
22:04 Mouq n: say 'zabc def' ~~ m/:s abc def/ # Niecza is wrong here to my knowledge
22:04 camelia niecza v24-98-g473bd20: OUTPUT«False␤»
22:05 japhb__ Right now it has to do a subbuf per PB "length-delimited" field, then another copy for each decoded str (and is there another copy when boxing to Str?).  It would be nice to kill at least the subbuf copies, but really anything more than 1 is a waste.
22:07 TimToady Mouq: yes, niecza is Not Quite Right there
22:08 timotimo niecza, quiet! ... right?
22:08 diakopter japhb__: well, if Blobs on Moar end up using the same repr as strings.... o_O that would be transparent once the string trees strings are fixed/re-enabled... o_O
22:08 TimToady :s is not supposed to be "SIGOK"
22:09 jnthn diakopter: They don't 'cus they ain't NFG... :)
22:09 jnthn Blob is a VMArray underneath
22:09 jnthn Though decode on MoarVM gives the underlying storage directly to the decoder
22:09 jnthn Without any copying.
22:09 jnthn So we "just" need a way to convey offsets.
22:10 TimToady have to be careful not to leak synthetic chars to the outside world though
22:10 diakopter globals!
22:10 jnthn Maybe .decode('utf-8', $start, $length)
22:10 jnthn Where the second two are optional
22:11 japhb__ +1
22:12 japhb__ Before anyone asks: I think if you provide an offset that is in the middle of a utf-8 encoding group, that falls directly under DIHWIDT, and the encoder is free to blow up.
22:12 benabik joined #perl6
22:12 japhb__ (With an error, not a SEGV, of course.)
22:13 timotimo hm. had we already figured out why canonpath was so slow btw? or rather why s/.../.../ is so slow? (or rather s{...} = ... in this case)
22:14 japhb__ timotimo: Not to my knowledge.  I only have tuits to battle one deep problem a week, and I already spent it for two weeks on "Why does NFS hate Panda?", plus finding out that it *was* canonpath and s{}= that were the actual performance problem.  :-)
22:15 timotimo yes yes
22:15 timotimo did you see the huge performance difference between dir("/foo/bar") and dir("/foo/bar/")?
22:16 timotimo (not sure if it was as huge before i added the "fastpath")
22:16 Mouq nqp: say("NULL --> ",nqp::codepointfromname("NULL"))
22:16 japhb__ Hmm, I seem to recall something in my profiling/benchmarking that pointed that way, but I didn't chase it further than canonpath and its contents.
22:16 camelia nqp-jvm, nqp-parrot: OUTPUT«NULL --> 0␤»
22:16 camelia ..nqp-moarvm: OUTPUT«(signal SEGV)»
22:16 japhb__ Yeah, I did all my measurements before you created the fastpath
22:17 timotimo ./perl6 -e 'dir("/etc")'  0,90s user 0,29s system 99% cpu 1,200 total
22:17 timotimo ./perl6 -e 'dir("/etc/")'  3,27s user 0,36s system 99% cpu 3,659 total
22:18 japhb__ That does seem suspiciously close to your fastpath performance boost.
22:18 timotimo may be. let me recompile
22:22 japhb__ Also, is there any op that can convert between num32<->int32 and num64<->int64 *by reinterpreting the bits*, as you could do with a C union?
22:23 timotimo oof :(
22:24 japhb__ .oO( The other advantage of this PB work is that I'm going to find use cases that point to missing bits of packed/native data handling. )
22:24 timotimo it turns out my fastpath optimisation makes the fast case slower and doesn't seem to change the slow case
22:24 japhb__ ?!?
22:24 timotimo no, that's not true. it doesn't change either
22:25 timotimo so the check for "already canonicalized!" is super fast, but so is not doing any of the substitutions
22:25 japhb__ Ah, so matchfails are fast here?
22:25 timotimo it seems so, yes.
22:25 jnthn japhb__: In theory, pack/unpack...
22:26 japhb__ jnthn: Already checked.  They conspicously don't handle nums.  :)
22:26 jnthn japhb__: In practice, I know they're only partially implemented.
22:26 jnthn ah, ok.
22:29 japhb__ Basically, when reading a message, I see a string of 'tag + wire_type => data' pairs, where the wire_type indicates length of the data (or says to pull one more number from the buffer, which has the data length).  Once I've got a some subbuf of bytes, I then need to be able to interpret those bytes as in the table at https://developers.google.com/protocol-buffers/docs/encoding#structure
22:29 japhb__ "Here's 64 bits.  Waddya want it to be?"
22:30 japhb__ s/got a some/got a/
22:31 jnthn japhb__: Can you write me a gist of the pack/unpack directives you'd most like?
22:31 jnthn japhb__: I can take a look at adding them.
22:32 japhb__ Thank you!
22:32 jnthn Not got much in the way of $dayjob for a week and a bit now :)
22:32 japhb__ Yes, I can do that, but it may be delayed a bit because my kids are visiting the campus for a kids' Halloween thing here.
22:33 japhb__ Ooh, nice.
22:33 jnthn I won't get to it tonight, anyway
22:33 jnthn But tomorrow maybe :)
22:33 japhb__ fairy nuff.
22:33 timotimo it seems like a lot of time is actually spent in the setelems call in ListIter
22:33 jnthn That's another thing I should look at... :)
22:34 timotimo the 100_000 elems thing?
22:34 jnthn yeah.
22:34 timotimo mhm
22:35 BenGoldberg joined #perl6
22:36 timotimo remember that 3.7 seconds it spent doing the dir thing?
22:36 timotimo if i turn down the initial value to 1_000 instead of 100_000 it only takes 2.8 seconds
22:38 timotimo so, perhaps the substitution operation has a for in it that's eager and creates huge lists or something ...
22:38 TimToady can't a subblob just be a reference into the original blob without copying?
22:39 jnthn Not easily at the moment.
22:39 jnthn A Blob is a fairly low-level native array at the moment.
22:39 timotimo how hard could a copy-on-write be ...
22:40 jnthn timotimo: You never write a blob... :)
22:40 timotimo that makes it even easier :)
22:40 jnthn I think we can come up with something though
22:40 jnthn Hm, I wonder about a VMArrayView REPR... :)
22:40 jnthn Since type and REPR are independent anyways... :)
22:40 timotimo yeah, that ought to do it
22:40 jnthn It'd still be a Blob and you'd only know if you went .REPR-ing )))
22:41 jnthn REPR poly for the win
22:42 japhb__ jnthn: Yeah, I deeply want to be able to look at (a subset of) the low-level array underneath a Blob using different type mapping, because this is basically required for using/implementing modern 3D APIs.
22:42 jnthn japhb__: *nod*
22:42 TimToady poly want a repr, awk!
22:42 jnthn japhb__: Yeah, we need to do better at this stuff. :)
22:42 japhb__ :-)
22:42 timotimo oh, OperlnGL6
22:43 japhb__ You laugh.  I've done the crazy before.
22:43 japhb__ "Oh I know, I'll make an OpenGL binding for PIR!"
22:52 TimToady (timeout)Now you have 1,000,000,000,0...
22:55 lue .oO(Null PMC upon attempt to access $parrotRestingAnimation)
23:12 jnap joined #perl6
23:14 dmol joined #perl6
23:15 obra joined #perl6
23:19 zwut00 left #perl6
23:23 ajr joined #perl6
23:37 benabik joined #perl6
23:41 jnthn 'night o/
23:47 pdurbin joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo