Re: rakudo-current loop 2-3 orders of magnitude slower than perl 5? (Benchmarking Tool?)
On Wed, Jun 3, 2009 at 9:01 PM, Daniel Carrera daniel.carr...@theingots.org wrote: Hi Chris, In addition to Patrick's excellent reply, I'd like to mention that one way to help the project is to just write code in Perl 6. This is a good way to find bugs, including performance bugs. I have just sent off an email to Patrick along this same lines - here are some links you may be interested in: http://perlmonks.org/?node_id=458728# Perl6 Contest: Test your Skills http://perlmonks.org/?node_id=462987# Perl6 Contest #2: P6 That Doesn't Look Like P5 http://perlmonks.org/?node_id=458728# Perl6 Contest: Test your Skills http://svn.pugscode.org/pugs/examples/ # Examples of perl 6 when Pugs was under heavy development My offer is to port a lot of my old perl 5 code to perl 6 One little project I'm doing is I'm porting the benchmarks from the Debian language shootout to Perl 6. I figure this is a good place to start because each benchmark is designed to test one specific aspect of the language. I've only done a couple of benchmarks. If you are interested, why don't you help me? Porting benchmarks is a good way to learn Perl 6. I know these benchmarks have their value, but I am more interested in real practical code that I have previously written to solve a problem. I know that the Rakudo code will be slower than the perl 5. In fact, I would expect it to be slower by a consistent factor unless there is some aspect of that program with a major optimization flaw. I am interested in a tool that can benchmark both perl 5 and perl 6 natively. I am obviously aware of Benchmark.pm for perl 5 and of http://svn.pugscode.org/pugs/ext/Benchmark/lib/Benchmark.pm for perl 6 (not sure when it was last updated) I really don't want to have to set up two benchmarks for each program and then capture the output and then merge the results. I know I could write some code to do that but if someone already has such a tool I would just as soon use that. Cheers, Daniel. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: rakudo-current loop 2-3 orders of magnitude slower than perl 5? (Benchmarking Tool?)
On Thu, Jun 4, 2009 at 11:16 AM, Daniel Carrera daniel.carr...@theingots.org wrote: The point of the benchmark is not oh look, it's slower than Perl 5. The benchmarks are good for testing a specific aspect of the language, so it is easier to isolate *where* the problem is. This is harder on a real application. I think you are confusing profiling with benchmarking. Profiling helps you identify where a problem is. Benchmarking helps you compare two different versions of the same routine. I intend to do use said benchmark as a basic profiling tool as well. If this program performs far outside the expected norm then somewhere inside this program is something that needs to be optimized. Of course, doing that requires additional work by people far smarter than myself but at least I will be able to point them to something to look at. Benchmarks help you see where the biggest gains are to be found. No, that is still profiling. Additionally, they help measure improvement. When Patrick fixed the bug with Measuring (improvement or otherwise) is their primary function. And your expectation would be wrong. In the real world some things are faster than others. Remember the 80/20 rule. Benchmarks help you locate the 20% of the code that needs the most attention. No, that's still profiling. On average the benchmark should even out because we are not looking for bottlenecks but the overall performance of the program. If it doesn't perform on average then there is a problem. Only true profiling will find it but if I can show 30 programs where Rakudo consistently performs 3 to 5 times slower than perl 5 and one program that is 30 times slower - which one do you think @Patrick will be interested in? As of this moment I have four benchmarks written, and each benchmark gives wildly different factors. These are very specialized benchmarks designed to highlight specific language features. The approach I am looking at looks at a wider cross section of the language where you would expect things to even out. If you write such a tool, I'd like to try it. Perhaps. Time and ambition will tell. Daniel. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
[perl #52150] Parrot fails to build on Cygwin (r26569) due to linking missing -lcrypto
# New Ticket Created by Joshua Gatcomb # Please include the string: [perl #52150] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=52150 After learning that some folks were having troubles building parrot on Cygwin, I decided to dust off my local copy and give it a go step 1: PATH=/usr/bin:home/Gat/parrot/blib/lib step 2: make realclean; svn up; perl Configure.PL; make failure: gcc -o digest_group.dll lib-digest_group.o md2.o md4.o md5.o ripemd160.o sha.o sha1.o -s -L/usr/local/lib -shared -L/home /Gat/parrot/blib/lib -lparrot md2.o: In function `Parrot_MD2_nci_MD2_Init': /home/Gat/parrot/src/dynpmc/./md2.pmc:101: undefined reference to `_MD2_Init' md2.o: In function `Parrot_MD2_nci_MD2_Update': /home/Gat/parrot/src/dynpmc/./md2.pmc:115: undefined reference to `_MD2_Update bunch of lines removed in #parrot chromatic suggested attempting to link by hand with the following working: Step 3: cd src/dynpmc Step 4: gcc -o digest_group.dll lib-digest_group.o md2.o md4.o md5.o ripemd160.o sha.o sha1.o -lcrypto -s -L/usr/local/lib -shared -L/home/Gat/parrot/blib/lib -lparrot note: the addition of -lcrypto Step 5: cd ../.. Step 6: make which finishes as expected Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fundraising and related topics.
On Wed, Feb 20, 2008 at 11:55 PM, Conrad Schneiker [EMAIL PROTECTED] wrote: I've repeatedly encountered remarks about how much Perl 6 development is constrained by the fairly severe time and energy constraints of its overwhelmingly volunteer development team. Here is something to consider. Unless we can afford to fund an individual full time with enough money for them to pay for their own health coverage and other benefits, the amount of time they are volunteering is already as much as they can afford. In other words, they still have to work a regular job and make time for their family (or whatever substitutes for the real world) and giving them money isn't going to equate to them being able to devote to more time. That isn't to say that these volunteers don't deserve to get compensated but it is unrealistic to expect that money will equate to more time in many of the cases. The statement above does not apply to everyone and those who do freelance and consulting work could likely devote a great deal more time if they would be compensated in some way for their time. I myself, with a few others, made a failed attempt at funding Audrey to work on Pugs full time and her rate was ridiculously low - $100 USD/day. So over the next few months, I'm planning to learn about fundraising, and see what I can accomplish on behalf of Perl 6 development. To that end, I'm soliciting: (1) your suggestions for preparation, (2) your ideas for proposals, and (3) your reasons why the Perl 6 ecosystem (including Parrot and CPAN6) is one of the world's greatest and and most extremely leveraged causes (technically, economically, and socially). I am mostly ignoring the rest of what others have said in this thread because I think it is detracting from your intention of getting money to people to work more. Here is one thing that has frustrated me about TPF. They are a non-profit organization. Yeah, kind of suprising that would be the frustrating thing. The issue is that they can't take money from Bob to give to Sue to work on Bob's widget. This is an extreme oversimplification but in general, they have to abide by the rules that allow them to keep their non-profit status. Where am I going with this? Regardless if we use TPF or not, I think what will get more people to contribute is having some say as to where there money goes. To that end, I suggest having a list of projects currently being funded. A donator can choose which fund their money goes to or can choose a general fund if they don't care. I don't suggest these projects be generic and nebulous either (though they could be for the same reason a general fund is). In other words, there might be a Rakudo fund - generic. There might also be a fund to fix RT # 31415 which is a Rakudo bug. I am not suggesting this is the solution to all the problems. It likely will create more. What I can tell you is the number one thing that has prevented me from donating a lot more money is having little to no control over where it went. Actually, it has been years since I have contributed to TPF. Now, I just write a check to the individual(s) I want to help. I don't get the tax write off but I know where my money is going. In closing, what we don't need is something to fight over. Hopefully you will find the sweet spot - I sure hope you do. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fundraising and related topics.
On Thu, Feb 21, 2008 at 4:23 PM, chromatic [EMAIL PROTECTED] wrote: On Thursday 21 February 2008 06:25:42 Joshua Gatcomb wrote: I could take a month's sabbatical from my day job for $5000 without losing insurance coverage or other benefits. That's slightly more than Audrey's $100/day, I know, but it's substantially less than my consulting rate and somewhat less than my salary too. I could probably make 100 - 150 high-quality commits to Parrot in that 30 day period. Perhaps more. I'm probably not the only Parrot/Perl 6 hacker in this situation. I was beginning to wonder if my post to the thread had gotten eaten. Thanks for replying. I probably didn't do a good job of tying the two portions of my reply together, but if I were to go to the donation page and I saw Project: Allow chromatic for 1 month to work exclusively on parrot Deliverables (if applicable): 100 - 150 high quality commits Required: $5000 Current: $0 I would be very inclined to make a donation. In fact, if you can find 9 other people willing to do so - I will cut a check for $500 any time you are ready. That's besides the point. I don't believe just getting more money is the solution. I think we need to do a number of things: 1. Identify people, like you, who are in a position to trade time for money and the projects they will work on 2. Allow people to choose where their money will go (if that's what they want to do) 3. Do it in a way that causes the least amount of fighting -- c Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fundraising and related topics.
On Thu, Feb 21, 2008 at 8:19 PM, Geoffrey Broadwell [EMAIL PROTECTED] wrote: Someone earlier in this thread mentioned that this can't be done directly because of rules surrounding TPF's non-profit status. That someone was me and that's not what I said. I said it isn't as simple as Bob saying I want to pay Sue to work on this widget and having TPF broker the deal. I won't pretend to understand all the intricacies. I said it is frustrating, as someone willing to donate money, that I can't just say give it to Sue please. case). But if that is really the way of things, can TPF go the Mozilla route to break the logjam? Tax incentives are great, but having piles of money sitting around not getting to hackers is clearly not working for us. There are grants that are being awarded. Those grants are getting things done (thanks for the progress on the PDDs Al). I am in no way suggesting that people not donate to TPF. I have in the past and I might in the future. I also help them out in other ways, by writing code for small projects that they need done. I am only suggesting that, for the specific purposes of this thread, going the TPF route may not be the most efficient way to accomplish that goal. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: NEWS and PLATFORMS Updates Requested
On Nov 18, 2007 12:25 PM, chromatic [EMAIL PROTECTED] wrote: The next release will be on Tuesday evening. Committers, please review your checkins and update NEWS appropriately. Everyone, please submit updates to PLATFORMS. Running make fulltest and reporting any failures would be very handy as well. Per your request, the pasted output of mingw32-make fulltest with gcc 3.4.5 on Win32 rev 22919 /usr/bin/perl.exe t/harness --gc-debug --running-make-test -b t/compilers/imcc/*/*.t t/op/*.t t/pmc/*.t t/native_pbc/*.t t/d ynpmc/*.t t/dynoplibs/*.t t/compilers/json/*.t t/compilers/pge/*.t t/compilers/pge/p5regexp/*.t t/compilers/pge/p6rules/*.t t /compilers/tge/*.t t/library/*.t t/examples/*.t t/compilers/imcc/imcpasm/cfg.ok t/compilers/imcc/imcpasm/opt0ok t/compilers/imcc/imcpasm/opt1ok 1/78 skipped: constant concat N/Y t/compilers/imcc/imcpasm/opt2ok 1/6 skipped: loop opt disabled for now t/compilers/imcc/imcpasm/optcok t/compilers/imcc/imcpasm/pcc.ok t/compilers/imcc/imcpasm/sub.ok t/compilers/imcc/reg/alloc...ok t/compilers/imcc/reg/spill...ok t/compilers/imcc/syn/bsr.ok t/compilers/imcc/syn/clash...ok t/compilers/imcc/syn/const...ok t/compilers/imcc/syn/errors..ok t/compilers/imcc/syn/evalok 7/7 skipped: changed eval semantics - see t/pmc/eval.t t/compilers/imcc/syn/fileok 1/13 skipped: multiple loading not speced - failing t/compilers/imcc/syn/keyed...ok 1/1 skipped: experimental t/compilers/imcc/syn/labels..ok t/compilers/imcc/syn/macro...ok t/compilers/imcc/syn/namespace...ok t/compilers/imcc/syn/objects.ok t/compilers/imcc/syn/op..ok t/compilers/imcc/syn/pasmok t/compilers/imcc/syn/pcc.ok t/compilers/imcc/syn/pod.ok 1/4 skipped: Closing out of pod from included files t/compilers/imcc/syn/scope...ok t/compilers/imcc/syn/symbols.ok t/compilers/imcc/syn/tailok t/op/00ff-dosok t/op/00ff-unix...ok t/op/01-parse_opsok 326/334 19 [main] parrot 2912 _cygtls::handle_exceptions: Error while dumping sta te (probably corrupted stack) t/op/01-parse_opsok t/op/64bit...skipped all skipped: 64bit INTVAL platforms only t/op/arithmetics.ok t/op/basic...ok t/op/bitwise.ok 1/27 skipped: no BigInt lib found t/op/calling.ok t/op/cc_params...ok t/op/cc_stateok t/op/cmp-nonbranch...ok t/op/compok t/op/debuginfo...ok t/op/exceptions..ok t/op/gc..ok t/op/globals.ok t/op/hacks...ok 2/2 skipped: no universal SIGFPE handling t/op/ifunlessok t/op/infook t/op/integer.ok t/op/interp..ok 1/8 skipped: we really shouldn't run just a label - use a sub t/op/jit.ok t/op/jitnok t/op/lexicalsok t/op/literal.ok t/op/load_bytecode...ok t/op/number..ok t/op/pushaction..ok t/op/say.ok t/op/spawnw..ok t/op/sprintf.ok 117/308 skipped: various reasons t/op/stacks..ok 3/24 skipped: no stack limit currently t/op/string..ok 7/160 skipped: various reasons t/op/string_cclass...ok 3/11 skipped: unicode support unavailable t/op/string_cs...ok 16/50 skipped: no ICU lib t/op/stringu.ok 3/25 skipped: no ICU lib t/op/timeok t/op/trans...ok 5/22 # Failed test (t/op/trans.t at line 421) t/op/trans...NOK 14# got: 'not 0.00ok 1 # ' # expected: 'ok 1 # ' t/op/trans...ok 15/22# Looks like you failed 1 test of 22. t/op/trans...dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 14 Failed 1/22 tests, 95.45% okay t/op/types...ok t/pmc/addrregistry...ok t/pmc/array..ok t/pmc/bigint.skipped all skipped: No BigInt Lib configured t/pmc/bignum.skipped all skipped: No BigNum support yet. t/pmc/booleanok
Re: NEWS and PLATFORMS Updates Requested
Per your request, the pasted output of mingw32-make fulltest with gcc 3.4.5 on Win32 rev 22919 Ok, I am a dolt - that is the output for Win32 Cygwin The output for Win32 MinGW is coming soon /usr/bin/perl.exe t/harness --gc-debug --running-make-test -b t/compilers/imcc/*/*.t t/op/*.t t/pmc/*.t t/native_pbc/*.t t/d ynpmc/*.t t/dynoplibs/*.t t/compilers/json/*.t t/compilers/pge/*.t t/compilers/pge/p5regexp/*.t t/compilers/pge/p6rules/*.t t /compilers/tge/*.t t/library/*.t t/examples/*.t t/compilers/imcc/imcpasm/cfg.ok t/compilers/imcc/imcpasm/opt0ok t/compilers/imcc/imcpasm/opt1ok 1/78 skipped: constant concat N/Y t/compilers/imcc/imcpasm/opt2ok 1/6 skipped: loop opt disabled for now t/compilers/imcc/imcpasm/optcok t/compilers/imcc/imcpasm/pcc.ok t/compilers/imcc/imcpasm/sub.ok t/compilers/imcc/reg/alloc...ok t/compilers/imcc/reg/spill...ok t/compilers/imcc/syn/bsr.ok t/compilers/imcc/syn/clash...ok t/compilers/imcc/syn/const...ok t/compilers/imcc/syn/errors..ok t/compilers/imcc/syn/evalok 7/7 skipped: changed eval semantics - see t/pmc/eval.t t/compilers/imcc/syn/fileok 1/13 skipped: multiple loading not speced - failing t/compilers/imcc/syn/keyed...ok 1/1 skipped: experimental t/compilers/imcc/syn/labels..ok t/compilers/imcc/syn/macro...ok t/compilers/imcc/syn/namespace...ok t/compilers/imcc/syn/objects.ok t/compilers/imcc/syn/op..ok t/compilers/imcc/syn/pasmok t/compilers/imcc/syn/pcc.ok t/compilers/imcc/syn/pod.ok 1/4 skipped: Closing out of pod from included files t/compilers/imcc/syn/scope...ok t/compilers/imcc/syn/symbols.ok t/compilers/imcc/syn/tailok t/op/00ff-dosok t/op/00ff-unix...ok t/op/01-parse_opsok 326/334 19 [main] parrot 2912 _cygtls::handle_exceptions: Error while dumping sta te (probably corrupted stack) t/op/01-parse_opsok t/op/64bit...skipped all skipped: 64bit INTVAL platforms only t/op/arithmetics.ok t/op/basic...ok t/op/bitwise.ok 1/27 skipped: no BigInt lib found t/op/calling.ok t/op/cc_params...ok t/op/cc_stateok t/op/cmp-nonbranch...ok t/op/compok t/op/debuginfo...ok t/op/exceptions..ok t/op/gc..ok t/op/globals.ok t/op/hacks...ok 2/2 skipped: no universal SIGFPE handling t/op/ifunlessok t/op/infook t/op/integer.ok t/op/interp..ok 1/8 skipped: we really shouldn't run just a label - use a sub t/op/jit.ok t/op/jitnok t/op/lexicalsok t/op/literal.ok t/op/load_bytecode...ok t/op/number..ok t/op/pushaction..ok t/op/say.ok t/op/spawnw..ok t/op/sprintf.ok 117/308 skipped: various reasons t/op/stacks..ok 3/24 skipped: no stack limit currently t/op/string..ok 7/160 skipped: various reasons t/op/string_cclass...ok 3/11 skipped: unicode support unavailable t/op/string_cs...ok 16/50 skipped: no ICU lib t/op/stringu.ok 3/25 skipped: no ICU lib t/op/timeok t/op/trans...ok 5/22 # Failed test (t/op/trans.t at line 421) t/op/trans...NOK 14# got: 'not 0.00ok 1 # ' # expected: 'ok 1 # ' t/op/trans...ok 15/22# Looks like you failed 1 test of 22. t/op/trans...dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 14 Failed 1/22 tests, 95.45% okay t/op/types...ok t/pmc/addrregistry...ok t/pmc/array..ok t/pmc/bigint.skipped all skipped: No BigInt Lib configured t/pmc/bignum.skipped all skipped: No BigNum support yet. t/pmc/booleanok t/pmc/bound_nci..ok t/pmc/builtinok 2/4 skipped: bound methods - n/y
Re: NEWS and PLATFORMS Updates Requested
On Nov 18, 2007 12:25 PM, chromatic [EMAIL PROTECTED] wrote: The next release will be on Tuesday evening. Committers, please review your checkins and update NEWS appropriately. Everyone, please submit updates to PLATFORMS. Running make fulltest and reporting any failures would be very handy as well. This is the actual Win32 MinGW output Per your request, the pasted output of mingw32-make fulltest with gcc 3.4.5 on Win32 rev 22919 C:\parrot\libparrot.dll -lmsvcrt -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lm pr -lwinmm -lversion -lgmp C:\Perl\bin\perl.exe t\harness --gc-debug --running-make-test -b t\compilers\imcc\\*\\*.t t\op\\*.t t\pmc\\*.t t\native_pbc\\*.t t\dynpmc\\*.t t\dynoplibs\\*.t t\compile rs\json\\*.t t\compilers\pge\\*.t t\compilers\pge\p5regexp\\*.t t\compilers\pge\p6rules\\*.t t\compilers\tge\\*.t t\library\\*.t t\examples\\*.t t\compilers\imcc\imcpasm\cfg.ok t\compilers\imcc\imcpasm\opt0ok t\compilers\imcc\imcpasm\opt1ok 1/78 skipped: various reasons t\compilers\imcc\imcpasm\opt2ok 1/6 skipped: various reasons t\compilers\imcc\imcpasm\optcok t\compilers\imcc\imcpasm\pcc.ok t\compilers\imcc\imcpasm\sub.ok t\compilers\imcc\reg\alloc...ok t\compilers\imcc\reg\spill...ok t\compilers\imcc\syn\bsr.ok t\compilers\imcc\syn\clash...ok t\compilers\imcc\syn\const...ok t\compilers\imcc\syn\errors..ok t\compilers\imcc\syn\evalok 7/7 skipped: various reasons t\compilers\imcc\syn\fileok 1/13 skipped: various reasons t\compilers\imcc\syn\keyed...ok 1/1 skipped: various reasons t\compilers\imcc\syn\labels..ok t\compilers\imcc\syn\macro...ok t\compilers\imcc\syn\namespace...ok t\compilers\imcc\syn\objects.ok t\compilers\imcc\syn\op..ok t\compilers\imcc\syn\pasmok t\compilers\imcc\syn\pcc.ok t\compilers\imcc\syn\pod.ok 1/4 skipped: various reasons t\compilers\imcc\syn\scope...ok t\compilers\imcc\syn\symbols.ok t\compilers\imcc\syn\tailok t\op\00ff-dosok t\op\00ff-unix...ok t\op\01-parse_opsok t\op\64bit...skipped all skipped: 64bit INTVAL platforms only t\op\arithmetics.ok 1/26 t\op\arithmetics.NOK 7/26# Failed test (t\op\arithmetics.t at line 210) # got: '0.00 # 0.00 # -123.456789 # 123.456789 # 0.00 # 0.00 # -123.456789 # 123.456789 # ' # expected: '-0.00 # 0.00 # -123.456789 # 123.456789 # -0.00 # 0.00 # -123.456789 # 123.456789 # ' t\op\arithmetics.ok 15/26# Looks like you failed 1 test of 26. t\op\arithmetics.dubious Test returned status 1 (wstat 256, 0x100) DIED. FAILED test 7 Failed 1/26 tests, 96.15% okay t\op\basic...ok t\op\bitwise.ok t\op\calling.ok t\op\cc_params...ok t\op\cc_stateok t\op\cmp-nonbranch...ok t\op\compok t\op\debuginfo...ok t\op\exceptions..ok t\op\gc..ok t\op\globals.ok t\op\hacks...ok 2/2 skipped: various reasons t\op\ifunlessok t\op\infook t\op\integer.ok t\op\interp..ok 1/8 skipped: various reasons t\op\jit.ok t\op\jitnok t\op\lexicalsok t\op\literal.ok t\op\load_bytecode...ok t\op\number..ok t\op\pushaction..ok t\op\say.ok t\op\spawnw..ok t\op\sprintf.FAILED test 157 Failed 1/308 tests, 99.68% okay (less 117 skipped tests: 190 okay, 61.69%) t\op\stacks..ok 3/24 skipped: various reasons t\op\string..ok 7/160 skipped: various reasons t\op\string_cclass...ok 3/11 skipped: various reasons t\op\string_cs...ok 16/50 skipped: various reasons t\op\stringu.ok 3/25 skipped: various reasons t\op\timeok t\op\trans...ok t\op\types...ok t\pmc\addrregistry...ok t\pmc\array..ok t\pmc\bigint.ok t\pmc\bignum.skipped all skipped:
[perl #44775] Parrot update broke languages/perl6
# New Ticket Created by Joshua Gatcomb # Please include the string: [perl #44775] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=44775 As far as I can tell, r20659 is the last rev perl6 worked correctly on r20660 does not appear to finish building correctly r20661 perl6 make spectest blows up all over the place pmichaud probably has more details as to the exact nature of the problem but suggested I open the ticket in RT Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: r20653 fails on windows
FYI all r20662 builds fine on Win32 with MinGW and Cygwin Cheers, Joshua Gatcomb a.k.a. Limbic~Region
[perl #43515] Parrot will not build on Win32/MinGW
# New Ticket Created by Joshua Gatcomb # Please include the string: [perl #43515] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43515 see http://nopaste.snit.ch:8001/10585 for details or paste below - the last successful build was on the 29th. FWIW, gcc is 3.4.5 - the latest offered by MinGW pdated to revision 19566. C:\parrotperl Configure.PL Parrot Version 0.4.13 Configure 2.0 Copyright (C) 2001-2007, The Perl Foundation. Hello, I'm Configure. My job is to poke and prod your system to figure out how to build Parrot. The process is completely automated, unless you passed in the `--ask' flag on the command line, in which case it'll prompt you for a few pieces of info. Since you're running this program, you obviously have Perl 5--I'll be pulling some defaults from its configuration. Checking MANIFEST.done. Setting up Configure's default values...Set up gcc environment - 3.4.5 (mingw special) ..done. Setting up installation paths.done. Tweaking settings for miniparrot...skipped. Loading platform and local hints filesdone. Finding header files distributed with Parrot..done. Determining what C compiler and linker to use.done. Determining whether make is installed..yes. Determining whether lex is installed...skipped. Determining whether yacc is installed..skipped. Determining if your C compiler is actually gcc.yes. Determining if your C compiler is actually Visual C++...no. Enabling optimization...no. Determining flags for building shared libraries...done. Determine if parrot should be linked against a shared library..yes. Determining what charset files should be compiled in..done. Determining what encoding files should be compiled in.done. Determining what types Parrot should use..done. Determining what opcode files should be compiled in...done. Determining what pmc files should be compiled in..done. Determining your minimum pointer alignment. 1 byte. Probing for C headers.done. Determining some sizesdone. Computing native byteorder for Parrot's wordsize.little-endian. Test the type of va_ptr (this test is likely to segfault)..x86. Figuring out how to pack() Parrot's types.done. Figuring out what formats should be used for sprintf..done. Determining if your C library has a working S_ISREGyes. Determining architecture, OS and JIT capability...done. Generating CPU specific stuff.done. Verifying that the compiler supports function pointer castsyes. Determining whether your compiler supports computed goto...yes. Determining if your compiler supports inline...yes. Determining what allocator to use.done. Determining if your C library supports memalign.no. Determining some signal stuff.done. Determining whether there is socklen_t..no. Determining if your C library has setenv / unsetenv...unsetenv. Determining if your platform supports AIO...no. Determining if your platform supports GMP..yes. Determining if your platform supports readline..no. Determining if your platform supports gdbm..no. Testing snprintf..done. Determining whether perldoc is installed...yes. Determining whether python is installed.no. Determining whether GNU m4 is installed.no. Running CPU specific stuffdone. Determining whether ICU is installedfailed. Determining Parrot's revision...r19566. Generating C headers..done. Generating core pmc list..done. Generating runtime/parrot/include.done. Configuring languages.done. Generating makefiles and other build
Re: Removing #pragma
Andy, I received this email in its own thread so perhaps I missed where it was tied to the problems with Win32/MinGW that we have discussed in #parrot. For those following along at home, MinGW's gcc version 3.4.2 has deprecated #pragma once and will actually cause the compiler to blow up when compiling parrot. MinGW has a sliding window of 3 versions (candidate, current, and previous). The candidate release, 3.4.5 compiles parrot just fine and was last updated in early 2006. Personally, I am fine requiring folks that want to use Win32/MinGW to use the candidate version of 3.4.5 or compiling a more recent gcc themselves. That is, as long as it is not causing problems anywhere else. Cheers, Joshua Gatcomb a.k.a. Limbic~Region On 6/12/07, Andy Lester [EMAIL PROTECTED] wrote: I'm very uncomfortable with removing #pragma once from our header files. It is perfectly valid C89 code, and I think bowing to a broken compiler is unhealthy precedent. -- Andy Lester = [EMAIL PROTECTED] = www.petdance.com = AIM:petdance
Re: [perl #38217] r11124: Cygwin build fails
All: I build parrot on Cygwin circa 5x a week. Anytime it fails to build, I perform the following: 1. make realclean 2. svn up 3. perl Configure.pl 4. PATH=/home/me/parrot/blib/lib:/bin 5. make In the very few instances it still fails, I isolate the build that it started failing and report on #parrot and it is usually fixed within a day or two. A couple of things to point out. 1. The absolute path to blib/lib is necessary. 2. I remove everything else from the PATH but bin because exposing the path to MinGW and/or AS Perl has been known to cause bad things to happen in the past. Just /bin is probably a bit paranoid but that doesn't mean that the gremlins aren't out to get me. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Fun Stats from sloccount
On 4/13/07, chromatic [EMAIL PROTECTED] wrote: The numbers would be higher if sloccount recognized Parrot code. I might add that shortly. -- c Totals grouped by language (dominant language first): ansic: 194913 (51.89%) perl:167865 (44.69%) I reccently informed the author that there was a bug which counted lines after __DATA__ as perl code. I am not sure if that applies in this situation but it added 10K SLOC to my project which was less than 2K without it ;-) Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: [perl #37997] r10604 build failure on Cygwin
On 3/28/07, Ron Blaschke [EMAIL PROTECTED] wrote: Joshua Gatcomb wrote: Really? No one on #parrot has been able to get parrot to work on Cygwin for months. Interesting, didn't know about this. The issue for the longest time was that miniparrot.exe would silently die and not even gdb could figure out why. It appeared to be a linking issue but as static linking also didn't work and there were no cygwin experts around, it went unresolved. The problem I am experiencing now is happening earlier. Could you, or someone else, please add the error message to the ticket, or create a new one? Maybe I can help with that. If you could hang out on #parrot (irc.perl.org) when myself, Jonathan, particle, etc are around - it would go a long way towards getting a reproduceable test case that can be correctly articulated as to the nature of the problem. A few years ago I used to build parrot on cygwin daily and opened several tickets that years later I was asked if were still applicable. I am not interested in repeating the past. It's a fairly standard Windows XP SP2 box with Cygwin, everything up to date. I have tried to install everything optional (like ICU), too. My configuration is identical to yours with the following exceptions: Despite having GMP and bc installed Configure.PL doesn't find them. I am interested in knowing why this is but I doubt it has anything to do with the problem. Here is the tail end of my make output: see attached Cheers, Joshua Gatcomb a.k.a. Limbic~Region src/pmc/stmlog.c src/pmc/stmref.c src/pmc/stmvar.c src/pmc/super.c src/pmc/undef.c src/encodings/fixed_8.c src/encodings/ucs2.c src/encodings/utf16.c src/encodings/utf16.c: In function `to_encoding': src/encodings/utf16.c:104: warning: passing arg 3 of `u_strFromUTF8_3_6' from incompatible pointer type src/encodings/utf16.c:118: warning: passing arg 3 of `u_strFromUTF8_3_6' from incompatible pointer type src/encodings/utf8.c compilers/imcc/imcparser.c compilers/imcc/imclexer.c compilers/imcc/imclexer.c: In function `yy_get_next_buffer': compilers/imcc/imclexer.c:4356: warning: comparison between signed and unsigned compilers/imcc/imc.c compilers/imcc/symreg.c compilers/imcc/instructions.c compilers/imcc/cfg.c compilers/imcc/reg_alloc.c compilers/imcc/sets.c compilers/imcc/debug.c compilers/imcc/optimizer.c compilers/imcc/pbc.c compilers/imcc/parser_util.c compilers/imcc/pcc.c /usr/bin/perl.exe -MExtUtils::Command -e mkpath blib/lib gcc -shared -s -L/usr/local/lib -o blib/lib/libparrot.dll \ src/ops/core_ops.o src/ops/core_ops_switch.o src/ops/core_ops_cg.o src/ops/core_ops_cgp.o src/charset.o src/encoding.o sr c/exceptions.o src/global_setup.o src/interpreter.o src/inter_call.o src/inter_cb.o src/inter_create.o src/inter_misc.o src/i nter_run.o src/gc/register.o src/gc/memory.o src/objects.o src/packfile.o src/stacks.o src/stack_common.o src/string.o src/st ring_primitives.o src/sub.o src/runops_cores.o src/trace.o src/pmc.o src/pmc_freeze.o src/key.o src/hash.o src/core_pmcs.o sr c/platform.o src/jit.o src/jit_cpu.o src/jit_debug.o src/jit_debug_xcoff.o src/intlist.o src/list.o src/library.o src/global. o src/embed.o src/warnings.o src/packout.o src/byteorder.o src/debug.o src/headers.o src/hll.o src/gc/smallobject.o src/gc/do d.o src/gc/gc_ims.o src/gc/gc_gms.o src/exit.o src/misc.o src/spf_render.o src/spf_vtable.o src/datatypes.o src/fingerprint.o src/nci.o src/cpu_dep.o src/tsq.o src/longopt.o src/events.o src/thread.o src/dynext.o src/utils.o src/vtables.o src/pic.o s rc/pic_jit.o src/mmd.o src/builtin.o src/extend.o src/extend_vtable.o src/revision.o src/packfile/pf_items.o src/stm/backend. o src/stm/waitlist.o src/gc/resources.o src/charset/ascii.o src/charset/binary.o src/charset/iso-8859-1.o src/charset/tables. o src/charset/unicode.o src/io/io.o src/io/io_buf.o src/io/io_layers.o src/io/io_unix.o src/io/io_utf8.o src/io/io_mmap.o src /io/io_win32.o src/io/io_stdio.o src/io/io_string.o src/io/io_passdown.o src/pmc/default.o src/pmc/null.o src/pmc/env.o src/p mc/key.o src/pmc/random.o src/pmc/unmanagedstruct.o src/pmc/managedstruct.o src/pmc/delegate.o src/pmc/compiler.o src/pmc/exc eption.o src/pmc/version.o src/pmc/vtablecache.o src/pmc/parrotio.o src/pmc/parrotlibrary.o src/pmc/parrotinterpreter.o src/p mc/parrotthread.o src/pmc/lexpad.o src/pmc/timer.o src/pmc/pointer.o src/pmc/sub.o src/pmc/closure.o src/pmc/continuation.o s rc/pmc/retcontinuation.o src/pmc/exception_handler.o src/pmc/coroutine.o src/pmc/eval.o src/pmc/nci.o src/pmc/float.o src/pmc /integer.o src/pmc/bigint.o src/pmc/complex.o src/pmc/string.o src/pmc/boolean.o src/pmc/ref.o src/pmc/sharedref.o src/pmc/ar ray.o src/pmc/fixedintegerarray.o src/pmc/intlist.o src/pmc/iterator.o src/pmc/sarray.o src/pmc/fixedstringarray.o src/pmc/mu ltiarray.o src/pmc/hash.o src/pmc/orderedhash.o src/pmc/tqueue.o src/pmc/parrotclass.o src/pmc/parrotobject.o src/pmc/os.o sr c/pmc/file.o src/pmc/addrregistry.o src/pmc
Re: [perl #37997] r10604 build failure on Cygwin
On 3/26/07, Ron Blaschke [EMAIL PROTECTED] wrote: Not sure about the details of this issue, but r17772 seems to build fine on Cygwin. Really? No one on #parrot has been able to get parrot to work on Cygwin for months. The reason has changed since this specific ticket but if you have a working cygwin build can you please share more details such as: perl -V cat myconfig perl Configure.pl which gcc gcc -v windows version (usually winver from command line) output of make (as an attachment) strings /bin/cygwin1.dll | grep -i cygwin-1. (just need 1 line of output to determine version of cygwin1.dll) Cheers, Joshua Gatcomb a.k.a. Limbic~Region Here's the output of make test on my box. Failed Test Stat Wstat Total Fail Failed List of Failed --- t/codingstd/c_code_coda.t 1 256 21 50.00% 1 t/codingstd/c_indent.t 2 512 22 100.00% 1-2 t/codingstd/cppcomments.t ?? ?? % ?? t/codingstd/tabs.t 1 256 11 100.00% 1 t/codingstd/trailing_space.t1 256 11 100.00% 1 t/op/trans.t1 256211 4.76% 13 t/pmc/iterator.t2 512432 4.65% 42-43 t/pmc/os.t 2 512152 13.33% 6 9 t/src/compiler.t1 256 61 16.67% 1 t/src/extend.t 12 307216 12 75.00% 1-12 t/src/intlist.t 4 1024 44 100.00% 1-4 t/src/io.t 9 2304209 45.00% 2-4 6-7 16-19 t/stm/runtime.t 2 512 52 40.00% 2 4 8 tests and 577 subtests skipped. Failed 13/270 test scripts, 95.19% okay. 39/6675 subtests failed, 99.42% okay. Ron
Re: PDD 25 Concurrency - first review
On 10/30/06, Allison Randal [EMAIL PROTECTED] wrote: Before I start kicking it into a more structured form, I'd like to do an initial round of discussion. This is your chance to mention anything you hoped or expected from Parrot's concurrency models. How do you plan to use concurrency, and in what contexts? What's your favorite concurrency model and why should we consider using it? How integral a role should the new STM play in Parrot's concurrency? Etc. There is a recent thread over at PerlMonks on this very topic: Parrot, threads fears for the future http://perlmonks.org/?node_id=580004 The thread is long and goes on tangents at points. Not every one has kept an objective perspective and it has its share of finger pointing doom and gloom. All negativity aside, there are a great deal of valuable points made in the thread which make it worth reading. While it has lost a bit of momentum - it is still being updated with new posts almost daily. Allison Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Using Rules Today
On 7/3/06, Paul Seamons [EMAIL PROTECTED] wrote: It isn't specifically a parser designed for general language parsing, but CGI::Ex::Template does have a mathematical expression parser. Thanks, but this falls into the realm of existing wheels which is a different part of this project. perl -e 'use CGI::Ex::Template; $s=CGI::Ex::Template::dump_parse(3 * 4 ** 2 + 5); $s =~ s/\s+/ /g; print $s\n' $VAR1 = [ \[ '+', [ \[ '*', '3', [ \[ '**', '4', '2' ], 0 ] ], 0 ], '5' ], 0 ]; Ok, but where is the evaluation? I know it wouldn't be too hard to write something that could evaluate this data structure to produce the correct results but that is what this project is all about. Some parsers make this easier than others. Some allow the expression to be evaluated as it is parsed while some require additional homegrown code to parse the resulting parse tree (data structure). I have not had a chance to look at Flavio's links yet. Since no one who actually knows rules seemed to be inspired to write an example for me - I will *eventually* figure it out on my own and post back to the list as an FYI. Paul Seamons Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Using Rules Today
All: I have a for-fun project that I am working on exploring various different parsers and their methods. So far I have looked at things like Parse::RecDescent, Parse::YAPP, Parse::Earley, and HOP::Parser. I had Perl6::Rules on my list, but it is my understanding that Pugs::Compiler::Rule is more up to date. In any case, I was wondering if someone could provide me with an example of a mathematical expression parser (and evaluator). To properly compare to the others, it would need to handle the following operators +, - (left associative) *, /, % (left associative) ^ (right associative) handle parens 12 - (3 + 4) handle two functions sqrt() and abs() both of which must include the parens. If someone has time to do this for me, I would be appreciative. It might also serve as example documentation or cookbook ideas. I am specifically interested in examples that can be run in Perl 5 today without needing Pugs or Parrot. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
RFC: Patch for mingw-msys
All: In tracking down why building parrot with mingw was failing, I discovered that the culprit was having msys in my PATH even if I wasn't intentionally trying to use it. There are 3 interesting things to note: 1. It does not matter what msys is actually called - renaming the directory to foo has the same effect 2. It does not matter where in the PATH it appears - placing it after mingw has no effect 3. Changing the PATH has no effect on the configuration cycle - only the build cycle Running mingw32-make with the -d (debug) flag on revealed what is going on. It scans PATH, using an internal routine called find_and_set_shell, looking for sh.exe which changes path delimiters and shell escapes. The obvious fix is to do exactly what mingw32-make is doing and warn the user that the subsequent mingw32-make is going to fail. This is where the request for comments comes in. config/init/hints/mswin32.pm is where the mingw specific settings are set up. The $make variable obtained at this point is nmake, but it would still be possible to probe $ENV{PATH}, discover if sh.exe exists, and warn the user. Configure.pl ends by telling the user the next step. Use $make, which has changed from nmake to mingw32-make along the way, which is bound to fail. Perhaps this is the spot where it is appropriate to warn the user. I don't mind writing the patch but as I have been away for 1.5 years I would really like to hear the opinions of where is the best way to do it. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: RFC: Patch for mingw-msys
On 5/26/06, Andy Dougherty [EMAIL PROTECTED] wrote: I don't know anything about either msys or mingw, so I don't really know what to recommend. I'm afraid I don't understand what a patch would actually try to do. From your previous message, it looks like sh.exe is changing the path delimiters and shell escapes so that things don't work anymore. Are you trying to patch Configure.pl to handle those changed delimiters and shell esacapes? Or do you have something else in mind? The patch would be nothing more than a warning. As I said, the PATH environment has absolutely no effect on the configure process, just the build process. During the configure process, we can warn the user that the build process won't work unless they do something about their PATH. In particular, prevent mingw from using msys and subsequently changing the the behavior of path delimiters and shell escapes. I would love to submit a patch to make using msys transparent and just work but after searching the archives, it appears that people working on it far longer than I have had little to no luck with it and I am just getting my feet wet again. Also, what's the preliminary setting of $make got to do with it? You've still got to call some sort of make command in the end. It may seem odd to some to put a warning for $make as mingw32-make in a section of code when $make is actually nmake at that point. Placing it at the end of Configure.pl may make more sense since it is the last set of instructions to the user but it appears that a lot of work has gone in to making it platform neutral. If you're just wondering where '$make' gets set, then config/inter/make.pm is where to look -- it seems to prefer mingw32-make over nmake. Perhaps that's wrong. I don't think it is wrong but perhaps the order of hints/make should change. I don't know that's why I am asking. -- Andy Dougherty [EMAIL PROTECTED] Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Instructions to build parrot using mingw
All: It has been 1.5 years since I have built parrot and a lot has changed. Today I decided to dust off some old projects but I am having trouble getting it to build. Previously, I used Cygwin. I have mingw, msys, and ActiveState Perl Unfortunately, I do not have permission to create files in C:\Windows\system32 so the conf.ini files that go there in support of mingw and msys are missing. That may be part of my problem. Here is where I am at: C:\parrotperl Configure.pl C:\parrotmingw32-make Compiling with: xx.c gcc -I.\include -DWIN32 -g -Wall -Wstrict-prototypes -Wmissing-prototypes -Winline -Wshadow -Wpointer-arith -W cast-qual -Wwrite-strings -Waggregate-return -Winline -W -Wno-unused -Wsign-compare -Wformat-nonliteral -Wform at-security -Wpacked -Wdisabled-optimization -mno-accumulate-outgoing-args -Wno-shadow -falign-functions=16 -D HAS_JIT -DI386 -DHAVE_COMPUTED_GOTO -I. -o xx.o -c xx.c /usr/bin/sh: C:perlbinperl.exe: command not found mingw32-make: *** [src\ops\core_ops.o] Error 127 Notice C:perlbinperl.exe The path delimiter is apparently getting interpreted as a shell escape. I have tried playing around with config/init/hints/mswin32.pm to no avail. Anyone know what my problems is or is willing to work with me on this would be most appreciated. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Do junctions support determining interesections of lists
Almost a year ago (2005-04-27), I wrote the list asking a question about junctions. Specifically, the ability to find the intersection, union, etc of a list. my $matches = any( @x_chars ) eq any( @y_chars ); my $match = $matches.pick; all( any() eq any() ); Patrick Michaud offered an infix myeq to let the problem be solved in user space as junctions at that time did not support what I wanted to do. Today I examined the Synopses and found a couple of intriguing things: In Synopsis 3: A junction is a single value that is equivalent to multiple values. And then later on... Junctions are specifically unordered. So if you say for all(@foo) {...} it indicates to the compiler that there is no coupling between loop iterations and they can be run in any order or even in parallel. This implies to me that it is possible to get the values out of a junction without calling a .values method if used in list context. From Synopsis 12: To hyperoperate over the values of a junction you have to explicitly pull out the values: $junction.values».meth(@args); This implies to me that you can still get at the values by explicitly using .values. From Synopsis 9: Some contexts, such as boolean contexts, have special rules for dealing with junctions. In any scalar context not expecting a junction of values, a junction produces automatic parallelization of the algorithm. Ok, so what about a context expecting a junction of values as I think all( any() eq any() ) is expecting? My question today is 2 fold. 1. Where in the synopses would I find the various methods that can be performed on a junction? A. .values B. .pick C. ??? 2. Do the junctions of today support finding the union, intersection, etc without creating your own infix operator? Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Do junctions support determining interesections of lists
On 4/4/06, Larry Wall [EMAIL PROTECTED] wrote: On Tue, Apr 04, 2006 at 09:16:23AM -0400, Joshua Gatcomb wrote: Junctions are not intended for that use. We have Sets for that now. Ok. So this will work out of the box if you use the right tool. Cool. The cabal already decided once (in Portland, I believe) to include the standard set operators and a Set type, as well as ASCII representations like (*) and (+) for the set ops so we don't force anyone to use Unicode prematurely. Unfortunately these have not found their way into the synopses yet, as far as I know. Fair enough. For the benefit of everyone following along at home - which of the Synopses should we be following to see how Sets fit into Perl6? Sorry if this is a bit meandering--jet lag is interfering constructively with my native dimwit... No apology necessary. I don't understand everything but I don't need to. I am happy trusting that smarter people than me are working on the problem. Larry Joshua Gatcomb a.k.a. L~R
Ponie Inquiry
All: Back in the summer of 2003, Fotango offered financial support for Ponie development for 2 years. Nicholas took up the development hat after Arthur, but things are awfully quiet. Since summer 2005 has come and gone, I wonder if funding has been extended. I know that Nicholas opened up the repository to the public http://use.perl.org/~nicholas/journal/24649 but is anyone else working on the project? With the excitement of Perl6, Parrot, and Pugs I wonder if Ponie is being neglected. Inquiring minds want to know. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fears
On 10/24/05, H.Merijn Brand [EMAIL PROTECTED] wrote: My only current fear is that I won't live long enough to be able to use and understand the full richness of what perl6 is going to offer me. (Oh, and that perl6 will never be able to upgrade my scripts that use 'format', but I'm aware of the plan to make that `obsolete' as in: the perl526 translator will dump core on those) Those were not my fears. They are comments and concerns I see made day in and day out in various online forums over the last 3 years. Juerd's whole point to collecting these fears was to point out that, by and large, they are unfounded. Stating that plenty of people find p5's internals very accessible isn't going to allay the concerns of the people with the fear. Stating that p5 has never been just a scripting language isn't going to change the perception of those people that hold that opinion. IIRC, Andy has taken up the Perl6 PR hat. I think Juerd should like be working with Andy on this one. The rebuttals to these fears needs to be well thought out and convincing because from my personal experience they are prevalent. -- H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/) Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fears
On 10/24/05, Juerd [EMAIL PROTECTED] wrote: Feel free to add your own, or fears you heard about! FEAR: Perl6 internals will be just as inaccessable as p5 FEAR: The Perl6 process is driving away too many good developers FEAR: Perl6 will not be as portable as p5 FEAR: Perl6 will not be able to fix the stigma of just a scripting language or line noise FEAR: Perl6 is un-necessary and the time, money, and resources is impacting p5. FEAR: There is too much misinformation surrounding Perl6 for people to feel comfortable. This last fear is likely the reason why you are collecting this list. I think the biggest problem is accessability and visibility for the casual observer. Unless you are devoted to the list and the IRC channels and the conferences your perception of what is and isn't Perl6 is out of date. We don't have a single source where people can go for relatively up to the minute facts concerning the project. Juerd Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 fears
On 10/24/05, Joshua Gatcomb [EMAIL PROTECTED] wrote: On 10/24/05, Juerd [EMAIL PROTECTED] wrote: Feel free to add your own, or fears you heard about! This really isn't a fear as much as it is a complaint. It has to do with design decisions and the list. Perl 5 was my rewrite of Perl. I want Perl 6 to be the community's rewrite of Perl and of the community. - Larry Wall I think a lot of people that would contribute, myself included, are put off by the fact that it is nearly impossible to get a clear decision rendered on the list. Threads spin off tangents and typically end not in an answer, but in a loss of energy in trying to get back to the original question. My contribution to Perl6 has primarily been in advocation. I have contributed tests and code examples to Pugs as well as asked questions on the list. I would do more if getting answers was easier. Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: zip: stop when and where?
On 10/4/05, Juerd [EMAIL PROTECTED] wrote: What should zip do given 1..3 and 1..6? (a) 1 1 2 2 3 3 4 5 6 (b) 1 1 2 2 3 3 undef 4 undef 5 undef 6 (c) 1 1 2 2 3 3 (d) fail I'd want c, mostly because of code like for @foo Y 0... - $foo, $i { ... } Pugs currently does b. Yeah. This is one of those things where it is hard to have a single function always DWYM. Algorithm::Loops solves this by just providing multiple functions. I can't see how to solve this using MMD alone. You would need to add an optional parameter that would specify behavior -min (zip to the smallest list) -undef (insert undefs as needed) -error (blow up if the lists are not equal in size) etc Juerd Just my 2 cents from the peanut gallery. Cheers, Joshua Gatcomb a.k.a. L~R
Re: [perl #29936] JIT debugging on Cygwin not working
--- Joshua Hoblitt via RT [EMAIL PROTECTED] wrote: Can you still recreate this issue? I haven't been involved in Parrot development for some time now. When I was involved I was pretty much the only Cygwin user actively participating so it was frustrating not to be able to validate what I was seeing. Parrot has changed considerably since then as has Cygwin and gcc. I would suggest asking the list if there is anyone interested in carrying on the Cygwin torch by asking them to reproduce the problem. I no longer have an environment to do so. Thanks, -J Cheers, Joshua Gatcomb a.k.a. Limbic~Region __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com
Re: Sort of do it once feature request...
On 9/21/05, Michele Dondi [EMAIL PROTECTED] wrote: Letting aside the fact that in the 99% of times they're plainly reinventing the wheel of glob() a.k.a. File::Glob, there are indeed situations in which one may have stuff like for (@foo) { next if $_ eq 'boo'; # do something useful here } I have mocked up an example of how you could do this in p5 with some ugly looking code: #!/usr/bin/perl use strict; use warnings; do_something(5); sub do_something { my $target = shift; my $block; my $block2 = sub { print No need to check $_ against $target anymore\n; }; my $block1 = sub { no warnings; if ( $_ == $target ) { print Skipping 5\n; $block = $block2; next LOOP; } else { print $_ is not $target\n; } }; $block = $block1; LOOP: for ( 1 .. 9 ) { $block-(); } } Once the condition has been met, the code dynamically changes to no longer check for the condition. Keep in mind, you are paying the price of dereferencing as well as ENTER/LEAVE on subs to get this performance benefit. I will be interested to see what the experts say on this. I have often desired this in long tight running loops and found that the ways to achieve it (as shown above) are worse then leaving the op in. Michele Cheers, Joshua Gatcomb a.k.a. Limbic~Region
Re: scalar dereferencing.
On 6/17/05, Larry Wall [EMAIL PROTECTED] wrote: On Fri, Jun 17, 2005 at 03:56:50AM +0800, Autrijus Tang wrote: : : my $x = 3; : my $y = \$x; : say $y + 10; : $y++; : say $y; : say $x; : I suspect people will find that counterintuitive. A more consistent approach might produce 13 14 14 That is, if + deferences automatically, so should ++, such that the thingie pointed to by both $x and $y is what gets incremented, not a clone of it. It should take more work than that to get a COW reference, I suspect. Ok - but where does the assignment come in? The only change to $y is in $y++ so I would think the results should be 13 4 4 Larry Cheers, Joshua a.k.a. L~R
Re: State of Design Documents
On 6/13/05, Patrick R. Michaud [EMAIL PROTECTED] wrote: Since it might not have been clear from my earlier post -- I've now committed the S17 framework draft into the repository. Thanks. I am now questioning using Perl6 Timeline By Apocolypse as reference material. I am rather interested in seeing the specs for pack/unpack so I went about finding where it should go: There are 2 RFCs listed for A09 for pack/unpack 142 Enhanced Pack/Unpack 247 pack/unpack C-like enhancements There is an RFC for A13 regarding distinguishing packed data 258 Distinguish packed data from printable strings The rest of the RFCs for pack/unpack fall into A29 246 pack/unpack uncontrovercial enhancements 248 enhanced groups in pack/unpack 249 Use pack/unpack for marshalling 250 hooks in pack/unpack Now S09 and S13 have already been written but do not include the details regarding pack/unpack. The patch to S29 is obvious - just add a heading for pack/unpack and hope someone fills in the blanks. The patch for S13 is more difficult since I don't believe it warrants a full heading. Probably just needs a guess as to how to expose the flag to return a bool value i.e. $string.packed, comment about the 'packed' warnings/strictures pragma, and stick it the right place. The patch to S09 has me stumped. Is there any other reference material I can use to put together solid frameworks that are closely representative to what @larry might produce? Pm Cheers, Joshua Gatcomb a.k.a. L~R
Re: State of Design Documents
On 6/14/05, Larry Wall [EMAIL PROTECTED] wrote: Heh, that classification was a fast guess about RFCs made more than 4 years ago. I'm amazed it's stood up as well as it has, even where it hasn't. I agree, and lacking anything I could find more recent, initially thought it was the right way to go. I think at this point we should assume that any RFCs that haven't been officially blessed should be considered officially suspect, and prior art (Perl 5) should generally take precedence unless we decide otherwise. If something seems too good to leave out, we can talk about it here. There is another question at the Monastery entitled What's in Perl 6? asking specifically which RFCs have been accepted, rejected, and of course the ones somewhere in the middle. about http://perlmonks.org/index.pl?node_id=96184 The written Apocolypses answered that question for the applicable RFCs but there are two problems. The first is that we are now primarily focusing on Synopses. The second is that it is hard to frame synopses without the knowledge of which RFCs are in what state. That being said, it's pretty clear that there are some things that are suboptimal about Perl 5's pack/unpack. My primary focus here is on the design documents. I believe that it will be easier to focus on what is left my having a means to measure. Using the analogy of a house, once the frame is up it is easy to walk in and see that the master bedroom is finished while the kitchen hasn't been started. I believe it will be easier to point people to reference material then it is to rehash questions repeatedly on the list. I believe it will be easier for someone to modify documentation if an organized framework tells them where it needs to go. I freely admit I may be living in the clouds and my well intentioned idea is good in theory but hard to do in reality. If you, or anyone else, can see a clear way to move forward for those outside of the cabal to help - we would certainly appreciate it. Not really, except insofar as we've talked about compact classes of native types working like C structs. There are lots of nitty things we can fix with pack/unpack, but the basic underlying problem is that pack/unpack are defined operationally rather than declaratively. Sorry, perhaps I should have been more clear. This was a general question with regards to the design documents and not specifically with pack/unpack. So is there anything those of us not in @larry can do to help out with the design documents and specifically where can we go to get reference material? Larry As a side note, the only thing I would like to see in pack/unpack is a way to make the following task easier: You have to read records in the following way: 2 bytes = what type of record you have 3 bytes = how long the record value is ? bytes = value of record which is determined by previous read In p5, you need to keep track of your offset and skip that number of bytes each time. It would be nice if p6 could somehow make that easier. Again, my focus is on the design docs and not on pack/unpack. I just used it as a discussion point since it is what I was working on at the time. Joshua Gatcomb a.k.a. L~R
State of Design Documents
All: Designing a language isn't easy - I get that. Opening up the design process to the entire community and filtering everyone's good ideas certainly doesn't make this any easier. My concern is that these difficulties are being aggravated because the design documents (Synopses) are not kept up to bleeding edge date. There are currently 12 Synopses available to implement code from but there are still 19 more unpublished (I excluded formats in chapter 7 for obvious reasons). See Perl6 Timeline By Apocalypse for details: http://perlmonks.org/index.pl?node_id=332117 I am sure that a great deal of that unpublished work has already been decided and yet there is no end to revisiting old problems on this list and musings of didn't @larry say 'X' about that?. I know that decisions are subject to change but having the current state of decisions in a single location (Synopses) would be a great benefit to all. I am a firm believer in not complaining unless you have an idea about how to solve the problem, so here goes: Put the design documents into public change control. Read access to be granted globally with write access to be limited to @larry initially. The community posts patches where the bulk of the work is done and @larry makes any necessary modifications and commits. If even that work load proves to be too much, perhaps common mortals get granted commit access on a case-by-case basis. Cheers, Joshua Gatcomb a.k.a. Gat (240) 568-5675
Re: State of Design Documents
On 6/10/05, Patrick R. Michaud [EMAIL PROTECTED] wrote: This already exists -- the design documents are all available from http://svn.perl.org/perl6/doc/trunk . And I've already volunteered to review/apply patches to the design documents or forward them to the appropriate people for review -- there just haven't been a lot of patches submitted. (p6l and/or p6c are probably appropriate forums for this.) Ok, admittedly I was playing a bit dumb. I knew about the repository I just didn't think it was general knowledge. I was also unaware that patches had been requested with a volunteer to act as the approving authority. Hmmm. Thanks. I guess I will have to go back over the questions I have asked and see if any decisions were rendered not relfected in docs and be a pioneer. Pm Cheers, Joshua Gatcomb a.k.a. L~R
Re: State of Design Documents
On 6/10/05, Joshua Gatcomb [EMAIL PROTECTED] wrote: Hmmm. Thanks. I guess I will have to go back over the questions I have asked and see if any decisions were rendered not relfected in docs and be a pioneer. Ok, are there any guidelines for what should and should not be put forward as a patch. I can see 3 key areas of concern: 1. Framework for unwritten Synopses (so we know what goes where) 2. Heading placeholders for written Synopses with missing information 3. Decisions rendered by @larry (or should it only be $larry) on the list that are not yet in the corresponding Synopsis I have included a sample framework for chapter 17. Theoretically, someone could then go search the archives for decision points in any of those headings and fill in the blanks. Is this what you envisioned or were you thinking only minor tweaks to existing documents? Cheers, Joshua Gatcomb a.k.a. L~R S17.pod Description: Binary data
Revisiting .chars (and friends) in list context
All: I would like to revisit the following question as there was no decision reached AFAICT. http://groups.google.ca/group/perl.perl6.language/browse_thread/thread/766c1b32c57a56f6/3296f0d6cad75548?q=list+context+.charsrnum=1hl=en#3296f0d6cad75548 What I would like to be able to do is: my $str = 'hello'; my @chars = $str.chars; # h e l l o There were some good points raised in that thread that I think are valid, but I think it digressed from the intent of the original question. Perhaps that is because unicode prefaced chars which clouded the waters. I don't know anything about unicode and leaving the hard choices for doing the right thing up to you all. Whatever the right thing is, will there be a way to do what my code snippet showed? Cheers, Joshua Gatcomb a.k.a. L~R
Argument Type Checking
All: I was hoping the following would give me an outright error sub foo (Int $bar) { say $bar; } foo('hello'); I seem to recall, probably incorrectly, that one of the differences with int, Int, and no type declaration at all is that one would happily autoconvert for you, 1 would autoconvert but forget it ever happened, and 1 would be an outright failure. Ok - so could someone set me straight? What should that code snippet do? Would it do anything different if Int had been int? Cheers, Joshua Gatcomb a.k.a. L~R
Question on is chomped
While E02 states that is chomped sets the chomped property of afilehandle, I didn't find any detailed specifications in any of the As or Ss. So - is is chomped always the equivalent of: while ( FH ) { chomp; } For instance - you have opened the file rw Or, the idea of having mutator and non-mutator versions of chomp (and other functions) have been kicked around the list. Any definitive word yet? Cheers, Joshua Gatcomb a.k.a. L~R
Binding to a sub's return value
I am wondering what the proper behavior of binding to a sub's return value should be sub some_routine { my $foo = 42; return $foo; } my $rv := some_routine(); Should $rv be bound to $foo or to a copy of $foo? I ask because with state() and closures, it makes a difference since the value can change. sub some_rourtine { state $foo = 42; return $foo++; } My apologies if this has been previously discussed or is documented somewhere. I am still playing catch up. Ok, ok - it's true - I am looking for a little instant gratification. Cheers, Joshua Gatcomb a.k.a. L~R
Coroutine Question
All, I am not the only one who has found porting p5 to working p6 code relatively easy and similar looking: http://perlmonks.org/index.pl?node_id=453821 In that thread, the author raised the question of coroutine support in Perl. I looked up coroutines in the Perl6 Timeline By Apocalypse thread and realized [AES]17 hasn't been written yet. http://perlmonks.org/index.pl?node_id=332117 So without asking for S17 in its entirety to be written, is it possible to get a synopsis of how p6 will do coroutines? I ask because after reading Dan's What the heck is: a coroutine, it is clear there is more than one way to dictate behavior. http://www.sidhe.org/~dan/blog/archives/000178.html Cheers, Joshua Gatcomb a.k.a. L~R
Re: Coroutine Question
On 5/4/05, Luke Palmer [EMAIL PROTECTED] wrote: On 5/4/05, Joshua Gatcomb [EMAIL PROTECTED] wrote: So without asking for S17 in its entirety to be written, is it possible to get a synopsis of how p6 will do coroutines? I ask because after reading Dan's What the heck is: a coroutine, it is clear there is more than one way to dictate behavior. Well, one way is to use generating functions: my @a = gather { for 1..10 { say; take; } } (Where that = might be spelled :=). Here, the code is not executed until an element of @a is demanded. It is executed as many times as necessary to fetch that element, and then stopped in its tracks. Ok - this isn't what I was expecting at all. That doesn't make it a bad thing. Given something that looks a lot more like a typical coroutine: sub example is coroutine { yield 1; yield 2; yield 3; } I would expect for 1 .. 5 { say example() } to print 1\n2\n3\n1\n\2 If I got fancy and added a parameter sub example ( $num ) is coroutine { yield $num; yield $num + 1; yield $num - 2; } I would expect for 1 .. 5 { say example( 7 ) } to print 7\n8\n6\n7\n8; The questions I am really asking is: 1. Will coroutines be supported at all? 2. If yes, will they look like coroutines in other languages? 3. If yes, in what ways will they be behave (handling of parameters for instance)? 4. Finally, what is the proper syntax for declaring and calling coroutines? I am fine with a we haven't got that far yet answer. I was just hoping to write some tests to drive features. Luke - Hide quoted text - Cheers, Joshua Gatcomb a.k.a. L~R
Re: Coroutine Question
On 5/4/05, Luke Palmer [EMAIL PROTECTED] wrote: On 5/4/05, Joshua Gatcomb [EMAIL PROTECTED] wrote: Ok - this isn't what I was expecting at all. That doesn't make it a bad thing. Given something that looks a lot more like a typical coroutine: sub example is coroutine { yield 1; yield 2; yield 3; } I would expect for 1 .. 5 { say example() } to print 1\n2\n3\n1\n\2 Ding! You just hit the disagreement point. You're on Damian's side. Not exactly. I am basing my expectation on the following link and then asking with all the different ways to define behavior - has a decision WRT p6 been made. http://www.sidhe.org/~dan/blog/archives/000178.html Sorry for my language... it's just that if I were dropped into a project that invented that abstraction for something it was doing, it would be one of the first things I'd change. Totally unscalable design. If I got fancy and added a parameter sub example ( $num ) is coroutine { yield $num; yield $num + 1; yield $num - 2; } I would expect for 1 .. 5 { say example( 7 ) } to print 7\n8\n6\n7\n8; And here is where it gets trickier: say example(7); # 7 say example(7); # 8 say example(8); # 8? 6? Exactly my point. There is more than one way to define the behavior (especially with parameter handling). That is why I included a reference and asked how p6 was going to do it. Personally, I don't care because I know people like you, Larry, Damian, et all will make a sound decision. What I want to know is if you have a decision already that isn't published in its entirety so I can start writing tests. Ok, I do care. Regardless of behavior, I would hope the syntax would somewhat resemble that of other languages. Luke Cheers, Joshua Gatcomb a.k.a. L~R
Re: Malfunction Junction, what's your function?
On 4/28/05, Thomas Sandlaß [EMAIL PROTECTED] wrote: I wrote: permute( @x_chars ) »{ $^a eq $^b ?? $^a :: ''}« permute( @y_chars ) Permutation is the wrong thing here, sorry. It's just: I want to preface again that I have only recently started giving the language aspect of p6 serious focus. Without doing any digging into junctions and pretty much just listening to the buzz, I not only think of things like being able to verify that a userid isn't on a blacklist, I also think of the ability to do things like: 1. Give me all the items in list A that match any of the items in list B 2. Give me all the items in list A that aren't in list B 3. well - you get the idea I don't want to have to invent some special purpose infix operation to do it nor should do I believe it should require much thinking. That doesn't mean it needs to be in the core. If not in the core, I think it should be generalized and included in one of the first available modules. FAQs such as union, difference, intersection of lists are FAQs for a reason. Of course, it is real easy for me to say it should 'just work' from where I am sitting - you all are the ones that have done the hard work. Having answered the questions enough times in p5 circles though, it would be nice to have a real simple easy answer for p6. Cheers, Joshua Gatcomb a.k.a. L~R
Malfunction Junction, what's your function?
Ok - sorry for the cheesy subject line but I couldn't resist. So I am working on porting some interesting pieces of code I wrote in p5 at the Monastery to p6 for the benefit of others - primarily to show how easy the transition can be. Since Pugs doesn't have p6 rules yet I wanted to show off the power of junctions instead of using the pcre support. Basically I need to know if any character in string x matches any character in string y - easy right: $str =~ /[chars]/ becomes any( @x_chars ) eq any( @y_chars ). The problem is that in the regex version I use capturing parens to identify the character matched. For the purposes of the problem I don't need to rely on the first character matched I just need to know 1. Without doing a lot of research into junctions, I thought the following would work: my $matches = any( @x_chars ) eq any( @y_chars ); my $match = $matches.pick; Ok - so maybe not - perhaps I should just change .pick to .values hmmm - still not working - perhaps I need to give the junctions more information as to what I am after all( any() eq any() ); Hmmm - perhaps the problem isn't with junctions but with Pugs but to know for sure I need to find out what, if anything, is the proper way to do what I want. The worst that could happen is that I find out there isn't a way to get a what matched from an any() eq any() comparison. Cheers, Joshua Gatcomb a.k.a. L~R
Formal Parameters To While Block
as it appears the email I sent before subscribing is being held and I am impatient, I have subsequently subscribed and am resending from a different address All: Please forgive me, but I have only recently started following the language side of p6 after spending a fair amount of time with Parrot. Last night I installed Pugs and wrote my first p6 code: http://perlmonks.org/index.pl?node_id=451398 Reading S04, it seems that there are no implicit blocks around control structures, so p5 code like: while ( my @array = $ref-() ) { ... } would scope my @array appropriately, it will not in p6 The solution is formal parameters. The trouble is I can't seem to find a good example in S04 that matches what I am trying to do. while $ref() - @array { ... } is what I think it might be modeling it after the for loop, but the closest thing I see in while is: while =$*IN - $line {...} I am happy to write tests to get the appropriate functionality in Pugs, but I am not sure what is appropriate??? Cheers, Joshua Gatcomb a.k.a. L~R
Formal Parameters To While Block
All: Please forgive me, but I have only recently started following the language side of p6 after spending a fair amount of time with Parrot. Last night I installed Pugs and wrote my first p6 code: http://perlmonks.org/index.pl?node_id=451398 Reading S04, it seems that there are no implicit blocks around control structures, so p5 code like: while ( my @array = $ref-() ) { ... } would scope my @array appropriately, it will not in p6 The solution is formal parameters. The trouble is I can't seem to find a good example in S04 that matches what I am trying to do. while $ref() - @array { ... } is what I think it might be modeling it after the for loop, but the closest thing I see for while is: while =$*IN - $line {...} I am happy to write tests to get the appropriate functionality in Pugs, but I am not sure what is appropriate??? Cheers, Joshua Gatcomb a.k.a. L~R __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: [perl #33642] [PATCH] Change working directory for parrotbench.pl
--- Matt Diephouse [EMAIL PROTECTED] wrote: # New Ticket Created by Matt Diephouse # Please include the string: [perl #33642] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=33642 parrotbench.pl currently cd's into the benchmark directory before running the benchmarks. This patch changes the program to run them from its own directory. I've done this because many of the benchmarks need to be run from the root parrot directory. This has been causing some problems for the performance stats. This is because there is no smart find yet for .include statements. I have been out of the loop since late November and will likely continue to be. I was hoping making the benchmarks part of the test suite my prompt some one with tuits to fix this. It may be that the fix itself is a design decision and there is as of yet no ruling. Joshua Gatcomb should comment on whether or not this should be applied. Apply away. I have held off making any modifications waiting on another design decision. Leo opened up a ticket on this script because it used a non-core Perl module. I listed a dozen or so other non-core Perl dependencies in other scripts and asked what was the proper way to handle it with no definitive answer. Personally, my feeling is that anything not required to configure, compile, install, or run Parrot should be allowed to have non-core dependencies as a usr/contrib. You can run the benchmarks without the script - it just makes automating them and getting pretty output easier. Either way, it'll be used for a local copy of parrotbench.pl on the stats server. Thanks! I haven't looked at the stats for a month - I hope we are doing great. -- matt diephouse http://matt.diephouse.com Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Send a seasonal email greeting and help others. Do good. http://celebrity.mail.yahoo.com
Fwd: Re: Parrot BASIC
All, Please read Clinton's reply - especially the part about being blocked from the list for about a year. Cheers, Joshua Gatcomb a.k.a. Limbic~Region --- Clinton A. Pierce [EMAIL PROTECTED] wrote: Date: Tue, 16 Nov 2004 11:34:05 -0500 To: Joshua Gatcomb [EMAIL PROTECTED] From: Clinton A. Pierce [EMAIL PROTECTED] Subject: Re: Parrot BASIC CC: [EMAIL PROTECTED] At 12:54 PM 11/15/2004 -0800, Joshua Gatcomb wrote: Clinton, William Coleda has updated Parrot BASIC enough to get wumpus and screen working, albeit not entirely cleanly. In IRC, it was mentioned by Dan that we should be automating some BASIC tests as part of the test suite. We were wondering what your thoughts on it were and if you plan on continuing maintenance? And just to be clear for those reading at homejust because I am asking doesn't mean I am volunteering. I've been neglectful in taking care of this, sure. A few things to note: * I've been unable to post to p6i for over a year now. My mail-relay for my ISP (Comcast) and my hosted domain (geeksalad) has been on a blacklist for sending to perl.org for quite a while. I can't move my domain till Feb at the inside, and don't have another mail option handy. Not being able to write to p6i dampens enthusiasm for the project a bit. (You'll note the cc'd copy probably won't reach P6I. Feel free to forward it to them.) * Originally it was an interesting hack for the infant Parrot (before PIR, in the spirit of TinyBASIC), then a little more serious hack (look, a QuickBASIC that plays chess in color!), but since there's a plethora of other languages it has lost its hack value. Is there a need beyond the initial hacks? If so, then I'm still interested because... * It should probably be re-written by someone who understands parsers and writing real language compilers. I'm willing to learn (I'd love to learn!), but I'm going to need to pester the hell out of someone every now and then for help. This is step 0 in making it supportable. * Step 1, of course, is to write tests. Since it was a hack, and the test framework was iffy at the time of the first hack, I never really got around to it. About the time that I did (6/2003) I lost the ability to post to P6I. So I'd be willing to work, when I have tuits (I get them now and again). If there's a need and someone willing to coach... __ Do you Yahoo!? The all-new My Yahoo! - Get yours free! http://my.yahoo.com
Parrot BASIC
Clinton, William Coleda has updated Parrot BASIC enough to get wumpus and screen working, albeit not entirely cleanly. In IRC, it was mentioned by Dan that we should be automating some BASIC tests as part of the test suite. We were wondering what your thoughts on it were and if you plan on continuing maintenance? And just to be clear for those reading at homejust because I am asking doesn't mean I am volunteering. Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? The all-new My Yahoo! - Get yours free! http://my.yahoo.com
Intermittently Failing Benchmarks
All: In collecting the historical data for the benchmark statistics and graphs, I discovered that there were a few days where I had to play the CVS time game to get a working parrot for that day. I expected this. What I have found interesting though is when individual benchmarks don't work. For instance, from 10/20 to 10/22, gc_generations and gc_header_reuse would just hange (still running after 10 minutes). Last night (11/3 at 23:59) addit2.imc is doing the same thing. I checked a up to the minute checkout and it is finishing now - but there is no printed output. So I have 2 questions: 1. Would people prefer missing data for benchmarks where they won't work or a manually entered high number to draw attention to them? 2. Should we be checking that the output of the benchmarks (right or wrong) is consistent? Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com
Re: Performance Statistics (and Graphs!)
At 11:08 PM -0800 11/2/04, Jeff Clites wrote: On Nov 2, 2004, at 7:10 PM, Matt Diephouse wrote: Joshua Gatcomb and I have been working a little under a week to set up an automated build system for parrot that tracks performance (with help from Dan's box). We have collected benchmark data for regular and optimized builds with and without JIT from June 1st through October. With some help from Perl and GD, we've up several pages of graphs: http://www.sidhe.org/~timeparrot/graphs/ Both the build process and the creation of the graphs will (hopefully) be run daily (automated). There are plans to do some other things with the data as well (some notification scripts). Very cool. A useful thing to do would be to preserve all of the builds, so that newly-created benchmarks could be back-filled. (That way, if we realize that we've not been effectively testing something, we can devise an appropriate benchmark, and evaluate the consequences of past design changes against it.) Actually, we already thought of that. We were thinking more along the lines of people wanting to check other run-time cores (such as computed goto). To save on disk space, the executables are stripped and bzip2'd, but we can go back easily to any previous point in the 5 month window if we want. Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com
Solicitation of Ideas for Performance Statistics and Graphs
All: Matt Diephouse and I spent the majority of our time coming up with a flexible design and gathering historical statistics. We didn't spend a lot of time in how to present the data since everybody has their own opinion (including us). What we would like to do is determine if what we have done so far is sufficient or, if not, what specifically people would like to see. Some of our unimplemented ideas so far are: 1. Include the computed goto core 2. Summary of results over N week(s)/month(s) 3. Provide user form for dynamic results If people would like this, they also need to indicate what the form should provide: (benchmark name, date, executable, etc) 4. Provide HTML table of data for some/all of graphs 5. Provide links for people to work locally A. A db schema/structure dump so people can collect statistics on other architectures B. Source code C. daily db dump If you would like to see any of these ideas implemented, or you have some of your own - please respond to this on the list. While Matt and I are likely to do some of the work, we are always open to volunteers as well. In fact, if this idea generates a lot of buzz, we may cross post to other Perl forums such as PerlMonks (http://www.perlmonks.org). This is a perfect way for non C programmers and those who have no knowledge of Parrot to still contribute in a meaningful way. Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: Install-Problem
--- Alberto Manuel Brandão Simões [EMAIL PROTECTED] wrote: Not stoping.. just compiling the computed-gotos C file. It take s alot of times, specially if you have a... old machine ;) There is some way to turn that off. Surelly someone will answer you soon with it :) pass the --cgoto=0 flag to Configure.pl. I also have RH 9.0 and would love someone to confirm that make testj will fail on 3 tests (unless you additionally pass it another flag). Interestingly enough - the same failure ocurrs on Cygwin. Kind regards, Alberto Cheers Joshua Gatcomb Limbic~Region __ Do you Yahoo!? Yahoo! Mail - You care about security. So do we. http://promotions.yahoo.com/new_mail
Re: ICU failure on RedHat
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: All tests pass normally, but I get 3 tests failing under JIT t/op/interp.t #7 t/pmc/coroutine.t #10 t/pmc/exception.t #19 ok, so I did investigate a little further. make testj works fine (all tests pass) if I don't pass the --optimize flag to Configure.pl. No problem here with --optimize and make testj. Yet another DeadRat problem? Ok - I have isolated things a bit more on a fresh checkout of about 20 minutes ago. 1. plain Configure.pl - make testj (all pass) 2. Configure.pl --optimize - make testj (3 fail) 3. Configure.pl --optimize --ccflags='fomit-frame-pointer' (all pass) And the JIT problems have nothing to do with why a system ICU breaks things entirely. I am going to upgrade gcc 3.2.2 to 3.4.2 to see if it makes a difference. leo Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Take Yahoo! Mail with you! Get it on your mobile phone. http://mobile.yahoo.com/maildemo
Re: ICU failure on RedHat
--- Andy Dougherty [EMAIL PROTECTED] wrote: ICU libs are in /usr/local/lib /usr/local/lib is in my path Which path? Do you mean LD_LIBRARY_PATH or do you mean PATH? PATH is irrelevant. That's the set of directories used by /bin/sh (or equivalent) to find executable programs. I know that. You know that. Cygwin doesn't know that. It was one of the many oddities I found when working with Cygwin. Unfortunately, after working with it for a year, I had re-programmed my brain. This looks to me like a LD_LIBRARY_PATH issue. One simple fix is to set the environment variable LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH (in Bourne shell syntax). Does that help? This indeed corrects this problem. Andy Dougherty[EMAIL PROTECTED] Salamat! Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Re: ICU failure on RedHat
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: 1. Transfer ICU 3.0 and build from source 2. Do a fresh CVS checkout of parrot, transfer and build $ perl Configure.pl --optimize configure all goes well $ make all goes well until parrot is linked c++ -o parrot -L/usr/local/lib -Wl,-E -g imcc/main.o blibl/lib/libparrot.a -lnsl -ldl -lm -lpthread -lcrypt -lutil -lrt -lgmp -lpthread -lm -L/usr/local/lib -licuuc -licudata -lpthread -lm ./parrot -o runtime/parrot/include/parrotlib.pbc runtime/parrot/library/parrotlib.imc ./parrot: error while loading shared libraries: libicuuc.so.30: cannot open shared object file: No such file or directory make: *** [runtime/parrot/include/parrotlib.pbc] Error 127 Oddly enough, it works if I don't use a system ICU. All tests pass normally, but I get 3 tests failing under JIT t/op/interp.t #7 t/pmc/coroutine.t #10 t/pmc/exception.t #19 I haven't investigated further as I am still confused as to why a system ICU would fail. Cheers Joshua Gatcomb a.k.a. Limbic~Region
Re: ICU failure on RedHat
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: --- Joshua Gatcomb [EMAIL PROTECTED] wrote: 1. Transfer ICU 3.0 and build from source 2. Do a fresh CVS checkout of parrot, transfer and build $ perl Configure.pl --optimize configure all goes well $ make all goes well until parrot is linked c++ -o parrot -L/usr/local/lib -Wl,-E -g imcc/main.o blibl/lib/libparrot.a -lnsl -ldl -lm -lpthread -lcrypt -lutil -lrt -lgmp -lpthread -lm -L/usr/local/lib -licuuc -licudata -lpthread -lm ./parrot -o runtime/parrot/include/parrotlib.pbc runtime/parrot/library/parrotlib.imc ./parrot: error while loading shared libraries: libicuuc.so.30: cannot open shared object file: No such file or directory make: *** [runtime/parrot/include/parrotlib.pbc] Error 127 Oddly enough, it works if I don't use a system ICU. All tests pass normally, but I get 3 tests failing under JIT t/op/interp.t #7 t/pmc/coroutine.t #10 t/pmc/exception.t #19 ok, so I did investigate a little further. make testj works fine (all tests pass) if I don't pass the --optimize flag to Configure.pl. Cheers Joshua Gatcomb a.k.a. Limbic~Region
Re: ICU failure on RedHat
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: ok, so I did investigate a little further. make testj works fine (all tests pass) if I don't pass the --optimize flag to Configure.pl. Ok, so optimizations break things - why not add more. Interestingly, adding more aggressive options make it start working. --ccflags='-march=i686 -O3 -s -funroll-loops -fomit-frame-pointer' --debugging=0 everything works again (and is quite fast). My guess was -march=i686 In IRC Dan said it might be a faulty assumption on our part or on gcc's. The gcc that ships with RH9 was 3.2.2 fwiw Cheers Joshua Gatcomb a.k.a. Limbic~Region
Re: Perl 6 Summary for 2004-10-01 through 2004-10-17
--- Matt Fowles [EMAIL PROTECTED] wrote: Joshua Gatcomb accidentally introduced a dependency on Config::IniFiles. Since it is implemented in pure perl he offered to add it to the repository. Warnock applies. http://xrl.us/div3 In the note offering to fix it, I also listed numerous other scripts with non-core dependencies. Dan, in IRC, indicated that they all should have tickets on them. Before fixing parrotbench.pl with one of the following solutions: 1. inline Config::IniFiles with the author's permission 2. Use some other core module if possible 3. Roll my own 4. Revert back to previous non-module version I want to find out what the general guidance is and try to be inline with that - warnock still applies = Threads on Cygwin Joshua Gatcomb discovered some trouble with threads on Cygwin. It seems that there are problems with both the thread implementation, and the tests not be generous enough if accepting out of order input. Still unresolved, I think. http://xrl.us/div5 The threading issue is resolved by upgrading cygwin1.dll (see PLATFORMS). The test output being controlled using sleep statements instead of using regexes is still unresolved. = Cygwin bugs Joshua Gatacomb has been fighting with Cygwin getting Parrot to work. Apparently we trip a few of its bugs. Read more if you like. http://xrl.us/diwz http://xrl.us/diw2 http://xrl.us/diw3 Gatacomb ne Gatcomb. That is what my drill sergeant in the Army used to call me though ;-) There are plenty of Cygwin issues but I have swatted everyone I have discovered so far. That being said - I am going to be giving mingw a go and leaving Cygwin alone for a while. == Perl 6 Summaries Piers raised the white flag after several years as a wonderful summarizer. Having now just finished my first summary Thank you for stepping up to the plate - good job Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: [perl #31910] ICU bug with fresh CVS Checkout
--- Jens Rieks [EMAIL PROTECTED] wrote: c++ -o parrot -L/usr/local/lib -g imcc/main.o blib/lib/libparrot.a -lm -lpthread -lm -L/usr/local/lib -licuuc -lpthread -lm ld: warning can't open dynamic library: libicudata.dylib.30 (checking for undefined symbols may be affected) (No such file or directory, errno = 2) ld: Undefined symbols: _icudt30_dat referenced from libicuuc.dylib.30 expected to be defined in libicudata.dylib.30 make: *** [parrot] Error 1 does c++ -o parrot -L/usr/local/lib -g imcc/main.o blib/lib/libparrot.a -lm -lpthread -lm -L/usr/local/lib -licuuc -licudata -lpthread -lm work? My bet is that it will. It looks like the same bug I reported right after auto-detecting a system ICU went in. My solution was to just continue telling it about my system ICU and not let it try to figure it out. perl Configure.pl --icuheaders=/usr/local/include --icushared='-L/usr/local/lib -lcygicuuc -lcygicudt' jens Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Take Yahoo! Mail with you! Get it on your mobile phone. http://mobile.yahoo.com/maildemo
Re: Update to Cygwin fixed the weird math JIT bugs
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Can you provide a summary line (or two) for PLATFORMS which Cygwin is doing what. I know you only asked for 1 or two lines but I wanted to give some context as I think it is important: The following applies to cygwin-1.5.11-1 running on Win2K/XP B8 flags: CGOTO:Y JIT: Y EXEC: N Threads: Y* Signals: Y** Compiles: Y Tests:Y*** Date: 20041006 * You need to enable the threading tests by adding cygwin to t/pmc/threads.t though a handful of tests will fail due to an outstanding IO issue likely caused by Cygwin ** You need to enable the signal tests by adding cygwin to t/pmc/signals.t *** The only failing tests are if you enable the threading tests as annotated above leo I used to have Win ME to test but no longer so I don't know what 9x/ME would turn up Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Another Update to threads/IO problem on Cygwin
I happened to have found the last cygwin1.dll lying around in /tmp that I kept as a backup. I swapped it with the current cygwin1.dll just to see if it would make the IO problem go away and much to my happy surprise - it did. Details: cygwin1.dll-1.5.10-3 - previous stable build, works great cygwin1.dll-1.5.11-1 - current stable build, blows up I will be pinging the Cygwin list momentarily to see if they have any insight. Cheers Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Re: Another Update to threads/IO problem on Cygwin
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: I happened to have found the last cygwin1.dll lying around in /tmp that I kept as a backup. I swapped it with the current cygwin1.dll just to see if it would make the IO problem go away and much to my happy surprise - it did. Details: cygwin1.dll-1.5.10-3 - previous stable build, works great cygwin1.dll-1.5.11-1 - current stable build, blows up I will be pinging the Cygwin list momentarily to see if they have any insight. I didn't get a response from the Cygwin list, but I asked one of the Cygwin knowledgeable monks at the Monastery (http://www.perlmonks.org). They indicated there was a major problem with 1.5.11-1 with threads losing output (my problem exactly) and that it was corrected with one of the latest snapshots (http://cygwin.com/snapshots/). I downloaded it and tried it - everything is working great. make test - all tests pass make testj - all tests pass Both work even with some aggressive optimizations passed to Configure.pl All is once again right in the world ;-) Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: Update to Cygwin fixed the weird math JIT bugs
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: Threads: Y* Tests:Y*** * You need to enable the threading tests by adding cygwin to t/pmc/threads.t though a handful of tests will fail due to an outstanding IO issue likely caused by Cygwin *** The only failing tests are if you enable the threading tests as annotated above If you update cygwin1.dll from http://cygwin.com/snapshots/ all tests pass Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Update to Threads/IO issue on Cygwin
Since all the tests were passing in the past, I decided to play the CVS game to find exactly when/what changed. Good news is - nothing to do with Parrot Bad news is - it means it was an upgrade to Cygwin, which I also do on a daily basis. I have no way of tracking down what changed but I could ping the Cygwin list if anyone thinks it might help. Cheers, Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Update to Cygwin fixed the weird math JIT bugs
While it has introduced a new IO bug that is failing a handful of threads tests, it also appears to have fixed a different bug where some of the trigonomic functions would blow up under JIT. Cheers, Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Re: Towards 0.1.1 - timetable
--- Leopold Toetsch [EMAIL PROTECTED] wrote: - nice release name wanted Poicephalus Overall temperament: As a whole have an endearing quality. They have the potential to be very good, well socialized. They are not noisy and raucous nor do they scream for attention. They are able to speak with large vocabularies. Their voice is somewhat computerized, yet very understandable. For the most part they are affectionate and enjoy being cuddled and scratched. They are active birds and need a variety of toys for entertainment. They need interacting time with their keeper on a regular basis. leo Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: Threads on Cygwin
--- Jens Rieks [EMAIL PROTECTED] wrote: On Saturday 02 October 2004 12:49, Leopold Toetsch wrote: Does this patch help? No, it makes things worse: Actually it doesn't. There is something wrong with threads_6.pasm as my output for the test doesn't change with or without the patch and yet one passes and the other doesn't. Judging from the actual code it is supposed to print done in there somewhere and it doesn't. Test 6 is one of the few that has a regex for checking output : /(done\nthread\n)|(thread\ndone\n)/ So I am rather confused as to why it is passing without the patch since it only ever prints thread jens Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail - 50x more storage than other providers! http://promotions.yahoo.com/new_mail
Re: Threads on Cygwin
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: ... only 1 of the two messages is displayed I've fixed a flaw in the IO flush code. Please try again, thanks. Still not working, but thanks! The behavior has changed a bit though. Here is the behavior prior to the fix - notice the location of the sleep statement Case 1: (as checked out) $ cat t/pmc/threads_2.pasm snipped set I3, 1 invoke # start the thread sleep 1 print main print I5 $ ./parrot t/pmc/threads_2.pasm thread 1 Case 2: (remove sleep all together) $ ./parrot t/pmc/threads_2.pasm main 10 thread 1 Case 3: $ cat t/pmc/threads_2.pasm snipped invoke # start the thread print main sleep 1 print I5 $ ./parrot t/pmc/threads_2.pasm main 10 After the change - case 3 now prints thread 1. You mentioned in the previous email that you were interested in knowing if this was Windows IO or the Cygwin variant. I would love to give you that information, but color me clueless. leo Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Re: [perl #31785] [BUG] non-standard Perl module dependency
--- Leopold Toetsch [EMAIL PROTECTED] wrote: # New Ticket Created by Leopold Toetsch # Please include the string: [perl #31785] # in the subject line of all future correspondence about this issue. # URL: http://rt.perl.org:80/rt3/Ticket/Display.html?id=31785 $ perl tools/dev/parrotbench.pl Can't locate Config/IniFiles.pm in @INC (... I am responsible for this and am sorry. I plead ignorance. The only restriction I was aware of was version of Perl and Config::IniFiles requires 5.004 which I was informed was acceptable when I asked #parrot. In fact, I remember searching to see if there were other non-core modules being used as a precedent, which there were. Here are some others that may need tickets as well: ModuleScript C::Scan tools/dev/run_indent.pl Digest::Perl::MD5 build_tools/fingerprint_c.pl Digest::Perl::MD5 tools/dev/pbc_header.pl Parse::RecDescent various language directories YAML various language directories Regexp::Common tools/dev/extract_file_descriptions.pl Storable examples/benchmarks/freeze.pl (not in core until 5.007) Text::Balancedbuild_tools/c2str.pl (not in core until 5.007) Time::HiRes examples/benchmarks/freeze.pl (not in core until 5.007) leo Since Config::IniFiles is pure perl, I could easily copy/paste the module (with due credit given) if that is the approach we want to take. I could write my own parsing code if that would be more desired. We could revert back to the previous version which did not have the requirement. Just let me know Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Declare Yourself - Register online to vote today! http://vote.yahoo.com
Re: Threads on Cygwin
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: After the change - case 3 now prints thread 1. Strange. indeed You mentioned in the previous email that you were interested in knowing if this was Windows IO or the Cygwin variant. I would love to give you that information, but color me clueless. S/Cygwin/unix/ Have a look at the defines in include/parrot/io.h. It's not quite visible which one is active w/o debugger, but you could insert some print statements in io/io.c:PIO_init_stacks(), where there are explicit cases for PIO_OS_*. s/S/s/ PIO_OS_UNIX is the one defined and now parrot squawks Polly wanna Unix everytime I run it ;-) Now what? Joshua Gatcomb leo Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - Send 10MB messages! http://promotions.yahoo.com/new_mail
Re: Threads on Cygwin
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: I had submitted a patch some time ago that never got applied enabling tests for threads, timer, and extend_13. Overlooked? Please rediff and resend. I will do - likely tomorrow. It says at the bottom that the output could appear in reversed order and so I am guessing the sleep statement is to ensure that it comes out in the proper order. The sleep is of course a hack only and wrong. The real thing todo is to convert the test result into a regexp that allows both orderings. I agree, but that doesn't explain why only 1 of the two messages is displayed to the screen when the sleep statement is present. I don't want to brush a bug under the rug. If one thread finishes before the other thread gets to a print statement, the print does not appear on the screen at all. leo Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail - 50x more storage than other providers! http://promotions.yahoo.com/new_mail
Re: System ICU
--- Jens Rieks [EMAIL PROTECTED] wrote: Hi all, Configure.pl should now detect a system ICU installation. It uses the icu-config script to gather the neccessary information. If icu-config is not in your path, you can use the --icu-config=/path/to/icu-config configure option. You do not need to specifiy any other ICU related options in this case. This broke for me: c++ -o parrot.exe -s -L/usr/local/lib imcc/main.o blib/lib/libparrot.a -lcrypt -lgmp -lpthread -lm -L/usr/local/lib -licui18n -licuuc -licudata -lpthread -lm /usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i686-pc-cygwin/bin/ld: cannot find -licui18n I would propose that if Configure.pl does see any other icu config flags that it not attempt to auto configure. You can use --icu-config=none if you want do disable the autodetect feature. That's what I am doing for now jens Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail - 50x more storage than other providers! http://promotions.yahoo.com/new_mail
Re: System ICU
--- Jens Rieks [EMAIL PROTECTED] wrote: On Wednesday 29 September 2004 18:40, Joshua Gatcomb wrote: cannot find -licui18n I am not sure, is this library used by parrot? I have no idea - first I have seen it other than when I built ICU many moons ago. I would propose that if Configure.pl does see any other icu config flags that it not attempt to auto configure. Done. Thank you for your proposal! Thanks/Welcome jens Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail
Threads on Cygwin
Up until a couple of weeks ago, all the threads tests were passing on Cygwin. I had submitted a patch some time ago that never got applied enabling tests for threads, timer, and extend_13 that never got applied. I figured there was good reason so I didn't say anything about the tests failing except an occasional that's weird on #parrot. So today I decide to look at threads_2.pasm It says at the bottom that the output could appear in reversed order and so I am guessing the sleep statement is to ensure that it comes out in the proper order. So - why is the test failing? Because the second print statement never makes it to the screen. If I remove the print statement entirely, I see both things in the reverse expected order. If I place the sleep statement after the main thread print then all I get to the screen is the that and not the print statement from thread 1 It is almost as if by the time the time the second print happens, the filehandle is already closed So - since threads aren't officially supposed to be working on Cygwin - is this something I should care about or not? Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail - 50x more storage than other providers! http://promotions.yahoo.com/new_mail
Re: Threads on Cygwin
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: Up until a couple of weeks ago, all the threads tests were passing on Cygwin. I had submitted a patch some time ago that never got applied enabling tests for threads, timer, and extend_13 that never got applied. I figured there was good reason so I didn't say anything about the tests failing except an occasional that's weird on #parrot. So today I decide to look at threads_2.pasm It says at the bottom that the output could appear in reversed order and so I am guessing the sleep statement is to ensure that it comes out in the proper order. So - why is the test failing? Because the second print statement never makes it to the screen. If I remove the print statement entirely, I see both things in the reverse expected order. If I place the sleep statement after the main thread print then all I get to the screen is the that and not the print statement from thread 1 It is almost as if by the time the time the second print happens, the filehandle is already closed So - since threads aren't officially supposed to be working on Cygwin - is this something I should care about or not? Cheers Joshua Gatcomb a.k.a. Limbic~Region In summary, all code in all threads runs to completion but whichever thread finishes last can't print to the screen $ perl t/harness --gc-debug --running-make-test -b t/pmc/threads.t Failed 7/11 tests, 36.36% okay (less 2 skipped tests: 2 okay, 18.18%) Failed Test Stat Wstat Total Fail Failed List of Failed --- t/pmc/threads.t7 1792117 63.64% 2-3 5-9 2 subtests skipped. Failed 1/1 test scripts, 0.00% okay. 7/11 subtests failed, 36.36% okay. __ Do you Yahoo!? Read only the mail you want - Yahoo! Mail SpamGuard. http://promotions.yahoo.com/new_mail
Parrot 0.1.0 still?
We haven't had a new release since Feb 29th. From what I have seen from the various on-line forums, newcomers aren't aware of the progress since then. The latest round of discussion appears to have resulted in the following guidelines from our fearless leader: 1. Divorce internals from interface. 2. Add what's missing. 3. Fix what's broke. 4. Delay optimizing working code in favor of 2 3. Since the usual purpose of a point release is to have features finished and bugs squashed, it may be a good time for another release. What say you? Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail
Re: NCI test 2 failing - but I know why
--- Bernhard Schmalhofer [EMAIL PROTECTED] wrote: Printing a initialised ParrotLibrary currently gives you the '_filename' property. This is highly platform dependent, and therefore hard to test. I could rewrite the test and check only, that the stringified ParrotLibrary contains the substring 'nci'. My guess is, that this should work on all platforms so far. CU, Bernhard Well, I seem to be the only one noticing it and the good thing is that it is the test itself, and not what is being tested that is b0rk. I would think portability is a good thing but don't go changing things on my account yet. When I get the time, I will investigate. Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - Send 10MB messages! http://promotions.yahoo.com/new_mail
Re: NCI Tests Failing
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb wrote: This might help shed some light: $ cd t/pmc $ parrot nci_1.pasm Not really. bash: parrot: command not found ;) You got an old parrot around somewhere in the path? No - believe it or not I only ever keep 1 version of parrot around at one time. It is a PITA when trying to experiment, but it makes accidents less likely - for me at least. Since I know when it stopped working (sometime between Friday afternoon and Monday morning), I am backtracking in CVS to find the exact change. leo Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - Send 10MB messages! http://promotions.yahoo.com/new_mail
Re: NCI Tests Failing
--- Dan Sugalski [EMAIL PROTECTED] wrote: I can trigger the problem locally, though not with the nci tests. (And, indeed, it may not be the NCI tests ultimately at fault) The core dump shows things dying in the dod run. GDB's backtrace is: Dan Ok, I tracked it down to a CVS change of include/parrot/dynext.h and src/dynext.c made in the early morning hours on Monday (local time). Here is the result of the diff: $ diff include/parrot/dynext.h ../bad/dynext.h 3c3 * $Id: dynext.h,v 1.5 2004/04/22 08:55:05 leo Exp $ --- * $Id: dynext.h,v 1.6 2004/08/23 09:09:59 leo Exp $ 14a15,20 /* dynamic lib/oplib/PMC init */ PMC * Parrot_init_lib(Interp *interpreter, PMC *(*load_func)(Interp *), void (*init_func)(Interp *, PMC *)); and $ diff src/dynext.c ../bad/dynext.c 3c3 $Id: dynext.c,v 1.26 2004/05/26 13:04:07 jrieks Exp $ --- $Id: dynext.c,v 1.27 2004/08/23 09:10:02 leo Exp $ 228a229,263 Parrot_init_lib(Interp *interpreter, PMC *(*load_func)(Interp *), void (*init_func)(Interp *, PMC *)) { STRING *type; PMC *lib_pmc; if (!load_func) { /* seems to be a native/NCI lib */ /* * this PMC should better be constant, but then all the contents * and the metadata have to be constant too * s. also build_tools/ops2c.pl and lib/Parrot/Pmc2c.pm */ lib_pmc = pmc_new(interpreter, enum_class_ParrotLibrary); type = const_string(interpreter, NCI); } else { lib_pmc = (*load_func)(interpreter); /* we could set a private flag in the PMC header too * but currently only ops files have struct_val set */ type = const_string(interpreter, PMC_struct_val(lib_pmc) ? Ops : PMC); } /* * call init, if it exists */ if (init_func) (init_func)(interpreter, lib_pmc); return lib_pmc; } PMC * 266a302 /* get load_func */ 272,292c308 if (!load_func) { /* seems to be a native/NCI lib */ /* * this PMC should better be constant, but then all the contents * and the metadata have to be constant too * s. also build_tools/ops2c.pl and lib/Parrot/Pmc2c.pm */ lib_pmc = pmc_new(interpreter, enum_class_ParrotLibrary); type = const_string(interpreter, NCI); } else { lib_pmc = (*load_func)(interpreter); /* we could set a private flag in the PMC header too * but currently only ops files have struct_val set */ type = const_string(interpreter, PMC_struct_val(lib_pmc) ? Ops : PMC); } /* * call init, if it exists */ --- /* get init_func */ 298,299c314,316 if (init_func) (init_func)(interpreter, lib_pmc); --- lib_pmc = Parrot_init_lib(interpreter, load_func, init_func); If there is anything else I can do to help, please let me know. Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage! http://promotions.yahoo.com/new_mail
Re: [perl #31302] NCI GC issues
--- Leopold Toetsch [EMAIL PROTECTED] wrote: I think I could track it down. It wasn't strictly NCI related, though. I guess you didn't need me to track down the CVS changes as this fixed the problem - THANKS. Cheers Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush
Re: Benchmark Stuff
--- Jerome Quelin [EMAIL PROTECTED] wrote: - I'm deleting, recreating and repopulating the rrd files each time, but this way I'm free regarding Joshua's way of parsing I am not exactly happy with it myself. I wanted to get something out there so people could comment on it. The first comment was to try and use parrotbench.pl instead, so I am doing that. I have quite a few changes planned which should make the data more useable for general purposes. Anyway, it works. Now, I'm a bit concerned about the frequency: is once a week is enough? Joshua, I don't know if that's possible to run benchmarks once a day? When I first brought this up in IRC, Dan said if I came up with something to through the stuff into a database, he would volunteer to set up the automation of it. The web page was an afterthought. I can't promise everyday because I do this from a work machine that I don't have permission to schedule jobs for, but I can say every day I am at work I can do this. If you can / think it's ok, then I'll update the script to use new values for rrd creation. Additionaly, maybe later it would be better to just drop the sqlite database and ue rrd directly? I still have a few ideas for improving parrotbench.pl. When I am done with those, I will confer with you on getting the storage format worked out. Regards, Jerome -- [EMAIL PROTECTED] Cheers Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush
NCI Tests Failing
When I came in to work on Monday, there were NCI tests failing - a lot of them. I asked around in IRC and it sounded like other people were having problems too, so I figured I would wait around because people, to include Dan, were looking into it. I haven't heard any recent grumbling so I am wondering if I am the only one with failing tests now: Failed Test Stat Wstat Total Fail Failed List of Failed --- t/pmc/nci.t28 716835 28 80.00% 1-27 34 t/pmc/perlhash.t1 256361 2.78% 20 2 tests and 53 subtests skipped. Failed 2/120 test scripts, 98.33% okay. 29/1828 subtests failed, 98.41% okay. make: *** [test] Error 14 Not that you need to ask, but Cygwin ;-) Cheers Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush
Re: NCI Tests Failing
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: t/pmc/nci.t28 716835 28 80.00% 1-27 strange. t/pmc/perlhash.t1 256361 2.78% 20 Only that one is supposed to fail. leo This might help shed some light: $ cd t/pmc $ parrot nci_1.pasm loaded dlfunced ok 1 ok 2 $ parrot --gc-debug nci_1.pasm Segmentation fault (core dumped) $ parrot --gc-debug nci_28.pasm ok 1 ok 2 in callback user data: 42 external data: succeeded done. Though it might also make things more confusing... Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush
Re: parrotbench.pl - massive update (smaller update)
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: Enhancements: 1. Should be platform independent now 2. Much greater control using ini configuration 3. Output is pretty 4. Lots of bugs squashed (probably more introduced) I found a few and have erradicated them. I also added some new functionality. You can now switch between CPU time and real (wall-clock) time. This was actually pretty easy though I have to give credit to fizbin from the Monastery: require POSIX; my $ticks = POSIX::sysconf( POSIX::_SC_CLK_TCK ); my $then = Get_Time(); select(undef, undef, undef, 0.25); print Get_Time() - $then; sub Get_Time { return ( POSIX::times() )[0] / $clock_ticks; } I thought I was done fiddling with it yesterday, but I am really done now - maybe. I am going to move on to updating the benchit.pl and webit.pl scripts to give a prettier output as was requested and potentially see about changing the storage method. Joshua Gatcomb a.k.a. Limbic~Region __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com parrotbench.gat Description: parrotbench.gat
parrotbench.pl - massive update
I hadn't really expected Leo to check in my modifications to parrotbench.pl. I took the time today to give it a proper overhaul/re-write, so please try it out. If after a few days no one grumbles, I will ask for it to be checked in. Enhancements: 1. Should be platform independent now 2. Much greater control using ini configuration 3. Output is pretty 4. Lots of bugs squashed (probably more introduced) 5. POD updated 6. Multiple regexes allowed for benchmarks to be run 7. Multiple regexes allowed for benchmarks to be skipped 8. Probably some stuff I am forgetting Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush parrotbench.gat Description: parrotbench.gat
Re: Benchmark Stuff
--- Sebastian Riedel [EMAIL PROTECTED] wrote: Take a look at tools/dev/parrotbench.pl It already does most of the things you want, you just have to parse it's output and feed it to your database. Cheers, Sebastian parrotbench.pl didn't correctly handle hyphens in names (it was using \w char class) - fixed parrotbench.pl doesn't properly handle foo.pasm and foo.imc, it quietly discards one parrotbench.pl only provided a single regex for you to specify which benchmarks to run. This made it difficult to say, run all but x. I added a skip benchmarks that match regex support. I also modified the regex to parse the configuration file (death to .*). Unfortunately, I also added some stuff that really doesn't need to be there to make my life easier. Here is the modified parrotbench script along with the new data collection script and the script to make it into a web page. I don't know what kind of layout/data would be useful to people so let me know if you want something else. I will update every Tuesday morning. Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail is new and improved - Check it out! http://promotions.yahoo.com/new_mail parrotbench.gat Description: parrotbench.gat benchit.pl Description: benchit.pl webit.pl Description: webit.pl
Re: Benchmark Stuff
--- Joshua Gatcomb [EMAIL PROTECTED] wrote: Here is the modified parrotbench script along with the new data collection script and the script to make it into a web page. I don't know what kind of layout/data would be useful to people so let me know if you want something else. I will update every Tuesday morning. I guess it helps if I share the web page to look at: http://perlmonk.org/~limbicregion/parrot_bench.html Cheers Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Express yourself with Y! Messenger! Free. Download now. http://messenger.yahoo.com
Benchmark Stuff
I recently noticed that the benchmarks in examples/benchmarks was running significantly slower. I update Cygwin and Parrot daily - so there have been a lot of changes to account for. I idly asked on IRC if anyone was regularly tracking benchmark performance because I was feeling lazy. Dan said not that he was aware of but if I was willing to whip something up in Perl he would be more than happy to do so on a regular basis. Well, I can't get Pg working on Cygwin anymore (should have regression tests everytime I update) so after messing with it for an hour I decided to use SQLite. I also couldn't get File::Basename to work correctly so I gave up and rolled my own regex. Since at this point it was no longer portable I just threw caution to the wind and coded it *nix centric. It assumes the parrot executable is in your $PATH env It assumes it is being run from examples/benchmark It is also a very quick hack because I was on my lunch break. Enjoy Joshua Gatcomb a.k.a. Limbic~Region ___ Do you Yahoo!? Win 1 of 4,000 free domain names from Yahoo! Enter now. http://promotions.yahoo.com/goldrush benchmark Description: benchmark
Unicode Support - ICU Optional
All: After speaking with Dan in #parrot last night, I either had originally misunderstood his position or he has changed it (paraphrased): We will ship Parrot with unicode support, but:. A. The unicode support does not necessarily need to be limited to a single library or ICU specifically. B. Just because CVS will have unicode support, does not mean the user will be forced to use it. C. Configure should detect a system unicode library and do the right thing in choosing which one it uses. So, we really need to decide what we want to do about unicode support. We are stuck with ICU unless someone steps up to the plate to implement an alternative. If we implement an alternative, I don't necessarily feel we should drop ICU support. It just means that the unicode support in CVS would not be ICU. Configure would notice supported system unicode libraries and do the right thing. Providing an alternative to ICU may: 1. Eliminate the need for C++ 2. Reduce the size of CVS 3. Make building on most platforms easier WRT improving the ease of use of ICU. My suggestion is that a representative from each platform that Parrot is currently being built on download the latest stable version of ICU source, build it, and note anything special they needed to do to get it working. Those things should make putting a newer version into CVS a realistic possibility. I am volunteering for Cygwin (yeah I know - big surprise there). Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail
Re: ICU Outdated - Ideas
--- Dan Sugalski [EMAIL PROTECTED] wrote: ... and therefore ICU will continue to stay in CVS as part of parrot. Period. The alternative here is the same alternative as with GMP and big numbers--we can yank ICU *if* someone writes an alternate Unicode implementation for us. -- Dan The following comments aren't directed at you Dan, just my personal opinion on ICU. ICU is giving Parrot a black eye. The ICU we have in CVS right now is really old and broken. We are shipping a bare bones version of ICU that doesn't build very easily anywhere. I don't want to sound like I am complaining without offering to help out with the work. I just didn't want to take the initiative without direction and have it be an excersise in futility - that's why I made multiple suggestions. Ok - so which way do we go? A. Leave it as is B. Upgrade to a bare bones 3.0 C. Upgrade to a full version of 3.0 D. Improve the config/gen/icu.pl with any of the previous options E. Something else entirely? Joshua Gatcomb a.k.a. Gat (240) 568-5675 __ Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage! http://promotions.yahoo.com/new_mail
Re: ICU Outdated - Ideas
--- Leopold Toetsch [EMAIL PROTECTED] wrote: Joshua Gatcomb [EMAIL PROTECTED] wrote: All: The ICU that is bundled with Parrot is old. George Rhoten, an ICU developer, has suggested we start shipping version 3.0 because: B. Make ICU optional. Yes. And I'll vote for just tossing icu/* from Parrot CVS. If one wants to build Parrot with ICU he can download either the source or a pre-built package and use that. I don't see the point, why we have that code in CVS. For some reason (likely because it was friday), what I was thinking in my head was not what was coming out on the screen in front of me. The make ICU optional was supposed to read make ICU like GMP - autodetect it if present, but do not force it upon the user. leo Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage! http://promotions.yahoo.com/new_mail
ICU Outdated - Ideas
All: The ICU that is bundled with Parrot is old. Normally that wouldn't be a problem if you didn't require all the features and bug fixes with a newer version, but we are still having problems with ICU and are even supplying patches for it. I went through a personal nightmare of getting it to work on Cygwin and others went through their own trials and tribulations to get it to work for them. Options were added to allow linking against a system ICU, but is this the sore thumb we really want to have people giving Parrot a first look to encounter? George Rhoten, an ICU developer, has suggested we start shipping version 3.0 because: It contains a lot of fixes and additional features to improve such things as building on Cygwin, building with the Intel compiler, quicker building of the data library, additional platforms for building ICU and a lot of other helpful fixes. The trouble is someone has to volunteer to make it work. If we are going to go through that trouble, maybe we should consider other alternatives: A. Bundling the whole thing instead of just the pieces Parrot is going to use. This, in theory, should make upgrading ICU easier in the future. B. Make ICU optional. I know this has been discussed at it takes work. If people don't want Unicode support it shouldn't be forced on them, but if they do want it should they be forced to download an external library or should we provide it. I think since we already support linking to a system ICU we do that. C. Have someone volunteer to strip stuff out of the 3.0 version and start bundling that. There are likely other options but as George pointed out - we appear to be spending an awful lot of effort making the old ICU work when upgrading would solve all our problems (my words not his). Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail
Call To Cygwin Users Everywhere
If you have read any of my previous posts concerning Cygwin - you will agree that it appears to be a strange beast. The problem is that outside of teaching myself Perl a couple of years ago - I don't have any real experience in this arena. I have no idea if things are really this bizarre or if I am just a bumbling idiot. It would be really nice if someone out there could confirm my wife's suspicions (bumbling idiot). Here are some things in no particular order that would be nice to be confirmed: 1. To get ICU to work A: link = 'c++' in config/init/hints/cygwin.pl B: Ensure that the ICU .dlls are executable C: Ensure that the ICU .dlls are in $PATH D: If using ICU 2.8, needs shared not static in config/gen/icu.pl E: You may need to download msvcr70.dll and follow steps B and C if you are using a pre-built copy F: In general, if you get a Unable to remap error about some .dll, then you will need to run the Cygwin rebaseall utility. 2. The following tests fail under JIT for no apparent reason A. t/op/trans_9-12 t/op/trans_17-18 3. Enabling these tests works but are being skipped - I supplied a patch in bug report #29836 A. Extend 12 B. All threads C. All timer (except the two being universally skipped : 2004-05-24) 4. As outlined in bug report #29936, JIT debugging intermittently doesn't work. I have not followed this up since 2004-05-24 and it may no longer be applicable. The odd thing was I could never isolate what ingredient would cause the failure. 5. -mno-accumulate-outgoing-args is NOT required to make JIT work properly. For a few days this was needed but as of 2004-07-22 it appears not to be. 6. If using compiler optimization flag -O2 or -O3 when configuring parrot to build t/op/number_7.pasm will fail I have isolated the test case to the following: abs N0, -1 end where abs N0, 1 end abs N0, 1.0 end abs N0, -1.0 end all work 7. perl Configure.pl --ccflags='-march=pentium4 -O3 -s -funroll-loops -fomit-frame-pointer' --debugging=0 --optimize --icushared='-licuuc -licudt' --icuheaders=/usr/local/include Obviously change your architecture and your ICU flags accordingly - but that makes parrot really fly ;-) Cheers Joshua Gatcomb a.k.a. L~R __ Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage! http://promotions.yahoo.com/new_mail
Re: Recent change causing JIT problems on Cygwin
--- Leopold Toetsch [EMAIL PROTECTED] wrote: If you are using gcc 3.0 or above, -mno-accumulate-outgoing-args must be set. This was not a requirement prior to the changes I outlined on the 16th. I was at gcc version 3.3.1 but I rebuilt 3.4.1 from source. Adding the compiler flag appears to have fixed the JITed problem (though the handful of math ops are still failing under Cygwin/JIT). so in summary: From 2004-07-16 until something changes, if you want to build on Cygwin with and have JIT work using gcc 3.0 or higher, add --ccflags=-mno-accumulate-outgoing-args Thanks Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Vote for the stars of Yahoo!'s next ad campaign! http://advision.webevents.yahoo.com/yahoo/votelifeengine/
Re: Recent change causing JIT problems on Cygwin
incidently - things are running much slower now using --optimize and -j -O2 so how much is much slower for primes2.pasm it was taking on average 2.15 real seconds and is now taking on average 2.9 Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? New and Improved Yahoo! Mail - 100MB free storage! http://promotions.yahoo.com/new_mail
Recent change causing JIT problems on Cygwin
As is part of my daily (to be read work day) routine, I do a make realclean, a fresh CVS checkout, rebuild parrot. This morning I was noticing 2 problems 1. object tests 40-45 were blowing up - thanks to Nicholas for pointing it out and Leo for fixing it 2. Almost everything but the most trivial JITed code was coredumping. I tracked it back to a change made between 2004-07-16 10:30 and 2004-07-16 11:00 unfortunately, I am not sure how CVS deals with timezones so that might be GMT or EST. In either case, the 3 files and versions that changed are listed below: P jit/i386/jit_emit.h * $Id: jit_emit.h,v 1.118 2004/07/16 14:35:43 leo Exp $ P src/exec.c $Id: exec.c,v 1.21 2004/07/16 14:35:47 leo Exp $ P src/interpreter.c $Id: interpreter.c,v 1.312 2004/07/16 14:35:47 leo Exp $ I am more interested in Leo helping Dan deliver a pie to Guido's face than I am seeing this problem fixed since I seem to be the only one regularly using Cygwin - so no rush - just figured I would point it out as soon as possible. I can also produce some JIT debugging if someone thinks that will help: Cheers Joshua Gatcomb a.k.a. Limbic~Region __ Do you Yahoo!? Yahoo! Mail Address AutoComplete - You start. We finish. http://promotions.yahoo.com/new_mail