Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-08-17

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:00 Psyche^ joined #perl6
00:02 diakopter sorear: the disconnections seem to be resolved
00:02 cognominal I dont know why the simplest perl6 programs opens it 15 times in a row.
00:04 plobsing It is probably using &_config from parrot's config.pir to try to determine things. cacheing might be useful.
00:08 pugssvn r32022 | lwall++ | [STD] "$a.$b" produced bogus method call and didn't check $a correctly
00:12 infrared left #perl6
00:19 plobsing cognominal: the constructor for PCT::HLLCompiler loads it to provide the '$version' attribute. Rakudo creates 14 PCT::HLLCompiler objects.
00:20 sorear diakopter: Tentatively seems to be working now.  What did you do?
00:21 TimToady std:  sub g(:$1) { ... }
00:21 p6eval std 32021: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't declare a numeric parameter at /tmp/W1IEcuEbM6 line 1:␤------> [32msub g(:$1[33m⏏[31m) { ... }[0m␤Parse failed␤FAILED 00:01 113m␤»
00:22 pugssvn r32023 | lwall++ | [STD] disallow 'my $$$$a'
00:22 diakopter sorear: I didn't do anything :)
00:23 TimToady just like most "cures" for arthritis...
00:36 TimToady sorear: btw, I'm working on the export problem, but it's non-trivial because EXPORT:: currently sits in the lex, not the package stash, which might need to be rethunk
00:45 sorear erm.  export problem?
00:45 sorear oh
00:48 sorear diakopter: So, for strawberry, I should what, avoid all dependance on non-core XS modules?
00:51 miyagawa joined #perl6
00:53 sorear hello miyagawa
00:55 sorear diakopter: it;s back.
00:57 colomon joined #perl6
00:57 * jnthn -> sleep
01:06 redicaps joined #perl6
01:06 sorear diakopter: do you know who to talk to about fixing dalek's github plugin?
01:07 ingy colomon: you can compile rakudo* without installing it
01:07 ingy colomon: then run: PERL6=path/to/star/perl6 make test
01:07 ingy I think
01:07 sorear diakopter: wait a second.  No XS means no Class::MOP.  Do I need to de-Moose STD?
01:11 lue joined #perl6
01:11 lue cool! Someone tried to log in as me a couple hours ago! [er, I mean hi o/]
01:12 dalek niecza: d48cc27 | sorear++ | :
01:12 dalek niecza:       <pre>m Op.pm
01:12 dalek niecza: m Sig.pm
01:12 dalek niecza: </pre>
01:12 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Implement Op-level support for :($x, $y) := (1, 2)</pre>
01:12 dalek niecza:
01:12 dalek niecza: review: http://github.com/sorear/niecza/commit/d​48cc2739f77c6a73a0ce5d72d5e5bd8e9340c15
01:12 dalek niecza: d7d7109 | sorear++ | :
01:12 dalek niecza:       <pre>m CompilerDriver.pm
01:12 dalek niecza: m Niecza/Actions.pm
01:12 dalek niecza: m Op.pm
01:12 dalek niecza: m Optimizer/Beta.pm
01:12 dalek niecza: </pre>
01:12 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Beta is closer; still need to handle lexicals</pre>
01:12 dalek niecza:
01:12 dalek niecza: review: http://github.com/sorear/niecza/commit/d​7d7109da8e6358029a8f162ef74a54b9ddce209
01:12 dalek niecza: f6ca7b8 | sorear++ | :
01:12 dalek niecza:       <pre>m CgOp.pm
01:12 dalek niecza: m Decl.pm
01:12 dalek niecza: m Niecza/Actions.pm
01:12 dalek niecza: m Op.pm
01:12 dalek niecza: m Sig.pm
01:12 dalek niecza: </pre>
01:12 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Remove several fossils from Decl::SimpleVar</pre>
01:12 dalek niecza:
01:12 dalek niecza: review: http://github.com/sorear/niecza/commit/f​6ca7b8c920aba279efeab73a24ba27d29f2d93c
01:15 diakopter sorear: XS isn't a problem at all
01:16 diakopter sorear: I don't remember the specifics; I'll look at it again tonight.
01:16 sorear should I ask Alias for information on what modules are OK to use?
01:17 * sorear goes off and rereads perlport
01:17 diakopter no; that'd be a burdensome request
01:18 diakopter sorear: don't worry about it until I get back to you with error messages or a success report :)  I'll try tonight
01:23 gbacon joined #perl6
01:24 TiMBuS joined #perl6
01:45 petdance joined #perl6
01:59 whiteknight joined #perl6
01:59 diakopter sorear: ping
02:01 sorear pong.
02:02 sorear STDeco's sins according to perlport: * Manipulating paths without File::Spec * Using %ENV at all * Relying on XS modules * Character class ranges
02:03 sorear I am thinking of changing STDeco to use Storable and __DATA__ instead of YAML::XS and heredocs, anyway
02:04 ingy :(
02:04 ruoso joined #perl6
02:04 ingy __DATA__ and YAML::XS!
02:05 sorear That might work
02:05 sorear The big problem with heredocs is that they get interpreted twice
02:06 sorear leading to the beauty of YAML::XS::Load(Encode::encode_utf8(<<RETREE_END));
02:06 sorear because YAML::XS and perl both think that they should be doing the byte->char conversion
02:07 ingy I think YAML::XS has a utf8 bug :\
02:07 ingy I'll look into it
02:08 Ragnar1990 joined #perl6
02:08 Ragnar1990 left #perl6
02:10 literal joined #perl6
02:11 drbean joined #perl6
02:12 diakopter sorear: well, the Makefile would need entirely rewritten to work in cmd.exe/strawberry/dmake
02:13 Felipe__ joined #perl6
02:16 diakopter sorear: so, on that note, I'll have to give up on that effort, indefinitely
02:16 sorear diakopter: feel free to completely rewrite STDeco's makefile.  I do not like the current one at all.
02:17 diakopter I would, if I understood it in the slightest
02:17 sorear I don't really understand it either
02:18 sorear I'm not really good at the whole "bootstrapping" thing
02:18 diakopter then we are paddleless above a creek
02:18 sorear the crux of the makefile is ./viv -5 -o STD.pmc STD.pm6
02:19 sorear everything else is scheduling stuff to try and keep us out of bootstrap hell
02:19 sorear a lot of the stuff there is fossils from back when viv was in active development
02:20 diakopter odd... (more)
02:20 sorear in particular the STD.store stuff
02:20 diakopter die "Did you run make in src/perl6?";
02:20 sorear Storable can pull in a 15MB parse tree dump in about 1/16 of the time needed for STD to reparse it
02:20 diakopter is executed
02:21 diakopter when I run perl viv -5 -o STD.pmc STD.pm6
02:21 sorear STD.pm needs to be deleted
02:21 diakopter ok, I did that..
02:21 sorear I'm not sure if this is a Perl bug
02:22 diakopter now I get Can't locate STD.pm in @INC
02:22 sorear but STD.pm overrides STD.pmc if they're in different areas
02:22 sorear you haven't built STD yet
02:22 sorear the bootstrap version of STD.pmc is kept somewhere else
02:22 sorear stage0 I think
02:23 diakopter so...
02:23 sorear there are @INC shenanigans to find the correct version at each stage of the bootstrap
02:23 sorear they were mostly created by a random design walk
02:23 diakopter i see
02:23 diakopter installing Moose now.
02:24 sorear I think the current approach is to set $ENV{STAGE} = 0, which causes stage0 to be added to @INC
02:24 sorear recently Audrey changed the executables to add the $0 path to @INC in front of the system libpath
02:24 diakopter ok, this is fail.  need a much newer strawberry
02:25 sorear which avoids certain issues if there's an installed CPAN STD
02:25 sorear STAGE=0 adds /stage0 *in front of that*
02:26 diakopter in cmd.exe ?
02:26 sorear it might be saner if the built STD.pmc and the invariant files (CursorBase, RE_ast, etc) were kept in entirely different places
02:26 sorear STAGE=0 ./std CORE.setting # because STD isn't smart enough to compile .setting files on demand
02:27 jhuni joined #perl6
02:27 sorear STAGE=0 ./viv -o STD.pmc -5 STD.pm6
02:27 diakopter ok but that's not how it would look in cmd.exe
02:27 sorear STAGE=0 ./viv -o Cursor.pmc -5 Cursor.pm6
02:27 sorear those three command should be the minimal Unix build sequence with the current guts
02:28 Felipe__ joined #perl6
02:28 diakopter trying to install Moose on much later strawberry, now.
02:28 leprevost joined #perl6
02:28 miyagawa left #perl6
02:29 diakopter sorear: strawberry uses dmake.exe, btw
02:31 sorear would it help if --use-bootstrap-std became a command line argument
02:31 sorear instead of using %INC
02:31 ruoso joined #perl6
02:31 araujo joined #perl6
02:32 sorear http://tools.openoffice.org/dmake/index.html ?
02:32 diakopter yeah I think that's a version.
02:33 diakopter I think it's not distributed with strawberryperl, but instead it downloads some "fully-unencumbered" (old[er]) build of it from somewhere
02:33 diakopter upon first opportunity
02:33 diakopter nice; Moose installed ok
02:34 diakopter LibYAML installed ok
02:35 diakopter sorear: it seems to be working.  Compiling *.pm6
02:35 tylercurtis Do
02:36 * tylercurtis accidentally hit enter.
02:36 diakopter that's smiled upon
02:37 diakopter that works
02:37 diakopter and SPEEDY too
02:37 diakopter perl viv -e 'say("hi")'
02:37 diakopter 300ms
02:39 diakopter course, I have lines such as:   Γöé         ΓööΓöÇVAST::value__S_number, BEG: 4, END: 5, SYM: number, WS: 1,
02:39 diakopter afk&
02:42 tylercurtis Do super (callsame/with or nextsame/with) calls in Perl 6 roles and classes that compose roles have flattening semantics like Smalltalk traits?
02:43 TimToady those calls do not see roles at all, only whatever has been flattened into the classes, so I think your answer is "yes"
02:44 TimToady if the same role goes into more than one class, nextsame will find all of them
02:45 TimToady likewise if you mixin a role, you get a new anonymous class
02:45 tylercurtis rakudo: role A { method f { say 'A'; } }; class B does A { method f { say 'B'; callsame; } }; B.new.f
02:45 p6eval rakudo b64718: OUTPUT«B␤»
02:46 tylercurtis So, that's the correct behavior, right?
02:46 TimToady callsame can't be used for that
02:46 TimToady yes
02:46 TimToady and is intended to be like Smalltalk traits
02:47 tylercurtis Thanks. I thought that would be the case. I'm just trying to make sure I understand both in what ways roles are the same as traits and in what ways they differ.
02:48 molaf joined #perl6
02:52 tylercurtis rakudo: role A { has $!f; }; class B does A { has $!f; }; say 'alive';
02:52 p6eval rakudo b64718: OUTPUT«===SORRY!===␤Attribute '$!f' already exists in the class, but a role also wishes to compose it␤»
02:53 tylercurtis rakudo: role A { has $!f; }; class B does A { method f { say $!f; } }; B.new.f;
02:53 p6eval rakudo b64718: OUTPUT«Any()␤»
02:54 tylercurtis rakudo: role A { has $f; }; class B does A { method f { say $f; } }; B.new.f;
02:54 p6eval rakudo b64718: OUTPUT«===SORRY!===␤Symbol '$f' not predeclared in f (/tmp/ij1tqoqco6:22)␤»
02:54 TimToady well, we went beyond the original traits when we allowed attributes
02:55 TimToady but we were already starting to treat roles more like generics than traits are
02:57 tylercurtis "also is Foo" also seems to be an extension (although traits perhaps might have allowed that if Smalltalk allowed multiple inheritance).
02:59 Italian_Plumber joined #perl6
03:00 tylercurtis S14 suggests that one way to deal with conflicts is "to write a class method that overrides the conflicting role methods, perhaps figuring out which role method to call." How would the method in the class call the role methods?
03:09 TimToady I think it allows self.RoleName::meth
03:09 TimToady not sure what rakudo implements there though
03:16 mjk joined #perl6
03:23 perigrin_ TimToady: there has been later papers about stateful Roles from what I've heard
03:23 tylercurtis +1 to that (although I'm not sure I like that it's "self.RoleName::meth" instead of "self!RoleName::meth"). Much nicer than the aliasing Smalltalk traits require.
03:27 TomDLux joined #perl6
03:27 TomDLux evening, folks
03:28 * perigrin_ notes that there has not been later papers regarding his own attrocious manging of the English language.
03:32 perigrin tylercurtis: having listened to people complain about the aliasing that Moose requires for the same collision problem ... yeah I like that solution too :)
03:33 tylercurtis Evening, TomDLux.
03:35 TomDLux I've tried try.rakudo.org, and while it works fine for   say ( 1 | 2 | 3 ).perl ... but it generates an eror for assigning the junction to a var, and then doing something with the var. I have seen that in some discussion ... is try.rakudo.org just out of date?
04:02 ash_ rakudo: say (1 | 2 | 3).perl
04:02 p6eval rakudo b64718: OUTPUT«any(1, 2, 3)␤»
04:09 pmichaud I have a patch for nqp-rx that gives about a 9% improvement in Rakudo's compile speed.... should I commit it to Parrot or wait until after the release?
04:13 PerlJam pmichaud: presumably it also helps other compiler writers?
04:15 pmichaud PerlJam: yes; my only question is whether there might be a bug lurking that isn't adequately tested by the standard tests
04:16 * PerlJam leans towards committing than not
04:16 ash_ pmichaud: have you tried rakudo's tests too?
04:17 ash_ i presume, if it passes its tests, and still builds rakudo, that should expand its tests a bit too
04:17 pmichaud ash_: yes, it passes rakudo's tests also
04:17 pmichaud and nqp's
04:17 ash_ s/builds rakudo/builds rakudo and tests successfully/
04:20 karb joined #perl6
04:26 pmichaud okay, committing patch.
04:27 dalek nqp-rx: 6e87137 | pmichaud++ | :
04:27 dalek nqp-rx:       <pre>m src/Regex/Cursor-protoregex-peek.pir
04:27 dalek nqp-rx: </pre>
04:27 dalek nqp-rx:       <pre style='white-space:pre-wrap;width:81ex'>Allow protoregexes to avoid calling !cursor_debug when debugging is turned off.</pre>
04:27 dalek nqp-rx:
04:27 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/6​e871379b5077a32fa5fd9e70d5d59bad2680308
04:27 dalek nqp-rx: 4dc9c4b | pmichaud++ | :
04:27 dalek nqp-rx:       <pre>m src/PAST/Compiler-Regex.pir
04:27 dalek nqp-rx: </pre>
04:28 dalek nqp-rx:       <pre style='white-space:pre-wrap;width:81ex'>Avoid calls to '!cursor_debug' method when debugging is disabled.
04:28 dalek nqp-rx: This (combined with previous commit) appears to improve Rakudo
04:28 dalek nqp-rx: compilation speed about about 9% on the core.pm benchmark.</pre>
04:28 dalek nqp-rx:
04:28 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​dc9c4b0e34118c974c9f3dc9edb2a1527086c17
04:28 dalek nqp-rx: c95f68a | pmichaud++ | :
04:28 dalek nqp-rx:       <pre>m src/stage0/HLL-s0.pir
04:28 dalek nqp-rx: m src/stage0/NQP-s0.pir
04:28 dalek nqp-rx: m src/stage0/P6Regex-s0.pir
04:28 dalek nqp-rx: m src/stage0/Regex-s0.pir
04:28 dalek nqp-rx: </pre>
04:28 dalek nqp-rx:       <pre style='white-space:pre-wrap;width:81ex'>Update bootstrap with improved debug calling.</pre>
04:28 dalek nqp-rx:
04:28 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/c​95f68aadffc984663fe9b3084affddbd762e2cb
04:28 rcfox Is it possible to have class variables, rather than object variables?
04:28 pmichaud ?
04:28 rcfox "Static members" ?
04:28 pmichaud oh
04:28 pmichaud yes, use 'our' or 'my'
04:28 rcfox Instead of has?
04:28 pmichaud yes.
04:30 pmichaud afk for a short while
04:30 rcfox Thanks.
04:33 PerlJam rcfox: what are you doing with class variables?  (I don't think we have a good example for the book)
04:33 PerlJam (actually, I don't think we have *any* example for the book)
04:34 rcfox PerlJam: Actually, I'm using it in a grammar. :)
04:35 rcfox Give me a few minutes and I'll have something to show.
04:36 * sorear is back
04:37 redicaps left #perl6
04:39 sorear diakopter: nice!
04:41 sorear diakopter: So I guess binmode STDOUT, ":utf8"; isn't adequate to print arbitrary Unicode characters on Windows, huh.
04:46 Alias <sorear> should I ask Alias for information on what modules are OK to use?
04:46 Alias sorear: Most XS works just fine, unless it wants to link to some underlying libwhatever that we don't have
05:09 Cyrus joined #perl6
05:14 kaare joined #perl6
05:18 jdv79 XS--
05:20 rcfox PerlJam: http://github.com/rcfox/Perl-6-English-P​arser/blob/master/lib/Parser/English.pm
05:21 rcfox (Some of the alignment is wonky because cperl-mode doesn't like Perl 6 in some cases.)
05:21 dukeleto Something doesn't make sense about the graph at http://rakudo.org/status . It looks like there are more passing tests than spec tests. What is up?
05:22 * dukeleto would just like to say "Rakudo passes about X % of the perl 6 spec tests currently" for a presentation. /me would like to know what I should say X is
05:22 pmichaud the script I was using isn't counting tests correctly any more
05:22 pmichaud something changed in the test output or the structure of the tests.... and I haven't had a good chance to go back and fix it
05:22 dukeleto pmichaud: i see. could you give me a rough estimate for what X is currently?
05:23 pmichaud the hard part is knowing how many tests there actually are
05:23 pmichaud we don't have a good way of calculating that.
05:23 dukeleto pmichaud: ok. is there a better statistic that I can mention ?
05:24 * dukeleto is working on his PL/Parrot + PL/Perl6 talk for PDXPUG: http://pugs.postgresql.org/pdx
05:24 pmichaud when is your presentation?
05:25 sorear dukeleto: the last time X was calculated, it was ~80.  But it's really not a good measure because the spectests are really the rakudotests now
05:25 sorear the total amount of spectests has been changing over time
05:26 dukeleto pmichaud: my presentation is thursday at 7pm
05:26 pmichaud okay.  I can get you a number tomorrow, I think.
05:26 dukeleto sorear: yes, which is why i assumed that a % was better than saying "we pass 12,454 spec tests"
05:26 dukeleto pmichaud: cool! I appreciate it.
05:27 sorear we passed 30k around June
05:27 pmichaud dukeleto: well, the problem with a percentage is that saying we pass 100% of 5K tests is a lot different from saying we pass 80% of 25K tests :)
05:27 tylercurtis rcfox: heh. I don't use \s+ or similar in my grammars because cperl-mode interprets it as a substitution.
05:28 dukeleto pmichaud: yes, both have their pitfalls, no better way to lie than with statistics
05:28 rcfox Heh, weird.
05:29 tylercurtis dukeleto: How about "We pass X% of the N spectests."?
05:30 dukeleto tylercurtis: sure. But it seems that N's wavefunction won't collapse until pmichaud observes it
05:31 tylercurtis dukeleto: True. But you can't know X until you know N.
05:34 am0c joined #perl6
05:38 * dukeleto has a few slides to get PostgreSQL database people interested in Rakudo, anybody have suggestions?
05:38 sorear giving a link
05:38 dukeleto sorear: a link to rakudo.org ? I plan on giving lots of links
05:39 sorear I meant to the slides
05:39 sorear so we could give context-appropriate advice
05:40 dukeleto sorear: ah, I am working on them now, will push a skeleton in a few mins. In the meantime, take a look at http://pl.parrot.org/plperl6.html
05:45 dukeleto sorear: http://github.com/leto/presentatio​ns/raw/54ca63ec7d4f81ebe5f4ba031b1​5b7c80fdc2196/2010/PDXPUG/pres.pdf
05:45 dukeleto sorear: that is just a rought skeleton, i haven't added in the example code for PL/Perl6 yet, but gives you a feel for it
05:46 dukeleto sorear: i want to excite and attract developers to PL/Parrot+PL/Perl6 and therefore parrrot and rakudo. any suggestions you have regarding that would be greatly welcome
05:49 lucs joined #perl6
05:51 * sorear wonders if a slightly fancier demo would be an improvement
05:54 dukeleto sorear: what kind of slightly fancier demo?
05:55 dukeleto sorear: you mean a fancier example stored procedure in PL/Perl6 ?
05:56 sorear yes
05:56 plobsing that second PL/Perl6 demo makes me wish for "@_ -> ... { ... }" as a kind of let-like syntax
05:56 sorear I didn't see any PL/Perl6 example at all
05:57 plobsing the first link
05:57 sorear only a PL/PIR example which implements +5
05:57 plobsing http://pl.parrot.org/plperl6.html
05:57 dukeleto sorear: that link has a good example procedure
05:57 wtw joined #perl6
05:57 dukeleto sorear: i will probably use that example in the presentation, with possibly a few others
05:58 cjk101010 joined #perl6
05:58 sorear my ($limit) := |@_
05:58 dalek niecza: 1a512a6 | sorear++ | :
05:58 dalek niecza:       <pre>m Op.pm
05:58 dalek niecza: m Optimizer/Beta.pm
05:58 dalek niecza: </pre>
05:58 dalek niecza:       <pre style='white-space:pre-wrap;​width:81ex'>Beta-reduction: decls and bare blocks</pre>
05:58 dalek niecza:
05:58 dalek niecza: review: http://github.com/sorear/niecza/commit/1​a512a6468f12860facf9a90f874324bdcaea84b
05:58 dalek niecza: d059983 | sorear++ | :
05:58 dalek niecza:       <pre>m CompilerDriver.pm
05:58 dalek niecza: m Op.pm
05:58 dalek niecza: m Optimizer/Beta.pm
05:58 dalek niecza: </pre>
05:58 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Finish fixing and put beta-reduction live
05:58 dalek niecza: 30% decrease in test suite runtime, -15K SAFE.dll, -80K compiled testsuite</pre>
05:58 dalek niecza:
05:58 dalek niecza: review: http://github.com/sorear/niecza/commit/d​05998330f985de7e4c0d13eddbe20b8df667494
05:59 sorear How much incremental time would it take to get, say, PL/Lua working?
05:59 dukeleto plobsing: yeah, the -> ... { }(|@_) looks a bit scary to a newcomer. What is that (|@_) syntax called?
06:00 sorear dukeleto: Would it be possible to just use $^limit?
06:00 dukeleto sorear: basically, PL/Parrot needs to know where an HLL pbc lives, then it loads that in a Parrot interpreter for that HLL, and then a bit of wrapper code is needed to execute strings of Lua and data marshall
06:01 dukeleto sorear: could be. how would $^limit be used ?
06:01 * sorear needs to come up with a bunch of concrete syntaxes for Niecza's IRs
06:01 * sorear is looking at 56,500 lines of yaml dump
06:01 sorear CREATE ... $$
06:02 sorear [+] (1, 1, *+* ... $^limit);
06:02 sorear $$
06:02 plobsing that would be really nifty
06:02 dukeleto sorear: look at http://github.com/leto/plpar​rot/blob/master/plperl6.pir for how the data marshalling is done in PL/Perl6
06:03 sorear S06:1733 "Placeholder variables"
06:04 sorear already handled in Rakudo
06:04 * tylercurtis wants Smalltalk's semicolon but isn't sure he actually has any use for it.
06:04 dukeleto sorear: i will try adding a test using $^limit now
06:05 tylercurtis rakudo: (.say: 'foo'; .say: 'bar') given $*OUT
06:05 p6eval rakudo b64718: OUTPUT«foo␤bar␤»
06:08 dukeleto sorear: http://gist.github.com/528644 <-- error i get trying to use placeholder variables
06:09 dukeleto sorear: seems like I can't do sub (@_) { ... } with placeholders
06:11 itz joined #perl6
06:11 au|irc joined #perl6
06:11 andyrhee joined #perl6
06:11 japhb_ joined #perl6
06:12 plobsing dukeleto: it appears you can wrap using just 'sub {' in stead of 'sub (@_) {' and it does the right thing wrt placeholders vs @_
06:12 plobsing rakudo: (sub { say $^limit })(12)
06:12 p6eval rakudo b64718: OUTPUT«12␤»
06:12 plobsing rakudo: (sub { say @_[0] })(12)
06:12 p6eval rakudo b64718: OUTPUT«12␤»
06:13 szbalint joined #perl6
06:13 jdv79 joined #perl6
06:13 dukeleto plobsing: does it work within an eval ? i will try it
06:14 chitragupt joined #perl6
06:14 dukeleto plobsing: i get "Too many positional parameters passed; got 1 but expected 0" when I remove the (@_) signature for the sub
06:16 tylercurtis If you don't use @_ within it, it won't expect a *@_ parameter.
06:17 plobsing dukeleto: can I see the code giving you this error?
06:17 dukeleto rakudo: (eval q<<< sub { say 42 } >>>)(1)
06:17 p6eval rakudo b64718: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤  in <anon> at line 1:/tmp/EpcYfeWj84␤  in main program body at line 22:/tmp/EpcYfeWj84␤»
06:17 dukeleto plobsing: there ya go
06:18 plobsing well sure it'll give you that error. your block is smart about how many params it expects and enforces that.
06:18 plobsing rakudo: (eval q<<< sub { say $^x } >>>)(1)
06:18 p6eval rakudo b64718: OUTPUT«1␤»
06:18 plobsing rakudo: (eval q<<< sub { say @_[0] } >>>)(1)
06:18 p6eval rakudo b64718: OUTPUT«1␤»
06:18 dukeleto plobsing: i guess that test is just wrong, then.
06:19 * dukeleto goes and fixes stuff
06:19 sorear dukeleto: sub (@_) { is wrong
06:20 sorear sub (@_) { expects 1 array parameter
06:20 sorear sub { expects any number of parameters
06:21 sorear sub { with the @_ placeholder used is equivalent to sub (*@_), _not_ sub (@_)
06:21 sorear also you should be passing parameters :flat
06:21 moritz_ sub { } expects zero parameters
06:22 plobsing rakudo: (sub  { }).signature.perl.say
06:22 p6eval rakudo b64718: OUTPUT«:()␤»
06:22 dukeleto sorear: i flatten the array in PIR
06:23 dukeleto i am running into the issue that sub {} expects 0 zero parameters, as moritz++ says
06:23 dukeleto so perhaps I want (*@_) ?
06:24 am0c joined #perl6
06:24 sorear sub {} expects
06:24 plobsing dukeleto: you want *@_ if you want weak argument-arity like perl 5
06:24 sorear 0 parameters if no placeholders are used
06:24 sorear 0-infty parameters if @_ is used
06:25 dukeleto I still get that same error "Placeholder variable cannot override existing signature" when if I use *@_
06:25 foodoo joined #perl6
06:25 cjk101010 I thought sub {} is equivalent to sub (*@_) {}?
06:25 dukeleto s/when if/when/
06:25 sorear forgive my pg-stupidity, but surely somefunctionwithnoargs(1,2,3) failing is a GOOD thing?
06:25 sorear if you want the function to accept any number of parameters, use @_ in it somewhere
06:26 moritz_ cjk101010: not anymore
06:26 moritz_ dukeleto: why don't you let the user declare a signature?
06:26 sorear or maybe allow some kind of WITH SIGNATURE clause in the header, of pg lets you do that
06:27 dukeleto sorear: yes, i agree. But there is the definition of the function signature to Postgres, and the definition of the signature in PL/Perl 6. I was telling Postgres to expect 1 param, but not telling Rakudo to expect any, and that is probably just a bad test on my part
06:27 cjk101010 moritz_: what's the difference? and since when it isn't equivalent anymore? It's written in the 5-to-6
06:27 cjk101010 +tutorial
06:28 moritz_ cjk101010: these days when there is no signature, perl tries to be smart about guessing the arity, besed on your (non-)usage for @_ in the subroutine
06:28 moritz_ I'll update the 5-to-6 thing,  thanks
06:28 cjk101010 ok… thanks for the information.
06:28 sorear dukeleto: so basically this stuff lets you add new SQL functions in any language?  like select * from log where channel = '#perl6' and my_p6_regex(text); ?
06:29 dukeleto moritz_: i have thought about that. With PL/PIR, the user *does* declar the signature. But currently, I don't do that in PL/Perl6. Perhaps I should. Pointy blocks (like described on http://pl.parrot.org/plperl6.html) alleviate the situation a bit, but placeholder variables seem to be borked
06:29 cjk101010 by the way, great work with perl6… I'm really impressed
06:29 uniejo joined #perl6
06:30 dukeleto sorear: PL/Parrot lets you embed any Parrot HLL as a language to write stored procedures in Postgres. So, yes :)
06:30 tylercurtis dukeleto: well, you could probably do { blablabla $^placeholder }(|@_)
06:31 dukeleto moritz_: one concern is security. if the user can specify the function name and signature, they can overwrite other functions and do nefarious things. PL/PIR still uses anonymous subs, but allows the user to specify the signature, since in PIR the signature is actually part of the subroutine
06:33 dukeleto moritz_: the stored procedures are actually all anonymous, so that other procedures can't modify them, only call them from SQL.
06:33 dukeleto moritz_: so, what I actually want is a way for an end-user to specify a signature but not the name of the sub. That is why I thought pointy blocks would be what I wanted
06:34 moritz_ dukeleto: you can do that with sub to
06:34 moritz_ rakudo: my $x = sub ($x, $y) { say $x * $y }; $x(2, 5)
06:34 p6eval rakudo b64718: OUTPUT«10␤»
06:35 Su-Shee joined #perl6
06:35 dukeleto moritz_: perhaps I can just have the end user write "($x,$y) { ... }" and I can prepend a "sub " to it before compilation. interesting.
06:35 sorear dukeleto: I've never been in a position to use stored procedures; the question was aimed at clarifying how they were used
06:37 tylercurtis Good night, #perl6!
06:40 dukeleto sorear: they are used when a user wants to call code written in languages other than SQL from SQL
06:40 plobsing dukeleto: how about expecting a code object returned from the eval? users can overwrite names all they like because you only hold on to anonymous references to code objects.
06:42 sorear How demanding is pg's security model?
06:42 sorear Should Alice be able to do &infix:<+> := &infix:<->; and affect Bob's PL/Perl6 procedures?
06:42 dukeleto plobsing: i thought that was what eval q<<< sub .... >>> did ? I store the output of the eval in a PIR variable and invoke it
06:43 sorear (Do stored procedures even have owners?)
06:43 plobsing dukeleto: sure, but if you do that, why be worried about subsequent overwrites? your reference won't change out from underneath you.
06:44 dukeleto sorear: that is a good question. Usually only the database super-user can write stored procedures, but anybody else can call/use them
06:45 dukeleto sorear: but if you allow anybody to write them, then your example with modifying &infix can happen
06:46 dukeleto plobsing: perhaps my worry about overwrites is unnecessary. But I only hold onto the code object until it is run, then that goes away.
06:47 dukeleto plobsing: so I think that if two procedures named foo are defined, the last one wins
06:47 dukeleto plobsing: i am not even sure if it is a huge issue, because in theory, DBAs would only let a trusted user write procedures
06:49 dukeleto plobsing: but PG has a concept of trusted and untrusted languages. The untrusted ones have a bunch of restrictions about what they can do, so my worries about overwriting defintions are mostly for when/if the trusted version of PL/Perl6 happens
06:52 dukeleto is there a way to syntax check a snippet of Rakudo from PIR without running it?
06:54 sorear call perl6;Perl6;Grammar.parse maybe?
06:54 sorear you'll need to set up a few environmenty bits
06:54 plobsing don't phasors and macros need to be evaluated in order to parse Perl 6?
06:55 moritz_ yes
06:56 plobsing so then you can't parse Perl 6 with a guarrantee of not running anything
06:56 sorear std: BEGIN { say 2 + 2 }  # You can fake it pretty well
06:57 p6eval std 32023: OUTPUT«ok 00:01 115m␤»
07:02 * dukeleto wonders if/how phasors should be dealt with in PL/Perl6
07:03 plobsing can you parse in an extremely paranoid sandbox?
07:03 sorear Not in current Rakudo
07:05 plobsing in the extreme case you could fork off a child and drop all perms. How often do stored procedures get parsed?
07:05 mathw You could have a subset of Perl 6 which didn't allow macros and compile-time phasers I suppose
07:07 * dukeleto would probably be fine with a subset of Perl 6 without phasors/macros
07:07 dukeleto plobsing: in theory, they should be only parsed once. I think that is true currently.
07:16 sorear Why are you so concerned about phasors, anyway
07:17 sorear What do you have against CATCH
07:17 pragma_ what the frick is a phasor
07:17 sorear They're actually spelled phaser
07:17 pragma_ oh, a phase changer?
07:17 sorear S04:1275
07:17 pragma_ now that makes more sense and less star-trekkie.
07:17 pragma_ carry on, gentlemen.
07:18 sorear the perl 6 naming process has always been pun-oriented
07:18 pragma_ a pun is fun
07:24 sorear Alias_: semi-OT: diakopter talked about Strawberry using a nonstandard make, some kind of old forked version of dmake.  Where can I read more about this?
07:24 dukeleto sorear: one could say that Perl 6 runs on puns
07:26 * dukeleto just caused an infinite loop in Parrot's GC with PL/Parrot. Maybe it is time for bed...
07:26 frettled Perhaps the basic type should be Pun
07:27 dukeleto frettled: one pun for Mu, one pun for me, ...
07:27 sorear dukeleto: I wonder what the security implications of embedding Parrot
07:27 frettled exactly :)
07:27 sorear 's GC into pgsql are
07:27 sorear How well does pg handle sigsegv?
07:27 dukeleto sorear: it core dumps
07:27 dukeleto sorear: the connection core dumps, not the master process
07:28 sorear pg forks after accept?
07:28 dukeleto sorear: for instance, there is a bug in IMCC that throws parse errors incorrectly, so syntax errors in PIR cause a core dump. Not fun.
07:28 sorear I'm more thinking of the fact that Parrot's mark recurses on the C stack
07:29 dukeleto sorear: pg forks a thing called a pg_backend for every connection to the database. So invalid PIR coredumps the backend
07:29 sorear so building a linked list with more than 50,000 or so nodes will dump core with standard Linux stacklimits
07:29 sorear (fixing this is nontrivial but a high priority)
07:29 dalek niecza: aae0b1f | sorear++ | :
07:29 dalek niecza:       <pre>m Op.pm
07:29 dalek niecza: m Optimizer/Beta.pm
07:29 dalek niecza: m RxOp.pm
07:29 dalek niecza: </pre>
07:29 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Enable regexes to use beta-opt</pre>
07:29 dalek niecza:
07:29 dalek niecza: review: http://github.com/sorear/niecza/commit/a​ae0b1f86037e798cfe56d456e608c3781711028
07:37 * sorear finds that he uses git-grep a lot more often than ack now
07:47 tadzik joined #perl6
07:47 tadzik ahoj
07:47 mathw oh hai tadzik
07:50 mjk joined #perl6
07:51 cono joined #perl6
07:52 sorear hellow tadzik
07:59 barney joined #perl6
08:12 moritz_ http://support.github.com/discussions/re​pos/3890-atom-feeds-contain-broken-html
08:14 avar I can also bring in a commit bot here that uses the github API and isn't broken like that
08:15 moritz_ now that would be nice
08:15 avar It needs everyone to add a post-receive-hook though: http://help.github.com/post-receive-hooks/
08:16 dakkar joined #perl6
08:17 avar This is how it looks like: http://paste.scsys.co.uk/48377 http://v.nix.is/~avar/bot.png
08:17 avar It tries to emulate the github timeline view
08:19 moritz_ hm; a bot could be pull-only and still use the github API
08:20 avar sure, but not the post-receive-hook api
08:20 avar which is lazier :)
08:20 sorear Why don't we just use CIA?
08:21 moritz_ it doesn't have the karma hooks that dalek comes with :-)
08:23 sorear karma hooks?
08:23 avar You could also make CIA announce commits in #perl6-secret, then have a bot there that funnels the messages here after performing regex replacements on them.
08:23 avar That'd probably be easiest if CIA does what you want, just ~30 lines of POE code
08:24 * moritz_ would probably need 200
08:26 moritz_ I currently don't feel up to actual work, maybe my blood pressure rises later to a reasonable levell, then I'll see what I can (and want to :-) do
08:26 sorear avar: why bother?  CIA already supports custom print formats
08:27 avar That was predicated on "if that's needed..."
08:27 avar you'd also need a name -> nick mapping
08:29 dakkar joined #perl6
08:36 mjk joined #perl6
08:43 dukeleto moritz_, plobsing, sorear: i just updated PL/Perl6 so that end users can specify the function signature and placeholder variables now work as well. Thanks for all the suggestions!
08:44 moritz_ o/
08:55 sorear yay
08:56 sorear I don't see a way to set up a nick mapping with CIA, although I can set the karma hook
08:56 sorear so y'all will need to have your CIA nickname be the same as your #perl6 nickname, I think
08:57 sorear (which need not be the same as your github id.  I think.)
09:02 timbunce joined #perl6
09:05 thebird joined #perl6
09:13 nadim_ joined #perl6
09:15 jnthn morning, 6folk
09:16 moritz_ mrnng
09:16 sorear hello jnthn
09:19 mathw lolitsjnthn
09:19 * mathw has a happy
09:20 nadim_ morning, I was reading Gabor's post about the +- operator (it wasn't clear if it was built in or gabor's) and I wondered if it was possible to defined junctions with user defined operators? can någon point me to an URL?
09:20 tadzik hello
09:20 nadim_ s/någon/someone/
09:20 mathw the +- operator in that post is a custom one
09:20 sorear nadim_: junctions and user-defined operators are completely orthogonal in rakudo
09:20 mathw autothreading of junctions should work over user-defined operators
09:21 mathw unless you specifically define them in such a way that it doesn't
09:21 masak joined #perl6
09:21 masak hola, #perl6!
09:22 jnthn como estas, masak?
09:23 jnthn .oO( I bet I got that wrong... )
09:23 nadim_ so $j = 3 +- 3 ; say 't'  if 4 ~~ $j ; # print t ?
09:24 masak jnthn: you seem to have gotten that right, modulo IRC-optional accents :)
09:24 jnthn heh
09:25 masak jnthn: I'm fine, thanks. still struggling a bit with sleeping on the right hours. why was it so easy in Italy, but so difficult here at home? :/
09:25 jnthn After 2 years, Slovak never got me writing its accents on IRC. :-)
09:25 jnthn masak: I dunno...maybe the need to get up in the morning for the conference helped? :-)
09:25 Trashlord joined #perl6
09:26 masak jnthn: a small part of me protests that those are not accents, but something else. I don't know if linguists actually separate the two, though.
09:26 arnsholt masak: You called? =)
09:26 moritz_ that's why :sameaccent got renamed to :samemark
09:26 masak jnthn: well, it was more like I woke up consistently at 7, and that was pretty convenient for the conference as well.
09:27 moritz_ http://www.perlmonks.org/?node_id=855407 please correct me if I wrote BS somewhere
09:27 arnsholt But yeah, the distinction between accent and not is kinda fuzzy
09:28 mathw saluton, masak
09:28 sorear masak: the general term is diacritical mark
09:28 sorear hence samemark/ignoremark
09:28 masak sorear: ah, thanks.
09:29 * sorear wonders how often the dakuten gets called an accent
09:29 masak sorear: so maybe Slovak things could be said to be diacritics but not accents?
09:29 jferrero joined #perl6
09:29 jnthn masak: They may be more than one type of thing... :-)
09:29 moritz_ is the french cedilla an accent?
09:29 nadim_ no
09:30 nadim_ non
09:30 arnsholt I'd say yes =)
09:30 jnthn moritz_: I'll try and write some kind of blog post in the next couple of days with an update on the state of things in this area.
09:30 mathw moritz_: looks as accurate as my knowledge can assess
09:30 arnsholt Is the dot over the i an accent, though? =)
09:30 masak mathw: saluton! what's the state of Form, and what's the next step in its evolution? :)
09:31 mathw The state is unchanged since R*
09:31 moritz_ did you mean "the dot over the ı"? :-)
09:31 mathw The next step is some documentation
09:31 arnsholt moritz_: Exactly =D
09:31 nadim_ accents is what make you pronounce domething slightly differently. The cedila makes a different phoneme. IMO of course
09:31 jnthn moritz_: Note that the meta-model for Rakudo will be re-written into NQP
09:31 mathw I also need to understand what exactly is going on with passing certain things to sub form() and whether what currently has to be done is right or not
09:32 jnthn moritz_: It will thus not need to be re-written per backend.
09:32 mathw \o/
09:32 jnthn Just re-worked once, which has to happen during the great metamodel upheavel anyways. :-)
09:33 mathw Rakudo on not-Parrot could be really really good
09:33 sorear actually the dakuten might be an accent, since it sometimes gets dropped or added for no reason
09:33 moritz_ jnthn: I don't think I understand. The metamodel needs to build on top of some primitives, which will likely be different among different backends
09:33 jnthn I expect to have something interesting to show on the "port of NQP to .Net" front later on this week.
09:33 sorear I would like to point
09:33 nadim_ sorear: that would be the worst definition ever of what an accent is!
09:34 jnthn moritz_: Rakudo's ClassHOW will be built upon some universal, portable primitives.
09:34 sorear out, re. Niecza vs. multi-backend Rakudo, that I don't see the competition
09:34 mathw jnthn++
09:34 mathw sorear++
09:35 moritz_ sorear: me neither; which is probably not quite clear from http://www.perlmonks.org/?node_id=855440
09:35 moritz_ which is what I meant with "Neither Sprixel nor Niecza are a Rakudo port to a different platform. They have rather different goals than Rakudo. If we can re-use some of their code, we will."
09:35 jnthn moritz_: That's more accurate.
09:36 jnthn I expect there to be some idea sharing and so forth.
09:37 jnthn But the "port PAST and NQP" steps for Rakudo is a very deliberate part of what I'm doing too.
09:37 jnthn They've proved to be a good toolchain for compiler hacking. Now they can become a good toolchain for multi-backend compiler hacking.
09:37 mathw \o/
09:37 mathw Why shouldn't these wonderful tools help people targetting other systems
09:38 jnthn Exactly. :-)
09:38 sorear moritz_: fwiw, I fully expect to port Niecza to Parrot at some point
09:39 moritz_ sorear: wow, that surprises me a bit :-)
09:40 masak jnthn: how does your Test::Mock stack up against chromatic's observations about his own module Test::MockObject at http://www.modernperlbooks.com/mt/2010/​08/what-i-did-wrong-testmockobject.html ?
09:41 jnthn masak: Well, you saw how long it took me to design and implement Test::Mock. :P
09:42 jnthn masak: So probably badly. ;-)
09:42 yves joined #perl6
09:42 masak jnthn: I think I'd like to explore things in that direction.
09:42 masak thing is, I haven't done much mocking myself.
09:42 * masak asks a question on chromatic's blog
09:44 jnthn phenny: tell masak I'm more familiar with mock testing in .Net. I can say that Test::Mock does most if not all of the mocking stuff that I needed for that use case.
09:44 phenny jnthn: I'll pass that on when masak is around.
09:44 jnthn oh gah, fail
09:44 jnthn phenny: er, where "that use case" = "a project for $dayjob"
09:44 jnthn phenny: tell masak er, where "that use case" = "a project for $dayjob"
09:44 phenny jnthn: I'll pass that on when masak is around.
09:45 jnthn ...OK, I'm really going to make another cup of coffee now.
09:45 masak joined #perl6
09:49 araujo joined #perl6
09:55 sorear any objections to me continuing Project CIA
09:56 sorear now that Infinoid has become reachable, it's a little less urgent, but I'd still like to try it
09:56 moritz_ sorear: I personally don't like bots entering the channel just for a commit, and leaving again. But it's not a good reason.
09:57 sorear moritz_: Did CIA once do that?
09:58 moritz_ sorear: wait, I think I'm confusing CIA with the github.com owned bots
09:58 masak another Twitterer liking Perl 6: http://twitter.com/cjk101010/status/21381010302
09:58 phenny masak: 09:44Z <jnthn> tell masak I'm more familiar with mock testing in .Net. I can say that Test::Mock does most if not all of the mocking stuff that I needed for that use case.
09:58 phenny masak: 09:44Z <jnthn> tell masak er, where "that use case" = "a project for $dayjob"
09:59 masak right. but it's interesting to consider things that people like chromatic++ and Ovid++ say about mocking, and see how they mesh with one's own mocking module.
10:00 Italian_Plumber joined #perl6
10:01 masak also, a really good piece of advice from @miyagawa: http://twitter.com/miyagawa/status/21359813423 :-)
10:01 * masak gladly considers himself a Rakudo developer in this context :)
10:01 CIA-21 joined #perl6
10:01 sorear let's see if the custom karma hook thing works
10:01 sorear karma sorear
10:01 sorear buubot: karma sorear
10:01 buubot sorear: sorear has karma of 768
10:02 tadzik buubot: karma tadzik
10:02 sorear damn you, now I don't want to push
10:02 buubot tadzik: tadzik has karma of 36
10:02 sorear 3 * 2^8, such a round number :(
10:02 tadzik buubot: why so low? :)
10:02 buubot tadzik: why is buu_ so angry
10:02 bbkr rakudo: $_="aaaa"; s:1th/a/X/; .say # IMO this should be syntax error
10:02 p6eval rakudo b64718: OUTPUT«Xaaa␤»
10:02 jnthn masak: Well, next time I'm in Japan... :-)
10:02 sorear pushed...
10:02 CIA-21 Stefan O'Rear++ master * reba4446 / (7 files):
10:02 CIA-21 Start decoupling sub metadata from protopads
10:02 CIA-21 Soon the protopad will be just like any other pad, and elidable in many cases.
10:02 CIA-21 +10K SAFE.dll due to duplicated functionality. - http://bit.ly/aIPFnx
10:03 sorear hmm.
10:03 sorear well, the ++ custom format worked!
10:03 moritz_ bbkr: why should it?
10:03 masak buubot: karma Rear
10:03 buubot masak: Rear has karma of 1
10:04 moritz_ bbkr: or asked differently, what do you gain from forcing the user to the proper inflection form?
10:04 dalek niecza: eba4446 | sorear++ | :
10:04 dalek niecza:       <pre>m CgOp.pm
10:04 dalek niecza: m CodeGen.pm
10:04 dalek niecza: m Cursor.cs
10:04 dalek niecza: m Decl.pm
10:04 dalek niecza: m Kernel.cs
10:04 dalek niecza: m SAFE.setting
10:04 dalek niecza: m Unit.pm
10:04 dalek niecza: </pre>
10:04 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Start decoupling sub metadata from protopads
10:04 dalek niecza: Soon the protopad will be just like any other pad, and elidable in many cases.
10:04 dalek niecza: +10K SAFE.dll due to duplicated functionality.</pre>
10:04 dalek niecza:
10:04 dalek niecza: review: http://github.com/sorear/niecza/commit/e​ba444680a0ea6f4707b40d4a4fa92b5eeae4829
10:04 jnthn People shouldn't have to be fluent english speakers 1nd.
10:06 bbkr moritz_: there is no such thing in english as "firth". just doesn't look good. where is the gain? future portability between different P6 implementation that may be more strict in this matter.
10:06 moritz_ std: s:1nd/a/b/
10:06 p6eval std 32023: OUTPUT«ok 00:01 113m␤»
10:07 moritz_ bbkr: you get the best portability by sticking to the spec, not by making up your own rules that seem to make sene right now
10:08 bbkr moritz_: you're right. I haven't checked STD :(
10:08 moritz_ and the spec is pretty clear that (\d+)<identifier> translates to a colonpair with key <identifier> and value of that number
10:08 moritz_ so you could also write :5pos instead of :pos(5)
10:09 bbkr moritz++ # for nice rx modifiers
10:09 moritz_ rakudo: 'abc' ~~ m:2pos/./; say $/
10:09 p6eval rakudo b64718: OUTPUT«c␤»
10:09 moritz_ :-)
10:10 bbkr std: $_="aaaa"; s:th(1)/a/X/; .say # just checking
10:10 p6eval std 32023: OUTPUT«ok 00:01 117m␤»
10:10 bbkr \o/
10:10 moritz_ I copied that part of the implementation from STD.pm
10:15 masak sushi &
10:27 CIA-21 Stefan O'Rear++ master * r8e00559 / (8 files in 2 dirs):
10:27 CIA-21 Add direct support for sub types
10:27 CIA-21 -10K testsuite; reward will be greater when more types than Sub and Regex exist. - http://bit.ly/bwiwFf
10:27 sorear ok, that didn't work
10:28 dalek niecza: 8e00559 | sorear++ | :
10:28 dalek niecza:       <pre>m Body.pm
10:28 dalek niecza: m CgOp.pm
10:28 dalek niecza: m CodeGen.pm
10:28 dalek niecza: m Decl.pm
10:28 dalek niecza: m Kernel.cs
10:28 dalek niecza: m Niecza/Actions.pm
10:28 dalek niecza: m Op.pm
10:28 dalek niecza: m RxOp.pm
10:28 dalek niecza: </pre>
10:28 dalek niecza:       <pre style='white-space:pre-wrap;width:81ex'>Add direct support for sub types
10:28 dalek niecza: -10K testsuite; reward will be greater when more types than Sub and Regex exist.</pre>
10:28 dalek niecza:
10:28 dalek niecza: review: http://github.com/sorear/niecza/commit/8​e00559e1eae2e39a6aec078c54c7c0eb9eb6c19
10:30 M_o_C joined #perl6
10:32 sorear unfortunately github's built in CIA integration has no configuration options at all
10:33 Gruber joined #perl6
10:36 wamba joined #perl6
10:37 dalek joined #perl6
10:41 CIA-21 left #perl6
10:43 sorear (I give up)
10:43 sorear maybe I'll find some CIA staffer and ask them
10:47 Infinoid joined #perl6
10:48 Infinoid Sorry about the trouble with dalek's log.  Thanks to some guidance from moritz++, I've applied an updated.  I'd love it if someone could commit something to test it out.
10:51 sorear done
11:00 Italian_Plumber joined #perl6
11:01 sorear Infinoid: it's been ten minutes since I pushed, is something broken
11:06 Infinoid I don't know.  Exactly where did you push?
11:06 Infinoid I don't see your push on http://github.com/rakudo/rakudo/commits/master
11:06 sorear no, I'm not a rakudo committer
11:06 sorear however niecza should also be in dalek's db
11:07 sorear github, sorear, niecza
11:08 Infinoid Ok.  I see that feed in dalek's log, but I don't know what the feed polling interval is
11:09 sorear dalek has per-feed polling intervals?  for someone who theoretically maintains it ...
11:09 Infinoid I theoretically maintain it
11:09 Infinoid dalek generates dynamic polling intervals, so it doesn't hammer the server with a large number of polls at exactly the same moment
11:09 Infinoid ...and so it doesn't time out of IRC while doing so
11:10 sorear it does a pretty good job of flooding itself off irc when combined with git push
11:10 Infinoid It's not particularly smart, it just increments the interval for each new feed.  Figuring randomness is better than always hitting the worst case
11:10 Infinoid Sure, there's no protection from large numbers of updates on a single feed
11:10 sorear oh, you meant because of time spent in the poll routine
11:11 nine moritz_: oh, I think, I patched test_summary.pl to produce correct JSON
11:11 Infinoid yeah, time waiting for http and such
11:11 Infinoid If github connections are timing out, we don't want to wait serially for 30 timeout periods all at once
11:12 sorear and no multithreading.
11:12 sorear :)
11:13 Infinoid Yeah.  I didn't write the bot, and I didn't install it, I just wrote some plugins for it :)
11:13 Infinoid Should probably rewrite them in rakudo at some point.
11:14 sorear Who *did* write the bot
11:14 meppl joined #perl6
11:22 Infinoid sorear: It's botnix.
11:25 daxim joined #perl6
11:25 sorear Botnix is a person?  I thought it was the name of the bot *embarrassed*
11:26 Infinoid nah, it's the name of the software
11:26 * Infinoid has no idea who the authors are
11:28 dalek joined #perl6
11:28 Infinoid Might work better now.
11:28 sorear FR: dalek should log-ahead the things it was going to send, and ensure that everything gets to the channel eventually even if the bot crashes
11:28 sorear pugssvn does this
11:29 Infinoid Lack of flow control is more a problem with the bot software than with the feed plugins
11:29 * sorear has no idea how hard this would be to do in botnix
11:29 Infinoid Give me a perl6 IRC module that does that, and I will port the plugins to that bot.  Deal?  :)
11:30 sorear I came here to write an IRC module
11:32 Infinoid I think that would be a pretty cool thing.  Or does it already exist and I haven't been paying enough attention?
11:32 moritz_ nine: then please submit that patch :-)
11:33 sorear Infinoid: some exist, but they suck
11:39 dalek rakudo: 85602a2 | moritz++ | /:
11:39 dalek rakudo: remove some trailing whitespaces (dummy commit to test an IRC bot)
11:39 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​5602a200ab450c34ceba45af2272217086f5f0c
11:40 dalek niecza: 465c16d | sorear++ | /:
11:40 dalek niecza: Implement hints as a storage category
11:40 dalek niecza:
11:40 dalek niecza: $?FILE no longer lives in the runtime lexpad.  (User-defined hints still do for
11:40 dalek niecza: now, since they're my variables in disguise... will fix.)  -73K testsuite
11:40 dalek niecza: review: http://github.com/sorear/niecza/commit/4​65c16d2321e1a1c44c4ac4ee749bbc755059087
11:40 envi^home joined #perl6
11:41 pragma_ joined #perl6
11:41 masak today's task: find out why the enum commit causes pls to segfault.
11:41 Infinoid sorear: If you find a better one, and a reliable bot written for it, please let me know :)
11:42 * Infinoid <-- gone
11:42 Infinoid left #perl6
11:43 sorear protopads in niecza are now exactly like any other pad
11:43 sorear this feels like a so much better state
11:44 azert0x joined #perl6
11:45 pugssvn r32024 | nine++ | Changed spec test perf graph to show percentages instead of a multiplier
11:45 pugssvn r32024 | and tweaked output.
11:45 nine moritz_: as soon as I can find what I did. git doesn't show me a commit or diff...
11:46 dalek niecza: 992bd0e | sorear++ | /:
11:46 dalek niecza: Finally kill off share_lex
11:46 dalek niecza:
11:46 dalek niecza: Metasubs no longer need to hold a runtime reference to the protopad, any more
11:46 dalek niecza: than any other pad.  -16K testsuite
11:46 dalek niecza: review: http://github.com/sorear/niecza/commit/9​92bd0e847e2780f682825c006e66014b68be9bf
11:48 nine moritz_: btw. what do you think of the new graph? http://niner.name/rakudo/benchmarks.png
11:48 tadzik oh, so looks like it's faster than it was?
11:49 nine tadzik: seems to be. Though it's hard to say how much of that is just jitter. The server used for this is bored all day, but still
11:51 sorear nine: chromatic likes to use callgrind for stuff like that
11:51 sorear what are you benchmarking?
11:51 moritz_ nine: i like it. There are good explanations for it too (some optimizations on integer operations)
11:52 moritz_ nine: re diff, try   git diff origin/master..HEAD
11:52 moritz_ nine: and   git diff --cached
11:52 moritz_ one of them should show you a diff
11:56 nine moritz_: nothing. Quite strange. From a look at the code, I think the error is still there. It's just a missing comma after all. I remember stumbling upon that but cannot say what I did then...
11:57 nine sorear: I'm running rakudo's spec test suite daily and collecting the run times of the individual test files and summing up the changes.
11:59 moritz_ nine: hm. I feared it's more than a single comma, since JSON doesn't like trailing commas
12:00 takadonet morning all
12:02 awwaiid joined #perl6
12:04 sorear the compiled testsuite has just crossed 1MB
12:04 sorear negatively \o/
12:04 sorear from a high of 1.6MB
12:04 dalek niecza: 605bd5c | sorear++ | /:
12:04 dalek niecza: Don't generate full protopads unless needed
12:04 dalek niecza:
12:04 dalek niecza: In subs with no unclonable phasers or methods, it's not necessary to have a
12:04 dalek niecza: protopad.  This is the first step and elides most variables from such unneeded
12:04 dalek niecza: pads.  -60K testsuite
12:04 dalek niecza: review: http://github.com/sorear/niecza/commit/6​05bd5ce6badaa94f1d53b4d3026a54a027719d3
12:05 masak takadonet: \o
12:09 arnsholt Is there an easy way to do the equivalent of $callback = sub { ... } in NQP-rx?
12:09 arnsholt $cb := sub() { ... } doesn't seem to do it
12:10 takadonet anyone else noticed that the build time is a lot faster now?
12:10 sorear $cb := sub () { ... }
12:11 sorear sub() isn't even legal Perl 6
12:11 sorear (Unifying Rule: \w+\( in term position is *always* a sub call)
12:12 arnsholt Ah, not a bad idea probably
12:12 arnsholt Also explains why my braino if(...) fails weirdly
12:12 * sorear calls it a night
12:13 masak 'night, sorear
12:13 sorear in the last 3-4 days the runtime of MAIN.exe generated from test.pl has gone from 57s to 13s
12:13 sorear this is so addictive
12:13 sorear (case in point: it's 5am localtime)
12:14 masak good thing you decided to call it a night now, while that's still an option :P
12:17 dalek niecza: 91d5840 | sorear++ | /:
12:17 dalek niecza: Elide the protopad entirely when possible
12:17 dalek niecza:
12:17 dalek niecza: -24K testsuite.
12:17 dalek niecza: review: http://github.com/sorear/niecza/commit/9​1d58407f7fc7a9aaea46a64fb480c74e8a0c1ae
12:19 lithos joined #perl6
12:24 masak sorear: so... a 'protopad' is the same as a static lexpad?
12:27 rgrau joined #perl6
12:32 masak rakudo: sub foo(--> NoSuchType) { say "OH HAI" }
12:32 p6eval rakudo b64718: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 22␤»
12:32 masak rakudo: class A { method foo(--> NoSuchType) { say "OH HAI" } }
12:32 p6eval rakudo b64718: OUTPUT«===SORRY!===␤Malformed method at line 22, near "foo(--> No"␤»
12:33 masak both these error messages could be improved to indicate the actual problem.
12:33 * masak submits rakudobug
12:33 moritz_ agreed
12:33 masak std: sub foo(--> NoSuchType) { say "OH HAI" }
12:33 p6eval std 32024: OUTPUT«[31m===[0mSORRY![31m===[0m␤No type found after --> at /tmp/bZliUYrKsY line 1:␤------> [32msub foo(--> [33m⏏[31mNoSuchType) { say "OH HAI" }[0m␤    expecting any of:␤  type_constraint␤  typename␤Parse failed␤FAILED 00:01 113m␤»
12:33 masak std: class A { method foo(--> NoSuchType) { say "OH HAI" } }
12:33 p6eval std 32024: OUTPUT«[31m===[0mSORRY![31m===[0m␤No type found after --> at /tmp/xM7dfF2UkP line 1:␤------> [32mclass A { method foo(--> [33m⏏[31mNoSuchType) { say "OH HAI" } }[0m␤    expecting any of:␤   type_constraint␤  typename␤Parse failed␤FAILED 00:02 113m␤»
12:33 masak 'No type found' isn't spot on either, but it's much better.
12:38 bpalmer joined #perl6
12:44 tadzik joined #perl6
12:49 lichtkind joined #perl6
12:49 lichtkind join #froscon
12:49 lichtkind ups
12:50 * moritz_ hands lichtkind a /
12:51 lichtkind \me grabs it :)
12:51 lichtkind moritz_: thanks :)
12:52 bpalmer left #perl6
13:05 masak lichtkind: your slashes are backward. you need to walk one time around the Möbius strip, and they'll be forward slashes again.
13:06 lichtkind masak: right except this time it was a joke
13:06 masak the principle still stands. :)
13:08 orafu joined #perl6
13:09 masak rakudo: class A is NoSuchType {}
13:09 p6eval rakudo 85602a: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any
13:09 p6eval ..:rw($rw)…
13:09 masak std: class A is NoSuchType {}
13:09 p6eval std 32024: OUTPUT«ok 00:01 111m␤»
13:10 masak when I make a typo in the type after 'is', I'm less interested in the available candidates to trait_mod:<is> and more interested in line number and file.
13:10 * masak submits rakudobug
13:13 bbkr rakudo: class A is Mu is Mu {}
13:13 p6eval rakudo 85602a:  ( no output )
13:14 moritz_ multiple inheritance ftw!
13:14 masak rakudo: class A { method foo { say "OH HAI" } }; class B is A is A {}; B.new.*foo
13:14 p6eval rakudo 85602a: OUTPUT«OH HAI␤»
13:14 masak rakudo++
13:14 masak jnthn++
13:15 bbkr indeed, works as expected
13:15 masak rakudo: class A { method foo { say "OH HAI" } }; class B is A {}; class C is A is B {}; C.new.*foo
13:15 p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Could not build C3 linearization: ambiguous hierarchy␤»
13:15 * masak submits rakudobug
13:16 masak it's a good day when I find something amiss in the OO system. :)
13:17 masak rakudo: class A { method foo { say "OH HAI" } }; class B is A {}; class C is B is A {}; say "alive"; C.new.*foo
13:17 p6eval rakudo 85602a: OUTPUT«alive␤OH HAI␤»
13:17 masak rakudo: class A { method foo { say "OH HAI" } }; class B is A {}; class C is A is B {}; say "alive"; C.new.*foo
13:17 p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Could not build C3 linearization: ambiguous hierarchy␤»
13:17 masak interesting.
13:19 masak oh jnthn! :P
13:28 Guest19527 joined #perl6
13:28 am0c joined #perl6
13:28 tadzik joined #perl6
13:28 Holy_Cow joined #perl6
13:31 mantovani joined #perl6
13:34 masak rakudo: class A is A {]
13:34 masak rakudo: class A is A {}
13:34 p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
13:34 p6eval rakudo 85602a: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any
13:34 p6eval ..:rw($rw)…
13:34 masak std: class A is A {}
13:34 p6eval std 32024: OUTPUT«ok 00:01 111m␤»
13:36 rgrau_ joined #perl6
13:42 drbean joined #perl6
13:47 masak rakudo: my $1 = "foo"; say $1
13:47 p6eval rakudo 85602a: OUTPUT«foo␤»
13:47 masak rakudo: my $1 = "foo"; say $/.perl
13:47 p6eval rakudo 85602a: OUTPUT«[Any, "foo"]␤»
13:47 masak I'm not sure if I consider this a bug or a feature :)
13:48 masak belay that, it's way cool :)
13:48 PerlJam looks like a feature to me :)
13:48 masak and really, really consistent.
13:50 tadzik what's Any in here?
13:50 moritz_ just Anything
13:51 javs joined #perl6
13:54 plobsing joined #perl6
13:56 masak tadzik: a value formerly known as 'undef'.
13:57 masak rakudo: $1 = "foo"; say $/.perl
13:57 p6eval rakudo 85602a: OUTPUT«[Any, "foo"]␤»
13:57 masak don't even need to declare the variable, in fact.
14:00 Guest23195 joined #perl6
14:01 masak Guest23195: velkommen. vær vores gæst, Guest23195.
14:01 masak :)
14:03 mathw That sounds like a challenge...
14:09 PerlJam It didn't sound like a challenge when I tried pronouncing it in my head.
14:10 PerlJam Particularly that "velkommen" part :)
14:10 avuserow joined #perl6
14:12 masak preliminary results about the segfault: perl6 -e 'use App::Pls; use JSON::Tiny' causes it.
14:13 masak clearing either file out completely uncauses it.
14:13 masak in a way, that's bad news. but it's also a bit interesting.
14:13 masak I'll see if I can minimize either file.
14:16 azawawi joined #perl6
14:17 azawawi hi
14:17 masak hi
14:17 azawawi sorear: ping
14:19 avuserow joined #perl6
14:19 masak azawawi: I think he crashed after optimizing niecza all night.
14:21 azawawi masak: i see... thx
14:22 azawawi phenny: tell sorear I am getting this error when doing a 'make dist' after 'make clean all' in src/perl6. "make: *** No rule to make target `stage2/STD_P5.pmc', needed by `dist'.  Stop."
14:22 phenny azawawi: I'll pass that on when sorear is around.
14:24 masak first I decided that this post might be of interest for #perl6, then I felt it might be OT, and then I changed my mind and found it highly relevant: http://timothyfitz.wordpress.com/2009/​02/10/continuous-deployment-at-imvu-do​ing-the-impossible-fifty-times-a-day/
14:25 masak maybe Rakudo would benefit from continuously running the test suite on a cluster of computers, bringing it down to a minute or so.
14:25 masak failures would be reported back by a bot.
14:25 colomon ick
14:25 masak and 'When I say reliable, I don’t mean “they can fail once in a thousand test runs.” I mean “they must not fail more often than once in a million test runs.”' sounds pretty nice as well.
14:25 colomon or do you mean as an extra smoker?
14:26 masak colomon: yes, something like that. a fast one.
14:26 colomon ick retracted, then.
14:26 masak we don't really have any website to deploy to, unless you count Try Rakudo.
14:26 colomon I was confusedly thinking that you wanted that to replace developer's local spectests.
14:26 masak but that doesn't feel so business-critical for some reason :)
14:27 colomon But supplementing the local spectests? -- that's cool, and not a bad idea.
14:27 mathw we could do with tests that reliable at my work
14:27 mathw fortunately it's on my list of things to do
14:27 masak colomon: could probably be extended to the app cheese as well.
14:27 colomon +1
14:32 pmichaud good morning, #perl6
14:32 tadzik hello pmichaud
14:32 takadonet pmichaud: morning
14:32 colomon o/
14:33 masak mor-NING!
14:34 pmichaud mathw: have a name picked out for the rakudo release?
14:35 mathw not a clue
14:35 mathw I thought there was a list?
14:35 pmichaud the list is currently empty, I think.
14:36 mathw hmm
14:36 pmichaud We can always go with Pisa
14:36 mathw that's what I was just thinking
14:36 mathw it's appropriate
14:36 mathw I need to read the release procedure
14:36 pmichaud I'll tentatively add Pisa for now... but it's open for change
14:37 mathw It seems like an appropriate one to me
14:37 moritz_ +1 to Pisa
14:38 pmichaud oh, is there a "Pisa.pm"?  ;-)
14:38 * pmichaud checks
14:38 mathw heh there is that
14:38 * PerlJam notices that coming up with the release name still seems to be the most onerous part of the process :)
14:38 mathw but maybe we should also allow YAPC venues
14:39 pmichaud well, I'd like to give credit to the appropriate group, as opposed to the city in which an event takes place.
14:39 pmichaud for example, next year is in Riga, but the group would be Moscow.pm (IIUC)
14:39 mathw true
14:39 mathw point taken
14:40 mathw I just thought of a problem
14:40 mathw I have neither commit access to Rakudo or a CLA
14:41 PerlJam mathw: sounds like you need minions that do.
14:41 mathw I remember now
14:41 pmichaud mathw: I can give you commit access for the release
14:41 mathw I intended to sort this all out before the release
14:41 mathw but then I forgot
14:42 mathw and then I forgot I was doing the release this month
14:43 jedai joined #perl6
14:43 masak moritz_, pmichaud, jnthn: here's my smallest possible case of segfault with the enums patch applied to Rakudo: http://gist.github.com/530197
14:44 pmichaud hmm.  looks like YAPC::EU was sponsored by perl.it
14:44 mathw "Italy"
14:44 mathw or, "Rakudo #32: Just Give Me A Pizza, Okay?"
14:46 pmichaud well, there does appear to be a "Pisa.pm", and about half of the yapc::eu organizers were local to Pisa, so perhaps "Pisa" is good enough.
14:47 masak I'd say it is.
14:50 mathw I'll probably draft the release announcement tonight
14:51 mathw then you can all assess its Suckiness Index
14:51 mathw first I have to go and play some miserable English consort music
14:51 mathw which is one of my favourite ways of spending the first part of an evening :)
14:52 * masak spends far too much time on online MP3 stores shopping for 'miserable ENglish consort music'
14:52 masak s/N/n/
14:53 mathw excellent taste
14:54 * mathw hopes to do five-part Jenkins today
14:54 mathw I think all of us will be there
14:54 mathw until afterwards
14:54 mathw I bid you farewell
14:54 * masak bows elaborately
15:00 dalek rakudo: e3f9c5e | pmichaud++ | /:
15:00 dalek rakudo: Bump PARROT_REVISION.
15:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​3f9c5eac74479e24e5f9633416d952e56a88550
15:00 dalek rakudo: ae18b90 | pmichaud++ | /:
15:00 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
15:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​e18b9069022114bf474826c247cde009f320d46
15:00 dalek rakudo: e26cb01 | pmichaud++ | /:
15:00 dalek rakudo: Add draft of 2010.08 release announcement.
15:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​26cb01c578124b6c475690afc412dcdbcc755b9
15:00 dalek rakudo: 5a33278 | pmichaud++ | /:
15:00 dalek rakudo: Update 2010.08 release information in release_guide.pod .
15:00 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​a33278a396ba0f0ae10fa03193ad745f12cfc1d
15:00 lichtkind_ joined #perl6
15:05 drdanger joined #perl6
15:05 dalek rakudo: e0850ed | moritz++ | /:
15:05 dalek rakudo: [release] fix copy&pasto, add a new feature to feature list
15:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​0850edab2d98b3a342fd7f02057a0a52636eb00
15:06 Holy_Cow joined #perl6
15:21 macroron joined #perl6
15:46 Holy_Cow joined #perl6
15:50 wamba joined #perl6
15:50 wooden joined #perl6
15:56 pugssvn r32025 | lwall++ | [STD] spot-on-ify the no type message
15:56 pugssvn r32025 | some preliminary work to fixing exports
15:57 justatheory joined #perl6
16:00 platypus_ joined #perl6
16:01 platypus_ how does one determine what's in a reference?  Do I have a reference to a scalar, array, hash?
16:01 moritz_ how did you take the reference?
16:01 platypus_ Say i wrote:   my %a;  my $b = \%a;
16:02 moritz_ are you talking about Perl 5 or Perl 6?
16:02 platypus_ how do I determine programtically that $b has a reference to a hash
16:02 platypus_ perl 6
16:02 moritz_ in Perl 6, you'd just write
16:02 moritz_ my $b = %a
16:02 moritz_ and then
16:02 moritz_ if $b ~~ Hash { ... }
16:03 zostay joined #perl6
16:03 platypus_ wonderful, thank you.  Tried that a few weeks ago and did not work then.  Will try again with latest.
16:03 moritz_ rakudo: my %a = a => 1, b => 2; my $b = %a; if $b ~~ Hash { say "yes, a hash" }
16:04 p6eval rakudo 85602a: OUTPUT«yes, a hash␤»
16:04 moritz_ seems to work :-)
16:05 plainhao joined #perl6
16:07 pyrimidine joined #perl6
16:09 Chillance joined #perl6
16:15 * jnthn back from @stuff
16:15 moritz_ wb
16:16 jnthn masak: Hmm. Wonder if the C3 impl has issues. :S
16:16 hercynium joined #perl6
16:16 jnthn masak: Wouldn't be entirely surprising. I'll check. It may not be wrong.
16:16 jnthn You can't always build a C3 linearization.
16:20 risou joined #perl6
16:20 patrickas joined #perl6
16:20 patrickas good evening #perl6
16:21 diakopter 'morn
16:24 azert0x joined #perl6
16:24 patrickas rakudo: say (1...^*).batch(10).perl;
16:24 p6eval rakudo 85602a: OUTPUT«Can't take numeric value for object of type Whatever␤  in 'Any::Numeric' at line 1339:CORE.setting␤  in 'prefix:<^>' at line 6741:CORE.setting␤  in main program body at line 22:/tmp/ResChIiNlM␤»
16:25 colomon patrickas: your patch still isn't in there.  I completely forgot about it.  :(
16:25 patrickas colomon: it's ok no hurry :-)
16:25 patrickas I also tried to refactor the whole series like you told me but did not get very far
16:26 colomon would be nice to have it in by tomorrow.
16:28 patrickas The way you described it it seemed simple, the way it ended up with me, it turned out as complicated as the current impl!
16:29 patrickas do you have some time to take a look / discuss it a bit ?
16:29 colomon I guess I could spare a few minutes.
16:29 colomon (from $work, I mean)
16:29 gfldex std: sub f($a,$b){say $a, $b}; my $g = -> |@a {f(@a)}; $g.(1,2);
16:29 p6eval std 32025: OUTPUT«ok 00:02 119m␤»
16:30 gfldex rakudo: sub f($a,$b){say $a, $b}; my $g = -> |@a {f(@a)}; $g.(1,2);
16:30 p6eval rakudo 85602a: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Capture instead␤  in <anon> at line 2:/tmp/yoB8GjlFoz␤  in main program body at line 22:/tmp/yoB8GjlFoz␤»
16:30 gfldex is std right in that case?
16:31 colomon gfldex: I think it's your code that's weird
16:31 gfldex very well possible :)
16:31 colomon gfldex: in a way std doesn't see.
16:32 colomon I don't know if -> |@a makes sense or not -- but f(@a) shouldn't work if we have f($a, $b)
16:33 moritz_ f(|@a) should work if you have f($a, $b)
16:33 TiMBuS my $g = -> *@a {f(|@a)};
16:33 gfldex rakudo: sub f($a,$b){say $a, $b}; my $g = -> *@a {f(|@a)}; $g.(1,2);
16:33 p6eval rakudo 85602a: OUTPUT«12␤»
16:33 gfldex there we go :)
16:39 ingy morning
16:39 patrickas hello ingy
16:46 ruoso joined #perl6
16:47 colomon rakudo: say (1 ... -10).perl
16:47 p6eval rakudo 85602a: OUTPUT«(1, 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10)␤»
16:47 isBEKaml joined #perl6
16:48 isBEKaml hi, folks!
16:50 colomon rakudo: say 'g', 'z' ... 'a'
16:50 p6eval rakudo 85602a: OUTPUT«(timeout)»
16:56 isBEKaml rakudo: say 'n' ... 'm' #ROT 13?
16:56 p6eval rakudo e0850e: OUTPUT«nm␤»
16:56 isBEKaml rakudo: say 'n' ... 'za'... 'm' #ROT 13?
16:56 p6eval rakudo e0850e: OUTPUT«No applicable candidates found to dispatch to for 'infix:<...>'. Available candidates are:␤:(@lhs, @rhs)␤:(@lhs, Any $rhs)␤:(Any $lhs, @rhs)␤:(Any $lhs, Any $rhs)␤␤  in main program body at line 22:/tmp/Z4dTJFRh00␤»
16:56 isBEKaml :)
16:56 isBEKaml rakudo: say 'n' ... 'z', 'a' ... 'm' #ROT 13?
16:56 p6eval rakudo e0850e: OUTPUT«No applicable candidates found to dispatch to for 'infix:<...>'. Available candidates are:␤:(@lhs, @rhs)␤:(@lhs, Any $rhs)␤:(Any $lhs, @rhs)␤:(Any $lhs, Any $rhs)␤␤  in main program body at line 22:/tmp/e9C24txaPw␤»
16:58 isBEKaml rakudo: say 'n' .. 'z', 'a' .. 'm' # this works locally, I thought ... was just desugared to .. ?
16:59 p6eval rakudo e0850e: OUTPUT«nopqrstuvwxyzabcdefghijklm␤»
16:59 isBEKaml hm, time to look up the difference in the spec..
17:02 isBEKaml rakudo: say 'n' .. 'za' .. m # is this right, takes forever on my poor machine. :|
17:02 p6eval rakudo e0850e: OUTPUT«Could not find sub &m␤  in main program body at line 22:/tmp/wa6KDrDp9b␤»
17:02 isBEKaml rakudo: say 'n' .. 'za' .. 'm' # is this right? takes forever on my poor machine. :|
17:02 p6eval rakudo e0850e: OUTPUT«too many positional arguments: 3 passed, 1 expected␤  in 'Range::new' at line 1␤  in 'infix:<..>' at line 4720:CORE.setting␤  in main program body at line 22:/tmp/G7Ew3bTPcm␤»
17:03 colomon isBEKaml: ... is not desugared to .., it's completely different code
17:04 colomon and the problem you're seeing is that 'n' ... 'z', 'a' ... 'm' is a three-part series, which isn't supported yet
17:04 colomon whereas n' .. 'z', 'a' .. 'm' is just two ranges separated by a comma
17:05 colomon rakudo: say  ('n' ... 'z'), ('a' ... 'm')
17:05 p6eval rakudo e0850e: OUTPUT«nopqrstuvwxyzabcdefghijklm␤»
17:05 moritz_ is that what you need for rot13?
17:05 isBEKaml I see. I was looking for more unix-y like tr "a-z" "n-za-m" :)
17:06 Italian_Plumber joined #perl6
17:07 colomon isBEKaml: 'n' ... 'z', 'a' ... 'm' is supposed to work, but afaik Rakudo's infrafstructure doesn't support it yet.
17:07 isBEKaml can you tell me about the last one? 'n' .. 'za' .. 'm' ? Does this also fall under the three part series?
17:07 sftp joined #perl6
17:07 colomon isBEKaml: errr, very no
17:08 colomon did you mean 'n' ... 'za' ... 'm'
17:08 colomon ?
17:08 isBEKaml colomon: err, I really have to read about the difference between '..' and '...' to answer that one. :S
17:09 proller_ joined #perl6
17:09 colomon isBEKaml: 'n' .. 'za' .. 'm' is just a syntax error of some sort.  Ranges always have two endpoints.
17:10 colomon 'n' ... 'za' ... 'm' is a hypothetically valid series, which does 'n' ... 'za' and 'za' ... 'm' and leaves out one of the 'za's.
17:10 colomon rakudo: say 'n' ... 'za'
17:10 p6eval rakudo e0850e:
17:10 p6eval ..OUTPUT«nopqrstuvwxyzaaabacadaeafagahaiajakalama​naoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkbl​bmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjc​kclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdi​djdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefege​heiejekelemeneoepeqereseteuevewexeyezfafbfcfdf…
17:10 colomon and then
17:10 colomon rakudo: say 'za' ... 'm'
17:10 p6eval rakudo e0850e:
17:10 p6eval ..OUTPUT«zayzyyyxywyvyuytysyryqypyoynymylykyjyiyh​ygyfyeydycybyaxzxyxxxwxvxuxtxsxrxqxpxoxnxmxlxkxjx​ixhxgxfxexdxcxbxawzwywxwwwvwuwtwswrwqwpwownwmwlwk​wjwiwhwgwfwewdwcwbwavzvyvxvwvvvuvtvsvrvqvpvovnvmv​lvkvjvivhvgvfvevdvcvbvauzuyuxuwuvuuutusuruqupuoun​umulukujuiuhugufueuducubuatztytxtwtvtutttstrtq…
17:11 colomon so definitely not what you want
17:11 imarcusthis joined #perl6
17:11 isBEKaml oh, I didn't expect this. Not definitely what I want. colomon++
17:12 isBEKaml so, how would I do a "tr" like ROT13 in p6?
17:12 * colomon looks for moritz_ ...
17:13 isBEKaml wait, moritz_ showed that already?
17:13 colomon no, I think he understand tr better than I do
17:14 moritz_ hm
17:14 moritz_ rakudo: say 'hello'.trans('a..z' => 'n..za..m')
17:14 p6eval rakudo e0850e: OUTPUT«uryyb␤»
17:14 isBEKaml I could just think of doing it with a .subst, but got into a little confusion with .. and ... as you saw above. :)
17:15 moritz_ just use tr :-)
17:15 moritz_ erm, trans
17:15 isBEKaml moritz_++
17:15 colomon rakudo: say "uryyb".trans('a..z' => 'n..za..m')
17:15 colomon [1:14pm] p6eval: rakudo e0850e: OUTPUT«uryyb␤»
17:15 p6eval rakudo e0850e: OUTPUT«hello␤»
17:16 isBEKaml I forgot about the trans. :-)
17:16 moritz_ speaking of which... once you know how to parse two quoting constructs that share the same delimiter, it's trivial to implement the tr/// syntactic form
17:17 PerlJam moritz_: so ... are you saying you're going to implmement tr/// now?  :-)
17:17 moritz_ PerlJam: you've missed a predicate there
17:18 moritz_ PerlJam: did you just volunteer for the parsing part? :-)
17:18 isBEKaml moritz_: the predicate is already handled elsewhere? How did jnthn++ do [[ + ]] reduce ops? :-)
17:19 isBEKaml or [[[[ + ]]]] thingies?
17:19 moritz_ isBEKaml: that's not a quote
17:19 jnthn moritz_: Ain't s/// hint-y?
17:20 moritz_ jnthn: nope; parsing a regex doesn't swallow the delimiters; parsing a quote does
17:20 isBEKaml oh..
17:21 jnthn moritz_: oh...yes, tricky-ish.
17:24 Eevee joined #perl6
17:24 avuserow joined #perl6
17:26 isBEKaml moritz_: so we are essentially passing in a list of pairs to .trans, that would have to be chained to once the "predicate" issue is hammered out of the way? :-)
17:27 moritz_ isBEKaml: trans also understands two strings
17:27 moritz_ and builds the pair list internally
17:27 isBEKaml rakudo: "hello".trans('e' => 'p', 'l' => 'b')
17:27 p6eval rakudo e0850e:  ( no output )
17:27 isBEKaml rakudo: say "hello".trans('e' => 'p', 'l' => 'b')
17:27 p6eval rakudo e0850e: OUTPUT«hpbbo␤»
17:28 isBEKaml rakudo: say "hello".trans(<e p l b>) # Let's see...
17:28 p6eval rakudo e0850e: OUTPUT«e.perl is not a Pair␤  in <anon> at line 2223:CORE.setting␤  in 'Cool::trans' at line 1␤  in main program body at line 22:/tmp/UnjrlvbItG␤»
17:28 isBEKaml It seems to expect a list of pairs.
17:29 isBEKaml rakudo: say "hello".trans("bello", "gemmo") # Let's see...
17:29 p6eval rakudo e0850e: OUTPUT«bello.perl is not a Pair␤  in <anon> at line 2223:CORE.setting␤  in 'Cool::trans' at line 1␤  in main program body at line 22:/tmp/uhVsETRuU2␤»
17:30 molaf joined #perl6
17:31 moritz_ rakudo: say "hello".trans("bello" => "gemmo")
17:31 p6eval rakudo e0850e: OUTPUT«hemmo␤»
17:31 moritz_ ok, we have to construct *one* pair
17:32 isBEKaml yes, atleast one pair.
17:35 pragma_ Huh, so the . operator is no longer concatenation?
17:35 moritz_ no, . is method call
17:35 moritz_ ~ is concatenation
17:35 isBEKaml pragma_: the ~ is what we use for concatenation.
17:35 isBEKaml moritz_++ was faster. :)
17:37 isBEKaml parrot release today?
17:37 pyrimidine joined #perl6
17:37 moritz_ huh, I just managed to lose two commits.
17:37 masak nom &
17:39 jnthn So...masak eats commits?
17:41 moritz_ actually the misguided use of git am --abort ate it
17:42 isBEKaml moritz_ would actually participate in Porror events. :P
17:42 isBEKaml spoil the pun with horror or mix the two! ;)
17:44 * isBEKaml should shut up and go read something...
17:45 avuserow joined #perl6
17:48 Su-Shee left #perl6
17:51 jferrero joined #perl6
17:55 pyrimidine joined #perl6
17:57 isBEKaml when is the rakudo release this month? Sometime this week?
17:58 jnthn Thursday for R*
17:58 jnthn crap
17:58 jnthn Thursday for Compiler
17:59 isBEKaml I just asked that my uploaded rakudo slackbuild script be pulled down from the pending queue in slackbuilds.org so a newer version will be delivered upon rakudo2010.08 release.
17:59 jnthn R* distro release comes after that one.
18:00 isBEKaml I was thinking of packaging R* for slackware, but isn't very viable and goes against slackware installation mechanisms.
18:00 isBEKaml So, I'm packaging rakudo and parrot separately. Parrot was approved and is now available on slackbuilds.org.
18:01 isBEKaml any chance that we can have a separate docs/libraries package apart from R* ?
18:02 mberends joined #perl6
18:04 jnthn mberends! \o/
18:04 mberends wow, jnthn++ has been 6modeling a lot!
18:04 PerlJam isBEKaml: since that's part of the point of R*, I don't see how.
18:05 isBEKaml PerlJam: well, that means I will just have to pull them out and host from a different location( I don't want to do that)
18:05 jnthn mberends: NQPSetting.pm lives...and compiles...and code is run with it as the outer scope. There's a --setting mode for compiling it.
18:05 jnthn mberends: Added in .Str to NQPNum and NQPInt so we can actually, like, say/print them now. :-)
18:06 jnthn mberends: Added a make test target and pulled in the 2 nqp tests we pass. Think I've busted it for Mono though. Sorry. :-(
18:06 jnthn (Just the building rather than the code.)
18:06 mberends jnthn: aww
18:07 PerlJam isBEKaml: Hmm.  So you want rakudo-2010.08-compiler, rakudo-2010.08-libs, and rakudo-2010.08-docs  (or something similar)  ?
18:07 jnthn mberends: Yeah, but I really really wanted the setting 'cus it was blocking everything else. :-)
18:07 PerlJam er, s/rakudo/rakudo-star/
18:07 mberends jnthn: but srsly, it looks great :)
18:08 jnthn mberends: Plan: subs, few operators, .Bool, :pasttype if/unless/while.
18:08 isBEKaml PerlJam: err, R* source would be based on the previous release. I'm fine with the Rakudo compiler that would be built with the slackbuild script. I just want the libs/docs separate.
18:09 isBEKaml PerlJam: libs --> modules.
18:09 mberends jnthn: very nice
18:10 jnthn mberends: Yeah, it'll be nice to be turing complete. ;-)
18:10 jnthn I mean, after that, what more's needed. ;-)
18:10 mberends er.
18:10 dalek rakudo: 037f685 | tadzik++ | /:
18:10 dalek rakudo: Optimize Range.pick for integers and non-replacing pick
18:10 dalek rakudo:
18:10 dalek rakudo: Includes an off-by-one fix from moritz_
18:10 dalek rakudo:
18:10 dalek rakudo: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
18:10 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​37f685f7538570690343cb7533b711aae5500ee
18:10 jnthn mberends: :P
18:10 jnthn mberends: I'm in denial that at some point PAST::Regex nodes will also need compiling. :P
18:11 mberends jnthn: keep your head in the sand for a while, it's okay ;)
18:12 jnthn There's plenty to do before then. Like...make ClassHOW work. :-)
18:13 jnthn OK, going to the nomshop...all I have here is pasta and picked gerhkin and I don't think I can make a great meal out of those...
18:13 isBEKaml jnthn: You're porting Rakudo to some other platform? :)
18:14 isBEKaml jnthn: ok, happy nommin'!
18:14 jnthn isBEKaml: NQP for now. But simultaneously working out the new meta-model design. I'll soon start getting that in place in Parrot too. :-)
18:14 jnthn bbiab
18:18 colomon joined #perl6
18:19 mberends \o colomon
18:19 colomon o/
18:22 lerut joined #perl6
18:23 moritz_ hm
18:23 moritz_ it's Tuesday, right?
18:24 colomon oh
18:24 moritz_ so, is there a #phasers today?
18:24 colomon !
18:24 lerut ye
18:25 moritz_ in 35min, right?
18:25 * moritz_ can never remember the time
18:28 * colomon thinks moritz_ is right
18:28 azert0x joined #perl6
18:29 isBEKaml ah, 6model on github shows it as a C# project, so I assume he's porting NQP to .NET CLR ? that's awesome!
18:29 tadzik joined #perl6
18:29 moritz_ right
18:29 tadzik moritz_++ # spotting stupid bug in my patch
18:29 moritz_ see also http://perlgeek.de/blog-en/perl-​6/notes-from-yapc-hackathon.html and http://www.perlmonks.org/?node_id=855407 for some discussions
18:30 isBEKaml it'd be awesome if we can get an implementation running on jvm too! :)
18:30 moritz_ tadzik: actually it was the test suite that caught it
18:30 tadzik moritz_: how is random number generation tested?
18:30 moritz_ isBEKaml: I guess once the first two are done, the third will be easy :-)
18:31 isBEKaml moritz_: I hope so, the jvm's a different beast.
18:31 moritz_ tadzik: this one was caught by t/spec/S03-operators/series-arity0.t
18:31 moritz_ my @rolls = ({ (1..2).pick } ... 2).munch(100);
18:31 tadzik oh
18:31 moritz_ ok +@rolls > 0, 'the series had at least one element...';
18:31 moritz_ ok +@rolls < 100, '... and the series terminated';
18:32 moritz_ that second test failed, because with the offby1 error, it woul produce 1, 1, 1, 1 ...
18:32 tadzik huh
18:32 tadzik spectests++
18:32 moritz_ colomon++ # writing those tests
18:33 tadzik oh, btw, my second patch is alredy deprecated (pmichaud++ did the same during his range optimizations)
18:33 tadzik you may want to remove it
18:36 tadzik oh, alredy done
18:40 isBEKaml moritz_: I see. the perlmonks' post shows ppl wary of porting/implementing p6 on the jvm due to the recent Google/Oracle lawsuit. :|
18:41 tadzik :D
18:41 isBEKaml esp the last comment by chromatic++
18:41 pragma_ left #perl6
18:44 * allbery_b wonders if Oracle handed the future to the CLR with that self-kneecapping
18:46 isBEKaml MS looks like the winner here. the mobile market is where it's still weak. With this lawsuit, all it has to do to accelerate mobile sales with more products.
18:46 jnthn #phasers in 15?
18:46 isBEKaml </offtopic>
18:50 jnthn isBEKaml: The JVM is just like a crappy version of the CLR.
18:50 jnthn isBEKaml: So not _that_ different.
18:51 isBEKaml jnthn: I can't say that. the jvm guys took a lot of pain to ensure backward compatibility. Sure, some things are pretty screwed up, like generics(again backward compatibility was taken into the picture)
18:51 Lorn joined #perl6
18:52 isBEKaml jnthn: what really sucks is, they don't look to adding new features into the system, instead are drawn into a long and protracted process called JSR. :(
18:53 isBEKaml I don't know about the CLR (never programmed in it)
18:53 azert0x joined #perl6
18:53 azert0x joined #perl6
18:54 azert0x joined #perl6
18:54 isBEKaml many have given up proposing new features. Even closures were ruled out of future _standard_ editions. OpenJDK is still looking to implement them.
18:55 ash_ joined #perl6
18:55 isBEKaml I don't know how far they are into it, project-lambda iirc was heavily into it.
18:55 hercynium joined #perl6
18:58 javs joined #perl6
19:01 isBEKaml alright guys, later tomorrow.
19:01 * isBEKaml goes to zzz....
19:04 jnthn pmichaud: #phasers if you're about :-)
19:05 sorear niecza: class A { method foo { say "OH HAI" } }; class B is A {}; class C is A is B {}; say "alive"; # My C3 implementation has not been tested.  At all.
19:05 phenny sorear: 14:22Z <azawawi> tell sorear I am getting this error when doing a 'make dist' after 'make clean all' in src/perl6. "make: *** No rule to make target `stage2/STD_P5.pmc', needed by `dist'.  Stop."
19:05 p6eval niecza 91d5840: OUTPUT«Unhandled exception: System.Exception: C3 MRO inconsistency detected␤  at Niecza.DynMetaObject.BuildC3MRO () [0x00000] in <filename unknown>:0 ␤  at SAFE.CreateProtoobject_5C (Niecza.Frame th) [0x00000] in <filename unknown>:0 ␤  at Niecza.Frame.Continue () [0x00000] in
19:05 p6eval ..<filename u…
19:06 cono joined #perl6
19:13 jnthn sorear: Heh. They're either both wrong or both right. :-)
19:15 tylercurtis joined #perl6
19:29 dual joined #perl6
19:29 patrickas rakudo: sub foo {my @a = (1,2,3,4,5);my $val ;gather {while @a {$val = @a.shift();take $val;}}};say ~( foo() ) ; say foo();
19:29 p6eval rakudo 037f68: OUTPUT«5 5 5 5 5␤12345␤»
19:30 patrickas is that ^^ a known bug ?? Is it a bug at all ?
19:31 TimToady not a bug, really
19:31 TimToady put the my inside the while loop
19:32 TimToady you've just taken five refs to the same var
19:32 TimToady though, perhaps a bug, nonetheless
19:32 TimToady since take is supposed to de-containerize like return
19:32 sorear phenny: tell masak yes, protopad = static lexpad.  static lexpad is probably more correct now since I've eliminated all prototype aspects of the static pad.
19:32 phenny sorear: I'll pass that on when masak is around.
19:33 patrickas TimToady thx, I already worked around it in the code ... but I was wondering if I should rakudobug it or not?
19:34 moritz_ I'm pretty sure we had a bug report once, but I think I closed it because all tests passed in the end
19:34 sorear phenny: tell azawawi make dist should probably be retired
19:34 phenny sorear: I'll pass that on when azawawi is around.
19:34 moritz_ speaking of make, 'make snap' would be nice to have back, because p6eval uses it
19:35 TimToady I already fixed snap
19:36 TimToady testing a fix for dist
19:36 moritz_ std: 1
19:36 p6eval std 32025: OUTPUT«ok 00:01 112m␤»
19:36 moritz_ has kept up, so the fixed worked
19:36 moritz_ TimToady++
19:37 pugssvn r32026 | lwall++ | [STDeco] fix make dist
19:37 moritz_ patrickas: all gather/take bugs in t/spec/S04-statements/gather.t pass, modulo those that rely on lazy list assignment
19:37 Mowah joined #perl6
19:37 moritz_ I'll switch them binding instead
19:37 sorear good * #perl6
19:38 pugssvn r32027 | moritz++ | [t/spec] switch laziness tests to binding, since we know better that it does not evaluate the items eagerly
19:38 patrickas moritz - Comments added: Miraculously the tests now pass, so I'm closing this ticket. Feel free to open again if it resurfaces again.
19:39 patrickas :-)
19:45 nimiezko joined #perl6
19:47 mathw hello
19:47 cj_ joined #perl6
19:48 TimToady howdy doo
19:49 moritz_ parrot release is being furiously worked on, it seems
19:49 mathw good-oh
19:50 jnthn o/ mathw
19:50 mathw o/ jnthn
19:51 mathw I'll be needing that Parrot release :)
19:51 TimToady what are they furious about this time?  :)
19:58 jnthn Gahhh...do I blog a "no no no no" response to chromatic's comments on PerlMonks or bother to sign up for an account...or just get on with doing something useful. :/
19:59 Tene jnthn: I'm interested in seeing your comments and response.
20:00 dalek book: 1ec2cc5 | ++ | /:
20:00 dalek book: fixed a non-working example: $number vs $count
20:00 dalek book:
20:00 dalek book: Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
20:00 dalek book: review: http://github.com/perl6/book/commit/1e​c2cc59ebb1c4b16dd5ea4dd153412c716c5263
20:00 sorear jnthn: Rakudo and niecza's behavior is absolutely right
20:00 sorear jnthn: link?
20:00 jnthn sorear: I wondered if that might be the case.
20:00 jnthn sorear: to...the ticket for the C3 thing?
20:01 sorear "chromatic's comments on PerlMonks"
20:01 jnthn oh
20:01 jnthn http://www.perlmonks.org/?node_id=855567
20:01 sorear class C is Grandparent is Parent means that C wants the grandparent's methods to take precedence
20:01 jnthn sorear: Yes, I looked at that and thought "er...wait" :-)
20:01 sorear which is inconsistant with the ordering created by class Parent is Grandparent
20:02 jnthn I'm relieved that you get the same result.
20:02 jnthn Aye. That ticket can be rejected.
20:02 sorear I had to add more debug code to get said result though.
20:03 jnthn Thanks for doing so. :-)
20:03 Tene jnthn: If you disagree with him, I'm very interested in a response from you to that comment.
20:04 jnthn Tene: I don't disagree with The Whole Thing; it's the section that starts "Any runtime for Perl 6 is going to end up looking a lot like Parrot." that bothers me.
20:04 Tene jnthn: That's the part I'm curious about a response to.
20:05 TimToady the problem is he said "can support", which I agree with, except that parrot doesn't do that--it tries to supply the implementations instead, and by and large they're unusable
20:05 jnthn TimToady: My feeling is that the implication seems to be that the VM should have those fetures directly.
20:05 mathw I thought it interesting that he thinks the runtime has to provide all that
20:06 fda314925 joined #perl6
20:06 jnthn TimToady: I'd argue that it simply needs to allow for an efficient implementation of them.
20:06 mathw If the runtime did all tha titself, it would only be able to run Perl 6
20:06 jnthn Maybe I should wait to reply until I have the code to back up my response though. :-)
20:06 dalek niecza: e4ff073 | sorear++ | /:
20:06 dalek niecza: Add NIECZA_C3_TRACE debug mode
20:06 dalek niecza: review: http://github.com/sorear/niecza/commit/e​4ff0731940a615a1c395dbf44ed6229c9bd6de4
20:06 sorear jnthn: I would argue that statement is vacuously true.  In about five years Parrot is going to look very, very much like the JVM or CLR
20:07 mathw jnthn: one also wonders if it's worth arguing with him
20:07 mathw when you could be doing awesome stuff with the metamodel
20:07 jnthn mathw: Right, I maybe should just write that as my reply. ;-)
20:07 jnthn sorear: lol :-)
20:07 mathw I get the impression that chromatic is very difficult to argue with due to a high stubbornness quotient
20:08 PerlJam jnthn: perhaps the Parrot he's thinking of is the hypothetical future Parrot that does all of that stuff?
20:08 PerlJam oh ... sorear already said it
20:08 jnthn PerlJam: Perhaps so.
20:10 PerlJam mathw: arguments are easy.  resolution is hard :)
20:11 mathw yes
20:13 smash_ joined #perl6
20:13 smash_ hello everyone
20:13 tadzik hi smash_
20:14 mathw o/ smash_
20:20 tylercurtis joined #perl6
20:22 thebird joined #perl6
20:27 icarroll joined #perl6
20:28 icarroll perl6: say +(1,2,3,4,5);
20:28 p6eval pugs, rakudo 037f68: OUTPUT«5␤»
20:28 icarroll rakudo: say [+] (1,2,3,4,5);
20:28 p6eval rakudo 037f68: OUTPUT«15␤»
20:29 tadzik rakudo: say +('any', 'elements', 'but', 6, 'of', 'them')
20:29 icarroll rakudo: say (1,2,3,4,5);
20:29 p6eval rakudo 037f68: OUTPUT«12345␤»
20:29 p6eval rakudo 037f68: OUTPUT«6␤»
20:30 icarroll rakudo: say ~(1,2,3,4,5);
20:30 p6eval rakudo 037f68: OUTPUT«1 2 3 4 5␤»
20:50 ilogger2 joined #perl6
20:53 Cyrus joined #perl6
20:54 Guest23195 left #perl6
21:01 sorear rakudo: my @x; say @x[*-1]
21:01 p6eval rakudo 037f68:  ( no output )
21:01 sorear rakudo: my @x; sub foo($k) { say $k }; foo @x[*-1]
21:01 p6eval rakudo 037f68:  ( no output )
21:02 sorear in Perl 5, the latter version dies, while the former DTRTs
21:02 sorear :/
21:15 whiteknight joined #perl6
21:15 mj41 Parrot vs. JVM by allison http://video.google.de/videop​lay?docid=2900106024749292774#
21:17 fod joined #perl6
21:18 sorear whiteknight: I see I wasn't *entirely* crazy when I went all Chicken Little on continuation/inferior runloop interactions those months ago...
21:19 tylercurtis joined #perl6
21:20 whiteknight sorear: it's always been a problem, and likely will be for a long time coming
21:20 whiteknight this certainly isn't my first run-in with it
21:23 tadzik mj41: are the slides somewhere around?
21:24 mj41 tadzik: http://wiki.jvmlangsummit.c​om/pdf/38_Randal_parrot.pdf
21:25 mj41 tadzik: also try to search http://perl6.cz/wiki/Perl_6_a​nd_Parrot_links#Talks:_Perl_6.2C_Parrot.2C_Pugs
21:26 tadzik mj41: thanks
21:29 drbean joined #perl6
21:30 pmichaud good afternoon, #perl6
21:30 diakopter wth is his obsession with [multiple] trampolines?
21:31 diakopter I know that mono uses at least two
21:31 pmichaud sorry I missed #phasers -- was busy with $otherstuff
21:31 sorear Hello pmichaud
21:32 sorear diakopter: who?
21:32 diakopter "chromatic's comments on PerlMonks" you asked for
21:33 sorear ah
21:33 diakopter "Any runtime for Perl 6 is going to end up looking a lot like Parrot."   -- his entire posting reads a lot better if this statement is amended to "Any runtime for Perl 6 is going to end up looking a lot like an attempt at a Perl 6 implementation."
21:33 jnthn pmichaud: No worries. :-)
21:36 pmichaud I guess I should comment on the perlmonks thread.
21:37 diakopter by "support Perl 6" it sounds like he means "support all of Perl 6's control flow and memory management structures natively", which shows merely that he wants certain parts of the implementation at the same level as the GC/JIT.
21:39 chromatic joined #perl6
21:39 masak joined #perl6
21:39 masak ahoy!
21:39 phenny masak: 19:32Z <sorear> tell masak yes, protopad = static lexpad.  static lexpad is probably more correct now since I've eliminated all prototype aspects of the static pad.
21:40 jnthn yayitsmasak!
21:40 masak I missed tonight's #phasers. ごめん。
21:40 chromatic Okay, anyone who wants to psychoanalyze me can do it while I'm here.
21:40 pmichaud masak: I missed it also.  :-)
21:40 masak I will make up for it in a completely non-satisfactory way by reading its logs.
21:40 jnthn masak: Not loads happened. You did miss your chance to say "omg finished my gsoc proj!" :-)
21:40 masak pmichaud: yes, but your missing it was probably honourable, whereas mine was not.
21:41 masak jnthn: perhaps I get to say that in all other possible circumstances instead. :P
21:41 PZt joined #perl6
21:41 jnthn masak: Do we want to know what dishonorable thing you were up to? :-)
21:42 masak jnthn: I was indulging in an impromptu dinner.
21:42 masak I... got a bit carried away...
21:42 jnthn Inpromptu dinner causes inpromptness.
21:42 jnthn ;-)
21:44 diakopter chromatic: it seems I could do it while you weren't here, too
21:45 masak chromatic: you should be here more often.
21:45 chromatic My preference is while I'm here.
21:46 [particle] how does that make you feel?
21:47 masak [particle]++ # the only one who gets it
21:49 TimToady I prefer to psychoanalyze parrots.
21:49 [particle] tell me more about parrots.
21:49 chromatic As long as those psychoanalyzed parrots get bugs filed on them, great!
21:50 masak chromatic: according to @chromatic_x on Twitter, you're a grump today.
21:51 chromatic Well sure, but I'm happy to explain what I mean by "writing trampolines for the rest of your life".
21:54 sorear What definition of trampoline are you using?
21:55 chromatic The rough "My platform's native calling conventions don't support all of the operations I need to do, so I need to do something clever in them so I don't recurse forever and still support the non-linear control flow I need."
21:56 diakopter chromatic: I agree with your point (that a Perl 6 runtime will look a lot like Parrot). But I claim it will be built on [not part of] something that has a very robust (thousands of productive hours put into it) GC and a very robust JIT.  I believe that solely because of the resources [un]available to parrot.
21:57 diakopter but of course I'm not *complaining* about that lack of resources. ;)
21:57 chromatic You pick your poison though.
21:57 chromatic Build on an existing platform which provides a GC and a JIT, and you have to build the rest of your Parrot workalike.
21:58 chromatic You may or may not be able to tell that GC and that JIT how Perl 6 works.
21:58 chromatic You may or may not be able to ask for platform changes to smooth out any impedence mismatches between it and Parrot.
21:58 diakopter yeah.  that's the poison.
21:59 pmichaud rakudo and nqp's perspective is that we're hedging our bets on both solutions, fwiw.
21:59 pmichaud s/solutions/paths/
21:59 sorear I fail to see the distinction here
21:59 sorear PaFo has ... exactly how much ... chance of getting a change approved to ISO C or the Pentium ISA?
22:00 chromatic As much as anyone.
22:00 masak sorear: why would it need that?
22:00 chromatic PaFo also has the same chance of getting a change approved to the Mars mission.
22:01 TimToady you're planning to host parrot using the Mars mission?  Cool!!!
22:02 pmichaud lol
22:02 sorear masak: chromatic appears to be arguing against rakudo -> (parrotoid) -> CLR on the basis having less control than rakudo -> (parrotoid) -> C89
22:02 masak sorear: ah.
22:02 chromatic I'm not arguing *against* anything.
22:05 diakopter chromatic: I'm quite certain that a parrotoid -> CLR will be able "... tell that GC and that JIT how Perl 6 works."  CLR has WeakReferences and quite a lot of control over the GC, actually, and JIT control is "solved" in my C# sprixel runtime, from which niecza spawned, sort of.
22:06 diakopter and that's ignoring the strong possibility of distributing a custom mono
22:06 chromatic Are you able to have precise GC?
22:07 sorear (I should point out that I'm only avoidng Parrot for short-term performance reasons, since niecza is really just intended as a better viv.  Once lorito lands there will almost certianly be a port to Parrot)
22:07 pmichaud fwiw, I'm not sure what this discussion is about.
22:07 pmichaud (not that I need to, but I have trouble seeing a coherent thread)
22:07 masak chromatic: while on the topic of GC, I've never heard anyone explain how the DESTROY submethod would work in Perl 6 on top of Parrot. maybe you know?
22:07 diakopter pmichaud: I think it was about http://www.perlmonks.org/?node_id=855567
22:07 pmichaud diakopter: sure, I saw that thread.
22:08 diakopter that's what I think it was about
22:08 chromatic masak, are you asking about timely destruction?
22:08 pmichaud diakopter: but perlmonks seems to be more along the lines of "Rakudo should focus on finishing what it has instead of looking at other backends."
22:08 pmichaud and I disagree.
22:08 sorear People have an expectation that { my $x = open "foo" } should close foo immediately
22:08 sorear I think this is a P5ism and should die
22:08 diakopter pmichaud: I meant that url exactly.
22:08 diakopter that post.
22:09 pmichaud sorear: it's already been declared dead, at least on #perl6
22:09 masak chromatic: no, I'm asking if there's some decision, anywhere, about how the plumbing between the GC and the DESTROY submethod will actually work.
22:09 chromatic I still don't understand that question then, masak.
22:09 sorear closing files should be done with an explicit framing construct, like C# and Java have now and Scheme has had since forever
22:09 jnthn chromatic: I guess it partly boils down to, "is the destroy v-table method in object overridable"?
22:09 jnthn Or more ot the point
22:10 jnthn What would be the consequences of doing so?
22:10 masak chromatic: maybe I'm phrasing it badly. all I'm seeing in the spec is a hand-wavey "DESTROY will get called on destruction". that's not enough for an implementation.
22:10 jnthn I don't think it's an especially big deal though.
22:10 chromatic I've overridden it before.  As far as I know, it's still overridable.
22:10 jnthn OK
22:10 jnthn We may be able to hang it off that then.
22:10 masak actually, it's probably DESTROYALL that would be called by the GC.
22:11 masak s/probably //
22:11 tylercurtis jnthn: http://trac.parrot.org/parrot/brow​ser/trunk/src/pmc/object.pmc#L289
22:11 chromatic Given automatic allocation and deallocation of PMC attributes, you're not leaking anything then either.
22:11 pmichaud_ joined #perl6
22:11 diakopter chromatic: mono's is not precise, and neither is .Net's
22:11 pmichaud_ *sigh*  feather connection fail
22:11 jnthn tylercurtis: hmm
22:11 pmichaud_ diakopter: I agree with chromatic's bottom point on that post (more)
22:12 pmichaud_ "I suppose the question is whether another runtime can create enough trampolines to prop up the as-yet-unported pudding layer sooner than we can fix those bugs in Parrot."
22:12 pmichaud_ Rakudo and NQP are taking the approach that we're willing to explore both paths.
22:12 chromatic I suppose my point on the PerlMonks thread, phrased badly and nearly implicit, is that "Supporting additional backends from PCT doesn't necessarily take away from the goal of a performant, spec-compliant implementation of Perl 6 with Rakudo but it's definitely not a quick way to get a performant, spec-compliant Rakudo."
22:12 chromatic I think the desire to support multiple backends was one of the two things that killed Pugs.
22:13 pmichaud_ chromatic: I agree, but I think Pugs had different motivations for multiple backends
22:13 chromatic Yes and no.
22:13 diakopter heh
22:13 chromatic One of those desires was -Ofun for sure, but Pugs had unusable performance.
22:13 TimToady I don't think multiple backends killed pugs *at all*
22:13 masak oh noes, hugme quit?! :(
22:13 pmichaud_ I don't think unusable performance was what killed bugs
22:13 pmichaud_ *pugs
22:13 pmichaud_ I think it was an unmaintainable core codebase
22:13 chromatic I stopped using Pugs when the spec tests took 8 hours to run.
22:14 chromatic I don't mind cleaning up unmaintainable code.
22:14 chromatic See also IMCC.
22:14 TimToady patches welcome
22:14 sorear I started using Rakudo when 'make' took 12 hours.
22:14 masak the decrease in bus number killed Pugs.
22:14 chromatic I seem to recall fixing that, too.
22:14 pmichaud_ chromatic: the point is, that nobody has stepped up to maintain pugs
22:14 sorear yes. chromatic++
22:14 pmichaud_ 'make' has never taken 12 hours on my system, fwiw.  it's never taken more than 1.
22:15 chromatic It's too simplistic to say "No one could maintain Pugs."
22:15 diakopter chromatic: oops, I'm wrong; the just-released major release of Mono (2.8) does have a precise one.
22:15 chromatic No one could maintain Pugs for at least one reason.
22:15 pmichaud_ I didn't say "no one could maintain pugs".  I'm saying "no one has"
22:15 masak chromatic: "No-one has wanted to maintain Pugs."
22:15 pmichaud_ and the reason it's not maintained has little to do with multiple-backend-ness
22:15 chromatic Fair point, but I'm not sure it changes my argument.
22:15 masak or what pmichaud_ said.
22:15 chromatic diakopter, are you able to give the GC hints about object layouts for precision?
22:15 chromatic No one has maintained Pugs for at least one reason.
22:16 diakopter chromatic: sigh; another correction; 2.8 isn't released yet
22:16 pmichaud_ one thing we do know that is different between pugs and rakudo is that rakudo's parser is accessible to more people
22:16 chromatic That's a huge advantage for Rakudo, yes.
22:16 pmichaud_ and I've maintained that parsing is at the core of making a successful perl 6 implementation.
22:16 chromatic Being able to write in NQP and Perl 6 is another advantage.
22:16 sorear chromatic: the CLR knows object layouts (it's a lot like the JVM in how it handles this)
22:17 pmichaud_ that's where pugs ran into difficulty -- it was hard to grok the parser and translation unless you were a strong lambdacamel
22:17 TimToady the chief problem with pugs is that the code got too smart for anyone who isn't brilliant to understand
22:17 TimToady much of the time in #perl6 back then was explaining what snippets of Haskell are really doing
22:17 masak or it was too smart from the beginning.
22:17 chromatic I recall that, as you recall.
22:18 chromatic Pugs never had a strong priority of improving its bus number.
22:18 TimToady it did, but Haskell didn't.  :)
22:19 pmichaud_ returning to my earlier comment -- rakudo and nqp are basically entering a phase where we're going to see if parrot improves faster than our ability to target another vm
22:19 sorear (am I the only one who thinks Juerd ought not to IRC from feather?)
22:19 masak jnthn++ # "The hottest footwear!"
22:19 masak jnthn: that's your best pun in a long time!
22:19 chromatic Maybe I'm wrong, but I've always thought that the effort spent on supporting multiple backends for Pugs took away from making Pugs more maintainable.
22:20 pmichaud_ and it's not mutually exclusive --  we fully expect that what jnthn learns from implementing a new object metamodel in nqp will get ported back into Parrot
22:20 jnthn masak: Wow, one you like. :-)
22:20 masak jnthn: yeah, almost all the other ones were awful :P
22:20 jnthn chromatic: The way this is looking at the moment is that we'll end up with _more_ written in NQP.
22:20 jnthn chromatic: Which means more hackable.
22:20 jnthn (And more portable.)
22:20 chromatic Unless it's a pudding layer.
22:21 jnthn And also fewer primitives that need to be made fast.
22:21 TimToady Perl 6 is pudding.  Yum!
22:21 diakopter mmm butterfly pudding
22:21 pmichaud_ chromatic: (I'm speaking for jnthn here a bit)   I think that neither jnthn nor I have a lot of confidence in our ability to effect changes in Parrot except by first prototyping them outside of Parrot.
22:22 pmichaud_ (jnthn please clarify if I'm mis-stating your feelings on this)
22:23 jnthn It's not a mis-statement, just not a full one. I also believe it's _easier_ to prototype at least the current set of stuff I'm doing outside of Parrot.
22:23 chromatic Use cases and design constraints definitely help me make and suggest changes to Parrot.
22:23 pmichaud_ chromatic: agreed, and so we're looking to provide them.
22:24 jnthn But yes, it's true. In the prototype I'm working on, I could just throw in a "static lexpad" concept and hack up an auto-close that uses it and move on. It took me 10 minutes. Now I get to see how it works and how useful it is.
22:24 chromatic I support that fully, but in my mind that's orthogonal to supporting multiple backends.
22:24 TimToady one way to view these parrot attempts at high-level features such as multimethods is that they are useful prototypes that should expect to be thrown away
22:24 chromatic That's how I view them.
22:25 jnthn TimToady: Right. They have been _enormously_ useful in getting us started.
22:25 pmichaud_ ...except that Parrot has had trouble with the "expect to be thrown away" part (e.g., deprecation policy)
22:25 TimToady that's getting better, I think
22:25 pmichaud_ sure, I agree
22:25 chromatic I like to think our current deprecation policy has improved a lot.
22:26 fod joined #perl6
22:26 pmichaud_ but we still have plenty of cases where core issues in Parrot haven't been addressed.  NQP can (1) block, (2) try to improve parrot, and (3) explore other ways of solving the problem.
22:26 pmichaud_ multiple backends falls into 3
22:27 chromatic My preference is 2, 1, 3.
22:27 pmichaud_ well, that makes sense.  I've had little success with 2.
22:27 TimToady 3 also feeds back into knowing how better to express what we want from 2
22:27 chromatic We'll see.
22:28 TimToady We've already seen.  :)
22:29 sorear Do you have a stand on non-Rakudo implementations not using Parrot?
22:30 chromatic Does it matter?  I'm not in charge of how other people spend their time.
22:30 pmichaud_ beyond the points illustrated above, the other reason for targeting other backends is that, as was pointed out to me last year, there's one major scripting language that doesn't run on .Net
22:30 chromatic Ruby?
22:30 pmichaud_ ;-)
22:31 pmichaud_ okay, maybe two.  but the point is, I'd like for Rakudo to mean more than "Perl 6 on Parrot"
22:31 pmichaud_ I'd like it to be robust enough to be shared on multiple platforms.
22:31 sorear FWIW Niecza is stealing bits and pieces of Rakudo all over the place
22:31 sorear both design and actual code
22:31 diakopter Microsoft contracted ActiveState to build ActivePerl.Net, and they did for a while in 1999-2000, but it was abandoned.
22:32 pmichaud_ Allison also made a similar comment at yapc::eu -- that she felt that it was important that we target multiple backends so that we can show other languages a path by which they can ultimately target Parrot.
22:32 perigrin ActivePerl.NET wasn't Perl on the CLR
22:32 diakopter sorry, there was one that was Perl on the CLR
22:32 perigrin but perl embedded into the CLR with a bridge
22:32 TimToady yes, just a bridge
22:32 diakopter I found the one that was a Perl implementation, not the bridge
22:33 sorear Is "Perl on the CLR" allowed to use unsafe blocks
22:33 diakopter I say yes.
22:33 TimToady as long as they're declared unsafe :)
22:33 sorear rewriting the p5vm without pointer arithmetic sounds like "fun"
22:34 chromatic I suppose it's two things.
22:34 sorear and by fun I mean 20+ man-years
22:34 TimToady oh wait, you weren't asking my permission...
22:34 chromatic 1) I have a concern that supporting multiple backends will provide some distraction from making a spec-complete Rakudo on any backend.  I know developers aren't completely fungible, but there is a pudding layer.
22:34 chromatic 2) I want that pudding layer for Rakudo on Parrot to move as much into Parrot as possible.
22:34 masak Yapsi is also heavily inspired by Rakudo.
22:35 pmichaud_ We want #2 also.
22:35 TimToady I want the pudding layer for Rakudo to move as much as possible into Perl 6.  The only way we can agree is to reimplement large chunks of Parrot in Perl 6.
22:36 TimToady which is a disavowed goal of Parrot.  :)
22:36 jnthn The pudding layer should be lagom. :-)
22:36 masak :)
22:36 pmichaud_ and yes... Rakudo has experienced the pushback that TimToady++ mentions quite heavily.
22:37 pmichaud_ It's much less so in recent months... but that may also be because we've stopped pushin.
22:37 pmichaud_ *pushing.
22:38 chromatic I don't understand any of that.
22:38 TimToady you really shouldn't give us straight lines like that...
22:39 diakopter as in... so obtuse...
22:40 * diakopter just startled all my cow-orkers with a guffaw
22:40 chromatic Look, I'm trying to communicate something here I find important.
22:41 pmichaud_ I recognize that.
22:41 pmichaud_ I'm not sure what part isn't understood.
22:41 chromatic What is that pushback and what does it mean?
22:41 chromatic I think also "Why is there pushback?" but that question may depend on my previous one.
22:42 * masak wants to go to bed but finds the discussion fascinating
22:42 pmichaud_ when we identify things that Perl 6 needs from Parrot, we have historically gotten "Perl shouldn't be dictating what Parrot provides"
22:42 pmichaud_ or, even if we identify something really important, it takes months or years for progress to be made on it
22:42 chromatic I can think of several examples.
22:43 pmichaud_ I think you mentioned PCC earlier -- that's probably a very good example, and spot-on for this discussion.
22:43 chromatic I have spent a lot of effort to improve that in 2010.
22:44 pmichaud_ the PCC that parrot put together wasn't sufficient for Rakudo's needs, and that was explicitly identified at the time it was being done
22:44 chromatic If I have to spend more effort to do so, I will.
22:44 pmichaud_ i.e., it was recognized at the time it was being done that we'd ultimately end up writing our own dispatcher
22:45 jnthn (binder in this case, I think)
22:45 pmichaud_ right, binder
22:45 pmichaud_ thanks.
22:45 jnthn (though we've needed our own dispatcher too)
22:46 awwaiid joined #perl6
22:46 pmichaud_ By no means do I wish to discount or downplay the improvements that Parrot has made over the past year.  They've been terrific.
22:46 pyrimidine left #perl6
22:46 jnthn I agree. Parrot _has_ improved and it has helped.
22:47 chromatic That's deliberate.
22:47 pmichaud_ and we recognize that also.  If we're not saying it enough, I'll say it more frequently and publicly.  :)
22:47 pmichaud_ but there are also some areas where the pace of change feels.... glacial.
22:48 chromatic Then we will prioritize them.
22:48 pmichaud_ we've prioritized them a bit also
22:48 pmichaud_ thus, the #1 item I identified at yapc::na we're already working on -- object metamodel improvements
22:49 pmichaud_ it is fully expected that we'll do a new metamodel in Parrot.
22:49 chromatic Sure, and I understand that sometimes Rakudo needs things before Parrot can provide them appropriately.
22:49 chromatic It has to go both ways, though.
22:49 pmichaud_ and we fully expect that someday Parrot will completely switch over to our new model.
22:49 jnthn Do we? :-)
22:49 pmichaud_ jnthn: I do.
22:49 chromatic I do.
22:49 jnthn I don't quite have that much hubris. ;-)
22:49 jnthn Oh, OK
22:49 jnthn :-)
22:50 jnthn \o/
22:50 * jnthn polishes it extra shinily
22:50 pmichaud_ but at the same time we may be able to make some progress on a multiple-backend strategy, so we're doing that too.
22:50 chromatic I expect to have my own input into it with regard to what else Parrot needs, but yes.
22:52 pmichaud_ the other items identified at yapc::na.... I'm not so certain how they'll get handled.
22:52 jnthn chromatic: That's fine, so long as we end up with a superset rather than disjoint sets. :-) Given I'm aiming very a very small "core" and then NQP gets everything built atop of that, a superset could still be pretty small, though.
22:52 jnthn s:1st/very/for/
22:53 pmichaud_ where did the yapc::na list end up, anyway?  I thought it was on the parrot wiki but I don't see it now.
22:53 chromatic Someone took a picture of it.
22:53 pmichaud_ I thought it was also transcribed somewhere.
22:53 * pmichaud_ looks.
22:54 chromatic I think that small core, fat NQP works against Parrot's interests in some ways.
22:54 pmichaud_ in some sense "small core"  is really "Lorito"
22:55 chromatic If we implement most of the rest of Parrot in terms of NQP perhaps.
22:55 TimToady or QP
22:57 pmichaud_ assuming one of parrot's goals continues to be multiple languages running on top of it, what do we expect those languages to be written in?
22:57 pmichaud_ (honest question, not rhetorical)
22:58 TimToady whatever the implementors choose to use
22:58 chromatic NQP seems the most likely candidate.
22:58 TimToady in the short term
22:58 chromatic Right, in the short term.
22:58 pmichaud_ I agree that may be only a short-term answer.... but I'm fairly sure they won't be doing it in PIR or the standard opcode set.
22:59 pmichaud_ so Parrot has to provide something a bit higher-level than what it has now, if NQP is excluded.
22:59 pmichaud_ either way, I think we end up with small core, fatness in an intermediate layer
22:59 chromatic I see no technical reason to exclude NQP.
23:00 pmichaud_ right.  I'm just saying that "fat NQP works against Parrot's interests"  would seem to apply to almost any other pudding layer
23:00 pmichaud_ so then it's a question of "what are Parrot's interests...?"
23:00 chromatic I interpreted it as "Pudding written in NQP" not as "Pudding available as part of NQP".
23:00 tylercurtis Why not both?
23:01 chromatic The former doesn't necessarily imply the latter, but the latter could imply the former.
23:01 pmichaud_ even as "Pudding written in NQP", that sounds a bit like Lorito.  Small core, higher-level stuff written in a higher-level abstraction.
23:01 pmichaud_ perhaps the wrong abstraction, but...
23:01 chromatic And I'm fine with that.
23:02 chromatic I believe it's in Parrot's interests to take many of the Rakudo workarounds, polish them, generalize them, perhaps make them extensible for some Rakudo-specific customizations, but ultimately adopt and absorb them.
23:03 pmichaud_ I agree.
23:03 chromatic Parrot can provide most of the pudding.  You can put chocolate chips and marshmallows in it.
23:03 TimToady that strikes me as premature optimization, usually
23:03 chromatic What does, TimToady?
23:04 pmichaud_ I'd really like for Parrot to provide more of the pudding.  But so far things haven't moved in that direction very quickly.
23:04 TimToady you want most of what you do to be in high level language, and then take bits into core
23:04 TimToady not assume it's almost all going into core
23:04 TimToady fsdo core
23:04 tylercurtis TimToady: I think a large part of the purpose of Lorito is so that much of Parrot's "core" can be written in high level languages.
23:05 chromatic I'm talking of things like dispatch and binding, not necessarily the setting.
23:05 TimToady sure
23:05 pmichaud_ we're talking of dispatch and binding in NQP also
23:05 pmichaud_ iiuc what jnthn++ is working on
23:06 chromatic My *preference* for supporting multiple backends is to port Lorito's M0, not NQP.
23:06 pmichaud_ I don't see a problem with that (more)
23:06 TimToady my preference is that they be the same :)
23:07 pmichaud_ NQP would have no issue with targeting a Lorito M0 that can then go to multiple backends
23:07 chromatic Which would you like to be the same, TimToady?
23:07 pmichaud_ but I think that we'd need some exploration about how to get our higher-level concepts onto those other backends, so that we know what M0 would need to look like
23:07 TimToady Lorito's and NQP's MO
23:07 jnthn chromatic: Thus why NQP's class meta-object will be written in NQP.
23:07 pmichaud_ ...and that's exactly the avenue that jnthn++ is exploring.
23:07 jnthn chromatic: And thus I won't have to port it. :-)
23:08 jnthn Sounds like if we can agree on what comes beneath that, we have a chance of converging. :-)
23:08 pmichaud_ the url I have for the lorito bof notes is http://thenceforward.net/pa​rrot/yapc_bof_20100621.txt  but it seems to be gone/missing now.
23:10 tylercurtis http://webcache.googleusercontent.com/sear​ch?q=cache:Y8-e1K-FB2MJ:thenceforward.net/​parrot/yapc_bof_20100621.txt+http://thence​forward.net/parrot/yapc_bof_20100621.txt&a​mp;cd=4&amp;hl=en&amp;ct=clnk&amp;gl=us
23:10 chromatic Instead of emitting NQP code for another backend, you're okay with emitting Lorito-compatible code?
23:10 pmichaud_ i'm not sure about "emitting NQP code" -- we don't do that now. afaik.
23:10 pmichaud_ right now we have an emitter for PIR
23:10 pmichaud_ jnthn is working on a .net emitter
23:11 pmichaud_ I don't see any reason why we'd have difficulty with a Lorito emitter
23:11 jnthn chromatic: Oh, I was talking about the object-y stuff, not the code generation.
23:11 jnthn But the approach is the take PAST and then emit different things from that.
23:11 pmichaud_ ....and write the emitters in NQP, ultimately.
23:11 pmichaud_ in that sense, it's similar to what PIRATE is doing.
23:12 jnthn pmichaud_: Already am.
23:12 pmichaud_ (iiuc what PIRATE is doing)
23:12 chromatic Yes, that's the intent of PIRATE
23:12 jnthn pmichaud_: http://github.com/jnthn/6model/blob/mast​er/dotnet/compiler/PAST2DNSTCompiler.pm
23:13 pmichaud_ if Lorito's M0 ends up handling the multiple backend aspects for us, we'd happily target it.
23:13 jhuni joined #perl6
23:13 pmichaud_ but something is going to need to describe the metamodel, and it makes sense for us to write that description in p6 or nqp
23:13 chromatic Right.
23:13 pmichaud_ that's what we're doing.
23:13 pmichaud_ well, jnthn++ thus far.
23:14 chromatic Yes, portability to other backends is a possibility of Lorito.  I'd like to see it run on Dalvik, for example.
23:14 pmichaud_ I would view NQP and Rakudo's work on multiple backends as being the path by which Lorito learns what is needed for it to target other backends, then.
23:14 chromatic I don't see that as helpful to Lorito.
23:15 chromatic It's not harmful, but I don't think it's necessary.
23:15 pmichaud_ I do.  I don't think the people involved in creating Lorito have enough understanding of Perl 6's needs.
23:15 chromatic In what sense?
23:16 pmichaud_ I mean as a team dynamic; certainly individuals (yourself) are there.
23:16 pmichaud_ but when we say we need serialization, the discussion tends towards proving that parrot already has what we need instead of seeing that the current model is tragically flawed.
23:17 pmichaud_ or when we need better exception handling and subroutine leave semantics... there's just not an understanding of the issues that we're trying to express.  (more)
23:17 pmichaud_ or, when I give Perl 6 code to try to illustrate it, the answer often comes back with "that's something Perl 6 will have to layer on top of parrot, not something parrot should natively provide"
23:18 sorear there is also an attitude that providing for Perl 6 is politically untenable because it undermines the notion of Parrot as a cross-language VM
23:19 chromatic Then stop perpetuating that myth, sorear.
23:19 sorear It perpetuates fine in #parrot without me
23:19 sorear I only ever talk about it here
23:20 chromatic I disagree, and filing Parrot bugs in here is not effective.
23:20 pmichaud_ but more to my original point -- how often do discussions of Lorito also include "and we need it to go to other vm backends?"
23:21 chromatic Not often, mostly because that's not the primary goal of Lorito.  It's a benefit and it's something I want to make possible, but it's not the primary goal.
23:21 pmichaud_ I don't recall seeing anything in the lorito discussion documents that mention .net or jvm or the like.  Maybe I'm just missing them.
23:21 pmichaud_ if that's a goal, then we'll need some experience to feed into the design.
23:22 chromatic Maybe I'm horribly naive, but I believe that most of porting Lorito to another backend is mapping the handful of M0 ops to another VM.
23:22 pmichaud_ Do we know what M0 ops are needed to efficiently implement a p6-like object metamodel?
23:23 chromatic I believe the same M0 ops needed to implement just about anything else we support right now.
23:24 pmichaud_ that's the disconnect (more)
23:24 pmichaud_ what "parrot supports right now"  is not really what Rakudo needs.
23:24 pmichaud_ or, it's a good first approximation, but we need to refine it a lot more
23:25 pmichaud_ in some sense that statement feels like it might repeat the error that Parrot originally made, when it sought to reimplement the Perl 5 vm
23:25 pmichaud_ because that vm wasn't really what is needed for Perl 6
23:25 chromatic Let me rephrase then.
23:25 pmichaud_ okay, please do.
23:26 pmichaud_ I know my statements probably read much harsher than I intend.
23:26 chromatic If we can port Parrot as it exists now to M0, M0 is sufficient to implement an efficient metamodel in NQP.
23:26 pmichaud_ I'm not so sure about that.
23:26 diakopter (what's M0)
23:27 chromatic M0 is a series of very low level ops, as if you were writing a virtual machine for a language like C without hewing to its memory model or calling conventions.
23:27 chromatic s/series/set/
23:27 pmichaud_ I still remain concerned that Parrot focuses far too much on opcodes when what we really need is methods
23:28 chromatic Me too.
23:28 pmichaud_ and since the discussions I've seen of Lorito are focused on making opcodes more efficient, I worry that it's gotten things backwards.
23:28 chromatic I want to make vtables go away in favor of multimethods in Lorito.
23:28 chromatic Better?
23:29 pmichaud_ Definitely.
23:29 * TimToady is not so sure...
23:29 chromatic Why is that?
23:30 pmichaud_ TimToady: I still think we'll have the notion of vtable-like things that are hidden from the normal method call interface, but they still end up acting very method-like.
23:31 Italian_Plumber joined #perl6
23:31 TimToady it just feels like interpreter-on-top-of-interpreter to me
23:31 TimToady and FP is fundamentally built on lambdas, not multimethods
23:31 pmichaud_ that's a good notion/point to remember.
23:32 chromatic Some FP has to perform pattern matching for dispatch though.
23:32 pmichaud_ anyway, I'll be called to dinner soon (more)
23:32 TimToady Yes, "some", not "all"
23:33 pmichaud_ I'll note that while others have focused on the fact that NQP is looking at other backends, it is not at all the core team's primary focus at the moment, except maybe for jnthn++
23:33 pmichaud_ i.e., what gets the most publicity is not necessarily where the effort actually ends up
23:33 chromatic Like I said, it's none of my business how other people spend their time.
23:33 chromatic I just want to make sure that Parrot supports Rakudo as best it can.
23:33 pmichaud_ +1 to that :)
23:34 chromatic If that means pleading and cajoling to pull parts of proofs of concept and workarounds into Parrot, so be it.
23:34 pmichaud_ Perhaps kid51 can re-produce the notes he had posted from the yapc::na meeting
23:34 [particle] i think they're on the parrot wiki, but i can't recall
23:35 pmichaud_ [particle]: I couldn't find them there.
23:35 tylercurtis chromatic: Is the Parrot object model intended to be implemented on top of M0 in some manner? If so, I suppose that that means it will probably allow pointer arithmetic? In which case, how do we translate pointer arithmetic to JVM ops?
23:35 [particle] harumph
23:35 tylercurtis http://webcache.googleusercontent.com/sear​ch?q=cache:Y8-e1K-FB2MJ:thenceforward.net/​parrot/yapc_bof_20100621.txt+http://thence​forward.net/parrot/yapc_bof_20100621.txt&a​mp;cd=4&amp;hl=en&amp;ct=clnk&amp;gl=us google cache of broken link pmichaud_ mentioned earlier to those notes, I think.
23:35 chromatic I don't think we have to support pointer arithmetic; we just have to support numbered slots.
23:36 pmichaud_ tylercurtis++ # yes, that looks like it
23:36 pmichaud_ my comments from http://lists.parrot.org/pipermail/p​arrot-dev/2009-November/003223.html  also still apply
23:36 pmichaud_ #4 has been addressed.
23:37 chromatic #1 is in progress, as always.
23:37 pmichaud_ #1a has been worked on
23:37 pmichaud_ I haven't seen much new from #1b lately
23:37 pmichaud_ #2 is still a bit of an issue
23:37 chromatic I can work on #6 if you want it now.  It's fairly easy.
23:38 pmichaud_ jnthn++ is working on it
23:38 chromatic Lexicals?
23:38 pmichaud_ yes
23:38 pmichaud_ as well as attributes
23:38 pmichaud_ and we still have some p6 spec work to be done there
23:38 * TimToady hides
23:39 chromatic Primitive lexicals seems like an easy fix in Parrot.
23:39 jnthn I'm only digging into attributes for the moment.
23:39 pmichaud_ sure, but we still need tools to be able to support them
23:39 jnthn It's too early for me to say whether Parrot doing #6 will for certain help but I suspect yes.
23:39 pmichaud_ and even if you gave us primitive lexicals tomorrow, I doubt we'd do much with them until after jnthn's work lands
23:39 chromatic NQP support you mean?
23:39 pmichaud_ NQP and PCT, yes.
23:39 jnthn (In the long run, not "tomorrow", as Pm said)
23:39 jnthn Well, medium run
23:40 jnthn :-)
23:40 chromatic Let me know.  I know how to make them work in Parrot.
23:40 pmichaud_ right
23:40 pmichaud_ that's one of the reasons that item was #6 on my list -- it's worth considering but not a huge impact
23:40 pmichaud_ #2 from the yapc::na list is more important (the general handling of lexpads and contexts in parrot)
23:41 chromatic Sure, but a week of work for lexicals is going to land sooner than a month work of lexpand handling.
23:42 jnthn chromatic: What I will say is don't spend time on native type support in the Object PMC.
23:42 jnthn chromatic: Well, re-phrased.
23:42 jnthn Don't spend time on it in the epxectation it'll help Rakudo.
23:42 pmichaud_ my feeling is that this is an area where lexpad handling will ultimately be the arbiter of how it needs to work
23:42 chromatic Right, that's part of metamodel changes.
23:42 jnthn (Think you know that, but don't want to send you down a blind alley.)
23:43 pmichaud_ i.e., the week of work for core types in lexicals would ultimately be lost because lexpad handling implies a more radical change anyway
23:43 pmichaud_ not sure that's the case, but that's my feeling.
23:43 mjk joined #perl6
23:43 chromatic They have to be able to store and retrieve things that aren't PMCs anyway.
23:43 pmichaud_ it feels like one of those fundamental things like list/arrays/iterators in p6, where the smallest change in the fundamentals ends up having radical changes on the entire system
23:43 chromatic Adding typed storage is fairly easy.
23:44 jnthn I think we may need a model change though.
23:44 pmichaud_ anyway, typed storage might be of some use to NQP at some point, it's very unlikely to help Rakudo anytime soon.
23:44 pmichaud_ i.e., Rakudo's typed storage is likely to be based on the object metamodel.
23:44 pmichaud_ and not on Parrot register types.
23:44 jnthn For example, the static lexpad and dynamic lexpad probably want to look a lot more alike.
23:44 chromatic Including lexicals?
23:45 chromatic http://trac.parrot.org/parrot/w​iki/PCCPerformanceImprovements
23:45 chromatic I want to address how we handle contexts and signatures anyway.
23:45 chromatic That could include more specific types of Subs, like Closure.
23:45 pmichaud_ ...Closure?
23:46 chromatic Or at least a specific Sub subclass which knows it has an outer scope.
23:46 chromatic outer static scope
23:46 jnthn argh, didn't we kill that?
23:46 pmichaud_ ah.
23:46 pmichaud_ well, that's a piece we're definitely missing.
23:46 chromatic static scopes?
23:46 pmichaud_ afaik, we don't have a way in Parrot to say "create a Sub of type OtherPMC"
23:46 TimToady seems more like you'd want a specific class that *doesn't* know about that, since the default is to have an outer
23:46 pmichaud_ and yes, what TimToady said
23:47 pmichaud_ we have far more subs with outer scopes than subs without.
23:47 pmichaud_ subs without outer scopes are quite rare in Perl 6, or NQP.
23:47 chromatic I have no preference which is the default, merely that we can distinguish them.
23:47 pmichaud_ right now we can distinguish by the existence of an :outer flag :-)
23:47 jnthn Isn't that just a pointer-is-not-PMCNULL check today?
23:47 TimToady it should be orthogonal to type
23:47 jnthn (e.g. the otuer thingy)
23:48 pmichaud_ and yes, the inability to have good sub types is a blocker for many parts of NQP and Rakudo.
23:48 chromatic I don't want to perform runtime checks for things we know at compile time.
23:48 pmichaud_ we don't always know the outer at compile time.
23:48 TimToady huh?
23:48 jnthn pmichaud_: We _can_ conceptually though.
23:48 pmichaud_ TimToady: artifact of Parrot's compilation model.
23:48 pmichaud_ yes, conceptually we can.
23:48 jnthn pmichaud_: Other things keep us from doing so.
23:49 jnthn Right. :-)
23:49 pmichaud_ but imcc's linkage is a problem.
23:49 jnthn That's the disconnect there.
23:50 * [particle] shoots imcc
23:50 pmichaud_ anyway, NQP suffers from the Sub PMC type problem today -- it doesn't have a way to compile-time create a Sub of type RegexPMC
23:50 pmichaud_ (or any subclass of Sub)
23:50 [particle] if only bullets stopped zombie compilers
23:50 pmichaud_ I'm being called to dinner
23:50 chromatic I think that's fixable.
23:51 TimToady .oO("put a bullet through csh's head")
23:51 pmichaud_ chromatic: I think it needs to be fixed as part of a larger serialization fix
23:51 pmichaud_ although perhaps there's an intermediate step
23:51 chromatic :subtype( 'MyCoolSub' )
23:52 pmichaud_ chromatic: would that work even if MyCoolSub is a type created during :load :init ?
23:52 pmichaud_ i.e., not a core PMC or dynpmc?
23:52 chromatic Not sure, but it could be fixed.
23:52 pmichaud_ okay.  That gets into some nasty parts of imcc, I fear.
23:53 pmichaud_ and definitely affects freeze/thaw sorts of things, I suspect.
23:53 pmichaud_ anyway
23:53 pmichaud_ chromatic: your concern about multiple-backends diluting effort is noted; let us know if it looks like progress in other areas is stalling.
23:54 chromatic Will do.
23:54 pmichaud_ I don't agree that multi-backends was a primary cause for lack of effort on pugs
23:54 pmichaud_ but I agree it is a danger
23:54 chromatic It wasn't the primary cause no.
23:54 pmichaud_ personally, I still measure success in terms of how usable rakudo is for the typical programmer
23:55 pmichaud_ and for me, that's features and speed at this point
23:55 pmichaud_ (and correctness)
23:55 pmichaud_ okay, gone to dinner.
23:56 TimToady chow
23:57 sjohnson ciao
23:57 sjohnson ( `ー´)

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

Perl 6 | Reference Documentation | Rakudo