Second Perl 6 Microgrant - Phil Crow on Java to Perl 6 declaration converter
We're pleased to announce that we've selected Phil Crow as the recipient of the second Perl 6 microgrant. Phil is the hacker behind the Java::Swing module which allows Perl programmers to put a Java Swing GUI on their application without writing any Java and he'll be using this knowledge to convert Java declarations to Perl 6. You can find details of the project he's planning in the text of his grant application: Tim Bunce has suggested that it would be nice to have a general purpose declaration translator from Java to Perl. In particular, he is interested in leveraging this tool to create a JDBC API for Perl 6 from the Java JDBC classes and interfaces. The result would then provide a strong foundation for the Perl 6 DBI. I propose to write that translator. It would have two pieces: * One would use the Java deparser (part of its standard development kit) to turn Java classes or interfaces into an internal structure * The other half would turn that structure into valid Perl 6. Note that it would only translate class, interface, and method declarations, not code. Success for this project will be a working translator that generates method declarations in Perl 6 from compiled Java .class files. While all cases might not be covered, at least the final product should not die when faced with the unexpected. The generated files will be tested using the then current version of Pugs. This project is new and has only recently been discussed in response to the call for proposals. I'm sure I will have questions to direct to various Perl 6 mailing lists as the project progresses. Phil will be blogging about his grant progress at: http://use.perl.org/~philcrow/journal/ This microgrant is supported by additional sponsorship from Tim Bunce / DBI. Please join us in wishing him the best of luck with his project. We're really looking forward to seeing the results of this work.If you're interested in submitting a Perl 6 microgrant proposal, you can find details here: http://www.nntp.perl.org/group/perl.perl5.porters/2007/03/msg122448.html Best, Leon and Jesse
Re: CPANDB - was: Module::Dependency 1.84
On 7/14/06, Tels [EMAIL PROTECTED] wrote: afte seeing the recent discussion about CPANDB and CPAN::Index, I don't think I want to work on that project anymore for two reasons: Hey Tels, Please ignore the other people in the thread. Instead spend a little bit of time to do something simple that works. My preferred development methodology is to underpromise and overdeliver. Mailing lists generally do not help in this regard. To the other people in this thread: please ignore this mail ;-) Leon
Re: Expect on Windows
On 6/28/06, Gabor Szabo [EMAIL PROTECTED] wrote: As Test::Expect was just mentioned here, I would like to know why Expect and thus Test::Expect does NOT work on Windows? Well, Test::Expect is a wrapper. Test::Expect works on Windows if and only if Expect works on Windows. It has this comment, which may or may not be useful: http://search.cpan.org/~rgiersig/Expect-1.17/Expect.pod#Can_I_use_this_module_with_ActivePerl_on_Windows%3F ... but I bet it's because the author has no access to Windows. I'm sure he'll accept patches! ;-) Leon
Re: Using Perl in QA departments
On 6/17/06, Gabor Szabo [EMAIL PROTECTED] wrote: http://www.szabgab.com/perl_in_test_automation.html This is really neat. You might want to add a link to Test::Expect too, which makes it almost to easy to test terminal-based programs. Thanks again! Leon
Test::Expect
Oh, I forgot to mention to perl-qa that I wrote Test::Expect: http://search.cpan.org/dist/Test-Expect/ It does Automated driving and testing of terminal-based programs. Simple example here: http://search.cpan.org/src/LBROCARD/Devel-ebug-0.38/t/ebug.t It's a simple wrapper, but I like it. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Look out! Behind you!
Re: Module::Packaged vs Phalanx 100
Leon Brocard sent the following bits through the ether: http://astray.com/tmp/phalanx.html This now mentions core modules and notices Mandrake contrib (Module-Packaged 0.79 just hit CPAN), so Mandrake jumps from 28 - 87. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... I'm sure it's in the manual somewhere...
Module::Packaged vs Phalanx 100
This is what you get when you set Module::Packaged against the Phalanx 100. So right now FreeBSD packages the most of Phalanx, and it's kinda interesting to see the version numbers. http://astray.com/tmp/phalanx.html Script: http://unixbeard.net/acme-svn/Module-Packaged/phalanx.pl (pass in the source of http://qa.perl.org/phalanx/100/) There might be bugs, patches welcome, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... A living example of Artificial Intelligence
Re: Module::Packaged vs Phalanx 100
Johan Vromans sent the following bits through the ether: Definitely. I'm quite sure Getopt::Long is in _every_ distribution... Of course, this only notices individually-packaged CPAN dists (ignores the core). Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Acoustic - What you play pool with
Re: Fwd: CPAN Upload: D/DO/DOMM/Module-CPANTS-Generator-0.22.tar.gz
Thomas Klausner sent the following bits through the ether: On issue I'd like to ask is: We (Gabor Szabo and I) are thinking of renaming the distribution from Module::CPANTS to CPANTS. Do you think that this is a good idea? I see no advantage and quite a bit of pain in renaming. However, it is your module ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... But my little voice TOLD me to do it!
Re: Redoing the Phalanx 100
Andy Lester sent the following bits through the ether: I'll be redoing the Phalanx 100 this week. I'm hoping to get FTP logs from pair.com and from cpan.org. If anyone else has FTP logs they can submit to me, I'd love to have 'em. Please make the list available in a computer-readable format. A module on CPAN, perhaps. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... That must be wonderful! I don't understand it at all
Re: The new Perl 6 compiler pumpking
Dan Sugalski sent the following bits through the ether: I'd like everyone to give a welcome to Patrick Michaud, who's volunteered to officially take charge of getting the Perl 6 compiler module written. Welcome Patrick! What's your plan of attack? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Taglines not comprehensible are
Re: ICU Outdated - Ideas
Dan Sugalski sent the following bits through the ether: If someone's tempted to do 3) Write our own Unicode system, I'm OK with that too. The string internals doc needs writing, and I can get that done. IIRC the mono people wrote their own, but with the ICU data files. Apart from license issues, this might be an interesting thing to look at. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Better to understand a little than to misunderstand a lot
Re: [PATCH] signals under x86_64
Adam Thomason sent the following bits through the ether: No troubles here (see the palaeodictyoptera tinderbox). Is procps up-to-date? Is NPTL causing different PIDs to show up? OK, chalk it up to dodgy Fedora in that case. Please do not apply patch. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... I used to have a handle on life, then it broke
[PATCH] remove unused parameter from pbc.c
Removes a warning. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... We're not worthy! We're not worthy! Index: imcc/pbc.c === RCS file: /cvs/public/parrot/imcc/pbc.c,v retrieving revision 1.69 diff -u -r1.69 pbc.c --- imcc/pbc.c 18 Mar 2004 08:56:58 - 1.69 +++ imcc/pbc.c 31 Mar 2004 09:56:29 - @@ -214,7 +214,7 @@ /* allocate a new globals.cs-subs structure */ static void -make_new_sub(struct Parrot_Interp *interpreter, IMC_Unit * unit) +make_new_sub(struct Parrot_Interp *interpreter) { struct subs *s = mem_sys_allocate_zeroed(sizeof(struct subs)); if (!s) @@ -846,7 +846,7 @@ if (!unit-instructions) return 0; -make_new_sub(interpreter, unit); /* we start a new compilation unit */ +make_new_sub(interpreter); /* we start a new compilation unit */ return 0; }
[PATCH] longness in pf_items.c
On our shiny 64-bit Opteron box I get a warning here. This silences the warning. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Borg? Where? I don't se*(#$#..NO CARRIER Index: pf/pf_items.c === RCS file: /cvs/public/parrot/pf/pf_items.c,v retrieving revision 1.13 diff -u -r1.13 pf_items.c --- pf/pf_items.c 4 Mar 2004 11:15:52 - 1.13 +++ pf/pf_items.c 31 Mar 2004 09:59:19 - @@ -572,7 +572,7 @@ } } } -assert( ((int)charcursor 3) == 0); +assert( ((long)charcursor 3) == 0); LVALUE_CAST(char *, cursor) = charcursor; return cursor; }
[PATCH] signals under x86_64
Signals no worky under x86_64. I don't really understand why. Seeing as we're skipping on lots of platforms anyway, I've added it to the list of skipped platforms. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... (the gentle sound of crashing software) Index: t/pmc/signal.t === RCS file: /cvs/public/parrot/t/pmc/signal.t,v retrieving revision 1.8 diff -u -r1.8 signal.t --- t/pmc/signal.t 18 Mar 2004 16:24:16 - 1.8 +++ t/pmc/signal.t 31 Mar 2004 09:59:40 - @@ -18,18 +18,20 @@ use Parrot::Test; use Test::More; +use POSIX ('uname'); use strict; +my $arch = (uname())[-1]; + my %platforms = map {$_=1} qw/ hpux linux /; -if ($platforms{$^O}) { -plan tests = 3 * 2; -} -else { +if ($arch eq 'x86_64' || !$platforms{$^O}) { plan skip_all = 'No events yet'; +} else { +plan tests = 3 * 2; } #
Re: [PATCH] signals under x86_64
Leopold Toetsch sent the following bits through the ether: Is this available on e.g. Windows? Possibly, it's just POSIX. I have no way to test this however. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Bother, said Pooh as the brakes went out!
Re: [PATCH] remove unused parameter from pbc.c
Leopold Toetsch sent the following bits through the ether: Both interpreter and unit aren't unused, if JIT is enabled. Changed a bit. Ooh. Oops. Anyway, warnings bad. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Always remember you're unique, just like everyone else
Re: Fwd: TALK:4-5-04 A (Grand?) Unified Theory of Storage Reclamation
Dan Sugalski sent the following bits through the ether: A (Grand?) Unified Theory of Storage Reclamation Slides here: http://www.research.ibm.com/people/d/dfb/talks/Bacon04Grand.ppt Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... A living example of Artificial Intelligence
testers.cpan.org ideas
Hello. Having got a Perl release out of the way, I'm now back to working on http://testers.cpan.org/ Does anyone have any features they'd like to see on the website? I'm looking at extracting more information (Perl version, platform) and having pages (and thus RSS) per author. Cheers, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... I love it when a plan comes together!
Re: testers.cpan.org ideas
Adrian Howard sent the following bits through the ether: RSS feeds would be *very* nice :-) Easy request to fulfill - it already does has an RSS feed per distribution. The bottom of http://testers.cpan.org/show/Test-Exception.html points out: http://testers.cpan.org/show/Test-Exception.rss So now I want an RSS feed per author, so I don't have to subscribe to 30 RSS feeds ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... $$$ not found -- (A)bort (R)efinance (B)ankrupt
Re: Distributed testing idea
Michael G Schwern sent the following bits through the ether: So what I need is some way to set up a network of test servers such that I can say test this module for me and my testing client would ship it to as many test servers as it can find and get the results back all in just a few minutes. The scheme that you propose sounds awfully like a messaging system. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... But I don't *like* ponies!
Re: Objects and time
Dan Sugalski sent the following bits through the ether: So, the question--shall we do objects and maybe miss the Feb 29th release, or do the Feb 29th release and do objects for the next release? Objects please! Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... That's Ren and Stimpy - they're way existential
Smoking CPAN
Hello. I've had more time recently, so I smoke tested the Phalanx 100. Files are attached. Also see http://search.cpan.org/dist/Haul/ So, what it does is: foreach module to do start out with a fresh perl 5.8.3 with nothing else installed try and install the module its deps ... report OK or TIMEOUT (infinite loops or things) hcaerof It's very simple, and some wheels may have been reinvented in the process, but I have a computer I'm prepared to dedicate to smoking cpan. This can check dependencies are correct, and whether modules work with all versions of Perl. Oh, and Module::Depends rocks. Comments? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Useless invention no. 404: Caffeine-free Diet Coke install.pl Description: Perl program Installing Compress::Zlib... ... done Installing DBD::mysql... ... done Installing DBI... ... done Installing HTML::Parser... ... done Installing LWP... ... done Installing Mail::Mailer... ... done Installing MIME::Base64... ... already installed Installing URI... ... done Installing Date::Calc... ... done Installing Digest::HMAC... ... done Installing Digest::SHA1... ... done Installing GD... ... done Installing HTML::Tagset... ... done Installing IO::Wrap... ... done Installing Mail::SpamAssassin... ... done Installing MIME::Lite... ... done Installing MIME::Parser... ... done Installing Net::DNS... ... done Installing Net::Telnet... ... done Installing Net::SSLeay... ... done Installing Parse::RecDescent... ... done Installing Spreadsheet::WriteExcel... ... done Installing XML::Parser... ... done Installing XML::Simple... ... done Installing Apache::Session... ... done Installing AppConfig... ... done Installing Archive::Tar... ... done Installing Archive::Zip... ... done Installing Bio::Seq... ... done Installing Bit::Vector... ... done Installing CGI::Application... ... done Installing CGI::Kwiki... ... done Installing CGI::Session... ... done Installing Class::DBI... ... done Installing Class::Date... ... done Installing Config::IniFiles... ... done Installing Convert::ASN1... ... done Installing Crypt::Blowfish... ... done Installing Crypt::CBC... ... done Installing Crypt::DES... ... done Installing Crypt::SSLeay... ... done Installing Data::ShowTable... ... done Installing Date::Manip... ... done Installing DBD::CSV... ... done Installing DBIx::SearchBuilder... ... done Installing Error... ... done Installing Expect... ... done Installing GD::Graph... ... done Installing GD::Text... ... done Installing HTML::Template... ... done Installing HTML::Tree... ... done Installing Image::Info... ... done Installing Image::Size... ... done Installing Inline... ... done Installing IO::Tty... ... done Installing XML::LibXML... ... done Installing Mail::Sendmail... ... done Installing MD5... ... done Installing Module::Build... ... done Installing MP3::Info... ... done Installing Net::Daemon... ... done Installing Net::SNMP... ... done Installing Params::Validate... ... done Installing PDF::API2... ... done Installing PDL... ... timed out (after 10 mins)!
Re: Phalanx / CPANTS / Kwalitee
Thomas Klausner sent the following bits through the ether: OTOH, it might be an interesting idea to allow CPANTS to compile code (and thus use stuff like Devel::Cover) if not testing the whole of CPAN, but linting one distribution. Yes. We've been thinking about this. It either needs stealing buildd from Debian, having a box we don't mind destroying every so often, or having a VMware virtual machine we can undo easily. What we need is more free time ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Ethernet: A device for catching the Ether Bunny
Re: The Great Renaming
Brent Dax sent the following bits through the ether: Are there any objections to this? Sounds good. For embedding (eg Ponie), we're going to have to make sure that all symbols start with parrot_ / Parrot_... Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Press any key...NO, NO, NO, NOT THAT ONE!!
Re: Testers PASS
alian sent the following bits through the ether: I just see that testers.cpan.org now use your interface. Cl. Faaast. Indeed! But some problems ... We use in CPANPLUS old interface, old url to fetch reports about a dist. So there is no longuer report from CPANPLUS testers since yesterday. Which interface is this? We can probably fake it with a mod_rewrite rule if you tell me the details. Ok, I patch this for use the great yaml I found one the new site, but there is missing info into the yaml file: When reports are failed, we just know: this fail. I need another field like 'detailed_results' who is an url to detailed report (today http://nntp.x.perl.org/group/perl.cpan.testers/xxx). If you replace the xxx with the ID then you have the correct URL. The next release of CPAN testers will have a report_url key containing this. HTH, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Don't sweat it - it's only ones and zeros
Re: Testers PASS
alian sent the following bits through the ether: The patch is already done. But if there is others apps that use that: http://testers.cpan.org/search?request=distdist=$name who is now: http://testers.cpan.org/show/$name Done that: http://testers.cpan.org/search?request=distdist=Acme-Colour Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... C program run. C program crash. C programmer quit
Re: Scrutinizing CPAN distributions (was Testing for valid path names...)
Andrew Savige sent the following bits through the ether: I'm an enthusiastic admirer of Schwern's CPANTS kwalitee vision and aware of Module::CPANTS but unsure about the current state of play. Tips on other stuff I should look at are welcome. [From a Module::CPANTS perspective...] Module::CPANTS is a small subset of Schwern's original kwalitee vision, in so far as it is a bunch of metrics that I can easily extract without eval-ing the whole of CPAN. The actual module is a big hash of hashes, but I think shipping an SQLite database might be a better idea in future. I highly recommend trying out Thomas' web form, which has some good example queries at the bottom: http://domm.zsi.at/cpants/search 1) Archive nit-picker. Archive::Any's is_impolite/is_naughty is a start. Also test for: good cross-platform file names (my original question); good Changes, README, t/ directory etc.. I like the is_impolite / is_naughty ideas, and will roll them into the next version. If you have a simple metric for a good cross-platform filename, that'd be good. I'm not sure about how you mean a good Changes. For a start, people call them different things (Changes, CHANGES, ChangeLog etc.), and format them differently. What is a good README? To be honest, now that we have web interfaces to docs on search.cpan.org I don't think that READMEs are terribly important. The current version of CPAN reports the number of tests for a distribution (but only if it's had a FAIL, sigh). 2) POD tester. Use Test::Pod/Pod::Coverage, say, on all POD in a distribution. I don't want to eval the whole of CPAN. Maybe we could get the CPAN Testers to do this? 3) Static Perl code analyser. I suppose PerlTidy, Module::Info, B::Lint may be helpful. Any others? To achieve what? 4) Test suite analyser. How good is the test suite? Use perhaps Devel::Cover to determine how much of the code is covered by the distribution's test suite. Sure, convince CPAN Testers to do this ;-) 5) Signature checker. Sure. 6) Prerequisite checker. What would you check, exactly? 7) Version checker. What would you check, exactly? Anything else? Does such a module/script already exist? Module::CPANTS::Generator contains a number of metric finding functions. It's great that somebody else thinks that metrics is a good idea. I thought it was just Schwern, Thomas and I! ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Hi-ho, hi-ho, it's hand grenades I throw...
Re: Testers PASS
Graham Barr sent the following bits through the ether: Now maybe I should ignore the version numbers and instead sort using the dates that the module was uploaded to CPAN, but that's external information, bah. That is what search does because guessing at peoples versioning was to unpredictable. However using upload dates is also problematic for some distributions (eg mod_perl and perl) It does? The order of the MIME-Lite-HTML page and the backpan dates don't agree: http://testers.cpan.org/search?request=distdist=MIME-Lite-HTML kanga% ls -tr BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-*.tar.gz BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-0.1.tar.gz BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-0.3.tar.gz BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-0.4.tar.gz [...] BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-1.16.tar.gz BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-1.17.tar.gz BACKPAN/authors/id/A/AL/ALIAN/MIME-Lite-HTML-1.18.tar.gz Thanks for answering all these questions, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Change is inevitable, except from a vending machine
Re: Testers PASS
Tels sent the following bits through the ether: Hm, it generates fast, but wrong results :-) Ooops, the summaries are wrong. Fixed. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... For Sale: Slightly used message. Enquire within
Re: Testers PASS
alian sent the following bits through the ether: About order of v-string: It would be good in details results that 1.18 would be first before 1.2. You're looking at http://testers.astray.com/show/MIME-Lite-HTML.html. I'm actually sorting using version.pm at the moment, as it seemed to be the most comprehensive. Sort::Versions didn't really do the right thing for module versions. See what version.pm says: kanga% perl -e 'use version; print version-new(1.9)' 1.900 kanga% perl -e 'use version; print version-new(1.10)' 1.100 perlmodstyle says: The most common CPAN version numbering scheme looks like this: 1.00, 1.10, 1.11, 1.20, 1.30, 1.31, 1.32 00modlist.long.html says: To be fully compatible with the Exporter and MakeMaker modules you should store your module's version number in a non-my package variable called $VERSION. This should be a valid floating point number with at least two digits after the decimal (ie hundredths, e.g, $VERSION = 0.01). See Exporter.pm for details. Thus, I think that my website is correct in sorting the version numbers. 1.2 should be later than 1.18. I think your versioning system is wrong ;-) http://dellah.org/testers/MIME-Lite-HTML gets the version sorting wrong but right. How do you sort, Iain? http://testers.cpan.org/search?request=distdist=MIME-Lite-HTML keeps on timing out, so I don't know what it does. Graham? Now maybe I should ignore the version numbers and instead sort using the dates that the module was uploaded to CPAN, but that's external information, bah. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Blueness is a way of life
Re: Testers PASS
Graham Barr sent the following bits through the ether: http://testers.cpan.org/search?request=distdist=MIME-Lite-HTML keeps on timing out, so I don't know what it does. Graham? I just added a new index to the database. It should be much quicker now. Wow, that's like a 100x speedup. Can you speed up http://testers.cpan.org/search?request=by-distletter=M too? ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... 1001 Things To Do With Whipped Cream, LGLB (1995)
Re: Approaching m4
Bernhard Schmalhofer sent the following bits through the ether: Is there already a testing framework in PIR or PASM? For now I've just tweaked the Makefile from bf. This looks excellent. First, may I be the first to say that I'm happy that BF is the inspiration for so many Parrot projects ;-) We've used the Perl testing framework (Test::Harness, eg: 1..1\nok 1) in the main parrot test suite. It's working well for Perl and a Parrot version of it might be nice idea... Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... I'm not smart enough to lie
Re: Testers PASS
alian sent the following bits through the ether: But there is a serious problem with CPAN test database. There is like 100 000 reports in the CPAN db. This is not a big problem. 100_000 reports is a very small database and I still don't know why the testers.cpan.org site is so slow. I got annoyed about it and wrote my own as it wasn't open source. It is much much faster. http://search.cpan.org/author/LBROCARD/CPAN-WWW-Testers/ http://testers.astray.com/ Comments welcome, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Change is inevitable, except from a vending machine
Re: Testers PASS
Leon Brocard sent the following bits through the ether: Secondly, who do I need to convince to add the make test results for PASSes too? ;-) So, does anyone actually have an opinion on this? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Beulah, peel me a grape.
Re: Testers PASS
Abe Timmerman sent the following bits through the ether: Did I misunderstand? My point is that the CPAN Testers reports for fails have the output of make test, eg: http://nntp.x.perl.org/group/perl.cpan.testers/96865 ... but passes don't: http://nntp.x.perl.org/group/perl.cpan.testers/96886 This is inconsistent and we're throwing information away. I say put it in all the time. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... ASCII and ye shall receive
Re: subroutines and python status
K Stol sent the following bits through the ether: Actually, I named my little project pirate (s. http://members.home.nl/joeijoei/parrot for this) already, but it's a bit of a dead end already (although I learnt much of it), so I don't mind. Quick, we need more parrot jokes... I don't like things becoming dead-ends. How much work do you think it'd be to extend it some more and update it to latest Lua? Would it be worth checking this into parrot CVS? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Dang this hobby is expensive!
Re: [perl #23085] [PATCH] Off by one error in exceptions.c
J?rgen B?mmels sent the following bits through the ether: The offending line is exceptions.c:123 if (m[strlen(m-1)] != '\n') Thanks, applied. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... It said, Insert disk #3, but only two will fit!
Testers PASS
Hello, I've been looking at the testers database (well, downloading the list via nntp.perl.org really) for Module::CPANTS recently. In the current version of Module::CPANTS I report the count of PASSes and FAILs for each distribution. This works well. I've been looking at gathering the number of tests that a distribution has. However, it looks like FAILs have this information, eg: Failed 1/10 test scripts, 90.00% okay. 3/43 subtests failed, 93.02% okay. ... but PASSes don't. So for the next version of Module::CPANTS I'll be able to report the number of tests only for those distributions which have a plan and have failed at least one test. Firstly, is there a reason for this inconsistency? Secondly, who do I need to convince to add the make test results for PASSes too? ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... I am not a photon
Re: [perl #23005] [PATCH] Parrot_sprintf not recognizing 7 in precision
mrnobo1024 sent the following bits through the ether: Parrot_sprintf isn't recognizing 7 as a number in the precision field, so trying to use that results in a '7' is not a valid sprintf format error. Thanks, patch applied. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Corrupt REALITY.SYS: Reboot Universe (Y/n)?
ponie
I just noticed that nobody had emailed perl6-internals about ponie, which was announced yesterday as OSCON. Ponie is perl 5 on parrot. For more info: http://use.perl.org/article.pl?sid=03/07/09/0237202 Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... C++ should have been called D
Re: [perl #22873] gentoo ebuild ... problem..
Leopold Toetsch sent the following bits through the ether: Unknown option: U perldoc [options] PageName|ModuleName|ProgramName... (perldoc is very likely from 5.005; version 1.14) I was a little hasty with the previous patch, sorry. I blame perldoc's man page for not sorting options alphabetically. I've reverted -U back to -u. We'll need to check the perldoc version and if it's a recent one with the annoying Superuser must not run /usr/bin/perldoc without security audit and taint checks. message then run it with -U as well as -u. Apologies, Leon ps and I was so proud of my first CVS commit too :-( -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... 668 - Neighbor of the Beast
Re: [perl #22873] gentoo ebuild ... problem..
raptor sent the following bits through the ether: As u may see the problem is when docs-generation is done ... the perldoc -U has to be used in docs/Makefile so the generation pass successfully.. At the moment it is perldoc -u Could u correct this thanx alot in advance. Thanks for the bug report. I've patched parrot in CVS to use perldoc -U. To be honest, I'm not entirely sure that any of us actually install parrot at the moment, but it is a great area to investigate. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... And now for something completely different...
Re: About RT/Perl
Alberto Sim?es/EPL sent the following bits through the ether: Anybody can tell me the address for RT/perl software? http://rt.perl.org/ is what you should be using to submit bugs (and patches!) HTH, Leon ps it runs http://www.bestpractical.com/rt/ -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Hackito ergo sum.
Re: A couple easy questions...
David sent the following bits through the ether: how can I test to determine the datatype of the object in P1? You'd be wanting typeof. The following prints out PerlString, for example: new P0, .PerlArray set P0[1], cat set P0[2], 123 set P0[3], 456.789 set P1, P0[1] typeof S0, P1 print S0 print \n end Leon ps i fixed your code -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Useless invention no. 404: Inflatable anchor
0.1.0
David sent the following bits through the ether: Thanks. I better upgrade my version, I'm not seeing it in 0.0.9. It's been a while since 0.0.9 (errr, 20th Dec). A lot has changed since then. Maybe it's time for a 0.1.0 release. What are we waiting for? And why do we have so many version numbers? It'd be nice to have objects, otherwise we're restricted to toy languages. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Komputors nefer maik erers
Re: 0.1.0
Dan Sugalski sent the following bits through the ether: While I'll call C many things (not all of them repeatable) I'm not sure toy is one of them. Nor Forth, Fortran, APL, COBOL, Lisp, or Basic... :) Granted, but those aren't the languages we're interested in. Parrot is for dynamic languages, and that gives away the fact that objects would help in their implementation. Objects are coming, though I've been too pressed for time recently. String rework first, then objects. Excellent. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... What's brown and sticky? A stick!
Parrot developer world map
Last week I collected your data. This week I bring you pretty pictures: http://www.astray.com/parrot/worldmap/ So London would seem a good place for a Parrot developer day, as would California. I guess most people will be meeting up at Perl conferences anyway. What do people have in mind for such a thing? A room, at least one computer, an internet connection and a Plan? Are you looking to learn more about Parrot or do you have something more specific in mind? Leon ps feel free to send in your location if you've forgotten to: -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Famous last words - Don't worry, I can handle it
Re: Compiling to Parrot
K Stol sent the following bits through the ether: A few weeks ago I posted something about a Tcl-parrot compiler, but Will Coleda already was working on such a project. It would be a as a final project for my bachelor's. But because such already exists, I'm looking for something else. An interesting project to do would be to do a Java-Parrot compiler. Basing it on an existing Java compiler such as Jikes is probably the best way to do this: http://oss.software.ibm.com/developerworks/opensource/jikes/ You'd also probably use GNU Classpath: http://www.gnu.org/software/classpath/classpath.html HTH, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Hmm... How *did* they finally kill Frosty?
Re: [perl #20400] [PATCH] ook.pasm eval
Leopold Toetsch sent the following bits through the ether: No PASM1 is the one-line assembler PDB_compile in debug.c. If you want the whole thing, you have to run imcc instead of parrot and with the PASM compiler, just as the comment states. Oops, I was confused. ook's 'make test' runs with parrot, so it doesn't work. I've attached a patch to config/gen/makefiles/ook.in to make it work with imcc, although I assume we'd want $(IMCC) to work at some point. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... Freedom defined is freedom denied Index: config/gen/makefiles/ook.in === RCS file: /cvs/public/parrot/config/gen/makefiles/ook.in,v retrieving revision 1.1 diff -u -r1.1 ook.in --- config/gen/makefiles/ook.in 1 Jan 2003 00:34:15 - 1.1 +++ config/gen/makefiles/ook.in 19 Jan 2003 18:02:38 - @@ -7,9 +7,7 @@ all: build test: build - $(PARROT) ook.pbc hello.ook foo.pasm - $(ASSEMBLE) foo.pasm foo.pbc - $(PARROT) foo.pbc + ../imcc/imcc -r ook.pasm test.ook build: ook.pasm $(ASSEMBLE) ook.pasm ook.pbc
Re: A work list! (Coming soon)
Nicholas Clark sent the following bits through the ether: This is possibly a big stuff wish list. I'm not sure how many are on the maybe never list. I'm a bear of very little brain, errr, a man of few wishes. I wish for: o objects o a make install which does something sensible Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ ... You're in a maze of twisty little Java VMs, all different
Curses Life
Leon Brocard sent the following bits through the ether: Now to get the hand of the signatures... Ah, well, I gave up on SDL as it was a little complicated. Instead, I played with curses. Please find attached a cute little curses life program loading and calling curses at runtime with dlfunc. Oh, and I made the shape a small spaceship as it's more interesting. [It's a bit of the pain the way it stomps over registers all the time, though ;-] Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ 43rd Law of Computing: Anything that can go wr... # # life.pasm # # Play conway's (no, not *him*. The other conway) game # of life # # Hacked by Leon Brocard [EMAIL PROTECTED] to use curses loadlib P1, libcurses.so dlfunc P0, P1, initscr, i invoke dlfunc P0, P1, curs_set, ii set I5, 0 invoke # First the generation count set I2, 5000 # Note the time time N5 # If true, we don't print set I12, 0 set S0, set S1, set S2, set S3, set S4, ** set S5, ** set S6, * set S7, * * set S8,** set S9, set S10, set S11, set S12, set S13, set S14, set S15, concat S15, S0 concat S15, S1 concat S15, S2 concat S15, S3 concat S15, S4 concat S15, S5 concat S15, S6 concat S15, S7 concat S15, S8 concat S15, S9 concat S15, S10 concat S15, S11 concat S15, S12 concat S15, S13 concat S15, S14 bsr dump set I0, 0 loop: ge I0, I2, getout inc I0 mod I31,I0,100 if I31, skip skip: bsr generate bsr dump branch loop getout: dlfunc P0, P1, curs_set, ii set I5, 1 invoke dlfunc P0, P1, endwin, i invoke end # S15 has the incoming string, S0 is scratch, S1 is scratch, S2 is scratch # # I0 is the length of the string # I1 is the current cell we're checking # I2 is the count for that cell # I3 is the offset to the neighbor generate: pushi length I0, S15 set S1, set I1, 0 genloop: set I2, 0 NW: set I3, -16 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, North inc I2 North: set I3, -15 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, NE inc I2 NE: set I3, -14 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, West inc I2 West: set I3, -1 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, East inc I2 East: set I3, 1 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, SW inc I2 SW: set I3, 14 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, South inc I2 South: set I3, 15 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, SE inc I2 SE: set I3, 16 add I3, I3, I0 add I3, I3, I1 mod I3, I3, I0 substr S0, S15, I3, 1 ne S0, *, check inc I2 check: substr S0, S15, I1, 1 eq S0, *, check_alive # If eq 3, put a star in else a space check_dead: eq I2, 3, star branch space check_alive: lt I2, 2, space gt I2, 3, space branch star space: concat S1, branch iter_done star: concat S1, * iter_done: inc I1 lt I1, I0, genloop done: set S15, S1 popi ret # S15 has the incoming string, S0 is scratch dump: saveall dlfunc P0, P1, move, iii set I5, 0 set I6, 0 invoke restoreall if I12, dumpend save I0 save I1 saveall save I0 dlfunc P0, P1, addstr, it set S5, Generation: invoke restore I0 dlfunc P0, P1, addstr, it set S5, I0 invoke dlfunc P0, P1, refresh, i invoke restoreall set I0, 0 set I1, 14 printloop: substr S0, S15, I0, 15 saveall dlfunc P0, P1, addstr, it set S5, S0 invoke
Re: Adding new function signatures to parrot's NCI call list
Dan Sugalski sent the following bits through the ether: Also, at the moment I can't test this OK, I've had a go. I'm basing the following on the code you mentioned at http://use.perl.org/~Elian/journal/9147 (of course, you should know better than to use exit in parrot assembler ;-) and basic code at http://www.libsdl.org/intro/usinginit.html: loadlib P1, libSDL-1.2.so.0 print Loaded...\n dlfunc P0, P1, SDL_Init, i print dlfunced...\n set I5, 48 # SDL_INIT_AUDIO|SDL_INIT_VIDEO invoke unless I5, OK print SDL_Init failed!\n end OK: print SDL_Init worked just fine\n end I get: Loaded... dlfunced... ../parrot: relocation error: /usr/lib/libSDL-1.2.so.0: undefined symbol: pthread_mutexattr_init Well, the C code on the page works fine, but of course you have to link it with -lpthread. How would I do this for the parrot code? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ (Tagline 3 of 12) - Collect them all!
Perl 6 summary for week beginning 2002-10-07
($foo is foo is bar, $bar is baz) = (1,2); Additionally, it looked like class attributes had changed name from attr to has. There was also some talk on the module versioning system, which could be done with a slice-like notation: use Acme[1.0]; # like so use Acme[ (1;17..) | (2;0..) ]; # or perhaps use Acme[1;17..] | Acme[2;0..]; # or even I'm pretty sure he was joking, but Larry considered alternatives to the ..., which issues a warning (or maybe an exception) if you try to execute it. ??? would never complain and !!! would always throw an exception. Or the other way around. Or one is fatal. Or more likely, stick with ... and make its behaviour pragmatically controllable. ... is useful for abstract method declaration. There definitely wasn't any talk about and |||. Perl6 OO Cookbook Michael Lazzaro made good on his promise last week and produced a comprehensive Perl 6 OO cookbook describing stuff that hasn't yet been designed, for a language that doesn't yet exist. It is a great piece of work and tries to examine real life Perl 6 examples. There was some discussion of the recipes and the Michael announced that he wanted to work on an online system for adding new data and many other changes. Worried about Perl 6 OO? Then check this out: http://cog.cognitivity.com/perl6/ In brief Some of the Parrot tests still don't work under Win32. Some bugs in various bits of the Parrot JITs were found, and some fixed. Dakkar found a bug in the Perl 6 compiler which basically boiled down to checking for truth instead of definedness. Hopefully Perl 6 will remove this particular problem for us ;-) We probably need more tinderboxes. Brent Dax promises to fit a pony into his next patch. Simon Glover added quite a few tests and pieces of documentation. C structs need to be padded for the more exotic architectures and compilers. There are still some DOD / GC bugs. Who's Who in Perl6 Once more we get to meet people involved in the development of Perl 6. Who are you? Jerome Quelin. What do you do for/with Perl 6? I wrote a Befunge interpreter in Parrot assembly. Now I'm waiting for Parrot to handle multiarrays and objects in order to implement the Befunge-98 specs. Where are you coming from? Some Perl Golf rumors have said that I'm an alien coming from Mars. When do you think Perl 6 will be released? Some day. Why are you doing this? In order to have a chance to understand Perl 6 sources. And because Befunge is a fun language, that deserves to be supported by Parrot. You have 5 words. Describe yourself. Perl Golf and Befunge addicted. Do you have anything to declare? Befunge rocks. Acknowledgements This summary was brought to you with slightly less distraction from Super Mario Sunshine and more recognition of the sterling work that Piers does every week. As Piers says: One more, if you think this summary has value send money to the Perl Foundation http://donate.perl-foundation.org and feed back and/or T?iBooks to me, mailto:pdcawley;bofh.org.uk. As usual, the fee paid for publication of this summary on perl.com has been donated directly to the Perl Foundation. Enjoy, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ That does not compute
Re: C# and Parrot
Bryan C. Warnock sent the following bits through the ether: Interesting read. Dan skimmed over this, but what do .NET (and JVM) doe for floating point numbers? For the JVM: http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#19511 The floating-point types are float and double, which are conceptually associated with the 32-bit single-precision and 64-bit double-precision IEEE 754 values and operations as specified in IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York). More details at: http://java.sun.com/docs/books/vmspec/2nd-edition/html/Concepts.doc.html#33377 HTH, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Cryptonomicon: The girl's guide to geek guys
Re: C# and Parrot
Leon Brocard sent the following bits through the ether: It looks like the DotGNU weekly IRC meeting will be discussing Parrot. Could be interesting: It was quite interesting. I managed to make it to the early one and Dan to the later one. An annotated and abridged chatlog is available: http://dotgnu.info/pipermail/developers/2002-October/008380.html It looks like we're going to need 8,16,32,64 bit types... Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ 43rd Law of Computing: Anything that can go wr...
Re: C# and Parrot
Rhys Weatherley sent the following bits through the ether: The Portable.NET C# compiler, cscc, is very extensive, and is capable of generating output for multiple bytecode formats (IL and JVM are currently supported, more or less). Oh, excellent. If you're already targeting both then it should be fairly easy to target Parrot too (still-to-be-developed-features not withstanding. This is quite interesting indeed, especially if you have a good test suite ;-) I'll try and have a look at it over the weekend. Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Dyslexics of the world, untie!
Re: C# and Parrot
Rhys Weatherley sent the following bits through the ether: DotGNU is currently reaching out to other projects in the OSS/FS world to see how we can help you and how you might be able to help us. It looks like the DotGNU weekly IRC meeting will be discussing Parrot. Could be interesting: http://www.dotgnu.org/pipermail/developers/2002-October/008345.html Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Drive A: format failure, formatting C: instead...
Perl 6 summary for week beginning 2002-10-07
name from attr to has. There was also some talk on the module versioning system, which could be done with a slice-like notation: use Acme[1.0]; # like so use Acme[ (1;17..) | (2;0..) ]; # or perhaps use Acme[1;17..] | Acme[2;0..]; # or even I'm pretty sure he was joking, but Larry considered alternatives to the ..., which issues a warning (or maybe an exception) if you try to execute it. ??? would never complain and !!! would always throw an exception. Or the other way around. Or one is fatal. Or more likely, stick with ... and make its behaviour pragmatically controllable. ... is useful for abstract method declaration. There definitely wasn't any talk about and |||. Perl6 OO Cookbook Michael Lazzaro made good on his promise last week and produced a comprehensive Perl 6 OO cookbook describing stuff that hasn't yet been designed, for a language that doesn't yet exist. It is a great piece of work and tries to examine real life Perl 6 examples. There was some discussion of the recipes and the Michael announced that he wanted to work on an online system for adding new data and many other changes. Worried about Perl 6 OO? Then check this out: http://cog.cognitivity.com/perl6/ In brief Some of the Parrot tests still don't work under Win32. Some bugs in various bits of the Parrot JITs were found, and some fixed. Dakkar found a bug in the Perl 6 compiler which basically boiled down to checking for truth instead of definedness. Hopefully Perl 6 will remove this particular problem for us ;-) We probably need more tinderboxes. Brent Dax promises to fit a pony into his next patch. Simon Glover added quite a few tests and pieces of documentation. C structs need to be padded for the more exotic architectures and compilers. There are still some DOD / GC bugs. Who's Who in Perl6 Once more we get to meet people involved in the development of Perl 6. Who are you? Jerome Quelin. What do you do for/with Perl 6? I wrote a Befunge interpreter in Parrot assembly. Now I'm waiting for Parrot to handle multiarrays and objects in order to implement the Befunge-98 specs. Where are you coming from? Some Perl Golf rumors have said that I'm an alien coming from Mars. When do you think Perl 6 will be released? Some day. Why are you doing this? In order to have a chance to understand Perl 6 sources. And because Befunge is a fun language, that deserves to be supported by Parrot. You have 5 words. Describe yourself. Perl Golf and Befunge addicted. Do you have anything to declare? Befunge rocks. Acknowledgements This summary was brought to you with slightly less distraction from Super Mario Sunshine and more recognition of the sterling work that Piers does every week. As Piers says: One more, if you think this summary has value send money to the Perl Foundation http://donate.perl-foundation.org and feed back and/or T?iBooks to me, mailto:[EMAIL PROTECTED]. As usual, the fee paid for publication of this summary on perl.com has been donated directly to the Perl Foundation. Enjoy, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng
Re: Hi - Regarding JVM - parrot compatibility
Karthik Kumar sent the following bits through the ether: Can you please let me know if any work going on relative to this or any src code tree that you would me to look into. Hiya. I've have worked on the past on trying to get JVM bytecodes working inside Parrot, but mostly that hasn't got very far due to lack of free time or motivation. It's very easy to get simple stuff working due to the low number of JVM bytecodes. You can emulate iinc quite easily ;-) However, it's getting the classes and object system to work which is a little harder. This may help: http://search.cpan.org/dist/Java-JVM-Classfile/ In the past couple of weeks I've been wondering whether a hybrid scheme a la Inline::Java where we dispatch stuff to a real JVM may be a faster approach to get running. Why, what exactly did you have in mind? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Holy Smoke Batman, it's the Joker!
Re: [perl #17811] [PATCH] create pmcs with pmc initializer
Jonathan Sillito sent the following bits through the ether: I have been playing with classes and instances for parrot. In the process I found I needed a way to pass more information when creating new pmcs. So the attached patch adds the op: new (out PMC, in INT, in PMC) Oh, I see nobody has replied to this yet. Well, in the past this feature existed in Parrot, but then was taken out again, presumably because there was a better way to do it. However, I'm not sure what that way may be. Can anyone shed some light upon this? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ The weirdest thing just happened to me
Re: [perl #17159] imcc / Mac OS X problem
Leopold Toetsch sent the following bits through the ether: Could you try my second proposal? Sure. The patch I tried is attached, which fixes up a lot of the warnings. However, I now get: cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imcparser.o -c imcparser.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imclexer.o -c imclexer.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imc.o -c imc.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o stacks.o -c stacks.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o symreg.o -c symreg.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o instructions.o -c instructions.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o cfg.o -c cfg.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o sets.o -c sets.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o debug.o -c debug.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o anyop.o -c anyop.c cc -o imcc imcparser.o imclexer.o imc.o stacks.o symreg.o instructions.o cfg.osets.o debug.o anyop.o ../../platform.o -lm ld: multiple definitions of symbol _n_spilled imcparser.o definition of _n_spilled in section (__DATA,__common) imc.o definition of _n_spilled in section (__DATA,__common) make: *** [imcc] Error 1 If only I knew more C / linker foo... Cheers, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ According to my calculations the problem doesn't exist Index: cfg.h === RCS file: /cvs/public/parrot/languages/imcc/cfg.h,v retrieving revision 1.4 diff -u -r1.4 cfg.h --- cfg.h 27 Aug 2002 06:48:44 - 1.4 +++ cfg.h 12 Sep 2002 08:53:47 - -1,6 +1,12 /* Data structures: */ +#ifdef MAIN +#define EXTERN +#else +#define EXTERN extern +#endif + /* Two-way linked list of predecessors and successors */ typedef struct _edge { struct _basic_block *from; -22,9 +28,9 } Basic_block; /* Globals: */ -Basic_block **bb_list; -int n_basic_blocks; -Set** dominators; +EXTERN Basic_block **bb_list; +EXTERN int n_basic_blocks; +EXTERN Set** dominators; /* Functions: */ Index: imc.h === RCS file: /cvs/public/parrot/languages/imcc/imc.h,v retrieving revision 1.12 diff -u -r1.12 imc.h --- imc.h 27 Aug 2002 06:48:44 - 1.12 +++ imc.h 12 Sep 2002 08:53:47 - -13,6 +13,12 # define EX_UNAVAILABLE 1 #endif +#ifdef MAIN +#define EXTERN +#else +#define EXTERN extern +#endif + #include symreg.h #include instructions.h #include sets.h -47,11 +53,11 char *str_dup(const char *); char *str_cat(const char *, const char *); -int IMCC_DEBUG; -int IMCC_LIFE_INFO; -int IMCC_VERBOSE; -int n_spilled; -SymReg** interference_graph; +EXTERN int IMCC_DEBUG; +EXTERN int IMCC_LIFE_INFO; +EXTERN int IMCC_VERBOSE; +EXTERN int n_spilled; +EXTERN SymReg** interference_graph; Index: imcc.y === RCS file: /cvs/public/parrot/languages/imcc/imcc.y,v retrieving revision 1.21 diff -u -r1.21 imcc.y --- imcc.y 6 Sep 2002 07:13:52 - 1.21 +++ imcc.y 12 Sep 2002 08:53:47 - -13,8 +13,10 #include stdio.h #include stdlib.h #include assert.h -#include imc.h #include anyop.h + +#define MAIN +#include imc.h #define YYDEBUG 1 Index: instructions.h === RCS file: /cvs/public/parrot/languages/imcc/instructions.h,v retrieving revision 1.6 diff -u -r1.6 instructions.h --- instructions.h 27 Aug 2002 06:48:44 - 1.6 +++ instructions.h 12 Sep 2002 08:53:47 - -1,3 +1,8 +#ifdef MAIN +#define EXTERN +#else +#define EXTERN extern +#endif /* Types */ -58,5 +63,5 /* Globals */ -Instruction* instructions; +EXTERN Instruction* instructions; Index: symreg.h === RCS file: /cvs/public/parrot/languages/imcc/symreg.h,v retrieving revision 1.4 diff -u -r1.4 symreg.h --- symreg.h27 Aug 2002 06:48:44 - 1.4 +++ symreg.h12 Sep 2002 08:53:47 - -1,3 +1,8 +#ifdef MAIN +#define EXTERN +#else +#define EXTERN extern +#endif /* constants */ -61,5 +66,5 /* globals */ -SymReg * hash[HASH_SIZE]; -int n_symbols; +EXTERN SymReg * hash[HASH_SIZE]; +EXTERN int n_symbols;
Re: [perl #17159] imcc / Mac OS X problem
Leopold Toetsch sent the following bits through the ether: And finally, in imc.c there is another »int n_spilled;«, please delete this line. Cool, I've done the past two patches and it compiles but then fails to compile parrot shared: cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imcparser.o -c imcparser.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imclexer.o -c imclexer.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o imc.o -c imc.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o stacks.o -c stacks.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o symreg.o -c symreg.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o instructions.o -c instructions.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o cfg.o -c cfg.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o sets.o -c sets.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o debug.o -c debug.c cc -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing -pipe -fno-common -g-I../../include -o anyop.o -c anyop.c cc -o imcc imcparser.o imclexer.o imc.o stacks.o symreg.o instructions.o cfg.osets.o debug.o anyop.o ../../platform.o -lm cd ../.. make shared rm -f parrot make cd classes make cd .. make[2]: Nothing to be done for `all'. cc -shared -L/usr/local/lib -flat_namespace -o blib/lib/libparrot.so exceptions.o global_setup.o interpreter.o parrot.o register.o core_ops.o core_ops_prederef.o memory.o packfile.o stacks.o string.o sub.o encoding.o chartype.o runops_cores.o trace.o pmc.o key.o hash.o core_pmcs.o platform.o jit.o jit_cpu.o resources.o rx.o rxstacks.o intlist.o embed.o warnings.o misc.o core_ops_cg.o packout.obyteorder.o debug.o smallobject.o headers.o dod.o method_util.o io/io.o io/io_buf.o io/io_unix.o io/io_win32.o io/io_stdio.o classes/array.o classes/boolean.o classes/continuation.o classes/coroutine.o classes/csub.o classes/default.o classes/intlist.o classes/intqueue.o classes/key.o classes/multiarray.o classes/perlarray.o classes/perlhash.o classes/perlint.o classes/perlnum.o classes/perlstring.o classes/perlundef.o classes/pointer.o classes/sub.o encodings/singlebyte.o encodings/utf8.o encodings/utf16.o encodings/utf32.o chartypes/unicode.o chartypes/usascii.o -lm cc: unrecognized option `-shared' ld: Undefined symbols: _main make[1]: *** [blib/lib/libparrot.so] Error 1 make: *** [all] Error 2 Thanks, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Borderline psychotic with hermit-like tendencies
Re: [perl #17159] imcc / Mac OS X problem
Andy Dougherty sent the following bits through the ether: Yup, That's a long-standing bug. Here, again, is the correct fix for it. Cool, finally imcc works. Now, what's the best way to roll in all the patches? Are they the correct fixes? Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ SYSTEM ERROR: press F13 to continue...
Re: [perl #16874] [BUG] Concatenation failing
Leon Brocard sent the following bits through the ether: I have a weird bug where concatenation is sometimes failing Well, this bug is still here. I saw some patches fly by but which of them is the right patch and can it be applied please? ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ It's not in the manual!
Targeting Parrot slides
The slides for the talk I presented at the O'Reilly Open Source conference last week in Sad Diego are now available: http://www.astray.com/targeting_parrot/ Note that more Parrot talks are at http://www.parrotcode.org/talks/ FYI The conference went well and I'm sure Dan will get his slides up soon. BTW anyone want to work on getting Parrot to use less memory so it can run on palmtops? ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ Try? Try not. Do, or do not. There is no try
Re: PARROT QUESTIONS: Keyed access
Ashley Winters sent the following bits through the ether: Err, is this a bad time to ask where ParrotTuple is? :) I think ParrotTuple would make a great first project for anyone who wants to learn more about PMCs. It will also be fairly simple and small, so if lots of docs were also included it would make an ideal PMC to learn from in future. Any takers? ;-) Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ If this were an actual tagline, it would be funny
Re: RFC - Hashing PMC's albie@alfarrabio.di.uminho.pt
Alberto Manuel Brandão Simões sent the following bits through the ether: This means one more function to the vtable! FWIW every object in Java must implement a hashCode method: http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html#hashCode() Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ If I were you, who'd be me?
Re: pmc RECALL command for preprocessor
Tanton Gibbs sent the following bits through the ether: I implemented a RECALL preprocessor directive for the pmc classes. ... Thus ensuring that the correct semantics always occur. I'm afraid I don't quite understand what RECALL is supposed to do. Can you explain it in a little more detail? Cheers, Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ This sentence no verb
Re: minitutorial on submitting patches
Aldo Calpini sent the following bits through the ether: this is a little tutorial about submitting patches (should be added to a FAQ, or somewhere where it's handy for people like me that tend to forget everything :-). This is really handy. While writing up the Perl 6 summary I've noticed that there were a couple of patches which appear to have slipped though the gapes. Patch authors - if you follow the Parrot patch procedure we won't forget your patches! Leon -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ There's someone in my head, but its not me
Re: Parrot contribution - #parrot stream parser.
Jim Cromie sent the following bits through the ether: can we could invent a super-lightweight markup language that #parrot-eers would type into the stream to put meta-info into it ? OK, I'll finally join this discussion. Yes, IRC is handy for realtime questions like (just an example as it happened last night): 19:33 blogan What's the best way to debug parrot? 19:33 seano probably parrot -t 19:33 seano 'least that's what I do. launch a parrot -t foo.pbc in gdb 19:36 blogan OK, it's the -t that's the key. 19:37 acme if you want to debug parrot code, there's also the parrot debugger: do make pdb And look, once we found a problem it made it straight to the list. IRC is useful as a supplement to the list. Sometimes it's easier to hash things out in real time, but mostly people just want to check something out before either producing a patch or initiating further discussion onlist. Don't worry about IRC. If you want to help develop parrot, it's another avenue but you're not missing important things in the Parrot world if you're not on it as everything happens onlist. OK, apart for general more docs what in particular does anyone not understand about Parrot? We'll try and help and then add docs or whatever. HTH, Leon ps as it so happens, blogan's question could go into a faq... -- Leon Brocard.http://www.astray.com/ scribot.http://www.scribot.com/ I'd love to go out with you, but I'm taking punk totem pole carving
Re: [PATCH] perlarray strange behaviour
Jeff sent the following bits through the ether: It runs strange code because it depends upon partially-deprecated code. Try 'set P0[2], 1' and 'set I0,P0[-2]'... OK, when will we get set P0[2], P2? Is it because the semantics aren't defined yet? Do we copy or leave references? I really need proper nested datastructures... ;-) Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ I have seen the evidence. I want DIFFERENT evidence!
parrotcode.org examples updated
It was long overdue but I've finally updated the examples page on parrotcode.org: http://www.parrotcode.org/examples/ Main changes: The calling conventions have been completely changed from callee-save to caller-save. The examples have been updated and are now much more comprehensive. Updated the examples to work with the new assembler. The new, calling-convention-following examples do look a little unwieldy, but hopefully they show how the real thing is going to work. I may have got things wrong - can you check I understand it correctly? [Of course, within a library/subroutine that are never called externally you're welcome to optimise away and ignore the calling conventions] Next update will be PMC examples... Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ Abandon all hope ye who have entered cyberspace
BF interpreter
Hello. I've been looking at languages to run under Parrot, and I choose a certain language which is turing complete in eight instructions. Start with the small ones eh? Unfortunately its name is not family friendly. An interpreter is attached, although you'll need to add the chr() operator (see the patch). A BF compiler would be neat too, of course. Any chance of this going in the languages directory if I provide more docs and examples? Leon ps yes, interpreters for real languages on the way -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ (This tagline in Stereo where available) # A Brainfuck interpreter # By Leon Brocard [EMAIL PROTECTED] # # See http://www.catseye.mb.ca/esoteric/bf/ # for more information on this silly language # Get the brainfuck source file into S0 get_keyed S0, P0, 1 if S0, SOURCE get_keyed S0, P0, 0 print usage: ./parrot print S0 print file.bf\n # Read the file into S1 SOURCE: open I0, S0 SOURCE_LOOP: readline S2, I0 concat S1, S2 if S2, SOURCE_LOOP close I0 length I30, S1 # Initialise set I0, 0 # Our PC new P0, PerlArray # Our memory set I1, 0 # Our pointer # The main interpreter loop INTERP: substr S0, S1, I0, 1 ne S0, +, NOTPLUS get_keyed I2, P0, I1 inc I2 set_keyed P0, I1, I2 goto NEXT NOTPLUS: ne S0, -, NOTMINUS get_keyed I2, P0, I1 dec I2 set_keyed P0, I1, I2 goto NEXT NOTMINUS: ne S0, , NOTGT inc I1 goto NEXT NOTGT: ne S0, , NOTLT dec I1 goto NEXT NOTLT: ne S0, [, NOTOPEN get_keyed I2, P0, I1 if I2, NEXT set I2, 0 # depth OPEN_LOOP: inc I0 substr S2, S1, I0, 1 ne S2, [, OPEN_NOTOPEN inc I2 goto OPEN_LOOP OPEN_NOTOPEN: ne S2, ], OPEN_LOOP eq I2, 0, NEXT dec I2 goto OPEN_LOOP NOTOPEN: ne S0, ], NOTCLOSE set I2, 0 # height CLOSE_LOOP: dec I0 substr S2, S1, I0, 1 ne S2, ], CLOSE_NOTCLOSE inc I2 goto CLOSE_LOOP CLOSE_NOTCLOSE: ne S2, [, CLOSE_LOOP eq I2, 0, INTERP dec I2 goto CLOSE_LOOP NOTCLOSE: ne S0, ., NOTDOT get_keyed I2, P0, I1 chr S31, I2 print S31 goto NEXT NOTDOT: ne S0, ,, NEXT readline S31, 0 ord I2, S31 set_keyed P0, I1, I2 goto NEXT NEXT: inc I0 le I0, I30, INTERP end +[-].+++[-]+.+++..+++.[-][-] .+++[+-].[+++-].+++.--..[-][ -]+.[-]++. Index: core.ops === RCS file: /cvs/public/parrot/core.ops,v retrieving revision 1.144 diff -u -r1.144 core.ops --- core.ops23 May 2002 18:36:49 - 1.144 +++ core.ops30 May 2002 10:06:15 - @@ -207,6 +207,22 @@ goto NEXT(); } +=item Bchr(out STR, in INT) + +Returns the character represented by the $2 number in the ASCII +character set. + +=cut + +inline op chr (out STR, in INT) { + STRING *s; + s = string_make(interpreter, $1, (UINTVAL)1, NULL, 0, NULL); + *(char *)s-bufstart = $2; + s-strlen = 1; + $1 = s; + goto NEXT(); +} +
Re: BF interpreter
Clinton A. Pierce sent the following bits through the ether: If you'd like a pure-PASM chr() operator, see the BASIC interpreter in expr.pasm. I essentially do (everything in BASIC is on the stack...excuse the restore and saves...): Oooh, interesting hack! Of course, the discussion that should come up that we have an ord() in Parrot but not a chr(). I realise mine is a bit of a hack, but I really don't understand the current string encoding stuff. Is it finished? Do we need lots of unicode hacking? Do we need to work on ICU-lite? Will this patch get in in the meantime? ;-) Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ He who reads many fortunes gets confused
Re: Parrot and Mono / .Net
Sebastian Bergmann sent the following bits through the ether: It'd be great if you could comment of different goals, etc. between Parrot and the .Net concept. Oh, this happens to be a FAQ. The main reason is: http://www.parrotcode.org/faq/ * Why your own virtual machine? Why not compile to JVM/.NET? Those VMs are designed for statically typed languages. That's fine, since Java, C#, and lots of other languages are statically typed. Perl isn't. For a variety of reasons, it means that perl would run more slowly there than on an interpreter geared towards dynamic languages. The main problem is that Perl is so dynamic. You can redefine almost anything in Perl at runtime. This means we need a very dynamic virtual machine behind it in order to run Perl (and possibly Ruby, Python) efficiently. Hope this helps, Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ Windows Error: 002 No error, yet
jvm.ops
Over the weekend I've been thinking about Targeting Parrot. My thoughts went something like this: Parrot is a register machine. The Java virtual machine is a stack machine. Parrot is also a stack machine. Instead of converting Java bytecode to Parrot bytecode, I can make Parrot into a JVM. And lo, so I did (for a small number of opcodes): This is Java source code: public static void spin() { int i; for(i = 0, i 12345678; i++); System.out.print(i); } which turns into the following Java bytecode: 0 iconst_0 1 istore_0 2 goto 8 5 iinc 0 1 8 iload_0 9 sipush 1000 12 if_icmplt 5 15 getstatic #3 Field java.io.PrintStream out 18 iload_0 19 invokevirtual #4 Method void print(int) 22 return On a different VM, not so far away: # This is Parrot assembler: iconst_0 istore_0 goto IN REDO: iinc 0, 1 IN: iload_0 sipush12345678 if_icmplt REDO iload_0 jvm_print end Cute, huh? Of course, Java interpreters are very optimised (and non-dynamic) and without JITs doing it in Parrot is about 6 times slower, but it's interesting nevertheless. Is this the kind of thing I should be doing? I've attached a fledgling jvm.ops. Does my C code look ok? Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ (c) The Intergalactic Thought Association /* ** jvm.ops */ VERSION = PARROT_VERSION; =head1 NAME jvm.ops =cut =head1 DESCRIPTION Library of ops for Parrot which resemble the JVM ops =cut ### =head2 Basic ops These are the fundamental operations. =over 4 =cut =item Biadd() Pop two integers off the stack, add them together and push the result on the stack. =cut op iadd() { INTVAL x, y; stack_pop(interpreter, interpreter-user_stack, y, STACK_ENTRY_INT); stack_pop(interpreter, interpreter-user_stack, x, STACK_ENTRY_INT); x = x + y; stack_push(interpreter, interpreter-user_stack, x, STACK_ENTRY_INT, STACK_CLEANUP_NULL); goto NEXT(); } op iconst_0() { INTVAL x = 0; stack_push(interpreter, interpreter-user_stack, x, STACK_ENTRY_INT, STACK_CLEANUP_NULL); goto NEXT(); } op iconst_1() { INTVAL x = 1; stack_push(interpreter, interpreter-user_stack, x, STACK_ENTRY_INT, STACK_CLEANUP_NULL); goto NEXT(); } op sipush(in INT) { INTVAL i = $1; stack_push(interpreter, interpreter-user_stack, i, STACK_ENTRY_INT, STACK_CLEANUP_NULL); goto NEXT(); } op iload_0() { INTVAL i = interpreter-int_reg.registers[0]; stack_push(interpreter, interpreter-user_stack, i, STACK_ENTRY_INT, STACK_CLEANUP_NULL); goto NEXT(); } op istore_0() { INTVAL i; stack_pop(interpreter, interpreter-user_stack, i, STACK_ENTRY_INT); interpreter-int_reg.registers[0] = i; goto NEXT(); } op jvm_print() { INTVAL i; stack_pop(interpreter, interpreter-user_stack, i, STACK_ENTRY_INT); printf(INTVAL_FMT, (INTVAL)i); goto NEXT(); } op iinc(in INT, in INT) { interpreter-int_reg.registers[$1] += $2; goto NEXT(); } op if_icmplt(inconst INT) { INTVAL x, y; stack_pop(interpreter, interpreter-user_stack, y, STACK_ENTRY_INT); stack_pop(interpreter, interpreter-user_stack, x, STACK_ENTRY_INT); if (x y) { goto OFFSET($1); } goto NEXT(); } op goto (in INT) { goto OFFSET($1); }
Re: [OT] Parrot Logo
Andy Wardley sent the following bits through the ether: http://andywardley.com/parrot/ That's a wonderful colour! ;-) Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ High message: 9434567. Message last read: 9
Re: Various PASM routines
Clinton A. Pierce sent the following bits through the ether: Actually, if I knew where to look I'd update them myself. :) http://parrotcode.org/examples/ mentions them but I guess we should roll the ideas behind: http:[EMAIL PROTECTED]/msg06001.html into one of the files in docs/... Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ It is now pitch dark. If you proceed, you will likely fall into a pit
Re: Java to Parrot
Melvin Smith sent the following bits through the ether: Anyone doing any work with Java bytecode to Parrot? I've got a java class disassembler 90% working if anyone is interested in helping, I'm not sure if this would belong in the Parrot tree or not. Yes, actually. I've done some initial work but have completely redone it recently. I gave a talk early on: http://www.astray.com/java/ I've even got a module on CPAN which does Java bytecode to Perl (for simple stuff currently): http://search.cpan.org/search?dist=Java-JVM-Classfile To be honest, I've been waiting until Parrot can do objects and classes. Converting the bytecode isn't the problem, it's converting the Java APIs that is... HTH, Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ #include witty.f
Re: Parrot FAQ
Dan Sugalski sent the following bits through the ether: The Zork interpreter might be stack based, thinking about it, but it was hardly geared for speed, so I don't know that it'd count if it was. For what it is worth, in my quest for learning more about VMs I've taken a detailed look at the Z-machine with an eye to converting between Z-code and Parrot. I gave up 'cos it really wasn't designed for simplicity. It's all horrid and like a real-life machine, with lots of exceptions and lots of new ops in the later versions. I was looking for a quick hack, and that wasn't it ;-) Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ Do not clone your neighbors in their sleep
Re: Parrot vs JVM
Alberto Manuel Brandao Simoes sent the following bits through the ether: I'm on the work of writting something about virtual machines and I would like to know if there is any report on differences between JVM and parrot... and if there is any web document about perl5 VM. Righto, I've been looking at the differences between the two and they're different. Of course, you have to remember that Parrot is a long way from being finished, but already it compares quite well. Here's a few facts: o JVM is stack-based, Parrot is register-based (major difference!) (although Parrot also has a general stack) This change is major. Almost all other virtual machines are stack- based. Using registers enables us to use all the material on optimising stack machines o JVM has 255 opcodes, Parrot will have many more o JVM is lower level, Parrot aims to be very high level (only just getting there as PMC's aren't quite ready yet) Gosh, it strikes me that there's a good talk in this material (and lo and behold, I've already given one at a London.pm technical meeting! ;-) and there is far too much to talk about. Alberto, you'll want to check out the following details too: http://cvs.perl.org/cvsweb/parrot/docs/overview.pod?rev=1.2content-type=text/x-cvsweb-markup http://www.parrotcode.org/examples/ http://www.astray.com/java/ Hope this helps, Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ From my brain, an organ with a mind of it's own
Re: Parrot vs JVM
Leon Brocard sent the following bits through the ether: o JVM is stack-based, Parrot is register-based (major difference!) I forgot to point out that details of the JVM are available at: http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ DOWN WITH EXCLAMATION POINTS
Re: Rounding?
Zach Lipton sent the following bits through the ether: Is there any way to round this, or at least chop the 0's off the end? Right. I'd just like to clear this up completely. The N registers are for numerics (well, ok, floating point) and the I registers are for integers. Currently, quite a bit of precision is used when printing the N registers. There are two ways to get 4 out of your code: either convert the N to an I or work with Is: set N0,2 set N1,2 add N3, N0, N1 print N3 # prints 4.0 print \n ntoi I0, N3 print I0 # prints 4 print \n set I0, 2 set I1, 2 add I2, I0, I1 print I2 # prints 4 print \n end Hope this helps, Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ Tonight's the night: Sleep in a eucalyptus tree
Re: java vs. parrot mops
Dan Sugalski sent the following bits through the ether: For the Java-impaired (i.e. me :) what's the -Xint option do? It turns off the JIT (which is enabled by default). Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ DATA - Dedicated Absorbing Technical Absurdities (?)
Re: java vs. parrot mops
Kevin Huber sent the following bits through the ether: Parrot2Java which I will make available once I fix a few more bugs :-). Oh, cute! I've been frustrating myself by trying to do it the other way around (it'll happen eventually...). Optimising the stack loads/saves will be the fun part for you I imagine ;-) Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ Okay - right after this one we're BACK to the TOPIC
Re: AOP
Aaron Sherman sent the following bits through the ether: It is not. That's exactly the point to AOP, to bring the two May I suggest that all discussion move to the perl-aspects list and that everyone take a look at the Aspect module on CPAN. The language does not need to be changed to enable AOP: http://search.cpan.org/search?dist=Aspect http://lists.perl.org/showlist.cgi?name=perl-aspects Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ ... There's someone in my head, but its not me
Re: [PATCH] Fixes logical ops in Parrot Scheme compiler
Gregor N. Purdy sent the following bits through the ether: I'd like to see the folks with other language implementations speak up again about their current status and desires to have their stuff in CVS My JVM - Parrot stuff is going slowly, but parts of a Better Solution are going up on CPAN. My previous attempts needed java to be installed locally, but I'm now implementing a Perl Java Classfile parser: http://search.cpan.org/search?dist=Java-JVM-Classfile It's only basic and development will be pretty slow but I think I'll be targetting Perl first so I can play with translation ideas and not have to worry about static type inference... Errr, so not yet. But I'll be updating the parrotcode.org examples rsn, honest... Leon -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ ... Gravity is a myth - the earth sucks
Example assembler code (primes.pasm)
Attached is a cute prime number printer. It strikes me that we need a central place to put these things - it'd really help people get stuck into the lowlevel stuff. How about an examples/ directory in the CVS tree? Alternatively, I could set up a learning parrot assembler website of some sort, although Simon's recent article on perl.com was damn good. Leon ps the assembler doesn't grok if I5, NEXT4, NEXT3 or comments on lines which just have labels -- Leon Brocard.http://www.astray.com/ Nanoware...http://www.nanoware.org/ ... My name is Inigo Montoya. You killed my father. Prepare to die # Some simple code to print out the primes up to 100 # Leon Brocard [EMAIL PROTECTED] # I1 holds the number we're currently checking for primality set I1, 1 # I2 holds the highest number we want to check for primality set I2, 100 print The primes up to print I2 printare:\n # I1 counts up to I2 REDO: gt I1, I2, OVER, NEXT1 NEXT1: # I3 counts from 2 up to I4 (I1/2) set I3, 2 set I4, 2 div I4, I1, I4 LOOP: gt I3, I4, PRIME, NEXT2 NEXT2: # Check if I3 is a factor of I1 mod I5, I1, I3 if_i_ic I5, NEXT4, NEXT3 NEXT3: # We've found a factor, so it can't be a prime and # we can skip right out of this loop and to the next # number branch NEXT NEXT4: inc I3 branch LOOP PRIME: # We haven't found a factor so it must be a prime print I1 print \n NEXT: # Move on to the next number inc I1 branch REDO OVER: end
Re: RFC: Bytecode file format
Simon Cozens sent the following bits through the ether: If you don't know what Python's CodeObjects look like, I suggest you go see it now. I've been spendind a lot of time recently looking at the Java classfile specification. Yes, they were trying to optimise for space, but there are some interesting pieces. For example, the actual bytecode for a method is a Code attribute[1] attached to the method (other attributes such as line number information etc. can also be part of it). The constant pool is the scary part, but interesting. Why not have a look, although we may want to generalise a bit more: http://java.sun.com/docs/books/vmspec/html/ClassFile.doc.html Leon [1] No, attributes aren't limited to four characters. Let's be modern about this... -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... Error 15 - Unable to exit Windows. Try the door
Microbenchmark JVM-PVM
Sky asked me if anyone had done any simple benchmarks comparing JVM and PVM at this point. Now, I know we're still at an early stage and haven't really looked at speed, but a trivial counting and simple arithmetic benchmark: piglet$ time java Bench 1.470u 0.080s 0:01.59 97.4% 0+0k 0+0io 5784pf+0w piglet$ time ./test_prog run.pbc 40.080u 0.030s 0:42.07 95.3%0+0k 0+0io 137pf+0w Source files attached so I can humiliate myself in public at a later stage when someone points out I've done something stupid Leon ps my jvm is j2sdk-1.3.1-FCS from blackdown on linux ps2 oh, and are we calling it pvm? parrotvm? -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... I am serious. And don't call me Shirley class Bench { public static void main (String args[]) { int q = 1; int w = 1; int i = 1; int j = 1; while(q 1) { w = 1; while(w 1) { i++; j += i; w++; // System.out.print(q + , + w + \n); } q++; } } } set_i_ic I1, 1 set_i I63, I1 set_i_ic I1, 1 set_i I62, I1 set_i_ic I1, 1 set_i I61, I1 set_i_ic I1, 1 set_i I60, I1 set I4, 1 set I7, 1 branch_ic LAAA LAAE: set_i I62, 1 branch_ic LAAB LAAC: inc_i I61 add_i I60, I60, I61 inc_i I62 LAAB: lt_i_ic I62, I4, LAAC, LAAD LAAD: inc_i I63 LAAA: lt_i_ic I63, I7, LAAE, LAAF LAAF: end
Re: [patch] First cut at TODO allow add I4, I4, 3 instead of add_i_ic ...
Dan Sugalski sent the following bits through the ether: Actually, I'm expecting almost nothing to be written in pasm after we get a working parser and compiler I am, as you may have noticed already, clearly a frustrated assembler programmer who's had to code high-level stuff for far too long. I'm interested in converting between languages. At the moment I expect to do that using pasm, but the second we have a bytecode-writing module... Look at all these programming languages for the JVM. s/JVM/ParrotVM/ perhaps? http://grunge.cs.tu-berlin.de/~tolk/vmlanguages.html Leon -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... You are in a twisty little maze of Unix versions, all different
Re: Fibonaci
[EMAIL PROTECTED] sent the following bits through the ether: Here is the fibonaci function Here are slightly cleaner (could even be used for testing purposes) fibonacci and factorial example files. I'd say bundle them in as examples and prod me until I do the test suite Leon -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... # Some simple code to print some Fibonacci numbers # Leon Brocard [EMAIL PROTECTED] print The first 20 fibonacci numbers are:\n set I1, 0 set I2, 20 set I3, 0 set I4, 1 REDO: eq I1, I2, DONE, NEXT NEXT: set I5, I4 add I4, I3, I4 set I3, I5 print I3 print \n inc I1 branch REDO DONE: end # Some simple code to print some factorials # Leon Brocard [EMAIL PROTECTED] print The first 15 factorials are:\n set I1, 0 set I2, 15 set I3, 1 REDO: eq I1, I2, DONE, NEXT NEXT: inc I1 mul I3, I3, I1 print I3 print \n branch REDO DONE: end
JavaVM - ParrotVM
Seeing as Simon's gone to all the trouble of releasing the source to Parrot now, I wondered what I could have a play with. I've did simple Parrot assembler and thought about different types of bytecode. Like bytecode for the Java virtual machine, which it turns out is stack based. Could I convert JVM-PVM? I think so ;-) [Yes, this is a proof of concept, and the parrot assembler will change in many ways rsn, so this is just a head up to show it's possible] Given the following Java code: class HelloWorld { public static void main (String args[]) { int i = 1; int j = 1; while(i 10) { System.out.print(i); System.out.print(j); i++; j += i; } } } (which prints out: 112336410515621728836945) That actually gets translated into the the following JVM bytecode: 0 iconst_1 1 istore_1 2 iconst_1 3 istore_2 4 goto 28 7 getstatic #2 Field java.io.PrintStream out 10 iload_1 11 invokevirtual #3 Method void print(int) 14 getstatic #2 Field java.io.PrintStream out 17 iload_2 18 invokevirtual #3 Method void print(int) 21 iinc 1 1 24 iload_2 25 iload_1 26 iadd 27 istore_2 28 iload_1 29 bipush 10 31 if_icmplt 7 34 return And my magic script (http://astray.com/java2parrot.pl.txt) converts it to the following Parrot assembler code: set_i_ic I1, 1 set_i I63, I1 set_i_ic I1, 1 set_i I62, I1 branch_ic LAAA LAAB: set_i I1, I63 print_i I1 set_i I1, I62 print_i I1 inc_i I63 set_i I1, I62 set_i I2, I63 add_i I1, I1, I2 set_i I62, I1 LAAA: set_i I3, I63 set_i_ic I4, 10 lt_i_ic I3, I4, LAAB, LAAC LAAC: end which outputs: I reg 1 is 1 I reg 1 is 1 I reg 1 is 2 I reg 1 is 3 I reg 1 is 3 I reg 1 is 6 I reg 1 is 4 I reg 1 is 10 I reg 1 is 5 I reg 1 is 15 I reg 1 is 6 I reg 1 is 21 I reg 1 is 7 I reg 1 is 28 I reg 1 is 8 I reg 1 is 36 I reg 1 is 9 I reg 1 is 45 Cool, huh. Much more on this soon! Leon -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... If you eat yogurt you'll have lots of culture
Re: Something to hash out
Dan Sugalski sent the following bits through the ether: I like it The following amusing entries were posted on london.pm-list but I haven't seen them here, so without further ado: Greg McCarroll: pbc could be shortened to pb, which has two meanings precompiled byte code and pretty boy, as in who is a pretty boy, *squawk* I'm guessing that the assembler code is not 8-bit, so we cannot make a .po8 as in pieces of 8, aka parrot opcodes 8-bit, or some such tomfoolery .seed is always good as something that parrot can swallow up nicely precompiled code could have the extension .dead as in the parrot code is dead, it is dead parrot code, it is not running if we ever have safe and unsafe code where we check parity, we could have .pcc , parrot-y checked code (ok that was really bad) if ingy ever does anything like Inline for parrot, it could be called parott-ing (i better stop soon) .parrots is quite lame, but could be parrot source .feather could represent light to run code, as in precompiled bytecode ok, thats bad enough Patrick Carmichael: Parrot stuffit files for Macs would be .psit My daughter suggests .pex files - for executables, perhaps? Lucy McWilliam: .rip? HTH, Leon -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... Fascinating, Captain
Re: Perl, the new generation
Nathan Torkington sent the following bits through the ether: Hmm, it'd be interesting to see a Map of Perl. Would a graph be good enough? I'll see what I can do ;-) Leon -- Leon Brocard.http://www.astray.com/ Iterative Software...http://www.iterative-software.com/ ... Money is the root of all wealth
Re: RFC 228 (v1) Add memoize into the standard library
Dave Storrs sent the following bits through the ether: Personally, I like the way it works at the moment; all the subs that you want to memoize are up at the top, where they are easy to see. You can add, subtract, and change the list in a few seconds, without having to hunt through your file for the actual function definition. OTOH, this seems like action at a distance to me and the most logical place would be to have it next to the memoized sub... Leon -- Leon Brocard.http://www.astray.com/ yapc::Europe - September 22-24 London - http://yapc.org/Europe/ ... Error 404: .signature generator ran out of tuits
Re: RFC 210 (v1) Data/Binary Dumping and Freezing
Perl6 RFC Librarian sent the following bits through the ether: Allow Perl to create serialize both data and code from the core. Hmmm, would it be enough to emit and take in bytecode? Might there be versions of Perl 6 which omit this functionality? As well as binary code, a human-readable version might also be interesting: or do we expect bytecode - source translators to do that for us? I'd strongly suggest that we drop local encodings and go for network encodings at all times, but this point may be mute. HTH, Leon -- Leon Brocard.http://www.astray.com/ yapc::Europe - September 22-24 London - http://yapc.org/Europe/ ... Error 404: ETOOMANYQUESTIONS
Re: RFC 190 (v1) Objects : NEXT pseudoclass for method redispatch
Perl6 RFC Librarian sent the following bits through the ether: Objects : NEXT pseudoclass for method redispatch I really like this idea: it's quite simple and gets the job done. I'll throw some AUTOLOAD ideas at London.pm and see what we come up with... ;-) Leon -- Leon Brocard.http://www.astray.com/ yapc::Europe - September 22-24 London - http://yapc.org/Europe/ ... Error 404: Too many cigars