»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! | Rakudo Star Released!
Set by moderator on 11 August 2010.
00:00 Psyche^ joined
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.
plobsing It is probably using &_config from parrot's config.pir to try to determine things. cacheing might be useful. 00:04
pugssvn r32022 | lwall++ | [STD] "$a.$b" produced bogus method call and didn't check $a correctly 00:08
00:12 infrared left
plobsing cognominal: the constructor for PCT::HLLCompiler loads it to provide the '$version' attribute. Rakudo creates 14 PCT::HLLCompiler objects. 00:19
sorear diakopter: Tentatively seems to be working now. What did you do? 00:20
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␤»
pugssvn r32023 | lwall++ | [STD] disallow 'my $$$$a' 00:22
diakopter sorear: I didn't do anything :)
TimToady just like most "cures" for arthritis... 00:23
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:36
sorear erm. export problem? 00:45
oh
diakopter: So, for strawberry, I should what, avoid all dependance on non-core XS modules? 00:48
00:51 miyagawa joined
sorear hello miyagawa 00:53
diakopter: it;s back. 00:55
00:57 colomon joined
jnthn -> sleep 00:57
01:06 redicaps joined
sorear diakopter: do you know who to talk to about fixing dalek's github plugin? 01:06
ingy colomon: you can compile rakudo* without installing it 01:07
colomon: then run: PERL6=path/to/star/perl6 make test
I think
sorear diakopter: wait a second. No XS means no Class::MOP. Do I need to de-Moose STD?
01:11 lue joined
lue cool! Someone tried to log in as me a couple hours ago! [er, I mean hi o/] 01:11
dalek ecza: d48cc27 | sorear++ | :
<pre>m Op.pm

  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Implement Op-level support for :($x, $y) := (1, 2)</pre>
01:12
ecza: d7d7109 | sorear++ | :
<pre>m CompilerDriver.pm

m Op.pm m Optimizer/Beta.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Beta is closer; still need to handle lexicals</pre>
ecza: f6ca7b8 | sorear++ | :
<pre>m CgOp.pm

m Niecza/Actions.pm m Op.pm m Sig.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Remove several fossils from Decl::SimpleVar</pre>
diakopter sorear: XS isn't a problem at all 01:15
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?
sorear goes off and rereads perlport 01:17
diakopter no; that'd be a burdensome request
sorear: don't worry about it until I get back to you with error messages or a success report :) I'll try tonight 01:18
01:23 gbacon joined 01:24 TiMBuS joined 01:45 petdance joined 01:59 whiteknight joined
diakopter sorear: ping 01:59
sorear pong. 02:01
STDeco's sins according to perlport: * Manipulating paths without File::Spec * Using %ENV at all * Relying on XS modules * Character class ranges 02:02
I am thinking of changing STDeco to use Storable and __DATA__ instead of YAML::XS and heredocs, anyway 02:03
ingy :( 02:04
02:04 ruoso joined
ingy __DATA__ and YAML::XS! 02:04
sorear That might work 02:05
The big problem with heredocs is that they get interpreted twice
leading to the beauty of YAML::XS::Load(Encode::encode_utf8(<<RETREE_END)); 02:06
because YAML::XS and perl both think that they should be doing the byte->char conversion
ingy I think YAML::XS has a utf8 bug :\\ 02:07
I'll look into it
02:08 Ragnar1990 joined, Ragnar1990 left 02:10 literal joined 02:11 drbean joined
diakopter sorear: well, the Makefile would need entirely rewritten to work in cmd.exe/strawberry/dmake 02:12
02:13 Felipe__ joined
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.
diakopter I would, if I understood it in the slightest 02:17
sorear I don't really understand it either
I'm not really good at the whole "bootstrapping" thing 02:18
diakopter then we are paddleless above a creek
sorear the crux of the makefile is ./viv -5 -o STD.pmc STD.pm6
everything else is scheduling stuff to try and keep us out of bootstrap hell 02:19
a lot of the stuff there is fossils from back when viv was in active development
diakopter odd... (more) 02:20
sorear in particular the STD.store stuff
diakopter die "Did you run make in src/perl6?";
sorear Storable can pull in a 15MB parse tree dump in about 1/16 of the time needed for STD to reparse it
diakopter is executed
when I run perl viv -5 -o STD.pmc STD.pm6 02:21
sorear STD.pm needs to be deleted
diakopter ok, I did that..
sorear I'm not sure if this is a Perl bug
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
you haven't built STD yet
the bootstrap version of STD.pmc is kept somewhere else
stage0 I think
diakopter so... 02:23
sorear there are @INC shenanigans to find the correct version at each stage of the bootstrap
they were mostly created by a random design walk
diakopter i see
installing Moose now.
sorear I think the current approach is to set $ENV{STAGE} = 0, which causes stage0 to be added to @INC 02:24
recently Audrey changed the executables to add the $0 path to @INC in front of the system libpath
diakopter ok, this is fail. need a much newer strawberry
sorear which avoids certain issues if there's an installed CPAN STD 02:25
STAGE=0 adds /stage0 *in front of that*
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
STAGE=0 ./std CORE.setting # because STD isn't smart enough to compile .setting files on demand
02:27 jhuni joined
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
sorear STAGE=0 ./viv -o Cursor.pmc -5 Cursor.pm6
those three command should be the minimal Unix build sequence with the current guts
02:28 Felipe__ joined
diakopter trying to install Moose on much later strawberry, now. 02:28
02:28 leprevost joined, miyagawa left
diakopter sorear: strawberry uses dmake.exe, btw 02:29
sorear would it help if --use-bootstrap-std became a command line argument 02:31
instead of using %INC
02:31 ruoso joined, araujo joined
sorear tools.openoffice.org/dmake/index.html ? 02:32
diakopter yeah I think that's a version.
I think it's not distributed with strawberryperl, but instead it downloads some "fully-unencumbered" (old[er]) build of it from somewhere 02:33
upon first opportunity
nice; Moose installed ok
LibYAML installed ok 02:34
sorear: it seems to be working. Compiling *.pm6 02:35
tylercurtis Do
tylercurtis accidentally hit enter. 02:36
diakopter that's smiled upon
that works 02:37
and SPEEDY too
perl viv -e 'say("hi")'
300ms
course, I have lines such as: Γöé ΓööΓöÇVAST::value__S_number, BEG: 4, END: 5, SYM: number, WS: 1, 02:39
afk&
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:42
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:43
if the same role goes into more than one class, nextsame will find all of them 02:44
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
p6eval rakudo b64718: OUTPUT«B␤»
tylercurtis So, that's the correct behavior, right? 02:46
TimToady callsame can't be used for that
yes
and is intended to be like Smalltalk traits
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:47
02:48 molaf joined
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␤»
tylercurtis rakudo: role A { has $!f; }; class B does A { method f { say $!f; } }; B.new.f; 02:53
p6eval rakudo b64718: OUTPUT«Any()␤»
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)␤»
TimToady well, we went beyond the original traits when we allowed attributes
but we were already starting to treat roles more like generics than traits are 02:55
tylercurtis "also is Foo" also seems to be an extension (although traits perhaps might have allowed that if Smalltalk allowed multiple inheritance). 02:57
02:59 Italian_Plumber joined
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:00
TimToady I think it allows self.RoleName::meth 03:09
not sure what rakudo implements there though
03:16 mjk joined
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
TomDLux evening, folks 03:27
perigrin_ notes that there has not been later papers regarding his own attrocious manging of the English language. 03:28
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:32
tylercurtis Evening, TomDLux. 03:33
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? 03:35
ash_ rakudo: say (1 | 2 | 3).perl 04:02
p6eval rakudo b64718: OUTPUT«any(1, 2, 3)␤»
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:09
PerlJam pmichaud: presumably it also helps other compiler writers? 04:13
pmichaud PerlJam: yes; my only question is whether there might be a bug lurking that isn't adequately tested by the standard tests 04:15
PerlJam leans towards committing than not 04:16
ash_ pmichaud: have you tried rakudo's tests too?
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
and nqp's
ash_ s/builds rakudo/builds rakudo and tests successfully/
04:20 karb joined
pmichaud okay, committing patch. 04:26
dalek p-rx: 6e87137 | pmichaud++ | :
<pre>m src/Regex/Cursor-protoregex-peek.pir

   <pre style='white-space:pre-wrap;width:81ex'>Allow protoregexes to avoid calling !cursor_debug when debugging is turned off.</pre>
04:27
p-rx: 4dc9c4b | pmichaud++ | :
<pre>m src/PAST/Compiler-Regex.pir

   <pre style='white-space:pre-wrap;width:81ex'>Avoid calls to '!cursor_debug' method when debugging is disabled.
This (combined with previous commit) appears to improve Rakudo compilation speed about about 9% on the core.pm benchmark.</pre>
p-rx: c95f68a | pmichaud++ | :
<pre>m src/stage0/HLL-s0.pir

m src/stage0/P6Regex-s0.pir m src/stage0/Regex-s0.pir
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Update bootstrap with improved debug calling.</pre>
rcfox Is it possible to have class variables, rather than object variables?
pmichaud ?
rcfox "Static members" ?
pmichaud oh
yes, use 'our' or 'my'
rcfox Instead of has?
pmichaud yes.
afk for a short while 04:30
rcfox Thanks.
PerlJam rcfox: what are you doing with class variables? (I don't think we have a good example for the book) 04:33
(actually, I don't think we have *any* example for the book)
rcfox PerlJam: Actually, I'm using it in a grammar. :) 04:34
Give me a few minutes and I'll have something to show. 04:35
sorear is back 04:36
04:37 redicaps left
sorear diakopter: nice! 04:39
diakopter: So I guess binmode STDOUT, ":utf8"; isn't adequate to print arbitrary Unicode characters on Windows, huh. 04:41
Alias <sorear> should I ask Alias for information on what modules are OK to use? 04:46
sorear: Most XS works just fine, unless it wants to link to some underlying libwhatever that we don't have
05:09 Cyrus joined 05:14 kaare joined
jdv79 XS-- 05:18
rcfox PerlJam: github.com/rcfox/Perl-6-English-Par...English.pm 05:20
(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 rakudo.org/status . It looks like there are more passing tests than spec tests. What is up?
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
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
dukeleto pmichaud: i see. could you give me a rough estimate for what X is currently?
pmichaud the hard part is knowing how many tests there actually are 05:23
we don't have a good way of calculating that.
dukeleto pmichaud: ok. is there a better statistic that I can mention ?
dukeleto is working on his PL/Parrot + PL/Perl6 talk for PDXPUG: pugs.postgresql.org/pdx 05:24
pmichaud when is your presentation?
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
the total amount of spectests has been changing over time
dukeleto pmichaud: my presentation is thursday at 7pm 05:26
pmichaud okay. I can get you a number tomorrow, I think.
dukeleto sorear: yes, which is why i assumed that a % was better than saying "we pass 12,454 spec tests"
pmichaud: cool! I appreciate it.
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 :)
tylercurtis rcfox: heh. I don't use \\s+ or similar in my grammars because cperl-mode interprets it as a substitution.
dukeleto pmichaud: yes, both have their pitfalls, no better way to lie than with statistics 05:28
rcfox Heh, weird.
tylercurtis dukeleto: How about "We pass X% of the N spectests."? 05:29
dukeleto tylercurtis: sure. But it seems that N's wavefunction won't collapse until pmichaud observes it 05:30
tylercurtis dukeleto: True. But you can't know X until you know N. 05:31
05:34 am0c joined
dukeleto has a few slides to get PostgreSQL database people interested in Rakudo, anybody have suggestions? 05:38
sorear giving a link
dukeleto sorear: a link to rakudo.org ? I plan on giving lots of links
sorear I meant to the slides 05:39
so we could give context-appropriate advice
dukeleto sorear: ah, I am working on them now, will push a skeleton in a few mins. In the meantime, take a look at pl.parrot.org/plperl6.html 05:40
sorear: github.com/leto/presentations/raw/5...G/pres.pdf 05:45
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
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:46
05:49 lucs joined
sorear wonders if a slightly fancier demo would be an improvement 05:51
dukeleto sorear: what kind of slightly fancier demo? 05:54
sorear: you mean a fancier example stored procedure in PL/Perl6 ? 05:55
sorear yes 05:56
plobsing that second PL/Perl6 demo makes me wish for "@_ -> ... { ... }" as a kind of let-like syntax
sorear I didn't see any PL/Perl6 example at all
plobsing the first link 05:57
sorear only a PL/PIR example which implements +5
plobsing pl.parrot.org/plperl6.html
dukeleto sorear: that link has a good example procedure
05:57 wtw joined
dukeleto sorear: i will probably use that example in the presentation, with possibly a few others 05:57
05:58 cjk101010 joined
sorear my ($limit) := |@_ 05:58
dalek ecza: 1a512a6 | sorear++ | :
<pre>m Op.pm

  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Beta-reduction: decls and bare blocks</pre>
ecza: d059983 | sorear++ | :
<pre>m CompilerDriver.pm

m Optimizer/Beta.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Finish fixing and put beta-reduction live
30% decrease in test suite runtime, -15K SAFE.dll, -80K compiled testsuite</pre>
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?
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
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
sorear is looking at 56,500 lines of yaml dump
CREATE ... $$
[+] (1, 1, *+* ... $^limit); 06:02
$$
plobsing that would be really nifty
dukeleto sorear: look at github.com/leto/plparrot/blob/master/plperl6.pir for how the data marshalling is done in PL/Perl6
sorear S06:1733 "Placeholder variables" 06:03
already handled in Rakudo 06:04
tylercurtis wants Smalltalk's semicolon but isn't sure he actually has any use for it.
dukeleto sorear: i will try adding a test using $^limit now
tylercurtis rakudo: (.say: 'foo'; .say: 'bar') given $*OUT 06:05
p6eval rakudo b64718: OUTPUT«foo␤bar␤»
dukeleto sorear: gist.github.com/528644 <-- error i get trying to use placeholder variables 06:08
sorear: seems like I can't do sub (@_) { ... } with placeholders 06:09
06:11 itz joined, au|irc joined, andyrhee joined, japhb_ joined
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
rakudo: (sub { say $^limit })(12)
p6eval rakudo b64718: OUTPUT«12␤»
plobsing rakudo: (sub { say @_[0] })(12)
p6eval rakudo b64718: OUTPUT«12␤»
06:13 szbalint joined, jdv79 joined
dukeleto plobsing: does it work within an eval ? i will try it 06:13
06:14 chitragupt joined
dukeleto plobsing: i get "Too many positional parameters passed; got 1 but expected 0" when I remove the (@_) signature for the sub 06:14
tylercurtis If you don't use @_ within it, it won't expect a *@_ parameter. 06:16
plobsing dukeleto: can I see the code giving you this error? 06:17
dukeleto rakudo: (eval q<<< sub { say 42 } >>>)(1)
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␤»
dukeleto plobsing: there ya go
plobsing well sure it'll give you that error. your block is smart about how many params it expects and enforces that. 06:18
rakudo: (eval q<<< sub { say $^x } >>>)(1)
p6eval rakudo b64718: OUTPUT«1␤»
plobsing rakudo: (eval q<<< sub { say @_[0] } >>>)(1)
p6eval rakudo b64718: OUTPUT«1␤»
dukeleto plobsing: i guess that test is just wrong, then.
dukeleto goes and fixes stuff 06:19
sorear dukeleto: sub (@_) { is wrong
sub (@_) { expects 1 array parameter 06:20
sub { expects any number of parameters
sub { with the @_ placeholder used is equivalent to sub (*@_), _not_ sub (@_) 06:21
also you should be passing parameters :flat
moritz_ sub { } expects zero parameters
plobsing rakudo: (sub { }).signature.perl.say 06:22
p6eval rakudo b64718: OUTPUT«:()␤»
dukeleto sorear: i flatten the array in PIR
i am running into the issue that sub {} expects 0 zero parameters, as moritz++ says 06:23
so perhaps I want (*@_) ?
06:24 am0c joined
sorear sub {} expects 06:24
plobsing dukeleto: you want *@_ if you want weak argument-arity like perl 5
sorear 0 parameters if no placeholders are used
0-infty parameters if @_ is used
dukeleto I still get that same error "Placeholder variable cannot override existing signature" when if I use *@_ 06:25
06:25 foodoo joined
cjk101010 I thought sub {} is equivalent to sub (*@_) {}? 06:25
dukeleto s/when if/when/
sorear forgive my pg-stupidity, but surely somefunctionwithnoargs(1,2,3) failing is a GOOD thing?
if you want the function to accept any number of parameters, use @_ in it somewhere
moritz_ cjk101010: not anymore 06:26
dukeleto: why don't you let the user declare a signature?
sorear or maybe allow some kind of WITH SIGNATURE clause in the header, of pg lets you do that
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
+tutorial
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
I'll update the 5-to-6 thing, thanks
cjk101010 ok… thanks for the information.
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); ?
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 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
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 }(|@_)
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:31
moritz_: the stored procedures are actually all anonymous, so that other procedures can't modify them, only call them from SQL. 06:33
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
moritz_ dukeleto: you can do that with sub to 06:34
rakudo: my $x = sub ($x, $y) { say $x * $y }; $x(2, 5)
p6eval rakudo b64718: OUTPUT«10␤»
06:35 Su-Shee joined
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
tylercurtis Good night, #perl6! 06:37
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.
sorear How demanding is pg's security model? 06:42
Should Alice be able to do &infix:<+> := &infix:<->; and affect Bob's PL/Perl6 procedures?
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
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.
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:44
sorear: but if you allow anybody to write them, then your example with modifying &infix can happen 06:45
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:46
plobsing: so I think that if two procedures named foo are defined, the last one wins 06:47
plobsing: i am not even sure if it is a huge issue, because in theory, DBAs would only let a trusted user write procedures
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:49
is there a way to syntax check a snippet of Rakudo from PIR without running it? 06:52
sorear call perl6;Perl6;Grammar.parse maybe? 06:54
you'll need to set up a few environmenty bits
plobsing don't phasors and macros need to be evaluated in order to parse Perl 6?
moritz_ yes 06:55
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
p6eval std 32023: OUTPUT«ok 00:01 115m␤» 06:57
dukeleto wonders if/how phasors should be dealt with in PL/Perl6 07:02
plobsing can you parse in an extremely paranoid sandbox? 07:03
sorear Not in current Rakudo
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
dukeleto would probably be fine with a subset of Perl 6 without phasors/macros 07:07
plobsing: in theory, they should be only parsed once. I think that is true currently.
sorear Why are you so concerned about phasors, anyway 07:16
What do you have against CATCH 07:17
pragma_ what the frick is a phasor
sorear They're actually spelled phaser
pragma_ oh, a phase changer?
sorear S04:1275
pragma_ now that makes more sense and less star-trekkie.
carry on, gentlemen.
sorear the perl 6 naming process has always been pun-oriented 07:18
pragma_ a pun is fun
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
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
dukeleto frettled: one pun for Mu, one pun for me, ... 07:27
sorear dukeleto: I wonder what the security implications of embedding Parrot
frettled exactly :)
sorear 's GC into pgsql are
How well does pg handle sigsegv?
dukeleto sorear: it core dumps
sorear: the connection core dumps, not the master process
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.
sorear I'm more thinking of the fact that Parrot's mark recurses on the C stack
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
(fixing this is nontrivial but a high priority)
dalek ecza: aae0b1f | sorear++ | :
<pre>m Op.pm

m RxOp.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Enable regexes to use beta-opt</pre>
sorear finds that he uses git-grep a lot more often than ack now 07:37
07:47 tadzik joined
tadzik ahoj 07:47
mathw oh hai tadzik
07:50 mjk joined 07:51 cono joined
sorear hellow tadzik 07:52
07:59 barney joined
moritz_ support.github.com/discussions/repo...roken-html 08:12
avar I can also bring in a commit bot here that uses the github API and isn't broken like that 08:14
moritz_ now that would be nice 08:15
avar It needs everyone to add a post-receive-hook though: help.github.com/post-receive-hooks/
08:16 dakkar joined
avar This is how it looks like: paste.scsys.co.uk/48377 v.nix.is/~avar/bot.png 08:17
It tries to emulate the github timeline view
moritz_ hm; a bot could be pull-only and still use the github API 08:19
avar sure, but not the post-receive-hook api 08:20
which is lazier :)
sorear Why don't we just use CIA?
moritz_ it doesn't have the karma hooks that dalek comes with :-) 08:21
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.
That'd probably be easiest if CIA does what you want, just ~30 lines of POE code
moritz_ would probably need 200 08:24
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
avar That was predicated on "if that's needed..." 08:27
you'd also need a name -> nick mapping
08:29 dakkar joined 08:36 mjk joined
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:43
moritz_ o/ 08:44
sorear yay 08:55
I don't see a way to set up a nick mapping with CIA, although I can set the karma hook 08:56
so y'all will need to have your CIA nickname be the same as your #perl6 nickname, I think
(which need not be the same as your github id. I think.) 08:57
09:02 timbunce joined 09:05 thebird joined 09:13 nadim_ joined
jnthn morning, 6folk 09:15
moritz_ mrnng 09:16
sorear hello jnthn
mathw lolitsjnthn 09:19
mathw has a happy
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
nadim_ s/någon/someone/
mathw the +- operator in that post is a custom one
sorear nadim_: junctions and user-defined operators are completely orthogonal in rakudo
mathw autothreading of junctions should work over user-defined operators
unless you specifically define them in such a way that it doesn't 09:21
09:21 masak joined
masak hola, #perl6! 09:21
jnthn como estas, masak? 09:22
.oO( I bet I got that wrong... )
09:23
nadim_ so $j = 3 +- 3 ; say 't' if 4 ~~ $j ; # print t ?
masak jnthn: you seem to have gotten that right, modulo IRC-optional accents :) 09:24
jnthn heh
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. :-)
masak: I dunno...maybe the need to get up in the morning for the conference helped? :-)
09:25 Trashlord joined
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? =)
moritz_ that's why :sameaccent got renamed to :samemark
masak jnthn: well, it was more like I woke up consistently at 7, and that was pretty convenient for the conference as well.
moritz_ 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
mathw saluton, masak 09:28
sorear masak: the general term is diacritical mark
hence samemark/ignoremark
masak sorear: ah, thanks.
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
jnthn masak: They may be more than one type of thing... :-) 09:29
moritz_ is the french cedilla an accent?
nadim_ no
non 09:30
arnsholt I'd say yes =)
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.
mathw moritz_: looks as accurate as my knowledge can assess
arnsholt Is the dot over the i an accent, though? =)
masak mathw: saluton! what's the state of Form, and what's the next step in its evolution? :)
mathw The state is unchanged since R* 09:31
moritz_ did you mean "the dot over the ı"? :-)
mathw The next step is some documentation
arnsholt moritz_: Exactly =D
nadim_ accents is what make you pronounce domething slightly differently. The cedila makes a different phoneme. IMO of course
jnthn moritz_: Note that the meta-model for Rakudo will be re-written into NQP
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
jnthn moritz_: It will thus not need to be re-written per backend. 09:32
mathw \\o/
jnthn Just re-worked once, which has to happen during the great metamodel upheavel anyways. :-)
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
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
jnthn I expect to have something interesting to show on the "port of NQP to .Net" front later on this week.
sorear I would like to point
nadim_ sorear: that would be the worst definition ever of what an accent is!
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
mathw jnthn++
sorear++
moritz_ sorear: me neither; which is probably not quite clear from www.perlmonks.org/?node_id=855440 09:35
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."
jnthn moritz_: That's more accurate.
I expect there to be some idea sharing and so forth. 09:36
But the "port PAST and NQP" steps for Rakudo is a very deliberate part of what I'm doing too. 09:37
They've proved to be a good toolchain for compiler hacking. Now they can become a good toolchain for multi-backend compiler hacking.
mathw \\o/
Why shouldn't these wonderful tools help people targetting other systems
jnthn Exactly. :-) 09:38
sorear moritz_: fwiw, I fully expect to port Niecza to Parrot at some point
moritz_ sorear: wow, that surprises me a bit :-) 09:39
masak jnthn: how does your Test::Mock stack up against chromatic's observations about his own module Test::MockObject at www.modernperlbooks.com/mt/2010/08/...bject.html ? 09:40
jnthn masak: Well, you saw how long it took me to design and implement Test::Mock. :P 09:41
masak: So probably badly. ;-) 09:42
09:42 yves joined
masak jnthn: I think I'd like to explore things in that direction. 09:42
thing is, I haven't done much mocking myself.
masak asks a question on chromatic's blog
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.
jnthn oh gah, fail
phenny: er, where "that use case" = "a project for $dayjob"
phenny: tell masak er, where "that use case" = "a project for $dayjob"
phenny jnthn: I'll pass that on when masak is around.
jnthn ...OK, I'm really going to make another cup of coffee now. 09:45
09:45 masak joined 09:49 araujo joined
sorear any objections to me continuing Project CIA 09:55
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.
sorear moritz_: Did CIA once do that? 09:57
moritz_ sorear: wait, I think I'm confusing CIA with the github.com owned bots 09:58
masak another Twitterer liking Perl 6: twitter.com/cjk101010/status/21381010302
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.
masak: 09:44Z <jnthn> tell masak er, where "that use case" = "a project for $dayjob"
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. 09:59
10:00 Italian_Plumber joined
masak also, a really good piece of advice from @miyagawa: twitter.com/miyagawa/status/21359813423 :-) 10:01
masak gladly considers himself a Rakudo developer in this context :)
10:01 CIA-21 joined
sorear let's see if the custom karma hook thing works 10:01
karma sorear
buubot: karma sorear
buubot sorear: sorear has karma of 768
tadzik buubot: karma tadzik 10:02
sorear damn you, now I don't want to push
buubot tadzik: tadzik has karma of 36
sorear 3 * 2^8, such a round number :(
tadzik buubot: why so low? :)
buubot tadzik: why is buu_ so angry
bbkr rakudo: $_="aaaa"; s:1th/a/X/; .say # IMO this should be syntax error
p6eval rakudo b64718: OUTPUT«Xaaa␤»
jnthn masak: Well, next time I'm in Japan... :-)
sorear pushed...
CIA-21 03Stefan O'Rear++ 07master * reba4446 10/ (7 files):
Start decoupling sub metadata from protopads
Soon the protopad will be just like any other pad, and elidable in many cases.
+10K SAFE.dll due to duplicated functionality. - bit.ly/aIPFnx
sorear hmm. 10:03
well, the ++ custom format worked!
moritz_ bbkr: why should it?
masak buubot: karma Rear
buubot masak: Rear has karma of 1
moritz_ bbkr: or asked differently, what do you gain from forcing the user to the proper inflection form? 10:04
dalek ecza: eba4446 | sorear++ | :
<pre>m CgOp.pm

m Cursor.cs m Decl.pm m Kernel.cs m SAFE.setting m Unit.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Start decoupling sub metadata from protopads
Soon the protopad will be just like any other pad, and elidable in many cases.
  +10K SAFE.dll due to duplicated functionality.</pre>
jnthn People shouldn't have to be fluent english speakers 1nd.
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/
p6eval std 32023: OUTPUT«ok 00:01 113m␤»
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:07
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
so you could also write :5pos instead of :pos(5)
bbkr moritz++ # for nice rx modifiers 10:09
moritz_ rakudo: 'abc' ~~ m:2pos/./; say $/
p6eval rakudo b64718: OUTPUT«c␤»
moritz_ :-)
bbkr std: $_="aaaa"; s:th(1)/a/X/; .say # just checking 10:10
p6eval std 32023: OUTPUT«ok 00:01 117m␤»
bbkr \\o/
moritz_ I copied that part of the implementation from STD.pm
masak sushi & 10:15
CIA-21 03Stefan O'Rear++ 07master * r8e00559 10/ (8 files in 2 dirs): 10:27
Add direct support for sub types
-10K testsuite; reward will be greater when more types than Sub and Regex exist. - bit.ly/bwiwFf
sorear ok, that didn't work
dalek ecza: 8e00559 | sorear++ | :
<pre>m Body.pm

m CodeGen.pm m Decl.pm m Kernel.cs m Niecza/Actions.pm m Op.pm m RxOp.pm
  </pre>
   <pre style='white-space:pre-wrap;width:81ex'>Add direct support for sub types
  -10K testsuite; reward will be greater when more types than Sub and Regex exist.</pre>
10:28
10:30 M_o_C joined
sorear unfortunately github's built in CIA integration has no configuration options at all 10:32
10:33 Gruber joined 10:36 wamba joined 10:37 dalek joined 10:41 CIA-21 left
sorear (I give up) 10:43
maybe I'll find some CIA staffer and ask them
10:47 Infinoid joined
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:48
sorear done 10:51
11:00 Italian_Plumber joined
sorear Infinoid: it's been ten minutes since I pushed, is something broken 11:01
Infinoid I don't know. Exactly where did you push? 11:06
I don't see your push on github.com/rakudo/rakudo/commits/master
sorear no, I'm not a rakudo committer
however niecza should also be in dalek's db
github, sorear, niecza 11:07
Infinoid Ok. I see that feed in dalek's log, but I don't know what the feed polling interval is 11:08
sorear dalek has per-feed polling intervals? for someone who theoretically maintains it ... 11:09
Infinoid I theoretically maintain it
dalek generates dynamic polling intervals, so it doesn't hammer the server with a large number of polls at exactly the same moment
...and so it doesn't time out of IRC while doing so
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
Sure, there's no protection from large numbers of updates on a single feed
sorear oh, you meant because of time spent in the poll routine
nine moritz_: oh, I think, I patched test_summary.pl to produce correct JSON 11:11
Infinoid yeah, time waiting for http and such
If github connections are timing out, we don't want to wait serially for 30 timeout periods all at once
sorear and no multithreading. 11:12
:)
Infinoid Yeah. I didn't write the bot, and I didn't install it, I just wrote some plugins for it :) 11:13
Should probably rewrite them in rakudo at some point.
sorear Who *did* write the bot 11:14
11:14 meppl joined
Infinoid sorear: It's botnix. 11:22
11:25 daxim joined
sorear Botnix is a person? I thought it was the name of the bot *embarrassed* 11:25
Infinoid nah, it's the name of the software 11:26
Infinoid has no idea who the authors are
11:28 dalek joined
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
pugssvn does this
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
Infinoid Give me a perl6 IRC module that does that, and I will port the plugins to that bot. Deal? :)
sorear I came here to write an IRC module 11:30
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 :-)
sorear Infinoid: some exist, but they suck 11:33
dalek kudo: 85602a2 | moritz++ | /:
remove some trailing whitespaces (dummy commit to test an IRC bot)
11:39
ecza: 465c16d | sorear++ | /:
Implement hints as a storage category

  $?FILE no longer lives in the runtime lexpad. (User-defined hints still do for
now, since they're my variables in disguise... will fix.) -73K testsuite
11:40
11:40 envi^home joined 11:41 pragma_ joined
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 :)
Infinoid <-- gone 11:42
11:42 Infinoid left
sorear protopads in niecza are now exactly like any other pad 11:43
this feels like a so much better state
11:44 azert0x joined
pugssvn r32024 | nine++ | Changed spec test perf graph to show percentages instead of a multiplier 11:45
r32024 | and tweaked output.
nine moritz_: as soon as I can find what I did. git doesn't show me a commit or diff...
dalek ecza: 992bd0e | sorear++ | /:
Finally kill off share_lex

Metasubs no longer need to hold a runtime reference to the protopad, any more than any other pad. -16K testsuite
11:46
nine moritz_: btw. what do you think of the new graph? niner.name/rakudo/benchmarks.png 11:48
tadzik oh, so looks like it's faster than it was?
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:49
sorear nine: chromatic likes to use callgrind for stuff like that 11:51
what are you benchmarking?
moritz_ nine: i like it. There are good explanations for it too (some optimizations on integer operations)
nine: re diff, try git diff origin/master..HEAD 11:52
nine: and git diff --cached
one of them should show you a diff
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:56
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:57
moritz_ nine: hm. I feared it's more than a single comma, since JSON doesn't like trailing commas 11:59
takadonet morning all 12:00
12:02 awwaiid joined
sorear the compiled testsuite has just crossed 1MB 12:04
negatively \\o/
from a high of 1.6MB
dalek ecza: 605bd5c | sorear++ | /:
Don't generate full protopads unless needed

In subs with no unclonable phasers or methods, it's not necessary to have a protopad. This is the first step and elides most variables from such unneeded pads. -60K testsuite
masak takadonet: \\o 12:05
arnsholt Is there an easy way to do the equivalent of $callback = sub { ... } in NQP-rx? 12:09
$cb := sub() { ... } doesn't seem to do it
takadonet anyone else noticed that the build time is a lot faster now? 12:10
sorear $cb := sub () { ... }
sub() isn't even legal Perl 6 12:11
(Unifying Rule: \\w+\\( in term position is *always* a sub call)
arnsholt Ah, not a bad idea probably 12:12
Also explains why my braino if(...) fails weirdly
sorear calls it a night
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
this is so addictive
(case in point: it's 5am localtime)
masak good thing you decided to call it a night now, while that's still an option :P 12:14
dalek ecza: 91d5840 | sorear++ | /:
Elide the protopad entirely when possible

  -24K testsuite.
12:17
12:19 lithos joined
masak sorear: so... a 'protopad' is the same as a static lexpad? 12:24
12:27 rgrau joined
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␤»
masak rakudo: class A { method foo(--> NoSuchType) { say "OH HAI" } }
p6eval rakudo b64718: OUTPUT«===SORRY!===␤Malformed method at line 22, near "foo(--> No"␤»
masak both these error messages could be improved to indicate the actual problem. 12:33
masak submits rakudobug
moritz_ agreed
masak std: sub foo(--> NoSuchType) { say "OH HAI" }
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␤»
masak std: class A { method foo(--> NoSuchType) { say "OH HAI" } }
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␤»
masak 'No type found' isn't spot on either, but it's much better.
12:38 bpalmer joined 12:44 tadzik joined 12:49 lichtkind joined
lichtkind join #froscon 12:49
ups
moritz_ hands lichtkind a / 12:50
lichtkind \\me grabs it :) 12:51
moritz_: thanks :)
12:52 bpalmer left
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:05
lichtkind masak: right except this time it was a joke 13:06
masak the principle still stands. :)
13:08 orafu joined
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
..:rw($rw)…
masak std: class A is NoSuchType {}
p6eval std 32024: OUTPUT«ok 00:01 111m␤»
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
bbkr rakudo: class A is Mu is Mu {} 13:13
p6eval rakudo 85602a: ( no output )
moritz_ multiple inheritance ftw! 13:14
masak rakudo: class A { method foo { say "OH HAI" } }; class B is A is A {}; B.new.*foo
p6eval rakudo 85602a: OUTPUT«OH HAI␤»
masak rakudo++
jnthn++
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
p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Could not build C3 linearization: ambiguous hierarchy␤»
masak submits rakudobug
it's a good day when I find something amiss in the OO system. :) 13:16
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␤»
masak rakudo: class A { method foo { say "OH HAI" } }; class B is A {}; class C is A is B {}; say "alive"; C.new.*foo
p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Could not build C3 linearization: ambiguous hierarchy␤»
masak interesting.
oh jnthn! :P 13:19
13:28 Guest19527 joined, am0c joined, tadzik joined, Holy_Cow joined 13:31 mantovani joined
masak rakudo: class A is A {] 13:34
rakudo: class A is A {}
p6eval rakudo 85602a: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
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
..:rw($rw)…
masak std: class A is A {}
p6eval std 32024: OUTPUT«ok 00:01 111m␤»
13:36 rgrau_ joined 13:42 drbean joined
masak rakudo: my $1 = "foo"; say $1 13:47
p6eval rakudo 85602a: OUTPUT«foo␤»
masak rakudo: my $1 = "foo"; say $/.perl
p6eval rakudo 85602a: OUTPUT«[Any, "foo"]␤»
masak I'm not sure if I consider this a bug or a feature :)
belay that, it's way cool :) 13:48
PerlJam looks like a feature to me :)
masak and really, really consistent.
tadzik what's Any in here? 13:50
moritz_ just Anything
13:51 javs joined 13:54 plobsing joined
masak tadzik: a value formerly known as 'undef'. 13:56
rakudo: $1 = "foo"; say $/.perl 13:57
p6eval rakudo 85602a: OUTPUT«[Any, "foo"]␤»
masak don't even need to declare the variable, in fact.
14:00 Guest23195 joined
masak Guest23195: velkommen. vær vores gæst, Guest23195. 14:01
:)
mathw That sounds like a challenge... 14:03
PerlJam It didn't sound like a challenge when I tried pronouncing it in my head. 14:09
Particularly that "velkommen" part :) 14:10
14:10 avuserow joined
masak preliminary results about the segfault: perl6 -e 'use App::Pls; use JSON::Tiny' causes it. 14:12
clearing either file out completely uncauses it. 14:13
in a way, that's bad news. but it's also a bit interesting.
I'll see if I can minimize either file.
14:16 azawawi joined
azawawi hi 14:17
masak hi
azawawi sorear: ping
14:19 avuserow joined
masak azawawi: I think he crashed after optimizing niecza all night. 14:19
azawawi masak: i see... thx 14:21
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.
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: timothyfitz.wordpress.com/2009/02/1...mes-a-day/ 14:24
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
failures would be reported back by a bot.
colomon ick
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.
colomon or do you mean as an extra smoker?
masak colomon: yes, something like that. a fast one. 14:26
colomon ick retracted, then.
masak we don't really have any website to deploy to, unless you count Try Rakudo.
colomon I was confusedly thinking that you wanted that to replace developer's local spectests.
masak but that doesn't feel so business-critical for some reason :)
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
fortunately it's on my list of things to do
masak colomon: could probably be extended to the app cheese as well.
colomon +1
pmichaud good morning, #perl6 14:32
tadzik hello pmichaud
takadonet pmichaud: morning
colomon o/
masak mor-NING! 14:33
pmichaud mathw: have a name picked out for the rakudo release? 14:34
mathw not a clue 14:35
I thought there was a list?
pmichaud the list is currently empty, I think.
mathw hmm 14:36
pmichaud We can always go with Pisa
mathw that's what I was just thinking
it's appropriate
I need to read the release procedure
pmichaud I'll tentatively add Pisa for now... but it's open for change
mathw It seems like an appropriate one to me 14:37
moritz_ +1 to Pisa
pmichaud oh, is there a "Pisa.pm"? ;-) 14:38
pmichaud checks
mathw heh there is that
PerlJam notices that coming up with the release name still seems to be the most onerous part of the process :)
mathw but maybe we should also allow YAPC venues
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
for example, next year is in Riga, but the group would be Moscow.pm (IIUC)
mathw true
point taken
I just thought of a problem 14:40
I have neither commit access to Rakudo or a CLA
PerlJam mathw: sounds like you need minions that do. 14:41
mathw I remember now
pmichaud mathw: I can give you commit access for the release
mathw I intended to sort this all out before the release
but then I forgot
and then I forgot I was doing the release this month 14:42
14:43 jedai joined
masak moritz_, pmichaud, jnthn: here's my smallest possible case of segfault with the enums patch applied to Rakudo: gist.github.com/530197 14:43
pmichaud hmm. looks like YAPC::EU was sponsored by perl.it 14:44
mathw "Italy"
or, "Rakudo #32: Just Give Me A Pizza, Okay?"
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:46
masak I'd say it is. 14:47
mathw I'll probably draft the release announcement tonight 14:50
then you can all assess its Suckiness Index 14:51
first I have to go and play some miserable English consort music
which is one of my favourite ways of spending the first part of an evening :)
masak spends far too much time on online MP3 stores shopping for 'miserable ENglish consort music' 14:52
s/N/n/
mathw excellent taste 14:53
mathw hopes to do five-part Jenkins today 14:54
I think all of us will be there
until afterwards
I bid you farewell
masak bows elaborately
dalek kudo: e3f9c5e | pmichaud++ | /:
Bump PARROT_REVISION.
15:00
kudo: ae18b90 | pmichaud++ | /:
Merge branch 'master' of github.com:rakudo/rakudo
kudo: e26cb01 | pmichaud++ | /:
Add draft of 2010.08 release announcement.
kudo: 5a33278 | pmichaud++ | /:
Update 2010.08 release information in release_guide.pod .
15:00 lichtkind_ joined 15:05 drdanger joined
dalek kudo: e0850ed | moritz++ | /:
[release] fix copy&pasto, add a new feature to feature list
15:05
15:06 Holy_Cow joined 15:21 macroron joined 15:46 Holy_Cow joined 15:50 wamba joined, wooden joined
pugssvn r32025 | lwall++ | [STD] spot-on-ify the no type message 15:56
r32025 | some preliminary work to fixing exports
15:57 justatheory joined 16:00 platypus_ joined
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?
platypus_ Say i wrote: my %a; my $b = \\%a;
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
perl 6
moritz_ in Perl 6, you'd just write
my $b = %a
and then
if $b ~~ Hash { ... }
16:03 zostay joined
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" }
p6eval rakudo 85602a: OUTPUT«yes, a hash␤» 16:04
moritz_ seems to work :-)
16:05 plainhao joined 16:07 pyrimidine joined 16:09 Chillance joined
jnthn back from @stuff 16:15
moritz_ wb
jnthn masak: Hmm. Wonder if the C3 impl has issues. :S 16:16
16:16 hercynium joined
jnthn masak: Wouldn't be entirely surprising. I'll check. It may not be wrong. 16:16
You can't always build a C3 linearization.
16:20 risou joined, patrickas joined
patrickas good evening #perl6 16:20
diakopter 'morn 16:21
16:24 azert0x joined
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␤»
colomon patrickas: your patch still isn't in there. I completely forgot about it. :( 16:25
patrickas colomon: it's ok no hurry :-)
I also tried to refactor the whole series like you told me but did not get very far
colomon would be nice to have it in by tomorrow. 16:26
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:28
do you have some time to take a look / discuss it a bit ? 16:29
colomon I guess I could spare a few minutes.
(from $work, I mean)
gfldex std: sub f($a,$b){say $a, $b}; my $g = -> |@a {f(@a)}; $g.(1,2);
p6eval std 32025: OUTPUT«ok 00:02 119m␤»
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␤»
gfldex is std right in that case?
colomon gfldex: I think it's your code that's weird 16:31
gfldex very well possible :)
colomon gfldex: in a way std doesn't see.
I don't know if -> |@a makes sense or not -- but f(@a) shouldn't work if we have f($a, $b) 16:32
moritz_ f(|@a) should work if you have f($a, $b) 16:33
TiMBuS my $g = -> *@a {f(|@a)};
gfldex rakudo: sub f($a,$b){say $a, $b}; my $g = -> *@a {f(|@a)}; $g.(1,2);
p6eval rakudo 85602a: OUTPUT«12␤»
gfldex there we go :)
ingy morning 16:39
patrickas hello ingy
16:46 ruoso joined
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
isBEKaml hi, folks! 16:48
colomon rakudo: say 'g', 'z' ... 'a' 16:50
p6eval rakudo 85602a: OUTPUT«(timeout)»
isBEKaml rakudo: say 'n' ... 'm' #ROT 13? 16:56
p6eval rakudo e0850e: OUTPUT«nm␤»
isBEKaml rakudo: say 'n' ... 'za'... 'm' #ROT 13?
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␤»
isBEKaml :)
rakudo: say 'n' ... 'z', 'a' ... 'm' #ROT 13?
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␤»
isBEKaml rakudo: say 'n' .. 'z', 'a' .. 'm' # this works locally, I thought ... was just desugared to .. ? 16:58
p6eval rakudo e0850e: OUTPUT«nopqrstuvwxyzabcdefghijklm␤» 16:59
isBEKaml hm, time to look up the difference in the spec..
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␤»
isBEKaml rakudo: say 'n' .. 'za' .. 'm' # is this right? takes forever on my poor machine. :|
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␤»
colomon isBEKaml: ... is not desugared to .., it's completely different code 17:03
and the problem you're seeing is that 'n' ... 'z', 'a' ... 'm' is a three-part series, which isn't supported yet 17:04
whereas n' .. 'z', 'a' .. 'm' is just two ranges separated by a comma
rakudo: say ('n' ... 'z'), ('a' ... 'm') 17:05
p6eval rakudo e0850e: OUTPUT«nopqrstuvwxyzabcdefghijklm␤»
moritz_ is that what you need for rot13?
isBEKaml I see. I was looking for more unix-y like tr "a-z" "n-za-m" :)
17:06 Italian_Plumber joined
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
colomon isBEKaml: errr, very no 17:07
did you mean 'n' ... 'za' ... 'm' 17:08
?
isBEKaml colomon: err, I really have to read about the difference between '..' and '...' to answer that one. :S
17:09 proller_ joined
colomon isBEKaml: 'n' .. 'za' .. 'm' is just a syntax error of some sort. Ranges always have two endpoints. 17:09
'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
rakudo: say 'n' ... 'za'
p6eval rakudo e0850e:
..OUTPUT«nopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdf…
colomon and then
rakudo: say 'za' ... 'm'
p6eval rakudo e0850e:
..OUTPUT«zayzyyyxywyvyuytysyryqypyoynymylykyjyiyhygyfyeydycybyaxzxyxxxwxvxuxtxsxrxqxpxoxnxmxlxkxjxixhxgxfxexdxcxbxawzwywxwwwvwuwtwswrwqwpwownwmwlwkwjwiwhwgwfwewdwcwbwavzvyvxvwvvvuvtvsvrvqvpvovnvmvlvkvjvivhvgvfvevdvcvbvauzuyuxuwuvuuutusuruqupuounumulukujuiuhugufueuducubuatztytxtwtvtutttstrtq…
colomon so definitely not what you want 17:11
17:11 imarcusthis joined
isBEKaml oh, I didn't expect this. Not definitely what I want. colomon++ 17:11
so, how would I do a "tr" like ROT13 in p6? 17:12
colomon looks for moritz_ ...
isBEKaml wait, moritz_ showed that already? 17:13
colomon no, I think he understand tr better than I do
moritz_ hm 17:14
rakudo: say 'hello'.trans('a..z' => 'n..za..m')
p6eval rakudo e0850e: OUTPUT«uryyb␤»
isBEKaml I could just think of doing it with a .subst, but got into a little confusion with .. and ... as you saw above. :)
moritz_ just use tr :-) 17:15
erm, trans
isBEKaml moritz_++
colomon rakudo: say "uryyb".trans('a..z' => 'n..za..m')
[1:14pm] p6eval: rakudo e0850e: OUTPUT«uryyb␤»
p6eval rakudo e0850e: OUTPUT«hello␤»
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
PerlJam moritz_: so ... are you saying you're going to implmement tr/// now? :-) 17:17
moritz_ PerlJam: you've missed a predicate there
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? :-)
or [[[[ + ]]]] thingies? 17:19
moritz_ isBEKaml: that's not a quote
jnthn moritz_: Ain't s/// hint-y?
moritz_ jnthn: nope; parsing a regex doesn't swallow the delimiters; parsing a quote does 17:20
isBEKaml oh..
jnthn moritz_: oh...yes, tricky-ish. 17:21
17:24 Eevee joined, avuserow joined
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:26
moritz_ isBEKaml: trans also understands two strings 17:27
and builds the pair list internally
isBEKaml rakudo: "hello".trans('e' => 'p', 'l' => 'b')
p6eval rakudo e0850e: ( no output )
isBEKaml rakudo: say "hello".trans('e' => 'p', 'l' => 'b')
p6eval rakudo e0850e: OUTPUT«hpbbo␤»
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␤»
isBEKaml It seems to expect a list of pairs.
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
moritz_ rakudo: say "hello".trans("bello" => "gemmo") 17:31
p6eval rakudo e0850e: OUTPUT«hemmo␤»
moritz_ ok, we have to construct *one* pair
isBEKaml yes, atleast one pair. 17:32
pragma_ Huh, so the . operator is no longer concatenation? 17:35
moritz_ no, . is method call
~ is concatenation
isBEKaml pragma_: the ~ is what we use for concatenation.
moritz_++ was faster. :)
parrot release today? 17:37
17:37 pyrimidine joined
moritz_ huh, I just managed to lose two commits. 17:37
masak nom &
jnthn So...masak eats commits? 17:39
moritz_ actually the misguided use of git am --abort ate it 17:41
isBEKaml moritz_ would actually participate in Porror events. :P 17:42
spoil the pun with horror or mix the two! ;)
isBEKaml should shut up and go read something... 17:44
17:45 avuserow joined 17:48 Su-Shee left 17:51 jferrero joined 17:55 pyrimidine joined
isBEKaml when is the rakudo release this month? Sometime this week? 17:57
jnthn Thursday for R* 17:58
crap
Thursday for Compiler
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.
isBEKaml I was thinking of packaging R* for slackware, but isn't very viable and goes against slackware installation mechanisms. 18:00
So, I'm packaging rakudo and parrot separately. Parrot was approved and is now available on slackbuilds.org.
any chance that we can have a separate docs/libraries package apart from R* ? 18:01
18:02 mberends joined
jnthn mberends! \\o/ 18:04
mberends wow, jnthn++ has been 6modeling a lot!
PerlJam isBEKaml: since that's part of the point of R*, I don't see how.
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.
mberends: Added in .Str to NQPNum and NQPInt so we can actually, like, say/print them now. :-)
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
(Just the building rather than the code.)
mberends jnthn: aww
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. :-)
PerlJam er, s/rakudo/rakudo-star/
mberends jnthn: but srsly, it looks great :)
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.
PerlJam: libs --> modules. 18:09
mberends jnthn: very nice
jnthn mberends: Yeah, it'll be nice to be turing complete. ;-) 18:10
I mean, after that, what more's needed. ;-)
mberends er.
dalek kudo: 037f685 | tadzik++ | /:
Optimize Range.pick for integers and non-replacing pick

Includes an off-by-one fix from moritz_
Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
jnthn mberends: :P
mberends: I'm in denial that at some point PAST::Regex nodes will also need compiling. :P
mberends jnthn: keep your head in the sand for a while, it's okay ;) 18:11
jnthn There's plenty to do before then. Like...make ClassHOW work. :-) 18:12
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? :)
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. :-)
bbiab
18:18 colomon joined
mberends \\o colomon 18:19
colomon o/
18:22 lerut joined
moritz_ hm 18:23
it's Tuesday, right?
colomon oh 18:24
moritz_ so, is there a #phasers today?
colomon !
lerut ye
moritz_ in 35min, right? 18:25
moritz_ can never remember the time
colomon thinks moritz_ is right 18:28
18:28 azert0x joined
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
18:29 tadzik joined
moritz_ right 18:29
tadzik moritz_++ # spotting stupid bug in my patch
moritz_ see also perlgeek.de/blog-en/perl-6/notes-fr...athon.html and www.perlmonks.org/?node_id=855407 for some discussions
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
tadzik moritz_: how is random number generation tested?
moritz_ isBEKaml: I guess once the first two are done, the third will be easy :-)
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
my @rolls = ({ (1..2).pick } ... 2).munch(100);
tadzik oh
moritz_ ok +@rolls > 0, 'the series had at least one element...';
ok +@rolls < 100, '... and the series terminated';
that second test failed, because with the offby1 error, it woul produce 1, 1, 1, 1 ... 18:32
tadzik huh
spectests++
moritz_ colomon++ # writing those tests
tadzik oh, btw, my second patch is alredy deprecated (pmichaud++ did the same during his range optimizations) 18:33
you may want to remove it
oh, alredy done 18:36
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:40
tadzik :D 18:41
isBEKaml esp the last comment by chromatic++
18:41 pragma_ left
allbery_b wonders if Oracle handed the future to the CLR with that self-kneecapping 18:44
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?
isBEKaml </offtopic>
jnthn isBEKaml: The JVM is just like a crappy version of the CLR. 18:50
isBEKaml: So not _that_ different.
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
18:51 Lorn joined
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:52
I don't know about the CLR (never programmed in it) 18:53
18:53 azert0x joined 18:54 azert0x joined
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:54
18:55 ash_ joined
isBEKaml I don't know how far they are into it, project-lambda iirc was heavily into it. 18:55
18:55 hercynium joined 18:58 javs joined
isBEKaml alright guys, later tomorrow. 19:01
isBEKaml goes to zzz....
jnthn pmichaud: #phasers if you're about :-) 19:04
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."
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
..<filename u…
19:06 cono joined
jnthn sorear: Heh. They're either both wrong or both right. :-) 19:13
19:15 tylercurtis joined 19:29 dual joined
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␤»
patrickas is that ^^ a known bug ?? Is it a bug at all ? 19:30
TimToady not a bug, really 19:31
put the my inside the while loop
you've just taken five refs to the same var 19:32
though, perhaps a bug, nonetheless
since take is supposed to de-containerize like return
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.
phenny sorear: I'll pass that on when masak is around.
patrickas TimToady thx, I already worked around it in the code ... but I was wondering if I should rakudobug it or not? 19:33
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
phenny sorear: I'll pass that on when azawawi is around.
moritz_ speaking of make, 'make snap' would be nice to have back, because p6eval uses it
TimToady I already fixed snap 19:35
testing a fix for dist 19:36
moritz_ std: 1
p6eval std 32025: OUTPUT«ok 00:01 112m␤»
moritz_ has kept up, so the fixed worked
TimToady++
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
moritz_ I'll switch them binding instead 19:37
sorear good * #perl6
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\t: Miraculously the tests now pass, so I'm closing this ticket. Feel free to open again if it resurfaces again.
:-) 19:39
19:45 nimiezko joined
mathw hello 19:47
19:47 cj_ joined
TimToady howdy doo 19:48
moritz_ parrot release is being furiously worked on, it seems 19:49
mathw good-oh
jnthn o/ mathw 19:50
mathw o/ jnthn
I'll be needing that Parrot release :) 19:51
TimToady what are they furious about this time? :)
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:58
Tene jnthn: I'm interested in seeing your comments and response. 19:59
dalek ok: 1ec2cc5 | ++ | /:
fixed a non-working example: $number vs $count

Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
20:00
sorear jnthn: Rakudo and niecza's behavior is absolutely right
jnthn: link?
jnthn sorear: I wondered if that might be the case.
sorear: to...the ticket for the C3 thing?
sorear "chromatic's comments on PerlMonks" 20:01
jnthn oh
www.perlmonks.org/?node_id=855567
sorear class C is Grandparent is Parent means that C wants the grandparent's methods to take precedence
jnthn sorear: Yes, I looked at that and thought "er...wait" :-)
sorear which is inconsistant with the ordering created by class Parent is Grandparent
jnthn I'm relieved that you get the same result. 20:02
Aye. That ticket can be rejected.
sorear I had to add more debug code to get said result though.
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.
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.
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.
mathw I thought it interesting that he thinks the runtime has to provide all that
20:06 fda314925 joined
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
jnthn Maybe I should wait to reply until I have the code to back up my response though. :-)
dalek ecza: e4ff073 | sorear++ | /:
Add NIECZA_C3_TRACE debug mode
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
mathw jnthn: one also wonders if it's worth arguing with him 20:07
when you could be doing awesome stuff with the metamodel
jnthn mathw: Right, I maybe should just write that as my reply. ;-)
sorear: lol :-)
mathw I get the impression that chromatic is very difficult to argue with due to a high stubbornness quotient
PerlJam jnthn: perhaps the Parrot he's thinking of is the hypothetical future Parrot that does all of that stuff? 20:08
oh ... sorear already said it
jnthn PerlJam: Perhaps so.
PerlJam mathw: arguments are easy. resolution is hard :) 20:10
mathw yes 20:11
20:13 smash_ joined
smash_ hello everyone 20:13
tadzik hi smash_
mathw o/ smash_ 20:14
20:20 tylercurtis joined 20:22 thebird joined 20:27 icarroll joined
icarroll perl6: say +(1,2,3,4,5); 20:28
p6eval pugs, rakudo 037f68: OUTPUT«5␤»
icarroll rakudo: say [+] (1,2,3,4,5);
p6eval rakudo 037f68: OUTPUT«15␤»
tadzik rakudo: say +('any', 'elements', 'but', 6, 'of', 'them') 20:29
icarroll rakudo: say (1,2,3,4,5);
p6eval rakudo 037f68: OUTPUT«12345␤»
rakudo 037f68: OUTPUT«6␤»
icarroll rakudo: say ~(1,2,3,4,5); 20:30
p6eval rakudo 037f68: OUTPUT«1 2 3 4 5␤»
20:50 ilogger2 joined 20:53 Cyrus joined 20:54 Guest23195 left
sorear rakudo: my @x; say @x[*-1] 21:01
p6eval rakudo 037f68: ( no output )
sorear rakudo: my @x; sub foo($k) { say $k }; foo @x[*-1]
p6eval rakudo 037f68: ( no output )
sorear in Perl 5, the latter version dies, while the former DTRTs 21:02
:/
21:15 whiteknight joined
mj41 Parrot vs. JVM by allison video.google.de/videoplay?docid=290...749292774# 21:15
21:17 fod joined
sorear whiteknight: I see I wasn't *entirely* crazy when I went all Chicken Little on continuation/inferior runloop interactions those months ago... 21:18
21:19 tylercurtis joined
whiteknight sorear: it's always been a problem, and likely will be for a long time coming 21:20
this certainly isn't my first run-in with it
tadzik mj41: are the slides somewhere around? 21:23
mj41 tadzik: wiki.jvmlangsummit.com/pdf/38_Randal_parrot.pdf 21:24
tadzik: also try to search perl6.cz/wiki/Perl_6_and_Parrot_lin...ot.2C_Pugs 21:25
tadzik mj41: thanks 21:26
21:29 drbean joined
pmichaud good afternoon, #perl6 21:30
diakopter wth is his obsession with [multiple] trampolines?
I know that mono uses at least two 21:31
pmichaud sorry I missed #phasers -- was busy with $otherstuff
sorear Hello pmichaud
diakopter: who? 21:32
diakopter "chromatic's comments on PerlMonks" you asked for
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."
jnthn pmichaud: No worries. :-)
pmichaud I guess I should comment on the perlmonks thread. 21:36
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:37
21:39 chromatic joined, masak joined
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.
jnthn yayitsmasak! 21:40
masak I missed tonight's #phasers. ごめん。
chromatic Okay, anyone who wants to psychoanalyze me can do it while I'm here.
pmichaud masak: I missed it also. :-)
masak I will make up for it in a completely non-satisfactory way by reading its logs.
jnthn masak: Not loads happened. You did miss your chance to say "omg finished my gsoc proj!" :-)
masak pmichaud: yes, but your missing it was probably honourable, whereas mine was not.
jnthn: perhaps I get to say that in all other possible circumstances instead. :P 21:41
21:41 PZt joined
jnthn masak: Do we want to know what dishonorable thing you were up to? :-) 21:41
masak jnthn: I was indulging in an impromptu dinner. 21:42
I... got a bit carried away...
jnthn Inpromptu dinner causes inpromptness.
;-)
diakopter chromatic: it seems I could do it while you weren't here, too 21:44
masak chromatic: you should be here more often. 21:45
chromatic My preference is while I'm here.
[particle] how does that make you feel? 21:46
masak [particle]++ # the only one who gets it 21:47
TimToady I prefer to psychoanalyze parrots. 21:49
[particle] tell me more about parrots.
chromatic As long as those psychoanalyzed parrots get bugs filed on them, great!
masak chromatic: according to @chromatic_x on Twitter, you're a grump today. 21:50
chromatic Well sure, but I'm happy to explain what I mean by "writing trampolines for the rest of your life". 21:51
sorear What definition of trampoline are you using? 21:54
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:55
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:56
but of course I'm not *complaining* about that lack of resources. ;) 21:57
chromatic You pick your poison though.
Build on an existing platform which provides a GC and a JIT, and you have to build the rest of your Parrot workalike.
You may or may not be able to tell that GC and that JIT how Perl 6 works. 21:58
You may or may not be able to ask for platform changes to smooth out any impedence mismatches between it and Parrot.
diakopter yeah. that's the poison.
pmichaud rakudo and nqp's perspective is that we're hedging our bets on both solutions, fwiw. 21:59
s/solutions/paths/
sorear I fail to see the distinction here
PaFo has ... exactly how much ... chance of getting a change approved to ISO C or the Pentium ISA?
chromatic As much as anyone. 22:00
masak sorear: why would it need that?
chromatic PaFo also has the same chance of getting a change approved to the Mars mission.
TimToady you're planning to host parrot using the Mars mission? Cool!!! 22:01
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
masak sorear: ah.
chromatic I'm not arguing *against* anything.
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:05
and that's ignoring the strong possibility of distributing a custom mono 22:06
chromatic Are you able to have precise GC?
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.
(not that I need to, but I have trouble seeing a coherent thread)
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?
diakopter pmichaud: I think it was about www.perlmonks.org/?node_id=855567
pmichaud diakopter: sure, I saw that thread.
diakopter that's what I think it was about 22:08
chromatic masak, are you asking about timely destruction?
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."
and I disagree.
sorear People have an expectation that { my $x = open "foo" } should close foo immediately
I think this is a P5ism and should die
diakopter pmichaud: I meant that url exactly.
that post.
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.
chromatic I still don't understand that question then, masak.
sorear closing files should be done with an explicit framing construct, like C# and Java have now and Scheme has had since forever
jnthn chromatic: I guess it partly boils down to, "is the destroy v-table method in object overridable"?
Or more ot the point
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.
jnthn I don't think it's an especially big deal though.
chromatic I've overridden it before. As far as I know, it's still overridable.
jnthn OK
We may be able to hang it off that then.
masak actually, it's probably DESTROYALL that would be called by the GC.
s/probably // 22:11
tylercurtis jnthn: trac.parrot.org/parrot/browser/trun...t.pmc#L289
chromatic Given automatic allocation and deallocation of PMC attributes, you're not leaking anything then either.
22:11 pmichaud_ joined
diakopter chromatic: mono's is not precise, and neither is .Net's 22:11
pmichaud_ *sigh* feather connection fail
jnthn tylercurtis: hmm
pmichaud_ diakopter: I agree with chromatic's bottom point on that post (more)
"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
Rakudo and NQP are taking the approach that we're willing to explore both paths.
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."
I think the desire to support multiple backends was one of the two things that killed Pugs.
pmichaud_ chromatic: I agree, but I think Pugs had different motivations for multiple backends 22:13
chromatic Yes and no.
diakopter heh
chromatic One of those desires was -Ofun for sure, but Pugs had unusable performance.
TimToady I don't think multiple backends killed pugs *at all*
masak oh noes, hugme quit?! :(
pmichaud_ I don't think unusable performance was what killed bugs
*pugs
I think it was an unmaintainable core codebase
chromatic I stopped using Pugs when the spec tests took 8 hours to run.
I don't mind cleaning up unmaintainable code. 22:14
See also IMCC.
TimToady patches welcome
sorear I started using Rakudo when 'make' took 12 hours.
masak the decrease in bus number killed Pugs.
chromatic I seem to recall fixing that, too.
pmichaud_ chromatic: the point is, that nobody has stepped up to maintain pugs
sorear yes. chromatic++
pmichaud_ 'make' has never taken 12 hours on my system, fwiw. it's never taken more than 1.
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.
chromatic No one could maintain Pugs for at least one reason.
pmichaud_ I didn't say "no one could maintain pugs". I'm saying "no one has"
masak chromatic: "No-one has wanted to maintain Pugs."
pmichaud_ and the reason it's not maintained has little to do with multiple-backend-ness
chromatic Fair point, but I'm not sure it changes my argument.
masak or what pmichaud_ said.
chromatic diakopter, are you able to give the GC hints about object layouts for precision?
No one has maintained Pugs for at least one reason.
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
chromatic That's a huge advantage for Rakudo, yes.
pmichaud_ and I've maintained that parsing is at the core of making a successful perl 6 implementation.
chromatic Being able to write in NQP and Perl 6 is another advantage.
sorear chromatic: the CLR knows object layouts (it's a lot like the JVM in how it handles this)
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
much of the time in #perl6 back then was explaining what snippets of Haskell are really doing
masak or it was too smart from the beginning.
chromatic I recall that, as you recall.
Pugs never had a strong priority of improving its bus number. 22:18
TimToady it did, but Haskell didn't. :)
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?)
masak jnthn++ # "The hottest footwear!"
jnthn: that's your best pun in a long time!
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.
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. :-)
masak jnthn: yeah, almost all the other ones were awful :P
jnthn chromatic: The way this is looking at the moment is that we'll end up with _more_ written in NQP.
chromatic: Which means more hackable.
(And more portable.)
chromatic Unless it's a pudding layer.
jnthn And also fewer primitives that need to be made fast. 22:21
TimToady Perl 6 is pudding. Yum!
diakopter mmm butterfly pudding
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.
(jnthn please clarify if I'm mis-stating your feelings on this) 22:22
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.
pmichaud_ chromatic: agreed, and so we're looking to provide them.
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.
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
chromatic That's how I view them.
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)
TimToady that's getting better, I think
pmichaud_ sure, I agree
chromatic I like to think our current deprecation policy has improved a lot.
22:26 fod joined
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
multiple backends falls into 3
chromatic My preference is 2, 1, 3. 22:27
pmichaud_ well, that makes sense. I've had little success with 2.
TimToady 3 also feeds back into knowing how better to express what we want from 2
chromatic We'll see.
TimToady We've already seen. :) 22:28
sorear Do you have a stand on non-Rakudo implementations not using Parrot? 22:29
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
chromatic Ruby?
pmichaud_ ;-)
okay, maybe two. but the point is, I'd like for Rakudo to mean more than "Perl 6 on Parrot" 22:31
I'd like it to be robust enough to be shared on multiple platforms.
sorear FWIW Niecza is stealing bits and pieces of Rakudo all over the place
both design and actual code
diakopter Microsoft contracted ActiveState to build ActivePerl.Net, and they did for a while in 1999-2000, but it was abandoned.
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
diakopter sorry, there was one that was Perl on the CLR
perigrin but perl embedded into the CLR with a bridge
TimToady yes, just a bridge
diakopter I found the one that was a Perl implementation, not the bridge
sorear Is "Perl on the CLR" allowed to use unsafe blocks 22:33
diakopter I say yes.
TimToady as long as they're declared unsafe :)
sorear rewriting the p5vm without pointer arithmetic sounds like "fun"
chromatic I suppose it's two things. 22:34
sorear and by fun I mean 20+ man-years
TimToady oh wait, you weren't asking my permission...
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.
2) I want that pudding layer for Rakudo on Parrot to move as much into Parrot as possible.
masak Yapsi is also heavily inspired by Rakudo.
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.
which is a disavowed goal of Parrot. :) 22:36
jnthn The pudding layer should be lagom. :-)
masak :)
pmichaud_ and yes... Rakudo has experienced the pushback that TimToady++ mentions quite heavily.
It's much less so in recent months... but that may also be because we've stopped pushin. 22:37
*pushing.
chromatic I don't understand any of that. 22:38
TimToady you really shouldn't give us straight lines like that...
diakopter as in... so obtuse... 22:39
diakopter just startled all my cow-orkers with a guffaw 22:40
chromatic Look, I'm trying to communicate something here I find important.
pmichaud_ I recognize that. 22:41
I'm not sure what part isn't understood.
chromatic What is that pushback and what does it mean?
I think also "Why is there pushback?" but that question may depend on my previous one.
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"
or, even if we identify something really important, it takes months or years for progress to be made on it
chromatic I can think of several examples.
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.
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.
pmichaud_ i.e., it was recognized at the time it was being done that we'd ultimately end up writing our own dispatcher
jnthn (binder in this case, I think) 22:45
pmichaud_ right, binder
thanks.
jnthn (though we've needed our own dispatcher too)
22:46 awwaiid joined
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
22:46 pyrimidine left
jnthn I agree. Parrot _has_ improved and it has helped. 22:46
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. :)
but there are also some areas where the pace of change feels.... glacial.
chromatic Then we will prioritize them. 22:48
pmichaud_ we've prioritized them a bit also
thus, the #1 item I identified at yapc::na we're already working on -- object metamodel improvements
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.
It has to go both ways, though.
pmichaud_ and we fully expect that someday Parrot will completely switch over to our new model.
jnthn Do we? :-)
pmichaud_ jnthn: I do.
chromatic I do.
jnthn I don't quite have that much hubris. ;-)
Oh, OK
:-)
\\o/ 22:50
jnthn polishes it extra shinily
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.
chromatic I expect to have my own input into it with regard to what else Parrot needs, but yes.
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.
s:1st/very/for/
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.
pmichaud_ I thought it was also transcribed somewhere.
pmichaud_ looks.
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"
chromatic If we implement most of the rest of Parrot in terms of NQP perhaps. 22:55
TimToady or QP
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
(honest question, not rhetorical)
TimToady whatever the implementors choose to use 22:58
chromatic NQP seems the most likely candidate.
TimToady in the short term
chromatic Right, in the short term.
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.
so Parrot has to provide something a bit higher-level than what it has now, if NQP is excluded. 22:59
either way, I think we end up with small core, fatness in an intermediate layer
chromatic I see no technical reason to exclude NQP.
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
so then it's a question of "what are Parrot's interests...?"
chromatic I interpreted it as "Pudding written in NQP" not as "Pudding available as part of NQP".
tylercurtis Why not both?
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.
perhaps the wrong abstraction, but...
chromatic And I'm fine with that.
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:02
pmichaud_ I agree. 23:03
chromatic Parrot can provide most of the pudding. You can put chocolate chips and marshmallows in it.
TimToady that strikes me as premature optimization, usually
chromatic What does, TimToady?
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
not assume it's almost all going into core
fsdo core
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.
chromatic I'm talking of things like dispatch and binding, not necessarily the setting. 23:05
TimToady sure
pmichaud_ we're talking of dispatch and binding in NQP also
iiuc what jnthn++ is working on
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)
TimToady my preference is that they be the same :)
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?
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
TimToady Lorito's and NQP's MO
jnthn chromatic: Thus why NQP's class meta-object will be written in NQP.
pmichaud_ ...and that's exactly the avenue that jnthn++ is exploring.
jnthn chromatic: And thus I won't have to port it. :-)
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 thenceforward.net/parrot/yapc_bof_20100621.txt but it seems to be gone/missing now.
tylercurtis webcache.googleusercontent.com/sear...&gl=us 23:10
chromatic Instead of emitting NQP code for another backend, you're okay with emitting Lorito-compatible code?
pmichaud_ i'm not sure about "emitting NQP code" -- we don't do that now. afaik.
right now we have an emitter for PIR
jnthn is working on a .net emitter
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.
But the approach is the take PAST and then emit different things from that.
pmichaud_ ....and write the emitters in NQP, ultimately.
in that sense, it's similar to what PIRATE is doing.
jnthn pmichaud_: Already am. 23:12
pmichaud_ (iiuc what PIRATE is doing)
chromatic Yes, that's the intent of PIRATE
jnthn pmichaud_: github.com/jnthn/6model/blob/master...ompiler.pm
pmichaud_ if Lorito's M0 ends up handling the multiple backend aspects for us, we'd happily target it. 23:13
23:13 jhuni joined
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.
pmichaud_ that's what we're doing.
well, jnthn++ thus far.
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.
chromatic I don't see that as helpful to Lorito.
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.
chromatic In what sense?
pmichaud_ I mean as a team dynamic; certainly individuals (yourself) are there. 23:16
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.
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
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"
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:18
chromatic Then stop perpetuating that myth, sorear. 23:19
sorear It perpetuates fine in #parrot without me
I only ever talk about it here
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?"
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.
if that's a goal, then we'll need some experience to feed into the design.
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?
chromatic I believe the same M0 ops needed to implement just about anything else we support right now. 23:23
pmichaud_ that's the disconnect (more) 23:24
what "parrot supports right now" is not really what Rakudo needs.
or, it's a good first approximation, but we need to refine it a lot more
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
because that vm wasn't really what is needed for Perl 6
chromatic Let me rephrase then.
pmichaud_ okay, please do.
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.
pmichaud_ I'm not so sure about that.
diakopter (what's M0)
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
s/series/set/
pmichaud_ I still remain concerned that Parrot focuses far too much on opcodes when what we really need is methods
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.
chromatic I want to make vtables go away in favor of multimethods in Lorito.
Better?
pmichaud_ Definitely. 23:29
TimToady is not so sure...
chromatic Why is that?
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:30
23:31 Italian_Plumber joined
TimToady it just feels like interpreter-on-top-of-interpreter to me 23:31
and FP is fundamentally built on lambdas, not multimethods
pmichaud_ that's a good notion/point to remember.
chromatic Some FP has to perform pattern matching for dispatch though. 23:32
pmichaud_ anyway, I'll be called to dinner soon (more)
TimToady Yes, "some", not "all"
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
i.e., what gets the most publicity is not necessarily where the effort actually ends up
chromatic Like I said, it's none of my business how other people spend their time.
I just want to make sure that Parrot supports Rakudo as best it can.
pmichaud_ +1 to that :)
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
[particle] i think they're on the parrot wiki, but i can't recall
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?
[particle] harumph
tylercurtis webcache.googleusercontent.com/sear...&gl=us google cache of broken link pmichaud_ mentioned earlier to those notes, I think.
chromatic I don't think we have to support pointer arithmetic; we just have to support numbered slots.
pmichaud_ tylercurtis++ # yes, that looks like it 23:36
my comments from lists.parrot.org/pipermail/parrot-d...03223.html also still apply
#4 has been addressed.
chromatic #1 is in progress, as always. 23:37
pmichaud_ #1a has been worked on
I haven't seen much new from #1b lately
#2 is still a bit of an issue
chromatic I can work on #6 if you want it now. It's fairly easy.
pmichaud_ jnthn++ is working on it 23:38
chromatic Lexicals?
pmichaud_ yes
as well as attributes
and we still have some p6 spec work to be done there
TimToady hides
chromatic Primitive lexicals seems like an easy fix in Parrot. 23:39
jnthn I'm only digging into attributes for the moment.
pmichaud_ sure, but we still need tools to be able to support them
jnthn It's too early for me to say whether Parrot doing #6 will for certain help but I suspect yes.
pmichaud_ and even if you gave us primitive lexicals tomorrow, I doubt we'd do much with them until after jnthn's work lands
chromatic NQP support you mean?
pmichaud_ NQP and PCT, yes.
jnthn (In the long run, not "tomorrow", as Pm said)
Well, medium run
:-) 23:40
chromatic Let me know. I know how to make them work in Parrot.
pmichaud_ right
that's one of the reasons that item was #6 on my list -- it's worth considering but not a huge impact
#2 from the yapc::na list is more important (the general handling of lexpads and contexts in parrot)
chromatic Sure, but a week of work for lexicals is going to land sooner than a month work of lexpand handling. 23:41
jnthn chromatic: What I will say is don't spend time on native type support in the Object PMC. 23:42
chromatic: Well, re-phrased.
Don't spend time on it in the epxectation it'll help Rakudo.
pmichaud_ my feeling is that this is an area where lexpad handling will ultimately be the arbiter of how it needs to work
chromatic Right, that's part of metamodel changes.
jnthn (Think you know that, but don't want to send you down a blind alley.)
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
not sure that's the case, but that's my feeling.
23:43 mjk joined
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
chromatic Adding typed storage is fairly easy.
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.
i.e., Rakudo's typed storage is likely to be based on the object metamodel.
and not on Parrot register types.
jnthn For example, the static lexpad and dynamic lexpad probably want to look a lot more alike.
chromatic Including lexicals?
trac.parrot.org/parrot/wiki/PCCPerf...provements 23:45
I want to address how we handle contexts and signatures anyway.
That could include more specific types of Subs, like Closure.
pmichaud_ ...Closure?
chromatic Or at least a specific Sub subclass which knows it has an outer scope. 23:46
outer static scope
jnthn argh, didn't we kill that?
pmichaud_ ah.
well, that's a piece we're definitely missing.
chromatic static scopes?
pmichaud_ afaik, we don't have a way in Parrot to say "create a Sub of type OtherPMC"
TimToady seems more like you'd want a specific class that *doesn't* know about that, since the default is to have an outer
pmichaud_ and yes, what TimToady said
we have far more subs with outer scopes than subs without. 23:47
subs without outer scopes are quite rare in Perl 6, or NQP.
chromatic I have no preference which is the default, merely that we can distinguish them.
pmichaud_ right now we can distinguish by the existence of an :outer flag :-)
jnthn Isn't that just a pointer-is-not-PMCNULL check today?
TimToady it should be orthogonal to type
jnthn (e.g. the otuer thingy)
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.
pmichaud_ we don't always know the outer at compile time.
TimToady huh?
jnthn pmichaud_: We _can_ conceptually though.
pmichaud_ TimToady: artifact of Parrot's compilation model.
yes, conceptually we can.
jnthn pmichaud_: Other things keep us from doing so.
Right. :-) 23:49
pmichaud_ but imcc's linkage is a problem.
jnthn That's the disconnect there.
[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
(or any subclass of Sub)
[particle] if only bullets stopped zombie compilers
pmichaud_ I'm being called to dinner
chromatic I think that's fixable.
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
although perhaps there's an intermediate step
chromatic :subtype( 'MyCoolSub' )
pmichaud_ chromatic: would that work even if MyCoolSub is a type created during :load :init ? 23:52
i.e., not a core PMC or dynpmc?
chromatic Not sure, but it could be fixed.
pmichaud_ okay. That gets into some nasty parts of imcc, I fear.
and definitely affects freeze/thaw sorts of things, I suspect. 23:53
anyway
chromatic: your concern about multiple-backends diluting effort is noted; let us know if it looks like progress in other areas is stalling.
chromatic Will do. 23:54
pmichaud_ I don't agree that multi-backends was a primary cause for lack of effort on pugs
but I agree it is a danger
chromatic It wasn't the primary cause no.
pmichaud_ personally, I still measure success in terms of how usable rakudo is for the typical programmer
and for me, that's features and speed at this point 23:55
(and correctness)
okay, gone to dinner.
TimToady chow 23:56
sjohnson ciao 23:57
( `ー´)