»ö« 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.
[Coke] Files.getAttribute(Paths.get(filename), "unix:dev")).longValue(); - what's this returning? 00:03
(from STAT_PLATFORM_DEV)
diakopter [Coke]: device or something? 00:11
:)
perldoc.perl.org/functions/stat.html 00:12
00:12 Psyche^_ joined
[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
[Coke] nqp-j: say(nqp::stat("/dev/zero",nqp::const::STAT_PLATFORM_DEV)); 00:12
camelia nqp-jvm: OUTPUT«5␤»
diakopter nqp-m: say(nqp::stat("/dev/null",nqp::const::STAT_PLATFORM_DEV)); 00:13
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter *cry*
[Coke] You're welcome. ;)
diakopter
.oO( "BUT AT LEAST IT FAILED FAST!" )
nqp-m: say(nqp::stat("/dev/random",nqp::const::STAT_PLATFORM_DEV)); 00:14
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(nqp::stat("/dev",nqp::const::STAT_PLATFORM_DEV));
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(nqp::stat("/",nqp::const::STAT_PLATFORM_DEV));
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter sigh.
Mouq nqp-m: nqp::const::STAT_PLATFORM_DEV; 00:15
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter lolz.
Mouq Not SEGVing there may help
00:16 Psyche^ left
diakopter nqp-m: nqp::const::STAT_PLATFORM_DEV; 00:16
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: nqp::const::STAT_PLATFORM_FOOOOOOOOOOOOOOOOO;
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
Mouq nqp-m: nqp::const::halp; 00:17
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
Mouq nqp-m: nqp::const::CCLASS_ALPHABETIC 00:18
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHABETIC) 00:22
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHA)
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
Mouq diakopter: I don't think camelia supports recursion yet :) 00:24
d^_^b hey everyone 00:25
Mouq Do I get a prize if I made my rakudo build die in stage parse with: 'maximum recursion depth exceeded'? :D 00:26
Hey d^_^b. Your name is very hard to type 00:27
d^_^b Mouq: really? I never type usernames
I just use tab-key.
d^
Mouq Woah
Mouq has only started using irssi recently 00:28
d^_^b irssi ftw
diakopter Mouq: yes, you get a prize 00:36
your commit bit gets doubled
00:37 BenGoldberg left 00:40 BenGoldberg joined
Mouq r: say 0b01 * 2 % 1 00:42
camelia rakudo 2ce544: OUTPUT«0␤»
Mouq r: say 0b01 * 2 % True
camelia rakudo 2ce544: OUTPUT«0␤»
TimToady r: say 0b01 * 2 %% 1 00:43
camelia rakudo 2ce544: OUTPUT«True␤»
Mouq TimToady: It was supposed to be a bad pun on getting my commit bit doubled 00:44
diakopter: Or wait, did you mean for the rakudo repo? 00:45
TimToady was just checking to make sure your commit bit was divisible by 1, or your pun would have been invalid :) 00:46
Mouq r: say 2.5 %% 1 00:47
camelia rakudo 2ce544: OUTPUT«False␤»
diakopter r: say 0 %% 0
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␤␤»
diakopter r: say 0 %% 1
camelia rakudo 2ce544: OUTPUT«True␤»
TimToady r: say 2.5 %% 0.5
camelia rakudo 2ce544: OUTPUT«True␤»
diakopter r: say 2 * pi %% pi 00:48
camelia rakudo 2ce544: OUTPUT«True␤»
diakopter o_O
r: say 22034592837465 * pi %% pi
TimToady that uses *long* division
camelia rakudo 2ce544: OUTPUT«True␤»
TimToady really really long
Mouq rn: say 2 * pi %% pi
camelia rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«True␤»
Mouq rn: say (2 * pi).DUMP 00:49
TimToady rn: say pi.WHAT
camelia rakudo 2ce544: OUTPUT«(Num)␤»
..niecza v24-98-g473bd20: OUTPUT«Num()␤»
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) ␤…»
..rakudo 2ce544: OUTPUT«6.28318530717959e0␤»
TimToady thinks pi.WHAT should say (Irrat) :)
diakopter nqp-m: say(nqp::mod_n(3.14159,3.14159)) 00:50
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter *whimper*
geekosaur (Wtf)
diakopter starts to get gun-shy
TimToady nqp-m: say(nqp::mod_n(3,3))
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
TimToady nqp-m: say(nqp::mod_n(3e0,3e0)) 00:51
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
Mouq nqp-m: say(nqp::mod_I(3,3))
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: say(nqp::mod_i(1,1))
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter _-_-
TimToady wonders if this qualifies as a foolish consistency 00:52
it being close to halloween and all
diakopter it really likes the seggies today
TimToady maybe it needs more segments
diakopter nqp-m: nqp::segment() 00:53
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter *headdesk*
TimToady nqp-m: nqp
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
geekosaur well, it does seem to be consistent...
TimToady nqp-m: say("(signal SEGV)") 00:54
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter no newline!
TimToady it's just a semipredicate problem :)
nqp-m: print("(signal SEGV)")
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
TimToady happy now?
Mouq nqp-m: 1 00:55
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m:
nqp-m: ;
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
diakopter nqp-m: die
camelia nqp-moarvm: OUTPUT«(signal SEGV)»
TimToady maybe "needs more segments" means "needs one segment" :P
00:56 jferrero joined, jferrero left, jferrero joined 00:57 REPLeffect left 00:58 REPLeffect joined 01:23 sizz joined 01:33 xinming_ left 01:34 xinming joined 01:41 jnap left
TimToady this segment of #perl6 brought to you by the number ∅ and by the letters π and ε 01:43
colomon ∅ is not a number, is it? 01:44
TimToady well, church numerals and such... 01:45
colomon eh, I suppose.
diakopter I'm a number
TimToady goes to play a number of drums and to do some cymbalic computation 01:47
afk &
diakopter er, oops, still at office
colomon I am not a number. I am a person. 01:48
geekosaur I'm a number... if you Gödel encode my genome and epigenome 01:51
(which admittedly is a bit like FFTing your cat) 01:54
01:55 wbill joined
colomon … are you implying your genome is an expression in Peano arithmetic? 01:56
BenGoldberg Musical genes?
nqp: 1 01:58
camelia ( no output )
..nqp-moarvm: OUTPUT«(signal SEGV)»
colomon ouch
diakopter nqp-m isn't running much of anything today 01:59
benabik IANaN 02:10
dalek Heuristic branch merge: pushed 91 commits to nqp/stdsigspace by Mouq 02:12
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:13
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:21
s/me/him/ I suppose 02:22
s/they're/that person is/ too 02:23
I guess I could email [email@hidden.address] 02:25
[Coke] I don't think there's anyone on channel who would get the physical mail.
I can check the spreadsheet to see if you were added... 02:26
no string matching "mou"
(last updated jul 10) 02:27
Mouq == Alexander Moquin
[Coke] no string matching "moq"
Mouq Okay, thank you [Coke]
[Coke] so, need to ping someone at the tpf itself, closer to the mailbox (snail or e)
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:32
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␤␤»
BenGoldberg Hmm, nevermind... 02:35
02:35 grondilu joined
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␤»
..rakudo 2ce544: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6␤»
BenGoldberg Now, that's a bug
There's a workaround, but it shouldn't be necessary: 02:39
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]
camelia rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6␤»
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:40
Mouq [Coke]: Okay, sounds good. I can't find them online right now, but I'll for them again at some point. 02:42
02:48 grondilu left
Mouq *look :p 02:48
[Coke] nqp: say(nqp::stat("barf",nqp::const::STAT_PLATFORM_BLOCKSIZE))
camelia nqp-parrot: OUTPUT«stat failed: No such file or directory␤current instr.: '' pc 40 ((file unknown):39) (/tmp/n9gB72jW8c:1)␤»
..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…»
..nqp-moarvm: OUTPUT«(signal SEGV)»
[Coke] nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKSIZE)) 02:49
camelia nqp-parrot: OUTPUT«4096␤»
[Coke] nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS))
camelia nqp-parrot: OUTPUT«8␤»
[Coke] nqp-j: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS))
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
dalek p: 2c2d3bc | coke++ | docs/ops.markdown:
first pass at stat() docs.

Pulled solely from the JVM impl.
02:56
rl6-roast-data: ceb900f | coke++ | / (4 files):
today (automated commit)
[Coke] lizmat: rakudo.jvm is aborted 45 tests in re: deprecations. 02:57
(there are several other various failures that need addressing)
my attempt at an indented list failed for stat(). markdown help appreciated. 02:58
github.com/perl6/nqp/blob/master/d...kdown#stat 02:59
Mouq [Coke]: I don't think you can, but how does this work for you: gist.github.com/Mouq/7130628 03:04
Of course, you could use html somehow, but I don't know how well Github deals with that 03:05
03:07 panchiniak left 03:11 preflex left 03:13 preflex joined, ChanServ sets mode: +v preflex 03:20 Mouq left 03:26 uvtc joined
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:30
[Coke], not sure how closely github's flavor of markdown follows the 4-space rule though. 03:32
03:37 preflex_ joined, ChanServ sets mode: +v preflex_, preflex left, preflex_ is now known as preflex
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
03:38 fridim_ joined 03:39 dansamo joined
uvtc An opportunity for languages wishing to compete with PHP, IMO: news.ycombinator.com/item?id=6582012 . 03:41
03:43 xenoterracide left 03:45 dansamo left
uvtc compete for users, I mean. 03:50
03:50 uvtc left 04:03 wbill left 04:04 wbill joined 04:09 fridim_ left 04:22 GlitchMr joined 04:24 [Sno] left 04:30 GlitchMr left 04:33 GlitchMr joined 04:49 BenGoldberg left
moritz \o 04:56
lizmat: seems to be an error in some exception handling code 05:08
use of uninitialized value of type Any in string contextCannot look up attributes in a type object 05:09
current instr.: 'print_exception' pc 135403 (src/gen/p-CORE.setting.pir:57754) (src/gen/p-CORE.setting:10667)
r: say ~Any
camelia rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/4M1TtjQoXz:1␤␤␤»
moritz hm, not that one.
05:09 xinming left
moritz oh, it happens in Array stringification 05:11
my @array = <a b c>; my @other; @other[1] = @array; say ~@other 05:12
dies
05:14 xinming joined
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"])␤»
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␤»
moritz r: my @a; @a[1] = <a b c >; say ~@a
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 05:42 SamuraiJack joined, dansamo joined 05:49 Rotwang joined 05:57 kaleem joined 06:22 darutoko joined 06:35 xenoterracide joined
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
moritz good morning masak 06:55
arnsholt o/ 07:02
masak good moritz, morning. 07:03
and good \o, arnsholt. 07:04
07:04 Rotwang left 07:05 GlitchMr left 07:07 GlitchMr joined 07:08 FROGGS joined
moritz diakopter++ seems to be right that after the branch landed, some compiler flags are missing 07:08
I have to $work now; if anybody wants to investigate, the CFLAGS line is much shorter after the merge 07:13
might just be a matter of propagating the information inside Configure.pl 07:14
dalek p: e336a06 | moritz++ | tools/build/Makefile-Parrot.in:
[parrot] fix race condition in the build

the dyncall ops depend on the basic nqp ops; this failed reliably for me with make -j3
07:15
07:17 dansamo left 07:18 dansamo joined 07:20 LWA joined, iSlug joined
frettled Good masak, everyone! :) 07:25
masak good frettled, (morning+antenoon)/2. 07:26
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␤»
masak \o/
dalek kudo/nom: 78f9616 | moritz++ | tools/lib/NQP/Configure.pm:
[Configure] fix parsing of config values

  = should not be allowed inside option names, because it is the delimiter
07:33
moritz I'm a bit scared that some rakudo features seem to rely on the compiler flags that parrot considers "warning" flags 07:34
frettled masak: lovely :D 07:35
masak: with a little bit of work, I'm sure Perl 6 will become as verbose as Java. *G,D&R* 07:36
07:42 denis_boyun left
arnsholt moritz: Which features is that? 07:42
It's worth noting that Parrot's cflags are set on a policy of "as many warnings as possible"
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 ␤»
lizmat hmmm
masak hmmm indeed. 07:45
are the values all returned before they're deleted? does .elems stay the same the whole time? 07:46
intuitively, I'd say "yes" to both of those.
07:47 sqirrel joined
moritz arnsholt: stuff like -falign-functions=16 07:49
07:49 iSlug left
arnsholt Why is that a warning? 07:51
moritz huh, but re-adding it didn't help :(
masak .oO( too late, you already said "no warnings"! ) :P 07:52
lizmat [Coke]: re: deprecations testing, I guess jakudo doesn't have properly functioning Backtrace ? 07:53
07:56 zakharyas joined
arnsholt hates fighting with Python and encodings 08:01
tadzik hates fighting
arnsholt Troo, troo
tadzik unless it's the usual "the man above wins" on the grass outside the bar :D
masak .oO( the man above always wins ) 08:03
lizmat nuked parrot/nqp/install directories and did a rebuild, to no avail :-( 08:06
how come camelia doesn't suffer the same problem? is that running jakudo nowadays ?
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␤»
moritz lizmat: it's still on a pre-branch revision 08:09
lizmat $ git describe
2013.10-75-g6ee9539
moritz lizmat: I might have a "fix"
that is, I don't understand why it's necessary
but it helps with the test (autoref.t) that I've been looking at 08:10
dalek kudo/nom: c37dfc7 | moritz++ | src/core/Backtrace.pm:
guard against undefined code object in backtraces

I have no idea why this is necessary, but it seems to fix a lot of broken spectests
08:11
lizmat testing 08:12
feels like this is fixing the symptom rather than the cause :-)
moritz agreed
that's why I said "fix" 08:13
lizmat masak would say workaround :-)
masak hehe 08:15
no, "fix" is right here :) as in "make working". 08:16
lizmat builds ok, primary test now works, spectesting now 08:17
08:18 iSlug joined 08:19 donaldh left
jnthn morning o/ 08:19
08:21 LWA left 08:22 LWA joined
FROGGS o/ 08:23
08:23 donaldh joined
lizmat o/ jnthn FROGGS ! 08:24
FROGGS hi lizmat :o)
lizmat one fail in spectest now: t/spec/integration/error-reporting.t not ok 11 - warning reports correct line number and subroutine 08:26
fitness&
08:27 dakkar joined 08:29 dmol joined 08:38 denis_boyun joined 08:39 daxim joined 08:40 ximarin joined 08:43 LWA left 08:44 LWA joined
dalek kudo/config: 36ce066 | (Tobias Leich)++ | / (3 files):
added perl6_ops.c and compile it to dll

This pulls in nqp::backendconfig to get build flags to build it.
08:59
FROGGS .tell jnthn I dunno how right or wrong this is... you'd need config/config/config, and create a stage0 09:00
argg 09:01
jnthn: after that you should be able to: make dynext/libperl6_ops_moar.so - or - make dynext/libperl6_ops_moar.dll - or so
depends to what you dll pattern is set to
09:02 LWA left
FROGGS on linux it looks like this: gist.github.com/FROGGS/332e4ac29be58cdf3361 09:04
hmmm, does it needs to be linked agains libmoar.a or against the 3rdparties (too)? 09:08
against*
09:12 DarthGandalf joined 09:15 LWA joined 09:19 iSlug left, iSlug joined 09:24 ximarin left 09:28 LWA left 09:29 LWA joined 09:33 xenoterracide left 09:37 dmol left, dmol joined 09:39 fhelmberger joined 09:41 denis_boyun left 09:44 xinming left 09:48 xinming joined 10:02 pecastro joined 10:06 denis_boyun joined 10:11 iSlug left 10:12 denis_boyun left 10:25 denis_boyun joined 10:26 wbill left 10:35 denis_boyun left
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
$ perl6 -e 'sub a { +Any }; a()'
use of uninitialized value of type Any in numeric context in sub warn at src/gen/p-CORE.setting:672
which line is: multi sub warn(*@msg) is hidden_from_backtrace {
moritz lizmat: yes, I noticed, and I tried several things to fix it. So far without success :( 10:52
I guess I have to do more forensics :/
FROGGS I have noted that too that 'is hidden_from_backtrace' does not seem to work everywhere 10:54
like it does not work in the v5 guts
moritz FROGGS: it'll most likely only work on p6 level subs
10:55 LWA left
FROGGS moritz: my Perl5::Terms is perl6-level 10:58
moritz huh. 10:59
FROGGS only the grammar and actions are nqpish 11:00
11:02 LWA joined
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 :-)
(no, not me, at least not today)
moritz at least the battery held from around 8:10H to at least 12:20H 11:09
including several recompiles of NQP and Rakudo
11:11 pmurias joined
lizmat FROGGS: hidden_from_backtrace is only used in Backtrace.pm, line 104: next if $cand.is-hidden; # hidden is never interesting 11:15
anything not using "next-interesting-index" will see it 11:16
moritz the default stringification of Backtrace uses it though (iirc) 11:17
lizmat indeed
11:22 rurban joined, japhb joined 11:23 pmurias left 11:38 iSlug joined 11:55 dansamo left 11:57 dansamo joined 12:10 benabik left 12:35 kaleem left 12:54 flussence joined 13:14 PacoAir joined 13:15 denisboyun joined
jnthn afternoon, #perl6 13:21
moritz \o jnthn 13:22
FROGGS hi jnthn 13:24
jnthn: would be cool if you scroll 4.3 hours up :O) 13:25
ohh, something is wrong with my nose O.o
timotimo it appears to be a dot
FROGGS yeah, don't wanna appear nosy :o) 13:26
jnthn yeah, will backlog in a moment :)
13:37 bluescreen10 joined
masak interesting: fedoraproject.org/wiki/Changes/Pyt...as_Default 14:01
they're not switching *yet*, AFAICT, but they are discussing switching.
timotimo by christmas, there'll be Perl6 by default :P
moritz masak: some people on HN (?) mentioned that Arch Linux and Gentoo (or some other distro) already has python-3 as the default
masak oh! I didn't know that.
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
because you can't just use python2 in the shebang, because that only exists on a few distros
moritz news.ycombinator.com/item?id=6604447 14:03
timotimo: ok, that's not nice
masak timotimo: are they actually switching the executable name? :/
timotimo yes, "python" is python3 on archlinux
masak that seems unusually irresponsible.
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
moritz well, there were times when 'perl' would have been Perl 1, and those days are past now too
.oO( and in the past they must remain )
timotimo it would be nice if there was something like use v6 for python
tadzik from __future__ import perl
timotimo because the hashbang approach doesn't work properly
moritz tadzik: from __future__ import perl :ver<6> :auth<perl6.org> # :-) 14:05
masak tadzik: SyntaxError: future feature perl is not defined
tadzik so it _is_ a future feature.... 14:06
sorry: so it __is__ a future feature....
masak :P
(python breaks out in a cold sweat, stammers, and goes "look! a penguin!") 14:07
14:09 benabik joined
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␤»
masak oh, that's even better.
moritz masak++ # iterating over type objects to instantiate 14:11
masak well, that's why they are in value space, so you can treat them as values ;) 14:13
timotimo and now do them as lvalues! :) 14:14
moritz sure; it's still not very common to seem them used that way
timotimo: you're fired :-)
14:16 sqirrel left 14:25 iSlug left
tadzik :D 14:25
14:25 iSlug joined
tadzik Int .= but role { } # \o/ 14:26
timotimo moritz: is tadzik fired now, too?
tadzik my class Int is the other int but role { }
timotimo it surprises me that that would work, tbh 14:27
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␤␤»
moritz \o/
r: Int := Int but role { method blerg { say 'OH NOEZ' } }; Int.blerg;
camelia rakudo 2ce544: OUTPUT«===SORRY!=== Error while compiling /tmp/pyTD915uYQ␤Cannot use bind operator with this left-hand side␤at /tmp/pyTD915uYQ:1␤------> role { method blerg { say 'OH NOEZ' } }⏏; Int.blerg;␤ expecting any of:␤ …»
tadzik OH NOEZ
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?
moritz WE ARE ALL FIRED!
14:30 benabik left
masak well, that takes the pressure off things. 14:30
14:31 benabik joined
tadzik can someone be fried? 14:31
moritz fried and tasty! 14:32
moritz is just being silly now
timotimo you're making me hungry again =o
geekosaur is fried but not very tasty...
masak is tasty but not very fried... 14:33
14:33 xenoterracide joined
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:36
masak well, it's better to have defective sinuses than to have defective cosinuses. 14:39
or defective tangentses.
14:39 xenoterracide left 14:40 raiph joined
timotimo doctor, doctor, my sinuses seem to have become hyperbolic! 14:42
jnthn FROGGS: Nice work on the config stuff...will try it out :)
FROGGS: We do need to be able to call things in the VM...
masak timotimo: "tanh!" -- "bless you"
jnthn FROGGS: Like, the thing to register an ext op :) 14:43
tadzik masak: for a moment I wondered if that's Klingon 14:45
14:49 DarthGandalf left
masak tadzik: or Dothraki. 14:49
FROGGS jnthn: is there already an ext op registering thingy?
jnthn yes 14:50
FROGGS -> #moarvm
jnthn MVM_ext_register_extop 14:51
k
14:51 rindolf joined 14:54 bluescreen10 left 14:56 benabik left 15:03 spider-mario joined 15:07 benabik joined, DarthGandalf joined 15:09 jnap joined 15:12 jnap1 joined 15:13 jnap left
dalek kudo/config: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in:
One fix needed for Win32 extops build.
15:14
kudo/unified-moar: 7b98827 | moritz++ | / (13 files):
Merge branch 'nom' into unified-moar
kudo/unified-moar: d0033ea | moritz++ | tools/build/Makefile- (3 files):
prepare Makefile-Moar.in for unified build
moritz that's a branch off of moar-support, fwiw
jnthn k 15:15
japhb__ GAH! Incorrect line numbers in error messages kill ... time. 15:18
masak tell me about it.
FROGGS .oO( don't write incorrect code in the first place ) 15:19
masak fondly remembers strangelyconsistent.org/blog/the-ty...rcical-faq
moritz masak: incorrect line numbers in error messages kill time
masak moritz: I deserved that one. 15:23
dalek kudo/config: ad22d73 | jnthn++ | tools/build/Makefile-Moar.in:
More Win32 extops build fixes.
masak moritz: taking idioms literally kills time, too :)
jnthn masak: I heard that the problem is that it makes you look at the wrong line, to find the error.
masak thanks for telling me. 15:24
now go do something useful :P 15:25
15:27 pernatiy joined, [Sno] left 15:28 daxim_ joined, daxim left, FROGGS[mobile] joined 15:30 FROGGS left 15:31 iSlug left 15:33 kaare_ joined
dalek kudo/config: d123601 | jnthn++ | / (2 files):
More fixes for Windows build.

This seems to unregress stuff.
15:34
japhb__ masak: seems he took you literally. 15:35
masak japhb__: I should try that more often :P 15:36
jnthn I literally did something useful!
masak .oO( "seems he took you, literally" )
dalek kudo/config: fc58712 | jnthn++ | tools/build/Makefile-Moar.in:
Correct Makefile to not just build extops.
15:37
15:40 pernatiy left
japhb__ Hmmm, after a few months of greek yogurt, anything else seems ... runny. 15:41
15:42 zakharyas left
timotimo what's special about greek yogurt? i seem to recall seeing greek yogurt "with honey" in the supermarket 15:42
arnsholt It's thicker, mostly 15:43
But Greek yoghurt and honey is a very tasty combo
masak ooh, gotta try that.
timotimo probably a bit like kefir? 15:44
arnsholt Honey and berries is awesome too
masak timotimo: no, kefir is runny.
daxim_ I chop up onions && parsley || dill, add salt and 花椒 15:45
timotimo hm, to me, kefir was less runny than normal yogurt
masak daxim_: om nom
timotimo: yeah, but you're talking about the kind you pour into a bowl.
arnsholt What's the Chinese word at the end?
timotimo oh, i do?
masak arnsholt: 花椒 :)
arnsholt =p
timotimo i'm glad there's already a pizza in the oven for me, otherwise i would be in trouble now :P 15:46
15:46 pernatiy joined
TimToady well, the characters mean "flower" and "pepper" 15:46
masak GT has it as "pepper" or "peppercorns". 15:47
TimToady beats me
arnsholt Sounds potentially reasonable 15:48
TimToady but probably peppercorns, as in "seeds come from a flower"
daxim_ zh.wikipedia.org/zh-cn/花椒
dalek -pb: dceaa31 | (Geoffrey Broadwell)++ | lib/PB/Binary/Reader.pm:
Begin building low-level binary PB reader code

Only enough to handle the very first example of Google's PB encoding docs, plus a decoder for zigzag-encoded integers. Tests in next commit.
15:49
-pb: aad9d50 | (Geoffrey Broadwell)++ | t/binary-reader.t:
Add tests for first parts of binary PB reader
daxim_ the seeds (shiny black balls) are not edible. the prickly spice is in those dried pods
masak ooh, sichuan pepper. 15:50
I like how it's not actually that spicy in itself, but it's a kind of force multiplier for other spicy stuff.
TimToady en.wikipedia.org/wiki/Zanthoxylum
timotimo japhb__: TDD says you should commit the test cases before the code that implements them! :P 15:52
TimToady that's one way to avoid success... 15:53
jnthn timotimo: Tests are just one way to drive a design process... :P
timotimo hm, implementation driven design? :) 15:54
implementation driven testing :D
TimToady well, arguably the US ACA website is the test case, now they just have to make it work :)
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
Thus why the concurrency stuff in Rakudo JVM has no spectests yet... :)
TimToady s/you/you/
jnthn ...what? :P
TimToady well, you said "you", but you meant you. 15:57
jnthn "one" :P 15:58
But using constructs like, "sometimes one does X" always feels a bit too, well, southerner to me :P 15:59
arnsholt Perhaps even stuffy? 16:00
I try to avoid that phrasing, even in my academic writings
TimToady it's okay to say "I" occasionally, if it's true :) 16:01
16:01 daxim_ left
TimToady ...I claim, as a Cretan... 16:02
16:04 sqirrel joined 16:06 raiph left
dalek kudo/config: fec3db7 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
Try adding ext-op; comment out what won't link.
16:10
16:10 donaldh left 16:11 xenoterracide joined 16:12 dakkar left
dalek p: 31129a2 | moritz++ | tools/build/install-moar-runner.pl:
install nqp-on-moar as nqp-m
16:12
[Coke] lizmat: very likely that's the issue, aye. 16:13
dalek kudo/unified-moar: 7df2b37 | moritz++ | / (4 files):
Munge ConfigureMoar.pl into Configure.pl
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:15
arnsholt Shouldn't that branch be called moar-unified? =) 16:17
moritz arnsholt: I'll get CS-linguistics consulting for my next branch before I start it 16:18
:-)
arnsholt ^.^
dalek kudo/unified-moar: 650f2e7 | moritz++ | tools/build/Makefile- (3 files):
[Makefile] moar*JVM makefile unification
16:19
16:19 TimToady joined 16:22 benabik left
moritz jnthn: shall I merge unified-moar into moar-support? 16:23
16:27 benabik joined 16:28 FROGGS joined 16:33 odoacre joined
FROGGS jnthn: it seems to work, even when stripping the comment 16:33
16:36 fhelmberger left
FROGGS but this remains: Bytecode validation error at offset 866, instruction 140: 16:36
extension op 'p6init' not registere
d
16:37 iSlug joined 16:46 [Sno] joined
japhb__ timotimo: Two answers to your comments about tests first: 16:47
16:47 sqirrel left
timotimo but i wasn't even being serious! 16:47
16:48 pernatiy left
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:48
I know you weren't serious, but my answer is. :-) 16:49
timotimo :)
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:50
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:51
timotimo ah, yes, that makes sense 16:52
arnsholt just understood a Czech word, thanks to jnthn++ 16:54
masak japhb__: interesting.
stevan_ hey 6ixers 16:55
can anyone explain what is going on in the second example here: github.com/stevan/p5-mop-redux/issues/126
arnsholt There won't be an accessor if you declare your attribute has $!foo 16:56
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
ahh, or that
stevan_ wtf 16:58
moritz r: say Any.one
camelia rakudo 2ce544: OUTPUT«one()␤»
stevan_ so it is impossible to generate an accessor for a private attribute?
moritz yes, there are methods in Any for the junctions (any, all, none, one)
stevan_ or is that just not what the readonly trait does?
moritz stevan_: if it has an accessor, it's not private anymore 16:59
timotimo readonly doesn't create an accessor.
moritz read-only in the default
if you want an rw-accessor, write 'has $.two is rw;'
stevan_ can you do "has $!two is rw"?
moritz stevan_: doesn't make any sense
r: class A { has $!two is rw } 17:00
timotimo the ! means: "no accessor autogenerated"
camelia ( no output )
stevan_ ok, let me rephrase
moritz r: class A { has $!two is rw }; say A.new.two
camelia rakudo 2ce544: OUTPUT«No such method 'two' for invocant of type 'A'␤ in block at /tmp/1ZHVwC0PL6:1␤␤»
moritz ok, it just ignores the 'is rw'
I guess it could also carp at compile time
timotimo if it should, i think i can implement that :)
moritz timotimo: +1
stevan_ r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } }
camelia ( no output )
stevan_ but it compliled :) 17:01
r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } } say A.new.two
timotimo need to do some compiling first, though
camelia rakudo 2ce544: OUTPUT«===SORRY!=== Error while compiling /tmp/Ze9aIWrBDE␤Two terms in a row␤at /tmp/Ze9aIWrBDE:1␤------> ) { $!two = $x if $x.defined; $!two } } ⏏say A.new.two␤ expecting any of:␤ postfix␤ statement …»
moritz stevan_: need a ; after the second }
timotimo oh
running perl Configure.pl in nqp gave me sh: /home/timo/build/rakudo/nqp/install/bin/parrot: No such file or directory
stevan_ r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two; } }; say A.new.two
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␤␤»
timotimo and then it just continued
should i be worried?
stevan_ ok, anyway
I guess I am confused about what is rw and is readonly actually do 17:03
I assumed they created accessors to the attribute regardless of whether it was private or public
timotimo yes, that assumption is in fact wrong
stevan_ like C# properites
timotimo: can you clear things up for me then? 17:04
timotimo sure
stevan_ thanks :)
timotimo if you write has $.foo, you'll get an accessor generated for you
if you write nothing more, that's a readonly accessor
stevan_ a lvalue style accessor right?
timotimo yes
stevan_ k
timotimo if you write is rw after the $.foo or after the class, you'll get a read-write accessor (lvalue as well)
stevan_ k
and is readonly is really just redundant then 17:05
since default is readonly
timotimo yes, that's true
stevan_ so then, that explains why this doesnt work with private attributes
timotimo except, i suppose, if your class is "is rw", you can have single attributes "is readonly"
stevan_ right
that makes sense
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
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?
stevan_ if it is even there at all
timotimo there is method call overhead, yes
stevan_ this == "has $!foo is rw"
17:07 spider-mario left
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:07
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 :)
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;
camelia rakudo 2ce544: OUTPUT«(Any)␤five␤»
japhb__ stevan_: You needed $x? ^^
timotimo you can mixin a role that overrides your accessor and then you're doing it wrong
stevan_ japhb__: right, thanks
timotimo: yes, roles and accessors were always something that concerned me with Moose 17:09
since in Moose an accessor can be responsible for generating many methods
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 :(
stevan_ always wanted Moose attributes to generate a mini-role which would be applied to the class
but too much overhead
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:10
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
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 :)
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.
timotimo that's true, every $!foo access is already good, perhaps even optimal. 17:12
17:13 yoleaux joined, ChanServ sets mode: +v yoleaux
timotimo welcome back, yoleaux! 17:13
17:14 Khisanth left 17:15 Khisanth joined
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 left, yoleaux joined, ChanServ sets mode: +v yoleaux
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:17
yoleaux: Is it really you? 17:18
.ping
yoleaux There is no ping command; nor can this be construed as a response.
17:18 sqirrel joined
japhb__ Ahhh, much better .... 17:18
jnthn moritz: Sorry, went for a nap... :) Yes, can merge it...I'll pick up any fails after dinner 17:21
FROGGS: It doesn't work on Windows? Any idea why? 17:22
17:22 LWA left 17:23 LWA joined
masak japhb__: yeah, the 50-char limit is challenging but highly useful. 17:24
17:25 Mouq joined
TimToady it forces one to be succinct and leave out the usual boilerplate 17:26
clarifications in the documentation of one variant of....oops
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"?
japhb__ "Object Oriented Programming Systems", of course! 17:28
.oO( Acronym is appropriate )
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
stevan_: And the rw property on Attribute - settable through the trait - controls the kind of accessor that is genreated.
japhb__ ... assuming there wasn't a method of that name already.
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
17:30 kurahaupo joined
jnthn japhb__: Correct, modulo that. 17:30
And also there's:
r: class A { has $.x; has @.x; }
camelia rakudo 2ce544: OUTPUT«===SORRY!===␤Two or more attributes declared that both want an accessor method 'x'␤»
jnthn Which we put in after somebody confuzzled themselves. :) 17:31
japhb__ heh
CDD = Confusion Driven Development
.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'?"
TimToady was confused...
(Bill Cosby, if you're wondering, or even if you're not.) 17:33
timotimo rakudo just swapdeath'd my computer :( 17:34
17:35 iSlug left
japhb__ The usual solution to that is to swapoff and let it get killed. 17:35
These days swap ain't what it used to be.
stevan_ jnthn: thanks for the clarification
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
17:36 Rotwang joined 17:39 sqirrel left
benabik The cool people use compressed memory instead of swap. ;-) 17:42
timotimo japhb__: swapoff is only ever useful if you can reach a terminal in time 17:43
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.
timotimo oh, that's nice 17:45
you can get the same behavior with the cgroups thing, IIRC
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"?
moritz fwiw I find swapoff very useful. I simply let my desktop and laptop machines not use any swap whatsoever 17:50
if the memory consumption is 100%, something's wrong, and I want the processes to die fast instead of swapping for half and hour
diakopter * too
timotimo yes, i've removed swap from my fstab now 17:51
jnthn timotimo: For some reason, warning feels more natural to me here. "Useless use of ..." style 17:55
17:56 kurahaupo left
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/
yoleaux 22 Oct 2013 06:49Z <jnthn> lue: I need your github name :)
lue yoleaux! 17:58
yoleaux lue!
nwc10 .ask yoleaux what year is it? 17:59
yoleaux nwc10: Thanks for the message.
timotimo jnthn: can do. anything i have to do to make it suppressed by # OK or something?
or can i just warn inside the trait_mod for rw and ro?
japhb I like the yoleaux! greet-back. Very nice. 18:05
arnsholt jnthn: Any ideas what's needed to use MAIN's arglist when parsing the args in a <subrule: $args> call? 18:07
I've tried sort of mimicing what Rakudo does, but it doesn't work 18:08
18:11 dansamo left, sqirrel joined
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 ␤
yoleaux U+2424 SYMBOL FOR NEWLINE [So] (␤)
Mouq .u NEWLINE 18:16
yoleaux U+2424 SYMBOL FOR NEWLINE [So] (␤)
U+2B92 NEWLINE LEFT [So] (⮒)
U+2B93 NEWLINE RIGHT [So] (⮓)
18:16 dansamo joined
Mouq .botsnack 18:18
yoleaux :D
diakopter .botsuicide
jnthn arnsholt: Do we not override the assertion rule in NQP's regex thing too? 18:19
arnsholt Nope
Or, the assertion rule is overriden 18:20
But the args case with colon uses the default QRegex::P6Regex::Grammar.arglist
18:20 sqirrel left
timotimo that was straightforward :) 18:20
arnsholt Just plonking in <arglist=.LANG('MAIN','arglist'> (which is what we do with parens) doesn't work 18:21
Possibly because it doesn't know to consider > a terminator?
jnthn arnsholt: ah...yeah...
I think I remember having to teach Rakudo's grammar somewhere about that. 18:22
Yeah, see token terminator:sym<ang>
arnsholt Yeah. I tried to dup that, but Rakudo's arglist rule is a bit more complex, so it didn't quite take
Not sure why 18:23
18:28 rindolf left
Mouq n: use Test; ok 'a , b ,c' ~~ /:s^ <alpha>+ % \, $/, "wut?" 18:39
camelia niecza v24-98-g473bd20: OUTPUT«ok 1 - wut?␤»
Mouq (From S05-metasyntax/repeat.t)
Isn't this wrong?
18:40 darutoko left
Mouq I mean, pretty sure. It should work for 'a, b, c ' 18:41
But 'a ,b , c' is <alpha> +% \,
jnthn arnsholt: No, I can't guess why. Maybe push what you did to a branch. 18:42
arnsholt: And I can take a peek alter
*later
18:43 SamuraiJack left
timotimo github.com/rakudo/rakudo/pull/218 <- "does this need to be spectested?" 18:48
dalek p: 7109d14 | moritz++ | tools/lib/NQP/Configure.pm:
import NQP::Configure changes from Rakudo
18:51
18:51 SamuraiJack joined, SamuraiJack left 18:52 LWA left, LWA joined
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 left, LWA joined
dalek kudo/nom: 7378b2a | (Timo Paulssen)++ | src/core/traits.pm:
warn on is rw/readonly on private attributes
18:56
kudo/nom: 4e1c185 | lizmat++ | src/core/traits.pm:
Merge pull request #218 from timo/warn_useless_private_attribute_traits

warn on is rw/readonly on private attributes
lizmat afk again& 18:57
18:57 xenoterracide left 19:06 pernatiy joined
benabik nqp-j script is built with a prefix including the DESTDIR. 19:16
That's not so useful.
19:26 dalek left, dalek joined, ChanServ sets mode: +v dalek
dalek Heuristic branch merge: pushed 86 commits to nqp/config by jnthn 19:27
p/config: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files):
Updated MoarVM stage0 for config info.
19:28
p: 6437a71 | moritz++ | / (4 files):
[Configure] implement --gen-moar
19:29
19:29 Rotwang left
timotimo jnthn: irclog.perlgeek.de/perl6/2013-10-24#i_7759786 - very bad idea or just bad idea? 19:32
jnthn What do we mean by "pure" here? 19:34
19:35 dansamo left
timotimo "not derived and having no mixins" 19:35
pure as in "exactly the thing the signature talks about" 19:36
jnthn How does that help us?
As in, what can we do with that knowledge that we couldn't otherwise?
timotimo method calls could be inlined
jnthn oh
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)
mhm, OK
jnthn It may even already be happening on JVM.
timotimo oh. well, that's good then
i have no idea how to verify that assumption
dalek p: 85b85cf | moritz++ | tools/ (2 files):
[Configure] fix double quoting fail
19:38
jnthn argh!
dalek p: 9a1455c | (Tobias Leich)++ | src/vm/moar/ (2 files):
wire up and use nqp::backendconfig

This is just lacking a fresh stage0 to work.
p: edc5d88 | jnthn++ | / (56 files):
Merge branch 'master' into config
p: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files):
Updated MoarVM stage0 for config info.
p: 031cc32 | jnthn++ | src/vm/moar/ (11 files):
Merge branch 'config'
p: 77f6891 | jnthn++ | / (4 files):
Merge branch 'master' of github.com:/perl6/nqp
p: 29fc96c | jnthn++ | tools/ (2 files):
Merge branch 'master' of github.com:/perl6/nqp
jnthn Only took 3 attempts to push thanks to moritz++ 19:39
timotimo %)
dalek p: 94b174b | (Arne Skjærholt)++ | src/NQP/ (2 files):
Use consistent grammar to parse subrule arguments.

This fixes the problem where <subrule(...)> could take any kind of arguments, while <subrule: ...> only accepted a list of strings (and didn't interpolate variables in double-quoted strings).
Closes #105.
19:41
jnthn arnsholt++ \o/
arnsholt Adding --rxtrace helped narrow it down 19:42
(Massive log, but thankfully only the very last bits were relevant)
I'd like to nail down the term:sym<return> bug as well, but that's for some other night 19:43
19:45 Rotwang joined
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.
as in "it is known that no-one has tampered with this object".
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 ...
jnthn Well, I think I'd rather we see how well runtime-inlining those in the VM does
moritz timotimo: with .WHAT.WHICH maybe
timotimo burn what witch?
moritz all of them! 19:51
jnthn Gee, this config merge into moar-support ain't fun... 19:53
timotimo i'll burn that witch when i've crossed it
masak timotimo: sure, whatever floats your witch. 19:54
19:55 lowpor03 joined
Mouq rnp: say '§«¶' ~~ /<:Punctuation>*/ 19:56
camelia niecza v24-98-g473bd20: OUTPUT«「§«¶」␤␤»
..rakudo 2ce544: OUTPUT«「」␤␤»
..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'␤"␤**…»
Mouq rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).say 19:57
timotimo afkbbl
camelia niecza v24-98-g473bd20: OUTPUT«(timeout)» 19:58
..rakudo 2ce544: OUTPUT«! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { } ¡ « · » ¿␤»
Mouq rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).join.say
camelia niecza v24-98-g473bd20: OUTPUT«(timeout)»
..rakudo 2ce544: OUTPUT«!"#%&'()*,-./:;?@[\]_{}¡«·»¿␤»
dalek kudo/moar-support: 36ce066 | (Tobias Leich)++ | / (3 files):
added perl6_ops.c and compile it to dll

This pulls in nqp::backendconfig to get build flags to build it.
19:59
kudo/moar-support: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in:
One fix needed for Win32 extops build.

Get moar.dll symbols visible in extops on Win32.
This has all the elegance of a manatee, but seems to work.
19:59 dalek left, dalek joined, ChanServ sets mode: +v dalek
arnsholt & 20:00
Mouq r: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<punct>/).join.say 20:02
camelia rakudo 2ce544: OUTPUT«!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ¡¢£¤¥¦§¨©«¬­®¯°±²³´¶·¸¹»¼½¾¿×÷␤»
jnthn That's more than just ascii... :) 20:03
Mouq is just testing the tests 20:04
20:19 LlamaRider joined, k1lldash9 joined 20:23 cognominal left, cognominal joined 20:32 LlamaRider left 20:36 jnap1 left 20:38 panchiniak joined 20:42 woolfy joined 20:47 benabik left 20:49 jnap joined 20:50 jnap left, panchiniak left
timotimo perl6 has poor support for codepages! 20:51
20:53 lowpor03 left, ajr joined 20:54 denisboyun left, ajr is now known as Guest85158, Guest85158 is now known as ajr_ 20:57 xenoterracide joined
hoelzro saw a timotimo lookalike on the streets today 21:10
I could've sworn it was you!
21:14 zwut00 joined, kaare_ left
timotimo oh 21:16
21:16 pecastro left
timotimo i'm glad other people decide to look the way i do. that must mean i look good! :P 21:16
masak at least two people can't be wrong! 21:17
timotimo that's right! 21:18
hoelzro ;)
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
so it's 3 already!
21:22 Rotwang left
tadzik you looked a bit familiar to me as well... 21:23
kudo/moar-support: ab490e1 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
Uncomment extop registration of p6init.

Builds on Win32 now. Hopefully it still builds elsewhere too.
p: ad5b106 | jnthn++ | src/NQP/ (2 files):
Support --vmlibs on MoarVM.
21:29
japhb Awww, don't be so harsh on manatees!
diakopter I thought my manatee was pretty elegant..
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
dalek kudo/moar-support: 4f6d59a | jnthn++ | src/vm/moar/ops/perl6_ops.c:
Make sure to export extops init symbol.
21:39
kudo/moar-support: 0738b78 | jnthn++ | tools/build/Makefile-Moar.in:
Add --vmlibs for compiling BOOTSTRAP.

Gets us further into handling the huge BEGIN block.
21:40 denis_boyun joined 21:41 PacoAir left
jnthn Cannot iterate this 21:42
add_parent
...that's a curious failure mode...
diakopter sounds like blanked object 21:43
jnthn Curious if anybody else can reproduce 21:47
Note that if you do so on Windows, it certainly needs a --shared in the MoarVM Configure 21:48
Mouq Heh. 21:56
r: /<.-[ab]>/
camelia ( no output )
Mouq r: say 'd' ~~ /<.-[ab]>/
camelia rakudo 2ce544: OUTPUT«「d」␤␤»
Mouq std: /<.-[ab]>/
camelia std 082981d: OUTPUT«===SORRY!===␤Unable to parse metachar at /tmp/2jQfpwSDRQ line 1:␤------> /⏏<.-[ab]>/␤Couldn't find final '>'; gave up at /tmp/2jQfpwSDRQ line 1:␤------> /<.⏏-[ab]>/␤ expecting any of:␤ ass…»
22:01 pecastro joined
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
*single operation
22:03 denis_boyun left
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␤»
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:05
TimToady Mouq: yes, niecza is Not Quite Right there 22:07
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
TimToady :s is not supposed to be "SIGOK"
jnthn diakopter: They don't 'cus they ain't NFG... :) 22:09
Blob is a VMArray underneath
Though decode on MoarVM gives the underlying storage directly to the decoder
Without any copying.
So we "just" need a way to convey offsets.
TimToady have to be careful not to leak synthetic chars to the outside world though 22:10
diakopter globals!
jnthn Maybe .decode('utf-8', $start, $length)
Where the second two are optional
japhb__ +1 22:11
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
22:12 benabik joined
japhb__ (With an error, not a SEGV, of course.) 22:12
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:13
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:14
timotimo yes yes 22:15
did you see the huge performance difference between dir("/foo/bar") and dir("/foo/bar/")?
(not sure if it was as huge before i added the "fastpath") 22:16
Mouq nqp: say("NULL --> ",nqp::codepointfromname("NULL"))
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.
camelia nqp-jvm, nqp-parrot: OUTPUT«NULL --> 0␤»
..nqp-moarvm: OUTPUT«(signal SEGV)»
japhb__ Yeah, I did all my measurements before you created the fastpath
timotimo ./perl6 -e 'dir("/etc")' 0,90s user 0,29s system 99% cpu 1,200 total 22:17
./perl6 -e 'dir("/etc/")' 3,27s user 0,36s system 99% cpu 3,659 total
japhb__ That does seem suspiciously close to your fastpath performance boost. 22:18
timotimo may be. let me recompile
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:22
timotimo oof :( 22:23
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
japhb__ ?!?
timotimo no, that's not true. it doesn't change either
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?
timotimo it seems so, yes.
jnthn japhb__: In theory, pack/unpack...
japhb__ jnthn: Already checked. They conspicously don't handle nums. :) 22:26
jnthn japhb__: In practice, I know they're only partially implemented.
ah, ok.
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 developers.google.com/protocol-buf...#structure 22:29
"Here's 64 bits. Waddya want it to be?"
s/got a some/got a/ 22:30
jnthn japhb__: Can you write me a gist of the pack/unpack directives you'd most like? 22:31
japhb__: I can take a look at adding them.
japhb__ Thank you! 22:32
jnthn Not got much in the way of $dayjob for a week and a bit now :)
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.
Ooh, nice. 22:33
jnthn I won't get to it tonight, anyway
But tomorrow maybe :)
japhb__ fairy nuff.
timotimo it seems like a lot of time is actually spent in the setelems call in ListIter
jnthn That's another thing I should look at... :)
timotimo the 100_000 elems thing? 22:34
jnthn yeah.
timotimo mhm
22:35 BenGoldberg joined
timotimo remember that 3.7 seconds it spent doing the dir thing? 22:36
if i turn down the initial value to 1_000 instead of 100_000 it only takes 2.8 seconds
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?
jnthn Not easily at the moment. 22:39
A Blob is a fairly low-level native array at the moment.
timotimo how hard could a copy-on-write be ...
jnthn timotimo: You never write a blob... :) 22:40
timotimo that makes it even easier :)
jnthn I think we can come up with something though
Hm, I wonder about a VMArrayView REPR... :)
Since type and REPR are independent anyways... :)
timotimo yeah, that ought to do it
jnthn It'd still be a Blob and you'd only know if you went .REPR-ing )))
REPR poly for the win 22:41
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*
TimToady poly want a repr, awk!
jnthn japhb__: Yeah, we need to do better at this stuff. :)
japhb__ :-)
timotimo oh, OperlnGL6
japhb__ You laugh. I've done the crazy before. 22:43
"Oh I know, I'll make an OpenGL binding for PIR!"
TimToady (timeout)Now you have 1,000,000,000,0... 22:52
lue
.oO(Null PMC upon attempt to access $parrotRestingAnimation)
22:55
23:11 dmol left 23:12 jnap joined 23:14 dmol joined 23:16 obra joined 23:19 zwut00 left 23:20 ajr_ left 23:23 ajr joined, ajr is now known as Guest42943 23:27 Guest42943 is now known as ajr_ 23:31 benabik left 23:37 benabik joined 23:38 jnap left
jnthn 'night o/ 23:41
23:47 pdurbin joined