[00:00] merry arbitrary timezone&Interval(), * [00:01] happy new year to UTC ! [00:06] \o/ [00:18] *** pmurias left [00:18] What doesn't help my heightened fascination with Time today is the all-day (more like 2-day actually) marathon of Doctor Who on BBC America [00:23] its all about "amy's crack" [00:28] *** yarrak is now known as yarrack_logging [00:29] *** masonkramer left [00:29] *** masonkramer joined [00:30] afk [00:39] *** molaf left [00:50] * moritz_ wishes everybody attached to the Gregorian calendar a happy new year [00:51] * itz recommends listening to "Can - Monster Movie - Yoo Doo Right" [01:00] *** patspam joined [01:02] * colomon is even willing to wish people not attached to the Gregorian calendar a happy new year, no matter when it starts in their opinion... [01:03] moritz_: IO::Prompter (the colomon version) almost sort of works now. ;) [01:04] a new year starts at every instant. [01:07] *** felliott joined [01:08] *** patspam left [01:29] *** envi joined [01:39] *** qw3rty left [01:41] *** Eevee left [01:42] *** Eevee joined [01:43] *** redicaps joined [01:47] *** M_o_C joined [02:01] *** qiuhw joined [02:21] tpfwiki: (Herbert Breunung)++ | http://www.perlfoundation.org/perl6/index.cgi?perl_6_cookbook_tablet [02:21] *** qiuhw left [02:23] *** qiuhw joined [02:27] *** justatheory left [02:36] niecza: 9f058da | sorear++ | / (3 files): [02:36] niecza: [v6] Add a few unit tests for CgOp [02:36] niecza: review: https://github.com/sorear/niecza/commit/9f058da7d0 [02:37] niecza: 7336565 | sorear++ | v6n/cgop.t: [02:37] niecza: [v6] Actually add cgop.t [02:37] niecza: review: https://github.com/sorear/niecza/commit/7336565ca4 [02:38] *** molaf joined [02:41] *** M_o_C left [02:47] niecza: 3349c98 | sorear++ | v6n/ (2 files): [02:47] niecza: [v6] Translate Body and Unit [02:47] niecza: review: https://github.com/sorear/niecza/commit/3349c98e4e [02:48] *** dukeleto left [02:48] *** dukeleto joined [02:57] *** molaf_ joined [02:58] *** soroush left [03:00] *** molaf left [03:17] *** Trashlord left [03:18] *** kfo_ joined [03:19] *** mandragoran joined [03:22] *** kfo left [03:22] yay, just wrote a working MUD with my baby perl6 :D [03:22] *** pmurias joined [03:22] nice! [03:23] sorear: what's an xid? [03:23] good night [03:23] *** mandragoran left [03:24] colomon: thanks, to me new year is in spring, i think iranian zoroasterian got it right :) [03:27] https://gist.github.com/761532 [03:27] lichtkind: you have a new year's eve party in spring? [03:31] pmurias: some sort of :) even if im the only one celebrating :) [03:32] * pmurias dislikes all holiday celebration [03:32] * lichtkind understand, its mor a joyous recognition what is going on :) [03:36] and time passing away is not something i'm very happy about [03:37] pmurias: maybe if you render yourself mortal, in any other case life is just a free seek of joy [03:38] you believe you are immortal? [03:38] pmurias: depends you definition of "believe" :) [03:39] i would call it recognize [03:39] you recognize you are immortal? [03:39] yes [03:41] which doesnt protect from being bored or sad :) [03:42] * pmurias relises #perl6 is not a good place to discuss ocult stuff [03:43] * occult [03:44] pmurias: you mean realize? occult is as far as i know a certain knoweldge and practices, which is very loosly related to things discussed [03:46] my point was just enjoy life and don't worr its as acult as the well know song: don't worry be happy [03:47] lichtkind, you are not immortal , life is [03:47] according to a few trolls, we're already a cult :) [03:47] cult of the living camel :) [03:52] *** redicaps left [03:53] *** redicaps joined [03:56] to believe that a camel can turn into a butterfly you need a cult proper [04:07] good night [04:07] good night [04:07] :) [04:07] *** lichtkind left [04:14] hello #perl6 and happy new year to UTC-4 \o/ [if I'm not mistaken] [04:16] .oO( does anyone live in UTC(-3..-1), besides Iceland? ) [04:20] Parts of Santa's workshop and a few platoons of Tux's army, I suppose. [04:28] *** vastak left [04:32] *** am0c left [04:35] happy new year UTC-4:30 ! [04:54] *** felliott left [04:59] *** pmurias left [05:00] Happy New Year! [05:01] HNY, EST. [05:01] Happy new year UTC-5 [05:02] *** orafu left [05:02] *** orafu joined [05:24] *** gbacon left [05:30] *** x19290 joined [05:31] Hello. [05:31] I implemented and tested a class called FD. The code is [05:31] http://19290.net/2011-01-01/fd-class-a.t [05:31] FD is implemented with `has-a' relationship, so to get real file descriptor, [05:31] I must call FD.descriptor() method. [05:32] Can I rewrite the code with `is-a' relationship? [05:32] I mean Can I say `class FD is Int ...?'. [05:33] *** felliott joined [05:38] Happy New Year UTC+9 [05:41] *** felliott left [06:01] *** redicaps left [06:03] Happy new Year UTC-6! afk [06:10] *** [Coke] left [06:17] *** x19290 left [06:18] *** x19290 joined [06:57] *** redicaps joined [07:03] *** flatwhatson_ joined [07:04] #In Memory of Hans Reiser# We will always remember and cherish you. Your acts of selflessness will be passed down from generation to generation. The lies that dishonor your name will be vanquished. You were a true patriot and a lover of all men, all races, all religions. [07:09] hans is dead? [07:37] *** yarrack_logging left [07:37] good * #perl6 [07:39] x19290: I do not beleive so [07:40] phenny: tell pmurias an xid is the second element of an Xref object [07:40] sorear: I'll pass that on when pmurias is around. [07:44] *** qiuhw left [07:44] *** qiuhw joined [07:51] *** kanishka joined [08:01] happy new year from pst [08:02] Ditto [08:04] *** agentzh joined [08:25] *** agentzh left [09:08] :3 [09:28] *** Trashlord joined [09:51] *** nymacro joined [09:52] *** pothos joined [09:55] *** y3llow joined [10:08] *** qiuhw left [10:24] *** kanishka left [10:37] *** apeiron joined [10:49] * sorear out [10:56] *** rindolf joined [11:01] *** simon joined [11:04] *** wagnerf joined [11:08] good morning zebras [11:09] Hi moritz_ [11:09] moritz_: I packaged rakudo-2010.12 for Mandriva Cooker. [11:09] hi everyone, i'm trying to have a custom constructor for a class with some arguments [11:10] rindolf: great [11:10] but perl complains about "not enough positional parameters" [11:10] wagnerf: please show some code [11:10] http://scsys.co.uk:8002/77322 [11:10] i'm a bit new to perl6 so maybe i'm doing something wrong [11:10] *** knewt2 left [11:11] method new($capacity) { self.bless(*, :$capacity, whites => 0, blacks => 0) ; } [11:12] wagnerf: see http://perlgeek.de/blog-en/perl-6/object-construction-and-initialization.html [11:12] ok, I effectively saw something like that [11:13] is there no way to achieve it with BUILD ? [11:14] in any case, thanks for the hint [11:14] no. BUILD Is called (indirectly) by new, and new's signature is causing that error [11:15] ok [11:16] *** knewt2 joined [11:45] *** coldhead left [11:48] anybody knows where the github bug tracker is? [11:50] *** kaare_ joined [11:56] is there an easy way to do a deep copy of an object in perl 6 ? [11:56] not really [11:56] the problem is that deep cloning is user specific [11:57] for example if you had a singleton object [11:57] and there was a low-level cloning primitive [11:57] that would break the assumptions of the singleton class [11:58] well, for sure you need to be carefull with deep copy [11:58] but for many cases dclone was quite nice for me [11:59] ok, anyway, let's go with a copy constructor then [12:01] copy constructor sounds so C++ :-) [12:08] *** nymacro left [12:20] *** noganex joined [12:23] *** noganex_ left [12:25] *** timbunce joined [12:27] *** VXZ left [12:29] *** masonkramer left [12:30] *** timbunce left [12:31] *** matthias_ joined [12:35] *** kanishka joined [12:37] *** jhuni left [12:43] *** kanishka left [12:45] *** redicaps left [12:46] *** timbunce joined [12:59] *** kanishka joined [13:07] *** pmurias joined [13:07] sorear: what's an Xref object? [13:07] pmurias: 07:40Z tell pmurias an xid is the second element of an Xref object [13:10] *** am0c^ joined [13:18] *** nymacro joined [13:19] *** kanishka left [13:21] *** nymacro left [13:36] *** [Coke] joined [13:37] *** Axius joined [13:42] *** am0c^ left [13:44] *** snearch joined [13:48] hey all. I was wondering if someone could look over https://github.com/apeiron/perlfaq/commit/2bdb72e150d961831ad400a9b2f2e21b47fd8b3f before I send a pull request. I'd like to clarify the perlfaq entries covering perl6 to more accurately reflect current reality. [13:57] *** felliott joined [13:57] *** MayDaniel joined [13:57] * moritz_ takes a look [13:59] apeiron: the first answer seems to confuse the compiler ("Rakudo") and the distribution ("Rakudo Star") a bit [14:00] hmm, fair. [14:00] rakudo: say my $fv = "Hello", say $fv [14:00] rakudo f99d08: OUTPUT«Hello␤HelloBool::True␤» [14:00] does anyone have an example parser written with perl6 rules? one that buildan AST. [14:01] simon: for example the JSON modules [14:01] simon: see http://github.com/moritz/json/ Grammar.pm and Actions.pm [14:02] moritz_, I'll update it later today, and will post an updated commit URL. [14:03] apeiron: "most developers writing Perl 5 have no intentions of switching to Perl 6 [14:03] is that true? [14:03] IME [14:03] do you have data for that? [14:03] moritz_, thanks! [14:03] hm, wonder if the perl survey covers it? [14:04] I'd like a more neutral formulation, like being a perl 5 developer doesn't imply you want to change to Perl 6 at some point [14:04] "That said, Perl 6 has proven to be a fascinating research project for those doing Perl 5 development, [14:04] " [14:05] that's true, but I'd like to point out that for the PErl 6 folks it's not only a fascinating research project [14:05] It makes it sound a bit like Perl 6 is strictly a research project designed to improve Perl 5. [14:05] ... what moritz_++ said. [14:05] hmm [14:05] "As Perl 6 is a reinvention of Perl 5" [14:06] I'd just say "Perl" here, not "Perl 5" [14:06] *** Axius left [14:06] hmm [14:06] all right. [14:06] apeiron++ # thanks for asking and caring [14:06] of course. [14:07] I do not want to start more drama. [14:07] moritz_++ colomon++ # helping in that effort [14:07] *** timbunce left [14:07] apeiron: re switching to Perl 6 doesn't that depend on how good Perl 6 turns out to be? [14:08] * apeiron personally has too much invested in p5 [14:09] *** timbunce joined [14:14] apeiron: you have a lot of existing p5 code? [14:14] yes [14:21] *** soroush joined [14:32] *** am0c joined [14:35] *** redicaps joined [14:39] *** matthias_ left [14:55] *** timbunce left [15:05] *** roen joined [15:25] *** soroush left [15:31] *** wagnerf left [15:38] perl6: say $_ for ^2; [15:38] rakudo f99d08: ( no output ) [15:38] ..pugs: OUTPUT«0␤1␤» [15:38] ..niecza v1-35-gc9d17a7: OUTPUT«===SORRY!===␤Unhandled statement modifier for at /tmp/ZA_9XnQMAd line 1:␤------> say $_ for ^2⏏;␤Check failed␤» [15:39] Hi perl6, where can I find the description about this ^? [15:39] which part of "this" [15:39] ? [15:40] ^2> [15:40] s/>/?/ [15:40] rakudo works locally here [15:40] dunno why it fails on the server [15:40] I do perl5 for a living, I think it would be impossible for me to completely forsake it [15:40] ^ [15:40] but as perl6 improved I'm going to continue to write more and more cool things in it [15:40] ^ in "for ^2 " [15:40] improves* [15:41] redicaps: it's in S03 [15:41] moritz_: Thanks [15:41] ^$n is just a range from 0 up to (but exluding) $n [15:41] rakudo: say (^6).perl [15:41] rakudo f99d08: ( no output ) [15:41] there's something horribly wrong on p6eval [15:42] y2k11 bug! [15:42] *** MayDaniel left [15:42] right, ^ works locally on my computer [15:43] *** JimmyZ joined [15:45] *** M_o_C joined [15:46] rakudo: b570a2c | moritz++ | build/PARROT_REVISION: [15:46] rakudo: bump PARROT_REVISION for testing [15:46] rakudo: review: https://github.com/rakudo/rakudo/commit/b570a2c9da [15:49] *** _twitch joined [15:51] niecza: 9697d6c | pmurias++ | cl-backend/ (2 files): [15:51] niecza: [cl-backend] nam is turned into lisp and we use macros to handle the [15:51] niecza: opcodes [15:51] niecza: changed the test file to say "Hello World" [15:51] niecza: review: https://github.com/sorear/niecza/commit/9697d6c6a3 [15:55] sorear: what does the const opcode do? [16:03] rakudo: say $_ for ^2 [16:03] rakudo : OUTPUT«0␤1␤» [16:04] *** Patterner left [16:07] *** colomon left [16:07] *** Psyche^ joined [16:07] *** Psyche^ is now known as Patterner [16:07] *** JimmyZ left [16:15] *** [Coke] left [16:21] niecza: d5ec680 | pmurias++ | cl-backend/backend.lisp: [16:21] niecza: [cl-backend] say "Hello World" works [16:21] niecza: review: https://github.com/sorear/niecza/commit/d5ec680c17 [16:21] *** colomon joined [16:22] * pmurias has achived his first common lisp niecza milestone ;) [16:23] how hard can the rest be? :) [16:25] Er, "common lisp niecza milestone"? What are you trying to do? [16:25] * colomon is watching GameDay and struggling with IO::Prompter [16:25] he's adding a clisp emitter [16:28] \o/ [16:28] that sounds very cool. [16:28] TimToady: Damian has an idiom here.... {?//} [16:29] He seems to think this defines a sub which matches one argument to and then converts the match/no-match to a Bool. [16:29] It seems to fair very poorly in current Rakudo. [16:30] how is the block used? [16:30] I like the looks of it, but I don't understand any reason it should actually work in p6. [16:30] $extractor = {?//}; $retval = $extractor($input) [16:31] it's just a closure that returns True if its argument contains the string 'yes', and False otherwise [16:31] it oughta work, but I'm not sure // is strong enough to create a $_ parameter in a bare closure [16:31] just a boolified Match [16:31] (in rakudo) [16:31] I understand that's what it wants to be, but is it supposed to work? [16:32] rakudo: $extractor = {?//}; say $extractor("no way") [16:32] rakudo b570a2: OUTPUT«===SORRY!===␤Symbol '$extractor' not predeclared in (/tmp/SfqlnNSB4p:22)␤» [16:32] rakudo: my $extractor = {?//}; say $extractor("no way") [16:32] rakudo b570a2: OUTPUT«Method 'match' not found for invocant of class ''␤ in 'Regex::Bool' at line 6118:CORE.setting␤ in 'prefix:' at line 468:CORE.setting␤ in at line 22:/tmp/Bz0RWoe_mD␤ in main program body at line 22:/tmp/Bz0RWoe_mD␤» [16:32] rakudo: my $e = { ?// }; say $e('asyesfll'); say $e('no') [16:32] rakudo b570a2: OUTPUT«Method 'match' not found for invocant of class ''␤ in 'Regex::Bool' at line 6118:CORE.setting␤ in 'prefix:' at line 468:CORE.setting␤ in at line 22:/tmp/j1xoPSOUsk␤ in main program body at line 22:/tmp/j1xoPSOUsk␤» [16:32] rakudo: my $e = -> $_ { ?// }; say $e('asyesfll'); say $e('no') [16:32] yeah, that's the error I'm getting [16:32] rakudo b570a2: OUTPUT«Method 'match' not found for invocant of class ''␤ in 'Regex::Bool' at line 6118:CORE.setting␤ in 'prefix:' at line 468:CORE.setting␤ in at line 22:/tmp/jvsLQr4vsk␤ in main program body at line 22:/tmp/jvsLQr4vsk␤» [16:33] seems that $_ is not set [16:33] *** masak joined [16:33] ahoy, zebras! [16:33] rakudo: my $e = -> $_ { ?m// }; say $e('asyesfll'); say $e('no') [16:33] rakudo b570a2: OUTPUT«Method 'yes' not found for invocant of class 'Cursor'␤ in at line 22:/tmp/RPugJq_Lka␤ in 'Cool::match' at line 2588:CORE.setting␤ in at line 22:/tmp/RPugJq_Lka␤ in main program body at line 22:/tmp/RPugJq_Lka␤» [16:33] rakudo: my $e = -> $_ { ?m/yes/ }; say $e('asyesfll'); say $e('no') [16:33] rakudo b570a2: OUTPUT«Bool::True␤Bool::False␤» [16:34] rakudo: my $e = { ?m/yes/ }; say $e('asyesfll'); say $e('no') [16:34] rakudo b570a2: OUTPUT«Bool::True␤Bool::False␤» [16:34] well, that's an easy enough fix [16:35] well, you'll probably need <&yes> or some such [16:35] oooo, think that will work? [16:35] I wasn't able to figure out how to use the regexes he defined, so I've just been working around that. [16:36] \o/ [16:36] if you have a 'my regex yes { ... }', then <&yes> works [16:36] moritz_++ # this is why I wanted his help. ;) [16:36] \o/ [16:37] that will clean things up a bunch. [16:37] note that it doesn't capture by default [16:37] uhm [16:37] no tests :( [16:37] for IO::Prompter? nope. [16:38] rakudo: say 3.not [16:38] rakudo b570a2: OUTPUT«Bool::False␤» [16:38] rakudo: class A { has $.val }; class B is A { has $.val }; my $b = B.new(A{ :val("A") }); say "alive" [16:38] rakudo b570a2: OUTPUT«flattened parameters must be a hash or array␤ in main program body at line 22:/tmp/DYw5OTlNCI␤» [16:38] this should work, no? [16:38] I think it even used to... [16:39] alpha: class A { has $.val }; class B is A { has $.val }; my $b = B.new(A{ :val("A") }); say "alive" [16:39] alpha : OUTPUT«alive␤» [16:39] note that method true { ! $!failed } should likely be method Bool { ... } [16:39] alpha: class A { has $.val }; class B is A { has $.val }; my $b = B.new(A{ :val("A") }); say $b.val [16:39] alpha : OUTPUT«Use of uninitialized value␤␤» [16:39] alpha: class A { has $.val }; class B is A { has $.val }; my $b = B.new(A{ :val("A") }); say $b.A::val [16:39] alpha : OUTPUT«Use of uninitialized value␤␤» [16:39] * masak submits rakudobug [16:39] *** soroush joined [16:46] *** envi left [16:47] * colomon has just pushed an update to IO::Prompter which has a lot of the functionality working in current Rakudo. [16:48] * masak is happy to see colomon working on TheDamian's published module [16:48] masak: fwiw S12-construction/new.t contain tests for the Class{...} syntax in arguments to .new [16:48] I'm planning on adding it to the ecosystem later today. [16:48] *** snearch left [16:48] moritz_: yes, I said as much in the ticket. [16:49] great [16:49] I haven't actually read it :-) [16:49] I don't blame you, it's very new :) [16:49] *** icwiener joined [16:50] * masak is also happy to see apeiron++ stop by [16:51] masak, hey :) If you have any additional input to the github URL above, I'd be glad to incporate it. [16:51] I'll give it a read. [16:51] masak++ # thanks [16:52] masak: see this? https://gist.github.com/761532 [16:52] moritz_, masak: If you guys have any ideas about how to set up tests for IO::Prompter, I'm all ears. [16:53] apeiron: "In short, Perl 4 is the past, Perl 5 is the present, and Perl 6 is [the future]->[a sibling of Perl 5, incompatible but related and relevant]." [16:53] *** lukas___ joined [16:53] *** mak__ joined [16:53] apeiron: just want to make you aware that that edit destroys a nice triplet of three-things-of-the-same-category. [16:53] Hi [16:53] mak__: 08 Aug 19:20Z tell mak__ http://www.presentingperl.org/yn2010/not-quite-perl/ # a wee bit older, but should still apply [16:53] hmm [16:53] apeiron: I agree that describing Perl 6 as "the future" is not something neither of us wants. [16:54] nod [16:54] apeiron: fivers because they like Perl 5 and don't want to switch, sixers because they believe Perl 6 is here already. [16:54] right. [16:54] but perhaps the sentence needs one more push away from its original phrasing. [16:54] https://github.com/sorear/niecza/blob/master/docs/tracing.pod [16:54] *** _jaldhar joined [16:54] Something more along the lines of language families? [16:54] is there any way this can be done in rakudo? [16:54] *** jaldhar left [16:55] jasonmay: I see it, yes. what am I looking at? [16:55] colomon: the verification stuff can easily be tested by exporting the routines to a special tag [16:55] jasonmay: ooh, the MUD!? [16:55] like is export [16:55] jasonmay++ [16:55] is export ? Does that work now? [16:55] I think so [16:55] jasonmay: you need to throw this up on github like, right now! :) [16:55] Can trace calls be done in rakudo? [16:55] yep! I kind of cheated using http://github.com/jasonmay/io-multiplex-intermediary for all the socket logic [16:55] jasonmay: if you don't, I will. [16:56] anotehr idea. write a fakeIO class that suports .print and .get, [16:56] *** roen left [16:56] masak: I'm going to factor it out a bit first [16:56] jasonmay: sure, just don't forget to push it. [16:56] and pass instances as :in and :out to the prompt function [16:57] that's the most black-boxy thing you can do without crazy IO stuff [16:57] That's one heck of a good start, IMO. [16:57] apeiron: I know TimToady not-so-secretly believes that Perl 6 will eventually outdate Perl 5. but it may not be worth mentioning in the FAQ. [16:58] apeiron: I dislike the term "research project" almost to the point of wanting you to change it. almost. :) [16:58] apeiron: it sounds a bit like we don't use Perl 6 for stuff. [16:58] masak, others have pointed out it's a bit onesided and it'll be fixed. [16:58] good. [16:58] backlogging considered harmful :-) [16:58] :P [16:59] only if it's based on goto [16:59] as moritz_ pointed out, Rakudo Star is a distribution, not the implementation. [16:59] *** kanishka joined [16:59] colomon: once there are tests I'd like to replace the methods in the Result class with delegation [17:00] g/la 5 [17:00] whoops. [17:00] moritz_++ [17:00] apeiron: "Neither one is mutually exclusive with the other" -- I'm not a native speaker, but... this is the first time I've seen "mutually exclusive with" as a construction. [17:01] 348k results on google. [17:01] I retract my objection, then. [17:02] I noticed that my vim doesn't have perl6 highlighting. is there a syntax file that's not distributed yet? [17:02] apeiron: but I'm unsure what that final sentence is trying to say. [17:02] I'd say "The two are not mutually exclusive" [17:02] simon: vim-perl on github has one [17:02] and vim 7.3, for that matter [17:02] flussence, thanks. [17:02] Is there syntax highlighting for emacs? [17:02] apeiron: *of course* in a sense, Perl 6 is meant to be a "replacement" for Perl 5, in the sense that it's not built to be less powerful or worse. [17:02] https://github.com/petdance/vim-perl [17:03] apeiron: then again, that might be phrasing it too aggressively. [17:03] * moritz_ too slow [17:03] masak, hmm. How about "The two are complimentary, not mutually exclusive." ? [17:03] (or complementary, whichever one is right :) [17:03] apeiron: "complEmentary" [17:03] comple [17:04] thanks. [17:04] apeiron: yes, then I see better what you want to say. [17:04] :D [17:04] apeiron: maybe even add that the two communities benefit from each other through collaboration and friendly competition. [17:05] apeiron: by the way, since September my blog is a p5-p6 hybrid :) [17:05] masak, I mentioned that in one place with Moose; do you think it bears mentioning further? [17:06] apeiron: well, I'm talking about community relations more than module ideas. I don't know if it bears re-mentioning. [17:06] masak, hmm. Personally I see the two as results of one another, but I'll be explicit. :) [17:07] indeed. they are related and affect each other. [17:07] EOReview. [17:07] doh! yes | no prompt now accepts input, but is always Bool::True. [17:07] add more tests! :) [17:08] masak: aren't the Perl 5 and Perl 6 communities largely overlapping [17:08] ? [17:08] pmurias: I don't know. [17:08] pmurias, the perl5 devs I associate with most are dedicated to perl5. [17:09] pmurias: I get the feeling that people are mostly in one community, but have visited both. [17:09] many Perl 6 devs are Perl 5 users, but not Perl 5 devs [17:09] pmurias: I know the more I get involved with Perl 6, the more I learn about Perl 5 and get to respect the implementation, the CPAN modules, and the people of Perl 5. [17:10] hmm, perhaps I should clarify. When I say "perl5 devs" I mean "people writing perl5 code", not "people working on perl5 as in what you check out from perl.git" [17:10] *** VXZ joined [17:10] I mean the latter [17:10] could be a point of confusion [17:10] indeed, thus the clarification. :) [17:11] then what to you call the developers of Perl 5? [17:11] rakudo: class Point[$of] { method Str { "Point of $of } }; say Point["confusion"].new [17:11] *do [17:11] rakudo b570a2: OUTPUT«===SORRY!===␤Malformed package declaration at line 22, near "[$of] { me"␤» [17:11] rakudo: role Point[$of] { method Str { "Point of $of } }; say Point["confusion"].new [17:11] rakudo b570a2: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤» [17:11] rakudo: role Point[$of] { method Str { "Point of $of" } }; say Point["confusion"].new [17:11] try std [17:11] rakudo b570a2: OUTPUT«Point of confusion␤» [17:11] \o/ [17:12] sorry about the confusion :) [17:12] "porters" [17:12] :) [17:16] is there any way to do call tracing in rakudo? [17:16] apeiron: if there was a Perl 6 implementation with a decent p5-backcompat mode, p5-comparable speed, and access to CPAN, would you consider switching to Perl 6? [17:16] Tough question. [17:16] it's very hypothetical, I know. [17:18] I'm not sure if I should consider what you're saying as "if there was a Perl6 with the maturity of p5 and compatibility with it, would you consider switching?" [17:19] hm... maybe, but I can see a Perl 6 impl being *mature* without having those three things I listed. [17:19] Sure. [17:19] but yes, enough compatibility to not miss out form the great things of p5. [17:20] *** glow joined [17:20] That seems like "if there was something that was the best of both worlds, would you consider it?" [17:20] :) [17:21] well, we're not a two-pronged fork because we think it's *fun*. [17:21] problem with building rakudo [17:21] we're a two-pronged fork because we can't have the things we want in Perl 6 and the maturity of Perl 5 at this point in time. but we're building towards it. [17:21] build hangs after reaching src/gen/core.pm > src/gen/core.pir [17:22] mak__: how much RAM do you have? [17:22] mak__: likely massive swapping, not hanging. [17:22] 256mb [17:22] o.O [17:22] mak__: ^C [17:22] hmmm ok [17:22] mak__: step two: get more RAM... [17:22] :) [17:23] or I think I will work on niecza [17:23] that's an option as well. :) [17:23] *** wamba joined [17:23] or patch rakudo [17:23] the only thing is i don't how to solve that problem [17:23] it's probably not a one-patch problem... [17:23] oh [17:24] it's more of a design issue. [17:24] its basically putting that into one file [17:24] aye. [17:24] and there are clever people here aware of that problem. [17:24] don't want to discourage you, but... [17:24] can't that be broken up? I sure that would have thought about... or may im just you know ... saying [17:25] mak__: thing is, there are important reasons for keeping it in one file. [17:25] ok [17:25] mak__: specifically, that's how to get the scoping right. [17:25] but yes, it's an issue, especially as the setting grows. [17:26] not being able to install on system with lesser RAM's isnt good news [17:26] agreed. [17:28] *** molaf_ left [17:30] hmm will breaking that up require tinkering on all the .pm files that get appended to core.pm a step above? [17:31] I don't know what breaking that up would require. pmichaud made it sound like it was a non-trivial problem. [17:32] it's definitly less trivial than getting more RAM. [17:33] you could build on another system and then just install, right? [17:33] sure. [17:35] actually for a one time install, its not that painfull [17:35] but the regular change->build->test cycle is what becomes time taking [17:36] the only machine-dependent part is parrot, the rest of the build should be identical on any system [17:36] mak__: indeed. when I'm making a change to the setting, I usually build and test it outside of Rakudo for this very reason. [17:38] *** soroush_ joined [17:38] *** soroush_ left [17:39] Well I had asked earlier, does rakudo have call tracing? [17:40] *** soroush left [17:40] mak__: parrot has a -t flag for tracing. [17:40] ok [17:40] but I haven't used it, so you're on your own making it work. [17:42] *** _twitch left [17:48] Some fixes from many helpful folks here: https://github.com/apeiron/perlfaq/commit/15d63d6e1175cf9b276ccd38fcc430353718a9c6 If I omitted any suggestions given, it is unintentional, and I welcome corrections. [17:50] apeiron: very well-balanced and satisfactory. apeiron++ [17:50] If there are no corrections or additions, I'll send a pull request. [17:54] ah, one minor nit [17:55] whoops. Forgot one little change, the "Perl 6 is a reinvention of Perl" [17:55] That's now pushed. [17:55] *** dukeleto left [17:56] Is that development started in 2002 correct? [17:56] *** dukeleto joined [17:57] That date is in the original perlfaq; if it's wrong in my version it's wrong there. I'm happy to correct it if someone can point me to something official. [17:58] * masak checks the Parrot logs [18:01] 2002 seems right. [18:01] okay. [18:03] *** redicaps left [18:04] rediscaps, who just left, has blogged about Perl 6 laziness in Mandarin: http://redicaps.posterous.com/perl6-fibonacci-laziness [18:04] rediscaps++ [18:06] I'm not sure if people who don't own the repo can see this, but: https://github.com/briandfoy/perlfaq/pull/1 [18:07] apeiron: the Perl 6 development branch commenced in probably-2002 was abandoned in 2004: https://svn.parrot.org/parrot/tags/RELEASE_0_3_1/languages/perl6/README [18:07] apeiron: I'm mentioning this mostly for historical interest. I don't think it should be added to the FAQ. :) [18:07] okie, thank you. [18:08] *** mak__ left [18:09] but part of the actual answer to "it's been 10 years! why!?" is "turns out this is hard, and we've been starting over a few times on different stages of development". [18:09] right. [18:28] rakudo: class A { has @.b handles Array }; my $a = A.new; say $a.b.perl; $a.push(1, 2, 3); say $a.b.perl [18:28] rakudo b570a2: OUTPUT«[]␤Method 'push' not found for invocant of class 'A'␤ in main program body at line 22:/tmp/KrHSBT37lh␤» [18:28] aww. [18:28] * masak submits rakudobug [18:28] would have been really cool if that worked... [18:28] what should 'handles Array' do? [18:29] I don't think .push should ever call method Array [18:29] er. [18:29] if you mean that it should handle every method from class Array, then you should be using inheritance instead [18:29] er. [18:30] I don't even know where to start replying to that. [18:30] I'll just continue submitting my bug report for now. [18:30] what's the bug? [18:30] *** MayDaniel joined [18:30] *** gbacon joined [18:31] S12:1366: "If you say C then you get only those methods available via the C role or class." [18:31] ah. [18:31] by extension, I expected to get the methods available via Array. [18:32] I didn't know about that part of the spec [18:32] even so, delegation != inheritance. [18:33] people usually suggest the opposite: favour composition over inheritance :) [18:34] rakudo: role A { }; say A ~~ Abstraction [18:34] rakudo b570a2: OUTPUT«0␤» [18:36] rakudo: say Abstraction [18:36] rakudo b570a2: OUTPUT«Abstraction()␤» [18:37] it's a bit funny/odd: we don't have Class, but we have Abstraction. [18:38] where in rakudo is trait_mod: defined? [18:38] it's not in src/core/traits.pm [18:39] src/glue/handles.pm? [18:39] that seems to contain a helper class [18:40] but Action.pm +1924 says [18:40] make PAST::Op.new( [18:40] :pasttype('call'), [18:40] :name('&trait_mod:'), [18:40] $.ast [18:40] ); [18:40] so there must be a sub trait_mod: [18:40] and I can't find it :( [18:41] rakudo: say Mu.notdef [18:41] rakudo b570a2: OUTPUT«Bool::True␤» [18:42] me neither. [18:42] .notdef is no longer spec. [18:44] rakudo: say 5.^methods[0].WHAT [18:44] rakudo b570a2: OUTPUT«Code()␤» [18:46] * moritz_ tries to modify handles.pm even though he doesn't know if it gets called [18:53] argh, the pir::null__P trick with zavolaj stopped working [18:55] *** justatheory joined [18:56] *** Vlavv_ left [18:59] moritz_: don't know how much you're working on your planned exceptions grant right now, but -- it strikes me that one of the most important changes to be implemented is the ability to call &die with a real exception object, not just a Str. [18:59] masak: I think I've got handles $type to work, but a corresponding test fails... [18:59] ok. [18:59] masak: because the second type has a .new method [18:59] inherited from Mu [18:59] I don't think I understand. [18:59] so it overrides the default .new [18:59] oh! [19:00] now I do. [19:00] but isn't the default .new the one in Mu? [19:00] class A { has $.b handles B }; A.new # boom, because $.b isn't initialized yet [19:00] that sounds like a fairly general problem. [19:00] TimToady: ^^ [19:01] so the MOP tries to retrieve $!b before the instance of A is created [19:01] right. [19:01] obviously not what was intended. [19:01] which results in "Type objects are abstract and have no attributes, but you tried to access $!b" [19:01] since .new isn't supposed to be special, what is it we're missing in this picture? [19:03] *** ponbiki left [19:03] *** MayDaniel left [19:04] maybe handles Type should stop at looking at methods when it hits Cool|Any [19:05] good * #perl6 [19:06] *** kanishka left [19:06] hi, sorear \o [19:06] Hi sorear [19:06] moritz_: wasn't there a similar judgment about the default range of .^methods recently? [19:06] *** kanishka joined [19:07] phenny: tell pmurias a tuple like ["Test",15,"ok"] [19:07] sorear: I'll pass that on when pmurias is around. [19:07] masak: right, that's what made me think that way [19:07] moritz_: I don't like to build special cases into the type hierarchy. [19:07] neither do I [19:07] better suggestions welcome :-) [19:08] at least not when things started out as being first-class citizens and in principle overridable from within the language. [19:08] when I generate the new instance with .bless intead of .new, all is fine [19:09] *** amkrankruleuen joined [19:09] *** Vlavv_ joined [19:10] \o/ [19:10] phenny: tell pmurias The const op causes its argument to be evaluated once and stored in the constant table; it's semantically the same as the identity so you can ignore it for now [19:10] sorear: I'll pass that on when pmurias is around. [19:10] moritz_: I don't believe the test is wrong, I believe something like what you're proposing should be in place for C on types. [19:11] masak: ah, using a role as backend type fixes things too, because a role doesn't come with .new by default (unless puned) [19:11] nice. [19:11] * moritz_ runs a full spectest run [19:11] but, as I said, I think it's meant to work for classes as well. [19:11] { [19:11] class TypePseudoHash { has %!data handles Associative } [19:11] my $h = TypePseudoHash.new; [19:11] $h = 'c'; [19:11] $h = 'd'; [19:11] say $h.join('|'), 'c|d', 'can do handles + type name'; [19:11] } [19:11] hello and happy first o' the year #perl6 o/ [19:12] that's the test that passes now [19:12] uhm [19:12] say() shouldn't be in the test :-) [19:12] no :) [19:12] lue: hello to you, lue. I believe 2011 will be wonderful for Perl 6. [19:13] * moritz_ hopes 2011 will be wonderful for all of us [19:13] Hi lue [19:15] *** kanishka left [19:15] huh, writing more tests... they seem to fail [19:16] *** kanishka joined [19:16] *** Buccia`27C3 is now known as Bucciarati [19:17] *** ponbiki joined [19:18] need to do more debugging... which is quite slow, because each recompile takes minutes :( [19:18] I have an idea for a completely ambitious project this year. Give me a dilation-proof minute or two to make a New Year's post :) [19:21] *** kjeldahl joined [19:23] [er, once you factor out my computer's amazing ability to not do things in a sane amount of time] [19:28] nom & [19:28] *** masak left [19:33] *** pmurias left [19:36] *** pmurias joined [19:39] *** Kodi joined [19:41] The bug of RT #74610 is apparently a feature implemented for RT #62316. [19:42] Now, I'm thinking we had it better the other way, with too few arguments causing a fatal error rather than an undefined value, although, of course, we could use an error message more informative than "Null PMC access". [19:45] Kodi: "Null PMC access" is a Parrot segfault, having it occur always counts as a bug, whether the code in question should work or not. [19:45] Indeed. [19:51] ah, here's an interesting one: [19:51] rakudo: my @a; @a.push; @a.push; say @a:perl [19:51] rakudo b570a2: OUTPUT«===SORRY!===␤Symbol '@a:perl' not predeclared in (/tmp/BhLbRBkU1a:22)␤» [19:51] rakudo: my @a; @a.push; @a.push; say :@a.perl [19:51] rakudo b570a2: OUTPUT«"a" => []␤» [19:52] I think I understand what's going on, but the idea that you can do a push statement without actually pushing anything seems odd. [19:53] (found with a typo in my code, obviously.) [19:53] just like you can do a priint() without anything [19:53] can you? [19:53] you can't do a say without anything. [19:53] rakudo: print [19:53] rakudo b570a2: ( no output ) [19:54] guess you can [19:54] rakudo: say() [19:54] rakudo b570a2: OUTPUT«␤» [19:54] discovered this writing my stub for the first IO::Prompter test. :) [19:56] hello polarbears [19:56] hello coke can [19:58] *** gbacon left [19:58] arrrgh [19:59] *** gbacon joined [19:59] \o/ [20:05] pmurias: ping [20:05] moritz_: I've pushed the first IO::Prompter tests, if you get a chance I'd appreciate it if you could take a look and provide suggestions. [20:06] roast: a0d5cf6 | moritz++ | S12-attributes/delegation.t: [20:06] colomon: I'll take a look [20:06] roast: [delegation.t] handles TypeObject [20:06] roast: review: https://github.com/perl6/roast/commit/a0d5cf6b0b [20:07] thanks. [20:07] colomon: do you especially enjoy writing helper methods? :-) [20:07] no [20:08] but it is a bad habit from C++ days [20:08] then I might be able to shorten StubIO quite a bit :-) [20:08] I think I thought they would do more when I started writing them. [20:09] rakudo: f8ecdbf | moritz++ | src/glue/handles.pm: [20:09] rakudo: implement 'handles TypeObject' [20:09] rakudo: [20:09] rakudo: Works fine for roles, but classes have a .new method, which overrides the [20:09] rakudo: original .new method. But since the delegation is done before the [20:09] rakudo: instantiation, the attempt to access the attribute fails. [20:09] rakudo: review: https://github.com/rakudo/rakudo/commit/f8ecdbff5b [20:11] colomon: simplifications pushed :-) [20:11] dear heavens! [20:12] moritz_++ [20:12] That was way better than my simplifications. [20:12] 1 files changed, 8 insertions(+), 25 deletions(-) [20:12] that's the kind of patch I like :-) [20:12] also Perl 6++ [20:13] whoops, lost my second test in there, though. [20:13] (not pushed, colomon--) [20:13] btw you can write [20:14] my $stub = StubIO.new(input => ['3']); [20:14] and get rid of the .queue-input call [20:15] Not sure if I'm ready for that or not. :) [20:19] ack, you're right, that approach would be better [20:20] rakudo: c9bc28f | moritz++ | docs/ChangeLog: [20:20] rakudo: [docs] update ChangeLog [20:20] rakudo: review: https://github.com/rakudo/rakudo/commit/c9bc28f710 [20:21] blag toast! https://rdstar.wordpress.com/2011/01/01/2011-is-now-compiling/ [20:24] *** amkrankruleuen left [20:25] lue: you're completely insane. Welcome to #perl6 :-) [20:25] that... was almost exactly what I was going to say :) [20:25] *** amkrankruleuen joined [20:27] (but why GCC and not LLVM?) [20:31] I just happen to be more familiar with GCC, in the sense of knowing about it. I currently only know of LLVM as an acronym [I looked up the meaning once, but I forgot]. [20:32] Low-level virtual machine I think [20:39] I've actually mentioned the idea before, but I felt the new year would be a particularly nice time to announce my idea in earnest. [20:51] rakudo: my $list = List.new; say $list.WHAT; say +$list [20:51] rakudo f8ecdb: OUTPUT«List()␤0␤» [20:56] * colomon is completely stumped by the current IO::Prompter bug [20:57] curious: why does my perl6 take very long to load? [21:01] simon: because it builds the completely object hierarchy at run time [21:02] because parrot can't yet serialize and deserialize such complex structures [21:08] *** lambda-nil joined [21:08] masak++ # that extension to the 'handles' implementation was fun [21:08] rakudo: say {'be greater than 0'=> *>0 }.WHAT [21:08] rakudo f8ecdb: OUTPUT«Block()␤» [21:08] doh! [21:08] colomon: probably 'be greater than 0' => * > 0 [21:09] rakudo: say {'be greater than 0' => * > 0 }.WHAT [21:09] rakudo f8ecdb: OUTPUT«Block()␤» [21:09] or hash(...) [21:09] rakudo: say hash('be greater than 0' => * > 0).WHAT [21:09] rakudo f8ecdb: OUTPUT«Odd number of elements found where hash expected␤ in '!STORE' at line 5206:CORE.setting␤ in 'hash' at line 660:CORE.setting␤ in main program body at line 22:/tmp/x0St1_zWeu␤» [21:10] *** ponbiki left [21:10] rakudo: say hash('be greater than 0' => (* > 0)).WHAT [21:10] rakudo f8ecdb: OUTPUT«Odd number of elements found where hash expected␤ in '!STORE' at line 5206:CORE.setting␤ in 'hash' at line 660:CORE.setting␤ in main program body at line 22:/tmp/3J0x692UKa␤» [21:10] ooooo [21:10] closure bug? [21:10] rakudo: say hash('be greater than 0', (* > 0)).WHAT [21:10] rakudo f8ecdb: OUTPUT«Hash()␤» [21:10] whatever closure bug [21:10] blocks vs. hash distinction [21:10] rakudo: say {'be greater than 0' => -> $a { $a > 0 } }.WHAT [21:10] rakudo f8ecdb: OUTPUT«Hash()␤» [21:10] oh [21:11] I guess not bug [21:11] I guess bug [21:11] but different bug [21:11] => is specced to autocurry, no? [21:11] dunno [21:11] rakudo: say (a => *).WHAT [21:11] rakudo f8ecdb: OUTPUT«Pair()␤» [21:11] huh. [21:11] *** ponbiki joined [21:11] and the question is, does it level 2 curry [21:14] huh [21:14] I don't see an exception for => to not curry in the source code. [21:14] Where is jnthn when you need him? [21:15] => is syntactic, iirc [21:15] at least partially [21:15] anyway, changing the :must block to avoid this issue makes prompt work again [21:15] because it quotes the LHS [21:15] ah [21:16] this is not being a good day for Michigan football [21:16] *** Auv5 left [21:20] *** jest joined [21:22] *** ponpon joined [21:22] *** jest left [21:22] *** ponpon left [21:22] *** ponbiki left [21:23] *** ponbiki joined [21:23] afk, to think about what I've just said I'd do. :) [21:24] *** wamba left [21:44] rakudo: my $x = {?m/:i ^ \h* [ y | yes ]/}; say $x("yes") [21:44] rakudo f8ecdb: OUTPUT«Bool::True␤» [21:44] rakudo: my $x = {?m/:i ^ \h* [ y | yes ]/}; say $x("no") [21:44] niecza: say (foo => *).typename [21:44] rakudo f8ecdb: OUTPUT«Bool::False␤» [21:44] niecza v1-35-gc9d17a7: OUTPUT«Pair␤» [21:45] sorear: do you reckon that's what it's supposed to do? I was unable to find spec on the question. [21:45] *** masak joined [21:45] \o/ [21:46] wow, now I'm getting karma for submitting bug tickets that inspire people to hack on Rakudo? ;) [21:46] * colomon wants to o/, but is unable to work up the enthusiasm after those miserable football games. :( [21:46] moritz_++ # 'handles' patch [21:47] masak: how does 2nd order karma feels like? [21:48] gfldex: indirect. [21:48] :) [21:48] i somehow think 2011 will be a good year for karma in general [21:49] 2011 will be an excellent year for karma. [21:50] colomon: I can see arguments either way [21:50] karma++ [21:51] sorear: I almost commented after my question saying the same thing. [21:51] And I don't have strong feeling either way. [21:51] meta++ [21:52] * masak makes a ROADMAP for Yapsi [21:57] moritz_: you there? [21:57] oooo, IO::Prompter::Result issue, maybe? [21:59] Current issue is that :yesno input works fine up until the last couple of lines of prompt [21:59] sorear: pong [21:59] pmurias: 19:07Z tell pmurias a tuple like ["Test",15,"ok"] [21:59] pmurias: 19:10Z tell pmurias The const op causes its argument to be evaluated once and stored in the constant table; it's semantically the same as the identity so you can ignore it for now [22:00] I'm having a hard time understanding how this code ever worked in Rakudo. [22:01] might've been alpha. [22:01] right, it was alpha. It's never worked under ng [22:01] but it doesn't make any sense, either. [22:02] sorear: what does the name xref mean? [22:06] masak: I think I see why it's not working. But it kind of makes it seem like Damian was on crack, which can't be right. [22:07] I too would seek an alternate explanation than Damian being on crack. [22:07] https://gist.github.com/762045 is the code in question. This is how results are returned from prompt. [22:08] The thing is, $!input is either a string, an Int, a Real (was Num), or a Bool. [22:09] colomon: You're not anchoring to $, so that example would return true on inputs of 'yellow', 'yes sir!', 'yggdrasil', etc. [22:09] colomon: ah, you'd have wanted an explicit prefix:<~> in .Str? [22:10] well, maybe [22:11] *** M_o_C left [22:12] For sure, the .Str function should not be returning an Int. That's just crazy talk. [22:12] I agree. that feels wrong. [22:13] pmurias: cross-reference [22:14] but I don't understand what the heck IO::Prompter::Result is actually for here. [22:14] pmurias: xref nodes avoid direct references from one unit to another, because that caused serialization problems [22:15] It feels like it's trying to carry extra information in that "method true", but I'm not sure what that extra information is. [22:15] rakudo: a98c690 | KodiB++ | src/core/Cool-str.pm: [22:15] rakudo: [core/Cool-str] Made &printf and &sprintf fail noisily when given too few arguments. [22:15] rakudo: [22:15] rakudo: This fixes RT #74610. [22:15] rakudo: review: https://github.com/rakudo/rakudo/commit/a98c690fe1 [22:15] roast: 207e6b4 | (Kodi Arfer)++ | S32-str/sprintf.t: [22:15] roast: [sprintf.t] Changes for RT #74610. [22:15] roast: review: https://github.com/perl6/roast/commit/207e6b48db [22:15] roast: b25da6e | (Kodi Arfer)++ | S32-str/sprintf.t: [22:15] roast: [sprintf.t] Untodoed a passing test. [22:15] roast: review: https://github.com/perl6/roast/commit/b25da6ea1e [22:16] *** jest joined [22:17] colomon: should probably be 'method Bool' today, I think. [22:17] masak: yes, I think that's the bug I'm seeing. [22:18] *** coldhead joined [22:18] .true has been renamed to .so, but I usually overload .Bool [22:18] I think .so calls .Bool [22:19] but it's the .Str thing -- as combined with the Bool test -- that's got me scratching my head. [22:19] I think maybe whatever but True|False is what is really desired here. [22:20] pmurias: the first argument to subcall is a blob which contains argument passing data; it will be all 0s for positional-only calls [22:20] Is it possible to say something like has $.input handles (*); ? [22:21] *** Kodi left [22:22] *** ^jamie^ joined [22:23] rakudo: say $a = "Blue" but Bool::False; say $a.Str; say $a.Bool [22:23] rakudo a98c69: OUTPUT«===SORRY!===␤Symbol '$a' not predeclared in (/tmp/qPzdSeFQLD:22)␤» [22:23] rakudo: my $a = "Blue" but Bool::False; say $a.Str; say $a.Bool [22:23] rakudo a98c69: OUTPUT«Blue␤Bool::False␤» [22:23] \o/ [22:23] That's totally what is wanted here, IMO. [22:24] *** ^jamie^ left [22:26] And it makes all my tests pass. :) [22:28] moritz_, thanks for the parser example, although there's a bunch of perl 6 that I just don't understand yet. :) [22:29] what's a multi statement? it looks like an overloaded subroutine [22:29] simon: that's right [22:29] sorear: filename,subname,linenumber is not a unique identifier [22:30] simon: think of a 'multi' sub or method as a way to put parameter-handling logic in the signature rather than as code in the routine itself. [22:32] sorear: wouldn't it be sensible to replace the blob with a datastructure [22:32] sorear: if we want concise storage we could have nam in a binary format [22:32] masak, I've done a little Erlang, so it's not an unfamiliar idea. [22:33] good. :) [22:33] masak, in fact, I'm looking into Perl 6 grammars so that I can implement my own toy language for Parrot that does exactly this. :) [22:33] simon: sounds like fun. :) [22:33] exactly this = ? [22:34] pmurias, several definitions for the same function depending on input. overloaded functions a la prolog. [22:34] *** jest left [22:34] *** envi joined [22:38] pmurias: it's not line number [22:38] pmurias: it's an index into the unit's object table [22:38] pmurias: the name is strictly as a debugging aid [22:39] simon: well, Perl 6 doesn't have just that when dispatching. there's also the ordering of tuples of types of different narrowness. so 'multi foo(Int)' wins over 'multi foo(Numeric)' even though 42 is both Numeric and Int. [22:42] rakudo: my $a = Any but Bool::False; say $a.Str; say $a.Bool [22:43] rakudo a98c69: OUTPUT«Attempt to use rebless_subclass where the new class was not a subclass␤ in 'infix:' at line 7375:CORE.setting␤ in 'infix:' at line 605:CORE.setting␤ in 'infix:' at line 609:CORE.setting␤ in main program body at line 22:/tmp/j5rZOWVT83␤» [22:43] rakudo: my $b; my $a = $b but Bool::False; say $a.Str; say $a.Bool [22:43] rakudo a98c69: OUTPUT«Attempt to use rebless_subclass where the new class was not a subclass␤ in 'infix:' at line 7375:CORE.setting␤ in 'infix:' at line 605:CORE.setting␤ in 'infix:' at line 609:CORE.setting␤ in main program body at line 22:/tmp/vjFoICW8nj␤» [22:46] colomon: that should work, if you ask me. [22:46] oooo, Damian just e-mailed me an updated version of IO::Prompter. Time to scrap everything I've done... ;) [22:48] afk # moving to in-laws' for the remainder of today's bowl game experience [22:48] *** colomon left [22:51] *** masonkramer joined [22:56] * masak goes into Yapsi release mode [22:57] I just pushed doc/ROADMAP to the Yapsi repo: https://github.com/masak/yapsi/blob/master/doc/ROADMAP [22:57] comments of all kinds and denominations welcome. [22:58] sorear: i'm seperating CompilerDriver into bunch of classes like in mildew [22:59] how do you separate CompilerDriver...? [22:59] so that things don't get very hairy when adding another backend [22:59] yapsi: 6f6d074 | masak++ | / (3 files): [22:59] yapsi: [doc/ROADMAP] added [22:59] yapsi: review: https://github.com/masak/yapsi/commit/6f6d0740eb [22:59] masak: hi! [22:59] into Niecza::Backend::* classes with ->run and ->compile [22:59] and Niecza::Pass::* with ->run [22:59] sorear: hi. Yapsi release tonight :) [22:59] Niecza::Backend::* will only handle the nam parts, right? [23:00] yes [23:00] * sorear nods [23:00] it'll looks similiar to mildew plus optimalisation passes [23:02] sorear: sometimes I fear/fantasize that Niecza development will subsume Yapsi development... :) [23:02] pmurias: I'm thinking that Niecza::Pass::Beta and Optimizer::Beta &c have no business being separate [23:04] i'm trying to split it up into object that delegate the work to existing parts at first, but it would make sense to move the code into the pass classes [23:05] sorear: is the STD compiled to .NET usable? [23:05] *** qw3rty joined [23:07] *** qw3rty left [23:08] *** kaare_ left [23:17] pmurias: yes [23:18] so a bootstrap is a matter of porting the code from Perl 6 to Perl 5? [23:18] actually I'm doing it the other way around [23:18] I've just pushed https://github.com/masak/yapsi/blob/master/doc/announce/2011.01 [23:18] you're all very welcome to review and comment. [23:19] sorear: i've noticed you're starting from the backend [23:19] pmurias: i'm starting from the leaves of the dependency graph [23:19] hello again #perl6 o/ [23:20] how long will recompiling the compiler take after the bootstrap? [23:20] and how fast is niecza's output compared to perl5? [23:21] yapsi: 0e2548e | masak++ | doc/announce/2011.01: [23:21] yapsi: [doc/announce/2011.01] added [23:21] yapsi: review: https://github.com/masak/yapsi/commit/0e2548e1b2 [23:21] yapsi: 67e91fc | masak++ | doc/announce/2011.01: [23:21] yapsi: [doc/announce/2011.01] 2010++, oops [23:21] yapsi: review: https://github.com/masak/yapsi/commit/67e91fcc85 [23:21] pmurias: unknown. there's a large speedup term and a large slowdown term and they catestrophically cancel [23:22] what's the slowdown term? [23:22] the normal-ish Perl code in the middle end [23:22] and the speedup term? [23:23] STD's grammar [23:23] why is the nromal-ish code slower? [23:23] * normalish [23:24] because Perl 5 is highly optimized to run that sort of code [23:24] * lue reviewing Yapsi release announcement [23:24] * masak is curious what "normal-ish" means here, more in detail [23:25] masak: $a = $b + $c; $foo{$bar} = 1; etc [23:25] sorear: how slower is the normalish stuff 2x,10x,100x,1000x? [23:25] sorear: so, addition and hash lookup? :) [23:25] pmurias: I estimate around 10x [23:26] that's not that bad [23:26] pmurias: pure grammars (JSON::Tiny benchmark) are 40x faster; STD as a whole is 4x faster [23:26] masak: addition, hash lookup, conditional statements, list concatenation [23:26] niecza does sub calls *much* faster than Perl5 though [23:26] seems to me almost all list operations are important to optimize. [23:27] yes [23:27] what makes niecza slower than C#? [23:27] dynamism? what else? [23:28] pmurias: continuation passing style [23:28] * pmurias dreaded that [23:28] and containerization [23:28] CPS also causes the bad error messages to be *really* bad... :/ [23:28] *** jhuni joined [23:29] masak: CPS-aware backtrace generators help. [23:29] containerization we can optimize out in the long term [23:29] do we need continuations or just coroutines? [23:29] lue: release announcement look good? [23:30] pmurias: just coroutines [23:31] pmurias: but Perl6 coroutine semantics require a cactus stack; ({ my $*X = 1; ($*X++ for 1..*) }).() [23:31] Looks good, but I still can't have the *appropriate* amount of fun :) [23:31] :) [23:32] * masak neither [23:32] pmurias: there's also stack frame introspection, and threads [23:32] did you catch my blag toast? [23:32] lue: yes. intriguing. best of luck. [23:38] lue: maybe I never told you; part of the inspiration for Yapsi was Andrew Shitov's implementation of a Perl 6 parser using a C++ Boost grammar, with C++ as a backend. he could make some simple scripts run orders of magnitude faster than Rakudo. [23:38] as I recall, he was using it in production, too. [23:38] sorear: http://tirania.org/blog/archive/2009/Apr-09.html [23:41] sleep& [23:41] pmurias: too unportable, too heavyweight, and they don't help anyway because I need a cactus stack for threading [23:41] sleep well [23:41] *** rindolf left [23:41] release announcement sent to p6c. [23:42] lue++ for giving it a review beforehand. [23:42] * masak makes a blog post, too [23:43] *** pmurias left [23:44] * lue wonders if he can get away with -Ofun in his planned frontend [23:45] *** patrickas joined [23:47] *** colomon joined [23:47] o/ [23:48] colomon \o [23:52] colomon: great progress with io-prompter, I did hit most of those bugs when I was porting it to master when it was released! I kind of feel bad i could have avoided duplication if my effort were more "public" [23:53] Ah, turns out Damian had it ported too. [23:53] I'm looking at his port right now. [23:53] Mostly I want to make sure we all have easy access to a version that works. [23:53] patrickas: congratulations! you've just discovered "release early, release often" :) [23:53] I'm not 100% happy with his Perl5 version [23:54] (and fixed one bug in it already) [23:54] you'll notice that I had my version up on github before I'd made a single change to it. ;) [23:54] masak: I did release as early, my version is on github since july [23:54] oh. [23:54] maybe "publicised" was a better word than public [23:55] patrickas: you need a PR department. :) [23:55] oh [23:57] blog post is published: http://strangelyconsistent.org/blog/yapsi-201101-released [23:57] * masak stands down release mode [23:58] colomon: I hadn't done much anyway, its just that one of your patches from today is the same one as the first part of this one (https://github.com/patrickas/io-prompter/commit/2c08a0300237ce6ab85cef538f0dcd6be25e5c87) and I remember it took me quite a while to figure out what was goind wrong! So i felt I kinda could have spared you the waste of time [23:58] Eh, I learned as I was doing it, so it's not a waste. [23:59] :-)