morning all morning, jonathan % iblechbot has joined #parrot % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % wknight8111 has joined #parrot % ambs has joined #parrot good morning Is it morning again? YAWN... morning ambs % barney has joined #parrot % alex_ has joined #parrot % alex_ has left #parrot r27263 | jonathan++ | trunk: : [rakudo] Refactor storage of type information so we now store it in a general %!properties hash. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27263 % nopaste has left nopaste!~opaste@202-154-105-237.people.net.au % TonyC has left TonyC!~tony@202-154-105-237.people.net.au r27264 | bernhard++ | trunk: : [Eclectus] : Add missing ',' in NQP-generation. : Make the 'gen_past_in_nqp' the default implementation. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27264 % nopaste has joined #parrot r27265 | bernhard++ | trunk: : [Eclectus] : Rip out support for 'gen_past_in_pir'. : Add some notes in eclectus.pod. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27265 % barney has left barney!~bernhard@dslb-084-058-150-065.pools.arcor-ip.net % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru r27266 | jonathan++ | trunk: : [rakudo] Basic implementation of WHENCE, though it certainly will need fleshing out later. This is the first step in being able to set initial attribute values of parent classes from the call to .new(). diff: http://www.parrotvm.org/svn/parrot/revision?rev=27266 % mire has joined #parrot % kid51 has joined #parrot r27267 | jonathan++ | trunk: : [rakudo] Refactor the Pair class so we no longer use the Parrot Pair PMC, which was mutable and seemed a tad broken too. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27267 % askie has left askie!~askie@81.171.100.207 % ambs has left ambs!~ambs@255.92.54.77.rev.vodafone.pt % askie has joined #parrot % kid51 has left kid51!~jkeen@pool-68-237-0-100.ny325.east.verizon.net % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % ambs has joined #parrot % iblechbot has left iblechbot!~iblechbot@242.4-dial.augustakom.net % cognominal has left cognominal!~cognomina@82.67.232.89 % tetragon has left tetragon!~seneca@216.126.67.44 % ambs has left ambs!~ambs@255.92.54.77.rev.vodafone.pt r27268 | jonathan++ | trunk: : [rakudo] Improve new method to take auto-vivification closures, and also to die if you specify a named parameter that doesn't correspond to an attribute. So now new(Foo{:x(42)}) style stuff works. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27268 % gryphon has joined #parrot someone ate his wheaties this morning. =-) % patspam has left patspam!~patspam@ppp59-167-137-64.lns3.mel6.internode.on.net % Senaka has joined #parrot * Senaka likes the Parrot SW Foundation idea seen infinoid infinoid was last seen on purl 14 hours and 41 minutes ago, saying: seen chromatic chromatic was last seen on #parrot 1 day and 14 hours ago, saying: I'll update the wiki so I don't have to keep it in my braiiiiins. [Apr 29 16:41:29 2008] * Senaka mumbles.... r27269 | jonathan++ | trunk: : [core] The copy opcode currently blows up if working with an anonymous class, since it has no type number. We'll choose to morph to an Undef instead for now; may not be perfect, but appears to work fine. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27269 r27270 | jonathan++ | trunk: : [rakudo] Small addition to new to use the current protoobject's WHENCE, so now you can do things like my $foo42 = Foo{ :x(42) }, and then anything you instantiate from $foo42 will have x as 42 by default. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27270 % iblechbot has joined #parrot % cognominal has joined #parrot r27271 | jonathan++ | trunk: : [rakudo] Make it so we can specify multiple parameters in the WHENCE. This also sets us up a little more for slices, but they are some way down the list yet. These set of patches to introduce WHENCE will handle the common case of initializing superclass attributes, but will need some further changes later as we're supposed to wind up with lazily evaluated closure semantics. That looks a tad trickier, though. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27271 % Senaka has left #parrot % rhr has left rhr!~ryan@bas3-montreal02-1096681121.dsl.bell.ca % rhr has joined #parrot % Senaka has joined #parrot % Senaka has left #parrot % Andy has joined #parrot % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru % Zaba has joined #parrot % patspam has joined #parrot % davidfetter has joined #parrot % rdice has joined #parrot % davidfetter has left davidfetter!~chatzilla@start.fetter.org seen pmichaud,jonathan I haven't seen 'pmichaud,jonathan', tewk seen pmichaud pmichaud was last seen on #parrot 18 hours and 45 minutes ago, saying: particle: I have a gprs modem with kubuntu :-) seen jonathan jonathan was last seen on #parrot 7 hours and 4 minutes ago, saying: morning ambs twek: ping So I'm getting back into parrot, and I want error reporting to work. For example I'd like PGE to report the line of the grammar file that is failing, not just the pir. I've got a few tuits, just need someone to get me up to speed on what needs to be implemented/changed. I love PGE, I hate its error reporting. Aha, OK. WE have a branch for working on PDD13 things at the moment. Infinoid is working on moving us over to using PMCs for packfile stuff. But it may be possible to start getting some of the bits we need for the bytecode annotations in place. "tewk" at 155.97.237.62 pasted "I'd like to add grammar.pg lines numbers intermingled to this" (16 lines) at http://nopaste.snit.ch/12869 The spec is here: http://www.parrotcode.org/docs/pdd/pdd13_bytecode.html The relevant part is "Annotations Segment" This will give us the power to express line number, file, column and whatever else we need. We need this Parrot-level support first, then there's the work to tie this into PGE, PCT and so forth. % mire has left mire!~Frodo@140-173-222-85.adsl.verat.net jonathan: so do we want labeled annotation segments like one for PIR and one for HLL I would really like a HLL backtrace and a PIR backtrace eventually. regarding the PDD13 work, I've got some stubs in place but no meat yet... once I understand the current .pbc file format, I can start implementing RT#53130, and then we can start thinking about jonathan's nifty new format twek: yes, we will be able to have both. Infinoid: did you stub in the annotations segment PMC yet? yes, all the PMCs are stubbed https://svn.perl.org/parrot/branches/pdd13pbc/src/pmc/packfileannotations.pmc Infinoid's url is at http://xrl.us/bj2rq tewk checks out PDD13 branch OK, cool. * particle has thought PFAnnotations might be better than PackFileAnnotations, but that's lipstick it is a mouthful * Coke does not tend to prefer abbreviations like htat. but I spent half of the last six years getting paid to work on java. Infinoid: what is #53130 for? (isn't load_bytecode "foo.pbc" readonly, e.g.?) Coke: PDD13 task: basically, reimplement src/packfile.c in PMC form I've broken the tasks out into RT tickets... #53130 is read support, #53140 is write support ah % Theory has joined #parrot % ambs has joined #parrot particle: ping. is http://rt.perl.org/rt3/Ticket/Display.html?id=45413 closable? (or anyone with win32/msvc) ney no msvc :) Determining whether python is installed.........................yes, 2.5.2. AAAAAAAAAAAAARGH! % Ivatar has joined #parrot ? r27272 | ambs++ | trunk: : print version without the leading v diff: http://www.parrotvm.org/svn/parrot/revision?rev=27272 % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net Coke, parrot is detecting python. that can't be good is one of the languages using it? pretty sure we don't need it for anything core. probably Really? Probably? Are you Certain it's not certain? Are you sure it's unsure? I think you need to look harder. % purl has left purl!purl@sentient.life % purl has joined #parrot purl, seen schwern schwern was last seen on #perl 15 hours and 24 minutes ago, saying: YoMama: Microsoft Word Up! :-S % gryphon has joined #parrot does schwern work on parrot/perl6? nope. ambs needs him for other reasons. ah sorry, I could just msg purl. r27273 | jonathan++ | trunk: : [rakudo] Make regexes in grammars end up in the right namespace. Also begin treating grammars more like classes, so we will be able to get inheritance working later on. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27273 hmms... opengl.pir library has hardcoded library paths. not like it much ok y'all, dinner time...back in a bit ambs: I'm here damn, brb * ambs grins so, I love that parrot has opengl bindings. but, er, why? % AndyA has left AndyA!~andy@82.152.157.85 more interestingly, can they be easily used from rakudo ambs, rillian: I'm back OK, let me answer questions. japhb, tell me a thing Eevee: we don't have a good way to access the opengl stuff from rakudo yet japhb, that pathes on OpenGL.pir for loadlib, are generated during a config step? or are they always like that? in general, we haven't identified exactly where rakudo modules should go ah (in the runtime path, that is.) ambs: I don't like it either, but right now there is no way to find the system headers for any other way than manually iterating over the possibilities. be there really any good mechanism to call C from any p6 implementation? (actually, I don't ever remember reading anything about how that's supposed to work) You'll notice that some of the library names are just file basenames, and other ones have full paths -- this is because of the "different" way that Mac OS X does runtime linking Eevee: at present it's not well defined, no. japhb, right. I am having some similar problem with pcre, I think at least not for rakudo. although not sure yet So OpenGL.pir iterates over the known ways that different operating systems refer to the OpenGL libs, and just uses the first one that works. % AndyA has joined #parrot * pmichaud ponders a temporary NCI.pm module.... pmichaud, Eevee: jonathan has said he will put some effort into making it possible to access other language namespaces from Rakudo. Once that works, we'll be golden. rillian: Two reasons. 1) I am in the camp proposing that Parrot should ship with wrappers for common things (and even if it doesn't *ship* with said wrappers, for now we need to incubate those wrappers in the Parrot repo, just like Rakudo incubates here), 2) Because OpenGL is the subsystem I care most about. :-) I was mostly curious what you were doing with it rib compiler with scripting extensions? :) japhb: I've already got preliminary code to get PCT to access other hll namespaces -- just need to test and commit it. then Rakudo can use that. but the real issue at the moment is figuring out how to export symbols from one place to another and, in the case of OO libraries, getting the proper protoobjects in place for any given library * pmichaud suddenly figures out a way to to do the latter. but I need lunch. bbl pmichaud: +1 to all four of your comments. :-) what should a library .pir, like OpenGL or pcre do, when it fails to load a library? rillian: Right now, just spinning a triangle. Eventually -- porting my Perl 5 3D engine to Perl 6 using Rakudo ambs: In my case, if every way I can load the library fails, I finally give up and die. japhb, how do we die? :D * Eevee ponders re swig for rakudo? japhb: I love diversity! :) Eevee: something similar is the subject of a GSoC project % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru ambs: see OpenGL.pir: load_lib_with_fallbacks, near the end of the sub oh so it is no it isn't (die) use the die opcode % Zaba has joined #parrot that would be incredibly useful; c bindings and turing completeness are all you need to write anything (see also php) ambs: I actually throw an exception, but top level parrot then dies japhb, found it. * ambs will just die for now right -- just use the 'die' opcode that's what it's for. :-)( er, :-) pmichaud: why not throw an exception? I thought that was recommended for a module's behavior? japhb: die === throw an exception die "foo" throws an exception with a message of 'foo' nice japhb, you can remove three lines :D if nothing traps it, then parrot does a backtrace and dies pmichaud: Ah! So it just saves the work of having to create the exception PMC manually japhb: yes ambs, pmichaud: excellent. in PCT we actually generalize it to a panic method so one can do $P0.panic('Exception: ', $S0, ' has been reached with ', $I0, ' status') and automatically stitch together the arguments into a string that is then thrown using 'die' I also found a place to save a few lines in a similar way in triangle.pir -- but I haven't had a chance to implement the needed change to glut_callbacks.c to make it work. Damn $day_job! pmichaud: very nice! but in general, to throw an exception with a string is simply 'die' (unless the exceptions PDD has changed that recently) really gone this time. (lunch) hmms.. parrot doesn't have a -L flag, for library searching, right? ambs: I don't know exactly how parrot's dynamic loading works, actually. What you see in OpenGL.pir was the result of a couple days hashing out with the MacOS X people trying to get something that would work for now. It certainly seems less than ideal, to say the least. japhb, right also, I had to set DYLD_FALLBACK_LIBRARY_PATH so library.t find libpcre under /opt/local/lib ambs: I was thinking at one point of moving load_lib_with_fallbacks to runtime/parrot/library/NCI/ so that everyone could use it, but I didn't want to further cement this ugly hack. I guess it depends on how long until the problem is dealt with cleanly. OK, afk for lunch myself. sure r27274 | ambs++ | trunk: : Fixed pcre.pir to die if library is not found. : Added SVN properties to auto_pcre-01.t : Removed trailing spaces on remaining files. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27274 who is the current parrot pumpkin? is there any? % grim_fandango has joined #parrot we don't have one, per se. do you mean, "who is doing the next release?" or do you mean 'who makes sure stuff that gets checked in is sane'? the answer to the first one is chromatic. I know releases are cycling and my question is probably the second it's shared across all the committers; many of us follow the commits list and comment on commits. % slightlyoff has joined #parrot % slightlyoff has left #parrot that's just post-commit, though. "make test" is a pretty good starting point for pre-commit there's pre-commit work done too. Ultimately, it's up to allison, but most folks with a commit bit act autonomously at some lvel. Infinoid: that's a pretty good -ending- point. =-) nice. really? if it doesn't pass tests, I don't bother people with "is this sane?" questions if it does pass tests, you're done, though, neh? or you haven't written enough tests yet :) I was alluding to the decision about what should even be -in- parrot, and then the implementation, and *then* the fact that it's tested. the first third of that statement seems a bit ambiguous ok, sent an email for discussion about dynamic loading now it is time for dinner and I'll be back to read the flames and answers % ambs has left ambs!~ambs@255.92.54.77.rev.vodafone.pt heh, in that order. Infinoid: for example "should we have opengl bindings" or "should we provide transcendental math opcodes" some stuff gets checked in without a real design review. or architecture review, ftm. a lot of it is done post-commit. (Which I think has been working ok in the pre-1.0 stage.) % cotto_work has left cotto_work!~cotto@tide536.microsoft.com ok. I did get some flak for the opengl bindings :) % askie has left askie!~askie@81.171.100.207 % askie has joined #parrot and, in an ideal world, you'd have gotten the flak before anything was committed! ... perhaps I should "platonic" there to avoid implications of my personal preference. % IllvilJa has left IllvilJa!~jilves@emea-netcache1.oracle.co.uk % mire has joined #parrot % cotto_work has joined #parrot * jonathan returns from dinner % ambs has joined #parrot % sjansen has joined #parrot pmichaud: is it possible that tryeq and tryok are meant to trap an exception, potentially useful when you're just starting out? meant to, perhaps. But in the code they don't do that. as written they're local to arith.t, not testing in general. then by all means. You should have moritz make the SOC guy do that. =-) and in arith.t, any exceptions that occur would happen before tryeq/tryok are invoked. so they're kinda irrelevant. well, this came up in response to some questions from obra++, who is working on understanding the tests so he can put together a guide for people wanting to work on Perl 6 tests I agree with having the SOC guy work on it, but I also think there's plenty to do (and it's timely) that we can also handle it now r27275 | kjs++ | trunk: : [docs] update pir introductionary articles diff: http://www.parrotvm.org/svn/parrot/revision?rev=27275 % patspam has left patspam!~patspam@ppp59-167-137-64.lns3.mel6.internode.on.net any fink user around? % rafl has left rafl!~rafl@62.75.161.67 none around, it seems I tweaked the spec tests a little today, but it's tedious and I don't feel I made much progress to getting us anywhere close to having a set of tests that we expect to pass when running make spectest, which is what I want. % rafl has joined #parrot % davidfetter has joined #parrot and chromatic is not around again well, sent an email % Zaba_ has joined #parrot and another * ambs waits for flames again :D % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru funny, I thought the NCI stuff did dlopen(), rather than actually linking the binary against them Infinoid, they do dlopen but the binary is being linked as well those -l should be removed from the CC line used to compile parrot % wknight8111 has joined #parrot if parrot links without them, we obviously don't need them I know so I agree :) we need to correct the configure system about that just that :) ambs: otool -arch all -L $* (my ~/bin/ldd script) oh, nice Coke, but that doesn't solve the problem :D no, but it will avoid all those nasty greps. =-) sure Coke++ pmichaud: Just looking into passing flags from PAST to another compiler (for passing on sigspace and so forth). I don't see any way we can currently do this. Anyone have any comments on how to implement state vars in rakudo before I start hacking aimlessly? Tene: I'd not really thought about that yet. I can't think of a good way right off the top of my head. Neither can I. I'll hack around and see what I can work out. :) Good luck! :) * jonathan hopes Tene works it out. :-) jonathan: there's not a way to do this yet. It needs to be added. It's in my brain as "things I know how to do but need time to write the code" I'm also looking at resuming work on cardinal. cardinal++ (this came up in my dfw.pm presentation on Tuesday) or tcl. * Coke whistles innocently. Yes, or tc... eh? I was? ^_^ :) pmichaud: In your brain in a, you can explain to me how you plan to do it in 2 minutes so I can write the code instead? jonathan: short answer: add an "arguments" entry to the PAST::Var node PAST::Var? sorry, PAST::Op or wherever compilers end up now I guess it's PAST::Block Blocks. :-) OK, arguments entry takes a hash? yes And we flatten that into options? just a hash, passed as :named :flat hadn't decided what to call it possibly compiler_args or compilerargs or something like that compiler_args works for me... should be analogous to whatever the entry that identifies the compiler is it's rare enough that the name shouldn't be that significant, as long as it's clear. :compiler compiler_args it is, then. OK, cool. % japhb has left japhb!~geoff@76-191-190-8.dsl.static.sonic.net *or* oh, never mind Okie dokie :-) bad idea pmichaud: cardinal came up how? Tene: people were asking about what other languages were on Parrot, and there are a few people interested in ruby I said I was hoping that someone would pick up the cardinal effort again now that we have PCT available does anyone here actually speak ruby? not me I looked at it once and decided I could do JIT learning of it when I needed it :-) "JIT learning" is the best thing I've heard all day then, pmichaud++ :) % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.mn.comcast.net "jit learning" aka open-book test % Theory has joined #parrot coke: re #45413: resolved. I wish I could take credit for the term -- but it comes from one of my best friends and colleagues (who is designing "jit learning" systems for handling medical trauma) particle: danke. pmichaud: done. r27276 | jonathan++ | trunk: : [PCT] Allow PAST::Block to take a compiler_args argument, which we use to pass additional options on to a compiler. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27276 % Zaba has joined #parrot % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru r27277 | jonathan++ | trunk: : [rakudo] Make token and rule imply :s and :ratchet as they're meant to. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27277 % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167932018.dsl.bell.ca night purl, good night sleep fast, sleep tight, don't let the bed bugs bite better later :) % ambs has left ambs!~ambs@255.92.54.77.rev.vodafone.pt % japhb has joined #parrot % rdice has left rdice!~richard_d@CPE0014bfafbbd5-CM0011e6ecf48a.cpe.net.cable.rogers.com % iblechbot has left iblechbot!~iblechbot@ppp-62-216-196-141.dynamic.mnet-online.de Write-up of what I did today on Rakudo: http://use.perl.org/~JonathanWorthington/journal/36308 (Vienna.pm)++ jonathan++ cla? cla is Contributor License Agreement or http://www.perlfoundation.org/contributor_license_agreement particle: Was that for me? no, it was for a user in another dimension. please ignore. :-) jonathan++ is starting to make me feel inadequate. :-) Was gonna say, I'm sure I already signed one of those... pmichaud++ # you're not inadequate yet :) pmichaud: Oh, don't worry, I'm leaving you all the *hard* bits. ;-) heh I think we have a (wonderful) case where each of us thinks the other is working on the hard bits. :-) The docs on how you match against stuff in a grammar in S05 feels a bit sparse to me, or am I missing it? basically it's the TOP rule I know smartmatch against it should match against TOP. everything else is by method e.g.: 'foo' ~~ / / or perhaps Grammar::rule('foo') or even Grammar.rule('foo') or OK, the third one is the only one I can see inheritance working on? Or should it work somehow for all of 'em? first and third one I'm not sure about the second. PGE dtrt with respect to er, OK, I should look at what it's Right Thing is to make Grammar.rule work Also while I'm asking questions (for future implementation...)... Should you be able to do things like grammar Foo { ... }; say Foo.WHAT() If so, what should it report? % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net I think so, since a grammar is just a class Foo.WHAT() would report 'Foo' I'm trying to get my head around, how class-like grammars actually are. OK, they are class like to the point that we may as well just call make_proto on them? at the moment I think 'identical with a few extra bits like TOP' is sufficient And Foo is actually a proto-object? grammars and classes are isomorphic and yes, make_proto makes sense to me OK. internally I've been thinking of grammar as just another form of class I tried that and it got in the way of the Foo::rule stuff. So I got something to work and decided to leave making them more class like and doing inheritance and stuff for another day. PGE isn't smart enough to understand Foo::rule :-) (it should be, but isn't) feel free to file a ticket on that and I'll take it No, I meant in Perl 6 itself, outside of a rule. I mainly wanted to get the rules to end up in the right namepace today, though, which I managed. using the 'grammar' option to Perl6Regex ? (or maybe it's 'namespace' -- i forget) No, :namespace passed along to the compiler. Well, not even in the compiler args, but you don't need them - POST was already passing namespace as an option. oh yes, right. Perl6Regex does take a grammar option too, I spotted that earlier on today, but haven't looked into what it does. it's really just the same as 'namespace' OK. except that it tells the rule what sort of object to return if the rule is invoked with a non-match object Oh. That's probably going to be rather useful for making the inheritance work. right now 'grammar' is Perl6Regex's equivalent of :namespace I've been thinking it should change to :namespace for consistency It seems that it already takes namespace anyway. PGE does, or POST ? if passed a 'grammar' adverb, Perl6Regex puts the rule into the correct namespace I believe PGE must; POST simply passes the namespace on to PGE, and doesn't emit anything itself. hmmmmm I may be mis-remembering the code here, that was my impression. I need to review that :-) I know my memory of it is a bit foggy at the moment The other thing I need to work out is what actually goes into the namespace for a role. At the moment it's just the Role PMC instance. wouldn't role methods show up there as well somehow? Yes, I guess so. But I mean, if I do role Foo { } Then Foo is just an instance of the Role PMc It's not a proto of some sort? You can compose them with does, but that's it. (but what you wrote seems entirely reasonable to me) Right, it's not a proto. And you can't do .WHAT on it and so forth at the moment. does Perl 6 allow .WHAT on roles? The idea of a proto role didn't quite fit nicely in my head since I see them as uninstantiable things. I don't know. I don't think S12 explicitly says it should. roles don't quite fit nicely into my head in general, but only because I have so little experience on them anyway, if Foo resolves to a Role PMC that seems like a reasonable first start for now But you'd expect there is some way to introspect what methods they have and so forth. OK, sounds good. speakers so loud they blow women's clothing off! ...I need to stop saying "sounds good" in this channel. % davidfetter has left davidfetter!~chatzilla@start.fetter.org or fix purl. /kick purl I need to go revisit attributes in roles. ...and you said you were leaving me the hard parts...:-) I didn't really worry much about those, just methods, in the first go around. I agree, methods is good for the first go around And I think Larry changed them since last time I looked at it. purl, no, sounds good is |i seem to remember a line from "The Italian Job" about that.... ;) OK, particle. He does that. Shoot, he just changed S05 on me :-) (he did check with me first, however :-) The hard bit I'm more worried about with roles is type parameterizing them. % Limbic_Region has joined #parrot I haven't given it much thought yet, though. that goes "way down the list" on milestones Yeah. we can explicitly put "parameterized types" in the list if you want I've no plans on doing it anytime soon. jonathan: if you were to move on to something else, what would it be? * jonathan wonders how general particle's question is another rakudo roadmap item I'm expecting to get lots of coding time this next week I'm currently trying to do stuff around the top. Though I leave the very top two items to pmichaud my $otherjob clears up a bunch after this weekend i don't mean living in uk/living in spain/living in ?? pmichaud: still aiming for HLL first? Oh, I'm leaving Spain after next week anyway. Moving to Bratislava. I have a long list of things atm updating parser for listop is near the very top I have a long list of "somewhat important and easy-to-do" things atm that's a big win. On roadmap, my plan is to get a bit more grammars stuff done (make them more class like, get inheritnace to work and so forth). i'm going to put some tuits into the tests I want to update parser for listop, which means that we can get sub foo($x = 'whatever') { ... } working quickly For OO stuff, there is tons and tons to do. Like today I did the first cut of WHENCE. as a general approach for now, I'm tending to work from the top of the milestone list down we need tests for WHO WHAT WHENCE etc We do. I'm very happy if jonathan++ picks-and-chooses the features that he's interested in at any moment I would really, really love somebody to work on OO stuff. erm geck to work on OO *tests* Well, they can work on OO stuff too. But the tests would be great to have more of. put out a call in a blog entry, and on perl6-compiler, and possible perl6-language And it would make me really, really happy to be able to type make spectest and get a clean sheet. Or close enough that I can know I didn't break anything while adding feature X. jonathan: okay if there's lots of skips and todos? that's a good high-priority item -- updating t/spec with markers so that rakudo's make spectest passes Yes, because they don't show up as failures in the final report. I spent half an hour throwing in some more #?rakudo directives today. I think it's okay to add them a bit liberally at the moment Yeah, it's just very tedious. And there's no way to say "just skip this entire test file" with fudge, or I didn't see it. seems like there ought to be I thought we had discussed a way to do that? I haven't been involved in any discussions about fudge at all really, I only really started trying to make use of it today. my question was more directed to particle Ah, OK. Is fixing fatarrow parsing on your list at all? yes OK, cool. I should make a "Patrick's list" wiki page What about :precedence('transparent') ;-) ... do you mean colon pairs with postcircumfix or particularly :precedence ? Particularly precedence. (or did I miss a reference?) isn't there a skipall? * particle checks okay you need to all stop having the same length names It's used for parsing hypers. Eevee: me too gah Eevee: it could be worse. We could all have nicks that begin with 'p' :-) half of you do! % jonathan is now known as ponathan hah % Infinoid is now known as pnfinoid when I google for "postcircumfix", the entire first page of results is rakudo, perl6, and/or pugs % wknight8111 is now known as pknight8111 you've been pwned! ph34r. well now you just look like one person talking endlessly to emself * particle laughs at his tab completion list for p I do that often, yes. (talk endlessly to myself) sometimes I even listen. the conversation is better with yourself as long as you say intelligent things, its a net plus for everyone jonathan: for :precedence('transparent') -- that falls in with hyperoperators in ROADMAP :-) so it's a ways down on my list. pmichaud: On the transpartent precedence - it's needed for parsing hyper ops, which is some way down the list, I know. I don't understand PGE well enough to know how hard that is. heh when you vehemently disagree with yourself or ask yourself for clarification you start to look a bit nuts I'm thinking that hyperops will be outside of PGE somehow. jonathan, iirc this won't overflow: #?rakudo 999 skip 'reason' particle: That's sick, but works for me. particle: does it actually count 999 blocks? and/or tests, or whatever? no You'd have to add #?DOES 42 # or whatever the number of tests is % pnfinoid is now known as Infinoid % ponathan is now known as Jnathan % Jnathan is now known as Jonathn GECK! i mean, if there are more than 999, it'll work % Jonathn is now known as Jonathan less than 999, it'll be like skipall % teknomunk has left teknomunk!~teknomunk@ubuntubob.residential.okstate.edu pmichaud: What do you mean by "outside of PGE"? Jonathan: I'm thinking that I'll consider hyperops in conjunction with also looking at LTM % teknomunk has joined #parrot which may mean that the entire operator precedence parser may change Ah, OK. % pknight8111 is now known as wknight8111 And that is certainly a Hard Thing that I'm happy to leave to you. :-) heh, yes, that definitely counts as a hard thing :-) anyway, time for me to go to dinner Basically, though, once you get us the ability to parse hypers and reductions and crosses, I don't see the rest being so hard (e.g. making them work). OK, enjoy. I agree I will sleep soon too. and I'm eager to see hypers and reductions also Sure, they're a cool thing. I've even though of having rakudo simply generate >>X<< tokens for every X *thought That'd be one way. that would be a lot of tokens If LTM is planned for this summer, we can wait until them, IMO. my thinking exactly It's not like we've a shortage of other tasks. if ltm yields some obvious answers, I'll do it then -- if not, then we can do a couple of temporary workarounds anyway, gotta run Ok, enjoy dinner, cya LTM? LTM is longest token matching that is the first time purl has told me anything relevant * Infinoid pats purl * purl pats Infinoid back, harder Jonathan: out of curiosity, is there any documentation that's reasonably relevant for the current .pbc format? PDD13 is obviously the goal, but docs/parrotbyte.pod also doesn't look quite right but if one of those is pretty close, I can use it * Eevee glances over S12 again (learning the file format by reading the source is proving to be slow.) Infinoid: the code is self-documenting. http://www.parrotcode.org/docs/parrotbyte.html is somewhat accurate % Zaba_ has joined #parrot But we now have the header format of PDD13. But the other bits are accurate. oh, ok, great. thanks! Or reasonably accurate. It's missing a section on the PIC segment. I asked leo to write one a few times, because I didn't understand it, but that never happened, and I still don't understand it. :-) However, I'm moving an hour away from him in a week and a half, so I can probably physically extract it from his braaaiiins. :-) i'll send you a box of crazy straws. then *he* won't understand it does he even understand himself? % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru Well, he implemented it. ;-) well, I'm pretty sure I'll understand it after reimplementing it though, to be honest, I don't fully understand PDD13 either I think I sent you some questions about that. :) Win32/Cygwin is now passing 30.49% of rakudo spectest Oh, oops. :-) Limbic_Region: Given I develop primarily on Win32, Rakudo gets quite a bit of love there. Infinoid: Did you email them? same here Jonathan - Win32/MinGW doesn't report the same though - I have no idea how much is passing/failing there Oh, curious. * purl hands Jonathan a dead cat and I am not quite sure how it is possible to fail 200% of the tests Jonathan: good idea. expect something in the next few days OK, email is the best way to give me stuff to do that I won't forget. Jonathan - would you like a nopaste of the output I see with Win32/MinGW? I'm normally not *this* bad, but in the last week I've had someone to visit, and at the same time been planning moving country, plus trying to work out what to speak about at two conferences... Limbic_Region: I'd be interested to know, if Parrot generally fails a lot of tests there. % Ivatar has left Ivatar!~graham@tu055.demon.co.uk Though if it's 200%, then I suspect it may be a test harness issue. Jonathan: I always am that bad, if its not in the inbox, it doesn't exist for me... no worries. this is specific to Rakudo I don't run parrot's test suite except for the monthly release cycle OK, maybe email me them, I really need to sleep soon and I won't get chance to look at it any more tonight. no problem, I'm outta here anyway (that was for LR) right - will email you the nopaste link oh. seeya regardless :) OK, cya :-) sushi & Limbic_Region: Thanks, may be able to make sense of it, don't have MinGW set up here. purl nopaste somebody said nopaste was at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating "Limbic_Region" at 68.49.236.220 pasted "For Jonathan - Rakudo spectest output on Win32/MinGW - note, no summary" (997 lines) at http://nopaste.snit.ch/12870 % tetragon has joined #parrot email sent purl Jonathan Jonathan is mailto:jnthn@jnthn.net hrm that's not the email address in CREDITS *shrug* What's in CREDITS? The one purl gave you is right. Updated CREDITS. r27278 | jonathan++ | trunk: : Update my CREDITS entry to have correct email and website. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27278 Limbic_Region: please resend to the one purl gave Jonathan - ok - I already sent to 2 will send to that one too OK. :) and my subject isn't quite accurate it is producing summary info but it isn't useful ok, thanks sleep now * Jonathan & % zarchne has left zarchne!~michael@209.40.67.38 % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com % obra has joined #parrot rakudo-folks: what's the current expected output of 'make spectest' ? many many failures we need to add more #?rakudo skip 'parsefail' and similar directives obra: we were just discussing that we should probably decorate most of the existing t/spec files so that 'make spectest' is more useful on rakudo (about 60 minutes ago :-) % teknomunk has left teknomunk!~teknomunk@ubuntubob.residential.okstate.edu Jonathan did some of that today, but he did way too much work he added #?DOES 3 etc everywhere, and we don't generally need that I agree he also deleted some pod we should be able to parse % teknomunk has joined #parrot also, instead of #?rakudo 999 skip 'reason' I think we should use 99999 /pugs> svn diff -c 20340 easier to search for, less likely to hit 100000 tests than 1000 i *think* we caus #?rakudo eval 'somethingorother' s/caus/can/ maybe eval exit; can we support eval yet? I'd be a little surprised about that. no, it's a fudge directive right, but since it depends on a conditional parse.... it doesn't write 'eval' in the generated code then how does it work? it writes what's after the fudge directive called 'eval' iirc #?implname [num] eval 'reason' eval num tests or blocks and skip(num) on parsefail ah, yep it does eval we have an implementation of eval, but it doesn't understand outer scoped lexicals yet Where does the Test.pm which Rakduo uses live? languages/perl6/ (top level in that dir) particle++ was going to see about updating it a bit, I think ..right in front of my nose it uses arity-based multisubs to avoid the need for optional params but we can handle optional subs now we can handle optional params w/o initializers now i mean... optional args sub foo($x?) { ... } # ok sub foo($x = 4) { ... } # not yet impl % kid51 has joined #parrot that's can't be too hard, can it? the tricky part is parsing the expression following the '=' sub ok($cond, $desc?, :$todo) # works eek~ get rid of that :$todo evil stop it icky hee it's now i put it there just for you todo('reason'); ok('whatever') yes. but yes, named parameters are properly optional sub ok($cond, $desc?) # will now parse in rakudo Eevee: it's not too hard to do the '=' part, though, no. It's on my high-priority list. as in, I think I will get to it sun or mon (it would be sooner but I have to travel/work fri/sat) ah okay multi sub ok($cond, $desc) { proclaim($cond, $desc); } multi sub ok($cond) { ok($cond, ''); } can be replaced with % Ademan has left Ademan!~dan@h-67-101-42-224.snfccasy.dynamic.covad.net multi sub ok($cond, $desc) { $desc //= ''; proclaim($cond, $desc); } but, if by sunday, that can be multi sub ok($cond, $desc = '') or whatever the syntax is, i don't think it's worth changing now is it worth converting things to = '' syntax, or should we just leave them as they are now? after = '' is in, i say we use it it's more DRY okay. I'm trying to keep Test.pm on the simple side as well. :-) multi sub is($got, $expected) { is($got, $expected, ''); } hurts my eyes gee, I always thought that was kinda elegant :-) unnecessary use of word 'multi'. five yards. repeat down. elegrant grossness sorta like the nonword "elegrant" which I may now coin to cover my typo heh flagrant use of elegance. 10 yards. loss of down. flagrant use of football metaphors. 15 yards, ejection from channel. (is this good or bad I don't watch much baseball) arith......1/188 get_bignum() not implemented in class 'Float' current instr.: 'infix:+' pc 8651 (src/gen_builtins.pir:6074) % particle has left particle % particle has joined #parrot you sure showed you sometimes, i get so high, i jump back, and kick myself. any idea what horrors I have brouught upon myself? % japhb has left japhb!~geoff@208.201.228.107 obra: I don't think Parrot (or Rakudo) seamlessly handles bignum conversions yet I'm a little surprised to see that, though I've been dumbing down arith.t the only questionable thing I've done so far is to comment out "undefine $a" not actually knowing perl 6, I don't know if that's a fuction in Pugs Test.pm or a missing builtin I guess the numbers are going outside of Parrot's Float range somehow well, it's very carefully constructing insanely large numbers I was thinking it was perhaps cribbed from the p5 test suite ok( abs( 13e21 % 4e21 - 1e21) < $limit); anyway, I would #?rakudo skip those until we get bignum support in is test 5 % Ademan has joined #parrot I think I still prefer is_approx( 13e21 % 4e21 - 1e21, 0 ); is_approx++ I don't know if Pugs' Test.pm has is_approx though nor do I know how important it is to be able to test to the limit this test file had its own variant thereof that's another case where I wonder if it was cribbed from an equivalent p5 test what's the ETA on parrot giving sane line numbers / stack traces for failures like that? I'm guessing 3-4 weeks it needs some parrot support * obra nods I could see about prioritizing a workaround, but I keep hearing noises about people fixing the bytecode format so that I won't need the workaround * obra nods it's important enough that a workaround might be worthwhile fudge supports is_approx, so i say we use it if pugs' doesn't have it, it'll have to implement one arith......1/188 Null PMC access in invoke() is|ok|is_deeply|is_approx|isnt|like|unlike|eval_dies_ok|cmp_ok|isa_ok|use_ok|throws_ok|dies_ok|pass|flunk Null PMC access in invoke almost always refers to trying to call a non-existing function is there a faq for this sort of stuff? we could create one. But I don't know where to put it. wiki % patspam has joined #parrot actually, one probably already exists. But I don't know where it is. fwiw, it's not specific to rakudo -- it really exists for Parrot and for PCT in PIR, "foo"(1) gives "Null PMC access in invoke()" if foo doesn't exist. % TonyC has joined #parrot reporting sane line numbers is RT#43629 and RT#53082 and there's no way to find out what the missing sub being called was/ ? I'm looking up the RT ticket for that one :-) Ticket # won't help me much ;) it's all fine sane line numbers? I vote for that one! RT#49972 explains why it doesn't work. I'm pretty sure I'll need to update PCT to report missing subs since I don't think Parrot will do it anytime soon is there a way to tell rakudo to keep running after a parrot failure? % zarchne has joined #parrot ... try ? fudge allows $?rakudo try [num] 'reason' * obra was pondering whether p6 gives us enough rope to make ok() insert an inner frame that wraps a try in there. which puts 'try' blocks around the tests that follow ok it's very useful to read the fudge code at the beginning Sorry. I'm very much a newbie at this http://svn.pugscode.org/pugs/t/spec/fudge in truth, we all are. Even I'm having to look up the items as you ask for them :-) * obra nods #? rakudo [num] try 'reason' and i keep giving wrong answers no space between #? and rakudo yes, I typoed above obra: I've tried all sorts of such tricks, and the preprocessing is by far the most straightforward TimToady: understood it's also the most likely to work early on but the main advantage of the fudge approach is that it is completely obvious when you aren't using it Even if we'll be able to do sick things once we have a fully operational death star. er. Perl 6 implementation whereas all sorts of niggly hooks, you don't know if they're turned on or off I really like the fudge impl, fwiw. TimToady++ and particle++ with fudge, just *don't do it*, and if it works, you're golden the disadvantage of fudge is that you have to be a little disciplined in how you write individual tests discipline in a specification test suite is probably a good thing, though. discipline for the masses! freedom for all! Is my discipline obviously lacking in this: http://paste.husk.org/11313 ? obra: you may be the first person to try 'try' in fudge :-) obra: s/\#\$\?/#?/ you don't have to put the number if it's 1 oh yes, I had the number in the wrong position in my examples. that's why the number is where it is, so it's easy to tell if it's missing Apparently tonight I'm only good for general pointers, not for exact syntax :-| particle: you win pointers...are those kinda like references, whatever those are? except, no adding a second test of ok(1); reports two failures or maybe I have another typo obra: you may be the first person to try 'try' in fudge :-) :-) or in rakudo, for that matter. it works in rakudo we have sanity tests for try, iirc * obra nods no, I meant fudge's try in rakudo ah, mebbe I know that try { ... } "works" in rakudo. it's easy enough to look at the .rakudo file and see what fudge did with it the thing about try is that it can't really tell how many tests ran inside a block before it failed (if you use the block syntax) * pmichaud gives the whole thing a try. er presumably that sort of thing gets caught by the "planned" number #?rakudo 1 try 'i hate this' (try { is( 2147483647 + 2147483647, 4294967294); }) // fail('i hate this') I would expect a trailing ; Is that my p5 showing through? could be a buglet also, it looks like there's no sub fail defined. aha that's likely should that be 'flunk'? or is flunk something else? what's the p6 def for fail()? fixed the ; (i.e., where is it defined?) fail is for grammars just for grammars? well, probably not but it's likely that's why flunk exists fail() is mentioned in S04 okay, fixed that too TimToady++ # fast enough turnaround that I didn't manage to get into fudge should be flunk in any case, since fail would return an exception instead of continuing is flunk() a Test.pm function? not yet I mean in pugs we need to add flunk() to Test.pm yes, pugs has flunk, I believe Test/lib/Test.pm 261:sub flunk (Str $desc?, :$todo, :$depends) returns Bool is export { (in pugs) * obra needs to wander home. thanks for the intro help thanks, obra! obra++ with luck I'll manage to get this far enough along to move arith.t into spec over the next couple days and write about it obra++ "chromatic" at 69.71.189.252 pasted "[proposed PATCH] Throw Exception when invoke()ing NULL PMCs" (26 lines) at http://nopaste.snit.ch/12871 http://paste.husk.org/11314 that's a first, bad stab at "make fudge's flunk work" looks pretty good to me although could even simply do proclaim(0, $reason) it's two separate patches, but it looks pretty good having "flunk" there does make it clearer two separate patches? the two changes are not tightly coupled sure, one is to fix proclaim to include the description it's worth applying * obra wonders if he actually has a commit bit to Parrot I'm confused... doesn't proclaim already include a description? obra: if no, I'll apply in just a second % patspam has left #parrot (also dealing with kids and students in other windows) if it's todo, it includes only the todo reason from fudge if $todo is defined, that was clobbering the reason not the individual test reason er. which seemed kind of subpar applying. % Zaba has joined #parrot thanks r27279. r27279 | pmichaud++ | trunk: : [rakudo]: : * Add flunk() function to Test.pm . : * Patch courtesy Jesse Vincent (obra++) diff: http://www.parrotvm.org/svn/parrot/revision?rev=27279 % Zaba_ has left Zaba_!~zaba@ip102.148.adsl.wplus.ru (chromatic's patch) .... doesn't Parrot already throw an exception when invoking a NULL PMC? I don't see the purpose of the patch. it makes the invokecc op throw an exception before trying to invoke a PMCNULL rather than having the Null PMC throw an exception when the invoke vtable function is called % pasty has joined #parrot at least it has a type, GLOBAL_NOT_FOUND, that you can catch that seems... wrong How do we know that the Null PMC is due to a global not found? it could've come from a variety of sources i agree. the exception should be thrown in find_global I don't want an exception there, either hey, you're looking for something to invoke, and i can't find the thing you're looking for did you mean find_name? or get_global? in either case, how do you know that the thing you're looking for was something to invoke ? i'm too far removed to know the exact name we use get_global and find_name to get things other than subs and "null" is the standard way we have to determine that the thing doesn't exist. if parrot is going to try to solve this problem, it needs to do so in the code it generates for a symbolic sub call invoke i.e., instead of generating $P0 = find_name 'foo' $P0(...args...) it needs to generate $P0 = find_name 'foo' unless null $P0 goto label throw "cannot invoke 'foo'" label: $P0(...args...) bbiab -- kid request % slavorg has left slavorg!~tomi@windmill.london.pm.org % slavorg has joined #parrot ...but I'm thinking I can do the equivalent in PCT without having to modify Parrot * Tene debates between cardinal, lolcode, and naptime. pmichaud: tcl is currently doing the latter. tcl is doing naptime? if there's a shortcut, that'd be nice, but the various languages might not deal with it the same. no, but I am. I think I'll add it as a flag or option to PCT tempting to to put that in an opcode. invoke_by_name no, because we have to do calling conventions hurm. find_or_die, then. =-) (but that's probably not worth it.) it would be nice to have find_name with an optional flag to decide whether to throw the exception or not but that's just another form of find_or_die I guess. we've previously discussed compiler pragmata yah. I'm fine with it either way. I don't like pragmata at the assembly level. .failure_mode 'throw' .failure_mode 'null' whatever. perhaps some PIR sugar to automatically throw an exception, though. that I could get behind. $P0($P1, $I2) :throw I was thinking it would go on the find_name. easy enough if you make that a method on the namespace just need to update NameSpace PMC to use PCCMETHODs more fully * particle needs food & Wow, I forgot how slow cardinal was. % jjore has left jjore!~jjore@c-24-16-241-176.hsd1.mn.comcast.net "tene" at 67.111.53.82 pasted "cardinal is really slow" (30 lines) at http://nopaste.snit.ch/12872 10s just to call a couple of functions. most of it is just parsing. --target=parse is 9s % grim_fandango has joined #parrot parsing is still the slow part of things, yes. that's why I'm looking at revising pge (looking at cardinal's grammar to see if there's anything obvious) although it shouldn't take 9s to parse that relatively small program. ohhhhh probably ought to memoize the rule it's almost worth creating a subrule just for that I think pct should provide a memoize function for clever how would one define an lvalue .sub for a rakudo core function? obra: what are you looking to make? undefined i guess undefined is false, but so are some defined values er undefine lvalue sub... I suspect one just puts a sub on the lhs of an assignment but I'm not sure it will store the value anywhere that's not exactly something we've done yet :-) what is undefined? well, undefined is false, but so are some defined values er, undefine? oh, you're just looking for something that is rw? .sub 'undefine' .param pmc x $P0 = new 'Undef' # this isn't real p6, but it works copy x, $P0 .end something that modifies its argument I'm digging for where in the syns I saw the spec for undefine. or whether I'm hallucinating I see it in Perl6/Spec/Functions.pod and throughout the tests but only a single reference in http://dev.perl.org/perl6/doc/design/syn/S04.html (copy was the bit I hadn't figured out) I'm trying to recall what the problem was with persuading cardinal to allow function calls as arguments. I had it all figured out, but didn't get around to fixing it before I forgot it, quite a while back. so, assuming that undefine is supposed to be a core function, I have the patch, with test It's recursive somehow... % rdice has joined #parrot I don't know if the parse tree for foo(1) in cardinal is funny or scary. hey rdice ahoy! undefine is probably not in the synopses yet that's true for a lot of the builtin functions. Spec/Functions.pod is essentially the draft of S29, iirc * obra nods do you want an undefine? ;) if the spec doesn't cover something, then Spec/Functions.pod is the next-best-thing for now sure! patches welcome. That's swahili for "Put up or shut up." Pasted to: http://paste.husk.org/11315 next question: it has been said that next question: is the source sensible? in this case it's english for "If you send me a patch I'll be very happy and give you a karma point." :-) I'd guessed ;) karma++ my $a; $a++ BOOM rakudo needs help with its Undef work technically P6 no longer has an Undef so we have to define the Failure type and then define the increment operation on it and I think we just haven't quite gotten around to that yet I wonder how much this grammar could be condensed without losing anything important... Tene: I think that memoizing <.ws> will save a ton of parsing time after that, ltm will be the best bet. I didn't see any obvious grammar condensations in my quick perusal of it pmichaud: I'm looking for sanity in trying to fix it, not for speed. the current grammar allows foo(1), but not foo(foo(1)) *that's* odd I thought you were talking about something like foo(bar) where 'bar' is another function It appears that all you need to do is add to basic_primary, but that loops forever. (working on applying obra patch, but also need to svn up parrot so will take a few mins) pmichaud: no worries. the things I'm looking at cleaning up are some of the multiple-variants-on-the-same-name which all call each other. is there a right place for failing tests of incrementing from undef? good question. I'd guess somewhere in S03 (operators) Oh! I should make a graph! Where's the grammar-to-graphviz script, I wonder... probably whatever is testing the increment operator itself I think there's already an autoincrement.t in t/spec/03-* % davidfetter has joined #parrot tene: adding command to basic_primary is probably correct, but you have to make sure it gets tested before other things that might be a subset r27280 | pmichaud++ | trunk: : [rakudo]: : * Add 'undefine' function and a simple test. : * Patch courtesy Jesse Vincent (obra++). diff: http://www.parrotvm.org/svn/parrot/revision?rev=27280 also, anything that can be converted from 'rule' to 'token' would probably speed things up a bit also so as to avoid all of the extra calls to <.ws> I can't actually find anywhere in S03 that says we should coerce an undefined value to 0 for autoinc it likely falls under the "anything not mentioned is still like p5" otoh, S04 says that if we try to do something with a Failure value, then it throws an exception so.... I dunno. At this point I'd probably ask p6c, p6l, TimToady, or #perl er, #perl6 http://pleasedieinafire.net/~tene/cardinal.png or pugs. :-) bah. my pugs commit bit appears busted. Pasted to: http://paste.husk.org/11316 anyone with a pugs bit easily able to add those to autoincrement tests cribbed from the syn? I've got one -- just a sec note that there was recently some dicussion on postfix:<++> on p6l; I don't know that anything made it into the spec. * obra nods all I've done is added the weird examples from the syn well, the weird examples were the things being discussed. :-) But I'm pretty sure the changes you made are still spec-compatible. Besides, we should write to what's written in the spec, not what's discussed on list. :-) r20354 (pugs) rules like the rule in cardinal make me nervous. seems reasonable they've just chosen to handle ',' as a syntactic element outside of an opp pmichaud: thank you. (operator precedence parser) * obra -> sleep obra++ # many nice patches maybe tomorrow, I'll try to get arith.t to pass oh. last question Why have that just calls , though? rakudo appears to require () on function calls at this point. (I'll be travelling much of tomorrow... but others will be around to help) I also have a ton of actual work I need to do ;) NQP requires (), but rakudo doesn't Even the method is just: make $( $ ); er, rakudo shouldn't. hm. I wonder why it flips out when I don't have () for ok and for undefine ok '1'; # fine in rakudo > say "foo"; foo bar yeah, works fine. Syntax error at line 10, near "undefine $" current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82) interesting. hm. nopaste source? maybe it's just undefine. even undefine should work. ah Pasted to: http://paste.husk.org/11317 I suspect the grammar is stopping at 'undef' heh got it ok. kaia has just appeared. I really need to run if so, easily fixed. "pmichaud" at 76.183.97.54 pasted "results after fixing 'undef' (and also 'self')" (19 lines) at http://nopaste.snit.ch/12873 % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.mn.comcast.net fixed in r27281. Tene: (mrhs) Grammar authors often create "stub" rules to clarify things in the grammar r27281 | pmichaud++ | trunk: : [rakudo]: : * Make sure that 'undef' and 'self' aren't prefixes of a larger identifier. : * Bug reported by Jesse Vincent (obra++) diff: http://www.parrotvm.org/svn/parrot/revision?rev=27281 for example, I've see things like (p6 equivalent) token then { 'then' } you're correct that in this case it could be eliminated, since is only called in one location ( ) The thing is a bit weird... % kid51 has left kid51!~jkeen@pool-71-247-44-69.nycmny.east.verizon.net it's "multiple left hand side", yes? Yeah. Essentially: rule mlhs { | '(' ')' } % pasty has left pasty!~pasty@theproject.fierypit.org % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net they might not have been easily able to write a self-recursive rule (I'm just pulling at straws... ) Please note: this isn't significant questioning, just idle chatter while I try to swap this whole grammar in. right same here (while I do other stuff, such as close the 20+ windows I've managed to open over the past 90 minutes) % rdice has left rdice!~richarddi@CPE001ff33cb98b-CM00159a01d44c.cpe.net.cable.rogers.com Hrm... When is the symbol '_environ' defined? pmichaud: s/rule/token/ in several places reduced the time to 4.1s for me. tene: yes, that's pretty significant. If I get a few free tuits tonight I might quickly add memoize to PCT::Grammar and try that Really, should be calling , not the other way around... % petdance has joined #parrot Wait, why does Cardinal's grammar have both infix:= and an assignment rule? wtf? oh, multiple assignment, I guess. hmmm? that would be odd cardinal is ruby-ish, right? I suspect infix:= is extra multiple assignment is within the assignment rule purl cardinal? cardinal is http://mail.freesoftware.fsf.org/pipermail/cardinal-dev/ or the Ruby-on-Parrot project. or http://xrl.us/uyz3 I wonder if there would be problems if I just implemented infix:, instead is the current comma handling causing an issue? I think you're probably better off keeping commas out of the opp, for most languages not really, but it looks like it would possibly simplify some things. (I could be wrong about that, but that'd be my first guess) actually, I suspect that cardinal is currently using infix:= where it should be using (in terms of generated code) nodnod me too afk for a while Got parrot to compile/link on OS X without '-undefined dynamic_lookup' set (Including OpenGL) % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167932018.dsl.bell.ca With -fvisibility=hidden removed from the flags (and not using -j2), there were two points that I encountered difficulty 2) The GLUT callbacks needed to be pointed at libparrot to before they could link 1) When linking libparrot, I needed to add '-Wl,-U -Wl,_environ' for it to work as pmc/env.c refers to the undefined symbol char **environ (That linker flag allows the specified symbol to be undefined) % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net Ack, the precedence is all off in cardinal Or possibly not precedence... n + 1 parses as n( 'infix:+'( 1 ) ); % japhb has joined #parrot % Zaba_ has joined #parrot Allowing a full :: or . before a call? That doesn't sound right. That would allow a call on 'if's and function defs and such. % Zaba has left Zaba!~zaba@ip102.148.adsl.wplus.ru tetragon: the "environ" symbol is provided by the C library, on linux. yours doesn't? 1 + 1 parses, but 1 - 1 doesn't? Weird. a comment in the source says it is specced in POSIX.1, but if that were the case, we could probably just #include something, rather than declaring it directly The symbol is declared in env.c, but the linker wants the symbol well, its declared as extern, so it is looking for the actual implementation of it somewhere else (the code assumes its provided by the C library) haha, libSystem.dylib doesn't define a symbol "environ" do you have an environ manpage? It's there on linux, its apparently considered part of the execve() API, so its listed on that manpage, and apparently declared by unistd.h Complete with the same declaration line that's in env.c k, so what do you have to link against to get it? :) % nm /lib/libc.so.6 | grep environ 00000000000335c0 t __add_to_environ 00000000003449f0 B __environ 00000000003449f0 V _environ 00000000003449f0 V environ 0000000000343240 b last_environ That's not how it's done on OS X "Shared libraries and bundles don't have direct access to environ" (from environ(7)) well, that's not POSIX-compatible so be it. we should rework env.pmc to handle OS X in a different way The manpage tells how to access it oh, it's trying 'is equal' instead of 'is equiv' I'll have to add in some changes to use _NSGetEnviron() in crt_externs.h to get environ's address (And hope that someone out there has an OS X 10.5 Intel Mac available for testing. I've noticed differences from time to time between the i386 and ppc OS X ports) Be back in a few minutes you could probably work around it by declaring a parrot global named Parrot_environ, that goes into the parrot executable, and is initialized to environ % tetragon has left tetragon!~seneca@69-196-138-185.dsl.teksavvy.com Hm.... infix:< doesn't work. % tetragon has joined #parrot Bah, the i386 (10.4) environ manpage makes no mention of any issues such as those on the (10.5) ppc. % Theory has joined #parrot really. so does it work? % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.mn.comcast.net the _NSGetEnviron() hack looks pretty easy to implement, in any case... http://devworld.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man7/environ.7.html tetragon's url is at http://xrl.us/bj3qd That appears to be the same as is on my 10.5 box I was reading http://developer.apple.com/documentation/Darwin/Reference/ManPages/man7/environ.7.html Infinoid's url is at http://xrl.us/bj3qh r27282 | infinoid++ | trunk: : [rakudo] Fix trailing whitespace in named-unary.pir. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27282 ...which looks identical. The manpage on my 10.4 box is almost identical to that of recent FreeBSD You'd almost think that Apple has multiple paths to the exact same data what's something I can #ifdef for, for OSX fixes? maybe their site is just case insensitive... By default, HFS+ is case insensitive But with some of the documents, there really are multiple possible paths well, the leading directories are definitely case-insensitive http://devworld.apple.com/dOcUmEnTaTiOn/Darwin/Reference/ManPages/man7/environ.7.html Infinoid's url is at http://xrl.us/bj3qd And I can 'use DaTa::DUMper' just fine in Perl 5 here devworld.apple.com is an alias for developer.apple.com (a CNAME in DNS) lucky you, I guess :) (Although, the warnings that can occur as a result of a miscapitalised package name are rather tedious) I bet it causes weird %INC mismatches. so... what can I #ifdef for, to detect OS X? can I just "#ifdef darwin"? It's real slow, but I can run a simple fibonacci series now with cardinal. ooo, Tene++ A few hacks, and swiping some stuff from rakudo without checking the ruby spec, but it seems to work okay. I've used __APPLE_CC__ in the past I see "darwin" being used elsewhere src/events.c:115:#if defined(linux) || defined(darwin) % Theory has joined #parrot I think that one's parrot-specific But I can see I'm ok with that "Infinoid" at 75.28.78.127 pasted "tetragon: how about something like this?" (63 lines) at http://nopaste.snit.ch/12874 (that'll probably fail c_indent.t) Failed Couldn't find _environ I'm trying with __APPLE_CC__ for now Works with the check switched to #ifdef __APPLE_CC__ both checks, I'm guessing thanks are any other compilers available on OS X other than Apple's? (intel-cc for example?) Looks like xlc (IBM's C compiler) is available But xlc does come with a gcc compatibility mode (at least on AIX) well, this probably won't work for that compiler then... dunno how much we care I'm not sure if that extends to OS X and Apple's changes to gcc seems unlikely then again, without supporting bundles and frameworks, I doubt it would be very useful at all on OS X xlc supports all that ok. well, if we want to support xlc builds in parrot at some point in the future, these #ifdefs might need to be extended % Psyche^ has joined #parrot I'm just not sure about __APPLE_CC__ or how commonly used xlc is * tetragon wonders why darwin's hints file sets ld to 'c++' % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.or.comcast.net mingw does that too. it's kinda annoying... takes more memory for (apparently) no reason "Infinoid" at 75.28.78.127 pasted "Current rev of patch, doing final testing on linux prior to checkin" (62 lines) at http://nopaste.snit.ch/12875 % Patterner has left Patterner!~Psyche@e177226075.adsl.alicedsl.de % Psyche^ is now known as Patterner PARROT_OS_NAME is 'DARWIN' on my box (only things changed in this patch version are #ifdef name, and preprocessor token indentation) uck, I'm tired. s/token/command/ Builds and links Is there any specific test that would be affected by environment variables? probably t/pmc/env.t unfortunately, that one is failing some tests here after the patch Started failing here, too ... makes me wonder if class_init() didn't actually get called But I do have the stacktrace of an interesting case oh, did it crash? it just reports bad values here Test 6 tried to allocate 4GB awesome! it has been said that awesome is not that word purl, it has been said that purl is a tard. OK, Infinoid. I'll paste it and a trace purl, it has been said that you? it has been said that i am a tard. * Infinoid pats purl * purl pats Infinoid back, harder "tetragon" at 216.126.67.44 pasted "Test 6 of t/pmc/env.t on OS X after the patch" (184 lines) at http://nopaste.snit.ch/12876 Anyone interested in reviewing a few cardinal patches before I commit? I wouldn't have a clue, sorry * Infinoid <-- lowlevel guy tetragon: that backtrace makes sense if my_environ was never initialized % iblechbot has joined #parrot % davidfetter has left davidfetter!~chatzilla@start.fetter.org unfortunately, if class_init() isn't being called, the reason why is a bit beyond me. more later. goodnight All this line number switching is making gdb a bit... interesting... just imagine, we're going to be doing exactly the same thing, once we fix up the .pbc file format a little more :) you'll not only have line numbers from multiple files, you'll have them from multiple languages! Yay, finally reached the point of interest And my_environ ended up as "$2 = (char **) 0x7004" what do you get when you call _NSGetEnviron() directly? and what do you get when you print *((char***)0x7004) ? (I don't know if its returning the value of the environ pointer, or the address of it.) (it looks suspiciously like the address.) Same value % contingencyplan has left contingencyplan!~contingen@cpe-76-186-27-146.tx.res.rr.com And the manpage does specify that it is the address of environ ok, so if you put a * before the call to _NSGetEnviron(), it might work ...but this doesn't explain why it fails on linux. % peepsalot has left peepsalot!~peeps@cpe-67-9-161-48.austin.res.rr.com r27283 | tene++ | trunk: : Replace several 'rule's with 'token's. : Decreases parsing time by more than 50%. : Start cleaning up some strange parsing rules. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27283 r27284 | tene++ | trunk: : Rearrange the cardinal grammar to reduce breakage. : Change 'equal' to 'equiv' in the optable. : Comment out some stuff. : Steal some comparison ops from rakudo. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27284 r27285 | tene++ | trunk: : Add a simple fib test to 02-functions.t. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27285 r27286 | tene++ | trunk: : "print" doesn't have a newline in ruby. : "puts" is the ruby version of "say". diff: http://www.parrotvm.org/svn/parrot/revision?rev=27286 DIdn't stop the test from failing, but it doesn't crash It seems like a number of other people simply #define _environ (*_NSGetEnviron()) * tetragon yawns % jjore has joined #parrot % jjore is now known as zz_jjore % zz_jjore is now known as jjore % Coke has left Coke!~coke@cpe-72-228-52-192.nycap.res.rr.com % petdance has left petdance!~Andy@64.81.227.163 % iblechbot has left iblechbot!~iblechbot@ppp-62-216-206-34.dynamic.mnet-online.de tetragon: the tests are failing because apparently environ is moving around at runtime. (if I had to guess, I'd say it might be a side effect of spawning a thread) the #define you mentioned above seems to work better. "Infinoid" at 75.28.78.127 pasted "tetragon: Testing this now." (22 lines) at http://nopaste.snit.ch/12877 seems like a similar issue to one we ran into with thread-specific "errno" in glibc, a couple years ago old code that just declared "extern int errno" suddenly stopped working All tests successful on linux/amd64. if it works for you too, I'll check it in. % Zaba_ is now known as Zaba % grim_fandango has joined #parrot r27287 | tene++ | trunk: : Fix metadata on new file. diff: http://www.parrotvm.org/svn/parrot/revision?rev=27287 % uniejo has joined #parrot % desertmax has joined #parrot What does VTABLE_morph do, when getting a NULL/PMCNULL-pointer? % allison has left allison!~chatzilla@dsl-241-25-20.telkomadsl.co.za Okay, I've found the macro. This would be really dumb. % mire has left mire!~Frodo@140-173-222-85.adsl.verat.net