»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:00 replore joined 00:18 fgomez joined 00:20 replore left 00:28 silug left 00:29 spider-mario left 00:47 replore joined, replore left 00:57 mucker left 01:04 cognominal left, cognominal joined
MikeFair I have a rule stat_or_block { <block> | <statement> } -- I've been using say messages to watch as it's being parsed. What I've noticed is the <statement> part of the rule never seems to get tested 01:06
any ideas?
TimToady whitespace messing up LTM maybe 01:08
MikeFair LTM?
TimToady longest token matching
MikeFair Well I'm getting a "can't parse" failure
01:08 replore_ joined, replore_ left
MikeFair so clearly the <block> is failing 01:08
Would whitespace cause the <statement> not to be evaluated? 01:09
TimToady I can't vouch for rakudo's parser in that regard
but | should be a parallel LTM-ish match, not sequential like || 01:10
MikeFair I've seen references to a Grammar Tracer thing of some kind, is there something like that I can use in Parrot's Compiler Toolkit
TimToady oh, what are you using to parse?
MikeFair TimToady: oh sorry about that, I'm using parrot
TimToady I have even less to say about parrot
that almost certainly does not do LTM correctly
01:11 benabik left
MikeFair if 1 then say 1 01:11
So where can I read up on how the LTM is getting created? 01:12
It's going through all the various <block> matches, then just giving up 01:13
TimToady parrot doesn't do LTM
I only know how Perl 6 works (or is supposed to (or I'm supposed to)) 01:14
MikeFair nods.
Well Parrot is using NQP
Grammar rules 01:15
At least that's the part I'm using
atm
if I reserve the order of them and do <statement> | <block> I get a different error :) 01:16
(the one I'm expecting)
01:18 benabik joined
MikeFair I'm off for a bit! 01:18
bbl
TimToady: thx!
TimToady was in a funny jetlag state earlier today--could program, but couldn't backlog... 01:20
TimToady tries again to backlog
01:26 _jaldhar left 01:29 replore joined 01:30 replore left 01:35 _jaldhar joined 01:41 benabik left 01:42 benabik joined 01:53 FROGGS_ left 01:55 dju left 02:00 jeffreykegler joined, dju joined
jeffreykegler I have a question about semantics in grammar rules 02:01
S05 says you set the AST element via make 02:02
But looking at STD.pm, it seems to be almost never used
I'm thinking in terms fo the traditional parse tree semantics -- you know, parent takes child as arguments .... 02:03
and passes result up to its own parent ...
benabik STD.pm doesn't really generate an AST, just a parse tree.
(IIRC) 02:04
jeffreykegler In other words, I'm looking for the semantics in the wrong place? It's not in STD.pm
TimToady it does generate an ast, but its action routines are written in Perl 5 (in viv), so it just emulates make, without using that feature of Perl 6 directly 02:05
jeffreykegler OK
TimToady and I believe that niecza just uses the match tree directly
despite being STD-based
jeffreykegler I'm trying to imitate Perl 6 for the semantics of "Sixish", a Perl 6-like Marpa interface
How might I say that the semantics are in routine &do_x()? 02:06
TimToady STD is in kind of a funny place, because it's trying not to commit to any particlar AST representation
jeffreykegler <&do_x()> ?
02:07 FROGGS_ joined, xdbr left
TimToady STD uses an Action package that dispatches to the same name as the rule that is being reduced 02:07
jeffreykegler Which explains why my study of STD.pm from the semantics point of view was so frustrating
TimToady: Aha!
TimToady which actually doesn't scale terribly well to derived grammars... 02:08
jeffreykegler So the semantics is by rule name, and is elsewhere
TimToady we'd need to derive Action modules in parallel with the languages, but we don't try to
or somehow derived grammars need to give their rules a derived identity 02:09
jeffreykegler So right now, semantics is separate from grammar and the connection is made by rule name
TimToady yes
though, in fact, derived grammars are represented in P5-land with nested packages, so the info is kinda there 02:10
jeffreykegler I'm kind of torn -- semantics often looks cool right next to the rule, but ... 02:11
it does clutter, and it's not clear which is nicest
TimToady it tends to prevent the grammar from being re-used for other purposes though
ingy seen mberends
aloha mberends was last seen in #perl6 18 days 1 hours ago joining the channel.
jeffreykegler I take it's your opinion that as a general matter, it is best to separate the two 02:12
02:12 replore_ joined
TimToady for the STD5 grammar (a Perl 5 grammar I've been working on), it's partially derived from STD, and it seems to have worked out okayish 02:12
albeit with a bit of copy/paste for some rules 02:13
the spec intends 'make' to be useful from within the rules, though rakudo at one point interpreted it as only in action rules; dunno if that's still the case
so as usual we try to have it both ways 02:14
at the expense of not having AST building be the default in the main grammar
since we want to degrade gracefully to simple match trees
if you have any ideas for how to make that transition more gracefully, I'm all ears 02:15
jeffreykegler So I could just express the semantics via rule name and :dba
TimToady well, :dba is primarily for error messages 02:16
I seem to recall some other use once, but it has slipped my mind what the details were
jeffreykegler Is there a more appropriate way of aliasing for semantic purposes than :dba ?
TimToady or whether we still use :dba for something else
02:17 replore_ left
jeffreykegler TimToady: Re the transition, I don't think I'd have any useful ideas 02:18
As my questions indicate, I'm trying to learn to feel my way through this area 02:19
TimToady :dba is primarily intended to be enlightening to the recipient of the error message; dunno whether that's compatible with semantic markup that is interesting to the writer
well, all of us are still trying to learn our way through this :)
diakopter (some several times over) 02:20
MikeFair TimToady: What's the transition you're thinking of?
TimToady erasing the boundary between regex and grammar
we've made that fairly seemless on the parsing end of things, but it's a bit clunky to add in an AST still 02:21
jeffreykegler OK. I won't use :dba, because I don't want to have the Sixish syntax have jarring differences with that of Perl 6
Perhaps I might as well make up my own adverb, such as :action("action
TimToady the colonpair notation is meant to be an extension mechanism in any case, so you can make up your own
MikeFair TimToady: I'm working on building up to establishing the AST as a service and using zmq's zero-copy mechanisms as a sort of in process SOA 02:22
02:23 orafu left, orafu joined
MikeFair TimToady: I don't know if it will work, but mentally it makes me completely abstract the the concepts of Grammar and semantics 02:23
TimToady well, certainly there are aspects of it that may be amenable to inversion of control 02:24
MikeFair TimToady: Eventually it will give me an execution pipeline 'Grammar parser thread' <-> 'AST'/language binging <-> Execution module
sorear TimToady: niecza uses "make" heavily in the action package
TimToady but as usual it comes down to a question of identity
MikeFair TimToady: SQL in postgres has the same sort of idea, the postgres engine specifically executes a query plan, which is the same thing as AST like thing 02:25
So there's clearly a pattern
TimToady mostly I just try to get this stuff close enough that smarter people can take it in various directions :) 02:26
MikeFair TimToady: identity how? I think of it like a web session, where the AST side of things will track a cookie for each "Grammar" socket/client 02:27
TimToady: Every time a particular client (a Grammar parser) makes an API call, the "current context" of that call will be known 02:28
At least I've failed in every attempt to explain to myself why it's not a good idea, and ZMQ will make the network part pretty simple 02:29
TimToady there are usually several kinds of context floating around, and it's not always trivial to know which parts contribute to a given entity's uniqueness 02:30
(that's Tagmemics 101, basically) 02:31
MikeFair TimToady: Another approach I was considering was registering named sockets, which we can also do. 02:32
02:32 Circlepuller_ joined
MikeFair ack -- interuptted 02:32
bl
bbl
TimToady linguistically speaking, that's the whole etic vs emic distinction; which features contribute to identity, and which are merely epiphenominal in this current language 02:33
02:34 replore_ joined, Circlepuller left
jeffreykegler TimToady: I went off & tried to look up "colonpair" notation 02:34
I'm not really sure what you meant 02:35
diakopter the replacement for the fat arrow pair
:key(value)
jeffreykegler diakopter: why "colonpair"? there's just one colon :-) 02:36
TimToady see S02:Adverbial_Pair_forms
jeffreykegler TimToady: Thanks, will do
diakopter the colon introduces the pair
TimToady and a colon is a pair of dots :) 02:37
jeffreykegler TimToady, diakopter: OK, sure :-)
02:38 replore_ left 02:45 tokuhiro_ left 02:50 replore joined
diakopter watched the first episode of the new documentary on the life of the conjoined twins who share a whole body. they had a documentary when they were 16; now they are 22 02:53
it ... boggles the mind, continously. 02:54
somehow they both control most of the body; the head on the right controls the arm on the right and the head on the left controls the arm on the left. it showed them dribbling a basketball back and forth between hands, *without*looking* 02:56
sorry for the OT. tlc.howstuffworks.com/tv/abby-and-b...any/videos 02:59
03:05 erkan left 03:06 popl left 03:09 jeffreykegler left 03:12 erkan joined, erkan left, erkan joined 03:15 immortal joined, immortal left, immortal joined, erkan left 03:19 replore left 03:23 replore joined 03:47 replore left
MikeFair TimToady: Still about? 04:38
If I'm understanding the emic and etic descriptions right then emic => class and etic=> interface that class implements 04:42
It's also really well described by the Entity Framework pattern that real time video games have come up with
04:43 kaare_ joined
MikeFair They break their framework into multiple "Systems" (which I think of as the verticals dimension), and orthoganal to the "Systems" are "Entities" (which I consider the horizontal dimension) 04:44
04:45 telex left
MikeFair There's on other piece I can't recall the name of which is basically the equivalent to an "Interfaces"/"Types"/"Class" like thing 04:46
An entity is a specific instance of an object that binds together a specific set of Interfaces which the "Systems" require from the Entity in order to perform their work
An "Entity" instance might actually have bits and pieces of itself stored all over the place in each of the various "Systems" because it's the Systems that know how to keep track and operate on the Entities values 04:48
If two "Systems" are operating on the same value they can synchronize information via the instances given Entity ID 04:49
It's really easy to see how this works in a complex 3D game like system because each "Entity" really has many domains of data, for instance, the sound track / sounds the object makes have almost nothing to do with the visuals 04:50
Just like the visuals have almost nothing to with say the entities AI algorithm 04:51
But all three of those systems have to share the "Point in 3D space" information about the same object 04:52
04:56 telex joined
MikeFair So the theory I have for the programming I want to put into the langauge I'm working on fits really nicely with all these ideas because I'm working on treating the "threads" of a program as part of a distributed system 04:58
So that gives my execution model. Each class is a separate thread that keeps track of the properties for instances of its objects 05:00
(a factory)
but also a worker
Now these of these "vertical" threads can be chained together "horizontally" via message queues (using libzmq) 05:02
Now when I say "thread" I say it because it creates the right image for separation, but likely it won't be implemented that way (at least not until I move it onto the GPU :) ) 05:03
Now since I want to allow anyone to be able to program for this system, rather than making them learn a new language for this system, I'm planning on using native language-like syntax 05:05
05:07 telex left
MikeFair The first language is English, implementing/copying the constructs from the xTalk family of languages (like hyperCard/SuperCard and others) 05:08
because they've been at this for so long, they've got some really good ideas/cheats/experience in what it's like to use the english language to do this 05:09
They don't try and be extensible with the language though and that's where Perl6 can make all the difference
Perl6 is basically all the semantics of xTalk, with none of the syntax
(Well Perl6 is missing a couple, like messagePath for instance, but that can be added) 05:10
05:10 telex joined
MikeFair TimToady: So that's it - that's why I'm here, and why I'm really keen on making sure the Grammar/Actions present a really clean abstraction layer, so that other native languages can be ported 05:11
TimToady: So summing all that up into a simple recommendation of how to go about simplifying/cleaning up the separation, imagine there's a programming language that has a structured, well defined, english-like almost natural syntax 05:13
What can be described in English, can also be described in other native languages, at least for the purposes of programming
So the framework/API needs to be such that a small set of contirbutors can "localize" the syntax of the language into their native tongue 05:14
Wash/Rinse/Repeat for other DSLs (like SQL) 05:15
moritz good morning * 05:18
MikeFair TimToady: I didn't recognize that this was really that import and core design goal for Perl6 so I'm glad you said something about it, otherwise i'd just have kept quite. Thanks 05:19
moritz: Hey there! Good morning
like my little tirade? 05:21
moritz I haven#t backlogged yet 05:23
MikeFair ahh :) 05:24
05:33 isBEKaml joined
isBEKaml OHHAI, pugs-compat cabal build with GHC 7.4.1 shows failure. Seems to depend on haskell98 but is unable to locate it. gist.github.com/3595096 05:34
05:45 drbean joined
isBEKaml slow day today. =) 06:04
sorear huh. I *just* received the 2012.08 p6l announce 06:05
isBEKaml For anyone that's interested in my Pugs issue, it was due to incompatibilities between base and haskell98 packages. I think the way to fix this would be to migrate code using IO module to using System.IO module.
sorear I got two copies of it on the day of
isBEKaml (that's in pugs-compat)
hello, sorear
sorear hello, isBEKaml. 06:06
isBEKaml how's things with niecza? 06:07
sorear (were you at yapc::eu?) 06:14
isBEKaml No, I have never been outside country. :) 06:15
sorear niecza is losing -Ofun for me, so I'm probably not going to be doing too much with it; my Perl 6 involvement in the future is likely to be with the Rakudo/NQP porting efforts
I have this idea that you're German
oh, mumbai
06:15 fgomez left, fgomez joined
isBEKaml Oh, I'm sad to see that - I have been trying to follow niecza with some interest (time permitting) 06:16
Yes, I'm from India
06:16 PZt left
isBEKaml I think changing direction towards Rakudo/NQP to CLR environment won't hurt anything. 06:17
That's an equally worthy goal
sorear niecza is really feeling the pain of some design decisions I made in early 2011
moritz fwiw rakudo has had several such pain points too 06:18
which lead to some of the famous rewrites
isBEKaml Like ? From what I have seen, no project every goes smoothly without any rewrites.
s/every/every/ 06:19
gah, ever! (muscle memory, sorry)
sorear i've been on IRC for 7 years, I'm pretty good at reading mangled text 06:20
isBEKaml hello, moritz
FROGGS_ morning
sorear hello FROGGS_. also, moritz
isBEKaml o/ FROGGS_
moritz \o
n: constant name = 'a'; sub ::(name) { 42 }; say a() 06:21
p6eval niecza v21-1-ga8aa70b: OUTPUT«42␤»
sorear n: BEGIN my $name = 'a'; sub ::($name) { 42 }; say a()
p6eval niecza v21-1-ga8aa70b: OUTPUT«42␤»
FROGGS_ do I have to wrap them with a sub? can't I import a constant directly from a module? 06:25
sorear importing constants from modules is allowed by spec 06:26
you may be hitting a bug
moritz the two are mostly unrelated 06:29
dalek ast: eb6e664 | moritz++ | S02-names/indirect.t:
basic test for declarations with indirect names
06:32
06:33 PZt joined
dalek kudo/nom: 1f86d22 | moritz++ | t/spectest.data:
run indirect name declaration tests
06:37
d: 36c6322 | larry++ | / (2 files):
parse <<END with correct quote language
06:39
06:44 marmay joined 06:46 krunen left 06:50 krunen joined 06:51 PZt left 06:52 PZt joined
dalek d: 2f65afc | larry++ | STD_P5.pm6:
allow p5 code to switch back to p6
07:01
07:08 thou left, immortal left 07:10 thou joined, erkan joined, erkan left, erkan joined 07:12 isBEKaml left
ingy what's the p6rules syntax for committing to a rule? 07:15
07:15 isBEKaml joined 07:22 replore_ joined
ingy :: looks promising 07:22
sorear ::: 07:23
wait, what exactly do you want? 07:24
::: commits all choice points in the current rule
:: commits all choice points up to and including the last |
07:25 mucker joined
ingy sorear: I'm really just looking for a syntax token for Pegex to say, don't back up 07:27
it's nice when it roughly follows p6
07:28 isBEKaml left
sorear ingy: if the stuff after the token fails to match, how far back should pegex skip? 07:29
ingy sorear: I'm thinking it should fail at that point 07:31
07:32 replore_ left
sorear ingy: fail the rule? (:::) fail the entire matching process? (<commit>) 07:33
07:33 SamuraiJack joined
sorear we don't like <commit> very much here because you can't recover from it 07:33
07:35 GlitchMr joined
ingy sorear: I'm trying to get the error handling more elegant. I don't really have enough test cases yet, though. 07:36
a: b | c | `error msg for rule a` 07:38
same as
a: b | c | ERR_a; ERR_A: `error msg for rule a`
it might be nice to have implicit calls to ERR_a 07:39
anyway just ruminating and wondering what p6 did... 07:40
sorear so, you haven't clarified how far you want the commit to fail to 07:42
there's also <commit('RULE_NAME')> in p6, which does what it sounds like
ingy I guess I don't grok why I wouldn't want to fail completley 07:43
reading through the relevant s05 07:48
sorear ingy: If you fail completely there is no chance for error recovery. 07:51
ingy understood 07:53
masak morning, #perl6 08:02
ingy sorear: I'm leaning towards: 08:05
a: b :: c
means
a: b ( c | ERROR_a ) 08:06
so :: is a nice syntax that effectively means <commit>
masak GlitchMr: for looping backwards along a range, I'd really recommend doing `for reverse ^.chars` or equivalent. 08:07
ingy but I don't really need anything except to make grammars more succinct, afaik
masak GlitchMr: it's very readable. and it circumvents the "limitation" that ranges have of not going backwards. maybe in the future it'll be a very optimized case too, who knows?
ingy hi masak
GlitchMr The problem is that 0 shouldn't be in range 08:08
So, I'm using .chars ... 1
08:09 thou left 08:10 birdwindupbird joined
masak GlitchMr: then, `reverse 1 .. .chars` 08:12
GlitchMr But what's wrong with ...
(aside of that it's sequence operator?)
masak nothing wrong with it. it just doesn't follow the Principle of Least Power in this case.
nothing wrong with it being the sequence operator either. that's what it is. 08:13
GlitchMr With two arguments, it's a range
masak no, it's still a sequence of items. 08:14
a Range is a type in the type system.
r: say (1..5).^name; say (1 ... 5).^name
p6eval rakudo 1f86d2: OUTPUT«Range␤List␤»
masak a Range is *one* item. the List consists of five items.
GlitchMr Hmmm, yeah 08:15
masak as long as you have a Range, it's in an unexpanded state, and only contains information about its endpoints. 08:16
which is why this is a very cheap operation:
r: say (0 .. 1_000_000_000).perl
p6eval rakudo 1f86d2: OUTPUT«0..1000000000␤»
GlitchMr reverse doesn't really seem clear... but range(1, 11, -1) in Python doesn't either 08:17
masak and that's why I said 'reverse $min..$max' may some day be optimized. because the elements still haven't expanded.
what's not clear about 'reverse 1..5'?
I think it reads extremely well.
GlitchMr That end point is star point?
masak right. because it was reversed. 08:18
GlitchMr start*
08:19 birdwindupbird left
masak it doesn't seem that unclear to me. at least, no more unclear than `abs -5`, which removes the minus sign and produces +5. 08:20
GlitchMr But why somebody would use abs with constant value?
08:23 Patterner left
masak this one was just an example. the example still holds if you put a variable there: `abs $v`. 08:23
if you know the semantics of &abs, you know that the result will be a positive value.
if you know the semantics of &reverse, you know that the result will be a reversed list of values. 08:24
08:24 Psyche^ joined 08:25 Psyche^ is now known as Patterner
GlitchMr Well, at least it's more explicit than similar operator in CoffeeScript which makes unoptimized code... 08:25
'for i in [$_.length .. 1]' generates 'for (i = _i = _ref = $_.length; _ref <= 1 ? _i <= 1 : _i >= 1; i = _ref <= 1 ? ++_i : --_i) {}' 08:26
huf their range operator goes both up and down? /o\
masak I'm glad I'm not using a language where the range operator can go downwards... :/ 08:27
GlitchMr The problem being that you don't know when it will go down 08:28
huf for it to be useful, the range operator must be able to return empty lists
or empty ranges
or empty somethings
GlitchMr If $_.length is smaller than 1 (let's say that string is empty), it iterates for 0 and 1
Not really useful
And probably good reason why I should use reverse instead 08:29
masak yes.
GlitchMr: because of -- exactly -- what huf just said. 08:30
GlitchMr I just have noticed this after I've ran similar code in CoffeeScript 08:31
huf php's range() function is broken like that too... webby languages :) 08:32
GlitchMr Not only that, range() in PHP isn't iterator ;) 08:33
But...
huf there's that too, but that's an optimization in a sense
GlitchMr And being explicit with $step doesn't help. $step always uses abs() on itself 08:34
That could be fun
In Python, if you want to have reverse range, you have to specify $step of -1 08:35
step*
gist.github.com/3595918 08:36
panda not found
That could be fun
08:40 replore joined
GlitchMr Also, I think I forgot about this, but in CoffeeScript you CAN be explicit. 08:44
MikeFair Is "the name of my function" available as a perl6 variable somehow?
GlitchMr 'for i in [$_.length .. 1] by -1' generates 'for (i = _i = _ref = $_.length; _i >= 1; i = _i += -1) {}'
masak we used to have the :by adverb for ranges (in the spec). it got tossed by the wayside for philosophical reasons.
basically, where we had :by previously, we now have infix:<...> 08:45
(though I still prefer to reverse ranges in the :by(-1) case)
GlitchMr MikeFair: I guess no (but I'm not sure) - function could have multiple names or it could be nameless 08:46
But you can reference to current subroutine using &?ROUTINE 08:47
08:47 replore left
MikeFair Hmm, that's a start 08:47
sorear sleep& 08:48
GlitchMr oh, wait, you can
perl6: sub abc { &?ROUTINE.name }; print "<{abc}>"
p6eval rakudo 1f86d2, niecza v21-1-ga8aa70b: OUTPUT«<abc>»
GlitchMr But I wouldn't depend on this
08:50 replore joined
masak why not? 08:50
GlitchMr What is .name for anyways? 08:51
perl6: my &subroutine = do { my sub this-is-not-a-subroutine { } }; say &subroutine.name; 08:52
p6eval niecza v21-1-ga8aa70b: OUTPUT«Potential difficulties:␤ &this-is-not-a-subroutine is declared but not used at /tmp/STSNbvHIN_ line 1:␤------> = do { my sub this-is-not-a-subroutine ⏏{ } }; say &subroutine.name;␤␤this-is-not-a-subroutine␤»
..rakudo 1f86d2: OUTPUT«this-is-not-a-subroutine␤»
GlitchMr It returns 'this-is-not-a-subroutine' even if you cannot call sub {} with this name 08:53
When you have first-class functions, even if you can get name, it won't help you much 08:54
Is there any good reason to have .name aside of "other languages have it?" 08:56
arnsholt Because sometimes, you do need it 09:00
09:02 birdwindupbird joined 09:03 MayDaniel joined
GlitchMr It simply doesn't work in anything more complex than PHP. 09:04
(in PHP, function references are function names)
huf doesnt work for what? 09:06
(also, not entirely true for php)
GlitchMr I know, PHP has closures since PHP 5.3
09:08 replore left
GlitchMr perl6: (1 .. 5).map(&sin).perl.say 09:09
p6eval rakudo 1f86d2: OUTPUT«This type cannot unbox to a native integer␤ in method reify at src/gen/CORE.setting:5187␤ in method reify at src/gen/CORE.setting:5089␤ in method gimme at src/gen/CORE.setting:5467␤ in method perl at src/gen/CORE.setting:5687␤ in block at /tmp/XC4UqGsuB7:1␤␤»…
..niecza v21-1-ga8aa70b: OUTPUT«(0.8414709848078965e0, 0.90929742682568171e0, 0.14112000805986721e0, -0.7568024953079282e0, -0.95892427466313845e0).list␤»
GlitchMr Another Rakudo bug?
09:10 birdwindupbird left
moritz looks like it, yes 09:15
nr: say &sin.arity 09:16
p6eval niecza v21-1-ga8aa70b: OUTPUT«1␤»
..rakudo 1f86d2: OUTPUT«0␤»
moritz nr: say &sin.count
p6eval niecza v21-1-ga8aa70b: OUTPUT«1␤»
..rakudo 1f86d2: OUTPUT«Inf␤»
moritz oh.
GlitchMr Why &sin doesn't have arity? 09:17
moritz cause it's declared as proto sub sin(|) {*} in rakudo
which is the most extensible thing to do 09:18
GlitchMr Numeric multi method sin ( Numeric $x ) is export
This is in synopsis
moritz and wrong 09:19
GlitchMr It should be Cool, isn't it?
This is so confusing
09:21 kaare_ left 09:26 marmay left
moritz that would declare a method with the invocant plus another argument 09:27
and yes, there should be a Cool variant too
09:32 tokuhiro_ joined
moritz nqp: say(nqp::index('a', 'b')) 09:33
p6eval nqp: OUTPUT«-1␤»
moritz nqp: say(nqp::index('abc', 'b'))
p6eval nqp: OUTPUT«1␤»
GlitchMr > so index 'a', 'a' 09:35
False
Why?
Couldn't index have something like "but True"? 09:36
moritz rakudo doesn't implement StrPos yet, which should do that part 09:37
just use s/so/defined/
r: class DYNAMIC { }; say DYNAMIC
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Cannot use pseudo-package DYNAMIC in a package name␤»
tadzik good morning #perl6 09:39
GlitchMr * MATCH ":moorcock.freenode.net 004 SixtySixBot moorcock.freenode.net" 09:41
But... it matches
Now I'm really confused
If it matches, why it doesn't
or
moritz GlitchMr: your question doesn't make any sense to somebody who doesn't see exactly what you do
GlitchMr print so RawEvent.parse(':moorcock.freenode.net 004 SixtySixBot moorcock.freenode.net ircd-seven-1.1.3 DOQRSZaghilopswz CFILMPQbcefgijklmnopqrstvz bkloveqjfI') 09:42
I see...
moritz n: sub DYNAMIC() { }; DYNAMIC()
p6eval niecza v21-1-ga8aa70b: ( no output )
GlitchMr gist.github.com/3596274
How it could match if TOP rule has ^ and $
moritz r: gist.github.com/3596274 09:43
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Confused␤at /tmp/5XRFKGwNbd:1␤»
GlitchMr It's probably glitchmr@strawberry ~> cat debug.p6
moritz right
GlitchMr r: gist.github.com/3596277 09:44
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Could not find Grammar::Tracer in any of: /home/p6eval/.perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.7.0-devel/languages/perl6/lib␤»
moritz star: gist.github.com/3596277
GlitchMr r: gist.github.com/3596279
p6eval star 2012.07: OUTPUT«TOP␤| user␤| * [37;41mFAIL␤| host␤| | space␤| | * [37;41mFAIL␤| | space␤| | * [37;41mFAIL␤| | space␤| | * [37;41mFAIL␤| | space␤| | * [37;41mFAIL␤| | space␤…
rakudo 1f86d2: OUTPUT«True»
GlitchMr * MATCH ":moorcock.freenode.net 004 SixtySixBot moorcock.freenode.net" 09:45
I still wonder how it matched when it shouldn't
moritz remove the 'so'
and s/print/say/ 09:46
GlitchMr r: gist.github.com/3596279
p6eval rakudo 1f86d2: OUTPUT«:moorcock.freenode.net 004 SixtySixBot moorcock.freenode.net ircd-seven-1.1.3 DOQRSZaghilopswz CFILMPQbcefgijklmnopqrstvz bkloveqjfI»
GlitchMr what?
moritz it parses all the trailing garbage as params
params => 「bkloveqjfI」
$<params>=<-space>+ 09:47
GlitchMr gist.github.com/3596287
What?
As for bot itself, it looks like gist.github.com/3596290 09:48
moritz looks like a bug in the bot module 09:49
GlitchMr my $event = Net::IRC::Parser::RawEvent.parse($line) 09:51
or $*ERR.say("Could not parse the following IRC event: $line") and next;
huh?
It parsed except it didn't? 09:52
moritz GlitchMr: I can't make any sense of what you say
what do you mean by "It parsed except it didn't?"?
GlitchMr ok, I've enabled debug mode 09:53
gist.github.com/3596312
It crashed just after MOTD
github.com/TiMBuS/Net--IRC/blob/ma...Bot.pm#L55 09:54
hmm...
\c is decimal escape? 09:55
That looks like \xD\xA for me
In method .sendln... 09:57
.send in CORE.setting attempted to call .seek
Except .seek is... not implemented?
arnsholt moritz: Could you take a look at the libnames branch in Zavolaj?
The new test works on OS X, but because Linux does weird stuff with library names it doesn't work there. If you have any good ideas that'd be awesome 09:58
moritz arnsholt: yes. What exactly should I look at?
moritz git fetches 09:59
my $realname = !$libname.DEFINITE ?? "" !! $libname; 10:01
why not write that as my $realname = $libname // ""; ?
arnsholt Because it's been reduced from code that actually needed the ternary, and I just mechanically reduced it =)
moritz arnsholt: does this require any extra rakudo or nqp branches/commits? 10:02
arnsholt Yeah 10:03
nqp/dyncall-libnames
moritz arnsholt: is that branch just one patch? 10:04
arnsholt So far, yeah 10:06
But since it breaks old versions of Zavolaj and is kinda experimental in general I kept it in a branch 10:07
moritz well
I have only glanced at the C code
does PARROT_LOAD_EXT and PARROT_SHARE_EXT contain the dot? 10:08
arnsholt Yup
moritz hopes so
arnsholt They do =) 10:09
moritz aye
arnsholt But the real problem is the new test in Zavolaj. On my Linux machine, it fails because the C library is libc.so.6 and not libc.so >.<
GlitchMr Perhaps github.com/TiMBuS/Net--IRC/tree/use-muevent will work
arnsholt On OS X it's just libc.dylib
GlitchMr But can panda install from alternate git branch?
Timbus hi
no it wont 10:10
tadzik I never taught it to :)
oh, use-muevent
and I ended up with my own fork :)
Timbus muevent chokes after a few dozen lines
tadzik yeah, then unchokes
Timbus oh?
GlitchMr Timbus: I cannot get your Net::IRC::Bot module to work 10:11
This is code: gist.github.com/3596290
tadzik Timbus: yeah, it's sort of funny
GlitchMr And this is result: gist.github.com/3596312
tadzik it either unchokes after ~30 seconds, or...
or you can set up another socket (listener, via MuEvent), and then when you send anything to it, the IRC socket "unchokes"
I have no idea how this works
Timbus :I
GlitchMr I've tried using Freenodebot.pl, but it also doesn't work 10:12
In similar way
Timbus might be worth looking at wrapping libev in zavolaj
moritz arnsholt: isn't that why, by convention, the empty string as a library name looks into libc?
tadzik my wild guess was that we're too slow at receiving packets, and freenode stops sending them after a while 10:13
Timbus GlitchMr, dunno, 'seek' doesnt exist?
strange
GlitchMr This is newest Rakudo by the way
glitchmr@strawberry ~/g/SixtySixBot> perl6 -v
This is perl6 version 2012.08-63-g1f86d22 built on parrot 4.7.0 revision RELEASE_4_7_0-165-g29796c6
Or perhaps... 10:14
moritz arnsholt: at least I dimly recall reading that, and I'm afraid that's my only contribution to that topic :(
Timbus GlitchMr, cant seem to reproduce this on a slightly older rakudo. 10:15
moritz recently a branch was merged in parrot that re-did much of the IO subsystem 10:16
Timbus o
moritz after the 2012.08 release
Timbus i.. couuuld look into that 10:17
tadzik hm 10:18
10:20 Moukeddar joined
tadzik hm, this now fails on new rakudo: gist.github.com/3596516 10:22
(foo is the input) 10:23
GlitchMr I wonder why people use complicated prompts ;)
tadzik just for the sake of having a two-line prompt
arnsholt moritz: No, dlopen(NULL) lets you dig into the libraries already loaded by the executable 10:24
Not quite the same, but since pretty much any program will link against libc it works for getting at that stuff
But since I want to make sure both dylibs and bundles work on OS X, I have to load a library I can be reasonably sure exists everywhere 10:25
Maybe I'll just make it a test run only on OS X
GlitchMr This prompt actually reminds me my very old prompt 10:29
dl.dropbox.com/u/63913412/dos.png
lizmat jnthn: ping 10:31
phenny lizmat: 01 Sep 18:11Z <jnthn> tell lizmat le NQP branch merge is done, which unblocks your ops work :)
lizmat getting on that now 10:35
jnthn lizmat: pong 10:38
lizmat you left the answer I wanted to ask 10:39
:-)
10:40 spider-mario joined
jnthn aha :) 10:40
GlitchMr If I want stability, I should use stable release 10:42
Except some modules aren't so stable 10:43
Moukeddar guys, sorry to bother you, but how do you plan your project , we're talking here about a single developer project ? any suggestions ?
GlitchMr Moukeddar: uhmmm... what project?
Moukeddar it's a pet project, a mix of web and desktop stuff 10:44
10:46 MayDaniel left 10:47 DarthGandalf left
Moukeddar so ? 10:48
lizmat hhmmm… make test generates errors *after* it seems done? 10:49
jnthn lizmat: ? 10:50
lizmat: nopaste?
lizmat gist.github.com/3596762
moritz Moukeddar: 1) be clear on what you want to do 2) identify a minimally useful subset of functionality 3) implement that 4) grow from there 10:51
Moukeddar moritz, i can do that using a spreadsheet :) , thanks :) 10:52
lizmat jnthn: there is more if you want
lizmat pasted the whole thing now
jnthn lizmat: I'm guessing it invokes prove mutliple times
huh, t/setting... 10:53
10:53 DarthGandalf joined
jnthn hm, that lot looks bitrotten. 10:53
lizmat jnthn: after git pull this morning, make test did: 10:54
$ make test
make: *** No rule to make target `src/pmc/dispatchersub.pmc', needed by `src/pmc/nqp_group.bundle'. Stop.
jnthn lizmat: Did you just make? 10:55
lizmat I figured I needed to run Configure.pl again
jnthn lizmat: Right.
lizmat make came up with the same error
jnthn lizmat: That's expected. Configure.pl generates the Makefile
lizmat then ran make again, then make test gave these errors
jnthn If something gets removed, the makefile has to be re-generated
lizmat that's what I figured :-)
jnthn I can't see how these tests could ever have worked for...a while
10:55 Moukeddar left
jnthn (the t/setting ones) 10:55
lizmat so I guess the reason is: why are they being tested now? 10:56
I don't think they were before
jnthn That's weird
They don't run for me when I "nmake test"
jnthn checks again
lizmat will start with a fresh repo and see what it gives 10:57
moritz jnthn: moritz.faui2k3.org/tmp/0001-fix-dec...name.patch seems to work, but it's somewhat ugly 10:58
and probably not correct in corner cases
n: sub CALLER::foo() { }
p6eval niecza v21-1-ga8aa70b: OUTPUT«===SORRY!===␤␤Pseudo package CALLER may not be used in compile time reference at /tmp/ZtyDslPwV7 line 1:␤------> sub CALLER::foo⏏() { }␤␤Potential difficulties:␤ &foo is declared but not used at /tmp/ZtyDslPwV7 line 1:␤…
moritz nr: sub CALLER() { say 42 }; CALLER() 10:59
p6eval niecza v21-1-ga8aa70b: ( no output )
..rakudo 1f86d2: OUTPUT«42␤»
moritz nr: sub a::b() { } 11:00
p6eval rakudo 1f86d2, niecza v21-1-ga8aa70b: ( no output )
moritz nr: sub a::b() { }; a::b()
p6eval rakudo 1f86d2: OUTPUT«Could not find symbol '&b'␤ in method <anon> at src/gen/CORE.setting:9796␤ in at src/gen/Metamodel.pm:2317␤ in any find_method_fallback at src/gen/Metamodel.pm:2305␤ in any find_method at src/gen/Metamodel.pm:859␤ in at src/gen/BOOTSTRAP.pm:826␤ in any at …
..niecza v21-1-ga8aa70b: ( no output )
jnthn lizmat: Here, nmake test only runs t/nqp, t/qast and t/hll 11:03
moritz no regex tests?
jnthn No
It...does for you?
well, wtf
moritz it did last I tried
jnthn test: all core-test setting-test qregex-test
moritz does one of them fail for you? 11:04
jnthn I get the usual 46 fail due to no ICU
moritz well
that will lead to the rest of the tests not being run 11:05
jnthn oh.
why the heck is it set up to do all these different invocations of prove?
proposal: make test just calls prove with all the things?
Apart from t/setting, which I'm somewhat inclined to nuke.
11:06 JimmyZ joined
moritz iirc the background is that if you simply invoke the harness, a failure on the top can scroll by, and at the end you don't see that anything failed 11:07
well, if you do it in one line, it would work
jnthn Right, that's my idea
moritz +1 then
jnthn Yeah, that way gets you one summary at the end 11:08
11:08 lizmat left 11:09 lizmat joined 11:13 kaare_ joined
lizmat jnthn: a fresh clone gives the same errors 11:19
should I look at fixing the tests?
dalek p: 1801844 | jnthn++ | tools/build/Makefile.in:
Clean up test targets so they actually run all of the tests they're expected to and give a single summary at the end of doing so.
11:21
p: e4db73c | jnthn++ | t/ (7 files):
Steal a couple of the tests that still makes sense from t/setting into t/nqp, then toss t/setting, which was largely bit-rotten.
jnthn lizmat: Those commits should clean things up 11:22
lizmat ack
many errors less, but a new one appeared 11:23
gist.github.com/3597242 11:24
jnthn Did you re-Configure?
(I updated the Makefile.in)... 11:25
lizmat no, will do now :-) 11:26
All tests successful :-) 11:31
jnthn \o/
Time to break stuff! 11:32
;)
lizmat working on it :-)
11:35 birdwindupbird joined
lizmat r: .say for 1 .. 5 11:35
p6eval rakudo 1f86d2: OUTPUT«1␤2␤3␤4␤5␤»
lizmat rn: .say for 1 .. 5
p6eval rakudo 1f86d2, niecza v21-1-ga8aa70b: OUTPUT«1␤2␤3␤4␤5␤»
dalek p: 9dc2b8d | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::does(...,'hash') for nqp::ishash
11:37
11:40 birdwindupbird left
dalek p: 237fae7 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::get_who__PP for nqp::who
11:43
GlitchMr gist.github.com/3597564 11:49
Am I doing something incorrectly?
And why %*ENV is readonly? 11:51
lizmat jnthn: Can only use repr_defined on a SixModelObject 11:59
ring a bell?
this is about s/nqp::defined/nqp::isconcrete/ 12:00
jnthn lizmat: Yeh 12:06
*Yeah
That's why we need nqp::defined I guess
lizmat so pir::defined -> nqp::defined?
for now, then? 12:07
or are there some nqp::defined's that should become nqp::isconcrete?
GlitchMr glitchmr@feather ~> perl6 -v 12:08
This is Rakudo Perl 6, version 2010.08 built on parrot 2.7.0
oh
I read it as 2012.08
12:09 Timbus|Away joined
GlitchMr But... why Perl 6 development server would have two years old version of Rakudo 12:10
lizmat is pinging juerd 12:11
bonsaikitten because no one upgraded? :)
lizmat it appears that the one responsible for upgrading did not upgrade 12:14
trying to find out who that was
GlitchMr But at least they haven't lied with "A recent version of pugs to work with". pugs is recent enough.
It says "Copyright 2005-2012" 12:15
12:15 Timbus left, Timbus|Away is now known as Timbus
lizmat GlitchMr: could it be that your perl6 is a symlink to someone's home dir 12:15
GlitchMr glitchmr@feather ~> which perl6 12:16
/usr/local/bin/perl6
Not really
lizmat after checking with Juerd, he says that it was basically the idea that everybody would compile their own
GlitchMr I see... 12:17
lizmat and that the system one was just something that you could use as a very basic bootstrap
12:17 erkan left, immortal joined, immortal left, immortal joined
lizmat I'll be seeing juerd IRL next Tuesday at the Amsterdam PM meeting, and discuss how to take feather onwards 12:17
GlitchMr I hope that compiling Perl 6 myself won't be too problematic for server ;) 12:21
lizmat only one way to find out, I guess 12:22
jnthn lizmat: nqp::isconcrete is safe only when you know you always have some kind of 6model object to hand. In NQP, arrays, hashes etc are still not that. 12:23
dalek p: 2019842 | (Elizabeth Mattijsen)++ | / (2 files):
Eradicated pir::defined__IP for nqp::defined

The original plan was to s/nqp::defined/nqp::isconcrete/ but this gave errors on 6model objects:
   Can only use repr_defined on a SixModelObject
So only did pir::defined__IP -> nqp::defined migration. And moved the possible nqp::defined -> nqp::isconcrete migration to jnthn's list
12:25
lizmat but they will be? so this is just a matter of delay? 12:26
GlitchMr 26502 glitchmr 20 0 34536 22m 6372 R 28,2 1,9 0:00.85 cc1 12:28
28,2% of CPU usage
ok
jnthn lizmat: On @next-vm almost certainly.
lizmat will try to recognize 6model objects from bare arrays/hashes and see what will work 12:29
btw: NQP/Actions.pm:993: || pir::isa__IPs($_.returns, 'Undef') # XXX hack, goes away after QAST migration
jnthn ooh
Try deleting it. :)
iirc, the other half of the || does what's really needed now 12:30
lizmat testing 12:31
for pir::isa__IPs I see <Namespace Sub String> as 2nd parameter 12:32
12:32 breakEM left
lizmat I assume Namespace/Sub are hashes, and String is list ? 12:33
test ok 12:35
jnthn er
where is that code? :) 12:36
Namespace doesn't even make sense any more in NQP
dalek p: dae38f0 | (Elizabeth Mattijsen)++ | / (2 files):
Removed now superfluous call to pir::isa__IPS(..,'Undef'), per jnhtn's instructions
lizmat HLL/Compiler.pm:46: pir::isa__IPs($value, 'NameSpace')
jnthn oh my 12:37
moritz oh my indeed
jnthn I wonder if we even encounter that code path any more.
EXPORT doesn't work that way any more for example 12:38
moritz r: sub GLOBAL() { }; say GLOBAL()
p6eval rakudo 1f86d2: OUTPUT«invoke() not implemented in class 'GLOBAL'␤ in block at /tmp/wx1VGIt9hJ:1␤␤»
jnthn moritz: By the Type(...) rule I guess it's attempting to turn that into a coercion... 12:39
get_module in HLL::Compiler also looks very suspect
lizmat shall I drop get_exports / value_type and get_module and see what happens? 12:40
jnthn lizmat: Yeah.
I can't imagine them doing anything useful any more.
lizmat testing 12:41
jnthn I think they may have been part of a previous HLL interop thing.
But are bitrotten to the extent that they're not worth keeping.
12:42 immortal left, erkan joined, erkan left, erkan joined
moritz jnthn: any feedback on moritz.faui2k3.org/tmp/0001-fix-dec...name.patch ? 12:42
jnthn: I realize it's incredibly hacking, but I don't quite know what do about it
*hacky 12:44
lizmat jnthn: tests ok
jnthn moritz: Is there no way we can communicate the DYNAMIC thing into disect_longname (pass it a named arg or something)? 12:45
So that it leaves the DYNAMIC alone?
moritz jnthn: well, I experimented with passing :decl<routine> to it 12:46
and be more permissive in that case
but all I got was a NPMCA
dalek p: 25fcb3f | (Elizabeth Mattijsen)++ | src/HLL/Compiler.pm:
Dropped some bitrotten code from previous HLL interop thing

It was referencing pir::isa__IP(..,'Namespace') which was obsolete
12:47
moritz jnthn: I'll nopaste a patch, wait a second..
jnthn moritz: OK. I'm mostly tied up with sorting out some $dayjob stuff I've been putting off at the moment, though. 12:48
lizmat will stop bothering jnthn and enjoy the nice weather with bike ride 12:49
moritz jnthn: moritz.faui2k3.org/tmp/0001-clean-u...ling.patch (and don't hurry :-) 12:50
jnthn OK, will look in a bit... :) 12:51
12:56 hoelzro|away is now known as hoelzro 12:57 JimmyZ left 13:10 JimmyZ joined
moritz taking a second look, one bug is obvious 13:18
a return after a die is almost certainly wrong :-) 13:20
13:22 benabik left 13:23 benabik joined
moritz patch updated 13:23
(under the same URL)
now it dies with Method 'orig' not found for invocant of class 'NQPMu'
current instr.: 'add_deadly' pc 9181 (src/gen/perl6-optimizer.pir:3416) (src/Perl6/Optimizer.pm:536)
which probably means it installed something as the wrong name, and then the optimizer died while adding the memo about the missing subroutine 13:24
sergot Who is responsible for planetsix.perl.org? :)
moritz sergot: the perl.org admins, but for example [Coke] has enough privs to add feeds 13:25
(and remove them)
sergot moritz++ thanks. :)
moritz adds some debug statements 13:29
GlitchMr export PATH="`perl -l72e'print for reverse sort </home/glitchmr/rakudo-star/*.*/bin>'`$PATH" 13:34
Because I'm bored...
moritz dammit, it's DYNAMIC again 13:35
13:39 benabik left
pmichaud good morning, #perl6 13:41
colomon \o, pm
moritz good am, pm and colomon 13:42
jnthn good afty, pmichaud
colomon o/
13:49 benabik joined
moritz discovers another bug 14:00
\o/ it build the setting again 14:07
14:09 fgomez left 14:10 skids joined
moritz the code is now a bit longer and more robust 14:11
and as a plus:
./perl6 -e 'sub CALLER::foo() { }'
===SORRY!===
Cannot use pseudo-package CALLER in a sub declaration
r: sub CALLER::foo() ·{ }; say MY::.keys 14:12
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Missing block␤at /tmp/KgnK3jrUq1:1␤»
moritz r: sub CALLER::foo() { }; say MY::.keys
p6eval rakudo 1f86d2: OUTPUT«!UNIT_MARKER GLOBALish EXPORT $?PACKAGE ::?PACKAGE $_ $/ $! &CALLER::foo $=pod␤»
jnthn Oops ;) 14:13
moritz++
14:15 araujo left
moritz jnthn: do you have a feeling how many LongName objects we carry around? 14:24
thing is, for better error messages I'd like to store a Match object per LongName. Is that OK? or too expensive?
14:25 moises joined
jnthn moritz: I think LongName objects are fairly short lived. 14:28
moritz ok, great
jnthn They shouldn't make it into the AST ever, for example.
moritz nqp: say(1) if !NQPMu 14:35
p6eval nqp: OUTPUT«1␤»
moritz nqp: say(1) if NQPMu
p6eval nqp: ( no output )
moritz nqp: nqp::die(42) 14:36
p6eval nqp: OUTPUT«42␤current instr.: '' pc 52 ((file unknown):40) (/tmp/xC3hcm2Abd:1)␤»
14:36 MayDaniel joined
moritz hm, that line number is correct 14:36
nqp: 1 || say(42) 14:37
p6eval nqp: ( no output )
14:38 marmay joined
spider-mario aw, why does Rakudo repeat itself in some error messages? 14:38
lumi_ Would it be possible to run a grammar, and emit HTML with the original text surrounded by a tag with the matching rulename as a class?
spider-mario ===SORRY!===
Error while compiling block : Error while compiling block hello: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote
lumi_ For cheap and fun syntax highlighting, I was thinking 14:39
spider-mario r: macro hello($name) {quasi { say "Hello { {{{$name}}} } !"; };} hello("Rakudo");
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Confused␤at /tmp/e_VUo1yinr:1␤»
spider-mario r: macro hello($name) {quasi { say "Hello { {{{$name}}} } !"; };}; hello("Rakudo");
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block hello: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤»
spider-mario here, reproduced
jnthn spider-mario: That's an internal error from the compiler toolchain. 14:41
spider-mario ok.
jnthn spider-mario: The macros implementing is really rather new.
spider-mario: So it'll be a bug in that.
moritz spider-mario: please submit 14:42
jnthn The messages are often pretty handy for tracking down the issue. :)
r: macro hello($name) {quasi { say "Hello { {{{$name}}} } !"; };}; 14:43
p6eval rakudo 1f86d2: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block hello: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤»
jnthn Golfed.
spider-mario sorry, I have forgotten the procedure to submit a rakudo bug? 14:44
14:45 benabik left
jnthn [email@hidden.address] 14:46
(some other hints in README)
spider-mario thanks 14:47
GlitchMr Error while compiling block : Error while compiling block : Error while compiling block load_module: Error while compiling op lexotic: Error while compiling op if: Error while compiling block : Error while compiling op handle: Error while compiling op if: Error while compiling block : Error while compiling op bind: Error while compiling op associative_bind: Cannot infer type from ''
that could be fun
lumi_ Maybe I'll try doing it, but I only have tuits in 2 weeks 14:49
14:50 nebuchadnezzar left
jnthn o.O 14:52
GlitchMr: How'd you get that one?
14:53 benabik joined
GlitchMr I've tried to compile perl6 14:53
But I probably do it incorreclt
incorrectly*
t/nqp/60-bigint.t ............... Failed 3/34 subtests
wait...
14:54 birdwindupbird joined, hoelzro is now known as hoelzro|away 15:00 nebuchadnezzar joined 15:03 HotJessicaBOOBS joined 15:04 HotJessicaBOOBS left 15:12 yarp left
dalek p: 6b8b4a6 | jnthn++ | src/ (2 files):
Move CTXSAVE and EXPR that were temporarily subclassed in NQP::Actions back up into HLL::Actions (taking the QAST-using versions).
15:14
p: 899659e | jnthn++ | src/ (2 files):
Move QAST versions of quote_EXPR and quote_delimited up into HLL::Actions, eliminating them from NQP::Actions.
p: ed02bcc | jnthn++ | src/HLL/World.pm:
Toss a bunch of now-dead code (replaced by a combination of QAST::WVal, bs and some of the logic moving into QAST::Compiler itself).
spider-mario bug reported, it’s #114708 15:23
rt.perl.org:443/rt3/Public/Bug/Dis...?id=114708 15:24
15:26 benabik left 15:27 birdwindupbird left 15:30 skids left 15:33 Moukeddar joined, benabik joined 15:35 Moukeddar left 15:36 thou joined 15:42 benabik left 15:44 JimmyZ left 15:49 JimmyZ joined 15:55 JimmyZ left 15:59 tokuhiro_ left
dalek p: 694af0d | jnthn++ | src/QRegex/P5Regex/Actions.nqp:
Various P5Regex de-PASTifications.
15:59
p: fb79576 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Start updating P6Regex to eliminate use of buildsub (now always uses qbuildsub) and turn some other PAST usages into QAST.
p: d7054fa | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Toss some now-dead code in P6Regex.
p: dd2cd29 | jnthn++ | src/QRegex/NFA.nqp:
Toss NFA.past.
p: 211d5b3 | jnthn++ | src/HLL/Compiler.pm:
Eliminate a couple of mentions of PAST from HLL::Compiler.
GlitchMr That's lots of commits
jnthn Lot of deleted code too :) 16:00
dalek kudo/indirect-subs: a59d2f3 | moritz++ | src/Perl6/ (3 files):
fix declaration of subs with indirect name
16:07
kudo/indirect-subs: 989d8b2 | moritz++ | src/ (2 files):
typed exception for illegal use of pseudo packages in other names
moritz that branch now mostly works 16:08
but module MY { } 16:09
now dies with Null PMC access in get_string()
the offending line is if !$decl || ($decl eq 'routine') { if the backtrace can be trusted
which is kinda weird, because if $decl is Null, I'd expect the ($decl eq 'routine') to never run 16:10
jnthn Well, I'd expect the NPMCA to be in the if $decl and it to complain about get_bool too... 16:11
moritz oh, the line annotations are off
looking at the PIR, it actually comes from if $_ eq 'GLOBAL' {
a few lines below
GlitchMr I've Perl6 in ~/rakudo-star/ in case somebody would want to use it
moritz which makes much more sense, since $_ is never assigned 16:12
stupid copy-pasto
jnthn: so, line numbers in NQP are off :(
jnthn moritz: Wonder if it's just insufficient :node($/)-ing... 16:13
moritz $ast := QAST::Stmts.new($ast) if nqp::istype($ast, QAST::Node); 16:15
from method statementlist
jnthn hm
moritz does that propagate the .node properly?
jnthn Well, if the thing below got one, yes
But for safety we could attach it again there.
dalek p: 061f7f7 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Clear up most remaining PAST usages in P6Regex.
16:18
p: f17f978 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Final PAST eliminations in P6Regex.
p: 2158891 | jnthn++ | src/QRegex/P5Regex/Actions.nqp:
Final PAST eliminations in P5Regex.
p: 5ba6925 | jnthn++ | src/ (2 files):
Various cleanups and simplifications to QAST::Compiler and HLL::Compiler now that it no longer has to cope with PAST and POST.
kudo/indirect-subs: c1aac0d | moritz++ | src/Perl6/World.pm:
avoid a Null PMC Access
16:19
GlitchMr glitchmr@feather ~> perl6 16:21
perl6 perl6-2012.07 perl6-2012.08 perl6-debug perl6-debug-2012.08
good
16:23 fibo joined 16:35 SamuraiJack_ joined 16:36 SamuraiJack left
thou tadzik: hi, is $=data implemented in rakudo? 16:37
16:38 nodmonkey joined 16:46 nodmonkey left, crab2313 joined
dalek kudo/nom: 821d6a0 | jnthn++ | src/Perl6/Grammar.pm:
Eliminate final PAST::Node usages in Perl6::Grammar's op generation, and update it to tall the QAST compiler rather than PAST::Compiler, use qbuildsub instead of buildsub, etc.
16:47
kudo/nom: a55950d | jnthn++ | tools/build/NQP_REVISION:
Bump to latest NQP, with muchly reduced PAST usage.
kudo/nom: 1f1378e | jnthn++ | src/Perl6/Actions.pm:
Unbust /< a aa >/.
GlitchMr Timbus: would you consider this to be abuse of your module: gist.github.com/3601377
oops, it should be negative check 16:48
s/if/unless/
oh, wait... I forgot that .subst returns its value 16:49
perl6: lass blah { has $.regex = /a/; method replace($a is copy) { $a ~~ s/$.regex/b/; $a } }; blah.new.replace('cake').perl.say 16:51
p6eval niecza v21-1-ga8aa70b: OUTPUT«===SORRY!===␤␤Attribute $!regex declared outside of any class at /tmp/YaA_jWp3wj line 1:␤------> lass blah { has $.regex ⏏= /a/; method replace($a is copy) { $a ~␤␤Methods must be used in some kind of package at /tmp/YaA…
..rakudo 1f86d2: OUTPUT«===SORRY!===␤You cannot declare attribute '$.regex' here; maybe you'd like a class or a role?␤at /tmp/qjWdTTg28s:1␤»
GlitchMr perl6: class blah { has $.regex = /a/; method replace($a is copy) { $a ~~ s/$.regex/b/; $a } }; blah.new.replace('cake').perl.say
p6eval niecza v21-1-ga8aa70b: OUTPUT«Unhandled exception: Unable to resolve method regex in type Cursor␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 566 (Cool.subst @ 37) ␤ at /tmp/UW7pC_Zppv line 1 (blah.replace @ 4) ␤ at /tmp/UW7pC_Zppv line 1 (ma…
..rakudo 1f86d2: OUTPUT«No such method 'regex' for invocant of type 'Cursor'␤ in regex at /tmp/JCt62h5bHR:1␤ in method match at src/gen/CORE.setting:4021␤ in method subst at src/gen/CORE.setting:4083␤ in method replace at /tmp/JCt62h5bHR:1␤ in block at /tmp/JCt62h5bHR:1␤␤»…
GlitchMr Cursor?
jnthn GlitchMr: A regex is a kind of method. 16:52
GlitchMr: Thus any time you're in a regex, self is the cursor.
GlitchMr So, I have to make copy of $.regex if I want to use it?
jnthn Yes
GlitchMr or use .subst()? 16:53
jnthn I don't see how that'd help here. You'd still be passing a regex to subst I guess?
GlitchMr Well, yes
That regex would be
/$.regex/
So I can simply type $.regex 16:54
jnthn ah
yes, you can do that. :)
dalek kudo/nom: a59d2f3 | moritz++ | src/Perl6/ (3 files):
fix declaration of subs with indirect name
16:58
kudo/nom: 989d8b2 | moritz++ | src/ (2 files):
typed exception for illegal use of pseudo packages in other names
kudo/nom: c1aac0d | moritz++ | src/Perl6/World.pm:
avoid a Null PMC Access
kudo/nom: 9cdf452 | moritz++ | src/ (4 files):
Merge remote branch 'origin/indirect-subs' into nom
kudo/nom: 91e9725 | moritz++ | docs/ChangeLog:
update ChangeLog
ast: c32c4d0 | moritz++ | S02-names/indirect.t:
unfudge tests for indirect sub name declarations
17:08
17:09 sftp left 17:10 sftp joined
GlitchMr Just wondering, is there opposite of slurp which would save content to file? 17:11
jnthn spurt
afk for a bit 17:13
dalek kudo/nom: 54030c3 | jnthn++ | docs/ChangeLog:
Add a note about having QAST-based NQP to the ChangeLog.
17:20 benabik joined
GlitchMr 19:20:54 @GlitchMr | 66: add future The future is already here — it's just not very evenly distributed. 17:21
19:20:57 @GlitchMr | 66: future
19:20:57 SixtySixBot | GlitchMr: The future is already here — it's just not very evenly distributed.
ok, it seems to work :)
17:22 varnie joined 17:28 daniel-s_ joined 17:31 daniel-s left
tadzik thou: no, I don't think so 17:33
I can give a try tomorrows
17:35 moises left
GlitchMr Just wondering, is 'Z,' operator identical to 'Z' operator? 17:36
And identical to 'ZZZ' operator
17:40 birdwindupbird joined 17:41 thou left 17:42 thou joined 17:44 thou left
moritz std: class Foo:: { } 17:46
p6eval std 2f65afc: OUTPUT«ok 00:00 40m␤»
moritz nr: class Foo:: { }
p6eval niecza v21-1-ga8aa70b: OUTPUT«===SORRY!===␤␤Illegal explicit declaration of a symbol table at /tmp/K1aZm9UNYd line 1:␤------> class Foo::⏏ { }␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1435 (die @ 5) ␤ a…
..rakudo 91e972: OUTPUT«===SORRY!===␤Name Foo:: ends with '::' and cannot be used as a package name␤»
17:47 thou joined
moritz which error message do you like better? 17:48
17:51 thou_ joined
jnthn Rakudo's gives you a better idea of what to do about the problem, Niecza's is more technically detailed. 17:51
jnthn tries to think of a good union of the two 17:52
moritz "Illegal use of trailing :: in name 'Foo::', which denotes a symbol table rather than a type' 17:53
17:53 xinming left
jnthn Something like that, yes. 17:53
17:53 thou left 17:54 xinming joined 18:01 hoelzro|away is now known as hoelzro
sorear good * #perl6 18:04
diakopter o/
18:05 thou_ left 18:06 fibo left 18:09 birdwindupbird left
pmichaud jnthn: ping 18:12
jnthn pmichaud: pong
pmichaud jnthn: I'm working on reducing the number of return values from !cursor_start; I can do all of them easily except I'm not sure how to efficiently get $?CLASS back 18:13
jnthn pmichaud: If you were doing this after the $!orig/$!target refactor I'd have an answer... :) 18:14
pmichaud what would your answer be then?
Circlepuller_ i like those ansi colors :3
jnthn Put it in the thing you move $!orig/$!target into 18:15
pmichaud store it there? I'm not sure that works if we re-use the $!orig/$!target thing across multiple cursor types.
jnthn Hm
pmichaud I suppose we could say "don't reuse it"... but that's not really what happens now.
jnthn Do we know the boundary?
pmichaud I suspect perhaps not always.
jnthn er, that was badly phrased
ah, you understood it anyway :)
Yeah, at first I thought it may be easily knowable but I can see it being more subtle... 18:16
pmichaud anyway, putting it in $!orig/$!target feels like the wrong place.
jnthn $!cstack is always free at !cursor_start time ;-)
pmichaud because $!orig/$!target are about the thing being parsed, not the cursors doing the parcing
*parsing
$!cstack isn't free on a restart.
jnthn ah, dang.
yes.
GlitchMr I should make Acme::ChuckNorris module. It will remove every bug in program. 18:17
Code: exit
pmichaud I can of course do it with a method call to the newly returned Cursor... but... dang. 18:18
jnthn Yes, that would suck.
pmichaud I can return a low-level list and grab things out of that. Still icky because of the PMC allocation, though. 18:20
jnthn A hack is to have a !CUR_CLASS lexical that !cursor_start binds.
pmichaud ...via outer?
jnthn Caller.
pmichaud er, yes, caller
jnthn Of course, all uses of it are done on the register.
pmichaud lexical wouldn't be bad 18:21
jnthn it's the least bad option so far.
pmichaud could do some of that for the other registers too
it increases the size of the lexpad, though
jnthn Yeah 18:22
MikeFair Anyone know how I can express if <EXPR> then <EXPR> [else <EXPR>] as "'if' is the prefix to a 'then' ternary operator?"
It's the equivalent to the ternary operator (test) ? true : false , but will only work if prefixed by 'if' 18:23
jnthn And you really want to parse the 'if' as a prefix?
Maybe nextterm helps
moritz MikeFair: express on what level?
grammar? AST? bytecode?
MikeFair jnthn: Well I don't really care the if is prefix 18:24
GlitchMr But Perl 6 already has fine ternary operator
test ?? true !! false
MikeFair jnthn: I think it was more the case that 'operator' was the hammer tool atm
jnthn pmichaud: In the long run, I expect the attribute lookups could be faster, mind.
MikeFair GlitchMr: Sorry, i'm writing some Grammar rules for parrot
GlitchMr oh, ok 18:25
jnthn MikeFair: You could always look at how we parse our if/else construct in NQP
pmichaud well, I suppose I could pass it through the $!orig/$!target object... it just seems weird to do that
GlitchMr I find it interesting that CoffeeScript has if something then true else false construct 18:26
pmichaud even there, though, I have to do a couple of extra lookups (namely get the .WHAT of the $!orig/$!target object so that I can do the lexical lookups)
jnthn pmichaud: Yeah, to me too. I prefer the lexical
pmichaud s/lexical/attribute/
jnthn (for the cur_class case)
pmichaud well, setting the lexical would likely be via store_dynamic_lex
and should I just do the one lexical, or should I do all of the registers that way? 18:27
probably just the one, to keep the size down
the downside of setting the lexical is that it really tightly couples !cursor_start to regexes even more than they currently are
jnthn Just the one, in my view 18:29
Yes, true. OTOH, the current factoring couples the code tightly to Parrot...
18:30 erkan left, erkan joined, erkan left, erkan joined
pmichaud at the moment I think I'm more comfortable passing it through the extra structure 18:30
I think it'll be faster that way and use a lot less memory
one other possibility would be to use a "static" nqp::list to pass the values 18:31
so, just return the list object, and then grab the individual things out via ::atpos. That's similar to returning a Parcel, at any rate. 18:32
jnthn So long as that's only done for objects, so we don't go boxing the other bits
pmichaud yes, of course
jnthn mumbles something about the static list and thread safety :) 18:33
pmichaud yeah, that too. It might not be too bad to create a list on each invocation; that's pretty much what happens now, iiuc
i.e., the return values go into a pmc of some sort
18:34 thou joined
pmichaud does .return (foo, bar, baz) in PIR result in a PMC allocation? 18:34
jnthn No, it populates the existing CallContext. May well be some lower level allocation(s) though.
18:35 varnie left
pmichaud ...populates the existing CallContext? that sounds... odd. 18:35
jnthn Hm, I thought it was used for args one way and returns the other
oh, maybe not... 18:36
pmichaud well, I think that doing it via a separate QRPA (Parcel) sounds sanest at the moment; can try that and see if it has an impact on performance. 18:37
it's closest to what Perl 6 would expect anyway.
and yes, for the objects only; the natives will be fetched from the appropriate objects 18:38
18:38 araujo joined, araujo left, araujo joined
pmichaud I suspect going via QRPA is also more portable to other machines when we get there. 18:39
or at least simpler to follow.
passing via $!orig/$!target might have the same sort of thread-safety issues as using a shared QRPA
jnthn true 18:40
pmichaud okay, that gives me a good place to start.
18:41 thou left
GlitchMr gist.github.com/3602814 18:47
I'm thinking too recursively
18:57 _jaldhar left 19:03 GlitchMr left
pmichaud jnthn: did you already put in the nohandler optimization for while/until/for/etc loops? 19:09
looks like "yes" 19:10
jnthn++ 19:18
cognominal what is the meaning of the box_target trait? 19:19
19:21 _jaldhar joined, stepnem left
jnthn pmichaud: yes 19:21
pmichaud: CORE.setting parse time and spectest times are currently at their lowest for quite a while :) 19:22
cognominal: If you're declaring a type that boxes a native type, it indicates the attribute that holds the boxed value.
pmichaud jnthn: I'm thinking of changing :nohandler to be :loopcontrol(0|1) 19:23
moritz r: class A { has str $a; has str $b is box_target; method Str { "$a|$b" } }; say nqp::box_s(A, 'foo').Str
p6eval rakudo 54030c: OUTPUT«Cannot look up attributes in a type object␤ in method Str at /tmp/5pcFkmopzV:1␤ in any at src/gen/BOOTSTRAP.pm:105␤ in block at /tmp/5pcFkmopzV:1␤␤»
pmichaud then the dynvar can be $*LOOPCONTROL or something like that
19:23 _jaldhar is now known as jaldhar
moritz r: class A { has str $a; has str $b is box_target; method Str { "$a|$b" } }; say nqp::box_s('foo', A).Str 19:23
p6eval rakudo 54030c: OUTPUT«|foo␤»
moritz cognominal: see above
19:23 cognominal left 19:24 nwc10 joined
nwc10 jnthn++ 19:24
19:24 cognominal joined
pmichaud anyway, I'm afk to pickup lunch 19:24
19:24 cognominal left
jnthn pmichaud: handlecontrol or so is maybe expliciter. 19:24
pmichaud loophandler, maybe?
moritz nwc10: I was confused by your latest p6c email, it looked like parsing took much longer (?) than before?
nwc10 yes, it did seem to 19:25
no, I don't know why
pmichaud we're using more memory, yes? that could be why.
19:25 cognominal joined
nwc10 it's reliable. Well, two runs both had similar numbers 19:25
cognominal thx jnthn
moritz nwc10: but still the overall build was faster?
jnthn That's odd; here parsing is somewhat faster.
19:25 Moukeddar joined
moritz that is... surprising 19:26
nwc10 we're using a bit more memory than when just Rakudo was on QAST
pmichaud the raspberry pi is extremely memory/swap bound
nwc10 but yes, the overal build is faster
pmichaud so anytime we use a bit more memory, things slow down a lot
nwc10 jnthn: you're not swapping like a crazy swappy thing
jnthn nwc10: True.
nwc10 apparently there's a "network block device" in Linux, but I've not found it yet
which would permit sane(r) network swap 19:27
I couldn't reliably get swapping over NFS to work
well, to keep working
I have this suspicion that the kernel needed to swap something out in order to be able to free a bit more memory up in order to talk to the swap device.
"Oh, bother."
moritz nwc10: I know I've exported an encrypted disc via the network block device 19:28
19:29 Moukeddar_ joined
sorear nwc10: linux doesn't swap to filesystems, it swaps directly to block devices 19:29
19:29 Moukeddar_ left
nwc10 sorear: yes, so I had to make a swap file on the NFS mounted file system, then make a loopback something, and then swapon that 19:29
sorear when you set up a swap file, the VM subsystem asks the file system to allocate blocks for the file and then don't reallocate them for a while
nwc10 which seemed to "work" 19:30
but actually didn't, when it mattered, after I'd gone to bed
sorear loopback swap is a Bad Idea for the reason you just mentioned, deadlocks
nwc10 ah OK. :-)
19:30 sirrobert joined
sorear it _is_ safe to swap to the network block device 19:30
nwc10 ah OK 19:31
sorear you're looking for www.kernel.org/doc/Documentation/b...ev/nbd.txt
nwc10 thanks
sirrobert how can I load a module at runtime (with, say, $module = "Foo::Bar") and check if anything gets loaded into the Foo::Bar space?
pmichaud okay, I'm really afk this time. @child[1] needs lunch.
bbl
jnthn sirrobert: require
sirrobert: Then a late-bound lookup (maybe the ::('Foo::Bar') way) 19:32
sirrobert hm thanks. (weird... I had trouble with require a long time ago
19:32 Moukeddar left
jnthn Occasionally stuff gets fixed ;) 19:32
sirrobert yeah, the ::($module) was working, but I had to do an explicit use
jnthn: heh nod =)
I should have just checked again =)
sorear Current state: It currently works. Network block device seems to be pretty stable. It was originaly thought that it is impossible to swap over TCP. This turned out not to be true, though the patch required to make it safe has not been forward-ported to any reasonably recent kernel.
sirrobert require works for me now
jnthn I think moritz++ did a bunch of require improvements not terribly long ago. 19:33
sirrobert ok, nice
saves me some headache, for sure
jnthn :)
jnthn digs back into the $dayjob task he procrastinated 19:34
sorear looks like it actually is somewhat used, sourceforge.net/mailarchive/forum.p...nth=201208 19:37
dalek kudo/nom: 962b9b1 | moritz++ | src/ (3 files):
typed exception for import name clashes
19:38 stepnem joined
sorear chrome sees the large volume of Russian spam and offered to translate the list menu page for me :D 19:38
jnthn Russian spam is handy for maintaining one's ability to parse cyrillic... :) 19:40
sirrobert heh
jnthn Most of the Russian spam I get is spam about services for sending spam...
moritz how recursive 19:44
if you have an email address linked to a scientific research institute, you'll soon get spam for silicon wafers 19:45
19:45 stepnem left 19:46 szabgab joined
szabgab hi 19:46
moritz \o szabgab
what brings you to IRC? 19:47
sorear o/ szabgab
19:47 stepnem joined
szabgab I am so lonely :) 19:47
sorear I got your email but I haven't figure out what to do with it yet
szabgab also I am trying to figure out when is blogs.perl.org/users/perl_6_reports/ going to be published? 19:48
sorear: say OK and I go ahead with it
sorear published?
szabgab sorear: I mean updated
the next one
moritz szabgab: raiph has been doing that in the past
19:48 immortal joined, immortal left, immortal joined
szabgab but taiph is not here now, right? 19:48
sorear raiph? 19:49
szabgab and I'd like to include it in the Perl Weekly that goes out in about 12 hours from now
19:49 erkan left
szabgab and the p5p weekly is also missing 19:49
what is this? summer holiday?
moritz seems like :-)
szabgab I was wondering if I should keep this tab open :) 19:50
on the channel, just in case, but I have not done any Perl 6 in a week now
benabik In the US, Monday is Labor Day. Many people head out on vacation for the long weekend. 19:51
szabgab this monday?
so no one will read the news :|
jnthn There are people outside of the US :P
19:52 wk_ left
nwc10 jnthn: I'm sure that's a myth created to scare small children 19:52
(just a myth)
szabgab according to my stats, that's just a myth :) 19:53
19:58 wk joined 20:01 Pleiades` left, Pleiades` joined 20:11 crab2313 left 20:13 crab2313 joined 20:15 marmay left
sirrobert any docs on try/catch? didn't see any on doc.perl6.or 20:24
g
20:25 Pleiades` left
jnthn sirrobert: I gave a talk on it recently: jnthn.net/papers/2012-yapceu-exceptions.pdf 20:25
moritz S04 probably
sirrobert thanks 20:26
MikeFair given grammar G { proto rule stuff { <*> }; rule stuff:sym<version1> { }; rule stuff:sym<version2> }
is there some way I can specifically request a match on stuff:sym<version2> or can I only match <stuff> 20:27
moritz you can only match <stuff>
another layer of indirection solves the problem
20:28 Pleiades` joined
MikeFair ok, what was the "match but do not consume" operator on <> again 20:28
moritz: hehe ;)
moritz <?foo> is look-ahead (match but do not consume)
<.foo> is match-but-do-not-record-in$/
MikeFair Right!! 20:29
there's a distinction there!!
MikeFair is learning! 20:30
20:31 popl joined
sirrobert why is CATCH in all caps? (ooc) 20:31
moritz because that makes it stand out
all of our phasers are all-caps
sirrobert hmm... phasers? 20:32
moritz also it's kind of a mini-namespace
sirrobert: blocks or statements that are run at special times during the execution
sirrobert ahh
phase-based blocks
ok, cool
thanks
moritz BEGIN, INIT, START, FIRST, NEXT, END, ENTER, LEAVE, PRE, POST
etc.
sirrobert makes good sense =) I'm glad to be able to put it into a semantically meaningful bucket 20:33
20:36 kaare_ left 20:38 nwc10 left 20:40 crab2313 left
sirrobert how would I add new tokens to a grammar dynamically? (runtime) 20:44
and corresponding actions to the grammar's action class, I guess
jnthn Whoa. :)
sirrobert heh
jnthn Well, they're just classes
So, same way you normally add methods to things
.^add_method and then remember to .^compose
sirrobert ok 20:45
jnthn (and tokens are just methods really)
sirrobert if I .^add_method and .^compose, do existing instances get affected?
jnthn Yes
sirrobert so there's no .^add_token?
jnthn If you want to do stuff per instance, use mixins
No, because a token is just a method.
sirrobert (might be a good addition, just for parallelism)
jnthn Just one written in regex language.
sirrobert ok cool... trying it
pmichaud yay, my lightning talk is (finally) online! 20:48
sirrobert I guess I have to re-write TOP to be able to handle the new token ...
pmichaud: nice =)
where?
20:48 PacoAir left
pmichaud www.youtube.com/watch?v=ILWrbvI8Qfg...ature=plcp starting at 27:30 20:48
20:51 tokuhiro_ joined
sirrobert pmichaud++: good talk =) nice work 20:55
jnthn wonders if they video'd the lightning talks at YAPC::EU :) 20:56
sirrobert is there any sandboxing work being done in p6?
or I guess you could replace the main grammar with a crippled version?
jnthn A crippled setting is more likely to be useful
sirrobert woops, gotta go... later, p6 =) 20:57
sorear rakudo and niecza both have sandboxes 20:58
and both sandboxes have holes big enough to drive trucks through
FROGGS_ pmichaud++ #awesome talk 21:05
pmichaud gabor also gives a really good talk at 45:15 21:06
er, szabgab++ :)
make that 45:50 21:07
21:13 thou joined
sorear pmichaud++ great 21:13
21:14 SamuraiJack_ left
szabgab pmichaud: either way thanks :) 21:34
21:36 MayDaniel left 21:49 hoelzro is now known as hoelzro|away
pmichaud szabgab: you're welcome... I really enjoyed that talk :) 21:49
21:50 szabgab left
masak o/ 21:51
pmichaud masak: o/ 21:52
masak has been busy with @friends in the weekend
I'm actually eager to dive back into macros, but sometimes being social takes precedence :)
pmichaud masak++ # enjoying the big blue room a bit
21:55 average_drifter joined
tadzik masak! \o/ 21:55
average_drifter hello
I came here today to ask you guys some questions
tadzik welcome
average_drifter as you may know, I'm a known and big troll. but today I am going to pose some serious questions
recently I've read on perlmonks a thread 21:56
masak sorry, we didn't know you were a troll.
at least I didn't.
average_drifter well only sometimes
masak: I am sometimes. but I have not been on #perl6
masak anyway, welcome.
average_drifter masak: on #perl however, I go there and bash them sometimes
masak we hug trolls here.
average_drifter anyway
back to my question
masak :)
average_drifter masak: yes, but I take my troll shoes off today 21:57
because I want to ask some serious question
so as I was saying I read a thread on perlmonks about a possible implementation of Perl5 using LLVM and Clang
and that was considered a very interesting idea because both LLVM and Clang are abundantly funded by Intel
and many other companies
so my question is: What do you guys think the lifetime and possibilities of development of Parrot are 21:58
masak that is a good question.
average_drifter and why you did not choose LLVM and Clang as the primary tools to build Rakudo
pmichaud several years ago, a number of people looked at LLVM as a possibility for a backend for Perl 6 in general and the consensus was that it wasn't yet sophisticated enough to be able to handle it. 21:59
diakopter because building rakudo grew out of a desire to implement Perl 6 on parrot.
pmichaud that may no longer be the case, but certainly it was the case in 2007/2008 when we were working on Rakudo.
today we're looking at making Rakudo work on multiple backends, and a few people have expressed an interest in LLVM as one of the backends. 22:00
average_drifter pmichaud: I understand. and now, looking on LLVM, how do you feel about the decision to use Parrot ? and may that change in the future ?
pmichaud I don't have any comment about our decision to use parrot then; there really wasn't a "decision" to make. 22:01
diakopter see the "Lessons about LLVM" section of qinsb.blogspot.com/2011/03/unladen-...ctive.html
"Unfortunately, LLVM in its current state is really designed as a static compiler optimizer and back end. LLVM code generation and optimization is good but expensive. The optimizations are all designed to work on IR generated by static C-like languages." 22:02
average_drifter ok, so I take it that LLVM isn't really geared towards dyanmic languages 22:03
pmichaud I don't have any plans to abandon Parrot in the future; we'll simply be supporting multiple backends. It's entirely possible that people will tend to prefer the backends other than Parrot, but we're waiting to see what actually happens rather than speculating at this point.
from discussions at yapc::eu a couple of weeks ago I'm led to believe that llvm may have better support for dynamic languages than it did previously, but I haven't had a chance to investigate that myself. 22:05
also, I'll be watching keenly to see what happens with the p5 on llvm effort (if one happens :)
22:06 xinming left
average_drifter pmichaud: from the discussion on perlmonks it seems that there was a person who attempted this 22:06
22:06 bruges left
average_drifter pmichaud: and the people on perlmonks were taking guesses as to why that person's code has disappeared 22:06
pmichaud: or what difficulties he/she encountered
22:06 bruges joined 22:07 dju left
average_drifter it's somewhat of a mistery to me at this point what exactly happened 22:07
pmichaud: have a look www.perlmonks.org/?node_id=989940
pmichaud as a general rule, all of the people I know who work with the p5 codebase in any detail talk about how incredibly difficult it is likely to be to port perl 5 to another runtime platform. This isn't to say it can't be done, just that it will require a lot of work. 22:08
22:08 xinming joined
average_drifter pmichaud: I know what you mean. I've dived in p5 guts a bit and feel like it's a huuuge "thing".. I can't find a different word to describe it 22:08
I'm actually afraid that at some point it will become so *complex* that people will be so scared of it and run away 22:09
including myself
but at the moment it's still documented, it's still manageable..
in some ways..
22:09 dju joined
pmichaud oh, I'm certain things will happen (more) 22:12
average_drifter let me give a small example of what I mean
pmichaud one of the things that happened at the perl reunification summit two weeks ago was to find ways that we can get perl 5 and perl 6 talking together; and one (of several) approaches will be to write a perl 5 system using perl 6 tools 22:13
TimToady++ already has a pretty good start on a perl 5 grammar
diakopter from the author: "Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them." just JIT. no GC; no object system; no interpreter.
average_drifter let's suppose someone wanted to make an asynchronous callback mechanism in p5. That stuff is highly non-trivial, you get to deal with multiple Perl interpreters running in different threads, a lot of Internal Perl API, a lot of macros, a lot of debugging, gdb gdb gdb..
22:14 ast joined
diakopter the title of the commit message where he added that text? "llvm is not a vm" 22:15
pmichaud average_drifter: right. I'm expecting that there will be a number of efforts to improve asynchronous event handling in p5.
with the eventual goal of having something saner that can be emulated/ported to other environments (and something that p6 can start to build to as well) 22:16
sorear diakopter: at yapc someone tried to tell me that LLVM, in terms of features, was a drop-in replacement for the CLR 22:17
diakopter omg.
sorear I thanked him while privately thinking "you have no idea what you are talking about, do you"
pmichaud sorear: heh, I had the same thought. Of course, I'd heard similar things from this person before so I already discounted it. :)
geekosaur ...wat 22:23
22:24 stepnem left 22:48 yarp joined 22:59 am0c joined
jnthn 'night, #perl6 22:59
masak 'night, #perl6 23:00
23:01 tokuhiro_ left 23:02 tokuhiro_ joined 23:05 shachaf is now known as SHACHAF 23:06 tokuhiro_ left 23:18 jeffreykegler joined 23:19 c1sung left 23:21 benabik left 23:22 benabik joined 23:23 tokuhiro_ joined 23:27 c1sung joined 23:28 tokuhiro_ left 23:37 yarp left
sjn 's funny and sad, named parameters have been mentioned as a todo 23:41
in perlsub.pod since the 90s
23:45 Circlepuller joined 23:46 Circlepuller_ left