»ö« | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 25 June 2010.
jnthn lue: I should probably write a post explaining that a bit more some day. :-) 00:00
lue: It's not a stupid question either, fwiw. It's a kinda esoteric area.
lue: It kinda boils down to, consider "class Foo { method bar() { } }" and "role Foo { method bar() { } }".
Those apart from the keywords look kinda similar. 00:01
00:01 Psyche^ joined
jnthn Then think along the lines of, "so what makes a class behave like I'd expect a class to, and a role to behave like I'd expect a role to?" 00:01
Those semantics have to be implemented somewhere. 00:02
In Perl 6, we have "meta-objects" which are objects that describe the behavior of other objects.
So we have a "meta-class" (called ClassHOW) that describes how classes work.
Those things are pretty much the meta-model.
Plus dealing with issues like the API for adding new types of packages. 00:03
And introspection.
And meta-circularity (which is a fancy word for, we can re-use parts of the meta-model as it exists so far to define new things).
Plus sometimes, making sure that it's introspectable "all the way down". 00:04
jnthn wonders if that explanation made any sense :-)
lue: You may also find these slides interesting: www.jnthn.net/papers/2010-nlpw-metamodels.pdf
00:05 Patterner left, Psyche^ is now known as Patterner
TimToady is testing a patch to relax where's EXPR precedence limiter from %chaining to %item_assignment (can't be looser than that or we misparse defaults in sigs) 00:05
I dunno why it was limited to tighter than %chaining 00:06
jnthn TimToady: Nice, let me know how it works out.
TimToady: I think it'd be an improvement, if it doesn't cause other issues.
TimToady well, it's only an issue if it interferes with other signature components, but == shouldn't bother = defaults 00:07
jnthn Shouldn't, no.
lue "A Little Reflection on Metamodels" (next slide) "OH HAI!" :)
jnthn lue: Oh, those slides get worse.
I can only conclude I'd found some REALLY great beer the week I wrote those. :-) 00:08
00:09 sftp joined
lue
.oO(At least there are no business-style graphs)
00:10
jnthn There actually are some graphs later :-)
There's also a bad pun and a picture of a bear about to eat golfers, iirc.
lue I would hate to eat a large Stroopwafel in Perl 6 :)
jnthn ;-) 00:12
lue
.oO(apparently you think highly of stroopwafels. .oO(There needs to be someplace I can add annontations that don't cause an IRC flood))
ah! I got to the politics pun! 00:18
00:27 meppl left
pugssvn r32080 | lwall++ | [STD] relax where expressions to only require tighter than item assignment 00:30
jnthn TimToady: Will do that in Rakudo tomorrow unless I'm beaten to it. 00:31
TimToady++
Now I can delete some parens from my slides too, for next time I give 'em. :-)
tylercurtis TimToady++ 00:32
jnthn tylercurtis: I twiddled the STable a little today (additive changes). Know you borrowed it, dunno how close you're tracking it. 00:35
tylercurtis jnthn: I haven't started on that bit in Bennu yet. I'm waiting until I better understand a few things. Also, I have to write a YAML parser before I can start on the rewrite anyway. 00:38
jnthn tylercurtis: Aha, OK. :-)
tylercurtis: Today I did a high-level project planny blog post, but I plan to make some more that explain the design somewhat. 00:39
tylercurtis: Let me know if there's any area that's particularly unclear and I can try and do a post on it.
tylercurtis jnthn: will do. I haven't read all of the prototype yet. Reading those slides you linked earlier was helpful(especially the bit about building meta-objects at compile time). 00:43
jnthn tylercurtis: Yeah, that's going to be quite a big change for Rakudo.
It's also something I can't do in the prototype really. 00:44
Well, maybe it's doable with enough effort
But it gets way easier if you can bootstrap.
(On Parrot I already have the luxury of a bootstrapped nqp-rx...) 00:45
sorear jnthn: when I started... there was much less overlap
jnthn Oh, I guess I could look at a portable serialization format...
But then I have to write a serializer from scratch and it'll just hurt. 00:46
lue jnthn: good post 00:48
jnthn lue: Thanks. :-) 00:49
lue sometimes I feel I came in too late, and the only things left to do are big and complicated features, the kind of stuff that requires you to have experience in coding new features :D
sorear lue: It would help if you tried to implement stuff that actually is specified.. 00:50
me? I thought optimization research, static metaobject analysis, vtables, representation polymorphism, gradual typing, and CLR embedding would be fun things that I could do and not immediately be rendered irrelevant by established folk like jnthn++ 00:51
lue Well, I suppose part of the problem is that I can't find some specific area to work on, so I end up finding random bits that, after looking into it, I can see why they haven't been implemented yet. 00:53
.oO(although macros is something that keeps popping into my mind)
00:55
jnthn sorear: I don't want to spoil your -Ofun. :-( All I've ever wanted to do since I joined in with Perl 6 compiler dev is make a great compiler for a really awesome language. I've been pondering refactorings to the object model to supprot some of those things for quite a while, and almost dug in before, before realizing that Rakudo wasn't quite ready for them, or that there were higher priorities from user's perspective. 00:59
I'd figured that you were focusing on the CLR and optimization in a more general sense than object model stuff, e.g. on the regex engine side of things. 01:04
lue
.oO(I just found something unicode-related in the ROADMAP!)
01:05
sorear no, it's not your fault... I think this place is just too popular 01:08
01:24 test34 joined
jnthn takes some sleep, night all 01:24
01:33 justatheory joined 01:49 test34 left 01:53 justatheory left 02:10 mmmpork_ joined 02:12 mmmpork left 02:37 colomon joined 02:40 Alias joined 02:46 takadonet1 joined
takadonet1 hey everyone 02:47
sorear hello
takadonet1 sorear: how are u? 02:48
02:49 takadonet1 left 03:03 fod left 03:17 Italian_Plumber left 03:24 sftp left 04:32 azert0x left 04:52 mmmpork_ left, mmmpork joined 04:54 shade_ left 04:56 Lorn left 04:57 Lorn joined
tylercurtis phenny: ask jnthn Shouldn't Rakudo.Runtime.Ops.logical_not_int box the result into TC.DefaultBoolBoxType? 05:12
phenny tylercurtis: I'll pass that on when jnthn is around.
05:13 drbean joined 05:28 achromic left 05:30 envi^home joined 05:50 shade_ joined 05:53 barika left 05:56 shade_ left 06:00 shade_ joined 06:06 shade_ left
risou_ どう考えてもあつい 06:09
06:09 risou_ left 06:12 [particle] left 06:13 [particle] joined 06:14 yahooooo left 06:16 yahooooo joined, xiaolongxia left 06:17 xiaolongxia joined 06:18 mmmpork left 06:19 mmmpork joined 06:21 shade_ joined 06:36 lasse_ joined 06:37 achromic joined 06:54 shade_ left 07:13 rang joined
rang hi - is anyone updating: www.perlfoundation.org/perl6/index....sentations ? 07:13
sorear doesn't look like it 07:19
07:37 tylercurtis left 07:46 Mowah joined, Guest23195 joined 07:50 mberends joined
rang sorear: cheers - I've removed the link from dev.perl.org/perl6/ 08:03
just pointing to the wiki directly now
ttfn 08:05
08:05 rang left 08:08 Eevee left 08:11 Eevee joined 08:16 zulon joined 08:21 meppl joined 08:26 ruoso left 08:33 wamba joined 08:43 ruoso joined 08:45 Su-Shee joined
Tene lue: Don't be too intimidated by macros. They're definitely doable in Rakudo. 08:48
09:03 zulon left 09:08 shade_ joined 09:09 szabgab left 09:10 dju left 09:14 szabgab joined 09:15 drbean left
moritz_ in fact sorear had a proof of concept macro implementation for rakuo 09:20
09:24 masak joined, achromic left
masak oh hai, #perl6 09:24
moritz_ oh hai
09:24 shade_ left
moritz_ 6guts.wordpress.com/2010/08/22/raku...oad-ahead/ interesting read, jnthn++ 09:25
09:26 zulon joined, achromic joined
masak ooh 09:26
moritz_ oom
masak I liked blogs.perl.org/users/tyler_curtis/2...patch.html as well. 09:27
I'm starting to think Perl 6's whatever-currying syntax is a sort of gateway drug for people to start thinking naturally about closures.
jnthn: you blog looks so much nicer than that last one you had, with the gray 90s background and the blocky 90s widgets! :/ 09:28
09:29 shade_ joined
masak "Today in Rakudo, writing type annotations may make your program slower rather than faster, even though you give more information. I want to fix that." -- jnthn++ 09:30
both for the intent, and for the quote itself.
mberends masak: good day! I've finally got a round tuit for our planned discussion, after you finish reading jnthn++'s article three times, as I have :) 09:32
masak :)
mberends: actually, I'm trying to make a very short visit here today. big exam on Tuesday. need to dive into big book with hidden clues in it.
mberends oh. ok. 09:33
masak mberends: what I can do, though, is send along the patch for you to look at.
mberends ok2.
masak and then we can talk on Wednesday :)
mberends ok3.
masak which do you prefer, email or gist? 09:34
mberends masak: gist please
masak gist.github.com/543580
mberends masak: thanks, and good luck with the exam.
09:35 Mowah left
masak let me just say a thing about the intent of this patch: it is to make IO::Socket IO inherently Buffy. :) 09:35
(instead of inherently Stringly, as it is now)
(or should I say Strly)
mberends good idea, I want to try getting WebSockets into a web server.
Buf will probably help 09:36
masak mberends: the patch applies cleanly, apart from some tests which it *exposes* as being wrong in the first place.
oha++
mberends: I mainly wanted a second opinion from a downstream consumer before I applied this.
mberends masak: I'll apply the patch and try the various webserver implementations. thanks. 09:37
masak \o/ 09:38
sorear I need a new project
masak sorear: I'd like for someone to write a real LTM gramamr engine.
preferably in Perl 6. 09:39
sorear conveniently, I already have one of those.
masak :)
sorear niecza: "fooo" ~~ / foo { say "A" } | fo* { say "B" } /
p6eval niecza 1801379: OUTPUT«B␤»
masak wow! 09:40
sorear++
seriously, someone write an FAQ page or blog post or wiki entry somewhere about how to input » on various systems: twitter.com/juanpabloaj/status/21805082345 09:42
it's not that hard...
09:43 mberends left
masak replies with the ways he knows 09:43
moritz_ compose > > on linux
masak what about Windows?
moritz_ or AltrGr x # on my machine
09:43 shade\ joined
masak right, something similar on Windows ISTR. 09:43
moritz_ (but it's some default, nothiing that i configured myself)
09:45 shade\ left 09:46 shade\ joined, shade\ left, shade\ joined
masak tylercurtis++ made HN: news.ycombinator.com/item?id=1624027 09:50
09:55 zulon left 09:56 mberends joined
masak and the HN discussion is lucid, open-minded and mostly friendly, much thanks to tylercurtis++ participating in it. impressive. 09:58
10:03 shade_ left 10:21 risou joined 10:23 azawawi joined
azawawi hi 10:23
sorear: ping
sorear I thought I handed you off to pmurias 10:32
pong
azawawi sorear: ok i'll follow up with him then... cya :) 10:33
sorear well, maybe it is my fault. 10:34
azawawi anyway, STD is not working when trying a simple STD->parse()... 10:35
masak sorear: what do you consider the performance of STD to be, compared to the fastest port of STD you can imagine?
azawawi: I got it working in the backlog. hold on, I'll find it for you.
azawawi: there's a trick to it.
azawawi masak: ok
sorear azawawi: you need to install a setting 10:36
masak right.
10:36 Italian_Plumber joined
sorear try STD->parse("2", setting => "NULL") 10:36
masak irclog.perlgeek.de is slow today... :/ 10:37
sorear there's a LTA error message for "setting not found"
azawawi sorear: i know ... i was wondering why it is not part of the STD package...
sorear (ironically, it was added to be user friendly)
masak sorear: that's not very uncommon for ironically LTA error messages...
s/ironically // 10:38
sorear azawawi: the 'CORE.setting' in src/perl6 is the viv setting, and it doesn't make a whole lot of sense for general use
Syntax::Highlight::Perl6 could probably get away with it, but niecza and mildew can't
masak why not? 10:40
azawawi sorear: ok but what's the use of an STD package when STD->parse() doesnt work?
masak there should be a big sign somewhere saying "you need a setting for this to work. batteries not included" 10:43
azawawi that and im seeing a lot of uninitialized errors in CursorBase.pmc when parsing a wrong Perl 6 code. 10:45
after installing the setting that is
sorear that should never happen 10:50
what exactly are you doing and ow did you "install" the setting
moritz_ wonders why people always confuse warnings and error messages
masak mberends: you're probably already on the Dancer mailing list, but today they're discussing building a Plack::Middleware::Websocket. seems very connected to what you want to do, except it's in Perl 5. 10:51
moritz_ maybe they aren't sufficiently distinct
masak moritz_: maybe people haven't felt sufficient need to distinguish them in their heads. both signify something wrong with their programs. 10:52
10:53 whiteknight joined
azawawi sorear: I added a syml_search_path => ['parent-folder-of-syml/CORE.syml'] to STD->parse and installed syml/CORE.syml 10:53
sorear What CORE.syml? 10:56
Like I said, there is no usable standard one
Any that you install is wrong 10:57
x3nU is there changelog for latest rakudo? 10:58
sorear git log is good enough for me
masak rakudo: say (16 < * < 66)(5) # tylercurtis++ discovered this one, but didn't submit it as far as I can see
p6eval rakudo 928836: OUTPUT«1␤»
moritz_ x3nU: docs/ChangeLog 10:59
araujo cannot understand women
masak rakudo: say 16 < 5 < 66
p6eval rakudo 928836: OUTPUT«0␤»
masak submits rakudobug
araujo whoever asked here that wanted to have a gf .... I envy you
araujo wants to get back to his previous single-lonely life
masak araujo: that can be arranged. 11:00
huf or why not try a boyfriend?
araujo masak, yeah, I will arrange that 11:01
11:01 azawawi left
araujo huf, will wait for AI to come 11:02
design your own android
that is the future
so hurry up with perl6 guys, it might be the answer
moritz_ hurrying is a good way to delay things 11:03
araujo: but of course you can help make it happen faster
araujo finally that bible thing about adam out of paradise and struggling for living is starting to make sense for me 11:04
moritz_, :)
masak rakudo: sub foo($a) { True; }; subset Foo of Mu where -> $foo { foo($foo) }; say 5 ~~ Foo # also found and unreported by tylercurtis++ 11:09
p6eval rakudo 928836: OUTPUT«Could not find sub &foo␤ in <anon> at line 22:/tmp/NatSYeFo2Q␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'infix:<~~>' at line 402:CORE.setting␤ in <anon> at line 1:/tmp/NatSYeFo2Q␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'ACCEPTS' at line
..984:CORE.setting␤ …
masak submits rakudobug
<pmichaud> probably the same one that caused (causes) roles to not see lexical subs.
moritz_ another fun not-in-the-right-lexical-context bug
masak right.
moritz_ they seem to be quite a problem in rakudo 11:10
masak I haven't figured out a model that works in my head either.
how *do* the inner workings of a metaoperator see a lexical user-defined operator, for example? 11:11
moritz_ masak: [+] desugars to reduce_helper(&infix<+>, @args) or so 11:13
masak: so it just gets a reference to a routine (or multi), which it calls
11:14 redicaps joined, redicaps left
masak moritz_: right, but the desugaring takes place in a lexical scope unrelated to that of the user's script. so how can the desugaring code "see" the user's 'my'-declared operator sub? 11:22
11:22 rokoteko joined
moritz_ masak: the "desugaring" is the process of compiling [+]. That inserts the helper code in lexical scope of the user script 11:23
in rakudo, that's roughly
PAST::Op.new(:pirop('call'), '&reduce_helper', Past::Var.new(:name('&infix:<+>), :scope('&lexical')), @args) 11:24
masak ah, with the desugaring taking place at parse time, I get it. thanks.
moritz_ if it were not parse time, I'd need lift() 11:25
s/I/It 11:27
rakudo: my $x = 5; subset A of Int where { $_ < $x }; say 2 ~~ A 11:28
p6eval rakudo 928836: OUTPUT«Null PMC access in can()␤ in <anon> at line 1:/tmp/DDVdqI7ocJ␤ in <anon> at line 22:/tmp/DDVdqI7ocJ␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'infix:<~~>' at line 402:CORE.setting␤ in <anon> at line 1:/tmp/DDVdqI7ocJ␤ in 'Block::ACCEPTS' at line
..5775:CORE.setting␤ i…
moritz_ I'm so sure that worked once 11:29
masak submits rakudobug
I also think it worked once.
rakudo: my $x; subset A where { $x }; 2 ~~ A; say "alive" 11:30
p6eval rakudo 928836: OUTPUT«alive␤» 11:31
masak rakudo: my $x; subset A where { $_ < $x }; 2 ~~ A; say "alive"
p6eval rakudo 928836: OUTPUT«Null PMC access in can()␤ in <anon> at line 1:/tmp/lqVft7Zeo5␤ in <anon> at line 22:/tmp/lqVft7Zeo5␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'infix:<~~>' at line 402:CORE.setting␤ in <anon> at line 1:/tmp/lqVft7Zeo5␤ in 'Block::ACCEPTS' at line
..5775:CORE.setting␤ i…
masak rakudo: my $x; subset A where { $_ }; 2 ~~ A; say "alive"
p6eval rakudo 928836: OUTPUT«alive␤»
masak rakudo: my $x; subset A where { say $x }; 2 ~~ A; say "alive"
p6eval rakudo 928836: OUTPUT«Could not find sub &say␤ in <anon> at line 22:/tmp/9mQi5DLi64␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'infix:<~~>' at line 402:CORE.setting␤ in <anon> at line 1:/tmp/9mQi5DLi64␤ in 'Block::ACCEPTS' at line 5775:CORE.setting␤ in 'ACCEPTS' at line
..984:CORE.setting␤ …
masak ah :)
colomon rakudo: my sub infix:<++++>($a, $b) { -$a + $b }; say [++++] 1, 2, 3, 4 11:33
p6eval rakudo 928836: OUTPUT«===SORRY!===␤Could not find sub &infix:<++++>␤»
colomon rakudo: our sub infix:<++++>($a, $b) { -$a + $b }; say [++++] 1, 2, 3, 4 11:34
p6eval rakudo 928836: OUTPUT«2␤»
11:36 zulon joined
moritz_ that's unfortunate :/ 11:36
masak now that moritz_ has explained the simple desugaring process, I don't understand why the error occurs... :) 11:37
it's just a simple lexical lookup in the same scope, no?
colomon I don't think moritz_'s explanation is actually correct
moritz_ PAST::Op.new( :pirop('find_sub_not_null__Ps'), $base_op ),
does that look into lexical scopes too? 11:38
colomon but I may be wrong on that, too. :\ 11:39
moritz_ colomon: do you think it's not what happens now, or not what's supposed to happen? 11:40
colomon okay, the first problem (which may not actually affect this one) is that it's generating the code for the metaop that way.
so basically, the first time you call [+], it generates a new [+] sub which does the reducewith call. 11:41
so if you later define a new infix:<+> and then call [+] wanting to use it, you definitely do NOT get the lexical scope at that point.
may very well be that you never get the correct lexical scope.
moritz_ then that design is flawed
colomon my guess (based on watching these things happen) is that you never get the correct lexical scope. But that's strictly a guess. 11:42
I certainly agree that it's not supposed to work that way. 11:43
masak jnthn: www.jnthn.net/papers/2010-nlpw-metamodels.pdf is AWESOME! massive kudos!
masak can't believe he missed that one till now
num & 11:46
er, *nom
12:12 molaf joined 12:17 molaf left 12:23 cogno joined 12:30 azert0x joined 12:37 Italian_Plumber left
jnthn morning, 6folk 12:37
phenny jnthn: 05:12Z <tylercurtis> ask jnthn Shouldn't Rakudo.Runtime.Ops.logical_not_int box the result into TC.DefaultBoolBoxType?
jnthn masak: I only gave it once and had a lot of fun doing so...maybe I should do it again some day. :-) 12:39
moritz_ jnthn: is there a good reason for caching things like prefix [+] ? 12:41
it seems to mess up things when there are lexical ops 12:42
jnthn moritz_: Mostly it means that we can just generate the op calls as normal calls to &prefix:<[+]> 12:43
12:43 drbean joined
jnthn I think the lexical issue is a more general one fwiw. 12:44
Though yes, we could do the meta-ops differently to avoid the issue.
moritz_ do we gain anything from it? the logic for calling reducewith with the right arguments is already in there
jnthn Feel free to try out a non-caching version.
12:44 cogno left
moritz_ does 12:44
jnthn I'm not especially attached to it.
It just made code-gen a bit easier.
moritz_ $ ./perl6 -e 'multi sub infix:<+++>($a, $b) { $a + $b }; say [+++] 1, 2'
3
works when I remove the cache
let's see what spectest has to say 12:45
jnthn And when instead of emitting the op you emit the call?
Rather than currying it?
12:45 wamba left
jnthn I guess it'd work. 12:45
moritz_ that's what I'm trying now 12:47
it's nearly only deleting code
... and breaks some tests .(
ah, we need the cache for combining it with other meta ops 12:48
unless we tweak their codegen too... not sure if that works
jnthn Yes, you may need to refactor the bunch. 12:49
moritz_ huh 12:51
my @result = [~]«( <a b> X, <1 2> );
which colomon++ commented with #?rakudo todo "Not at all clear if this test is correct or not" 12:53
jnthn OK, that just makes me want more coffee. :-) 12:54
moritz_ if that's the only test that breaks, I'll consider s/todo/skip/ 12:55
12:56 cogno joined
colomon have you considered nested metaops? 12:57
jnthn I'd hope we have tests for those... :-)
colomon I'm not sure if it's a problem with [op], but it's an issue in general with this approach
cogno Limechat++ # irc on the go 12:58
jnthn But yes, there was a sense in that what we have now gets the nesting right by just passing in higher order function references.
moritz_ colomon: yes, those are a problem 13:00
colomon the specific case to worry about (I think) is what happens to [R-] if R- no longer generates a R- sub.
moritz_ hm
colomon though can you use [op] in a hyper-op? then you'd run into the same issue here.
afk
moritz_ maybe we can make all the helper subs always return closures 13:01
and emit a call to it in the end
jnthn moritz_: Yes, it'd need to be something like that. 13:02
colomon won't a closure have the same lexical issues?
afk for real
jnthn moritz_: Or just .assuming everything apart from the "top" one in the chain, which you just call.
13:02 dju joined
moritz_ hm 13:03
remains the question of how to find out which one is the top one, at compile time 13:04
jnthn Yes. :-)
moritz_ currently we have only one test for a reduce meta op being used by another meta op 13:05
and that is borked :-)
dalek odel: 03bf0be | jnthn++ | dotnet/runtime/Runtime/Ops.cs:
Fix a nit noticed by tylercurtis++.
13:06
odel: b4f8465 | jnthn++ | dotnet/runtime/Metamodel/SharedTable.cs:
Fix a jnthn-- fail.
13:07 dju left 13:08 dju joined 13:09 orafu left, orafu joined 13:12 sftp joined 13:15 sftp left 13:21 cogno left 13:31 lala joined
lala Other Syntax for Calling by Name 13:33
cloud.github.com/downloads/perl6/bo...010-04.pdf
moritz_ don't look at the PDF from April - take a newer one
lala announce-time(dinner => '9pm'); the '>' appearing as an upside down question mark
moritz_ we do fix bugs sometimes. Which is why it's worth to look at a newer version. 13:35
lala i was going to play with it abit, but I couldn't find any examples of using event loops or tcp sockets 13:36
13:36 Colb-Seton joined
lala was an eventloop like libevent etc decided on? 13:37
moritz_ I think the plan is to implement eventloops with feeds
lala i'd love to see code cleaner using events, right now my code imports a C library, and its just a big mess of functions calling functions never going back to main 13:42
13:46 cogno joined 13:49 dual left
lala in perl5 the socket connects were not truely non blocking i had to set socket to non blocking then manually use connect($sock, $saddr) to get it to work 13:54
13:56 cogno left 14:02 Colb-Seton left 14:04 guidj0s joined
guidj0s Hi guys. 14:04
Im excited about perl6, but why the change in the ternary operator? 14:05
14:11 Mahmoud joined
Mahmoud I don't get why do we need Perl6 14:11
lala I asked myself that question alot as well, but it seems we can compile our source code, that will be main reason i think 14:12
be nice not to have to install 50 modules to put program on another box 14:13
Mahmoud aren't there existing languages that already do so 14:14
Juerd guidj0s: Because ? and : could be used so much better
guidj0s Juerd: oh... ok
Juerd guidj0s: And it gave the nice opportunity to change it to something more consistent throughout the language: ? is the opposite of !, which negates. Now we get ?? and !! for if-true and if-false of the ternary.
jnthn guidj0s: Several reasons, of those I remember: ! had a clear association with negation, signle characters were felt a bit too flimsy for control flow operators, and I think partly that because : is used to mean quite a few other things in Perl 6, it might have caused some parsing-y trickiness.
Juerd And it looks a bit more consistent with && and || 14:15
guidj0s Juerd: yeah, i was reading some Perl6 documentation, and I saw the change, that's what made me ask here
moritz_ guidj0s: another reason is that having single characters for control is a bit a hard to read, they can easily be overloooked 14:16
Juerd jnthn: Maybe the documentation should be grouped per codepoint ;)
jnthn Mahmoud: I think you just made an argument against ever making anything that does something better than a tool that already exists today... :-)
moritz_ Mahmoud: Perl 6 unifies a lot of concept that aren't present in this combination in other language
Juerd jnthn: ":", U+003A, COLON: Used in the following operators: (...)
moritz_ Juerd: actually I have long planned such a project
jnthn Juerd: www.perlfoundation.org/perl6/index.cgi?witch 14:17
moritz_ Juerd: and I started to write some documentation for it too
Juerd Oh my :)
14:17 Sarten-X2 is now known as Sarten-X
Juerd I thought I was being silly but that actually looks useful. 14:17
guidj0s is there any idea when Perl6 is coming out?
Juerd www.perlfoundation.org/perl6/index....itch_colon
guidj0s i was just starting to delve into more advanced Perl 5 usage... 14:18
jnthn Mahmoud: Seriously though, Perl 6 does have various new things to offer. See for example grammars and junctions.
guidj0s and the stuff I was learning seems to be about to disappear
moritz_ "coming out" is a process 14:19
jnthn guidj0s: Perl 5 is most certainly not going to disappear. :-)
moritz_ which is in progress
guidj0s jnthn: what do you mean?
Juerd guidj0s: Knowing multiple languages will give you a more solid understanding of programming in general.
lala if your talking about production i'd stick to perl5 till perl6 has enough cpan modules to make life easier, and I'm guessing that will take 2 years 14:20
Juerd Sometimes learning differences is more effective than learning specific aspects of a single language.
jnthn guidj0s: Perl 6 "coming out" will not mean Perl 5 development ceases, or that people who are using Perl 5 will all suddenly stop doing so and use Perl 6 instead. :-)
guidj0s mmmkay...
Juerd Where will it come out from?
s/from/of/
guidj0s I just feel a tad bit insecure because something I like in Perl (5) is the fact that it's not completely abstract.... 14:21
i.e., you build complex data structures out of very fundamental ones
14:21 sftp joined 14:22 risou_ joined
guidj0s I just like how you build big things out of just scalars, lists and references to them. 14:22
which just seems likely to disappear in Perl 6 14:24
Juerd You'll still be able to do all the same things
jnthn rakudo: my @people = { name => 'jnthn', likes => 'beer' }, { name => 'masak', likes => 'strange loops' }; say "@people[0]<name> likes @people[0]<likes>"; # you still can in Perl 6.
Juerd And often even in the same way, even if the underlying techniques change.
p6eval rakudo 928836: OUTPUT«jnthn likes beer␤»
moritz_ jnthn++ # nice example
14:25 risou left
moritz_ perl 5 only needed references for nested data structures because arras and hashes can only hold scalars 14:25
guidj0s are there lots of changes in the way references are treated?
jnthn rakudo: my @people = { name => 'jnthn', likes => 'beer' }, { name => 'masak', likes => 'strange loops' }; for ^people -> { say "@people[$i]<name> likes @people[$i]<likes>"; } # :-)
moritz_ that limitation is gone
p6eval rakudo 928836: OUTPUT«===SORRY!===␤Missing block at line 22, near ""␤»
jnthn grr!
Juerd guidj0s: Yes. References are gone.
guidj0s %somehash{name} actually calls name() now, doesnt it?
jnthn rakudo: my @people = { name => 'jnthn', likes => 'beer' }, { name => 'masak', likes => 'strange loops' }; for ^@people -> $i { say "@people[$i]<name> likes @people[$i]<likes>"; } # :-)
guidj0s Juerd: oh man
p6eval rakudo 928836: OUTPUT«jnthn likes beer␤masak likes strange loops␤»
Juerd guidj0s: Don't let it scare you :)
moritz_ actually not quite true
everything is a reference, more or lesss 14:26
it's just that explicit usage of references is gone
guidj0s i just dont want my sweet lovely perl to turn into java :(
jnthn guidj0s: See the exmple I just ran. Note that you can have an array of hashes just like in Perl 5. The only difference is that when you go to access the data, you don't have to write -> any more.
guidj0s jnthn: i noticed.
how about closures though? 14:27
Juerd guidj0s: my $closure = { say "Hello, $world!" };
jnthn rakudo: my $x = { say "oh hai I'm a closure" }; $x();
p6eval rakudo 928836: OUTPUT«oh hai I'm a closure␤»
guidj0s $closure calls it?
or $closure()?
jnthn $closure()
moritz_ or .() if you prefer
guidj0s ah, nice.
Juerd $closure.() or $closure();
s/;//
14:28 tadzik joined
tadzik oh hello 14:28
Juerd O hai
jnthn ahoj, tadzik
guidj0s thanks guys, i needed the comforting 14:29
guess i shouldn't be scared of change :P
lala you like new pussy don't you?
guidj0s lala: im quite happy with my girl man ;)
think ill like new perl though :P 14:30
jnthn "Perl 6. It's a new pussy."
Juerd p6ssy
guidj0s how deeply is L.W. involved in the making of Perl 6? 14:31
moritz_ hey, we're supposed to be a family frindly channel
guidj0s: as deep as possible
jnthn moritz_: wtf, I was thinking of lolcats!
Juerd guidj0s: Deeper does not exist.
guidj0s nice.
gfldex rakudo: say "purr";
p6eval rakudo 928836: OUTPUT«purr␤»
guidj0s btw, anybody here got pumpking status? :)
Juerd guidj0s: He's known as TimToady here, though :)
tadzik oh, new faces 14:32
guidj0s awesome :|
Mahmoud any plans to make perl 6 faster than perl 5
moritz_ guidj0s: pmichaud is the Rakudo pumpking
Mahmoud: we'll make it as fast as we can 14:33
guidj0s nice.
tadzik Mahmoud: it's alredy happening, rakudo 2010.08 is like 2-20 times faster than the last release
14:33 drbean left
guidj0s i would've thought the heavt object orientation would have made it at least a little bit slower... 14:34
heavy*
awesome though.
Juerd guidj0s: Slower than what?
Mahmoud i read that perl 6 can't get faster than perl 5
gfldex guidj0s: as slow as c++?
lala more syscalls that necessary you mean
Juerd lala: OO does not involve system calls.
tadzik Mahmoud: where?
guidj0s Juerd: than Perl 5
Juerd guidj0s: For now, it still is. 14:35
guidj0s at least its initial versions
Mahmoud tadzik, youtube comment www.youtube.com/watch?v=ZKmUZVKIdKg
14:35 s1n joined
tadzik Mahmoud: oh come on, please 14:35
Mahmoud heh
Juerd guidj0s: Everyone hopes to see it get faster, though!
guidj0s yeah.
Mahmoud 2-20 times faster is really good
guidj0s i just love Perl man. I want it to kick ass and you freaks usually manage to make it do it.
Juerd 20?
tadzik Mahmoud: don't say you took this troll seriously :)
gfldex yes, it was that slow :) 14:36
lala Well if we can compile our programs on a unix box, then just ftp it over to another one and use it i;m all for it, however wouldn;t there be issues if something was compile on linux vs freebsd vs solaris?
tadzik Juerd: one of my tests ran 20 times faster, yes
it consisted mainly of iterating and adding Nums :)
14:37 blogometer joined
jnthn guidj0s: For what it's worth, the new OO syntax being more declarative actually provides more information to the compiler. Once we have a compiler that knows how to make good use of that information, we've a good chance of being able to do OO stuff pretty fast in the common cases. 14:37
14:37 blogometer left
tadzik jnthn: sounds interesting to me. How can a compiler benefit, and from what? 14:38
guidj0s jnthn: I just figured the compiler would have to change so much 14:39
jnthn: and I'm thinking that Perl 5's constant improvement since 1987 is one friggen good reason why it's fast :) 14:40
jnthn tadzik: For example, consider class Beer { has $!name; has $!type; method describe() { say "$!name is a $!type" } }
tadzik: We're not committing to any particular storage strategy for the attributes here. 14:41
tadzik: They're also private to the class.
lala well if we go overboard on having to declare every variable as a float int or whatever, then we're no better than c/c++
gfldex lala, you imply that you have to provide types
you further imply that you cant have dynamic types in c/c++ 14:42
jnthn tadzik: So we could choose to just have a chunk of memory where we store them in our object.
gfldex you can but nobody is using it, because the syntax is so ugly
jnthn tadzik: And then look them up using offsets.
tadzik jnthn: like a structin C?
jnthn tadzik: Yes
tadzik s/tin/t in/
jnthn: how is it different from other languages? 14:43
jnthn tadzik: It's not different from a lot of languages. It is a change from Perl 5, for example, where a lot of storage is based on hashes, so an attribute lookup = a hash lookup.
tadzik oh, so it's just different from Perl 5's approach? 14:44
gfldex tadzik: it _can_ be different but don't has to
jnthn tadzik: Well, and probably some other dynamic languages.
guidj0s is there any change on hashes' implementation?
lala One thing I do hate about google is they are favoring python, I read this compiler will work with both languages, meaning we may even be able to write programs for android etc that has python support down the road if this is the case 14:45
tadzik gfldex: yep, I know that
jnthn tadzik: The important thing is that we're not locked into just one way of representing objects.
tadzik lala: is liking a language a reason to hate?
moritz_ guidj0s: Perl 6 is a specification. The internals can be wildly different from Perl 5
guidj0s moritz_: then i guess i uderstand, even if feebly, how much work you guys are doing 14:46
lala tadzik: your always going to favor the language your know the most in 14:47
tadzik lala: maybe. Then why do you hate google? :)
lala should be interesting moving forward to mod_perl etc
Mahmoud if mod_perl6 is limited like mod_php, we would see more of it in shared webhosts env 14:48
Juerd Mahmoud: Embedding into Apache isn't necessary for serving web pages.
Mahmoud: FastCGI is a much better approach, and easier to implement
lala tadzik: i hate them mostly because i envisioned their company something out of the terminator movies, only thing they have left for world dominance is creating their own windows OS 14:49
i had a dream where its going to be hackers vs google one day
tadzik lala: that's one of the reason I avoid using their products. But that doesn't matter, I was just curious about your python point 14:50
guidj0s I've heard google sticks with python for hystorical reasons 14:51
Juerd hysterical
guidj0s because they started using it on a time when it was a good choice, and now they've just too much in it to port to other languages (PERL!)
kinda like COBOL 14:52
Juerd guidj0s: You make it sound like Google uses *only* Python. They use a whole lot of languages.
guidj0s Juerd: sorry, I didnt mean that. I meant they use "a lot of"
lala they favor python look at all their new programming API's from last few months, java, python
Juerd A company can have its prefenences 14:53
gfldex google serves the masses
i can't see what would be wrong about that :->
lala i looked at that language, i didn't like its code at all
14:55 mikehh_ joined
guidj0s gfldex: if you wanna make money, you have to. 14:56
14:56 mikehh left 14:58 sftp left
gfldex guidj0s: like rolls-royce? 14:58
14:59 _twitch joined
guidj0s gfldex: I didnt know Google was in the auto industry 14:59
_twitch hi guidj0s
guidj0s heya
_twitch hi god of perl
14:59 sftp joined
_twitch wonders which one the god of perl is.. 14:59
14:59 tohen joined
lala fucked up articles in last few days, of how a guy hacked into a guys car on the freeway through his tire pressure guage and took over his brakes, engine etc 15:00
_twitch hey tohen
tadzik you know why python has so much whitespace in it?
tohen sup ;]
_twitch not much 15:01
guidj0s Juerd: I expect there are big changes to globs and the way we manipulate them? 15:02
lala lets face it biggest reason we all use these type of languages is because it would take us 10 times as long to do it in low level language, and we prefer not working on same shit all the time
15:04 dual joined
guidj0s lala: you forgot to mention worrying about endianness and the other gazillion aspects that differ from architecture to architecture. 15:04
15:04 masak left
pmichaud good morning, #perl6 15:04
guidj0s heya 15:05
tadzik 'afternoon pmichaud
15:05 macroron joined
_twitch hello pmichaud 15:06
15:06 justatheory joined
jnthn hi, pmichaud 15:06
15:08 risou_ left
lala guidj0s: I guess it depends what your purpose is, I guess if you want to be on top end of programming you have no choice but to use c++ or some language you can make nice GUI programs/games for windows, but alot more focus on web based stuff than that, I would love to see game programming one day in a higher language with self-installers etc 15:11
tohen lala, does GameMaker count? :[ 15:12
lala yeah well i doubt gamemaker could make something liek WOW, or final fantasy 15:13
tohen you have a fair point there
mberends hi pmichaud, I've just run test_summary.pl and have the "'plan *;' could become 'plan 101;'" output before me. I'm thinking of putting the actual test counts into the spectests in Synopsis-sized batches. Is that ok with you?
pmichaud mberends: I'm okay with it... but based on discussion yesterday I'm not sure it'll be needed, unless we're aiming to get "really accurate" spectest sizes 15:17
mberends I just hope to improve what we've got a little. 97% accuracy would be nice. 15:18
lala hey on an interesting note: game developpers now have the highest divorce rate, sleeping/eating/breathing a game until completion 15:19
pmichaud mberends: sounds great, then :-)
guidj0s does Benchmark work for Perl 6? 15:21
Juerd guidj0s: Typeglobs? I'm not sure if Perl 6 even has those.
guidj0s Juerd: hmmm, ok 15:22
Juerd I can't remember having heard of globs in Perl 6 context.
guidj0s me neither, that's why I asked here tbh :)
tadzik guidj0s: no one knows, it has no tests 15:24
guidj0s: here tjs.azalayah.net/ser.html are some (a bit old) tests results for everything from modules.perl6.org 15:25
15:48 cogno joined
jnthn TimToady: proto lol($x) { * }; multi lol(Int $x) { 1 }; { multi lol(Str $x) { 2 } }; say lol("cat") # error, or 2? Under the current model, it's an error. Under my first cut implementation at the moment, we go looking for a proto to associate the multi with and just give it to the candidate list that proto will manage, so it'd print 2. 15:50
TimToady: er, where "the current model" = what Rakudo implements
TimToady: And "my first cut implementation" is my first crack at trying to do the new style multi-dispatch in 6model. 15:51
15:51 fod joined
dalek odel: bfac235 | jnthn++ | dotnet/ (2 files):
Build signature objects a bit later. This will allow us to add type information to them.
15:52
jnthn pmichaud: nqp-rx parses proto-regexen specially rather than falling through multi_declarator rule to get to them. Deliberate or just hysterical raisons? 15:54
pmichaud jnthn: deliberate 15:56
jnthn pmichaud: OK
pmichaud jnthn: at least, at the time it was deliberate. it might be possible to work with them falling through.
15:57 justatheory left
jnthn pmichaud: I've no immediate need to seek unification, just noticed it and got curious. 15:57
15:57 Guest23195 left
pmichaud it's very likely fossil, now that I think of it. Until bacek++ did multis for nqp, we didn't even have a multi_declarator rule, I don't think. 15:57
jnthn pmichaud: Yes, that's my guess too.
15:58 masak joined
jnthn pmichaud: How do proto-regexes find all of their variants today, btw? 15:58
pmichaud when a protoregex is invoked, it introspects the class to find all of the methods in the protoregex
jnthn OK
pmichaud (and caches that information)
jnthn I'm looking at a push model rather than a pull model at the moment.
pmichaud ...push model? 15:59
jnthn That is, add_multi_method goes looking for a proto that the candidate can be associated with.
And associates it.
Rather than the proto going looking down the tree for candidates.
pmichaud I'm not sure that quite works for regexes.
jnthn Oh
It may not for methods either
Hmm.
No, it probably doesn't. :-(
pmichaud (will have to depart shortly) 16:00
jnthn I do think the multi variants maybe want to live in a separate place in the meta-object than everyday methods.
I'll see how things work out. 16:01
16:02 cogno left, justatheory joined 16:03 Su-Shee left 16:09 tylercurtis joined, tohen left
tylercurtis masak: thanks for reporting those. 16:10
tylercurtis forgot.
masak no prob.
16:15 Mahmoud left 16:23 tylercurtis left 16:25 tylercurtis joined, zulon left
masak lala, guidj0s: hi, new kids on the block! 16:28
guidj0s masak: heya ;) 16:29
masak just wanted to say that I enjoyed reading your questions, and their answers.
hope you'll like it here. :)
guidj0s <3
masak I see lala++ has a potty mouth. that's not unheard of here, but a bit unusual. I hope e'll stick around, so I can observe whether the channel changes lala, or vice versa. 16:33
TimToady protos of any type have to consider both downward context and upward, so the multi defined in the sub-block is not part of the candidate list for the outer call. i.e. the proto may need to manage different candidate lists in different scopes (or different child classes, for proto methods) 16:38
masak ok, folks. after a bit of downtime november-wiki.org/ is back up!
TimToady: I got all of that except the part where protos have to consider upward context. to me it looks like only the things in the same scope as or lower than a proto are affected. 16:40
TimToady jnthn, so your example should be an error, as it is now; it's just that this is decided by the proto looking at the appropriate candidate list
jnthn TimToady: OK. :S 16:41
TimToady and in the case of a bare proto like {*} there, it devolves to your current system, except that &lol is allowed to refer to the proto
tadzik masak: november-wiki.org/Perl_6 works for you?
dalek odel: f324cbc | jnthn++ | dotnet/runtime/Metamodel/Representations/RakudoCodeRef.cs:
Add a slot that we'll be able to stick dispatchees in (where dispatchee = something that a sub that's going to serve as a dispatcher will have in its candidate list).
odel: e21ef65 | jnthn++ | dotnet/compiler/ (2 files):
Stash types in signature objects.
masak tries
dalek odel: c5ba12f | jnthn++ | dotnet/runtime/Init.cs:
Give low level code objects a HOW and a !add_dispatchee method that will add to its dispatchee list.
jnthn TimToady: *sigh* Took me ages to work out how to get thees things right in the last design. :/ 16:42
masak tadzik: no, getting an internal error for that one.
TimToady S06:126 discusses how the candidate lists are defined
masak tadzik: November is in need of quite some de-bitrotting these days. I'm glad it runs, but it does so on quite an old Rakudo and with quite a few fixes needed.
tadzik: fwiw, it seems to give an error on all not-found pages. 16:43
so it's mostly a question of LTA there, I think.
TimToady jnthn: maybe think of it this way; instead of an anonymous multi dispatcher, the proto is the name of the multi dispatcher you're going to use
and most of them will be the same dispatcher 16:44
jnthn TimToady: Well, the model I'm pondering at the moment is that every routine has a candidate list that it presides over.
TimToady: For many routines that slot will be null. 16:45
rokoteko howdi.
TimToady that doesn't seem quite right to me
jnthn TimToady: Why?
TimToady lambdas shouldn't care about candidates
jnthn TimToady: Any routine could be wrapped.
TimToady only protos have to care anymore
jnthn TimToady: Huh?
I said *Routine*.
Not Code.
TimToady ah
jnthn That was deliberate. :-)
I guess though that this falls apart if somebody tries to wrap a proto... 16:46
masak rokoteko: hi!
TimToady sorry, distracted...
jnthn Since they'd both fight over that slot.
TimToady surely the wrapper is an only around the proto
jnthn Oh, good point
So the wrapper owns the candidate list.
masak oh wow. wrapping a proto.
jnthn Yeah, this could work.
TimToady that's one of the reasons I wanted &lol to refer to the proto 16:47
jnthn The thing is that it can't really refer to just *a* candidate list.
erm
Not the &lol
TimToady that's correct
jnthn I mean, I can't have a slot that just holds *a* candidate list.
16:47 cogno joined
TimToady the candidate list it uses still belongs in the scope of the caller somehow 16:47
jnthn It needs to have some mapping of handle => candidate list.
Oh, hmm.
guidj0s TimToady: are you considering anything similar to symbolic references for Perl 6?
16:48 am0c joined
TimToady $::($name) 16:48
masak guidj0s: they're in the spec already.
TimToady it has a separate syntax
jnthn TimToady: That doesn't feel quite right.
TimToady: I want the same mechanism that we use for multi-method candidate lists at different levels to also work for inner/outer scopes ideally. 16:49
16:49 envi^home left
jnthn TimToady: I guess maybe they shouldn't live in the proto though, otherwise we may memory leak. 16:49
TimToady you still want to cache them (or at least a reference) with the call 16:50
jnthn (e.g. in anonymous subclasses)
Yeah, quite.
As well as the dispatch cache.
TimToady I'm trying to drive the semantics of nested lexical scopes and inheritance as close together as I can, wrt proto 16:51
so you can think of inner scopes as derived classes
jnthn Right, which fits with me wanting the same underlying mechanism for both.
16:52 cogno left
jnthn TimToady: In a sense, we don't only want to invoke the proto with the arguments, we also want to invoke it with the current caller's view of the candidate list or something. 16:52
Though for objects it's not really caller as such 16:53
It's more invocant type
16:53 Trashlord joined
TimToady for sure the candidate list builder needs to know the identity of the target scope/class somehow or other 16:54
if only to keep a hash of candidate lists per target scope/class
jnthn I don't think that's a good idea. 16:55
It'll leak memory on anonymous subclasses that we then GC.
masak the chief difference between nested scopes and inherited classes is multi inheritance.
TimToady yes, it should be put into the target object to avoid leaking
16:56 hudnix left
jnthn masak: That's not really relevant here. 16:56
TimToady you still have an ordering even under MI
jnthn masak: With multi-inheritance you have an MRO and can use that linerarization.
masak jnthn: I suppose so. I'm still thinking about it. 16:57
TimToady which is why nextsame can work for either
masak 's brane hurts
I think the two of you are right. it's not a problem with MI. 16:58
jnthn TimToady: Define "the target object" though
TimToady you're beating your head against a Wall :P
scope or class
jnthn What's a class?
:-)
Oh
masak makes the sound of one that stops doing that :)
masak goes away to study
jnthn I wonder if I can shove it in the STable. 16:59
Yes, I can.
Maybe.
TimToady what is an STable
jnthn TimToady: It's a table of stuff that exists per (HOW, REPR) pair
Or at least, per one that we ever instantiate.
TimToady: Internal implementation detail
Rather than Perl 6 space thing 17:00
TimToady assuming each class has a unique .HOW instance, it can go there
jnthn I'm still not sure that's right though
TimToady if it's not unique, then some place per-meta-class instance needs to exist
jnthn Yeah but that's going to play really badly if people want to write prototype-y stuff
TimToady well, it's probably not in the type object
jnthn No, it's certainly not in the type object. 17:01
TimToady well, a prototype-y knowhow will probably have to stuff it in the actual object 17:02
jnthn So are we saying that this lookup needs to be part of the HOW API?
e.g. a meta-object needs to know how to manage these things?
(We're making life a bit harder for the meta-programmer here. OTOH we can always provide this in a role that they can compose.) 17:03
TimToady probably, but I'm fuzzy on the exact handshake looks like 17:04
*waht
*ha
jnthn WHAT
Yeah. Hmm.
I guess what is clear from this is that the proto doesn't actually own the candidate list(s). It either just knows how to obtain them, or should be curried with them. 17:05
Figuring out how to make this work at all is hard enough without even starting on how to make it really fast... 17:06
The other difference between scopes and objects is that in a scope, the candidate list is fixed at compile time, whereas in an object, we could get new candidates monkey-patched in. 17:07
TimToady curry, yum
jnthn So we'll need to make sure invalidation is done right to.
*too
17:07 molaf joined
TimToady yes, though even there, we can start to guarantee lack of monkeying at CHECK time and finalize classes 17:07
or at least close them 17:08
jnthn We can close them perhaps. Can't seal 'em though
Well
What happens if I compile some class in a module, close the class, and then somebody uses it from a script?
And monkey patches it from there? 17:09
TimToady aggressive inlining in the absence of declarative pessimization will (I hope) save our bacon someday
this determination is made on an application level
a predefined module may not assume it, or must at least provide both closed and open options
or some way to pry it open again 17:10
when I say CHECK time, I mean the CHECK of the main application, not the CHECK of the module
jnthn Yes but if you pre-compiled the module...
Well, I guess you still have the meta-objects in memory and can twiddle them.
TimToady then you have to take it into account that you might have to recompile it to be open if someone monkey patches it 17:11
we don't have to make monkey patching efficient
jnthn True
TimToady it's the lack of monkey typing that needs to be detectable at CHECK time and aggressive optimization enabled 17:12
jnthn Like, "Pre-compiled modules can close classes. If you use a module and are monkey typing, the pre-compiled version will be ignored and we will always re-compile with source."
TimToady nobody can close classes, according to spec
only the application as a whole may do so 17:13
mere mortal code may only request that a particular class remain open
jnthn Yes, but the spec says precious little afair about how that plays with pre-compilation.
TimToady one may certainly precompile both ways on spec, if we want to factor out some optimization to before CHECK time 17:14
jnthn By the time you freeze bytecode, didn't you already have that module's CHECK time, though?
TimToady turning $.foo into $!foo will be a large optmization
when I say CHECK time, I mean the CHECK of the main application, not the CHECK of the module 17:15
17:15 felliott__ left
jnthn Anyway, I think I've got a few more hints on what this multi stuff needs to look like. 17:15
Though more questions than answers yet.
(On how to implement it.) 17:16
TimToady hopefully they're bad questions, meaning the kind I can answer :)
jnthn It's mostly "how do I factor this", "how do I make this fast" and so on.
TimToady is still thinking about $/ and $!
jnthn We had to do some trickery in current Rakudo to get closure semantics + multis right, which is yet another thing to try and factor into this. 17:17
TimToady to best enable optimization, we have to hang every piece of data at the right spot (kinda like database normalization) and make sure we don't throw away any useful information as to when to optimize/pessimize 17:18
jnthn I suspect I should probably try and get the new model in place while doing the meta-model stuff and NQP refactors...otherwise it's just asking for another round of painful refactors later. 17:19
TimToady well, in a real sense there are no multis anymore, except as a tag for collection; everything is a lambda down under
17:19 guidj0s left
jnthn Well, yeah, my current model for multis is "go find a place to install this" 17:19
Rather than "install something in the symbol table right away" 17:20
Oh, I wonder
Maybe I can just stick the candidate lists in the lexpad for the lexicals case
So in
TimToady that's where I thought it would go 17:21
jnthn Yeah
I guess I can just pick a weird sigil-y name :-)
TimToady I was using .<!FOO> for hidden names
Juerd I can see your hidden name :) 17:22
jnthn proto foo($x) { {*} }; multi foo(Int $x) { 1 }
That would actually install two things
The &foo
TimToady otoh maybe there's a scope object separate from the symbol table
jnthn And a &!foo-candidates
Or something like that.
TimToady STD currently has two objects, mostly because p5 doesn't like to mix normal hash with object hash 17:23
jnthn Yeah, I heard mixing different types of hash can really mess you up.
Oh, wait...different topics.
ingy o/
ingy waves from the Boston->NYC bus
TimToady well, you can't install the foo-candidates until you have to inner scope
\o 17:24
how's my favorite iterant acmeist?
*itinerant
jnthn TimToady: I was thinking more that a multi in the inner scope would just go and add things in each scope down to the one with the proto in.
er, wait 17:25
The other way round
Oh, damm
I see your point.
:|
tylercurtis rakudo: sub postfix:<?>($thing) { $thing.Bool }; say (::ingy does Iterator)? 17:26
p6eval rakudo 928836: OUTPUT«0␤»
jnthn TimToady: The language about downward candidates for lexically scoped multis is pretty clear, but what's the upwards bit? 17:27
TimToady: Is that saying that if I declare a proto foo($x) { * } and a bunch of multis in inner (downward) scopes, then that proto controls them, but also incorporates things from its outer scopes too? 17:28
proto foo($x) { * }; multi foo(Int $x) { 1 }; { proto foo($x) { * }; multi foo($x) { 2 }; foo(); } # 1 or 2?
And 17:29
oops, above I meant foo(42)
And
proto foo($x) { * }; multi foo(Int $x) { 1 }; { proto foo($x) { * }; multi foo(Str $x) { 2 }; foo(42); } # 1 or error?
That is, is the proto marking the end of an "extent" of scopes, and hiding the ones beneath it? 17:30
From S06 I'm guessing 1 and 1.
masak I thought a proto was like saying "I'll handle this scope and those inside it". 17:31
can dispatch reach above a declared proto?
jnthn masak: And thus hides the things above it?
tylercurtis would expect error, from a intuitive perspective.
jnthn masak: I could argue for that.
I'd actually *like* that. 17:32
masak jnthn: that's how I grokked it so far.
jnthn: thus, a proto is very much like an only. except that it has multies. :)
jnthn masak: I'm not sure it's what S06 says though.
masak neither am I.
jnthn We used the term "managed" loosely above to indicate the set of C<multi>s in
question; the "managed set" is more accurately defined as the intersection
of all the C<multi>s in the C<proto>'s downward scope with all the C<multi>s that
are visible to the caller's upward-looking scope.
-- love, S06
masak I think we're in agreement. you, me, and S06. 17:33
jnthn Erm, huh?
masak so here's how I read it.
you have two cones going on.
one cone is the things downwards from the proto.
the other cone is the things upwards from where you're calling.
the set of multis in the dispatch is simply the intersection of those two cones.
jnthn You're saying that 17:34
masak in a scopes setting, the latter cone is boring. think of it as a line. in a MI setting, the latter cone is interesting.
sorry for somewhat mixed metaphors. :)
I love the fact that I think I grok this.
jnthn Grr...it's hard to come up with an example...wait a moment... 17:35
tylercurtis On the topic of multis, what does "Named arguments that bind to positionals in the proto sig will become positionals for all subsequent calls to its managed multis." mean. How does a named argument bind to a positional? 17:36
masak rakudo: sub foo($x) { say $x }; foo( x => "OH HAI" ) 17:37
p6eval rakudo 928836: OUTPUT«OH HAI␤»
masak tylercurtis: does that answer your question?
tylercurtis masak: yes, it does. I knew that that sort of thing applied to BUILD, but I had no idea it worked in general. 17:38
masak tylercurtis: BUILD contains absolutely no magic, save for being automatically called by .bless via BUILDALL.
jnthn OK, I guess what I'm curious about is if there's a case where the caller's upward looking scope is ever also not the multi we're calling's upward looking scope. 17:39
masak can't think of any. 17:40
because in order for us to see the multi we're calling, we have to be below it.
TimToady the managed list is the intersection of downward and upward views, not the union
jnthn TimToady: I think I need a few examples. First, what are the outputs of the two things I pasted above? 17:41
17:42 xinming left
TimToady 2 and error 17:42
jnthn TimToady: OK, good. :-) 17:43
TimToady: But I'm still struggling a little on what the "downward and upward" bits mean.
masak yes; good.
jnthn: the proto defines things downward. multis are visible upward. 17:44
jnthn TimToady: Because as I'm seeing it, the multi candidates that you might end up calling are those situated between your current scope and the outer scope containing the proto, inclusive.
Which is kind of one "cone".
TimToady multis don't look, they're passive
the call looks upward, and the proto looks downward
and multies they both see are valid candidates
jnthn Aha, OK 17:45
That makes it much less foncusing.
oh ffs
*confusing
.oO( I guess one coffee this morning wasn't enough... )
masak "funcusing" is when you try to focus, and almost succeed :)
er, *foncusing 17:46
jnthn :P
masak -Ofuncusing
jnthn -Ofuncusing
...
masak \o/ :)
jnthn: the upwards cone is a line, because the scope inclusion relation is one-to-many. that's why I thought MI would be more problematic, because it's many-to-many and creates funnier upwards cones. 17:47
jnthn TimToady: OK, I think I see what you mean by intersecting views now 17:48
masak but it's admittedly not more problematic, because of the MRO.
jnthn TimToady: Though I guess it's manageable in a sense by the call "collecting" all of the multis it can see on its way to the proto, and then saying "oh hey, I found these candidates, how about you pick one for me?"
masak it's a really pretty interaction between the calling scope and the proto. hopefully one that can be cached at scope level, too. 17:50
ingy TimToady: doing well thanks! I think it's my net connection that is itinerant :]
17:50 Mowah joined
masak I wonder if anyone is ever going to make use of the fact that multis define and undefine themselves at scope limits. in serious code, I mean. 17:51
masak stops babbling and goes back to studying again
TimToady for overloadings of operators, perhaps 17:52
drums &
ingy I had a few acmeist days of hacking with path++ nd sartak++ in which they knocked my pegex back a few pegs, but with a little backtracking it should all be fine...
*patch++ 17:53
17:54 ggoebel joined 17:55 jhuni joined
ggoebel I've got 2 1/2 hours of "me" time... where does one get niezca? instructions? website? wiki? 17:55
[Coke] is rakudo having any trouble with compiler infrastructure bleeding into user-visible areas? 17:56
tylercurtis Is the invocant at all privileged over the other parameters in multimethod dispatch? For example, "class A { multi method foo(::B $b) { #`(do I need a proto, btw?) 1 } }; class B is A { multi method foo(A $a) { 2 } }; say B.new.foo(B.new);" Is that an error or 2?
rakudo: .say for ClassHOW.^methods
p6eval rakudo 928836: OUTPUT«Method 'methods' not found for invocant of class ''␤ in main program body at line 22:/tmp/iBifVtQvVm␤»
tylercurtis [Coke]: ^^
jnthn ClassHOW isn't leakage - it should be there. 17:57
mberends ggoebel: github.com/sorear/niecza
17:57 colomon left
tylercurtis jnthn: Right. But shouldn't it be introspectable, ideally? 17:57
jnthn tylercurtis: Yes
tylercurtis: (6model will get that right.)
[Coke] For example, in partcl, I can see the Grammar in the top level Tcl namespace, which I shouldn't. 17:58
tylercurtis rakudo: say Perl6::Compiler; say PAST::Compiler; say PAST::Block.new
p6eval rakudo 928836: OUTPUT«Perl6::Compiler()␤PAST::Compiler()␤Capture[0x5a77490]␤»
jnthn [Coke]: Yeah, we have that too.
As tylercurtis just showed
ggoebel mberends: thanks 17:59
pmichaud in rakudo's case, Perl6::Compiler is as much feature as bug, though.
jnthn True :-)
But PAST is harder to argue. ;-)
[Coke] is there a way to force "module" in nqp to be absolute instead of relative to the hll? 18:00
pmichaud it should be very possible to get PAST and the like to live in their own private hll namespace -- just nobody's done it yet.
jnthn tylercurtis: (multi) At the moment we always look class by class up the hierarchy. 18:01
tylercurtis: In the future, we will look at all candidates between the invocant type and the nearest proto.
And yes, you will have to write a proto.
ggoebel niezca readme states that mono v2.6.4 is recommended. Should I assume that the current v2.6.7 is discouraged?
dalek odel: ab1b7bc | ++ | java/runtime/ (8 files):
globally rename IRakudoObject to RakudoObject etc, catch up with some dotnet/ changes
pmichaud [Coke]: (absolute instead of hll-relative) no, but one could put a .HLL directive before the line of the compiler that includes the NQP-generated .pir files
that would cause all of the methods to appear in that alternate HLL space 18:02
I've also considered having a 'use hll' pragma but not gotten there yet.
jnthn mberends++ # karma fel?
mberends seems to have gone anonymous
masak or, as we say in automata theory, ε 18:04
[Coke] blearghs. 18:05
it's not a blocker, it's just annoying. I'll see what I can do to route around.
masak [Coke]: you just summarized my past 2 years with Rakudo. :P 18:09
pmichaud and my past 4-5 years with Parrot. :P 18:14
18:15 justatheory left 18:17 am0c left, colomon joined
jnthn o/ colomon 18:19
[Coke] I am doubly annoyed as I had already worked around most of this stuff BEFORE pct/nqp. =-)
colomon \o
ggoebel scruffy:~/src/niecza ggoebel$ xbuild 18:23
dyld: Library not loaded: /usr/lib/libiconv.2.dylib
Referenced from: /Library/Frameworks/Mono.framework/Versions/2.6.7/bin/mono
Reason: Incompatible library version: mono requires version 7.0.0 or later, but libiconv.2.dylib provides version 5.0.0
scruffy:~/src/niecza ggoebel$ xbuild
dyld: Library not loaded: /usr/lib/libiconv.2.dylib
Referenced from: /Library/Frameworks/Mono.framework/Versions/2.6.7/bin/mono
Reason: Incompatible library version: mono requires version 7.0.0 or later, but libiconv.2.dylib provides version 5.0.0
getting an xbuild libiconv error trying to build niecza... pastebin.com/eKjE3Bva
on osx 10.4
sorry about the double paste...
mberends ggoebel: so your libiconv is too old 18:26
ggoebel mberends: figured... installing current (1.13.1) from www.gnu.org/software/libiconv/#TOCdownloading 18:29
18:30 justatheory joined
ggoebel still trying to compile niecza. With updated libiconv I now get: 18:33
$xbuild
Bus Error
thoughts?
diakopter hm 18:34
18:36 maja joined 18:37 justatheory left, cogno joined 18:38 maja left
ggoebel downgrading mono to 2.6.4... 18:38
masak ggoebel: generally, using a nopaste service is appreciated. just so you know till next time. :) 18:44
today's word: dehierarchicalization. that's what roles do. :) 18:45
gfldex stares in awe at the new word 18:46
masak I wasn't aware that you could summarize what roles do in one word. but apparently you can. 18:47
jnthn So ar people that promote multiple inheritance instead antidehierachicalizationists? 18:48
tylercurtis I think it's more accurate to suggest that MI's proponents are anticommutativists.
Or linearizationalists, if you prefer.
masak jnthn: only if they're aware of the dehierarchicalization that roles provide and reject it. 18:49
mberends that word looks a little bit shorter each time you read it ;) 18:50
jnthn
.oO( must use this in a talk )
18:51
18:51 cogno left
tylercurtis masak: I'm not sure I agree that roles dehierarchicalize. You can have hierarchies of roles. The difference is that hierarchies of roles have sane semantics. 18:52
masak tylercurtis: well, some kinds of hierarchies disappear, and other kinds remain when using roles. 18:53
jnthn tylercurtis: Yes, but the hierarchy has to be collapsed before you cna ever use any of the things in the roles.
That's what happens in role compositon.
And you can't call a method in a role without it being composed into a class first.
masak it's the role composition that does the actual dehierarchicalization.
jnthn Right.
masak I've stopped typing out the word now, and just paste it in. :) 18:54
jnthn So yes, you can have a hierarchy of roles, but the thing that makes roles interesting is the composition algorithm.
masak is it the ClassHOW that does the composition, or the RoleHOW? or neither?
jnthn Neither.
ggoebel phenny: tell sorear two suggestions for niecza's readme: 1) state the minimum libiconv requirement (I installed 1.13.1 from www.gnu.org/software/libiconv/) and 2) Mention that mono v2.6.4 isn't just a recommendation (v2.6.7 is known to have problems on OSX 10.4) 18:55
phenny ggoebel: I'll pass that on when sorear is around.
jnthn The composer is factored out.
.oO( Like in a lot of pop music. )
tylercurtis Right. I think the thing to focus on is the behavior of composition and sum, though, not so much the lack of hierarchies, since there is still the option of conceptual hierarchies.
jnthn tylercurtis: But the result of composition is to flatten the hierarchy out. Thus the name "flattening composition". 18:56
gfldex can we adapt this for perl 6 propaganda? gfldex.files.wordpress.com/2010/08/....jpg?w=436
jnthn And I think that is in many senses what makes roles interesting.
By the time you get to the point of dispatch, there's no hierarchy to consider and the fact that the methods came from roles is a mere historical artefact, mostly interesting to the introspectionist. 18:57
ggoebel getting further compiling niecza on OSX 10.4. Now I'm getting 'mono --aot obj/Kernel.dll' exited with code:1 (pastebin.com/nrG4Kji1)
mberends dehierarchicalizationintrospectionist # copy, paste, copy, paste 18:58
jnthn gfldex: we scantily woman dressed use not should! 18:59
ggoebel phenny: tell sorear I get a "Bus error" executing xbuild on osx 10.4 with mono 2.6.7... which goes away with a downgrade to 2.6.4
phenny ggoebel: I'll pass that on when sorear is around.
jnthn
.oO( it's actually quite hard to write English in reverse polish notation... )
19:00
.oO( "ovip mam aj" is my favorite reverse polish saying... )
19:01
tylercurtis I think the commutativity and associativity of trait sum is more important. If roles flattened but role sum linearized instead of being commutative, roles would be significantly less useful, IMO.
jnthn Yes, that is also important too. 19:02
masak jnthn++ # real reverse Polish! 19:03
19:04 offby1 joined, _twitch left
tylercurtis I think that I'd prefer roles that didn't flatten to roles that linearized. Of course, roles that flatten and don't linearize are even better. :) 19:05
offby1 I'm playing with rakudo "Pisa" at the command line, and notice that (10 * 10).WHAT => Int(), as I'd expect, but (109999 * 109999).WHAT => Num, which is not what I'd expected. How can I force the multiplication to return an exact integer?
19:05 cono left
colomon offby1: you cannot 19:05
offby1 oh.
jnthn offby1: We don't have big-int support yet 19:06
colomon right now in Rakudo, Ints are limited to 32-bits of precision.
offby1 jnthn: oh.
bummer.
colomon (though occasionally 64-bits sneaks through on 64-bit machines.)
jnthn offby1: So if they overflow we promote 'em to Nums. That should change at some point.
offby1 ah well.
thanks
tylercurtis colomon: as long as you don't perform any actual operations on them.
19:06 offby1 left
pmichaud s/should/will 19:06
19:06 cono joined
ggoebel Found a niecza reference to mono AOT failures in irc logs at (irclog.perlgeek.de/perl6/2010-08-06#i_2670473) 19:06
penny tell sorear One more osx addition for readme... I got neicza to build without error using: xbuild /property:UseAOT=N 19:07
masak "that should change at some point" is in some ways a dangerous stance. we might risk ending up with a spec that says one thing, and a number of implementations that do another, simpler thing.
may it'd be better in that sense for Rakudo to die on int overflow. 19:08
jnthn masak: That fails the "being useful" test. :-)
gfldex ggoebel: you misspelled phenny
masak in some cases demoting to nums can be a lot less useful than giving fair warning. 19:09
ggoebel phenny tell sorear One more osx addition for readme... I got neicza to build without error using: xbuild /property:UseAOT=N
gfldex: thanks
success!
masak jnthn: it's not like you won't be able to represent large Nums under such a regime. just multiply by 1.0
colomon masak: nope, 1.0 is a Rat 19:10
masak oh, indeed.
well, .Num, then.
rakudo: say 5.Num.WHAT; say 5.Num 19:11
p6eval rakudo 928836: OUTPUT«Num()␤5␤»
masak rakudo: say 5.Num.perl
p6eval rakudo 928836: OUTPUT«5␤»
masak hm. wonder if that should be something else.
colomon .perl doesn't work well on numbers.
I believe that's already in RT 19:12
masak std: FIRST {} 19:14
p6eval std 32080: OUTPUT«ok 00:01 115m␤»
masak std: if 5 { FIRST {} } 19:15
p6eval std 32080: OUTPUT«ok 00:03 116m␤»
masak TimToady: shouldn't the first be illegal in a non-loopy setting, and the second always?
decommute &
19:15 masak left 19:19 wamba joined 19:22 Mowah left 19:26 tadzik left 19:27 M_o_C joined 19:31 jhuni left
gfldex $gfldex.blog.post('gfldex.wordpress.com/2010/08/22/cal...perl-6/'); 19:31
dalek odel: 98196e3 | jnthn++ | dotnet/ (2 files):
Stash capture in current context. Also fix a viviself code-gen bug.
19:34
odel: 7d9fec6 | jnthn++ | dotnet/runtime/Metamodel/SharedTable.cs:
Fix bug noticed by mberends++.
odel: a389552 | jnthn++ | dotnet/ (7 files):
A fresh start at prototyping the new multi-dispatch, after discussions with TimToady++. Nothing working yet, but this starts us storing the candidates per scope and stubs in some logic for us to go looking for them. Needs a first crack at lists before we can make this work at all, though.
19:36 tadzik joined 19:44 patrickas joined
patrickas Ola! 19:45
tadzik hello! 19:46
patrickas tadzik: what's up? 19:47
do you have a page with the speed tests you were doing ? I was curious about the tests and the pseed improv for each one
tadzik patrickas: fine, just updated/updating my system :) 19:48
patrickas s/pseed/speed/
ggoebel Are announcements for development releases of Rakudo gone by the wayside now that R* releases are coming out? I.e. there is no release announcement for rakudo development release #32 at www.rakudo.org 19:49
tadzik ggoebel: only Star will be announced now
it's the main Marketing Hit now :) 19:50
jnthn ggoebel: The compiler releases are just announced on the perl6-compiler mailing list now; the Star releases will be announced more widely, as tadzik mentioned. 19:51
ggoebel: Trying to avoid confusing people with too many release announcements. :-)
patrickas jnthn++ (blog post), can't wait for all the goodies you'll be working on to land :-) 19:52
tadzik a blog post?
jnthn: mind sharing a link? 19:57
moritz_ planetsix.perl.org 19:58
tadzik thanks moritz_++
jnthn tadzik: 6guts.wordpress.com/2010/08/22/raku...oad-ahead/
oh, also where moritz_++ said :-)
moritz_ planetsix is a must-read for 6ers :-) 20:01
jnthn Aye 20:02
dalek odel: eae223f | jnthn++ | / (4 files):
Add a first cut of a P6list representation and a list sub that makes one (hardcoded rather than in the setting for now). Stub in NQPList in the setting; expect we'll base NQPArray on this representation too.
20:04
odel: e1bf4d3 | jnthn++ | dotnet/compiler/Actions.pm:
Name fix. Seems that we now manage to build per-scope candidate lists.
20:07 jaldhar left, jaldhar joined 20:11 masak joined
tadzik jnthn: nice post :) Though, I'm curious about one thing. You mention putting some things into compile time when possible. I remember Allison Randall's Parrot talk, when she said that the way to optimize dynamic languages is to make them more dynamic, rather than more static. How does it go with your approach, can I see your opinion here? 20:13
masak was that allison's point? I'm not sure it was... 20:15
tadzik she mentioned that, she was also talking about late evaluation and stuff. I remember it for I was quite suprised with it
masak I think one of the things in Perl 6 that might be slightly revolutionary is a kind of dynamic-when-necessary/static-when-possible thinking. 20:20
a bit like the grammar engine switches between declarative and procedural behind the scenes, static and dynamic bits might be interchanged behind the scenes as well. 20:21
patrickas tadzik: sorry I got ditracted ... yes I read the post on planetsix too .... 20:23
jnthn tadzik: I think the "work done at compile time is work that doesn't need to be done at runtime" mantra still holds up, and a lot of what I'm advocating is generating better code when compiling our dynamic language rather than pushing the language itself in a more static direction. It's true that making information available to the runtime to let it do dynamic optimization is a good think, and I'm not proposing we take that information away (as if we could anyway, si
*good thing 20:24
masak 'anyway, si'
truncated.
jnthn ", since everything is runtime introspectable in Perl 6).
Everything is a slight exaggeration, but a heck of a lot is. :-)
masak you tl;dr people should either adapt to IRC or, you know, write emails. :P
jnthn masak: I joined the Twitter School of Brevity this year, I'm trying. :P 20:26
masak omit needless, you know, words. :) 20:28
jnthn tadzik: Yes. No.
;-)
masak heh. :) 20:29
patrickas often needed words.
masak patrickas: accidentally? :)
jnthn The *whole* words?
patrickas maska: just not this time :-p
masak you accidentally my nick, too :P 20:30
tadzik :)
patrickas there must be a bug in my tab completion :-P
20:31 cheeps joined
masak for some reason that made me think about routine protos again. strange association. 20:32
20:34 ggoebel left
jnthn looks forward to runtime pls 20:35
tadzik I see proto, pls, but I guess it's not about module installation :)
masak I think that was the attempted pun. :P 20:36
tadzik with #perl6 came #pun6 20:37
masak well, we do have a tradition of optimizing for pun in here.
tadzik -Opun 20:38
jnthn Yeah, we're very -Opun to them.
masak haven't had any punic wars yet, though.
tadzik but we have puntastic conversations 20:39
masak yeah, they're punderful.
sorear good * #perl6 20:44
phenny sorear: 18:55Z <ggoebel> tell sorear two suggestions for niecza's readme: 1) state the minimum libiconv requirement (I installed 1.13.1 from www.gnu.org/software/libiconv/) and 2) Mention that mono v2.6.4 isn't just a recommendation (v2.6.7 is known to have problems on OSX 10.4)
sorear: 18:59Z <ggoebel> tell sorear I get a "Bus error" executing xbuild on osx 10.4 with mono 2.6.7... which goes away with a downgrade to 2.6.4
jnthn *, sorear 20:45
masak **, sorear 20:46
I have a question. is there a need for a special "package lexpad" containing 'our'-declared variables, or can the package lexpad simply be equated to the topmost lexpad in the package? 20:48
my suspicion is the latter, but I might be missing something.
pmichaud "omit needless^W words" 20:51
masak "needless" isn't needless. 20:52
pmichaud the package lexpad can't be the same as the top most lexical
module XYZ { my sub abc() { ... } }; # abc should not appear in the package
masak oh! 20:53
right.
so, separate one, then.
jnthn Additionally, lexpads are meant to be static by the time we hit runtime, and you're allowed to shove stuff into the package dynamically. Not quite sure how those two hold together.
pmichaud well, module XYZ { ... } creates a lexical XYZ entry that holds the package entries
jnthn Aha! 20:54
pmichaud and it's just a hash, really.
jnthn And the XYZ entry is a stash or somehting
OK
pmichaud and rakudo's use of Parrot NameSpace PMCs hopefully goes away at some point.
either that or the namespace PMCs just get anonymous internal names 20:55
jnthn *nod*
heh
Rakudo's development plan: "use of Parrot <INSERT FEATURE HERE> goes away" ;-) 20:56
But not the GC. :P
masak does inserting the package lexpad below the outside lexpad (and above the topmost lexpad) make sense? that way, Yapsi wouldn't need any special opcodes for doing 'our'-variable lookups. 20:57
hm, not sure that question has a boolean answer.
jnthn 0.5 :-) 20:58
pmichaud the package lexpad is an entry in the outside lexpad, yes.
I'm not sure it encapsulates the nested lexpad, though.
masak hm.
if it doesn't, I don't really see how it's visible from inside the package. 20:59
I've more or less convinced myself that sandwiching it between outer and topmost is what I want to do for Yapsi.
pmichaud our &xyz can make an entry in both the package and in the lexical. 21:00
this is what rakudo does now.
we have to do similar things for methods already, too.
masak sure. it makes entries in both.
and methods make entries in two places, too.
(as you said)
pmichaud by having entries in both, that's how it's visible inside the package
masak hm, indeed. 21:01
no need to have the package lexpad visible from inside.
pmichaud anyway, sandwiching might work too. haven't quite gotten to that point in Rakudo thinking yet. And it can get a bit tricky with multis.
masak no need to sandwich it in, either. it can sit in limbo outside the tree of scopes.
pmichaud oh, I know why it perhaps shouldn't (or should) be visible: 21:02
my $x = 'lexical'; module XYZ { say $x; { our $x = 'package'; } }
masak ...yes? 21:03
pmichaud I'm pretty sure "say $x" needs to grab the 'lexical' $x, not the one that might be "sandwiched" in a package.
masak of course.
that falls out from ordinary scope nesting and shadowing.
innermost block binds its lexical to the container in the package lexpad.
so, that speaks out against sandwiching. 21:04
pmichaud++
21:17 ggoebel joined
sorear hello ggoebel 21:18
21:29 patrickas left
sorear ggoebel: x86 or ppc? 21:35
pugssvn r32081 | mberends++ | replace plan *; with number of tests 21:36
masak the eradication of whatever for the betterment of statistics. 21:37
I'm thinking maybe there's a lesson to be learned here. though perhaps not.
jnthn There's cake, dammed cake and statistics. :-) 21:40
colomon mmmmm, statistics.
masak lol
I blogged our discussion of 'our' scoping. use.perl.org/~masak/journal/40511 21:41
jnthn: by the way, I made pizza today. trying to recreate the one I had in Bologna.
jnthn masak: How did it work out?
masak better than I had feared. I know which knobs to tweak next time. 21:42
(it was good)
(but not the same)
21:42 lasse_ left
masak Mozzarella di Buffala is a scary thing. all I know is that now the one I bought is gone, and I need, somehow, to get another one. 21:43
colomon it says something about what I've been cooking lately that I don't even know if I can get fresh mozz in town. :( 21:45
masak having arrived back home from Italy, that's one of the first things I found out. 21:46
turns out one place in town haz it.
21:46 lichtkind joined
colomon there's one place in town that probably does. 21:47
but I have to make it by their crazy single malt collection to find out.
;)
masak jnthn: btw, I think in the slide with the first code sample in www.jnthn.net/papers/2010-nlpw-metamodels.pdf , $area is missing a bang ('!').
colomon (they have three different bottlings of Talisker! I can't afford any of them!)
masak jnthn: or can that be left out nowadays? 21:48
jnthn masak: oh noes, you're right
masak jnthn: if it can, I hereby declare that sloppy coding :P
jnthn masak: I was distracted by the flava. :-)
masak :0
:)
jnthn That talk is 10 minutes of joking around and 5 minutes of actually talking about meta-models. :-) 21:49
masak that's a decent proportion.
jnthn :P
21:49 payload joined
jnthn Maybe I should submit it for OSDC.fr 21:49
masak thinks so 21:50
I'm thinking I might submit one 20min talk about Druid, and one 40min talk about Yapsi. 21:53
but not decided yet.
it's for a relatively non-Perl audience, so the Yapsi one might not be advisable.
masak sleeps 21:55
21:55 payload left, masak left
dalek odel: 2d77d23 | jnthn++ | dotnet/runtime/Runtime/ (4 files):
A little baby multi-dispatcher is born. It hasn't learned to do topological sorting yet, but it has the organs that will allow it to do so some day soon. :-)
21:55
22:03 wamba left
sorear watches jnthn race ahead 22:03
jnthn sorear: Heh. Though given I'm caching *nothing* at the moment, the runtime is hardly going to race anywhere yet. :-) 22:06
pugssvn r32082 | mberends++ | replace plan *; with number of tests S03 22:08
colomon mberends++ 22:09
mberends S32 or bust! 22:10
sorear jnthn: You just beat me to multi-dispatch. 22:14
22:14 Gothmog_ left 22:19 shade\ left 22:20 shade\ joined
pugssvn r32083 | mberends++ | replace plan *; with number of tests S03-S06 22:20
22:24 macroron left
pugssvn r32084 | mberends++ | replace plan *; with number of tests S09-S16 22:26
r32085 | mberends++ | replace plan *; with number of tests S32 22:31
r32086 | mberends++ | replace plan *; with number of tests integration/ 22:34
r32087 | mberends++ | replace plan *; with number of tests split.t 22:36
22:40 drbean joined 22:43 M_o_C left
dalek kudo: b958a10 | ++ | tools/test_summary.pl:
[tools/test_summary.pl] add S19 to the list of synopses being tested
22:45
mberends hmm, ack still finds many 'plan *' lines in t/spec, so they must be files that are not being called from spectest.data. I'll look at them later, jnthn++ has put me on a series of turtles to translate into Java first. 22:46
all: if cases of (tested > spec) arise, please let me know, I'm keen to get test_summary.pl as accurate and useful as possible. 22:49
22:51 hudnix joined, cggoebel joined 22:52 ggoebel left 22:59 jedai_ left, gfldex left, gfldex joined, jedai joined
jnthn Sheesh, even a crappy cache-less multi dispatcher beats the hell out of doing coercions. 23:09
cggoebel phenny tell sorear: x86... One more osx addition for readme... I got neicza to build without error using: xbuild /property:UseAOT=N 23:10
phenny tell sorear x86... One more osx addition for readme... I got neicza to build without error using: xbuild /property:UseAOT=N
23:11 lestrrat is now known as lest_away
jnthn cggoebel: You need a colon after the phenny 23:11
dalek odel: 8876bee | jnthn++ | dotnet/ (2 files):
Refactors to get signatures built in the right lexical scope (e.g. so they find the types in the right lexical scope).
23:16
odel: 10019ac | jnthn++ | common/NQP/NQPSetting.pm:
Start to add multi variants to the NQPSetting. Seems that even though we've no inlining or caching, we still manage to win over the coercions from before.
tylercurtis jnthn: I started working on a Go runtime for your prototype. Unfortunately, I can't figure out how to sanely write a Makefile for complicated Go projects. Also, Go doesn't support dynamic loading so I'm not really sure how I could load a setting anyway.
jnthn tylercurtis: Oh. :-(
tylercurtis Oh, well. It's been informative. :)
23:16 tadzik left
jnthn Well, I guess that approach...doesn't Go. :-/ 23:16
Yes, having to work out early on how to handle having a setting is kind of a man or boy test for targets. 23:17
23:17 orafu left
jnthn I wonder how much mberends++ will have at that point. :-) 23:17
23:17 orafu joined
sorear there's something kind of funny about an IRC discussion mediated entirely by tellbots. 23:23
jnthn Email is just not cool though. ;-) 23:24
sorear I thought the cool kids were using Twitter and SMS these days 23:27
23:27 Trashlord left
jnthn Oh, heck knows. I'm just not cool enough any more. :-) 23:28
tylercurtis ingy: Are you around?
23:34 moritz__ joined, moritz_ left
dalek odel: 3446bc2 | jnthn++ | dotnet/runtime/ (3 files):
Optimize a couple of hot-paths, also reducing in less code. :-)
23:53
sorear Maybe I should go back into the modules business. 23:58
dalek ecza: 16c4aaa | sorear++ | / (2 files):
A few tweaks for ggoebel

  (Who may not rest until he actually reports these bugs)