% Partizx_ has joined #parrot % Partizx has left Partizx!~Partizx@220.110.142.38 % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1096740991.dsl.bell.ca % barney has joined #parrot r25492 | petdance++ | trunk: : delete_ins() no longer takes a flag saying whether to delete its argument or not. It assumes yes, and a lower-level flunky function does the work. r25493 | petdance++ | trunk: : delete_ins() no longer takes a flag saying whether to delete its argument or not. It assumes yes, and a lower-level flunky function does the work. diff: http://perlsix.org/svn/parrot/revision/?rev=25493 % iblechbot has joined #parrot r25494 | petdance++ | trunk: : the mk_* functions now all take const char * name parameters, and will not free their arguments. str_dup()ing is now done in the mk_* funcs if necessary. Calling functions now must free the memory if necessary. This work has not all been done yet, so as of this commit, there are MORE leaks than before diff: http://perlsix.org/svn/parrot/revision/?rev=25494 r25495 | petdance++ | trunk: : Pruning the str_dup() calls to mk_* functions that no longer need to exist. Leaked memory in my test case from 122 blocks down to 78. diff: http://perlsix.org/svn/parrot/revision/?rev=25495 % Andy has left Andy!~Andy@64.81.227.163 r25496 | kjs++ | trunk: : [cardinal] : * implement BEGIN and END blocks. : * stolen from rakudo. diff: http://perlsix.org/svn/parrot/revision/?rev=25496 % iblechbot has left iblechbot!~iblechbot@ppp-62-216-196-95.dynamic.mnet-online.de % cognominal_ has left cognominal_!~cognomina@82.67.232.89 % alvar has joined #parrot r25497 | kjs++ | trunk: : [cardinal] : * add 'module' grammar support : * add test for this, but doesn't run yet. diff: http://perlsix.org/svn/parrot/revision/?rev=25497 % cognominal_ has joined #parrot % cognominal_ has left cognominal_!~cognomina@82.67.232.89 % Partizx has joined #parrot % HG` has joined #parrot % Partizx_ has left Partizx_!~Partizx@220.110.142.38 % alvar has left alvar!~alvar@sub87-230-120-57.he-dsl2plus.de % mj41 has joined #parrot % kjs_ has joined #parrot % iblechbot has joined #parrot r25498 | kjs++ | trunk: : [cardinal] add 'and' and 'or' operators. : + set cmdline banner+prompt (initial, just to get a ruby feel) diff: http://perlsix.org/svn/parrot/revision/?rev=25498 % DarkWolf84 has joined #parrot % DarkWolf84 has left DarkWolf84!~dwolf@89.215.234.147 % wknight8111 has joined #parrot % barney has left barney!~bernhard@p549A21E2.dip0.t-ipconnect.de % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % AndyA has left AndyA!~andy@82.152.157.85 % wknight8111 has joined #parrot % man_in_shack has joined #parrot * man_in_shack waves i was at a presentation on parrot at linux.conf.au % Andy has joined #parrot made me rather interested in the project :) Excellent! * purl zwooshes i'm wondering, is there an doc/tutorial on defining your own funky language using parrot? :) man_in_shack: get your own funky language up and running within 10 seconds: tools\dev\mk_language_shell.pl and then start customizing :-) Crib mercilessly from languages/abc/, and read docs/pdd26_ast.pod. And ask here. :) and docs/past_building_blocks.pod :-) % alvar has joined #parrot a lot of smileys going on here. I guess we're all very happy :-) no, i'm really depressed :) get out of your shack ;-) :P % AndyA has joined #parrot % Andy has left Andy!~Andy@64.81.227.163 % Partizx has left Partizx!~Partizx@220.110.142.38 no one has announced the logging on list yet, haz they. which logging? ;-) % Coke has left #parrot % Coke has joined #parrot * man_in_shack gets out the axe and starts attacking the forrest i'm working on a quick getting started document for PCT. when running mk_langauge_shell, a complete language dir is created with all necessary files. However, how to get a Makfile from that root.in that is created? I always edit config/gen/makefiles/languages.pm (I think it's that file), but is there any simpler way? not yet. ok, then i'll stick to this. % cognominal_ has joined #parrot % gryphon has joined #parrot % Andy has joined #parrot ok, done. All interested have a look at docs/pct_for_dummies.pod r25499 | kjs++ | trunk: : [docs] add beginers guide for the PCT to docs directory. diff: http://perlsix.org/svn/parrot/revision/?rev=25499 % Andy has left Andy!~Andy@64.81.227.163 r25500 | kjs++ | trunk: : [docs] fix pod thingie with an url and some other bit. diff: http://perlsix.org/svn/parrot/revision/?rev=25500 % grim_fandango has joined #parrot % cognominal_ has left cognominal_!~cognomina@cac94-1-81-57-150-201.fbx.proxad.net r25501 | kjs++ | trunk: : [docs] add more info about generated files in pct for dummies doc. diff: http://perlsix.org/svn/parrot/revision/?rev=25501 % cognominal_ has joined #parrot % amoore has joined #parrot % cognominal_ has left cognominal_!~cognomina@cac94-1-81-57-150-201.fbx.proxad.net r25502 | coke++ | trunk: : [docs] : Use shiny mail alias. diff: http://perlsix.org/svn/parrot/revision/?rev=25502 kjs? i guess kjs is Klaas-Jan Stol from The Netherlands or KHTML (read Safari/Koqueror)'s JavaScript engine... someone stole my nick :-( hate that. We should probably avoid the name "for dummies". i guess my name is kjsunderscore now :-/ why' that? a copyright thing? or tm for dummies is also http://www.dummies.com/WileyCDA/Section/Legal-and-Copyright-Notices.id-100099.html it could be renamed pct_getting_started Coke's url is at http://xrl.us/bfnr3 how about docs/pct/getting_started.pod +1 1 yep, then the other past doc can also move there yep which i added earlier this weekend also, it may be nice to have these docs on a wiki (while they're being built) then on the website (when they're "done") they can still be in the repo in the meantime, too. yep I find I get more feedback at the moment on stuff in the repo than on the wiki. i find it's easier for contributers to update docs in the wiki than supply patches to docs YMMV, apparently. I would expect better updates via wiki, they just don't seem to happen for me. sheesh, busy weekend. i feel like i'm a month behind % Andy has joined #parrot % uniejo has left uniejo!~uniejo@langebro.adapt.dk r25503 | kjs++ | trunk: : [docs] rename a file and move pct files into directory r25504 | kjs++ | trunk: : [manifest] update manifest after rename+move of docs. diff: http://perlsix.org/svn/parrot/revision/?rev=25504 particle: I sent a patch yesterday for handling the child representing the object for PAST::Vars with :scope('attribute'). Could you check it out sometime this week? yep k thnx kjs++ # docs, cleanup particle: the document docs/pct/gettingstarted.pod contains a list of common error messages when using pct. if you encounter any new issues while hakcing on rakudo, and you have time, could you add the issue/solution pair there? (the current list has 1 item, so it's not really a list yet) sure thanks! I think having a list of solutions for common issues can help newcomers, which saves a lot of time answering questions here. Who can recreate stuff from imcc.l? kjs_: when you moved those files, did you use "svn mv" or did you do it manually? I don't know what to do with it. Andy: Config with the --maintainer option? r25505 | coke++ | trunk: : [distro] : pass t/distro/*.t diff: http://perlsix.org/svn/parrot/revision/?rev=25505 % zaphod has joined #parrot Coke: I don't know. Andy: I can if you want Coke: i use tortoisesvn kjs: Or, tell me what to do. kjs_: so did you use svn to do the rename, or did you do it with windows? I move files just by dropping them in explorer windows ... don't do that. how to move a file? you lose history, and metadata. renaming I can oooh ok sorry NP. oh loo, right there in the Configure --hepl Andy: you on linux right? % peeps[work] has joined #parrot in parrot/ : flex -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l note there's NO SPACE between the -o and its argument value kjs_: perl Configure.pl --maintainer # should take care of regenerating imc*.[ch] no need to call flex yourself ooh ok. never knew that i'm not on linux i use cygwin yah, I just have to install flex for flex/bison 2.5.33 is the latest version I think kjs_: that shouldn't matter, as long as configure detects them at least a good version particle: yeah but I configure on windows so i think things go wrong I think i tried.. it's been a while i don't get it. you config on windows, and build on cygwin? no i build on windows but I have put parrot in a directory accessible from cygwin so I can use the cygwin's flex to generate the lexer ok. so building is alwasy done in cmd.exe, while regenerating in cygwin's shell sure would be nice if there was an up-to-date windows port of flex/bison yeah. especially if we want to create a reentrant lexer, at some point it's supposed to be reentrant already imcc? i think imcc is the c of parrot or the problem or the intermediate code compiler or flex-generated? that's why we moved to the versions of flex/bison we have today It fails for me, but I can't see why. what's the error? particle: there is a ticket for removing globals from imcc that's still open, IIRC. oh wait, I found it. removing globals from IMCC is a pain. THey're everywhere ok, i thought we'd consolidated the globals already nah, they'ere here and there in imccs backend code I gave up hope on that already kjs_: what's up with pirc? does it run everything imcc does? it runs all syntactic sugar, but not the ops because it doesn't know which identifier is an op and which is not imcc uses "is_op()" I tried to link to libparrot but somehow couldn't get things properlylinked so I hardcoded a few ops; they are recognized as ops just for testing ok but for the rest, it's parsing everything. I more or less am waiting for a proper API for bytecode that's been on jonathan's list a long time once bytecode+PMC integration/representation works, i can take a look ok, then we can benchmark the two, and pick a winner yeah. Not sure if it's actually faster; it has 3 parts: a heredoc preprocessor; a macro preprocessor, and a Pure PIR parser actually, if we're really measuring parsing speed, we don't need to run anything do pirc and imcc have parse-only modes? I wrote a compiler driver which connects the three phases with pipes pirc only parses currently imcc: no. well, it builds a datastructure I think the closest you can get is parrot foo.pir -o /dev/null imcc will do parse-only on pasm if your first instruction is 'end' it still executes all the parse actions -o should be parse-only. it won't run :main or :load or :init ok. didn't know that. Well, IMHO, speed it not the only quality attribute to be considered. Maintainability is also important as long as the speed penalty is not too big yes, pirc is much more maintainable if there's not much speed difference, we should focus on replacing imcc with pirc that's what i'm getting at and the generated lexer doesn't optimize yet i think (there are flex options for that) yes I 'd like that very much but the task is just too big for me so, we can hook pirc in as an alternate compiler for parrot then we could call parrot --compiler=[imcc|pirc] foo.pir -o /dev/null et viola. benchmarks. right. but I think imcc is really close-connected to parrot guts it's hard to refactor when you're talking about pirc, I take it you talk about pirc/new (the bison-based impl.), right? Not the recursive-descen, hand-written one iunno heh :-) whatever you came up with i came up with both :-) i just know i guided you towards a nice maintainable design it's been a long time since i've looked closely first the hand-written one, which is hand-written. but later I added pirc/new which is bison/flex based s/hand-written/recursive-descent/ src/main.c seems to suggest that replacing imcc is straightforward good luck :-) well, the api is simple. one function initializes the compiler, another runs it. sure, but the code generation of imcc is a bit tougher so replacing the parser might not be difficult we're talking about parse-only oooh right i've also been thinking about patching imcc heavily, slowly transforming into pirc, but there's some big things that cannot be done in small steps so IMHO that's not an option it is for a branch imcc doesn't change much, except for const and PARROT_API etc good point. Thanks, kjs_, I'm glad you agree with me. % jhorwitz has joined #parrot there's a lot of code in imcc that is not really clear to me. it might be a good idea to re-implement byte-code generation altogether for pirc i think imcc has a lot of old code that does stuff which is no longer of interest or was there for old conventions, old behavior i'm sure of it anyway, pirc already does generate PASM, kinda but not really runnable pasm; there's no register allocator well, that's solvable. not trivial, but not terrible we already have more than one register allocator implemented could the optimizer do something like this: if there is a branch, and the code on either outcome of the branch starts with the same statements, then put that code before the branch and remove the duplication. (as long as they are not acting on the register/whatever that the branch is testing?). i guess it would be more of a space opt. than speed. sure, optimizers can move branch instructions around they can also modify them to help the cpu with branch prediction by making sure the common case is the one with no branching does that sound like an opt that is worthwhile to do though? % jjore has left jjore!~jjore@c-24-16-241-176.hsd1.wa.comcast.net i don't really know much about compiler optimizations, was just reading the doc and had that idea. what compiler are you talking about? IMCC optimizer i mean http://www.parrotcode.org/docs/dev/optimizer.html ok. we have more than one compiler here :) i think the optimizer could use some work, but imcc must first be fixed (or possibly replaced by pirc) to solve the core functionality peeps[work]: so, are you interested in particular in optimizing compilers? i'm interested in optimizing everything :P yay! my mind wanders all over the place, i find it hard to stick to particular subjects sometimes. i'm still reading up a lot on perl and compilers in general do you know of ssa and tree-ssa? no ssa is static single assignment ok. gcc uses tree-ssa to do some wonderful optimisations, and i'd like to implement it for pct that would benefit all hlls on parrot you can google for 'gcc tree ssa gimple' * Coke has a copy of the muchnik compiler book and keeps meaning to apply some of the ideas there to parrot. There are a rather scary number of places where optimization could occur for parrot. yep i'd like to see the optimizations occur at the PAST level because then it also benefits other run-time systems (if somebody writes a PAST-to-some-other-AST converter) in effect, we'd get optimized rakudo-on-dotnet free if we have tree-ssa optimizations and a past -> dotnet-ast (i forget what it's called) transform PAST will need to get some richer nodes in it for that to work well, but I don't see why it wouldn't be possible right-o. it's something to work towards do PAST nodes have the type information that you need for cool optimizations? has anyone looked into the CPS literature for optimizations that can be done? Parrot uses CPS doesn't it? yes, parrot uses cps moritz: the type info right now is PAST::Block | PAST::Op | PAST::Val etc ok ooh, where did i put that serialized past parser i was working on.... are there any tests for PCT? I looked a bit and didn't find any. I wanted to try making a change (the one that I described on the mailing list), but I feel uncomfortable making changes without tests. i don't think we have any tests for the compiler/emitter part of pct hmm, ok maybe I'll try to put some together if I have some time then that'd be wonderful and what is the relationship between past-pm and pct? is there something there that I should pay attention to if making changes? iirc past-pm is an older implementation of past ok, so doesn't need to be kept in sync or anything then correct. no, it's not! it seems only lua is using past-pm at this point ah, there are some tests for past-pm, perhaps those could be adapted for pct see t/compilers/past-pm thanks, I'll take a look at those! % cosimo has left cosimo!~cosimo@pat-tdc.opera.com r25506 | petdance++ | trunk: : Don't dup the literal passed into mk_ident(). Also did some consting. diff: http://perlsix.org/svn/parrot/revision/?rev=25506 YEAH BABY MUCKIN' W/LEX FILES % HG` has left HG`!~wells@user-514c092e.l1.c5.dsl.pol.co.uk Woo. One month, three conferences. (GPW, UPW, DPW) * jonathan likes the look of his February. % teknomunk has left #parrot % zaphod has left #parrot % HG` has joined #parrot % cognominal_ has joined #parrot % cognominal__ has joined #parrot % cognominal_ has left cognominal_!~cognomina@cac94-1-81-57-150-201.fbx.proxad.net % cognominal__ has left cognominal__!~cognomina@cac94-1-81-57-150-201.fbx.proxad.net % silug has left silug!~steve@38.104.162.2 r25507 | kjs++ | trunk: : [docs] add a common error message+solution to pct docs. r25508 | kjs++ | trunk: : [cardinal] finish operator table and a bit more. diff: http://perlsix.org/svn/parrot/revision/?rev=25508 % Student1 has joined #parrot * Coke suggests that all configure tests go under t/configure ; we have, what, 3 config directory tests now? % cognominal_ has joined #parrot * Coke also wonders how t/stress/gc.t is testing our gc. r25509 | kjs++ | trunk: : [cardinal] : + add prefix ops : + add hash constructor : + add parameter declaration (reading scrollback) past-pm is deprecated iirc, the tests in t/compilers/past-pm were simple sanity tests...nothing that actually tested the output seems only lua needs to be migrated maybe a note to francois would be enough to get it done by 0.6.0 so we can rip it out Francois also wrote his own past->post conversion I think would that have any consequence for converting? % cognominal_ has left cognominal_!~cognomina@82.67.232.89 it might. pmichaud: yesterday I sent a patch to list for handling objects for :scope('attribute'); I asked particle to have a look at it. yes, I'm catching up on email today I've been out with the flu :-( ohw, too bad flu sucks % integral has left integral!bsmith@adsl-212-20-244-147.lumison.co.uk % integral has joined #parrot * Coke ponders if tcl was using past-pm. a recent ack for past-pm suggests it's just lua but please check! coke: consolidating config tests is a good idea I strongly get the feeling that a complex grammar can slow down a generated parser... could that be true? ... plumhead... perl6/ROADMAP until we get some of the longest-token matching/dfa stuff implemented in pge, it can be a bit slow. pheme... pheme is probably a Parrot-based implementation of Scheme especially if there are a lot of tokens can it be becuase of a lot of ? quantifiers? ? by itself shouldn't slow things down depends on what is being ?ed add more ':' those are do not backtrack markers, right? yep, : :: and ::: tokens and rules don't backtrack already, though right, it's only regexen s/n$/s/ ok, well i don't use thm regex although '::' could speed things up slightly does : operate the same with | and || ? ruby is really really similar to perl and python. never knew that. Makes writing cardinal easier :-) particle: afaik, it's basically the same % iblechbot has left iblechbot!~iblechbot@ppp-62-216-204-180.dynamic.mnet-online.de r25510 | chromatic++ | trunk: : [IMCC] Duplicate some strings in the parser so as not to free passed-in strings. : This adds a few leaks temporarily, but they're pluggable. diff: http://perlsix.org/svn/parrot/revision/?rev=25510 r25511 | kjs++ | trunk: : [cardinal] : + add grammar for meth.calls and stuff : + not working yet. diff: http://perlsix.org/svn/parrot/revision/?rev=25511 kjs: iirc, :scope('attribute') already exists in PAST. I think jonathan++ added it. pmichaud: Get well soon. I think I'm in good shape now... but this weekend was pretty bad Ugh. But glad you're recovering. me too. fortunately we didn't have the kids this weekend -- that would've been rough. (otoh, I probably caught it from the kids, so...) jonathan: got your email on OO implementation -- I need to catch up on other things (and make oscon proposals), so will try to get to it tomorrow. pmichaud: OK, sure. Do you think the re-ordering in past -> post is a bug, or do I need to work around it myself, or is that too hard to answer right off (if so I can wait :-)). I'm not sure it's a bug... more like "something we haven't dealt with yet" OK. handling class creation in PIR is still a bit of a black art, I fear gotta run for a bit... bbl (I hope) % silug has joined #parrot msg pmichaud: ('attribute' already exists) yes, but not the handling of the object for the attribute; it currently only works for "self" Message for pmichaud stored. % Schwern has joined #parrot Hi folks. How has parrot solved the Y2038 problem? I want to try and steal it for Perl 5. well, Perl 6 solves it by specifying all times in floating point. Can't speak for parrot though. Yeah, I saw pugs has it licked. i'm not sure we've attacked that yet I'm trying to find a license-compatible C implementation of localtime_r() really iirc we're using platform-dependent values for dates ouch ya. (floating point)... I can't help but think that's gonna bitecha. that's what oracle does, innit? DATE.TIME Hmm, Parrot's perl6 doesn't appear to implement localtime() yet nope, doesn't. Oooh, libtai is public domain As terrifying as the idea of using djb-ware is. "TODO: support time zones" <<--- nuts seems everybody's waiting for some intrepid developer r25512 | kjs++ | trunk: : [cardinal] extend grammar for rule lhs, with indexed and member fields. no proper actions yet. diff: http://perlsix.org/svn/parrot/revision/?rev=25512 Well, I'm getting more trepid by the day. Sometimes I feel like that guy when the ask for volunteers to step forward and everyone else steps backward. :) ciao % Schwern has left Schwern!schwern@mungus.schwern.org % cognominal_ has joined #parrot Coke: when I say "floating point" I mean double precision at least but the integer part is plenty adequate to represent many millenia of seconds and time is a "real" quantity, so we need a datatype that doesn't have to be scaled explicitly every time you use it or combined with milliseconds, or microseconds or whatever fooseconds the computer measures time in Doubles are the closest thing we have to continuous values and it's my feeling that by the time doubles aren't big enough, we'll be using 128-bit floats, or 256, or... pmichaud: (class handling as black art) maybe it's an idea to have a ".class" directive that takes a key as argument (exactly as .namespace), but in addition to .namespace, the class is created automatically (this code is generated, as opposed to writing it manually) Not sure about how to handle inheritance. r25513 | kjs++ | trunk: : [cardinal] add more grammar stuff. do a bit of refactoring here and there. diff: http://perlsix.org/svn/parrot/revision/?rev=25513 (ehm, if it wasn't clear, that would be a PIR directive) (continuous values) I would argue about time being a continuous value. =-) I'd say that you can't really be sure TimToady: ... not that that would help my previous assertion. coke: which way do you argue? ISTR from quantum that there is a plank time; it's not obvious that time is continuous below that. (analogous to the plank length) ... none of which has anything to do with whether or not floats work for time. =-) er, and that's spelled "Planck", of course. yep well, technically floats are quantum as well :-) planck time is http://en.wikipedia.org/wiki/Planck_time of course, the float quanta are probably different than the time quanta :-) there are energy quanta, too lesssee... one planck time is about 5.4 x 10-44 s. I think we're safe for now. has anyone looked at my memory stuff? kjs: (class) right now the way we have to create classes is to do it in a :load/:init (or possibly :immediate) sub of some sort. And once we get into inheritance, we have to make sure the classes are being created in the correct sequence Ob: I was going to, but I forgot. andy: stop being overly descriptive. Seriously, which memory stuff now? (more on classes) and also Parrot likes to throw exceptions if we attempt to create a class that already exists, so we have to guard against that possibility as well. pmichaud: i know about the current setup for creating classes, and you're right in wanting to guard it. It just seems that many parrot-targeting languages define classes as perl does so for all of them we have to do the same tricks to get things working right looks like an opportunity for a shorter huffman code to me ;-) I do intend for PAST to make that relatively straighforward you and jonathan are just moving a week or so ahead of me on that :-) oh right, past can also do it :-) yeah, you got my message? yes I didn't realize that :scope('attribute') was tied to self. You're correct that it needs to be available for any object. it is with the supplied patch :-) the code may be a bit crappy, but this was the best i could come up with well, we really need a way to represent 'self' in PAST (there's an unnecesssary goto somewhere i think) r25514 | kjs++ | trunk: : [cardinal] add hash stuff. r25515 | chromatic++ | trunk: : [IMCC] Updating IMCC header, which somehow lost its generated file warning from : a previous commit. r25516 | chromatic++ | trunk: : [IMCC] Removed one memory leak from the lexer. More remain. I haven't decided if that's a PAST::Val, PAST::Var, or what. diff: http://perlsix.org/svn/parrot/revision/?rev=25516 or even a PAST::Op sure, but I figured having a default to "self" if you don't specify an object would be good yes, particle also said something like that yesterday: either val or var particle: YOu know, the memory things. The stuff! the stuff is in scope because the methods are _written_ in that scope Am I the only one who reads what I send to p2? AM I? AM I ALL ALONE HERE? default to 'self' might work I'll have to think about it a bit more Why didn't Drivin' 'n' Cryin' get any bigger? It's a sham.e at least for the 'attribute' scope setting thingie I don't think there are many defaults in PAST::Var to begin with, so I'm not sure this is the place to add one I meant default to self , if PAST::Var( :scope('attribute') does not have a child right, I took it that way. ok i see your point of making exceptions or, rather not making them just aiming for foolish consistency 's not so foolish but OTOH, it seems to be a bit inefficient to create nodes if it's not necessary; it's yet another object.. i know i know, don't optimize yet :-) well, 'not necessary' depends on how often it actually occurs in hll compilation for example, there are a ton of opcodes in Parrot that PAST never makes use of, but which were added because a compiler might find them useful :-) ok, well FYI, I added some bits to pdd26 describing 'attribute', and it also mentions defaulting to self. so if that's going away, maybe i should remove that I'll review it and make a decision this week. yep, well maybe we can use them later when past is optimized iirc from my graduate studies on RISC vs. CISC architectures, what often tends to happen is that it's too much work for the compiler to find the cases where the specialized opcode is of any benefit that may especially be true for dynamic languages, where compiletime is often runtime compilers like to have regular instruction sets without lots of special cases well, iirc, the idea is that in a risc arch. the instructions are highly optimized (fewer instructions but faster); for parrot it doesn't matter; all instructions are in software ohyaa, I was thinking lately of tailcalls. with subs possibly consisting of several nested PAST::Blocks, does tailcalls still work? I mean, the whole advantage of tailcalls is stack stuff efficiency; if returns are implemented as exceptions, there's a lot of overhead, no? risc vs cisc still matters for security only certain PAST::Block objects will have return handlers specifically, 'immediate' won't however, they may have loop handlers % jhorwitz has left jhorwitz!~chatzilla@pool-68-163-25-103.phil.east.verizon.net mmm ok. I don't know that much about it :-) Just thought about the difference between a program in pure PIR and generated PIR from PAST ,which is much more complex well, time to sleep. good night % kjs_ has left kjs_!~IceChat7@ip565fd420.direct-adsl.nl % amoore has left amoore!~amoore@65.165.109.82 % davidfetter has left davidfetter!~davidfett@start.fetter.org % davidfetter has joined #parrot % Student1 has left Student1!~chatzilla@139.147.232.198 % skids has left skids!bri@charon.clarku.edu % Limbic_Region has joined #parrot % sjansen has joined #parrot % Ademan has joined #parrot r25517 | chromatic++ | trunk: : [IMCC] Fixed another IMCC memory leak related to the great I Won't Free Your : Strings If You Call Me update. diff: http://perlsix.org/svn/parrot/revision/?rev=25517 r25518 | chromatic++ | trunk: : [IMCC] Whacked one more memory leak. All coretests and Rakudo tests still pass. diff: http://perlsix.org/svn/parrot/revision/?rev=25518 % Schwern has joined #parrot % peeps[work] has left peeps[work]!~peepsalot@bwext.kpimdp.com % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % wknight8111 has joined #parrot % kid51 has joined #parrot % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net % alvar has left alvar!~alvar@sub87-230-120-57.he-dsl2plus.de % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com % kid51 has left kid51!~jkeen@pool-71-247-56-8.nycmny.east.verizon.net % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net r25519 | chromatic++ | trunk: : [IMCC] Clean up the formatting of this supplementary file. Now it's slightly : easier on the eyes. : If you read very carefully, you'll notice that I deleted a free() called on a : passed in string. Yikes. % Limbic_Region has joined #parrot % AndyA has left AndyA!~andy@82.152.157.85 % AndyA has joined #parrot * Coke finally has 2 seconds to announce the logging on list. % petdance has joined #parrot % Theory has left Theory!~Theory@dsl093-038-250.pdx1.dsl.speakeasy.net % Ademan has left Ademan!~dan@h-68-164-171-226.snfccasy.dynamic.covad.net % Ademan has joined #parrot r25520 | chromatic++ | trunk: : [IMCC] Plugged a few more memory leaks. These are not the big ones, but even : the little ones add up over time. diff: http://perlsix.org/svn/parrot/revision/?rev=25520 % HG` has left HG`!~wells@user-514c092e.l1.c5.dsl.pol.co.uk * Coke updates the website a smidge. ... is RT dead slow for anyone else atm? * particle won't use rt again until it has a nice ui *cough* hint *cough* ... would you care to setup an RT instance for me? Oy. as easy to set up as combust? that's the other thing I need to do. % Partizx has joined #parrot As anyone who looked at the website 12.3 minutes ago noticed. % HG` has joined #parrot * Coke gives up his one claimed parrot ticket to work on less fun stuff. r25521 | coke++ | trunk: : [docs] Add reference to YART in this method. diff: http://perlsix.org/svn/parrot/revision/?rev=25521 * Coke grabs apache, mod_perl, and a cup of coffee. tanjit. mod_perl requires a perl you can muck with. (so I can't just use whatever's available on feather.) hmm % tcoppi has left tcoppi!~thisnukes@dhcp-west-76.resnet.nmt.edu % tcoppi has joined #parrot * Tene goes to search for caffiene, to hopefully do some language hacking tonight. % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net % apple-gunkies has joined #parrot r25522 | petdance++ | trunk: : bonked a few more memory leaks diff: http://perlsix.org/svn/parrot/revision/?rev=25522 * Coke drinks a CokeZero % Theory has joined #parrot % HG` has left HG`!~wells@user-514c092e.l1.c5.dsl.pol.co.uk r25523 | chromatic++ | trunk: : [IMCC] Plug another small handful of memory leaks. diff: http://perlsix.org/svn/parrot/revision/?rev=25523 % davidfetter has left davidfetter!~davidfett@start.fetter.org % davidfetter has joined #parrot anyone wanna eyebal a proposal? sure. http://nopaste.snit.ch/12275 % Andy has left Andy!~AndyL@host3130.follett.com % petdance is now known as Andy i'm very, very new to this project, but it seems to me that all of those questions have already been addressed man_in_shack: Sorry, it's not about Perl 6. It's a proposal for a talk at OSCON ah ok in that case, go for it ;) Looks good. one minor nit: "guided by the same rules running businesses". I think you're missing a "as those for" or some other connector. Having been to your technical debt talk, I'd probably go to that one. % jjore has joined #parrot Coke: Thanks. It's not the people who already like me I want to sway, though. :-) r25524 | chromatic++ | trunk: : [IMCC] Plug yet another memory leak. This one's much closer to the : mysterious big ones. diff: http://perlsix.org/svn/parrot/revision/?rev=25524 ... You presume too much! * Coke gives up on trying to install combust on feather for now. Bye bye combust yet another reason for starting a new website. It's fine for Ask & Robrt, but I feel like I'm too puny to grasp it. r25525 | chromatic++ | trunk: : [IMCC] Plugged most of the larger leaks in IMCC. It leaks about half as much : memory as when Andy and I started today. : These mem_sys_free() calls are mostly bandages on the real problem, which is : the str_dup() call for the STRINGCONSTANT lexing rule in imcc.l. Something in Once it's setup, it's ignorable. You just need to be something closer to a sysadmin than I am today to set it up. I'm trying to think of a way to turn ack into a 45-minute talk. So, .arity() doesn't provide the information I need to implement expression handling for lolcode. I need an angle. 269 degrees. I could probably add something like min-arit(), max-arity(), has-slurpy() to sub.pmc, but I don't know if that's the right approach. * particle hurls $P0.arity( PARAMS_SLURPY | PARAMS_OPTIONAL ); ...suggested api... That looks a lot nicer. return value for something with slurpy args? -1? right now, arity is positional only. you want to be able to do slurpy only, optional only, combinations, etc correct? Right. Well, all I really need is the minimum and maximum number of possible arguments. with Inf being maximum for slurpy? do you need to differentiate named from positional? hrmm. ok. here's the thing: let's ignore named for the moment I don't right now, as lolcode can't pass named. .arity() gives you positional. that's your minimum. Right. optionals don't count towards minimum slurpy gives max of infinity automatically optionals count towards max does lolcode have slurpy? I would imagine PARAMS-OPTIONAL would also include optionals, and PARAMS-SLURPY would return Inf if any exist. well, .arity() doesn't return (min, max) now It can call slurpies just fine, but can't create. VISIBLE is slurpy ah, right. so, no user-defined Right. ok, that means you can special-case them Hm? they're all "known knowns" all the slurpy functions are keywords or ops, or whatever you call them particle: until you have someone mixing lolcode with code in another language. there's a defined set. oh, please! keep it simple. we'll build that in incrementally * particle starts writing two more talk submissions for oscon *sigh* Simplest really would be if I could discover if a sub has slurpy params. tene: it is desirable to allow inter-HLL calling; but there's no real working code doing that now. Coke: you don't anticipate more methods to look at the param list of a sub being useful? % Schwern has left Schwern!schwern@mungus.schwern.org Sure. I'm suggesting that you don't need to solve everything at once if that makes it hard. If it doesn't make it hard, nevermind, go ahead. =-) it seems we can solve this by passing args to .arity() I agree. WHO WOULD LIKE TO SEE THE HAPPIEST KID IN THE WORLD? Have it return required+optional if :optional is passed, and return Inf if :slurpy is set and a slurpy param exists? .include 'call_bits.pasm' ; .sub 'test' :main ; ... ; $I0 = my_sub.'arity'( PARROT_ARG_INTVAL | PARROT_ARG_STRING | PARROT_ARG_PMC | PARROT_ARG_FLOATVAL ) Andy: ... Ok, I do. particle: you can't do that in one line in PIR, canya? % skids has joined #parrot what do you mean, .'arity'() ? oh, i see the pipes i guess not http://www.flickr.com/photos/petdance/2238371942/ it'd be $I0 = ... | ... ; $I1 = my_sub.'arity'($I0) Andy: cute.