* barney is awake, but has to leave in 10m you're more of a hll guy anyway, right? % grim_fandango has joined #parrot yep. not deep into internals % slightlyoff has joined #parrot % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1167933336.dsl.bell.ca % peepsalot has left peepsalot!~peeps@cpe-67-9-161-48.austin.res.rr.com % peepsalot has joined #parrot % barney has left barney!~bernhard@dslb-084-058-159-182.pools.arcor-ip.net % jjuran has left jjuran!~jjuran@c-71-227-190-72.hsd1.wa.comcast.net % jjuran has joined #parrot r26508 | fperrad++ | trunk: : [Lua] : aligned with Lua 5.1.3 (part 4) diff: http://parrotvm.org/svn/parrot/revision/?rev=26508 % wknight8111 has joined #parrot % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % turrepurre has left turrepurre!~chatzilla@90-229-128-103-no52.tbcn.telia.com % turrepurre_ has joined #parrot % turrepurre_ is now known as turrepurre % c9s has left c9s!~c9s@163.26.225.208 % c9s has joined #parrot % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % skids has left skids!~bri@c-71-233-204-100.hsd1.ma.comcast.net % c9s has left c9s!~c9s@163.26.225.208 % c9s has joined #parrot % jrt4 has left jrt4!~bojangles@c-24-18-106-126.hsd1.mn.comcast.net % jrt4 has joined #parrot % skids has joined #parrot % cdm has joined #parrot % slightlyoff has joined #parrot % wknight8111 has joined #parrot % Andy has joined #parrot % particle has joined #parrot % jhorwitz has joined #parrot % amoore has left amoore!~amoore@CPE-65-26-82-45.kc.res.rr.com % gryphon has joined #parrot r26509 | fperrad++ | trunk: : [imcc] : fix version message when building a release : : - DEVELOPING is removed : - so Parrot_revision & Parrot_config_revision give 0 : (see lib/Parrot/Revision/Util.pm) : with the latest release, the current message is : : This is parrot version 0.6.0 (r26483) built for i386-MSWin32. : Warning: runtime has revision 0! : Warning: used Configure.pl revision 0! : Copyright (C) 2001-2008, The Perl Foundation. diff: http://parrotvm.org/svn/parrot/revision/?rev=26509 % particle has left particle!~JGay@c-67-166-31-51.hsd1.co.comcast.net % particle has joined #parrot % sjansen has joined #parrot % particle has left #parrot % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 % slightlyoff has joined #parrot % Coke has left Coke!~coke@cpe-72-228-52-192.nycap.res.rr.com % jjore is now known as zz_jjore % zz_jjore is now known as jjore I want to clean up the snprintf macros and put them all in the same place to avoid redefinitions should they go into parrot/misc.h (where one of them is now), or should I move them to some place more appropriate like parrot/string.h? Actually, I may not need to move anything % Theory has joined #parrot purl seen chromatic chromatic was last seen on #parrot 2 days and 9 hours ago, saying: Or maybe just http://code.google.com/soc/2008/mentor_step1.html [Mar 19 00:14:04 2008] r26510 | infinoid++ | trunk: : Patch in RT #51976 seems very reasonable, and passes tests. Apply it. : Thanks to Andrew Whitworth. wknight8111++ diff: http://parrotvm.org/svn/parrot/revision/?rev=26510 "on first glance"? "it sounds?" I need a system to keep track of which metaphors are within lexical scope at any given time. % ambs has joined #parrot are you talking about my patches? no, I'm talking about my disorganized replies to your patches. that's fine, i don't require organized replies or any replies at all, for that matter % kj has joined #parrot that function Parrot_char_digit_value() is pretty suspect... if -1 is a valid return value, then its return type shouldn't be UINTVAL good find it has been said that good find is hard to man... % man 'good find' No manual entry for good find I assume that they are trying to do something like return MAX_UINTVAL, just with shorthand % slightlyoff has left slightlyoff!~slightlyo@204.14.154.209 -1 is returned if the character isn't in the range ('0'..'9') the unsignedness of the result is just silly I can go through and change the result to INTVAL or something else then, if that's a better idea probably only need to change that file, the header, and a few other places I think so. could you? INTVAL is right, I think Okay, let me get started on it. I'll post a patch to the same ticket # for it wknight8111++ * ambs prepares to test strawberry perl hmmms... yummy strawberry :) erm, why am I talking on #parrot? wrong channel :-S heh. strawberry perl rules. I want to test some modules under windows :) wknight8111: is there an option in tortoisesvn to always generate patches with pathnames relative to the parrot root? they would be a little easier to apply, that way There might be. I didn't realize it was a problem. I'll work on it. its not a big deal, it just means I have to go find utils.c and cd into src/ before I can apply the patch okay, i figured out what I was doing wrong. it will never happen again :) I'm going to reformat utilsmoveregtypecast.patch slightly so it passes t/codingstd/linelength.t okay the code in jit_emit.h is there to reduce duplicated code; it is included and used in several source files I'm searching diligently, and I can't find use of Parrot_char_digit_value outside of string_primitives.* So, I think i'm going to just submit the patch with the .c and .h files changed r26511 | infinoid++ | trunk: : Patch from RT #51984 doesn't appear to change any actual functionality, quiets : some warnings on win32/msvc, and passes tests. Apply it. : Minor modification: I split the line into 2, to pass t/codingstd/linelength.t. : Thanks, Andrew Whitworth! wknight8111++ % spez has joined #parrot I don't see any actual usage of that function, either % askie has left askie!~askie@81.171.100.208 hmms, strawberry does not include a yacc. great, nothing to shave % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177229137.adsl.alicedsl.de % Psyche^ is now known as Patterner Anybody know how to express that somethign is "in the public domain"? (source code) Like, "this source code is public domain" or whatever? How to express that properly? I assume it would be something like "This source code has been released by the author into the public domain. Where this is not possible by law, the author grants license to use this file for any reason without any rights reserved, and with no warranty express or implied or fitness for a particular purpose" sounds good :-) of course, that may just be a mashup of memories from PD and GPL warnings Are you ok if I use that text? it's just for the PCT tutorial I release that text into the public domain :) ha ha dang on Unix boxes, what parameters does the dup() function take? on Win32 it takes a single int, and if that's standard behavior for it, I think I can fix a few warnings #include int dup(int fildes); int dup2(int fildes, int fildes2); yeah that i guess yeah that is absolutely outrageous purl: forget yeah that ambs: I forgot yeah that thanks @ambs % askie has joined #parrot % Psyche^ has joined #parrot PCT tutorial episode 6 is published! url? parrotblog.org % Patterner has left Patterner!~Psyche@f054002174.adsl.alicedsl.de % Psyche^ is now known as Patterner % lidi20 has joined #parrot http://www.bitwisemag.com/2/DLR-Build-Your-Own-Language % lidi20 has left lidi20!~lidi20@d033.dhcp212-198-248.noos.fr kj: very nice (PCT on parrotblog.org). i'm compiler-challenged, so i definitely need this. :) cool! :-) good to hear. I'll have about 3 more episodes, after which the complete language is implemented kj++ i've been MIA the past week or two. did we hear what parrot OSCON talks were accepted? i know mod_parrot was. w.r.t. the link DLR-build-your-own-language: again I notice that Parrot just ignored silently; there's only mention of JVM and CLR/DLR "new" support for dynamic languages. Can somebody take a look at src/encodings/fixed_8.c:to_encoding()? the function is declared PARROT_DOES_NOT_RETURN, and PARROT_CANNOT_RETURN_NULL, and has a return type of STRING * either it does return a non-null string, or it doesnt return at all, and it can't be both kj: based on the author's other articles, he seems very MS-centric % h0rn has joined #parrot allison was at MS recently talking to some of the DLR guys some of them know about Parrot wknight8111: looks like that function is unimplemented for fixed8. this is a complete guess, but in that case the PARROT_DOES_NOT_RETURN might avoid some compiler warnings since nothing is actually returned, while the STRING * return type is needed for the ENCODING structure. it just seems strange that if people start writing on dynamic languages, they don't know about what's out there thanks jhorwitz, that's what I figured it was. So i guess the function definition will need to change when they implement it but I can understand the focus on jvm and dlr i'm hoping parrot has a strong showing at OSCON this year to help spread the word. maybe it'd be a good idea to submit your tutorials to slashdot once they're done, kj that'd help raise awareness and show people the state of the project i don't know if they're good enough for /. How does one get stuff there? http://slashdot.org/submit.pl % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177227222.adsl.alicedsl.de % Psyche^ is now known as Patterner kj: use.perl.org would be a good place to put it, too cotto_work: thanks for the link. That might be a good idea. Maybe it's good to wait till some people have read it and commented on it to improve quality Infinoid: yep: use Perl 6 to implement Your Favorite Language today! :-) % jrockway has left jrockway!~jrockway@dsl092-134-178.chi1.dsl.speakeasy.net % jrockway has joined #parrot % ambs has left ambs!~ambs@255.92.54.77.rev.vodafone.pt r26512 | infinoid++ | trunk: : Apply patch from RT#51982, thanks! wknight8111++ diff: http://parrotvm.org/svn/parrot/revision/?rev=26512 wknight8111: the symbol "_dup" does not exist on linux "Infinoid" at 75.5.242.149 pasted "RT#51988 build failure on x86-64 Linux" (17 lines) at http://nopaste.snit.ch/12543 it doesnt? All the stuff I saw (or thought I saw) online seemed to indicate it did I mean, I won't argue with you about it, I must be misinformed nope, it's just dup() and dup2() they don't really exist as symbols at all, at least not on my machine. they're inline functions in unistd.h that boil down to some assembly code that makes the system call and updates errno if necessary Okay, then I guess we need to disregard that patch then. cl.exe warns about use of dup(), but a warning on one system is better then complete failure on another a few remarks: parrot doesn't seem to configure cleanly from the git mirror, and doesn't find my local perldoc (when using my local perl) wolverian: can you paste what your Configure.pl invocation looks like, using nopaste? purl, nopaste it has been said that nopaste is 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 wknight8111: what's the warning? I'm sure we can find a way to make both platforms happy :) (and probably break Darwin in the process, tee hee) % jhorwitz has left jhorwitz!~chatzilla@96.245.16.31 Infinoid, do you want me to run it verboes? s/oes/ose/ I want to see how it's not configuring cleanly :) well, sec. :) it's trying to call svn to determine revision yeah, we keep having to fix that in various places "wolverian" at 80.221.43.65 pasted "configure" (87 lines) at http://nopaste.snit.ch/12544 * wolverian tries to find out why it doesn't detect perldoc well, does perldoc exist? (there's a funky setting called "versiononly" which will prevent perl from installing perldoc, h2xs, and some other tools) yes, it does * purl stays quiet furthermore, Configure.pl says "no", which seems to indicate (by perldoc.pm) that it is finding perldoc, but it's not getting any output from it hmm. hmmm. there are some nice errors from lib/Parrot/Revision.pm, which hasn't been changed since kid51's branch merge in January this is a normal git-svn checkout, right? no, this is from http://repo.or.cz/w/parrot.git which might be totally wrong, of course, since I don't know whose it is :) huh. perldoc.pm seems to be trying to run '...//perldoc' the extra / won't hurt, but does the path look correct otherwise? is kj still here? ambsyup ehm whoes no, it doesn't. I don't know what ... would mean, anyway that should have been a yes :-) I'm in ~/projects/parrot, perldoc is in ~/local/bin kj, I really like your PCT tutorials, would you mind if I "stole" them and turned them into a book at Wikibooks? I mean, I know they are PD, but I like to be curteous anyway courteous* wknight8111: no problem. wolverian: what's the output of: perl -e 'use Config; print($Config{scriptdir}, "\n")' excellent. I'll send you a link when I get something up and running Infinoid, ".../" I wonder how I managed that ... great. I'm writing the last ones right now (ep.7; 8 is finished, 9 is jsut a conclusion) the paths in perl -V look correct otherwise that's pretty bizarre. mine is "/usr/bin" maybe there are multiple Config.pm's in your @INC and its choosing the wrong one? okay $Config{prefixexp} is /home/wolverian/local/bin/.. (note the ..) and binexp, like scriptdir, is .../ scriptdirexp is correct though so... we could work around your bizarre and broken scriptdir by using scriptdirexp. trying to think if there's any downside to doing that I'm pretty sure this shouldn't be happening in any case, i.e. perl should have configured itself correctly, regardless of my stupidity :) I'd really like to know how your system ended up in this state, and whether its a case which will come up again :) I don't think "..." is a valid directory-alias on any platform. so I'm wondering if its some kind of internal placeholder if so, its definitely something we need to recognise any hints how to debug the perl source tree (after config,make,make install) to see what went wrong? I think some versions of Windows accept ... to mean ..\.. not sure if XP/Vista still do wolverian: what platform are you running on? Infinoid, linux, ubuntu 8.04 self-built perl, or .deb package? self, 5.10 ok. I'm using a half-broken 5.10.0 gentoo ebuild :) as for debugging it... its all about the values in Config.pm, which (judging from comments at the top) was generated by configpm you're repeating yourself "half-broken" + "gentoo" ;) thank you for that, davidfetter :) ;) hey, it used to be 90% broken ;) half- is a big improvement I think I built with userelocatableinc, btw yes, I did that's the only special flag besides prefix that I used and prefix was ~/local but remember, gentoo ebuilds aren't release quality until they're *fully* broken perhaps you can reproduce it with that? users demand nothing less Infinoid, are you over 30 years old? I'll make a build and see what it looks like... will probably take a little while davidfetter: not quite, but gimme a year ah, it's explicitly mentioned in perldoc perldelta * davidfetter has noticed a marked paucity of post-30 people in gentoo That means that, if the string ".../" is found at the start of any path, it’s substituted with the directory of $^X. So, the relocation can be configured on a per- directory basis, although the default with "-Duserelocatableinc" is that everything is relocated. The initial install is done to the original configured prefix. sorry for the horrendous paste. so it _is_ a placeholder riight. so we're trying to use the bare value and it isn't working, because they are smarter than we are $Config{scriptdirexp} is looking nicer and nicer isn't it nice, though, that they let you peek at the internal value, though? :) s:2nd/, though// "Infinoid" at 75.5.242.149 pasted "scriptdir -> scriptdirexp" (13 lines) at http://nopaste.snit.ch/12546 wolverian: does that reduce your breakage any? Determining whether perldoc is installed...Use of uninitialized value in concatenation (.) or string at config/auto/perldoc.pm line 39. .............................no. even though this prints it fine: perl -MConfig -E'say $Config{scriptdirexp}' ok, please add scriptdirexp to the list of variables to steal, in config/init/defaults.pm fortunately it looks like nothing else in parrot uses scriptdir % purl has left purl!~purl@209.218.54.66 that gets past the perldoc check, yay s,gets,gets Configure.pl, next problem: make (dist)clean leaves behind these: languages/perl6/Makefile languages/perl6/src/utils/Makefile runtime/parrot/include/signal.pasm I'm sure I should just submit these as bugs instead of complaining here, sigh sorry, I'm not ignoring you, I'm preparing this config tweak for commit no worries might be interesting to go through %Config looking for other instances of ".../"... that perldelta entry looked an awful lot like it's gonna occur elsewhere just don't want to stop discussion here with these issues try: make realclean hmm, that doesn't appear to remove languages/perl6/Makefile either. oops * Infinoid crosses his fingers and hopes he didn't just break older versions of perl "wolverian" at 80.221.43.65 pasted ".../ in Config.pm" (16 lines) at http://nopaste.snit.ch/12547 thanks you're welcome looks like scriptdir was the only path-related variable we were reading in config/init/defaults.pm, so we might get lucky and not care about the rest should make succeed even though the svn revision check failed? because, it doesn't. :) "src/oo.c:25:27: error: pmc/pmc_class.h: No such file or directory" r26513 | infinoid++ | trunk: : [config] perldoc check should use $Config{scriptdirexp}, not $Config{scriptdir}. : The "scriptdir" value from p5 is sometimes interpreted in strange ways, but : the "scriptdirexp" value is expanded at compile-time, so it's guaranteed to be : sane. msg kid51 please take a look at r26513 for me... It Works For Me, but I'm hoping I didn't break older versions of perl, and I'm hoping we won't run into this issue anywhere else. hmm. make -j1 seems to fare better * Infinoid stares at the lack of purl we are not make -j-safe, and I would love to fix that ah, that's it, then. thanks. make fails building revision.c, calling git-svn which obviously doesn't work if it's not a git-svn clone.. yep, that makes sense is the problem that you don't have git-svn installed, or that your git checkout doesn't have git-svn markings? the latter. I just cloned from the repo I linked to earlier, since it's by far faster than running git-svn. (if I want history, anyway) % cdm has left cdm!~cdm@n00.bcrtfl01.us.wh.nameservers.net trying it here... that is, this: http://repo.or.cz/w/parrot.git hmm. I can't clone that the actual git repo is: git://repo.or.cz/parrot.git oh, I'm a bonehead. right-o. % purl has joined #parrot msg kid51 please take a look at r26513 for me... It Works For Me, but I'm hoping I didn't break older versions of perl, and I'm hoping we won't run into this issue anywhere else. Message for kid51 stored. * Infinoid watches git-svn spin taking all the CPU heh, yeah. I wonder what it's trying to do there is no svn stuff in .git/config according to strace, it is running "git config -l " over and over and over git-svn spins forever once during Configure.pl, and again during tools/build/revision_c.pl it doesn't actually run forever for me during Configure.pl just for a while :) 30 seconds, perhaps ok, s/ // longer during revision_c.pl, perhaps forever. well, maybe I'm just impatient * wolverian nods apparently git-svn thinks something is going to change in the output of "git config -l", if it keeps trying hmm * wolverian clones git ouch, 30kB/s this will take a while :) I guess kernel.org needs a fatter pipe... * davidfetter wonders whether it needs a phat sack to go with the phat pipe I think the phat sack is what they use to pay for the phat pipe but I'm not sure :) this talk of sacks and pipes is making me uncomfortable, though I'm not quite sure why * wolverian twiddles thumbs * Infinoid discovers git-svn clone -r, and spares poor svn.perl.org har I'm sure it works with a git-svn clone .. or someone would have complained everyone who ever ran it without -r is probably still waiting and watching haha well, that's why I used the git mirror :] oh, yay, git-svn is still a 4863 line perl script yes, that's the exact linecount awesome is it possible to convince the maintainer of git://repo.or.cz/parrot.git to insert some git-svn config values into their repo? probably I don't know him though; his e-mail is on the gitweb page say what you like about the awesomeness of raw git, but it *is* very useful to us to be able to obtain the svn revision, instead of a git hash in this case, I guess the only way to do so is to look at the last line of the commit log add a commithook on the svn server that adds the revision to REVISION? ;) what's the git-svn invocation that parrot runs? ack found it for me % skids has left skids!bri@charon.clarku.edu I can't follow git-svn's logic, at least not without refactoring it into separate files and making some diagrams :) % kj has left kj!~IceChat7@ip565fd420.direct-adsl.nl it's clearly a bug in git-svn though hm, it doesn't happen on an empty projet s/projet/project/ i.e. git svn log --limit=1 doesn't spin neither on git.git I wonder if it's doing some kind of dumb loop and running git config once for each commit, or something I'll let it run and see if it finishes could probably just parse the output of "git log -1" instead looks like it it'd be good to know what causes this behaviour and get it fixed in git-svn though * wolverian scratches his head and resumes the hunt for the red october that movie rocks. yes :) aha! it finished! yeah, git-svn could be fixed, but a more general solution for parrot would also help (git svn log --limit=1 did, that is) I don't see the looping behaviour on the git.git repo what's different about parrot's repo? % __jt__ has left __jt__!~johntramm@66.173.121.22 % purl has left purl!~purl@209.218.54.66 % Andy has left Andy!~AndyL@host3130.follett.com okay, now that I let make spin a while on the revision.c stuff, I get this: compilers/imcc/main.c:243: error: expected expression before ‘)’ token funnily enough, that line is: printf(" (r%d)", PARROT_REVISION); :) revision.c ended up with this (nopasting): "wolverian" at 80.221.43.65 pasted "sad revision.c" (35 lines) at http://nopaste.snit.ch/12550 I suppose that's not a surprise though.. I'll just wait for the git log fix :) % skids has joined #parrot working on that now Infinoid++ running git-svn has a side effect of creating .git/svn/ even if it doesn't exist. which is a shame, because testing for the existence of .git/svn/ would be an easy way to choose whether to use raw git or not hrm. "git log -1" works in both cases. might as well use it in both cases. Determining Parrot's revision.......................................r26513. \o/ does git run on non-unix platforms? do I have to worry about the portability of checking for the existence of a ".git" directory? r26514 | infinoid++ | trunk: : [configure] : * patch Parrot::Revision to use "git log -1" instead of "git-svn log --limit=1". : This fixes the case where the user is building from a (non git-svn) git : checkout from git://repo.or.cz/parrot.git - git-svn hangs for long periods of : time (and eventually fails) when run on a non-git-svn checkout. : * wolverian++ for mentioning it. : * git-svn checkouts still work just fine... this solution covers both git cases. diff: http://parrotvm.org/svn/parrot/revision/?rev=26514 it run-ish on windows with mingw nowadays, soon to be integrated into the mainline code did they change the name of the .git directory? I don't think so I want something that always exists for any git checkout that wouldn't make any sense suppose I could just skip the directory check and rely the return value of git, like the other code in that file does let me test, I happen to be on vista right now (games-- # come on, support linux already) thanks as for that, there's always tuxgames it's still .dir er .git great. does the patch work? (I can nopaste a copy, if it helps.) still cloning.. sec oh, wait I suppose I should boot back to ubuntu to test it. :) well, I guess I can test from vista too * wolverian is too tired % Psyche^ has joined #parrot of course, windows brings its own interesting features.. wolverian: tomorrow is fine, git-svn doesn't have many users :) s/git-// # in the near future, hopefully ;) meh, I don't have gcc on windows does parrot build with mingw? yes strawberry perl has a nice bundle that works fine for me oh, good point the paths aren't set up though % Patterner has left Patterner!~Psyche@e177113091.adsl.alicedsl.de % Psyche^ is now known as Patterner ah, there it is eh, I don't know how to use this stuff I'll test in ubuntu tomorrow :) gotta sleep now thanks and cheers % Limbic_Region has joined #parrot % h0rn has left #parrot % jrt4 has left jrt4!~bojangles@c-24-18-106-126.hsd1.mn.comcast.net % jrt4 has joined #parrot % gryphon has left gryphon!~gryphon@dsl-209-221-185-54.zipcon.net % sjansen has left sjansen!~sjansen@hq-nat2.gurulabs.com % japhb has joined #parrot % japhb has left japhb!~geoff@76-191-190-8.dsl.static.sonic.net % skv_ has joined #parrot % skv has left skv!~skv@87.242.97.68 % skv_ is now known as skv % wknight8111 has left wknight8111!~nobody@c-71-230-33-251.hsd1.pa.comcast.net % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net % particle has joined #parrot % spez has left spez!~spez@c-71-63-100-42.hsd1.va.comcast.net % purl has joined #parrot % purl has left purl!~purl@209.218.54.66 % purl has joined #parrot seen purl purl was last seen on #imager 4 days and 4 hours ago, saying: fountain is pretty cool. [Mar 17 17:35:31 2008] seen purl_ purl_ was last seen on #poe 1 year and 63 days ago, saying: hides behind purl [Jan 18 14:27:16 2007] % purl has left purl!purl@sentient.life % purl has joined #parrot % purl has left purl!purl@sentient.life % purl has joined #parrot seen cotto_home cotto_home was last seen on #parrot right now, saying: seen cotto_home % wknight8111 has joined #parrot % Ademan has left Ademan!~dan@h-69-3-232-203.snfccasy.dynamic.covad.net % Alias has joined #parrot % Alias__ has left Alias__!adam@CPE-124-188-112-79.nsw.bigpond.net.au % Ademan has joined #parrot % Theory has left Theory!~Theory@c-24-21-175-208.hsd1.or.comcast.net % Ademan has left Ademan!~dan@h-69-3-232-203.snfccasy.dynamic.covad.net % Ademan has joined #parrot % ejs has joined #parrot