»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
tadzik okay, sleepytime for me. G'night guys 00:03
jasonmay thanks for hacking! 00:04
soh_cah_toa see ya
lue goodnight tadzik o/ 00:05
00:15 whiteknight joined 00:18 colomon left 00:22 benabik left
flussence nom: our Int $blah = 5; # is the error message right? 00:25
p6eval nom: OUTPUT«===SORRY!===␤Cannot put a type constraint on an 'our'-scoped variable at line 1, near " = 5; # is"␤»
00:28 wamba left, wolfman2000 joined 00:40 dayangkun joined 00:41 fbass joined
fbass anyone know how to unban my nick from #perl? 00:41
00:41 colomon joined
fbass what do I have to /msg? 00:41
soh_cah_toa fbass: well, there's the 'unban' command but i think it's reserved only for operators 00:44
00:44 uasi joined 00:45 Holy_Cow joined 00:46 Holy_Cow left
fbass if I wait long enough will my nick automatically be unbanned? I was trying out a new irc client which autojoined to many times. 00:48
soh_cah_toa probably not. i would try contacting one of the operators over there 00:51
fbass ok 00:57
00:57 REPLeffect left 00:59 REPLeffect joined 01:01 fbass left, frhodes joined 01:07 PacoLinux left, frhodes left 01:08 frhodes joined, frhodes left 01:11 REPLeffect left 01:16 REPLeffect joined 01:17 uasi left, drbean left 01:20 frhodes joined 01:23 ChanServ sets mode: +o Tene
Tene oh, from #perl, not #perl6 01:24
01:24 Tene sets mode: -o Tene 01:25 uasi joined 01:26 REPLeffect left, REPLeffect joined 01:28 uasi_ joined, uasi left
sjohnson Tene: ... that's better! 01:31
just kiddin
01:33 uasi_ left, uasi joined 01:36 mattp_ left 01:40 woosley joined 01:42 whiteknight left, Holy_Cow joined 01:46 Holy_Cow left 01:51 frhodes left 01:55 donri left 02:00 aber joined 02:01 abercrombie left 02:06 Slot|processor left 02:13 thou joined 02:14 frhodes joined, frhodes left 02:15 frhodes joined 02:18 aber is now known as abercrombie 02:21 [particle] left 02:27 REPLeffect left, REPLeffect joined 02:44 jaldhar left, jaldhar joined 02:47 frhodes left 02:49 jaldhar left 02:54 jaldhar joined 03:00 jdhore joined 03:21 uvtc joined 03:23 benabik joined
soh_cah_toa placing single quotes around a character in a character class is like escaping it, right? it matches the literal charcter so they're not interpreted as metacharacters 03:25
03:26 frhodes joined 03:27 Su-Shee left
soh_cah_toa b/c it doesn't work with '-'. i still get the message that '..' should be used instead. however, escaping it w/ a backslash does the trick. why would the later work but not the former? 03:27
03:28 Su-Shee joined
sorear good * #perl6 03:32
soh_cah_toa: I don't think you can use single quotes like that
perl6: say grep /<[ 'a' ]>/, "'a".comb
p6eval niecza v8-55-g0db7bb8: OUTPUT«Unhandled exception: cannot bind $/ in KERNEL grep␤ at /home/p6eval/niecza/lib/CORE.setting line 1530 (CORE Regex.ACCEPTS @ 3) ␤ at line 0 (KERNEL grep @ 2) ␤ at /tmp/LIcXooAfyy line 1 (MAIN mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line …
..pugs: OUTPUT«*** Cannot cast from VList [VMatch (MkMatch {matchOk = True, matchFrom = 0, matchTo = 2, matchStr = "'a", matchSubPos = [], matchSubNamed = fromList []})] to Pugs.AST.Types.VCode (VCode)␤ at /tmp/_SY5C8D5qY line 1, column 5 - line 2, column 1␤»
..rakudo a55346: OUTPUT«'a␤»
benabik I don't think it's suppose to work in character classes. 03:33
soh_cah_toa what quotes?
i'm pretty sure i read that somewhere
benabik ysH
sorear seems Rakudo agrees with me... odd error from niecza though 03:35
soh_cah_toa hm, maybe i didn't. so single quotes does mean a literal character EXCEPT in character classes?
guess i just assumed. oh well, not a problem 03:36
03:44 frhodes left, frhodes joined 03:48 [particle] joined 03:58 birdwindupbird joined 04:19 avar left 04:20 wolfman2000 left 04:33 dayangkun left 04:37 abercrombie left
soh_cah_toa perl6: my @foo = "\x30".."\x3a"; .say for @foo 04:43
p6eval rakudo a55346, niecza v8-55-g0db7bb8: OUTPUT«(timeout)» 04:44
..pugs: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤»
soh_cah_toa i knew it. it's not just mine
it gets stuck and runs forever
04:44 cexsum joined
soh_cah_toa it supposed to print 0 through 9 and a colon 04:45
04:46 [particle] left, [particle] joined
TimToady perl6: my @foo = "\x30" ... "\x3a"; .say for @foo 04:48
p6eval pugs: OUTPUT«*** ␤ Unexpected "\"\\"␤ expecting operator or ","␤ at /tmp/hq743KMyXU line 1, column 22␤»
..niecza v8-55-g0db7bb8: OUTPUT«Unhandled exception: Unable to resolve method ord in class Str␤ at /home/p6eval/niecza/lib/CORE.setting line 1758 (CORE C788_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1793 (CORE C821_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line…
..rakudo a55346: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤:␤»
soh_cah_toa perl6: for @foo = '\x30'..'\x3a'; say "$_" for @foo
p6eval rakudo a55346: OUTPUT«===SORRY!===␤Missing block at line 22, near "; say \"$_\""␤»
..niecza v8-55-g0db7bb8: OUTPUT«===SORRY!===␤␤Variable @foo is not predeclared at /tmp/sc5raUrzC_ line 1:␤------> for ⏏@foo = '\x30'..'\x3a'; say "$_" for @foo␤␤Missing block at /tmp/sc5raUrzC_ line 1:␤------> for @foo = '\x30'..'\x3a'⏏;…
..pugs: OUTPUT«*** ␤ Unexpected " ="␤ expecting "::"␤ Variable "@foo" requires predeclaration or explicit package name␤ at /tmp/ZhI16PxZdK line 1, column 9␤»
04:49 cexsum left
TimToady note that ... works better 04:49
soh_cah_toa whoops
perl6: my @foo = '\x30'..'\x3a'; say "$_" for @foo
04:49 cexsum joined
p6eval pugs, rakudo a55346, niecza v8-55-g0db7bb8: OUTPUT«\x30␤\x31␤\x32␤\x33␤\x34␤\x35␤\x36␤\x37␤\x38␤\x39␤» 04:49
uvtc nom: say 1 .. 10
p6eval nom: OUTPUT«1..10␤»
uvtc rakudo: say 1 .. 10
p6eval rakudo a55346: OUTPUT«12345678910␤»
04:50 agentzh joined
soh_cah_toa what's the difference between '..' and '...'? 04:50
TimToady well, .. should promote to ... in this case, but doesn't apparently
... is specced to treat single characters specially
so that 9 doesn't wrap to 00
which is why you're running forever 04:51
uvtc soh_cah_toa, sorry, didn't mean to distract you. After looking at what you were doing, I was going to ask if 10 .. 1 should work.
TimToady no, but 10...1 works
uvtc nom: say 10 ... 1
p6eval nom: OUTPUT«10 9 8 7 6 5 4 3 2 1␤»
uvtc neat!
soh_cah_toa interesting. what synopsis is it covered in?
TimToady .. is just interval arithmetic, which means 10..1 is a null range
... is dwimmier, and intended to produce sequences 04:52
.. just happens to promote to ... in list contxt
S03:1777 04:53
soh_cah_toa yeah, there it is 04:54
uvtc TimToady: thanks for the link
TimToady also S03:3376 04:55
soh_cah_toa i'd report it to rt myself but i don't have an account 04:56
before i head out...i was wondering, is anybody allowed to make contributions to perl6/book? i noticed that testing was on the chapters todo list so i started writing a chapter on it 05:00
lue how is dies_ok supposed to be used? For some reason dies_ok ordinal($googol), "this is why" didn't work ("no applicable candidates found...")
uvtc soh_cah_toa, I was given access to the perl6 repos a while ago, but IIRC it did not allow me to push to perl6/book. 05:04
soh_cah_toa hm, well i'll ask around again tomorrow 05:05
05:06 soh_cah_toa left
uvtc soh_cah_toa, maybe ping moritz about 05:06
missed soh_cah_toa by *that* much. :)
dalek ecs: 187e15b | larry++ | S04-control.pod:
document that forward goto requires quotes
05:13
05:15 Alias left, Alias joined 05:16 daniel-s left 05:22 daniel-s joined 05:28 tokuhirom joined
moritz good morning 05:29
uvtc hi moritz 05:30
The Rakudo how-to-help page says to email [email@hidden.address] to submit a bug to the bug tracker. But I assume one should search there first to see if the bug report already exists. 05:36
How can I search only the existing Rakudo bugs? 05:37
(so I don't get results at rt.perl.org for P5 issues)
05:41 wk left
sorear uvtc: use the "perl6" queue 05:42
05:42 satyavvd joined
uvtc sorear: Is there a way to only search among bugs listed in the perl6 queue? 05:45
Sorry, nm. Seems like including "perl6" is the search field works fine. 05:47
05:51 wtw joined 05:55 tokuhirom left, tokuhirom joined 06:02 frhodes left 06:14 masak joined
masak good mornz, #perl6 06:14
mberends g'morn masak 06:17
lue hello masak o/
.oO(I've made a *lot* of commits on Numbers::Ordinal tonight)
06:19
masak lue: url?
06:21 koban joined
lue github.com/lue/Numbers--Ordinal/ 06:21
06:21 koban left
masak looks 06:21
lue [well, relatively a lot] and I still want to work on it, but I should start getting ready to go to sleep soon.
masak nice tests. 06:23
the last one looks wrong, though. 06:24
lue I was wondering why dies_ok didn't work (I asked earlier) 06:25
moritz lue: you need to pass a block to dies_ok 06:27
lue [ideally (in terms of full test coverage), the tests would test every number, but that's not feasible. :)]
moritz lue: grepping roast would have given you > 400 examples :-)
lue Well now that you mention it, searching the biggest use of the Test module might have helped me out a little (figures I didn't consider it. maybe it's 'cos it's late in the day) 06:30
sorear hello masak 06:35
masak hi sorear 06:38
lue: I recommend learning why writing dies_ok without a block around the function call won't/can't work. it's *very* useful knowledge.
lue: I'll be happy to help you along, if you ask pointed questions. :)
lue My guess is that it needs to control execution of the code, and w/o a block the code is executed before it's passed to dies_ok. The block prevents execution until dies_ok wants it to. Correct? 06:40
sorear masak: really?
masak: there is (IMO insane) language in the spec that suggests that Perl 6.0 will allow an unblocked dies_ok 06:41
moritz sorear: if it's defined as a macro, sure
sorear moritz: Capture is specced to be lazy
moritz sorear: but laziness isn't guarantueed 06:42
sorear captures are read-only but not immutable because accessing positional slots may reify them
lue [running Numbers::Ordinal on 1 googol returns hilarious results.] goodnight all o/
moritz phenny: ask soh_cah_toa what's your github ID? 06:44
phenny moritz: I'll pass that on when soh_cah_toa is around.
uvtc What does '...' mean inside a method definition? 06:46
masak sorear: if there is such language in the spec, it is indeed insane, and we should remove it.
lue: yes, correct. 06:47
lue: next up: learning to harness the awesomeness of closures :)
lue: did you know that when a block can be "exported" from e.g. a subroutine and executed somewhere else, it still remembers the variables that were in the subroutine? 06:48
TimToady perl6: ...
p6eval rakudo a55346: ( no output )
..niecza v8-55-g0db7bb8: OUTPUT«Unhandled exception: >>>Stub code executed␤ at /tmp/7875mbUVfd line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2047 (CORE C953_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2048 (CORE module-CORE @ 57) ␤ at /home/p6e…
..pugs: OUTPUT«*** Cannot use this control structure outside a 'routine' structure␤ at /tmp/3ftouTkZjR line 1, column 1 - line 2, column 1␤»
06:48 SHODAN joined
uvtc I'd guessed that it indicates a method that subclasses must implement, but that doesn't seem to be the case... 06:49
TimToady it fails if you execute the ...
so it indicates a stub
masak some people on the Internet might not have seen this sign yet: richardwiseman.files.wordpress.com/...aled-2.jpg 06:50
TimToady perl6: sub foo {...}; foo // say $!
p6eval pugs: OUTPUT«*** ␤ Unexpected "say"␤ expecting operator, ":" or ","␤ at /tmp/RElZG5mWR8 line 1, column 23␤»
..rakudo a55346: OUTPUT«===SORRY!===␤Null regex not allowed at line 22, near " say $!"␤»
..niecza v8-55-g0db7bb8: OUTPUT«===SORRY!===␤␤Null regex not allowed at /tmp/YI3VaJsV4J line 1:␤------> sub foo {...}; foo //⏏ say $!␤␤Action method quote:sym<//> not yet implemented at /tmp/YI3VaJsV4J line 1:␤------> sub foo {...}; foo //⏏[…
TimToady perl6: sub foo {...}; foo() // say $!
p6eval niecza v8-55-g0db7bb8: OUTPUT«Unhandled exception: >>>Stub code executed␤ at /tmp/NuYPyrlq6L line 1 (MAIN foo @ 3) ␤ at /tmp/NuYPyrlq6L line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2047 (CORE C953_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line …
..pugs: ( no output )
..rakudo a55346: OUTPUT«Any()␤»
uvtc TimToady: testing ... 06:51
TimToady well, niecza does it
perl6: sub foo {...}; try { foo() } // say $!
p6eval niecza v8-55-g0db7bb8: OUTPUT«>>>Stub code executed␤»
..pugs, rakudo a55346: ( no output )
uvtc nom: class Paint { method foo {...} } class Watercolor is Paint {} my $w = Watercolor.new(); $w.foo; 06:53
p6eval nom: OUTPUT«===SORRY!===␤Confused at line 1, near "class Pain"␤»
TimToady S03:2342 is the ... doc
you can't leave out semicolons when the next statemen is on the same line
that is, } assumes semicolon only if it is the final thing on a line 06:54
uvtc nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); $w.foo;
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
uvtc nom: class Paint { method foo {...}; }; class Watercolor is Paint {}; my $w = Watercolor.new(); $w.foo; 06:55
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
TimToady that looks like some other bug
moritz indeed
TimToady nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); 06:56
p6eval nom: ( no output )
TimToady nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.WHAT
p6eval nom: OUTPUT«Watercolor()␤»
TimToady nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.perl 06:57
p6eval nom: OUTPUT«Watercolor<21621624>␤»
TimToady nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.defined
p6eval nom: OUTPUT«Bool::True␤»
TimToady nom: class Paint { method foo {...} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.can("foo")
p6eval nom: OUTPUT«foo␤»
uvtc TimToady: thanks very much. :)
TimToady nom: class Paint { method foo {fail "oops"} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.foo 06:58
p6eval nom: OUTPUT«oops␤ in method foo at /tmp/JDxzHKZkYQ:1␤ in mu <anon> at /tmp/JDxzHKZkYQ:1␤ in mu <anon> at /tmp/JDxzHKZkYQ:1␤␤»
TimToady nom: class Paint { method foo {... "oops"} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.foo
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
TimToady rakudo: class Paint { method foo {... "oops"} }; class Watercolor is Paint {}; my $w = Watercolor.new(); say $w.foo
p6eval rakudo a55346: ( no output )
moritz nom: sub f { ... }; f
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
moritz nom: ...
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
TimToady looks like ... is the culpret
*prit 06:59
moritz rakudo: sub f { ... }; my $x = f(); $x.defined; say $x
p6eval rakudo a55346: OUTPUT«Stub code executed␤»
moritz nom: fail('Stub code executed') 07:00
p6eval nom: ( no output )
moritz nom: my $x = (sub { fail('Stub code executed') }).(); $x.defined; say $x
p6eval nom: OUTPUT«␤»
moritz thinks he sees the problem in Actions.pm 07:02
make PAST::Op.new( :pasttype('call'), :name('&warn'), 'Stub code execute
d', :node($/) );
erm, s/warn/fail/
that tries to pass a parrot String to warn/fail 07:03
07:04 uvtc left
moritz compiles a fix 07:08
07:13 thou left
moritz nom: !!! 07:15
p6eval nom: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in method REIFY at src/gen/CORE.setting:4201␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/COR…
07:22 wk joined 07:23 jevin left 07:24 Trashlord left 07:27 jevin joined, wk left 07:34 Trashlord joined, mberends left 07:36 mberends joined
dalek kudo/nom: 90e66fb | moritz++ | src/Perl6/Actions.pm:
make sure that ..., ??? and !!! pass Perl 6 strings to &fail, &warn, &die

  uvtc++ for discovering it
07:40
07:42 im2ee joined 07:46 drbean joined 07:47 wk joined 07:58 donri joined 08:02 kfo_ joined 08:05 kfo left, cotto left 08:07 donri left 08:08 wk left 08:11 envi left 08:12 im2ee left, envi joined 08:17 donri joined 08:25 Trashlord left 08:26 im2ee joined 08:28 Trashlord joined 08:29 mishin joined 08:30 mj41 joined 08:34 cosimo joined
tadzik do we even have warn()? 08:34
nom: warn "foo"
p6eval nom: OUTPUT«Could not find sub &warn␤ in mu <anon> at /tmp/gFXYiPTKT_:1␤ in mu <anon> at /tmp/gFXYiPTKT_:1␤␤»
moritz tadzik: no, but it was kinda pointless not to fix the &warn call when I fixed all the others :-) 08:35
tadzik :) 08:36
08:42 wamba joined 08:45 orafu left, orafu joined
tadzik oh. Everyone, please contribute to github.com/perl6/ecosystem/wiki/St...les-on-nom 08:47
08:50 dakkar joined
mberends tadzik: ok. has fixing a module for nom ever broken it for master? 08:51
tadzik mberends: ...never tried :P 08:52
tbh, I don't even have master installed now
08:53 Trashlord left
mberends :) 08:53
dalek kudo/nom: 9323ff6 | moritz++ | NOMMAP.markdown:
add lexical regex lookup to nommap, volunteer pmichaud++ for it :-)
08:57
moritz nom: say 1 == Any 08:59
p6eval nom: OUTPUT«Use of uninitialized value in numeric context␤Bool::False␤»
moritz nom: say 0 == Any
p6eval nom: OUTPUT«Use of uninitialized value in numeric context␤Bool::True␤»
09:03 avar joined
moritz tadzik: I've updated that wiki a bit 09:05
tadzik great 09:10
moritz: CGI::Application is now there twice 09:11
I was trying to keep the list alphabetically sorted 09:12
moritz sorry
moritz fixes
tadzik no worries 09:14
09:15 wk joined 09:17 wk left 09:18 daniel-s left
tadzik heh, seems that my first commit was not ordered too :) 09:19
This type cannot unbox to a native string -- File::Find
fun enough :) 09:20
mux guesses one could stringify a File::Find object into a find(1) shell command :-) 09:21
09:21 wk joined
frettled_ masak++: Forgot to say this earlier, but I loved your YAPC blog entry :) 09:22
09:22 scorpil joined
moritz tadzik: does File::Find use pir:: stuff? 09:22
tadzik moritz: not at all
sorry for the paste 09:23
This type cannot unbox to a native string
in method e at src/gen/CORE.setting:4708
in method d at src/gen/CORE.setting:4704
in method ACCEPTS at src/gen/CORE.setting:4274
moritz so it's a file test 09:24
tadzik yes
funny, because I don't use :e
moritz in method d
which calls .e
tadzik okay 09:25
moritz nom: say 'foo'.IO
p6eval nom: OUTPUT«IO<49276216>␤»
09:26 cosimo left
moritz in Cool.pm: method IO() { IO.new(:path(self)) } 09:26
that's... dangerous
moritz changes it to self.Stringy, spectests
nom: 4.IO.e 09:27
p6eval nom: OUTPUT«This type cannot unbox to a native string␤ in method e at src/gen/CORE.setting:4708␤ in mu <anon> at /tmp/jUDg2as2yv:1␤ in mu <anon> at /tmp/jUDg2as2yv:1␤␤»
moritz nom: 4.IO.d
p6eval nom: OUTPUT«This type cannot unbox to a native string␤ in method e at src/gen/CORE.setting:4708␤ in method d at src/gen/CORE.setting:4704␤ in mu <anon> at /tmp/pTOkKMwzeS:1␤ in mu <anon> at /tmp/pTOkKMwzeS:1␤␤»
09:28 ab5tract joined, wk left
tadzik nom: say 'src'.IO ~~ :d 09:28
p6eval nom: OUTPUT«Bool::False␤»
tadzik nom: say dir
p6eval nom: OUTPUT«60␤.vim std_mine sprixel Perlito .ccache old_perl5 niecza mono-2.10.1.tar.bz2 .cache partcl-nqp log .pugs_history .bash_history nqp std_hilited 6model _sprixel01 p1 rakudo-star-2011.04.tar.gz .lesshst .aptitude .bashrc .cpanm nom-inst2 rakudo-star-2010.09 .ghc perl5 evalbot …
tadzik nom: cay '.ccache'.IO ~~ :d
p6eval nom: OUTPUT«Could not find sub &cay␤ in mu <anon> at /tmp/Qn9VUXrBOD:1␤ in mu <anon> at /tmp/Qn9VUXrBOD:1␤␤»
tadzik nom: say '.ccache'.IO ~~ :d 09:29
p6eval nom: OUTPUT«Bool::True␤»
tadzik wow, I still like my File::Find code
yes, it's definitely $elem.IO ~~ :d failing 09:30
moritz so what's $elem?
tadzik nom: dir[1].IO ~~ :d
moritz a Match maybe?
p6eval nom: OUTPUT«60␤»
tadzik wait, why did it print it
moritz and why does it print 60?
tadzik yeah, my question
why 60, and why printed?
moritz because I'm stupid, and left in debug output 09:31
moritz--
tadzik oh wait, it's File::Find::Result()
but it's Cool, and has a .Str method
it worked in master
moritz it's a nom bug that Cool.IO doesn't work properly 09:32
I have a fix here
(File::Find::Result might need to provide a .Stringy method as well)
tadzik which one is more correct?
.Str dispatches to .Stringy? 09:33
moritz nom: class A is Cool { method Str() { 'Foo' } }; say ~A.new
p6eval nom: OUTPUT«Foo␤»
moritz nom: class A is Cool { method Stringy() { 'Foo' } }; say ~A.new
p6eval nom: OUTPUT«Foo␤»
tadzik maybe F::F::R should just do a Stringy role, instead of being a full blown Cool
moritz thinks it makes sense as Cool 09:34
tadzik nom: class A does Stringy { method Stringy { "stringi" } }; my $a = A.new; say "foo$abar"
p6eval nom: OUTPUT«===SORRY!===␤Symbol '$abar' not predeclared in <anonymous> (/tmp/z2OpYHWThT:1)␤»
tadzik nom: class A does Stringy { method Stringy { "stringi" } }; my $a = A.new; say "foo$a"
p6eval nom: OUTPUT«foostringi␤»
tadzik looks good enough for me
F::F::R is not really cool. It's just usable as a String
or, someone may want to use it as a string
so maybe Stringy is more appropriate here 09:35
rakudo: class A does Stringy { method Stringy { "stringi" } }; my $a = A.new; say "foo$a"
p6eval rakudo a55346: OUTPUT«fooA()<0x5f46390>␤»
moritz someone might want to .match or .subst on the name
that's a Cool operation right now, not a Stringy
tadzik oh, ok
but method should be Stringy, not Str? 09:36
moritz I think so
dalek kudo/nom: da40716 | moritz++ | src/core/Cool.pm:
fix Cool.IO for non-Str
kudo/nom: f638895 | moritz++ | src/core/IO.pm:
remove debug output, tadzik++, moritz--
tadzik Cool itself doesn't have either Str or Stringy method, or maybe in the bootstrap
moritz nom: Cool.^can('Str') 09:38
p6eval nom: ( no output )
moritz nom: say Cool.^can('Str')
p6eval nom: OUTPUT«Str␤»
moritz I think that one is in Mu
tadzik okay
moritz nom: say Cool.^can('Stringy')
p6eval nom: OUTPUT«Stringy␤»
tadzik method Stringy() { self.Str }
Str it is, then
nom: 'revision?' 09:39
p6eval nom: ( no output )
tadzik why doesn't it print revision? Sad panda
rakudo: 'revision?'
p6eval rakudo a55346: ( no output )
09:39 daxim joined, cotto joined
moritz evalbot rebuild nom 09:41
p6eval OK (started asynchronously)
09:42 [particle]1 joined
tadzik nom: sub foo ($a as Str) {} 09:42
p6eval nom: ( no output )
tadzik oh, works?
moritz a no-op, last I looked
tadzik nom: sub foo ($a as Str) { say $a.WHAT }; foo(5)
p6eval nom: OUTPUT«Str()␤»
tadzik \o/
moritz oh, works \o/ :-)
09:43 [particle] left
tadzik I'm bringing back chdir() and mkdir() 09:43
I wonder if I could use IoC in panda 09:44
well, I could, but how cool would that be. The bad part is that it's pretty slow
or maybe it's just nom
dalek albot: a8a76b8 | moritz++ | evalbot.pl:
report nom revision
tadzik moritz++
nom: say dir 09:46
p6eval nom: OUTPUT«60␤.vim std_mine sprixel Perlito .ccache old_perl5 niecza mono-2.10.1.tar.bz2 .cache partcl-nqp log .pugs_history .bash_history nqp std_hilited 6model _sprixel01 p1 rakudo-star-2011.04.tar.gz .lesshst .aptitude .bashrc .cpanm nom-inst2 rakudo-star-2010.09 .ghc perl5 evalbot … 09:47
tadzik nom: ".vim" ~~ :d
p6eval nom: OUTPUT«Method 'd' not found for invocant of class 'Str'␤ in method ACCEPTS at src/gen/CORE.setting:4274␤ in mu <anon> at /tmp/E9YcNpn6Sd:1␤ in mu <anon> at /tmp/E9YcNpn6Sd:1␤␤»
moritz evalbot control restart
09:47 p6eval left
tadzik aw, snap :) 09:47
09:47 wk joined 09:51 p6eval joined, ChanServ sets mode: +v p6eval
tadzik rakudo: ".vim" ~~ :d 09:52
p6eval rakudo a55346: OUTPUT«Method 'd' not found for invocant of class 'Str'␤ in 'Enum::ACCEPTS' at line 5598:src/gen/core.pm␤ in main program body at line 1:/tmp/xnKtVDuTy7␤»
tadzik seems that ./S32-io/chdir.t is bogus
moritz the network connection of the p6eval server is *really* slow when it comes to opening new connections
tadzik my $subdir = 't'; if $subdir !~~ :d { }
moritz nom: say '.vim'.IO ~~ :d
p6eval nom 90e66f: OUTPUT«Bool::True␤»
tadzik fixes it 09:53
moritz there you go, with revision in the output
tadzik \o/
moritz++
mberends moritz++ :-) 09:54
09:56 wk left
tadzik A file test, where X is one of the letters listed below. This unary operator takes one argument, either a filename or a filehandle, and tests the associated file to see if something is true about it. 09:56
Str ~~ :d is allowed then
masak huh. 09:57
where's that from? 09:58
moritz tadzik: that sounds fossilish
masak agreed.
09:59 birdwindupbird left
tadzik perlcabal.org/syn/S32/IO.html#Other_things 09:59
09:59 birdwindupbird joined
tadzik yay, File::Tools now fully pass their tests 09:59
dalek kudo/nom: 6e4aa6c | tadzik++ | src/core/IO.pm:
[IO] Add &chdir and &mkdir
scorpil is there any useful scripts on perl6 which i can learn from? 10:01
tadzik scorpil: see modules.perl6.org for working examples 10:02
but first of all, perl6.org/documentation
moritz rosettacode has lots of perl 6 scripts too 10:04
(but it's linked there, iirc)
scorpil thanks
tadzik nom: my $a = eval " sub { [] } "; say $a.perl # correct? 10:06
p6eval nom 90e66f: OUTPUT«Any␤»
tadzik rakudo: my $a = eval " sub { [] } "; say $a.perl # correct?
p6eval rakudo a55346: OUTPUT«undef␤»
tadzik oh, wait
rakudo: my $a = eval " sub { 1 } "; say $a.perl # correct?
p6eval rakudo a55346: OUTPUT«undef␤»
tadzik hrm, nevermind
moritz not correct 10:07
undef is gone.
tadzik no, it's not what I'm looking for
nom: my $routine = eval "sub \{ 1 \}";
p6eval nom 90e66f: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in mu <anon> at /tmp/3wRlqDlNKE:1␤ in mu <anon> at /tmp/3wRlqDlNKE:1␤␤»
tadzik nom: say pir::typeof(eval "sub \{ 1 \}") 10:08
p6eval nom 90e66f: OUTPUT«Null PMC access in name()␤ in mu <anon> at /tmp/oJ1srPemuQ:1␤ in mu <anon> at /tmp/oJ1srPemuQ:1␤␤»
tadzik crap
moritz nom: pir::say pir::typeof(eval "sub \{ 1 \}") 10:09
p6eval nom 90e66f: OUTPUT«Null PMC access in name()␤ in mu <anon> at /tmp/Hq5DGXJuXr:1␤ in mu <anon> at /tmp/Hq5DGXJuXr:1␤␤»
moritz nom: say eval('sub { 1 }').WHAT
p6eval nom 90e66f: OUTPUT«Can only use get_what on a SixModelObject␤ in mu <anon> at /tmp/E8bfORx6ge:1␤ in mu <anon> at /tmp/E8bfORx6ge:1␤␤»
tadzik survey: eval("sub \{ $code \}") or sub { eval $code } ? 10:10
they're equivalent, aren't they?
10:11 wk joined, wk left
moritz well, not if $code contains $^x or so 10:11
tadzik I doubt it has 10:12
see github.com/tadzik/benchmark/blob/m...rk.pm6#L13
the latter will make it work on nom
and also looks more saneish to me
10:12 wamba left
tadzik are there any circumstances under which sub { eval() } will break here? 10:13
10:14 wamba joined
tadzik the sub is even not needed 10:18
PerlJam: sent you a pull request for Benchmark 10:23
bbkr_ rakudo: class A { method ^a ( ::T $a ) { $a.a } }; A.a; # metabomb, hide! :) 10:25
p6eval rakudo a55346: OUTPUT«maximum recursion depth exceeded␤ in 'A::a' at line 22:/tmp/XwLBwOFFu_␤ in 'A::a' at line 22:/tmp/XwLBwOFFu_␤ in 'A::a' at line 22:/tmp/XwLBwOFFu_␤ in 'A::a' at line 22:/tmp/XwLBwOFFu_␤ in 'A::a' at line 22:/tmp/XwLBwOFFu_␤ in 'A::a' at line 22:/tmp/XwLBwOFFu…
moritz rakudo: class A { method ^a ($a) { $a.a } }; A.a 10:26
p6eval rakudo a55346: OUTPUT«maximum recursion depth exceeded␤ in 'A::a' at line 22:/tmp/PHl8enwptq␤ in 'A::a' at line 22:/tmp/PHl8enwptq␤ in 'A::a' at line 22:/tmp/PHl8enwptq␤ in 'A::a' at line 22:/tmp/PHl8enwptq␤ in 'A::a' at line 22:/tmp/PHl8enwptq␤ in 'A::a' at line 22:/tmp/PHl8enwpt…
bbkr_ works as expected 10:27
nom: class A { method ^a ( ::T $a ) { $a.a } }; A.a; 10:28
p6eval nom 90e66f: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method a at /tmp/1ZFpGANydY:1␤ in mu <anon> at /tmp/1ZFpGANydY:1␤ in mu <anon> at /tmp/1ZFpGANydY:1␤␤»
bbkr_ hmm
mberends bbkr_: I hope you don't mind that today my load on bbkr.org will be an almost continuous series of nom spectest processes (one CPU only). I'm optimizing benchmarking in tools/test_summary.pl there and on my own Debian system. 10:34
bbkr_ mberends: feel free to heat CPUs as much as you like :) 10:36
mberends heh :)
10:40 mj41 left
bbkr_ anyone else needs free OS X shell for testing/developing P6 or p6 modules? 10:40
10:42 mkramer joined 10:43 miso2217 left, Trashlord joined 10:45 javuchi1 joined
javuchi1 hello 10:45
is perl6 ever going to be finished
?
mberends javuchi1: definitely not. We're happy that Perl 5 is not "finished" either, but still getting better :) 10:46
javuchi1 nice tricky response 10:47
tadzik we have experience
mberends lots
javuchi1 may i ask them, is perl6 ever going to be ready for production?
tadzik yes
and when will that be, that depends on your production 10:48
javuchi1 when?
tadzik it already is production ready for some of us, and with the time, the number of satisfied consumers is growing
what is your "production ready"?
javuchi1 answering with a question? ;) 10:49
tadzik what makes you think so? ;)
mberends some parts of the Perl 6 spec are very stable, and supported in multiple implementations. Other parts almost, or not yet. The classic scoreboard is perl6.org/compilers/features 10:50
tadzik when you try to find the answer to my question, you'll notice how hard it is to declare something "production ready"
javuchi1 gcc is production ready
tadzik hmm 10:51
Rakudo is like gcc, it also takes ages to compile
it's also like gcc, it doesn't implement all of the spec
10:51 satyavvd left
tadzik it's not like gcc for it generates shitty code, we're working on that 10:52
it's also slow itself, we're working on that to
javuchi1: I'd really like to answer you with one sentence, but it really _is_ trickier than that
javuchi1 definitively you have experience in answering ;) 10:53
mberends javuchi1: you can view the Perl 6's incompleteness from a "glass half full" or a "glass half empty" attitude. Most people here adopt the former.
javuchi1 did you consider entering politics?
tadzik I know, you probably think that I'm trying to trick you into thinking that Perl 6 is good enough for you. But believe me, I came here for the same answer, and I'm here for a year and I'm still not sure :P 10:54
javuchi1 haha
tadzik javuchi1: thought about that, but I'd prefer to be a good programmer one day ;)
javuchi1 that's a better question
tadzik so, back into topic: what do you miss from the current implementations? 10:55
Su-Shee try it and then use it or don't use it. in the time asking you could have already written some code ;)
tadzik as you can see, he have a bit "special" viewpoint on "ready", so if you help us with yours, we may be able to make it more easy to appreciate
javuchi1 i just don't like the idea of using a language which is not well stablished and not always in continuos development of its core 10:56
tadzik well, so you don't like Perl 5 either? 10:57
mberends javuchi1: unfortunately, Perl 6 is then probably not ready *for you*.
tadzik you'd like Spec to be stable? 10:58
masak javuchi1: more things might be stable than you think.
10:58 tokuhirom left
masak javuchi1: a lot of things have fallen into place in the past three years or so. much of the flux is going on at the edges. 10:58
but yes, there is flux. 10:59
10:59 MayDaniel joined
tadzik afk 10:59
mberends I'm impressed with the general roadmap Jesse Vincent presented recently for Perl 5.16, 5.18 and beyond. It has good provision for evolution (breaking cruft) and still gives a nod to backward compatibility. 11:03
11:04 im2ee left 11:06 tokuhirom joined 11:09 im2ee joined 11:10 ab5tract left 11:18 javuchi1 left 11:19 javuchi1 joined, mishin left 11:22 MayDaniel left, tokuhirom left 11:23 buubot_backup left
masak mberends: yes, me too. it provides a fresh hope for Perl 5 -- something that's good both for the Perl community as a whole and for the friendly competition between the sibling languages. 11:24
mberends :) 11:25
11:25 tokuhirom joined 11:28 tokuhirom left 11:29 mj41 joined 11:31 tokuhirom joined
moritz rereads www.modernperlbooks.com/mt/2011/08/...-code.html and is again fascinated by the number of wrong assumptions in there 11:36
it sounds as if nqp's primary purse was to decouple rakudo from parrot, so that rakudo can ditch parrot when there's a replacement 11:37
masak nudges moritz to leave a comment 11:38
moritz that comment box is too small 11:40
I'd have to write a complete blog post
hm, maybe I should.
11:45 buubot_backup joined
masak +1 11:50
11:58 yahooooo left 11:59 yahooooo joined 12:00 cexsum left 12:06 woosley left 12:19 uasi left 12:20 uasi joined
cotto masak, privmsg ping 12:22
moritz github.com/moritz/perlgeek.de/blob...ds-nqp.txt any comments before I publish? 12:25
12:25 molaf joined
moritz I have the feeling that the end is a bit weak, but I'm kinda at loss of words what else to say 12:25
12:27 Trashlord left
lumi_ "the grammar with which your source code is," -- Missing a verb 12:34
mberends "back and forth" missing a "between" 12:35
moritz lumi_: thanks 12:36
both fixed, lumi_++ and mberends++
cotto moritz, I'd sit on it for half a day or a few hours. I appreciate the clarification from a Rakudo pov, but it does need a bit more of an ending. 12:37
maybe something like "we need the metacircularity, VM portability isn't a big concern, this is how a Perl6 compiler has to work"
12:37 Trashlord joined
cotto just to summarize 12:37
moritz cotto: sounds good 12:38
cotto moritz++ for 'splaining 12:39
PerlJam moritz: the paragraph that starts "This is not just because we have a fancy for Perl 6" feels like it's missing something. 12:42
moritz PerlJam: better after reload? 12:44
PerlJam moritz: yes 12:45
moritz good. 12:46
12:46 Siddy joined
PerlJam moritz: I'd end with the "That's what NQP does for us." paragraph if possible. It's very short and to the point and very much like punctuation at the end of the article. 12:46
12:47 Trashlord left
moritz I considered that too 12:47
now I'm a bit repetitive at the end
flussence :84s/$/h/ 12:48
PerlJam flussence: nice catch :)
12:48 wamba left
moritz any other opinions for or against stopping after "That's what NQP does for us." 12:50
s/\$/?/ # :-) 12:51
PerlJam moritz++ (I especially like how you mention chromatic's "ramble" without accidentally getting caught up in it :)
moritz PerlJam: that part took some self-constraint :-)
12:53 jaldhar left
PerlJam moritz: If I were the author, I would move the "That's what NQP does for us" paragraph after the succeeding paragraph and remove the final paragraph. (but that's just me) 12:54
moritz likes it, and does it that way 12:56
12:57 abercrombie joined
tadzik is back 13:00
13:02 cggoebel left 13:06 [particle]1 is now known as [particle] 13:07 cggoebel joined 13:10 Siddy is now known as Trashlord 13:11 [Coke] left, daniel-s joined 13:14 MayDaniel joined 13:16 mkramer left
mberends moritz: s:1st/parrot/Parrot/ and s/\(or a subset thereof\) itself/itself \(or a subset thereof\)/ and s/part to bytecode/parts to bytecode/ and s/technicals/technical/ and s/above refer/above refers/ and s/need to Perl 6/need to be Perl 6/ and s/be Perl 6 object/be a Perl 6 object/ 13:24
13:26 daniel-s_ joined 13:27 daniel-s left 13:28 wamba joined
moritz mberends++ # again 13:29
mberends more coming... *sigh* ;)
moritz mberends: want a commit bit? :-) 13:30
or maybe I should just reread it myself in an hour
cotto moritz++ for laziness
mberends++ for industriousness
13:33 frhodes joined, PacoLinux joined
masak moritz: your post is about my favorite part of Perl 6: the (mutual) metacircularity of the grammar and the object system. :) 13:38
moritz++ # very nice post 13:39
moritz thanks 13:40
mberends moritz: s/number literal/numeric literal/ and s/we consequently we/consequently we/ and s/object leaking/objects leaking/ .EOS 13:42
moritz mberends++ # again 13:45
moritz publishes
mberends likes moritz++'s post
13:47 drbean left 13:48 PacoLinux left
moritz tries to leave a commen on chromatic's blog, but the OpenID provider produces an Internal Server Error 13:50
tadzik nom: grammar A {}; class A::Actions {}; A.parse('', :actions(A::Actions.new) 13:51
p6eval nom 6e4aa6: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 1␤»
tadzik nom: grammar A {}; class A::Actions {}; A.parse('', :actions(A::Actions.new))
p6eval nom 6e4aa6: OUTPUT«too many named arguments: 1 passed, 0 used␤ in mu !cursor_init at src/stage2/QRegex.nqp:491␤ in method parse at src/gen/CORE.setting:5812␤ in mu <anon> at /tmp/WWNc1e9Zob:1␤ in mu <anon> at /tmp/WWNc1e9Zob:1␤␤»
13:52 colomon left 13:53 Siddy joined 13:54 Trashlord left 13:55 Siddy is now known as Trashlord, colomon joined 13:57 PacoLinux joined
tadzik masak: have you seen github.com/perl6/ecosystem/wiki/St...les-on-nom today? 13:58
13:59 bluescreen10 joined
moritz om: grammar A {}; A.parse('') 14:00
nom: grammar A {}; A.parse('')
p6eval nom 6e4aa6: OUTPUT«Method 'TOP' not found for invocant of class 'A'␤ in method parse at src/gen/CORE.setting:5812␤ in mu <anon> at /tmp/5_hyf_mnDJ:1␤ in mu <anon> at /tmp/5_hyf_mnDJ:1␤␤»
moritz nom: grammar A {}; A.parse('', :actions)
p6eval nom 6e4aa6: OUTPUT«too many named arguments: 1 passed, 0 used␤ in mu !cursor_init at src/stage2/QRegex.nqp:491␤ in method parse at src/gen/CORE.setting:5812␤ in mu <anon> at /tmp/EH132Kycx5:1␤ in mu <anon> at /tmp/EH132Kycx5:1␤␤»
moritz tadzik: seems that reductions are simply NYI in QRegex 14:01
14:02 Holy_Cow joined
daxim www.modernperlbooks.com/mt/2011/08/...-code.html # other side of the story, plz? 14:02
moritz daxim: perlgeek.de/blog-en/perl-6/why-raku...s-nqp.html
daxim: I tried to post a comment on chromatic's blog, but the openid provider gave a 500 internal error :/ 14:03
14:03 _twitch joined, wtw left
masak tadzik: looking. 14:05
tadzik: nice initiative. 14:06
tadzik++
moritz++ flussence++ 14:07
abercrombie Hi, will there be a 'wrap' method for Sub? 14:10
tadzik rakudo: Sub.^can('wrap')
p6eval rakudo a55346: ( no output )
tadzik rakudo: say Sub.^can('wrap')
p6eval rakudo a55346: OUTPUT«wrap␤»
14:11 Aridai joined
tadzik there is one :) 14:11
masak abercrombie: in general, S06 contains answers to questions about subroutines. 14:12
not that we don't like answering them here; it's just that it's a good source of information.
abercrombie Thanks. I only tried nom so I was not sure 14:14
moritz nom: say Sub.^can('wrap') 14:15
p6eval nom 6e4aa6: OUTPUT«␤»
14:15 jevin left
masak bug? 14:15
moritz NYI
14:16 jevin joined 14:18 wk joined
masak OIC 14:19
moritz YRL 14:20
:-)
14:22 tokuhirom left 14:25 frhodes left, kaare__ joined 14:28 wamba left 14:31 mkramer joined 14:33 mkramer left
bbkr_ moritz++ # NQP explanation, finally I know what it is for :) 14:34
moritz :-) 14:35
tadzik (:
tadzik writes a subjective Production Ready post 14:36
14:39 mls joined
tadzik loliblogged: ttjjss.wordpress.com/2011/08/24/wha...ion-ready/ 14:39
mls hi perl6!
moritz \o/ mls
tadzik hi mls!
mls I've a proof-of-concept patch for faster return handling: gist.github.com/1168212 14:40
Is that a completely insane approach? 14:41
seen jnthn 14:42
aloha jnthn was last seen in #perl6 16 hours 55 mins ago saying "sleep &".
mls overslept... 14:43
moritz pmichaud might appear soonish
masak seems you port a bunch of PAST to C. is that correct?
or "to PMC" is perhaps more precise.
mls Not really. Instead of setting up a new continuation in the wrap_return function I reuse the existing continuation of the call context 14:44
moritz mls: I'm not really qualified to comment on that patch, I just noticed that the Q:PIR blok can be written as pir:: calls, which is generally a bit prettier
mls This means I also have to simulate the lexical lookup
moritz pir::findlex__PS('$parcel')
tadzik mls: did you try it in-field?
masak I'm intrigued by the patch, but I also can't accept/reject it. pmichaud will have to do that. 14:45
mls: did you run the spectests on it?
mls Yes, it's just proof-of-concept. There's also a really ugly check if the subname starts with _block, which should be done very different
Oh, please do *not* accept it in its state ;)
tadzik :P
moritz mls: I might know the solution for that one
tadzik just curious of the effects
mls I ran t/spec/S06-advanced_subroutine_features/return.t, seems to work 14:46
moritz mls you can check the type of pir::perl6_code_object_from_parrot_sub__PP($block)
tadzik is it visibly faster?
moritz mls: if it's not Routine, it's Block
mls Yes, that's what I was looking for
It should be much faster
Dunno about the "visibly" ;) 14:47
It's basically just an idea for pm/jnthn to evaluate
S04-statements/return.t fails because of the _block test. Might work with the Routine check as suggested by you 14:50
tadzik damn this whitespace backtracking :/
mls Anyway, I'm experimenting with it because we need to implement "leave" at some time 14:51
For leave we must be able to jump to some context, which is what the patch does
14:53 scorpil left 14:55 Trashlord left, Trashlord joined
moritz tadzik++ blog post 14:56
14:57 _twitch left
moritz now that's some fine polemic: twitter.com/#!/chromatic_x/status/1...8556082176 14:58
mls: fwiw your patch causes some spectest failures (I know about it being an experiment only, yes... :-) 15:00
15:00 wamba joined 15:01 uasi left, SHODAN left
tadzik hehe 15:01
mls probably because of the _block check
moritz $ ./perl6 t/spec/S03-operators/context-forcers.rakudo|grep ^notnot ok 37 - trailing chars cause failure
there should be a newline after the first 'not'
tadzik for how long we have nqp?
moritz well, it startes as nqp-rx in 2009 15:02
felher moritz++, tadzik++ blogposts.
tadzik so much for "fourth annual rewrite" 15:03
15:04 scorpil joined
moritz the first nqp specific commit seems to have been c0a8057a6c5b9ec13f690d81c79783726814ee70, from September 2010 15:04
masak moritz: chromatic's tweet seems to be made by someone who didn't read your post. 15:05
moritz masak: he's know as a prolific writer, not as a prolific reader :-) 15:06
masak :P
tadzik or someone who doesn't want to spoil his "I'm angry at you" viepoint
masak maybe his mental model is blocking his understanding of the blog post.
15:07 daniel-s_ left 15:10 Aridai left
tadzik there we go: www.reddit.com/r/perl/comments/jsw5...needs_nqp/ 15:11
masak chromatic: "nqp is X". moritz: "why nqp is Y rather than X". chromatic: "I'd rather read 'why nqp is X'" 15:12
wow, and chromatic already commented on reddit.
moritz and he's full of wrong assumptions again.
masak more of them, it seems. 15:13
colomon I dunno, I think he's coming from a pretty reasonable place.
moritz that doesn't stop him from being wrong. 15:14
colomon actually, I don't see anything I think is wrong in that reddit comment 15:15
moritz Why is NQP imported into Parrot?
it is not
colomon isn't there an NQP in the Parrot project? 15:16
moritz there's NQP-rx
masak the new NQP is hosted outside of Parrot too, isn't it? 15:17
moritz yes 15:18
masak github.com/perl6/nqp
15:18 chromatic joined
masak chromatic: hi. 15:18
chromatic Hey, here's a thought. How about reading the entirety of my post?
phenny chromatic: 28 Sep 22:43Z <[Coke]> tell chromatic planetsix points to your use.perl URL. Do you have a different one you'd like plugged in?
moritz chromatic: I did. Did you read mine? 15:19
chromatic I did, and I don't see what it has to do with mine. Hence my suggestion.
masak notes croseed wires in both directions
moritz well, your question "Why does the current rewrite of Rakudo need a VM independence layer?" indicates that you didn't
masak <masak> chromatic: "nqp is X". moritz: "why nqp is Y rather than X". chromatic: "I'd rather read 'why nqp is X'" 15:20
chromatic I never wrote "NQP is x." 15:22
moritz chromatic: starting with nonesense like "4th annual rewrite" on twitter doesn't exactly help the discussion either
chromatic Why, how many versions of PCT/NQP have there been? 15:24
Or, perhaps more accurately, how many times has Rakudo had a rewrite of its Parrot layer?
TimToady not enough
moritz chromatic: dunno, but I'm pretty sure we're on the first one that's happening this year 15:25
masak chromatic: with "x" I meant the second-to-last paragraph in www.modernperlbooks.com/mt/2011/08/...-code.html
chromatic masak, and that's not what I wrote.
moritz I don't quite see the "annual"
15:25 wamba left
chromatic masak, do you see the phrase "NQP" anywhere in that post? I don't. I didn't use "NQP" for a very specific reason. 15:26
TimToady 4th annual == '4x a year' vs '1x for 4 years' is a potential misunderstanding here
masak chromatic: which layer do you mean, ooc?
chromatic: 6model?
chromatic The VM abstraction layer within NQP-rx.
moritz rakudo/nom doesn't use NQP-rx at all.
masak is confused now
chromatic: how much do you know about current Rakudo development? 15:27
finding that out may save us some time.
chromatic All of the PIR gets shuttled into an abstraction layer, correct?
moritz please define "All of the PIR" 15:28
there's lots of unabstracted generated PIR code in a rakudo/nom build
chromatic Rakudo used to have some handwritten PIR.
moritz and it still has, but not much
chromatic NQP-mumble had an inline PIR syntax.
masak there's an nqp:: namespace that can be used in Rakudo, if that's what you mean... 15:29
moritz because it caused lots of problems
chromatic: the nqp still has an inline PIR syntax.
15:29 wamba joined
chromatic Is the current handwritten inline PIR getting abstracted away? 15:30
masak we did remove .pir files from the nom branch: pmthium.com/2011/06/14/rakudo-nom-r...pir-files/
moritz for example if you did Perl 6 introspection of routines written in PIR, you'd get a BOOMO very soon
*BOOM
chromatic: some of it. Not all.
chromatic What part of what Patrick wrote in "the pir:: opcodes will ultimately replaced with abstract nqp:: operations that can be more universal than just Parrot." is wrong then? 15:31
moritz just do an ack -iw pir src/ in rakudo to see what's still there
chromatic: it was overly optimistic 15:32
masak PIR won't go away anytime soon. :)
chromatic Is that not a goal?
TimToady depends on whether PIR evolves into a more usable direction 15:33
mls What's wrong in moving some pir from rakudo to nqp? The pir itself doesn't go away.
tadzik istr Parrot people think about removing PIR one day. It seems like a logical step to abstract PIR away then
mls Isn't it a good thing to have the vm specific stuff in one place?
TimToady from the viewpoint of a language, yes 15:34
15:34 uasi joined
moritz chromatic: since nqp::split compiles down to pir::split, the PIR stays 15:34
TimToady not necessarily from the viewpoint of the VM :)
moritz in some snese
*sense
chromatic So what of all of this is incompatible with what I wrote? 15:35
15:36 Trashlord left
moritz chromatic: you made it sound as if you meant NQP with the abstraction layer, and as if the abstraction layer was its primary purpose 15:36
chromatic: as I mentioned in my blog post
15:36 Trashlord joined
masak I also (wrongly) took "the abstraction layer" to mean "nqp". 15:37
chromatic Out of my entire post, that's all the message you took?
masak surely not.
moritz chromatic: of course not
masak it was a nice post, overall.
moritz chromatic: and I never claimed to reply to the entirety of your post
masak I liked the metaphors.
TimToady chromatic: you seem a bit determined to pick a fight 15:38
chromatic TimToady, I'm not pleased with a bunch of gossipy speculation on IRC as to my motives and meaning based on a single sentence where I didn't name the thing people seem to be assuming I named.
moritz chromatic: I just found something that sounded wrong (althought it might not have been wrong if interpreted defensively), and wrote a blog post that clarified it
chromatic If I wanted to pick a fight, I wouldn't be subtle about it. 15:39
moritz chromatic: oh, it's not a single sentence, you've made plenty of pejorative remarks towards NQP before
oh, you think that's subtle? /me *chuckles* 15:40
masak chromatic: in www.reddit.com/r/perl/comments/jsw5...qp/c2euj4w you seem to be very plainly talking about NQP, and not being happy about it.
chromatic Sure, I think Rakudo and Parrot have taken the wrong technical directions and are getting wronger.
I wrote a post about that yesterday in fact. 15:41
moritz chromatic: indepently of technical matters, how do you feel about rakudo potentially targeting other backends than parrot?
chromatic Independent of technical matters? I have no current interest in working on it, but I'm not going to tell other people what to work on or not. 15:42
moritz chromatic: and how do you feel about it?
I didn't ask what you would tell other people about it
masak chromatic: "another project external to both Parrot and Rakudo" -- just so I understand here, which external project *did* you mean? what should we have understood you to mean here?
chromatic I think it's a distraction currently, but probably good for the Perl 6 ecosystem in the long term. 15:43
masak "another" means "besides Parrot and Rakudo"
masak which one?
moritz chromatic: ok, thanks
masak chromatic: I'm asking because I keep re-reading that paragraph, and the answer that pops up in my mind -- even after your correction -- is NQP. 15:44
I think it might be a bit unclear the way it's stated.
15:44 M_o_C joined
chromatic But that point is more or less irrelevant to the point of the post. 15:45
That's my concern.
moritz chromatic: but which did you mean, if not NQP?
chromatic If I'd wanted to say "Look, worrying about VM independence right now in Rakudo is a silly distraction" I'd have written that.
I didn't write that because that's irrelevant to my point.
15:46 mkramer joined
moritz chromatic: I'm confused. 15:46
chromatic: you said you didn't write about NQP, but it was NQP you meant
chromatic Forget NQP. That point is irrelevant.
moritz chromatic: I wrote about NQP, and you implied I missed the point.
masak chromatic: your point seems to be that there's an extra layer between Parrot and Rakudo. your beef with us now seems to be that we thought it was NQP. 15:47
we didn't misunderstand you on purpose. we're happy to be corrected as to your intents. 15:48
chromatic As I wrote in the final paragraph, there are three projects and no one's sure which one is driving.
That is my point.
There is a PCT imported into Parrot. 15:49
There is an NQP-rx snapshot imported into Parrot.
There is an NQP which isn't the NQP which preceded NQP-rx but is a successor to NQP which isn't imported into Parrot, but is imported into Rakudo.
Then there's nom.
At least two of those projects are dead, deprecated, disused, discouraged, or some other word which starts with d. 15:50
Now try to figure out where a feature gets added.
moritz I'm not aware of that
which ones would be dead?
chromatic You tell me! 15:51
Are people encouraged to use NQP-rx? PCT?
moritz well, they all don't look dead to me
chromatic Does NQP-rx get any support?
masak chromatic: I think that's a good point. it's not a point I got from your post.
moritz does parrot get any suport?
does rakudo get any support?
masak has to go 15:52
good luck agreeing violently.
chromatic If the new NQP is the wave of the future, why should anyone use NQP-rx?
15:52 masak left
moritz because it's shipped with parrot, and battle-tested 15:52
and because parrot uses it for the compilation process, it's going to be there for a while
and it's covered under the deperaction policy (I think), so it gives users stability 15:53
(which nqp doesn't)
15:53 xinming left
chromatic It's only shipped with Parrot because Rakudo wanted it! It's an external project developed outside of Parrot so as not to fall under the deprecation policy! 15:53
Are you starting to see the problem?
TimToady I think it's obvious that we have two drivers here, and that's why we need an emulation layer that has enough flexibility to be driven from both ends.
moritz PCT and NQP-rx are really complementary: you use NQP-rx for parsing and building an AST, and PCT to compile it down to PIR 15:54
15:54 xinming joined
chromatic But there's a PCT as part of the Parrot distribution and NQP-rx isn't part of the distribution. 15:55
15:55 M_o_C left
moritz but NQP-rx needs parrot, so it uses parrot's PCT 15:55
chromatic But NQP-rx has a successor called NQP now.
moritz successor for Rakudo. It doesn't need to be the successor for everyone 15:56
and it has a quite drastic philosophy change compared to NQP-rx
(do you start to see a pattern here? :-)
chromatic Yes, I believe I mentioned rewrites. 15:57
moritz and just to be clear, we don't love rewrites, we do them when we see no better option
TimToady "I will not say, do not rewrite, for not all rewrites are an evil." --Gandalf
chromatic Does NQP-rx have a future? 15:58
Does NQP-rx have a maintainer?
Not that my post was about NQP.
15:58 birdwindupbird left
moritz like with all open source projects, it has a future if somebody makes a future for it 15:59
16:00 autin joined
moritz if your question is "will the Rakudo folks give NQP-rx a future", the answer is probably "no" 16:00
chromatic My question is "Is there a maintainer right now?"
moritz if you mean a formal role, no
TimToady but we haven't exactly ordered the horse to be sent to the glue factory either 16:01
chromatic Is it wrong to characterize it as a project of uncertain future, instigated by a project which no longer uses it? 16:03
TimToady emotionally laden words 16:04
why?
chromatic Well I'd like to get a straight answer. If that means being a little provocative, fine.
moritz is it wrong to characterize parrot as a project of uncertain future, instigated by a project which no longer uses it? 16:05
then "yes"
chromatic I don't understand, moritz.
moritz chromatic: is "yes" understandable?
chromatic Yes, but I don't believe you. 16:06
moritz chromatic: so would you rather have a "no"?
moritz confused
chromatic Does anyone maintain NQP-rx?
Is anyone going to?
Is there a good reason to use it?
Why does it continue to exist?
moritz irclog.perlgeek.de/perl6/2011-08-24#i_4319918 16:07
chromatic But again, that's not the point of my post yesterday.
arnsholt .u arrow up
phenny U+0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW (◌͖)
moritz -> decommute, will backlog 16:09
16:09 awoodland joined
TimToady ooh, a chance to backlog :) 16:11
16:12 Trashlord left 16:14 PacoLinux left 16:16 Trashlord joined 16:18 maja_ left, maja joined
mberends colomon: I've locally given tools/test_summary.pl a --timing option that does not delay execution at all when not used, and adds less than 6% to the time when used. I still hope you'll use it occasionally :) 16:20
colomon mberends++
mberends just finishing some final tests on OS X before committing...
colomon suddenly wonders how hard it would be to port Niecza to run on Parrot... 16:21
mberends about as hard as porting Rakudo to .NET ? 16:23
PerlJam colomon: at a guess--really hard.
16:23 mj41 left, PacoLinux joined 16:26 slavik left
jnthn evening, #perl6 16:35
mberends o/ jnthn
PerlJam greetings jnthn!
colomon \o
tadzik hello jnthn
jnthn is a little sick today :/ 16:36
16:36 wamba left
jnthn Was too energyless to look for the memory leak last night. May do better this evening. Maybe. :S 16:36
moritz wishes jnthn a quick recovery 16:37
tadzik insightful: ttjjss.wordpress.com/2011/08/24/wha...comment-83
jnthn Thanks. I'm taking the weekend and days around it as mostly offline break.
(Visiting some lovely friends who are very good at looking after me :)) 16:38
16:39 frhodes joined
jnthn On Rakudo to .Net port - largely I'm waiting for the PAST-in-NQP thing to resume that, same as we need for inlining. pmichaud++ and I discussed a bunch of stuff at YAPC::EU for the overall roadmap here, but it didn't make a ROADMAP doc yet. I'll fix that after my break if nobody beats me to it :) 16:41
Immediately priorities beyond nom -> master are the serialization bits, and getting an optimizer that can do static decisions about what multis will be called, when we can figure that out. 16:42
s:1st/ly//
16:43 agentzh left, frhodes left, frhodes joined 16:49 mj41 joined
benabik jnthn: PAST and POST are working for PIR generation in my Parrot branch. It comes with a nice side of much slower though. 16:49
jnthn: And are written in NQP, forgot that part.
jnthn benabik: Yeah, I read that.
tadzik benabik: NQP or NQP-rx?
jnthn benabik: Long story short, NQP needs an optimizer.
benabik tadzik: -rx, but I don't see any reason why it wouldn't work in the newer one. 16:50
bbkr_ how recv() in IO::Socket::INET knows there are no more bytes to receive? in other words - why github.com/cosimo/perl6-lwp-simple...le.pm#L156 does not hang forever?
jnthn (Which, yes, is on my todo list. I actually did have a barebones optimizer in nqpclr...)
tadzik bbkr_: I suppose Parrot socket is smart enough 16:51
moritz probably the peer closes the socket (or a timeout occurs)
bbkr_ peer closing socket on the other side answered my question. 16:53
and raises another one - is there a way to check if there are more bytes to receive from socket if this socket is not closed? 16:54
PerlJam bbkr_: that's what select is for 16:55
tadzik (which we don't have :() 16:57
(well, we do, but Parrot hasn't merged that yet)
(for the last 6 months or so)
bbkr_ ok, thanks. this is nice-to-have option in my MongoDB driver (to validate if response does not exceed declared length on open socket), but if it's NYI I can go without that. 17:01
17:01 Chillance joined
moritz I think you can always do a $socket.recv($number_of_byters) 17:01
17:01 awoodland left 17:03 uasi left
bbkr_ moritz: yes, and I do that. Mongo Wire protocol returns int32 first that declare how many bytes are there left to fetch. I wanted to implement/port protection against unexpected trash in response. but this can wait. 17:04
flussence nom: Buf.new: ??? 17:12
p6eval nom 6e4aa6: OUTPUT«Could not find sub &warn␤ in mu <anon> at /tmp/hDvQXpzmsa:1␤ in mu <anon> at /tmp/hDvQXpzmsa:1␤␤»
flussence didn't expect that...
17:12 dakkar left
benabik nom: ??? 17:12
p6eval nom 6e4aa6: OUTPUT«Could not find sub &warn␤ in mu <anon> at /tmp/kyl_Tz75xj:1␤ in mu <anon> at /tmp/kyl_Tz75xj:1␤␤»
jnthn nom: warn 'no warn yet'
p6eval nom 6e4aa6: OUTPUT«Could not find sub &warn␤ in mu <anon> at /tmp/DTMHeqSXF9:1␤ in mu <anon> at /tmp/DTMHeqSXF9:1␤␤»
jnthn ah
I bet Buf is trying to warn you it's NYI or something 17:13
But failing because there's no warn :)
flussence Buf.new()
nom: Buf.new()
p6eval nom 6e4aa6: ( no output )
benabik It's the ???
jnthn oh!
yes :)
flussence ISTR that woud die a few days ago...
s/$typo/$correct/g
jnthn didn't spot the ??? somehow. :) 17:14
flussence nom: Buf.new([0, 1, 2, 3]).perl.say
p6eval nom 6e4aa6: OUTPUT«Default constructor only takes named arguments␤ in method new at src/gen/CORE.setting:461␤ in mu <anon> at /tmp/HUIM2VDzw6:1␤ in mu <anon> at /tmp/HUIM2VDzw6:1␤␤»
flussence nom: my $a = Buf.new;
p6eval nom 6e4aa6: ( no output )
flussence nom: my $a = Buf.new; say $a.perl
p6eval nom 6e4aa6: OUTPUT«Method 'iterator' not found for invocant of class 'Buf'␤ in method reify at src/gen/CORE.setting:3502␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method eager at src/gen/CORE.setting:3815␤ in method join at src/…
mls jnthn: how do I do a type check in perl6.ops?
flussence ouch. 17:15
nom: my $a = Buf.new; say $a.^methods».name.perl
p6eval nom 6e4aa6: OUTPUT«("elems", "infinite", "item", "Int", "Num", "Numeric", "Str", "abs", "conjugate", "sqrt", "sign", "rand", "sin", "asin", "cos", "acos", "tan", "atan", "atan2", "sec", "asec", "cosec", "acosec", "cotan", "acotan", "sinh", "asinh", "cosh", "acosh", "tanh", "atanh", "sec…
flussence nom: my $a = Buf.new; say $a.^methods(:local)».name.perl
p6eval nom 6e4aa6: OUTPUT«()␤»
flussence er...
not quite implemented? :)
tadzik I suppose so :) 17:16
I think it's a stub in Boostrap
jnthn mls: v ~~ T is along the lines of STABLE(v)->type_check(interp, v, T)
mls thanks, will use that. 17:17
jnthn mls: Which in the usual case boils down to a several pointer comparissions to get an answer.
tadzik another insight on production-ready Perl 6: ttjjss.wordpress.com/2011/08/24/wha...comment-85 17:19
PerlJam then Perl 6 is ready! 17:20
O'Reilly already has a "book about Perl 6"
jnthn saw masak reading it the other day :) 17:21
bbkr_ I agree with cognominal on the "production ready" debate. Perl is meant for data processing, and pack/unpack is not still declared in spec. 17:24
PerlJam doesn't want a "proper equivalent" to perldoc.
PerlJam wants something better!
tadzik litchkind plans to write something close to metacpan.org/module/grok I suppose 17:25
flussence It's 2011, a perldoc clone should at least make use of colour terminals :) 17:26
pmichaud good morning, #perl6
jnthn hi, pmichaud
mls morning pm!
tadzik good evening pmichaud
PerlJam greetings Pm
tadzik flussence: doesn't perldoc? 17:27
it's pretty colorful for me
flussence hm, the default output is basically a manpage, I suppose it's limited by whatever the man code does.
pmichaud (okay, I guess it's actually "good afternoon" here.) 17:28
tadzik imgur.com/3DQE7
flussence I think the linux VT console started using colour to emulate bold/underline recently...
tadzik worksfortadzik
sjohnson a lot of work has gone into p6!
PerlJam flussence: looks like it according to tadzik's screenshot
flussence oh, there you go then.
mls pm: I've an idea for a different implementation of return: gist.github.com/1168212
17:29 masak joined
flussence those red bits are bold on my boring default setup... 17:29
masak lleho.
tadzik sjohnson: happyface!
sjohnson ( `ー´) 17:30
masak chromatic: with the best of my efforts, my summary of what you seemed upset about earlier is "you got that thing wrong that I hinted about near the end of my blog post, but I'm not going to spell it out because it doesn't matter." :/
pmichaud mls: what's the purpose of the different implementation? 17:32
tadzik sjohnson
++
eeps
sjohnson heheh
mls the idea is to not create a new continuation, but reuse the invoke continuation of the context
so no overhead for return
I think we might need something like this anyway to implement 'leave' 17:33
jnthn mls: Does that not accidentally bypass e.g. return type checks?
sorear good * #perl6
chromatic masak, my point is that I believe all of these efforts to work around the deprecation policy are increasing divergence and not improving things.
jnthn mls: Or am I misunderstanding?
masak chromatic: yes. agreed. 17:34
mls no, the perl6_return op does the type checking (code copied from perl6_type_check_return_value)
masak chromatic: but we don't work around the deprecation policy because we like being difficult.
jnthn mls: And unboxing?
masak chromatic: we do it because we're developing Perl 6.
jnthn (if it's not "is rw")
mls dunno about unboxing, but if it doesn't work with the current patch I don't see whay it can't be made to work 17:35
jnthn ok.
chromatic I have no intention of questioning anyone's motives. All I can do is describe my understanding of the entire process and point out where I think it needs improvement.
masak chromatic: and I agree with your conclusion. 17:36
chromatic: I disagree that an unnamed middle layer hurts things further. but we'll see.
mls It's just an idea with some proof-of-concept patch to show that it might work
tadzik I'm wondering about a possible performance win 17:37
mls So instead of having extra ops in the routines, we have a perl6_return op that does everything
pmichaud I'd like to see some timings to show how much this actually improves performance.
it feels like a premature optimization. 17:38
jnthn If I understand mls++'s patch correctly, it's a good chance of being a win...but what pmichaud++ said.
chromatic moritz, IFF features migrated into Parrot, it wouldn't bother me. But they haven't and they don't appear to, 6model notwithstanding. Divergence appears to be increasing.
masak maybe that was directed at me. 17:40
tab completion reaps another victim.
PerlJam funny, I didn't even notice he'd typed "moritz" until you said something 17:41
masak chromatic: what divergence I've seen doesn't worry me too much. do you have something particular in mind, assuming that 6model will get into Parrot?
(which would be really great, by the way)
pmichaud pct is diverging. 17:42
.oO( was it something I said? )
17:48
pmichaud reads posts.
jnthn :)
tadzik quick, get into #parrot and help with Select PMC!
masak chromatic: do you have something particular in mind? 17:51
pmichaud jumps into #parrot and "helps" with the Select PMC. :-)
mls moritz: there's a "say $elems;" in your &dir implementation, is that intentional? 17:52
tadzik mls: git pull
PerlJam wonders if select will be bikeshedded to death.
tadzik mls: we tracked that down this morning
mls ok, missed that. 17:53
pmichaud PerlJam: that's why I've been advocating that we prototype it in the rakudo repo, along with IO::Socket or whatever p6 api we decide to have. At least the bikeshedding occurs in one place. Also, whoever writes the implementation gets first dibs on what it looks like :)
tadzik and we can say "write your own if you don't like this one" and people will shut up :P 17:54
(no offence to anyone, I'm just looking funny in p6l direction) 17:55
masak I really like the idea of prototyping on the HLL level and then integrating stuff into Parrot. 17:56
pmichaud yeah
masak requirements flow top-down.
pmichaud that's really what happened when the HLLs were part of the Parrot repo, but moving things out of the repo meant that it didn't work well that way any more
dalek kudo/nom: 40fbe3e | (Martin Berends)++ | / (2 files):
[tools/test_summary.pl] add --timing option for simple benchmarking
sjohnson is lisp a compiled language?
tadzik which lisp implementation do you mean? 17:57
jnthn Is English a compiled language? :)
tadzik yeah, this ;)
mls pmichaud: return speed: seems to make a function with a single "return 1" 10% faster
tadzik ooh
tadzik waits for a recursive fibonacci benchmark :P
jnthn sjohnson: For many language you can write an interpreter or a compiler. 17:58
17:58 envi left
jnthn sjohnson: I'm pretty sure lisp has examples of both. 17:58
17:58 PacoLinux left
sjohnson jnthn: ok. what do you think it's most common usage is? 17:58
flussence test_summary.pl line 183: "processes all unfudged files" - but the code doesn't appear to ignore fudged ones...
masak chromatic: with the nom branch, Rakudo is taking a big leap forward in terms of features and general model robustness. you complain about divergence. when I ask for specific examples, you go silent.
sjohnson i would say for p5, running an interpretor. same with lisp maybe?
17:59 PacoLinux joined
tadzik the divergence is caused by Parrot not doing things well enough, I suppose 17:59
mls point is, with leave() we need to either do something like the patch does or add a continuation to every block
pmichaud I don't think we can implement leave() without some very specific parrot support.
jnthn mls: I'm starting to see the connection with leave() :)
mls tadzik: 10% isn't that much
tadzik mls: I still like it
pmichaud and so I'm hesitant to commit to a particular strategy for handling it before we see what we can get from parrot. 18:00
mls I'd call 10% premature optimization if it makes the code more complex
jnthn pmichaud: It may be that "find the correct return continuation and invoke it" is a sane approach, but yeah, I'd like to consider more. Especially given than it doesn't answer how LEAVE gets done.
pmichaud yeah, 10% here isn't a 10% overall speedup, it's just a 10% improvement for the return statement. 18:01
18:01 Tedd1 left
jnthn sjohnson: Dunno, I'm not much of a lisp user. I just know how its meta-model works. :) 18:01
mls not really, 10% for every function (regardless of return)
pmichaud 10% for every function containing one statement. 18:02
mls it's the wrap_return_handler code I want to get rid of
tadzik I don't think it's linear
chromatic masak, dispatch, subs, objects, primitives, etc.
18:02 Lorn left
pmichaud if a function contains a bunch of statements, then the percentage reduction is obviously much less :) 18:02
tadzik chromatic: Parrot's metamodel turned out to be not enough. He-who-must-not-be-named has its own, working for us, and now Parrot wants to adopt it. What's wrong with prototyping stuff outside of Parrot?
mls yes, of course. as I said, 10% isn't much. 18:03
18:03 simcop2387 left
pmichaud anyway, I'm not opposed to the patch -- I'm glad to see it developed -- but I'd really like to see how we'll handle leave too. 18:03
chromatic Nothing's wrong with prototyping. Whoever said otherwise?
mls you mean LEAVE{}, not leave(), right? 18:04
pmichaud mls: well, both.
18:05 miso2217 joined
mls leave() is easy 18:05
18:05 Lorn joined
tadzik chromatic: I had an impression that you don't really like nqp having its own objects, dispatching and so. If I'm wrong, nevermind 18:05
mls if you have the parrot ctx, just return from it (like the patch does)
masak chromatic: I think each of these features correspons to dozends of closed RT tickets. if we were still using Parrot's building blocks, they'd still be open.
corresponds*
chromatic tadzik, I don't. 18:06
PerlJam masak: um ... that sounds like part of chromatic's point to me. (in a meta way)
18:06 mkramer left
tadzik pardon then 18:06
masak PerlJam: yeah, I think so too.
PerlJam: part of talking past each other is that we probably agree to some extent.
PerlJam indeed 18:07
masak we're just being flamey and asbestosy about it.
18:07 simcop2387 joined
chromatic Divergence--especially for prototyping-is fine *if* convergence happens. 18:07
pmichaud chromatic: your post recommends "The right solution is to invent a time machine and not kick Rakudo out of the nest.". Given that time machines are in short supply, I couldn't tell what your proposed fallback solution is (if there is one)
masak chromatic: naturally.
chromatic pmichaud, kick stuff out of NQP and back into Parrot as much as possible.
tadzik everyone's waiting for m0 I guess 18:08
PerlJam chromatic: that doesn't not sound like a recipe for success right now
tadzik I mean, whiteknight++ plans to migrate 6model to Parrot
pmichaud I don't have any desire to be re-bound by Parrot's cultural and policy constraints.
PerlJam er, s/doesn't not/does not/
chromatic That's because Parrot's constraints are wrong
pmichaud No argument there.
chromatic and part of the reason they're still wrong is because this divergence continues.
mux who needs success?
chromatic Declaring Parrot as 1.0 and treating it as an end user black box product was foolish and wrong. 18:09
mls pmichaud: for LEAVE and friends, do you think that we could implement it with a pct block handler?
pmichaud mls: not likely.
mls: the problem is that we need some way of invoking continuations as parrot subs are being "rolled up"
mls and use some introspection in perl6_return to call the LEAVE blocks in the return case? 18:10
jnthn mls: Taht won't work.
pmichaud mls: I think we have to have Parrot automatically call our leave blocks.
jnthn mls: We have to unwind after running an exception handler too.
Unless it decides to resume, in which case we never unwind.
mls Yes, I'm pondering if we need the magic in parrot or on the rakudo side
pmichaud chromatic: I agree that "end user black box product" has been demonstrably wrong also. 18:11
chromatic I should add "in retrospect this is obvious". At the time it wasn't so obvious.
masak is there any way to back down from that decision?
mls we have control over return and exception unrolling, so it might work with rakudo
18:11 birdwindupbird joined
pmichaud I did say at PDS 2008 that I thought it was horribly wrong and that Rakudo couldn't possibly work with that. :) 18:11
chromatic Yes you did.
masak, first there has to be rough agreement that a problem exists here and second a rough agreement on what the problem is. 18:12
PerlJam This feels like an echo-chamber discussion without involving #parrot.
pmichaud PerlJam: I disagree.
PerlJam: it would be good for us to know what we seek from parrot before we seek it. :) 18:13
benabik PerlJam: There's a subsection of #parrot watching…
jnthn afk for a bit 18:14
flussence just realised test_summary.pl is inflating the total spectest count by about 14000 or so
pmichaud flussence: very likely.
flussence on the positive side, I've rewrote my graph thing to extract the numbers from make spectest, so I get a (working) parallel implementation for free. Might be feasible to redo the entire thing... 18:15
mls also afk...
18:16 autin left 18:19 wk left
PerlJam pmichaud: so ... what would you seek from parrot? I get the impression that putting things "back the way they were" would be counter productive. Would a faster release cycle help? Is the crux of the problem, the deprecation policy or something more? 18:23
mberends flussence++: excellent sleuthing! I'll look into fixing the 'plan' totals :) 18:24
pmichaud PerlJam: I'm no longer seeking things from parrot, tbh. 18:25
18:25 PacoLinux left
flussence mberends: it seems to be counting t/spec/* instead of t/spec/*.t, so every fudged file gets counted twice. It'd explain why my graph has random sudden spec changes... 18:26
mberends flussence: indeed, test_summary.pl:187, but istr that grep fails on a *.t because the directory names do not end in .t 18:27
flussence I just decided to use ack -G for mine :) 18:28
.oO( now there's an idea: making ack usable as a module... )
18:29
mberends ack is not always installed, I'd rather work around to not add a dependency (Debian's ack is called ack-grep for example)
flussence well, find | grep | xargs grep would work... 18:30
mberends yeah, that's an idea :)
jnthn grep...xargs...what're those? :P
flussence a series of tubes.
mberends oops
jnthn ;-)
jnthn , your handy Win32 troll :) 18:31
flussence (nooooo, not File::Find again...)
tadzik what's wrong with it?
flussence I dunno, I think I just like the command line stuff for being shorter 18:33
mberends the existing code collects all the filenames as well, lines 197-198 extract them but do not filter (yet). 18:35
18:36 PacoLinux joined 18:37 ab5tract joined
mberends flussence: fixing and testing... # holding on to the pumpkin a little longer 18:37
18:41 Trashlord left 18:42 sftp left 18:44 sftp joined, daxim left 18:50 frhodes left 18:51 wamba joined 18:55 ab5tract left
TimToady would certainly like to bikeshed select to death and replace it with a sane event handler 18:58
pmichaud hands TimToady a commitbit. :-) 18:59
TimToady already abuses the commitbits he has
pmichaud "forgiveness" > "permission" :-P 19:00
19:01 mkramer1 joined
TimToady dunno, there are some things I've done that a heap o' people haven't forgiven me for yet :) 19:01
19:02 frhodes joined, molaf left
pmichaud I wonder if that's an unintended consequence of "Rule 2" somehow. :) 19:02
masak rakudo: say "forgiveness" gt "permission"
TimToady though, it's more like the things I haven't done that people hold against me :)
p6eval rakudo a55346: OUTPUT«Bool::False␤»
masak :)
pmichaud rakudo: say "forgiveness" gt "Permission" 19:04
p6eval rakudo a55346: OUTPUT«Bool::True␤»
pmichaud rakudo: say "forgiveness" gt " permission"
p6eval rakudo a55346: OUTPUT«Bool::True␤»
mberends ooh, the cheats!
TimToady ooh, a whitespace dependency
why do we call it "whitespace" when it's black on my terminal? 19:05
masak blame Gutenberg. 19:06
pmichaud because most of us are used to writing on light-colored media
19:07 frhodes left
TimToady like blackboards :) 19:07
sbp take a photo, the negatives might hold the answer
anybody got a 35mm film camera still?
mberends or a 35mm still camera? 19:08
TimToady I have lots of stills
tadzik I have lots of cameras
19:09 Trashlord joined
pmichaud stills are legal in Calif? 19:09
now I know where TimToady++ gets some of his wackier ideas. :) :)
tadzik since d156fc0bbf7 we now have non-blocking IO capabilities :)
masak wow! 19:10
19:10 nebuchadnezzar left
masak does that imply non-blocking sockets, too? 19:10
19:10 nebuchadnezzar joined
TimToady ooh, quick, write a thread scheduler 19:10
tadzik masak: long story short, we have select 19:11
I'm now writing IO::Select 19:12
masak \o/
tadzik it'd probably help if I used the original IO::Select even once, but yeah, whatever. I can look at the tests
19:13 supernovus joined
jnthn tadzik++ 19:14
tadzik do we have a way to obtain a File Descriptor from an IO handle? Something that could uniquely identify it?
TimToady tries to make a pun on still-born ideas, and fails...
masak all you got was an autopun. 19:15
TimToady always tries to level-up without also un-level-downing 19:16
masak that's strange and a bit loopy. :)
TimToady rarely GC's his continuations 19:17
masak this explains so much :P
pmichaud wonders how much GC takes place at all. :) 19:18
19:18 supernovus left, sftp left
pmichaud "one man's trash is another's treasure", and all that. :) 19:18
19:19 sftp joined
pmichaud U.S. east coast seems to be the site of the apocalypse. Earthquakes, an impedingin category 3/4 hurricane, and then Congress is back in session. 19:20
*impending
19:20 PacoLinux left
TimToady well, they all make trash, fershure 19:21
19:25 natureboy joined 19:27 javuchi1 left
pmichaud benabik: in what context does sub a:b['c'] { ... } arise, ooc? 19:29
benabik pmichaud: token special_character:sym['$<']
pmichaud: The abc example is just me trying to golf the error.
pmichaud benabik: where is that from?
lue hello planet o/ 19:30
benabik pmichaud: nom:src/Perl6/Grammar.pm
19:30 Sarten-X left
tadzik hello lue o/ 19:30
pmichaud that should be rewritten to use angles 19:31
tadzik what is the nom way of making RPA an Array?
pmichaud tadzik: normally RPAs become Parcels
but if you want it to become an array, use nqp::p6list
benabik pmichaud: Sorry, special_variable:sym['$<']
19:31 javuchi joined
tadzik pmichaud: I just want something I can map over 19:31
19:32 javuchi left
lue pmichaud: on the west coast, a once-every-300-years tsunami/earthquake is overdue, as well as some volcanic eruptions up in Washington :/ 19:32
pmichaud tadzik: are all of the elements of the RPA Perl 6 objects?
tadzik pmichaud: I'm quite sure none is 19:33
benabik pmichaud: Rewriting it would probably make it work, but wouldn't fix the underlying problem. That syntax should be disallowed or work properly. Getting the raw address of a PCT node in there instead is wrong.
pmichaud benabik: NQP doesn't try to be strict about syntax.
tadzik I think they're parrot strings
pmichaud benabik: NQP is lower level than that.
tadzik: if they're parrot strings, then simply putting them into an Array container won't help. 19:34
19:34 wk joined
tadzik pmichaud: I'm doing @ids.map: { %!handles{nqp::unbox_s($_)} }; 19:35
where @ids is an RPA
pmichaud tadzik: that won't work, for many reasons.
for one, you're passing an unboxed string to postcircumfix:<{ }> 19:36
tadzik pmichaud: ...but I just did unbox it?
oh, I see 19:37
pmichaud I don't think we're allowed to pass unboxed values to Perl 6 functions.
at least, not yet.
tadzik I should box it instead, I suppose
a typo of mine
pmichaud even if you box it, the problem then is that $_ is being bound to a non-p6 type
which means that the block invocation itself will fail
tadzik I see
pmichaud (because we can't pass Parrot Strings to P6 blocks) 19:38
tadzik so I can't use map?
pmichaud not on an RPA
tadzik oh, I can't use for either
benabik pmichaud: The assertion that NQP is too low level for syntax errors bothers me. If nothing else, the only reason I noticed nom wouldn't parse $< correctly is because I happened to be looking through the generated PIR. Silent errors are bad.
tadzik pmichaud: what if I nqp::p6list() it?
pmichaud benabik: yes, I can agree with that. The solution will be for NQP to disallow the syntax.
benabik: but there are lots of places where NQP "allows" things that aren't really valid. NQP is intended to be light and simple, ultimately.
19:39 Sarten-X joined
pmichaud tadzik: p6list doesn't help, because the elements aren't p6 objects 19:39
p6list doesn't know how to map Parrot values
tadzik I see
but I can manually iterate over them? 19:40
pmichaud you can use nqp::iterator($rpa)
and nqp::shift
19:41 birdwindupbird left
tadzik okay, I'd use that 19:42
pmichaud note that the iterator and shifted values both have to be bound to a variable of type Mu
tadzik hrm, can I load a dynpmc with a pir:: or Q:PIR, or do I have to stick them into Rakudo/nqp somewhere?
yeah, I know I can't assign 19:43
19:43 sftp left
tadzik rakudo: Q:PIR { loadlib 'OS' } 19:43
p6eval rakudo a55346: OUTPUT«===SORRY!===␤error:imcc:The opcode 'loadlib_sc' (loadlib<1>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 34186795␤»
pmichaud I don't remember if there's an opcode for dynpmcs. probably needs to be added to the static list. 19:44
tadzik rakudo: Q:PIR { $P0 = loadlib 'OS' }
p6eval rakudo a55346: ( no output )
tadzik nom: Q:PIR { $P0 = loadlib 'OS' }
p6eval nom 40fbe3: ( no output )
tadzik hrm
jnthn nom: pir::loadlib('OS');
tadzik nom: Q:PIR { $P0 = loadlib 'select' }
19:44 sftp joined
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤error:imcc:The opcode 'loadlib_p_p' (loadlib<2>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 15466162␤» 19:44
nom 40fbe3: ( no output )
jnthn nom: pir::loadlib__vs('OS');
tadzik I get Confused at line 1, near "Q:PIR { $P"
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤error:imcc:The opcode 'loadlib_s' (loadlib<1>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 32698035␤»
pmichaud tadzik: you might need a semi 19:45
Q:PIR blocks don't (yet) imply the semi at the closing brace
jnthn nom: pir::loadlib__vs('OS'); say 'ok'
tadzik nah, doesn't help
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤error:imcc:The opcode 'loadlib_s' (loadlib<1>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 331␤»
jnthn nom: pir::loadlib__Ps('OS'); say 'ok'
p6eval nom 40fbe3: OUTPUT«ok␤»
tadzik thanks jnthn 19:46
19:49 envi joined 19:50 envi left 19:51 envi joined
moritz tadzik: fwiw the &dir function has an example of how to iterate a ResizableStringArray 19:52
tadzik for now I have to struggle with loadlib :)
moritz it's not the prettiest of solutions, but works solidly 19:53
masak rakudo: sub superlative { $^s.subst(/y$/, 'i') ~ 'est' }; say "Perl 5's { superlative "spunky" } little sister!"
p6eval rakudo a55346: OUTPUT«Perl 5's spunkiest little sister!␤»
masak \o/
tadzik rakudo: sub superlative { $^s.subst(/y$/, 'i') ~ 'est' }; say superlative 'b'
p6eval rakudo a55346: OUTPUT«best␤» 19:54
masak :P
jnthn rakudo: sub superlative { $^s.subst(/y$/, 'i') ~ 'est' }; say superlative 'sly'
p6eval rakudo a55346: OUTPUT«sliest␤»
masak hey!
rakudo: sub esperanto-superlative { "plej $^s" }; say esperanto-superlative "bona" 19:55
p6eval rakudo a55346: OUTPUT«plej bona␤»
masak regulatity++
tadzik rakudo: sub esperanto-superlative { "plej $^s" }; say esperanto-superlative "ground" 19:56
p6eval rakudo a55346: OUTPUT«plej ground␤»
tadzik it's funnier if you know polish pronounciation :)
jnthn :D
masak :P
pmichaud I'm wondering if I should comment on various aspects of chromatic++'s and moritz++'s posts, or if I should just let things sit a while and see what develops. 20:00
moritz pmichaud: the latter probably wastes fewer resources :-) 20:01
pmichaud moritz: yeah, that's likely true.
moritz pmichaud: though of course if you found errors or inaccuracies in my post, I'd like to know anyway :-)
jnthn isn't planning to comment, fwiw 20:02
20:02 frhodes joined
TimToady has already sniped^Wcommented all he wants to... 20:02
chromatic Sadly I suspect nothing is going to change for the better.
pmichaud chromatic: yeah, which is why I'm thinking it's not useful to stir the pot. :) 20:03
both posts are excellent, btw.
chromatic I take the opposite approach. Sometimes you have to talk about the elephant in the room if you want to get rid of it.
tadzik chromatic: by "change for the better" you mean "Rakudo folks start to backport things down to Parrot"?
chromatic If that's the right solution, yes. It might not be. 20:04
pmichaud sometimes talking about the elephant in the room simply means people start to ignore you as being part of the elephant. That's been my experience with this particular elephant.
tadzik as if we had enough manpower
chromatic I see it as a question of priorities.
masak .oO( we need more elephant-power ) 20:05
20:05 bluescreen10 left
diakopter who's got the elephant-gun 20:06
jnthn I had one, but I left it in my trunk...
pmichaud the main comment I have is on "... in the hope that someday someone will add another VM backend ...". It's not merely a hope to us... it's part of the plan. Granted, it's a medium-term and not short-range plan, and perhaps it's chasing at windmills, but that is where we intend to go.
lue From those two posts, I gather that the core of Rakudo (the grammar) is written in NQP, compiled to PBC by nqp, then that compiles the P6 of the rest of the project to PBC.
sjn likes e elephants. especially the pink belgian ones.
masak chromatic: I have no reason to assume that your goals are different from the Rakudo team's. but we do seem to have different perspectives on that goal.
chromatic Sure. 20:07
From my perspective, the Rakudo approach seems to be "Add as many features as fast as possible" and that leads to lots of rewrites.
masak er.
chromatic That also leads to a lot of "Parrot can't move fast enough for Rakudo" and "Sure, we poked into lots of Parrot guts, but you can't break things per the deprecation policy." 20:08
mberends would Parrot people ever consider the total abolition of their deprecation policy? It seems to cause practical problems, but has only theoretical benefits.
masak chromatic: "add features => rewrites". you're not factually wrong, but that's an odd way of putting an essentially good causal relation.
moritz chromatic: if we knew how to add the features without having to redoing them later on, we would
chromatic: you know, the research aspect you mentioned yourself
TimToady From my perspective, Perl 6 will have the bigger elephant gun in a year, and will end up rescuing Parrot from the so-what-ers. 20:09
lue remember, nobody's ever implemented a complete Perl 6 compiler.
masak chromatic: maybe we're skewed by our experiences, but around here rewrites tend to correspond to improvements. improvements that couldn't be made before the first round was attempted.
20:09 REPLeffect left
masak lue: Yapsi is complete. 20:09
:P
chromatic Do you hear the sound of that cognitive dissonance? 20:10
lue (so things are going to be done right the first time 'round, unless you're lucky)
20:11 am0c left
pmichaud masak: why is there no column for Yapsi in the features matrix? ;-) (j/k) 20:12
masak chromatic: yes. I do.
chromatic From my perspective, it seems like there's always time for Rakudo to do it wrongish, then rewrite a couple of times but there's never time for Parrot to do it right.
cotto_work chromatic: I appreciate you stirring the pot and have yet to confuse you for an elephant.
masak chromatic: I can sympathise with that.
cotto_work Rakudo has the advantage of a spec. Parrot has the advantage of Rakudo having a spec. 20:13
masak chromatic: but on the flip side, this feels like Parrot saying "we want to be in on it too!" after an extended period of saying "Parrot is *not* supposed to be Perl 6-centric."
chromatic Well I've always said that point of view is on its face nonsense. 20:14
masak ok.
chromatic But again, I only speak for myself and have no desire to tell other people what they must do.
cotto_work Is TimToady the only one who can change his mind? ;)
lue has always seen Parrot as a bit P6-centric despite what's said. Then again, he's not that familiar with Parrot, so don't listen to him :) 20:15
20:15 molaf joined
pmichaud No, others have been able to change TimToady's mind. 20:15
diakopter pmichaud: heh
TimToady heh
masak you just have to take the chance during a very rare GC run :P 20:16
20:16 frhodes left
TimToady the trouble is that my mind has no clear deprecation policy... :) 20:17
lue ?(GC == "Garbage Collection")
masak lue: backlog :)
20:18 frhodes joined 20:19 frhodes left 20:20 frhodes joined
diakopter TimToady: I'm thinking the Apocalypses, Exegeses, and Synopses might do well to have some Epistles 20:21
maybe those are the RC entries 20:22
pmichaud 20:08 <chromatic> That also leads to a lot of "Parrot can't move fast enough for Rakudo" and "Sure, we poked into lots of Parrot guts, but you can't break things per the deprecation policy."
20:22 frhodes left
pmichaud fwiw, I don't think we've ever claimed a deprecation violation on a place where we poked into Parrot guts. 20:23
cognominal I am curious to know how to parse in Perl 6 a language which implictely add a statement terminator if the line ends and an operand is not expected. It should be nice to be able to set a variable when an infix or prefix operator has been recognized. I am not too sure how to do it elegantly.
pmichaud afaik, we fully accept that if we rely on Parrot guts for something and it changes, it's our problem and not Parrot's.
masak cognominal: that's how the optable parser works. 20:24
lue Epistles?
pmichaud If there's a counter-example, I'd like to be reminded of it.
lue (I just read what they are, but what would they do in the spec?)
diakopter lue: I was thinking of another outlet for canonical writings 20:26
masak I've been toying with the idea of modernizing the Exigeses. 20:27
cognominal masak: I know that the optable parser uses such a variable but it is not exposed to the grammar writer. He just declares the operator types and their respective precedences. 20:28
lue So have I, a sort of Exegeses for the Synopses. (My first thought for naming them was the "Tutorials", though I'm not attached to it)
pmichaud call them the "Lessons". Or perhaps they should be parables. :-) 20:29
"sermons"?
"indoctrination tapes"
cognominal or is this variable exposed? 20:30
lue As long as it doesn't start with an S, A, or E (or else confusion arises when typing things like "check S05" if you mean the "sermons")
masak cognominal: no, it's more like it threads through the whole semantics. you can't avoid it. 20:31
20:31 mkramer1 left, mkramer joined
cognominal so how can you write a parser that treats "a+b\n+c" as two statements and "a+b+c" as one. 20:33
masak just make "\n" a statement separator :)
cognominal nope 20:34
"a+\nb" would not be parsed correctly
chromatic pmichaud, I don't have any handy either, but even the question of "Wait, why did the order of hash iteration change?" seemed too close to that for me.
cognominal the \n must be a statement separator only when it makes sense. 20:35
masak cognominal: oh, I see what you mean.
20:35 Juerd joined
Juerd Hi. I'm going to do a feather dist-upgrade again 20:35
cognominal see javascript, or coffeescript as an example
Juerd Be prepared for random failure
masak cognominal: make "\n" am infix operator, then? 20:36
cognominal coffeescript is even weirder, because indentation is syntax.
pmichaud chromatic: That was more an expression of surprise for me.... since a previous "order of hash iteration change" caused Rakudo to break once before (and it occurred in a supported release)
I can see how that could be taken as an expression of a deprecation violation... although I think I took extra special care to make it clear that we weren't claiming such. 20:37
chromatic But then there's also the question of how much NameSpace refactoring is possible and when.
cognominal masak: does not work either
chromatic It's fair enough to blame that on Parrot's deprecation policy. I'm really uninterested in blaming anyone in particular. As far as I care to believe, pretty much everyone acts in good faith. 20:38
cognominal if the state variable is exposed, I think it can be handled elegantly in the grammar
20:38 REPLeffect joined
masak cognominal: I'd be happy to see a patch for that. 20:38
cognominal probably pmichaud is the more competent to give an answer.
20:38 REPLeffect left
pmichaud what "state variable"? 20:39
20:39 wk left
pmichaud afaik there ain't no such animal. 20:39
cognominal the rakudo qequivalent of the perl5 PL_expect 20:40
pmichaud afaik there ain't no such animal.
cognominal which says if an operand or operator is expected at a given point.
masak pmichaud: ISTU cognominal is proposing one.
pmichaud "expect an operator" and "expect a term" are handled by being at different points in the EXPR sub
20:41 dual left
tadzik nom: my $a = open 'README', :r; say $a.w 20:42
p6eval nom 40fbe3: OUTPUT«Unable to open filehandle from path 'README'␤ in method open at src/gen/CORE.setting:4645␤ in sub open at src/gen/CORE.setting:4755␤ in mu <anon> at /tmp/4Ds6POsYv2:1␤ in mu <anon> at /tmp/4Ds6POsYv2:1␤␤»
tadzik nom: say dir
p6eval nom 40fbe3: OUTPUT«.vim std_mine sprixel Perlito .ccache old_perl5 niecza mono-2.10.1.tar.bz2 .cache partcl-nqp log .pugs_history .bash_history nqp std_hilited 6model _sprixel01 p1 rakudo-star-2011.04.tar.gz .lesshst .aptitude .bashrc .cpanm nom-inst2 rakudo-star-2010.09 .ghc perl5 eval…
tadzik nom: my $a = open '.bash_history' :r; say $a.w
cognominal pmichaud, the problem is to handle language like javascript where a ; is a statment terminator only when it makes sense.
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤Confused at line 1, near "my $a = op"␤»
tadzik nom: my $a = open '.bash_history', :r; say $a.w
p6eval nom 40fbe3: OUTPUT«Bool::True␤»
tadzik I suppose that's broken
method w() is nqp::p6bool(pir::new__Ps('OS').can_write(nqp::unbox_s($!path))) 20:43
cognominal ISTU?
pmichaud ISTU = "I seem to understand"
cognominal ok, thx
jnthn nom: my $a = open '.bash_history', :w; $a.say "lolwut"; $a.close;
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤Confused at line 1, near "$a.say \"lo"␤»
jnthn nom: my $a = open '.bash_history', :w; $a.say("lolwut"); $a.close; 20:44
p6eval nom 40fbe3: ( no output )
jnthn nom: say slurp('.bash_history')
p6eval nom 40fbe3: OUTPUT«lolwut␤␤»
pmichaud tadzik: is .w supposed to report on the file itself or on the filehandle?
jnthn Oh, I'd assumeed it was on the file :)
In which case the answer is correct
pmichaud jnthn: same here.
tadzik pmichaud: I'd expect it to report on the filehandle
jnthn er, I hope overwriting .bash_history was OK.
tadzik maybe it's on the file
jnthn <= windows noob :) 20:45
pmichaud S32 says they are "file tests"
jnthn
.oO( I bashed the history... )
tadzik is there any way to check if the file is opened for reading then?
TimToady cognominal: all you have to do is make your infix parser recognize such a newline, and return failure 20:46
cognominal "my" infix parser?
pmichaud TimToady: except I think EXPR consumes <.ws> prior to calling <.infixish> 20:47
masak overload <.ws>
pmichaud overloading <.ws> would seem to need a state variable to distinguish operator and term position :)
TimToady examine the ws retroactively 20:48
pmichaud retroactive <.ws> could work, I guess.
cognominal for coffeescript with indentation as syntax, overlaoding <ws> is necessary.
TimToady no, I mean just look at what .ws returned last time
pmichaud I was wondering if instead the .termish should denote a statement end if it sees a \n
TimToady there are various possibilities 20:49
20:49 kaare__ left 20:51 [particle]1 joined 20:52 [particle] left
tadzik horray, I've stumbled on that GC bug again! 20:53
20:53 REPLeffect joined, Trashlord left
tadzik gist.github.com/1169203#file_gistfile1.txt 20:55
cognominal tries to get inspiration from the perl6 grammar. 20:58
jnthn tadzik: ooh 20:59
TimToady but yeah, keeping a lexer state variable is one of the many ways that P5 cheats, and we try to avoid keeping things other than where they belong in P6
pmichaud cognominal: we have a similar case when parsing closing braces followed by newlines, if that helps.
jnthn tadzik: Under gdb?
tadzik: Curious, that one looks like a potentially missing wb or something
tadzik: Though it could just be getting unlucky with memory layout.
tadzik jnthn: I think it's the same one as with the .WHY ordering 21:00
cognominal pmichaud: thx, that seems close enough
pmichaud cognominal: that's definitely a case where parsing of a term followed by a newline prevents certain types of parsing from occurring
21:00 wamba left
tadzik jnthn: doesn't segfault under gdb 21:00
dalek kudo/nom: b0da692 | (Martin Berends)++ | tools/test_summary.pl:
[tools/test_summary.pl] do not count plans in fudged files, flussence++
pmichaud flussence++ mberends++ 21:01
can we get some updated numbers? ;-)
mberends I have some from OS X
21:01 dual joined
mberends "Synopsis", "pass","fail","todo","skip","plan","spec" 21:02
"total", 13227, 3, 543, 1658, 15431, 21997
pmichaud nice
I like those numbers.
(I'll like it more when "pass" and "plan" are higher... but this looks good for now) 21:03
mberends the plan and spec were previously bogus, counting both the .t and the .rakudo files :/
jnthn We've yet to get back mass.t
flussence my current plan is to get a script that can reproduce the same numbers using make spectest, then use -j on that instead of trying to run multiple parallel builds myself
jnthn mberends: ouch!
benabik mass.t? Is that testing to ensure the various parts of the compiler weigh the right amount?
tadzik I thought Rakudo passes like 21k of tests 21:04
I mean, master
pmichaud master is in the 21k range, yes.
tadzik so spec is not much wider
flussence master does, but the stuff on smolder.parrot.org counts TODO as pass IIRC
mberends S32-trig/pi.t aborted 3 tests
tadzik jnthn: it stopped segfaulting. Memory layout, it seems 21:05
pmichaud afk, lunch 21:08
flussence on 54e85a2, my code's close now but not exact: {fail => 0, files => 462, pass => 14408, plan => 14951, skip => 1658, spec => 21861, todo => 543} 21:10
(test_summary from that revision prints "13230,0,543,1658,15431,31181,459")
(oh, I think the TAP tarball might be out of date... hm) 21:11
lue is there an easy way to remove certain elements from an Array, in this case any element that is the string "" ? 21:15
masak lue: grep { $_.chars }, @array 21:16
flussence if you don't need to modify it in place, it's easier
masak well, @array.=grep(*.chars)
flussence or that :)
21:17 REPLeffect left
lue well, .=grep(*.chars) doesn't work, but the first one does. 21:18
21:19 REPLeffect joined
flussence try ({$_.chars}), I noticed nom has a problem currying sometimes... 21:19
masak rakudo: my @a = "foo", "bar", "", "baz", ""; @a.=grep(*.chars); say @a.perl
p6eval rakudo a55346: OUTPUT«["foo", "bar", "baz"]␤»
21:19 wamba joined 21:21 PacoLinux joined
lue Curses. Using the grep command takes me from 2 failing tests to *-1 failing tests (and that's only because 'zeroth' is handled specially) 21:22
I get the error splice() not implemented in class 'Mu' . 21:23
tadzik Curses. Select hangs given a one-second-timeout 21:25
mberends bad news from the test_summary.pl: nom spectests are running quicker than master because of shorter startup times, but minimum per-test execution is up from about 3ms to 20ms in all test files :-( 21:28
21:31 Holy_Cow left
masak Curses. I never get anything done in the evenings anymore. 21:32
mberends masak: is that because you have a life nowadays? ;) 21:33
masak mberends: the correlation is too strong to dismiss...
lue
.oO(After I'm done hacking on Numbers::Ordinal, I should get to writing an IF game...)
21:34
masak but it'll get better, it seems. I've maneuvered myself into a position where I can have a Perl 6 day a week.
and then I'll work on macros :>
pmichaud ...masak got a life? 21:35
masak maybe that's a bit of an exaggeration.
I got a full-time job.
flussence this is odd, I get files=>459 after accounting for obvious things, test_summary.pl and make spectest say I should have 458. 21:36
pmichaud mystery spectests!
mberends *chuckle*
masak maybe it's testing '.' and '..' :P
diakopter obo 21:37
jnthn mberends: Curious. Once I'm back from $trip I'd like to dig into those numbers a bit.
21:38 molaf left
mberends jnthn: for more timing data I looked a little at setting up Popolnik whilst visiting moritz++, but got bogged down. I'll continue with that soon. 21:41
jnthn mberends: Every time you go to look at that, you get led ashtray :P
;)
mberends :) 21:42
masak jnthn++ # best pun in a while! :) 21:44
diakopter read that as 'in a whale' at first
masak bwhaha 21:45
it's jnthn, not Jonah.
21:45 Trashlord joined
mberends oh, recently autopunned: I haven't used 'goto' 'for' a 'while' :/ 21:46
masak wonders if that qualifies as an autopun 21:47
21:47 chromatic left
masak nom: role Container { method cry-for-help { say "Help, I'm trapped inside a $?CLASS.perl()!" } }; class Whale does Container {}; Whale.new.cry-for-help 21:49
p6eval nom 40fbe3: OUTPUT«Help, I'm trapped inside a Whale!␤»
jnthn Bible stories...told with parametric polymorphism.
masak there's a blogging series for ya.
lue is there an opposite to bless() in P6? 21:50
tadzik curse()
I do that all the time
masak the curse() builtin strips an object of its classhood.
having it stand there naked as just a low-level representation.
like a void *struct. 21:51
21:51 Chillance left
pmichaud hmmm... I wonder if "desecrate" or "defile" might be better :-) 21:54
or.... "excommunicate" 21:55
"banish"
masak "blaspheme", "maledict", "sacrilege".
pmichaud "expel" 21:56
masak "damn"
pmichaud "exile"
masak "jinx"
"hex" :P
pmichaud "curse" is what we tend to do at the beginning of variable names. $!this-damned-attribute
%!wtf ? 21:57
@*welcome-to-the-seventh-ring-of-hades
masak @!fsking-twigils
pmichaud %?under_scores_are_e_v_i_l_2
I've been trying to formulate a response to the hyphen-vs-underscore discusson on p6l 21:58
masak $!oh-and-apostrophes-aren't-evil?
21:58 frhodes joined
pmichaud I like apostrophes and hyphens. 21:58
masak too
diakopter std: say !$$*a
jnthn has found himself leaning to hyphens
p6eval std 516268a: OUTPUT«ok 00:01 119m␤»
jnthn I find them easier on the eye
21:59 chromatic joined
lue
.oO(underscores are just deflated hypens)
21:59
diakopter specks in the eye are better than planks/beams
pmichaud ultimately I want to have a convention whereby I always know when to use hyphens and underscores... my best formulation at the moment is "always use hyphens, and if it doesn't work it means there's a bit more magic going on that you need to be aware of before using this"
22:00 frhodes left
masak I will probably keep using underscores for ALL_CAPS_IDENTIFIERS. 22:00
pmichaud all, since ALL_CAPS already means "magic here", that's probably okay.
lue nom: my $em—dash = 5; say $em—dash; # the real question is why do only *some* hyphens work?
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤Confused at line 1, near "my $em\u2014das"␤»
masak tadzik: this might be of interest, btw: dev.perl.org/perl6/rfc/47.pod 22:01
22:01 MayDaniel left, wolfman2000 joined
pmichaud ...we still pay attention to the rfcs? ;-) 22:01
masak I do. :)
lue: because it'd be hard to distinguish a hyphen and an em dash?
sorear good * #perl6 22:02
tadzik masak: for now, I'm stuck with Select returning wrong results on timeout = 0, and hanging on timeout = 1 :)
masak lue: you could always subclass the standard grammar and add it to the appropriate rule.
pmichaud lue: because we need to preserve em dash as a possible operator for better obfuscation possibilities? ;-)
masak sorear: \o
tadzik hello sorear
lue nom: my sub infix:<–>($a, $b) { return $a..$b;}; say 2–5; # en dash 22:03
p6eval nom 40fbe3: OUTPUT«===SORRY!===␤Confused at line 1, near "say 2\u20135; #"␤»
lue :(
sorear pmichaud: I -1 the idea of using interior underscores to mark "magic" identifiers, for the simple reason that we can't mark one-word identifiers, and so it's inconsistant
pmichaud $_marked
sorear pmichaud: I would prefer to see us adopt the Unix libc convention of "magic internal identifiers have a single leading underscore"
right
and because of the SETTING === UNIT::OUTER genius, we don't need to ban _identifiers in user code 22:04
pmichaud sorear: I'm not saying so much that all magic identifiers should have underscores
22:04 frhodes joined
pmichaud that's not really my point. 22:04
my point is that underscore usage should be exceptional
sorear there's no possibility of "user defines a _putc_unlocked, bam linker error, let's make _\w+ erroneous)
22:05 frhodes left
flussence ...and now that I've run test_summary.pl again it changed to 459! argh. 22:05
tadzik waagh
tadzik--
mberends hi sorear: if we reschedule #phasers, what days/times would suit you?
sorear mberends: my schedule hasn't completely settled. I'd prefer to wait a week before deciding that. 22:07
flussence ok, all these numbers except for pass count match up... I get 14408, test_progress gets 13230. Going to check make spectest one more time
pmichaud wait a week is fine, I think.
mberends sure
pmichaud we can hold #phasers at the traditional time for now (more) 22:08
sorear: if you come across a better date/time that would suit you, let us know
22:09 im2ee left
lue all tests in Numbers::Ordinal pass! (for now, anyway. That'll likely change in the near future) 22:11
tadzik yay
lue: nom?
lue yes
22:11 mj41 left
tadzik mark it on the wiki then :) 22:11
lue Well, it doesn't contain all the features it should (in particular ordinal_digit). Once it does I'll change the wiki. 22:12
lue wonders how much farther past 'trillion' &ordinal should go 22:13
tadzik yay, it passes! 22:15
sorear lue: does this module produce English text? 22:16
flussence make spectest still says 458 files, wtf...
oh well, these numbers are close enough
mberends lue: you may have seen it, en.wikipedia.org/wiki/English-language_numerals 22:18
lue ordinal(25); # returns "twenty-fifth"
sorear lue: tip, modules like that are convnetionally named Lingua::EN::Something 22:19
lue mberends: Yes, I have. I frequently end up there when wanting english words like "duodenary"
22:20 REPLeffect left, REPLeffect joined
lue sorear: OK. I have thought about the language issue with a module like this. 22:21
sorear lue: there's an established convention in the Perl 5 community. I don't think we should ignore it
CPAN has lots of modules like Lingua::EN::Whatever, Lingua::DE::Whatever, Lingua::JA::Whatever 22:22
lue
.oO(I was thinking of something like Numbers::Ordinal::en though.)
masak lue: what sorear said. my first reaction to the module was "oh my, that's very English-centric". should maybe be marked as such. 22:23
tadzik behold! github.com/tadzik/IO-Select 22:24
22:24 frhodes joined
lue Alright. Just so you know, I haven't ignored this issue, I had just been more concerned with getting working code up to this point. (will rename module to something like Numbers::Ordinal::EN) 22:24
sorear why not Lingua::EN::Ordinal? 22:26
mberends jnthn: nom test timings for you at jnthn.net:~mberends/2011/perl/nom/...mary.times and s/nom/rakudo/ for master. That box smokes! Minimum test time on master 2.6ms, nom 12ms. 22:27
22:28 gfldex left
lue I could do that. In my mind Numbers::Ordinal::EN describes it better than Lingua::EN::Ordinal, but it doesn't matter too much to me how it's denoted as english. (Certainly won't do Lingua::EN::Numbers::Ordinal though) 22:29
sorear lue: see search.cpan.org/search?mode=all&...ua%3A%3AEN
22:30 gfldex joined
mberends lue: the point is that many other people have already adopted a convention, it helps you and them to "get with the program". 22:31
masak +1
let's not reinvent already round wheels.
lue Alright, I'll go for Lingua::EN (esp. seeing as someone already created Lingua::EN::Numbers::Ordinate) 22:32
jnthn mberends: thanks! 22:33
mberends: yes, it's fast :)
dalek osystem: a8e2417 | tadzik++ | META.list:
Add IO::Select
22:34 pothos left
lue [In case you haven't noticed, I'm not one to pay attention to P5 much, but I'll go along with it 'cos there's no reason not to :)] 22:34
22:34 pothos_ joined
mberends jnthn: and its uptime is 733 days :) 22:35
22:35 pothos_ is now known as pothos 22:36 wamba left 22:44 frhodes left
lue There, module renamed. (I just wish I could rename the repo on github to reflect the change more accurately) 22:44
tadzik can't you?
I think I did Pies -> panda 22:45
mberends istr the 'Edit' link lets you rename
tadzik or maybe I just created the new one and pushed the same things
masak lue: there's a rename function somewhere under Admin.
remember to update the ecosystem :) 22:46
tadzik and the wiki ;)
lue (that's why I couldn't find the rename function. NoScript hid the admin button) 22:47
tadzik NoScript on Github? Madness 22:48
masak NoScript is the only sane option in an insane world. 22:50
tadzik it may be sane, but I generally prefer to have working websites 22:51
22:52 frhodes joined 22:53 frhodes left
masak 'night, channel 22:54
22:54 frhodes joined
tadzik 'night Carl 22:54
22:54 masak left
lue actually I enabled javascript for github, but it needed to use an external website for the admin button 22:54
tadzik oddness 22:55
22:57 sili left
lue frequently big sites use many other sites for javascript (I hate when website use google analytics APIs in code that doesn't need it) 22:58
mberends aye 23:00
23:02 drbean joined
dalek osystem: cf986b1 | lue++ | META.list:
Update my module entry in META.list (Lingua::EN::Numbers::Ordinal)
23:04
lue I hear thunder. Goodbye planet o/ 23:05
23:05 lue left 23:09 whiteknight joined
tadzik good night #perl6 23:16
23:19 [Coke] joined 23:22 Alias left 23:24 plobsing joined 23:29 wamba joined 23:38 Patterner left 23:39 Psyche^ joined, Psyche^ is now known as Patterner 23:46 thou joined 23:57 Holy_Cow joined 23:58 Holy_Cow left