6.2.7 released! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste: sial.org/pbot/perl6 Set by autrijus on 13 June 2005. |
|||
meppl | gute nacht - good night | 01:12 | |
svnbot6 | r4645, geoffb++ | Add pre-testing sanity tests: | 02:13 | |
r4645, geoffb++ | * New t/01-sanity/ directory (sorted to front by Test::Harness) | |||
r4645, geoffb++ | * Initial set of seven sanity test files, each building on the last | |||
r4645, geoffb++ | * Update pugs::hack with entry and description of t/01-sanity/ | |||
geoffb | Oops, 1 test in the sanity tests fails . . . figuring out why now | 02:21 | |
Ah, Test.pm trying to DWIM for incorrect values of 'I' | 02:37 | ||
svnbot6 | r4646, geoffb++ | t/01-sanity/06-use.t: attempt to work around Test.pm being too smart for our good | ||
geoffb | OK, the new tests pass prove, starting on multi-hour `make unoptimized && make test`. (I can't do normal make, because I lack sufficient swap space, bleah.) | 02:44 | |
afk for a while | |||
putter | Yipes. A 2 hour silence. | 04:26 | |
crysflame | calm after storm? | 04:27 | |
putter | ;) | ||
A quick note... | 04:28 | ||
I was hacking on ruby stuff today, and the following came to mind... | |||
multi method rubyish_delete(Ruby::Hash $h,$key) {$h.delete($k)} | |||
multi method rubyish_delete($h,$k) { my $v = $h{$k}; $h.delete($k) ?? [$k,$v] :: undef; # not quite } | 04:29 | ||
macroized_method delete($key) {rubyish_delete($?SELF,$key)} | |||
all in say, red_hashes.pm | |||
my %h=qw(2 20 3 30); | 04:30 | ||
%h.delete(2) #=> 20 | |||
use red_hashes; | |||
%h.delete(3) #=> [3,30] | |||
:) | |||
Insulates user dsl from object method namespaces. | |||
"duckted typing" | |||
If it looks like a feather bed, seen though a duct, it might really be a duck. | 04:31 | ||
mugwump sighs and wishes he didn't have unrealistic project deadlines to meet | 04:32 | ||
putter | mugwump: I've seen some *very* dilbertesqe projects in the last few months. yearish project, testing crunched to weeks, and deep system changes the weekend before release. shudder. | 04:35 | |
mugwump | My manager sounds just like "Lumberg" from Office Space (1999 movie) | 04:36 | |
putter has been meaning to see it... but hasnt yet. | |||
If anyone ends up interested in automated ruby to p6 conversion, let me know. I've a rb parse_unparse on a slightly mutant ripper. Starting to output p6. A grammar Ruby {} might be more useful... but this was easy. | 04:42 | ||
Someone needs to write a bison to rules convertion aid. | |||
Good night all. | 04:43 | ||
mr_ank | mugwump: we need you to go ahead and come on Saturday | 04:53 | |
04:58
khisanth_ is now known as Khisanth
|
|||
mugwump | that's come *in* on Saturday ;)... otherwise it's quite rude | 04:59 | |
mr_ank | mugwump: hehehehe | 05:06 | |
QtPlatypus | What is perl6 syntax for creating new metaoperators? Like >>...<< and [...] | 05:17 | |
? | |||
mugwump | in theory, multi sub infix_circumfix_meta_operator:<[]> | 05:19 | |
QtPlatypus | Thanks. | ||
mugwump | dev.perl.org/perl6/doc/design/apo/A...Categories | ||
I assume its prototype would be something like (List @a, List @b, ::(Code(Any $a, Any $b) returns Any)) | 05:22 | ||
QtPlatypus nods | 05:23 | ||
mugwump | If you're thinking of writing something like that, I'd suggest that you start by writing it with methods etc | ||
The Set module is an example of this - all the operations are methods as well as many being available as overloaded ops | |||
QtPlatypus | Thanks. | 05:24 | |
What verable would the op get mapped to? | 05:30 | ||
In your example for a prototype? | |||
mugwump | just use this prototype for now: | 05:31 | |
(List @a, List @b, Code $op) returns List | 05:32 | ||
maybe s/List/Array/g | |||
pasteling | "qtplatypus" at 202.7.69.25 pasted "metaop attempt" (7 lines, 216B) at sial.org/pbot/11043 | 05:37 | |
QtPlatypus | mugwump: Could you look at that and tell me if its sane? | 05:38 | |
mugwump | Hmm, metaoperators on Hashes, an interesting idea | 05:39 | |
if you want an intersection you can use Set; and then go set(%a.keys) * set(%b.keys) | |||
QtPlatypus | Thankyou. | ||
mugwump | or set(%a.keys).intersection(set(%b.keys)) | 05:40 | |
ie for set(%a.keys).intersection(set(%b.keys)).members -> $key { ... } | |||
mugwump wonders whether making a version of intersection that works like you wanted is a good idea | 05:41 | ||
autrijus | greetings Ī»camels | ||
mugwump | hi autrijus ! How's things in Ćsterreich? | 05:42 | |
QtPlatypus | It would be easy enought to write an intersection that is simply a wrapper over doing what you said mugwump | ||
mugwump | bah, encodings | ||
autrijus | mugwump: quite exciting | ||
just woke up | |||
mugwump | with the sunrise? what's wrong? | 05:43 | |
autrijus | got all the parrot mess cleaned to a point where I can reasonably target | ||
gaal | ?eval eval "look at the stacktrace", lang => "unknown" | ||
evalbot6 | Error: can't eval language unknown | ||
gaal | grrrr | ||
it says the error is in the prelude, | |||
and then in the *caller* | |||
mugwump | well, that sounds like a great development autrijus. | ||
gaal | but omits the place in the code where you actually called eval. | ||
probably some weird interaction with 'is primitive', no? | 05:44 | ||
autrijus | and even more importantly, chip is now writing daily journals :) | ||
QtPlatypus | Where at? | 05:45 | |
autrijus | hopefully he'll this habit | ||
hopefully he'll maintain this habit | |||
use.perl.org/~chip/journal/ | |||
mugwump | his most recent journal came across as excited, like he's just come across real HOP for the first time or something | ||
autrijus | mugwump: that is... the case. | ||
mugwump | so you're basically travelling the world breaking the impirical spell on all of us | 05:46 | |
jp-autark | autrijus: regarding the '\' in rx, was there a test for it somewhere? | ||
autrijus | jp-autark: t/rules/rx_perl5_escape.t | ||
jp-autark | thanks | 05:47 | |
autrijus | np... feel free to add to it | ||
mugwump | s/impirical/imperative/ :) | ||
autrijus | jp-autark++ # thanks for renicking to avoid the clash | ||
mugwump: well, I try, but yes | |||
jp-autark | np | ||
autrijus | basically just retelling the lambdahead's papers in a way that makes sense :) | 05:48 | |
for example this: pugscode.org/talks/apw/slide61k.html | 05:49 | ||
yesterday I got a mail from Ken Shan praising this single slide... that made my day | |||
(Ken's paper is responsible for me to understand call/cc, call/ec, shift/reset and whatnot.) | |||
mugwump | autrijus: I gave a talk at my local PM where the presentation was generated by a Perl6 script! :) | 05:55 | |
autrijus | I saw that | 05:56 | |
mugwump | I converted a talk that one speaker did on Perl 5 (wellington.pm.org/archive/200409/pe...ndex.html) to Perl 6 (wellington.pm.org/archive/200506/pe...tro/html/) | ||
autrijus | most cool! | ||
use mkpres--Perl5; | |||
that is _totally_ the way perl6 should be used | 05:57 | ||
geoffb | ping(chip) | 05:59 | |
autrijus | geoffb: chip is sleeping I think... they worked to midnight last night | ||
geoffb | OK, thanks. | 06:00 | |
Would you mind passing on the following when he awakes? | |||
autrijus notes he is in the channel | |||
so just type ahead and I'll tell him to backlog | |||
geoffb | "User type Ilya may not just have CPU-bound code, but also memory-bound code; this means he needs to be able to have stable, fast access to packed data streams" | 06:01 | |
nodnod | |||
:-) | |||
mugwump & # kungfu | 06:02 | ||
geoffb | *cough* 3D Rendering *cough* | ||
test run at 3 hours, 20+ minutes and currently at t/subroutines . . . I'm guessing 4-ish hours total | 06:06 | ||
but me, I'm headed for bed. | 06:08 | ||
see y'all when the sun is up on this side of the planet | |||
06:57
iheartcanada is now known as Canuckistan
|
|||
Alias_ | seen autrijus? | 07:25 | |
(nothing runs seen here?) :/ | |||
QtPlatypus | autrijus was last seen 2 hours ago. | 07:26 | |
autrijus | :) | 07:28 | |
Nattfodd | THERE | ||
an autrijus | |||
Alias_ | oh good | ||
Is this hackathon limited to just pugs? | |||
nothingmuch arrives mentally | 07:29 | ||
Alias_: afaik no | |||
whatever works and helps humanity, and vaguely perl 6 things in general | |||
autrijus | Alias_: from my pov it's pugs :) | ||
Alias_ | Because I have something that needs doing that is extremely hacky and I don't have time or the knowledge to do it | ||
autrijus | but it's a pugs targetting parrot | ||
Alias_ | use.perl.org/~Alias/journal/25188 | ||
That journal entry explains it | |||
If anyone at the hackathon is up for it, it could be quite interesting. | 07:30 | ||
I'd be happy to help later on, but I'm already only sleeping every second night | |||
So I'm a bit overworked | |||
QtPlatypus is reading old perl6.langauge posts "It looks like the whole 'How do we handle reduce with less then two elements' was broat up at least twise" | |||
Alias_ | (and it involves PAR) :) | 07:31 | |
Alias_ & $work | |||
(if you have questions, I'll hear you) | |||
autrijus | Alias_: eh. | 07:32 | |
Alias_: 1st. smokers already run all uploaded cpan package | |||
Alias_ | did you read the article? | ||
nothingmuch | Alias_: ingy might be interested for freepan's sake | 07:33 | |
autrijus | I did | ||
nothingmuch | and stevan & I wrote tools that are useful for it, but are not getting enough releng time | ||
Alias_ | including the bit that talks about cpan testers? | ||
nothingmuch | the problem I had with smoke setups was the reliability of CPANPLUS | ||
autrijus | "Yes, we have CPAN Testers, but they only test CPAN packages, and only test what they want to test. " | ||
Alias_ | right | ||
and they test it _wrong_ | |||
nothingmuch | i used to smoke test all recent addittions on 7 comupilations of perl (5.005 -> blead) | 07:34 | |
Alias_ | They don't reset to a default perl install after each module | ||
autrijus | yes. so talk to RRWO | ||
nothingmuch | without installing anything but the bare metal | ||
autrijus | he's solving this problem | ||
# search.cpan.org/dist/CPAN-YACSmoke/ | |||
nothingmuch | i can share my scripts, but the weak link is beyond my reach | ||
also CPAN::Nargihle | 07:35 | ||
autrijus | I don't know if they currently have nuke-the-sitelib setup in YACSmoke | ||
if not it's just one line | |||
but in any case, please talk to rrwo | |||
nothingmuch | you don't need to install anything | ||
build deps, and use blibs | |||
autrijus | nothingmuch: sure, that's what cpansmoke does already | 07:36 | |
nothingmuch | right, site_lib does not have to be nuked | ||
autrijus | er no | ||
nothingmuch | eh? | ||
autrijus | if you run this with a existing sitelib | ||
and say you already have DBI.pm in your sitelib | 07:37 | ||
nothingmuch | oh | ||
you run it on a clean perl | |||
Alias_ | I have that problem already | ||
autrijus | right. so yacsmoke needs to check | ||
the sitelib | |||
and remove it from @INC | |||
or otherwise ensure it's nuked | |||
Alias_ | I forget to add a particular dependencies, but because the cpan tests tested that missing dependency yesterday | ||
... none of them notice | |||
autrijus | but the test feedback protocol etc you talk about | ||
is already part of cpan testing framework | |||
no need to reinvent that | 07:38 | ||
nothingmuch | but Alias_ - agree with me that optional modules's features should be tested | ||
Test::Distribution | |||
autrijus | you can work on hiding @INC, setting up jails, resource limits | ||
nothingmuch | and that both clean and dirty perls have values | ||
autrijus | as part of yacsmoke | ||
Alias_ | autrijus: I want something like full blown image-based testing | ||
autrijus | Alias_: that's the "setting up jails" part. | ||
nothingmuch | Alias_: that's *so* hard to get right | ||
Alias_ | So that I, personally, can test linux and BSD and Windows all at once | ||
autrijus | jails, or user mode linux, or vmware. | ||
nothingmuch | everyone has a different setting | ||
vmware, bochs, colinux, whatever | |||
autrijus | now vmware is nonfree | ||
Alias_ | Then vmware is a subclass of the main module | 07:39 | |
nothingmuch | that's still a shitload of overhead | ||
there are so many parameters | |||
Alias_ | The testing protocol I desribe is not vwmare, or image-based testing specific | ||
autrijus | I don't know much about bochs and friends. | ||
Alias_ | nothingmuch: I'm happy to take the overhead | ||
nothingmuch | no, i don't mean processing overhead | ||
autrijus | Alias_: what's wrong with the machine just use the existing cpantest protocool | ||
nothingmuch | programmer overhead | ||
autrijus | Alias_: and mark, in the report, that it's image-based or something. | ||
nothingmuch | what if it's vmware version foo? what if the guest OS image can't run on version foo? | ||
autrijus | you can easily tackle new metadata on the existing report. | ||
nothingmuch | how is networking configured? | 07:40 | |
Alias_ | nothingmuch: You define a particular IP for the image | ||
nothingmuch | i don't | ||
Alias_ | That's done already. VMWare lives on a specific private network | ||
nothingmuch | i would use DHCP | ||
bochs doesn't | |||
colinux doesn't | |||
they're free, and more likely to be used | |||
do you use Template::Toolkit to write out an OS image? | 07:41 | ||
this is just too complicated to be dealt with reusably | |||
autrijus | Alias_: anyway, that's the extent I know about this problem. :) | ||
Alias_ | My point being, I want to be able to "apt-get install sometestingplatform" | ||
nothingmuch | you need to have N recipes | ||
which come with an ISO | |||
Alias_ | And then run "testpackage foooasdsad.tar.gz | ||
nothingmuch | which you can install | ||
and then it's installed | |||
but too dynamic is bad | |||
you have that | |||
cpanp | |||
install YACtestghing | |||
autrijus: fill in the rest | 07:42 | ||
Alias_ | and that will test on linux and bsd and win32, and perl 5.005, 5.6 and 5.8 | ||
autrijus | ok. yacsmoke ensures you have a scratch dir | ||
you repeat it once | |||
for each combination of perl/os | |||
nothingmuch | that's too much, Alias_ | ||
Alias_ | or do I "just have to do this whole bunch of admin-specific knowledge tasks" | ||
autrijus | design a table | ||
on a wiki or something | |||
for people to sign up | |||
(in fact testers.cpan.org already have such a table) | 07:43 | ||
nothingmuch | make it a script that ssh | ||
's to your guest OSs | |||
Alias_ | coral wants to test a propriatery package | ||
nothingmuch | but this is just too much detail to be dealt with by the package | ||
Alias_ | it's not leaving his company | ||
I have similar issues | |||
nothingmuch | okay | ||
set up some default installs, | |||
autrijus | Alias_: then set up the testing framework inside your own company :) | ||
nothingmuch | install CPANPLUS, Module::Build and what not | ||
Alias_ | And we are back to "just do this whole bunch of admin-specific knowledge tasks that I don't know" | ||
nothingmuch | and create a short script that SSHs to your vmware virtual boxes, and runs the tests | 07:44 | |
autrijus | Alias_: you can use the .iso files of liveCDs that, say, distrowatch provides | ||
nothingmuch | it's less than 1 hour of work, IO waits (installation etc) aside | ||
Alias_ | nothingmuch: So is light brain surgery | ||
autrijus | Alias_: the thing is that, it _really_ is different for solaris and linux and win32 to set up perl | ||
Alias_ | autrijus: Hence using an image-based approach | ||
autrijus | Alias_: so what you can do is list a set of things that needs to be installed | ||
nothingmuch | Alias_: if you want that write the scripts in haskell | ||
autrijus | Alias_: and call for people to contribute images. | ||
Alias_ | Once the kit for doing it exists, people can build the images for you | ||
autrijus | Alias_: and hopefully select something that does not require on vmware :) | 07:45 | |
nothingmuch | there is no kit though! it's simply too varied a problem | ||
chip arthroscopically explores autrijus's brain | |||
nothingmuch | it's a whole virtual computer | ||
it's not just a bit of software | |||
Alias_ | If there is a "setup_for_testing_platform.pl" and "test_I_comply_with_testing_platform.pl" tools | ||
nothingmuch | there are N different protocols | ||
autrijus | Alias_: the second part is yacsmoke | ||
Alias_ | and people can just install those with "apt-get whatever" | ||
nothingmuch | here's a scheme that could work: | ||
autrijus | Alias_: the first part, the setup_for_testing_platform, is basically yacsmoke. | ||
nothingmuch | you have a daemon on each test box | ||
autrijus | Alias_: except you need to install it yourselves. | ||
nothingmuch | and a config file | ||
autrijus | Alias_: now apt-get doesn't work on fbsd here. | 07:46 | |
Alias_: so you still need a freebsd people to generate that image for you. | |||
nothingmuch | and the your test platform thing reads the config file, and then tells all the hosts to install a package | ||
but the test platform has to provide all deps, and all files in that protocol | |||
Alias_ | autrijus: Then it's perl -MCPAN -e 'install Test::Platform' | ||
nothingmuch | no networking is involved | ||
Alias_ | My point is that this stuff isn't easy, and it should be | ||
nothingmuch | and the guest OSs are truely independant of the real world | ||
Alias_ | I'm no admin, I don't know most of this stuff | ||
autrijus | Alias_: what exactly do you find "sudo cpan CPAN::YACSmoke" hard? | ||
Alias_ | And that tests both 5.005 and Win32 for me? | 07:47 | |
nothingmuch | Alias_: i did that for ages | ||
but then I got complaints | |||
autrijus | Alias_: ok, let me spell out the steps you need to take. | ||
nothingmuch | "why do you fucking testers not check everything before you send?" | ||
Alias_ | sigh | ||
autrijus | 1. Select a technology: VMWare, Bochs, Plex86 | ||
Alias_ | autrijus: This was my point | ||
autrijus | 2. Call for people submitting images in that technology with plain installed perl5.* with YACSmoke. | ||
nothingmuch | "why do you keep running this badly?" | 07:48 | |
autrijus | 3. Find some resourceful folk to host those images and run the yacsmoke loop. | ||
nothingmuch | it's just not something that works automatically yet | ||
and my knowlege as a sysop | |||
if you fix CPANPLUS so that it always works | |||
autrijus | 4. Field the social backlash. | ||
nothingmuch | i will gladly cook up something for you | ||
with my scripts | |||
autrijus | 5. Profit! | ||
nothingmuch | but there are too many weak links, IMHO | ||
too many question marks | |||
Alias_ | nothingmuch: So is there on any large concept | ||
nothingmuch | okay | ||
plan out a scheme | |||
Alias_ | nothingmuch: Have you seen this ThreatNet thing I'm doing | ||
nothingmuch | what client server topology would you like? | ||
Alias_ | nothingmuch: There is a reason that there is no ThreatNet:: distro | 07:49 | |
autrijus | Alias_: so does this 5-step plan make sense? | ||
Alias_ | nothingmuch: There is only a whole bunch of small components | ||
nothingmuch | is this testing platform p2p? is it like threatnet? is it local? | ||
what's the underlying? | |||
Alias_ | Because the larger problem is too big | ||
nothingmuch | underlying protocol? | ||
Alias_: see? exactly my point | |||
Alias_ | But we don't _have_ those components... | ||
nothingmuch | decisions like guest OS, distro, protocol (ssh? http?), networking (how does guest get files?), technology? | ||
Alias_ | So far as I can tell, not that I can install with one line | ||
nothingmuch | okay, let's say we go with an SSH based solution | 07:50 | |
here's the steps: | |||
#!/bin/sh | |||
for host in virtual1 virtual2 virtual2; do | |||
ssh $host yacsmokethingamabob $1; | |||
done | |||
autrijus | right, that's what the thing in my step 3 will look like. | ||
Alias_: now the key missing part is #1. | |||
nothingmuch | and the rest is just as autrijus said | ||
autrijus | Alias_: so jfdi and do this survey thing! :) | ||
nothingmuch | i beg to differ, step #1 is not even necessary | 07:51 | |
you have a repo for vmware images | |||
a repo for bochs images, a repo for ... | |||
what if I want to test only real boxes? | |||
autrijus | nothingmuch: that's already there. | ||
nothingmuch | i have an array at work: sun, hp, aix, windows, linux, sun x86, osf | ||
autrijus | nothingmuch: those array of machine can already join the cpantester network. | ||
nothingmuch: Alias_ is asking for _more_ | |||
he's asking for image-based combinatorial envs | 07:52 | ||
nothingmuch | actually they can't due to resource problems =/ | ||
autrijus | so that is step 1. | ||
nothingmuch | okay okay | ||
Alias_ | I want to be able to test packages. Full stop. In any possible combination | ||
nothingmuch | but that's an optional step | ||
the other 4 can be reused | |||
Alias_ | Without CPAN if needed | ||
autrijus | Alias_: right, so make it, like, happen :) | ||
start a vmware image | |||
with your fav os | |||
Alias_ | autrijus: Did I mention the whole "I'm already only sleeping every second day" part, and "would anyone at the hackathon be interested in..." bit? | 07:53 | |
autrijus | install yacsmoke | ||
Alias_: you didn't mention the first part, no you didn't. | |||
Alias_: in that case... I'm interested, but I don't think chip and leo are CPLAN hackers | |||
Alias_: and other people have left already | |||
(as scheduled) | |||
nothingmuch | Alias_: i can donate my scripts to run on a guest OS | 07:54 | |
which build perl, and whatever | |||
Alias_ | The problem seems to be that the people that want this can't do it, the people that know how ALREADY set it up for themselves and won't share, and won't share | ||
autrijus | Alias_: so I can help sendmail and find people and call for a yapcna bof or something | ||
nothingmuch | but I don't have time either | ||
3 hours of sleep a night =/ | |||
Alias_ | nothingmuch: Wait till you have to cut that back to "... every second night" | ||
autrijus | Alias_: YACSmoke is shared... so you are saying that the people aren't sharing the installed ready to use vmware images? | 07:55 | |
nothingmuch | not getting there, sorry | ||
autrijus | Alias_: well, because you didn't call for them. | ||
nothingmuch | this is bad enough | ||
Alias_ | It's not so much that things don't exist, but that they require too much work | ||
and aren't automated down to one command | |||
I didn't get any threatnet bots of note till I added cut and paste configs and filter module examples to ThreatNet::Bot::Ammobot | 07:56 | ||
Now we have 5-7 | |||
The point is not that things exist. They always exist somewhere, it's just that they require way too much effort | |||
autrijus | sudo cpan CPAN::YACSmoke ; while 1 { yacsmoke.pl -l=Recent } | ||
there. one line. | |||
Alias_ | "This module uses the backend of CPANPLUS to run tests on modules recently uploaded to CPAN and post results to the CPAN Testers list." | 07:57 | |
So I can hand that a proprietary package and it will test it and send the result to to my local testing server? | |||
autrijus | of course | 07:58 | |
there's nothing special about the [email@hidden.address] email | |||
you can tell it to send to your local mailing list or RT inbox or something | |||
Alias_ | and it uses CPAN, and the recent list | 07:59 | |
autrijus | no. | ||
you tell it to | |||
yacsmoke.pl -t Your_Package | |||
.tgz | |||
if you want to keep track of your svn | |||
do | |||
CPAN::YACSmoke::Plugin::Recent | |||
and override the recent list | |||
that's all | |||
this is not one line, granted | 08:00 | ||
it's more like five | |||
patches welcome to make it one. | |||
but it's not the complicated thing your journal make it to be. | |||
also read | 08:01 | ||
search.cpan.org/~autrijus/CPANPLUS-.../cpansmoke | |||
the thing is that CPANPLUS is already quite modular; you can tell it to test an arbitary on-disk directory | |||
or a .tgz file | |||
and it's really just one line. | 08:02 | ||
if you want image-based testing, you need to call for images, and that's all | |||
if there are problems in cpan::yacsmoke, talk to rrws and get them fixed for once. | |||
Alias_ | Well, we need a standardised set of rules for images, and a one line thing for turning a default install into something that runs as a compatible server | ||
autrijus | yes. so you need to start the first image. | 08:03 | |
so other people can follow suit. | |||
alternately, find someone else to start the first image | |||
for example, rrws! | |||
and document the steps taken, and tell other sysadmin heads | |||
to adapt to their OS and submit images. | |||
Alias_ | I'm aware of the steps needed :) | 08:04 | |
autrijus | good. :) | ||
Alias_ | I was kind of hoping the hackathon would like to be involved | ||
autrijus | I can pitch it in YAPC::NA for you. | ||
nothingmuch thinks he might have insppired the magpie user | |||
Alias_ | That would be really great | ||
autrijus | and see if we can have a BOF or something. | ||
nothingmuch | =/ | ||
autrijus | but this particular hackathon is, I'm afraid, not populated with CPLAN hackers | ||
Alias_ | ok | ||
autrijus | and so will be of less use. sorry | ||
jql is a magpie -- anything shiny today? | |||
Alias_ | YAPC::NA would be good too | 08:05 | |
nothingmuch | jql: the problem is i'm not | ||
Alias_ | #perl was just no use. They all knew how, but nobody was willing to as much as write a bloody HOWTO | ||
nothingmuch | i think i pissed chip off because i wasn't explaining myself properly | ||
and he was too impatient to tolerate that | |||
autrijus | Alias_: the only thing that motivates me to write a HOWTO is when I actively want other people TO. | 08:06 | |
chip | *bamf* | ||
Alias_ | yes, well if I knew all the details, and had to time to actually do it... | ||
nothingmuch | hi chip | ||
chip | nothingmuch: I had someone else entirely in mind | ||
nothingmuch | *phew* | ||
autrijus | Alias_: yeah. so that's the extent we can do: pitch the idea at gatherings. | ||
Alias_ | autrijus: My problem is that when I know _how_ I generally just do it myself | ||
chip | nothingmuch: and I promise not to reveal his identity as long as he is alive | ||
autrijus | Alias_: right :) | 08:07 | |
chip | m/sg mark_felt your secret is safe with me | ||
oops | |||
Alias_ | And this whole testing rig situation is one where the people that know how, do, and couldn't be bother to modularise it | ||
WHICH IS NOT THE CPAN WAY DAMMIT! | |||
autrijus | Alias_: CPANPLUS is modularised; YACSmoke is modularised. | ||
Alias_: the vmware thing is not | 08:08 | ||
but it's because you're the first to request it | |||
and I'm sure there are people who'll be interested in doing it. | |||
chip | Alias_: If we automate everything, we'll have nothing left to do | ||
Alias_ | chip: But that's the point! | ||
:) | |||
nothingmuch | Alias_: but you can't automate everything | ||
chip | Alias_: We'll have to retrain ourselves to program Haskell On Rails or something | ||
Alias_ | prove it | ||
nothingmuch | Alias_: then there is no free wills | ||
free will | 08:09 | ||
i can't choose to do it this way and someone else that way | |||
Alias_ | nothingmuch: The only thing you can't automate are subjective decisions | ||
chip | nothingmuch: you were destined to write that | ||
Alias_ | You can most certainly automate any task | ||
nothingmuch | right, but in a system like that you can have ackerman(N) decisions | ||
you need to give components | |||
autrijus | Alias_: so, think about it... if I start shouting randomly that | ||
Alias_ | right | ||
autrijus | PPI Is Not Modular | ||
It's Not Of The CPAN Spirit | |||
nothingmuch | but components are still very far from automization | 08:10 | |
chip 's avatar of his business analyst friend giggles at the idea of the irreducible process | |||
Alias_ | I respond, of course it is. More so than most | ||
nothingmuch | chip - what was I destined to write? haskell on rails? | ||
autrijus | Alias_: right. so I respond, cpanplus/cpansmoke/cpantester is already modular. more so than most. | ||
chip | nothingmuch: that sentence you wrote. it was the outworking of the machinery of the cosmos | ||
Alias_ | components take care of the work, standards take care of the decisions | ||
autrijus | Alias_: there are always room to modularise it further. | ||
Alias_ | Did I mention how much I hate working backwards from specific to generic | 08:11 | |
clkao | *yawn* | ||
autrijus | and with that... I'm back hacking pugs :) | ||
clkao | morning autrijus | ||
nothingmuch | Alias_: in that case that is the one premise that makes standards be the root of all evil | ||
Alias_: you should read a bit about TRIZ | |||
Alias_ | There's plenty of standards, use any one you like | ||
nothingmuch | it's a mindset where specific and generic are interchanged to compensate for psychological intertia | ||
Alias_ | Stuff like "The image should run on DHCP and accept testing instructions via port 12345" is what I'm talking about | 08:12 | |
autrijus | "The image should open port 22 for ssh and have a cpansmoke/cpansmoke account." | 08:13 | |
Alias_ | why an account... | ||
autrijus | "and have the cpansmoke script in PATH" | ||
Alias_ | cpan is a special case of testing | ||
autrijus | or something like that. | ||
nothingmuch | Alias_: there are too many constraints on such a "this should run in ... env" policy | 08:14 | |
autrijus | testing is a special case of running remote commands. | ||
nothingmuch | what if my computer can't provide it, because it's a laptop and migrates envs? | ||
what if it doesn't support interface bridging, only tunnelling? or vice versa | |||
what if my company policy says i have to route through some weird set up | |||
80% of our use cases will disagree with the standard at some point | 08:15 | ||
Alias_ | Then do it on a private network | ||
nothingmuch | unless we make a standard ridden with variables | ||
Alias_ | The whole point of designing these things is to come up with a design that has a few dependencies as possible | ||
Aankhen`` | Any objections to my updating docs/01Overview.html? In other words, did I miss any discussions where the conclusion was that Pugs development needs to be Top Secret? | ||
Aankhen`` will return after 10 minutes to check. | |||
Alias_ | nothingmuch: For example, search.cpan.org/~adamk/ThreatNet-DA...ATN2004.pm | 08:16 | |
nothingmuch: Then your standard includes things like, "Should require access to a CPAN repository, but should not require access to the internet" | 08:17 | ||
So you can do it on an isolated network if needed | |||
nothingmuch | what does access to a CPAN repository mean? | ||
minicpan? | |||
how is it updated? | |||
does it get updated? | |||
Alias_ | However the person doing the testing wants | ||
That should not be the problem of the thing doing the testing | |||
err the actual test run | |||
Only the thing controlling the test run | 08:18 | ||
nothingmuch | are there hooks so you can update or not update as you like? | ||
what about dependancies? | |||
what if they're outside the cpan repository? | |||
why should i waste 600MB on a minicpan if all i'm testing is inhouse modules which use perl core? | |||
i can go on and on and on, for setups that applied to me in the past | |||
(machines with 350MB of hd space, including OS, which I used to smoke) | |||
Alias_ | waste 600mb? | ||
That is not my concern | |||
nothingmuch | right, that is not your concern | ||
because it shouldn't be | |||
Alias_ | exactly | ||
nothingmuch | this is the other person's problem | 08:19 | |
because that's what they have to give | |||
but making this standard gives no wiggle room | |||
you can have "recipes" | |||
Alias_ | Of course it does... | ||
nothingmuch | full suites that work | ||
Alias_ | You can supply a "CPAN repository" any way you like... | ||
nothingmuch | likee "an automation thingy which takes a bunch of host names in a .yaml file, and assumes they are OK" | ||
Alias_ | If the repository is a minicpan on the testing controller, accessed on a private network seperate from the internet, that's up to you | 08:20 | |
nothingmuch | or "an automation thingy which sends the full tarballs of the module and all it's dependencies to the testing host" | ||
that scenario is still a huge constraint | |||
private network, testing controller, etc | |||
what if i want a p2p setup? | |||
all hosts on the network smoke on native perl | |||
Alias_ | You don't _have_ to do it that way... only if you have your previously mentioned weird networking contraints | ||
nothingmuch | plus 1 guest OS | ||
Alias_ | I don't see anything about my design that prevents you | 08:21 | |
nothingmuch | i think it's too much design | 08:22 | |
Alias_ | limit access to the server port to your p2p members... | ||
It's not more design, it's less design | |||
It's about having the most minimum design possible. Enough to support the most common specific generic task, and nothing more | |||
And then your next layer starts with a working layer1, and adds the next step | 08:23 | ||
nothingmuch | "most common" is -><- with the concept here | ||
Alias_ | such as "using native perl", or "via an image" | ||
nothingmuch | okay, so instead of ackerman(components) you have factorial(layers) | ||
they are still components | |||
and that's what they should be | |||
Alias_ | I have no idea about WTF this "ackerman" stuff is | 08:24 | |
Perhaps $Alias{components) is not $nothingmuch{components} | |||
nothingmuch | ackerman is the largest function that is a primitive recursion | ||
Alias_ shrugs, not my area | |||
I don't know much computer science, I just make them do cool things | 08:25 | ||
often despite being told it can't be done | |||
nothingmuch | ackerman(N) = really big numer | ||
sorry, distractions | 08:26 | ||
anywho | |||
what is "components" for you? | |||
Alias_ | functionality, encapsulated and distributable | 08:27 | |
without implicit assumptions of context | |||
nothingmuch | good | 08:28 | |
then we are in agreement | |||
can you have mega-component = (component + component + component)? | |||
i think in most situations that's not very easy | |||
the user has to glue the components on their own | |||
Alias_ | components don't care about such things | ||
That's what APIs and standards are for | 08:29 | ||
nothingmuch | but smoke testing is so tightly coupled with: | ||
tarball unpacking | |||
version of perl | |||
installed modules | |||
and hence what is module installation | |||
tarball retrieval | |||
source, method, direction (push? pull) | |||
integral | "tightly coupled"? | ||
Alias_ | tarball unpacking is a non-Perl issue... "testing system must be able to untar a tarball" | 08:30 | |
version of perl should not matter one bit | |||
nothingmuch | integral: tightly coupled = connected, interdependant | ||
Alias_ | installed modules should not matter | ||
integral | nothingmuch: I don't really see how ;-/ | ||
s/;/:/ | |||
nothingmuch | Alias_: yes it should, if you have N versions of perl and you want to test on one, or on all, or... | ||
Alias_ | That's up to the configuration | ||
integral | you write a loop... | ||
Alias_ | that has nothing to do with an actual test | 08:31 | |
Layer 1 is "how to run a single smoke test as flexibly as possible" | |||
nothingmuch | test results are a matrix of: | ||
platform | |||
os | |||
module version | |||
dependancy1 version | |||
... | |||
dependencyN version | |||
(matrix of installed optional deps) | |||
Alias_ | only if you want to do it that way | ||
nothingmuch | perl version | ||
integral | that sounds more 3+N dimensional than a matrix, nothingmuch | ||
Alias_ | Personally, I just want to cherry pick a representative sample | 08:32 | |
nothingmuch | toolkit style (GNU, BSD) | ||
integral: N dimentional matrix... | |||
think of it as a cube in parallell universes ;-) | |||
Alias_ | There's methods for finding a minimum representative set out of a full matrix | ||
integral | isn't the relationship between the reporting and the smoke testing the same as between a TAP harness and a TAP producer? | ||
Alias_ | Personally, I'd like a mimumum of "1 setup, native" and a maximum of "complete matrix coverage" | ||
bingo | 08:33 | ||
nothingmuch | Alias_: so why bother with several OSs? | ||
Alias_ | restate the question | ||
nothingmuch | integral: yes | ||
i think even ditstribution across the matrix is statistically desireable | |||
integral | and Pugs' make smoke is a good example, nothingmuch, of how you can have the same testing components, but plugged into a different display and execution format | ||
nothingmuch | integral: look at how fat smoke_loop is | 08:34 | |
Alias_ | my point is, with a single given tarball, what is the minimum needed setup needed | ||
nothingmuch | it's closer to what Alias_ wants - a full system | ||
Alias_ | Issues beyond the testing of a single tarball are beyond the scope of layer 1 | ||
nothingmuch | i put it in the repo because it works for me, and others might want to base off it | ||
Alias_: how do you test only a single tarball? | |||
Alias_ | That's the question you see | ||
For starters, you have the "unpack file, perl Makefile.PL, make, make test, make install" cycle | 08:35 | ||
and collection of the output. | |||
That part is solved, but only exists is part of a larger overly specific dist I believe | |||
which sucks | |||
nothingmuch | what if Makefile.PL has a prompt? | 08:36 | |
what if there are unresolved deps? | |||
Alias_ | Then that will be in the report | ||
integral | isn't that just part of what you're trying to find out, nothingmuch? | ||
Alias_ | Makefile.PL should already deal with that. They are sposed to run in silent mode if needed | ||
If not, it's a bug | |||
nothingmuch | i agree on the prompting bit | ||
but what about deps? | 08:37 | ||
Alias_ | Second, you need a local controller. Takes instruction from somewhere, and runs something against the local platform | ||
Without altering the local platform by it's existance | |||
integral | Alias_: like an existing ssh, telnet or rlogin server? | ||
Alias_ | So it probably needs to be a PAR'ed application, built against the local platform, but not part of the local platform | ||
It needs to be code | |||
Running a testing procedure should not have to involve perl-related dependencies on the local system | 08:38 | ||
How it gets it's instructions, and where it reports, should be as minimal as possible | |||
So probably SSH-based | |||
yes | |||
So you have "A $foo application, built with PAR against the local platform on a different machine, installed at $foo on the testing platform" | 08:39 | ||
nothingmuch | do you see the "ssh based controller thing" as a component? | ||
if no- refactor | 08:40 | ||
Alias_ | functionally, more or less | ||
nothingmuch | if yes - i think it is | ||
just describe what it will do | |||
Alias_ | Although you'll have to par it up for each platform type | ||
nothingmuch | with a graph like flow | ||
Alias_ | right | ||
nothingmuch | and offer $5 to the first person who implements it, as a moral equiv of a beer | ||
Alias_ | But you'd provide a CPAN module/script combo for it | ||
integral | nothingmuch: isn't everything you can describe as "a purple foobaring thing" a component? | ||
nothingmuch | integral: a script is typically not componentized | ||
Alias_ | You provide the default implementation, and a script to built it on the local platform | ||
nothingmuch | it controls many parameters in a hard coded way | 08:41 | |
to make it readable, and specific | |||
Alias_ | anyways | ||
nothingmuch | and not too complex | ||
integral | nothingmuch: it's not? But it's got an interface via the command-line, and output via stdout | ||
nothingmuch | it's glue | ||
Alias_ | to continue... | ||
nothingmuch | right, but then it's hardly reusable | ||
it might be reinvokable, but it's not polymorphic to it's environment | |||
or it's sibling components | |||
it is a parent component | |||
encompassing an environment, a context, and other components | 08:42 | ||
Alias_ | So your definitions are, "installation of $script, built with PAR for the platform, and installed at $path" | ||
nothingmuch | i think this is more desirable: | ||
daemon in a par dist | 08:43 | ||
working on known port, | |||
with a simple HTTP based interface | |||
that way the shell, the env, and paths aren't involved | |||
the par thing should know to find the components | |||
and then it does an http post of the results, to a place specified in the request | |||
the protocol is simple | |||
you do a HTTP post of a tarball | |||
integral | what is the format of the results? Something TAP-like? | ||
nothingmuch | integral: either plain text harness output, which is typically not enough | ||
or serialized Test::TAP::Model | |||
or the yaml_harness's output | 08:44 | ||
or just raw tap output | |||
Alias_ | plain text harness output could well be enough | ||
YAPCSmoke does already know enough to know PASS or FAIL | |||
nothingmuch | Alias_: on many occasions I got back a "please test it with TEST_VERBOSE=1 and send me the results" | ||
integral | so when I design my own viewer component for the results, I have to handle unprocessed harness output? | ||
Alias_ | integral: No, because someone wrote that for you | 08:45 | |
welcome to layer 3 | |||
nothingmuch | integral: Test::TAP::Model is a reusable component designed to be pluggable as processed harness output | ||
Test::TAP::HTMLMatrix is one example of a viewer component | |||
and it too is reusable | |||
Alias_ | basically, "do as little on the testing system as possible" | ||
nothingmuch | Alias_++ # good guideline | ||
Alias_ | That's the whole point... | ||
nothingmuch | it's the first time i've seen it in this conversation (note that I faded in & out) | 08:46 | |
Alias_ | hence the "Build the test controller as a standalone PAR server, and here's the script that builds it on an equivalent platform" | ||
s/server// | |||
nothingmuch | it's important to make sure it's clarity is sustained | ||
fair enough | |||
Alias_ | You should not have to make a single change to a Perl installation in order to run tests against it | 08:47 | |
Or if we do, we have to make those changes extraordinarily well defined | |||
For example, ThreatNet's spec defines very little, but the bits it does are extremely detailed and absolutely unalterable | |||
anyways | 08:48 | ||
nothingmuch is going to get a salad | |||
(lunchtime) | |||
i think the protocol should be two way: | 08:49 | ||
test thing says - here's a file | |||
tester reports results | |||
Alias_ | right | ||
nothingmuch | or sessioned error | ||
"dependency missing, etc" | |||
these are extensible | |||
Alias_ | But they have this stuff already in YACSmoke | ||
nothingmuch | the test requestor can handle them if it knows how | ||
okay, so test thing sends full params to YACSmoke | 08:50 | ||
Alias_ | The other problem is that the external controller is going to need to know when the test is finished | ||
nothingmuch | anyway, going out. | ||
ciao! | |||
Alias_ | No point waiting around on a 30 minute timeout | ||
nothingmuch | it doesn't, it get's called back | ||
it puts a "dial here when you finish" param | |||
Alias_ | SSH wouldn't need that | ||
customise the ENV if the external thingy wants, then call the local controller, and wait for results | 08:51 | ||
timeout if response is silent from greater than $time | |||
for | |||
actually... SSH is a bad idea | 08:52 | ||
it adds a dependency | |||
so telnet, or even console | |||
"sh access"... | |||
integral has several systems with only a serial port to the outside | |||
Alias_ | I've seen console controller serial ports on certain gear | ||
right | |||
it was common at Cisco | |||
integral | (and I might not be testing perl) | 08:53 | |
Alias_ | I don't care about you then :) | ||
Althought if there's a toolkit for this already, I'd use that | |||
You can't plan everything.. | |||
integral | But then I can't use your nice reporting tools on the front end... | ||
Alias_ | So you just built in multiple layers and define as little as possible | 08:54 | |
That way you can implement alternative layers at any point you want | |||
And since I'm implementing a testing system for Perl modules... no, you probably can't | 08:55 | ||
sigh... why do I always end up having to do everything myself :/ | 08:56 | ||
Alias_ goes back to $work | |||
lightstep | does while (<FILE>) work in p6? and what does say =<FILE> do? | 09:29 | |
and how do you do this in pugs? (call/cc (lambda (c) (or 3 (c 9))) | 09:31 | ||
lightstep finally decided to learn perl | |||
lumi | Congrats | ||
lightstep | hi lumi | 09:32 | |
lumi | Hi | ||
scook0 | what are you trying to do with call/cc? | ||
lightstep | so? do you know the answers? and what is ~| ? | ||
scook0, it should return 3 is or is short-circuiting, and 9 if not | 09:33 | ||
lumi | Stringwise or? | ||
scook0 | I think ~| is string-or | ||
lightstep | $bits = 9 ~| 3; # ";" (from the presentation) | ||
scook0 | well, you can get at continuations using &?CALLER_CONTINUATION | 09:34 | |
sub callCC(&f) { f(&?CALLER_CONTINUATION) } | |||
or something like that | |||
though I think there are some deficiencies in continuations at the moment | 09:35 | ||
lumi | What do you mean by "or"? | ||
lightstep | || | 09:36 | |
`or is scheme's | |||
lumi | Well that's shortcircuiting | ||
lightstep | `or' is scheme's short-circuiting or macro | ||
lumi | So your cc will never be evaluated | 09:37 | |
lightstep | yes | ||
well, thchnically the cc is the _continuation_, and will be evaluated, but the call (c 9) won't be. are there non-short-circuiuting logical operators in perl6? | 09:39 | ||
lumi | It should prolly be that definition for callCC and then 'callCC( { 3 || &^c(9) } )' or so? | ||
scook0 | lightstep: not sure, possibly not | 09:40 | |
lumi | Are those very useful? | ||
lightstep | lumi, isn't is $^c ? | ||
lumi | Ehm, possibly so | ||
lightstep | wrt the logical ops, i just wanted to know, i can't think of a use for them | 09:41 | |
scook0 | they only really make a difference when the arguments have side-effects | ||
which is poor style, most of the time | |||
lightstep | yes | ||
scook0 | though I personally have felt the need for non-short-circuiting ops occasionally | 09:42 | |
lightstep | but about the file processing idioms: does while (<FILE>) {...} work? and what is `say =<FILE>'? | ||
scook0 | I don't think circumfix <> is 'readline' any more | ||
lumi | No, it's wordlist | 09:43 | |
=FILE is the new iterator | |||
lightstep | so it's while (=README) ? | ||
lumi | Except while isn't magical | 09:44 | |
Hm | |||
scook0 | I think you'd use 'for' instead | ||
my $x = open('README') | |||
for =$x { say } | |||
lightstep | what's the difference between ext/, inc/, lib/, modules/ and freepan? | 10:31 | |
nothingmuch | freepan is a community repo | ||
whose filesystem is subversion | |||
wherre you can put files | |||
modules is stuff that is not yet working | |||
inc is support stuff, mostly p5 | |||
ext is working modules | 10:32 | ||
which are support to pass their test | |||
s | |||
and lib is p5 stuff that is shipped with pugs | |||
and unlike inc is not used to build pugs | |||
lightstep | what is the intersection between modules+ext and freepan? | 10:33 | |
nothingmuch | freepan will in theory be a distribution point for the contents of 'ext' | ||
when those modules fork off from the pugs repo and start having a life of their own | |||
modules is uncompleted works | |||
like stuff that needs parts of pugs that aren't there yet (Class::Events for example) | 10:34 | ||
it was where we put modules before pugs supported most things | |||
and then when some of them started working someone thought it makes sense to separate the working from the non working | |||
afaik freepan is supposed to be a superset of ext | |||
but it's supposed to contain everything else people want to put there too | 10:35 | ||
(e.g., p5 code, haskell modules, python, whatever) | |||
it's just a big mirrored filesystem | |||
nnunley | Forth: You might consider targeting for jasmin (jasmin.sourceforge.net/) as a target | ||
nothingmuch | which is going to have rich metadata about packages some day | ||
nnunley: did you mean Forth? or harrorth? | 10:36 | ||
nnunley | noithingmuch: I thought it was Forth that wanted to target the java vm. | ||
nothingmuch | oh, then I'm out of context | 10:37 | |
nnunley | Looks like I really can't type this morning. | ||
nothingmuch | target the java vm as a backend for what/ | ||
pugs? | |||
nnunley | nothingmuch: Nah. I'm just lagged. As a compile target for pugs. | ||
nothingmuch | ah | 10:38 | |
lightstep | do why does ext exist? it's all in freepan, and not a part of pugs | ||
nothingmuch | it's not all in freepan yet | 10:39 | |
because freepan is not really ready for prime time | |||
and because ext is still closely linked to pugs | 10:40 | ||
they serve as a sort of test suite | |||
and they also progress alongside pugs | |||
lightstep | ok | ||
nothingmuch | when an ext module can make use of a new feature in pugs it should be refactored | ||
in theory you're right though | |||
ext is eventually supposed to be migrated to freepan | 10:41 | ||
lightstep | what's wrong with cpan, btw? | ||
nothingmuch | it targets a single unified namespace | ||
perl5 modules | |||
freepan attempts to make distributions more in tune with the perl6 unique identification scheme of things | 10:42 | ||
(multiple modules with the same "short name") | |||
acme_ | freepan reinvents the wheel | 10:43 | |
nothingmuch | but MPEG::Audio::Frame has had a consistent api | ||
(a notion that module version 2 and module version 1 aren't the same thing for one namespace, but are for another) | |||
for example, tangram 2 and tangram 3 are entirely different systems (mugwump?) | |||
acme_: it does sort of | |||
but CPAN will need a shake when perl 6 gets into the picture | |||
and freepan is a nice attempt at a prototype | |||
Alias_ points out that the wheel has been re-invented a number of times over the years | |||
autrijus | freepan is a prototype of c6pan... just like pugs is a prototype of perl6 | ||
Alias_ | shouldn't that be CP6AN | 10:44 | |
autrijus | yeah. | ||
sorry | |||
nothingmuch | freepan is more in tune with the spirit that things change, and should change | ||
Alias_ | Although CPAN2 has a certain ring to it | ||
Like "The Internet 2" | |||
nothingmuch | sometime which wasn't so important when CPAN was made up | ||
something | 10:45 | ||
QtPlatypus | cpanng | ||
Alias_ | ugh | ||
nothingmuch | muttng is annoying that way | ||
.muttngrc | |||
pgpwrapng | |||
Alias_ | Any project that involves Next Generation should have a plan to end up with it's name as Current Generation | ||
nothingmuch | CPAN 2005-? | 10:46 | |
Alias_ | CPAN Longer String | ||
nothingmuch | maybe CPAN 2005-... is more readable | ||
Alias_ | that would fail to compile | ||
with an appropriate error :) | |||
nothingmuch | or CMAN since it's modules in general, not only perl | ||
(comprehensive module archive network) | 10:47 | ||
Alias_ | actually... Comprehensive Package Archive Network | ||
We don't even need to change the acronym | |||
nothingmuch | =) | ||
Alias_ | That has a certain appeal | ||
QtPlatypus likes Alias_'s retcon. | 10:48 | ||
Alias_ | We don't need new domains, and we get to make the other language use "CPAN" :) | ||
Also CPAN has GREAT brand recognition | |||
</marketing> | |||
Despite people's issues with Perl, everyone things CPAN is cool | 10:49 | ||
autrijus | "CPAN is very good to Perl 5." | ||
"However, Perl 5 havn't been very good to CPAN." ;) | |||
Alias_ | heh | ||
nothingmuch | i would use python if python had CPAN | 10:50 | |
autrijus | "ask not what CPAN can do for perl" | ||
nothingmuch | although I'd much rather use ruby if ruby had CPAN | ||
Alias_ | That's what just about everyone that tries to leave Perl says | ||
autrijus | "ask what perl can do for CPAN" | ||
Alias_ | I'm starting to think of myself less of a Perl coder and more of a CPAN coder | ||
although I like Perl too, just not as much as CPAN | |||
nothingmuch | Alias_: i'm not trying to leave perl though. I like it, i'm used to the quirks, and the usefulness is good enough | ||
Alias_ | yes, but it's _the_ compelling reason you'll never get very far into other languages | 10:51 | |
nothingmuch | i haven't even considered another language because i don't have a single file of code (perl -e doesn't count) without use at the top (although I do occasionally do perl -MFoo -e, with as many as 3-4 -M's) | ||
Alias_ | I keep thinking we should write a proper CPyAN implementation as a gift for the Python people | ||
God would they be pissed | |||
nothingmuch | the infrastructure? | 10:52 | |
Alias_ | the everything. Database, indexer, PyAUSE, ... and yes let them use our mirror network | ||
nothingmuch | =) | ||
Alias_ | Drop a complete working CPyAN in their lap and watch them squirm | ||
"Oh, it took us about a week" | 10:53 | ||
QtPlatypus | Alias_: Wouldn't that happen as a side effect of the parrot project? | ||
autrijus | er, no. | ||
parrot is the runtime. | |||
Alias_ | No, CPAN can't support multiple languages | ||
autrijus | the infrastructure is another matter. | ||
Alias_ | So you could write a CPAN clone | ||
But whatever Freepan turns into would become a shared repository | 10:54 | ||
integral | has someone written down an idea for what new directories are needed on CPAN mirrors? | ||
Alias_ | I don't think it will work like that | ||
QtPlatypus | I mean they will be able to use the code that is in CPAN, and its desendents. | ||
Alias_ | some how... | ||
Yes, the NextPAN will allow cross-language module use | |||
For languages that have a dialect for it | 10:55 | ||
like Perl 6 :) | |||
QtPlatypus | I mean CPAN isn't good just because of its infostrature, its also for its content. | ||
Alias_ | the content was a byproduct | ||
What makes CPAN _really_ great is that it encourages lots of small packages with lots of dependencies | 10:56 | ||
What every other system results in is large "product" packages that just use the base libs | |||
So because CPAN makes dependencies easier, there's a lot more encouragement towards writing small clean modular packages | 10:57 | ||
People do bitch about "installing half of CPAN", but imagine how painful it would be if you had to install 50-100 python packages | 10:58 | ||
Look at bioperl | |||
It's now hit it's inertia limit and hardly ever gets releases | |||
Because it's one giant package, and not lots of smaller ones | |||
anyways | 10:59 | ||
They will work this out for themselves eventually | |||
We used to do large packages too at first | |||
Look at CGI.pm | |||
But as people got used to CPAN's environment, they moved in the direction of smaller chunks | |||
What amazes me is that Ruby, having seen CPAN's success, and Vaults' failure, choosed to go down the Vaults direction | 11:02 | ||
You would think they would be smarter | |||
nothingmuch | what's Vault? | ||
Alias_ | The Valuts of Parnassus | ||
Vaults of Parnesses? | |||
something like that | |||
It's the Python equivalent of CPAN | 11:03 | ||
www.vex.net/parnassus/ | |||
or at least, the most hideous anti-CPAN ever made | |||
even worse, after Ruby doing it, now O'Reilly is making the same mistake | 11:04 | ||
Now THEY should really know better | |||
nothingmuch | oreilly? | ||
Alias_ | google for code zoo | ||
QtPlatypus | Why did it fail Alias_ ? | ||
Alias_ | It hasn't failed so much as it's horrible | 11:05 | |
acme_ | i really don't understand codezoo | ||
Alias_ | QtPlatypus, it's failed because it's not CPAN | ||
It doesn't even have the potential to become it | |||
nothingmuch | what is the problem with it? technical? or philosophical? | ||
Alias_ | technical | ||
You download packages, one at a time | |||
from a website | |||
So it encourages large packages | 11:06 | ||
large packages get nasty inertia issues | |||
nothingmuch | oh | ||
Alias_ | Their only option for dependencies is to "use the debian packages" | ||
nothingmuch | i see | ||
that's horrible | 11:07 | ||
Alias_ | like I said, CPAN works because it has lots of small modules | ||
Everyone else fails because it doesn't do what CPAN does | |||
nothingmuch | codezoo is for java? | ||
Alias_ | codezoo is for everything | ||
nothingmuch | ah | ||
Alias_ | So it's a reimplementation of the Vaults of Parnassus, for all languages | 11:08 | |
Alias_ chuckles | |||
nothingmuch | has only java code been uploaded? i see nothing else | ||
Alias_ | looks like only java is uploaded | ||
But then Java needed a repository more than the other languages | |||
nothingmuch | let's hope the java people choke on their large packages | 11:09 | |
=D | |||
it looks like freshmeat | |||
Alias_ | I hope that JSAN gets rolling | ||
It would be _really_ funny to get a JavaScript version of CPAN working, and throw it in the faces of the Python people :) | |||
nothingmuch | =) | 11:10 | |
Konfabulator could benefit from a javascript lib | |||
i was thinking of maybe starting something like that | |||
but then my konfabulator trial expired | |||
and i remembered it's shareware | |||
Alias_ | heh | ||
If you wanted to help out, we need a few bits and pieces for JSAN | |||
nothingmuch | and i was like "$25 for this? no way" | 11:11 | |
Alias_ | Theory's Test::More port is looking good, and TorgoX is doing JSPOD for me | ||
nothingmuch | well, i don't do javascript | ||
Alias_ | I've got a couple of basic packages set up | ||
And JavaScripdt::Librarian will handle some of the server stuff | |||
nothingmuch | i learned it twice, and forgot it 1.5 times | ||
Alias_ | haha | ||
nothingmuch | it was actually my first langauge | ||
back in 1999 i learned programming through that | 11:12 | ||
then I moved to perl | |||
what horrible code i wrote | |||
it was a combination of illiteracy, and a too big gap between my capabilities as a programmer and my capabilities as a program writer | |||
i didn't get why perl didn't say "sub ($foo) { }" | 11:13 | ||
and for some reason I missed the @_ thing | |||
so i was like "huh? a language which can't pass params to functions?" | |||
"oh well..." | |||
then I implemented a way to pass paramters through an N dimentional array of arrays | |||
*shame* | |||
i think this is the first time i've fessed up about this | 11:14 | ||
luckily by the time i was 3-4 days into perl i realized what was going on | |||
someone say "forgiven, my son" or something like that | 11:15 | ||
QtPlatypus smiles "Well the whole @_ of perl was a miss feature" | |||
And we all do stupid ass things. | |||
Alias_ | hhahaha | ||
we all did a few stupid thing | |||
Alias_ implemented his own flat file database because DBI looked scary | 11:16 | ||
acme_ wrote his own templating system | |||
Alias_ | oh come on, we all did that | ||
nothingmuch | i implemented a Btree in memory, using tied hashes, but that was only for fun | ||
QtPlatypus | acme_: Everyone did that. | ||
nothingmuch | actually I didn't implement my own templating system ;-) | ||
Alias_ | Did I mention I'm thinking of actually getting around to uploading Template::Tiny | ||
nothingmuch | by the time i was interested in templating content I had heard of HTML::Template, and realized that there are hundreds like it | 11:17 | |
Alias_ | Hopefully Template::Tiny should come in under 50 lines of code | 11:19 | |
including boilerplate | |||
with judicious use of modules I think I can keep the core code around 10 lines | 11:20 | ||
:) | |||
broquaint | package Template::Tiny; use base 'Template'; 1; ... | ||
Alias_ | actually... it's more like... | 11:21 | |
package Template::Tiny; sub process { $_[0] =~ s/\[\%\s*(\w+)\s*\%\]/$_[0]->{$1}/g; $_[0] } 1 | |||
But I'm sure I'll be asked for a few features that won't be too expensive | 11:22 | ||
nothingmuch | oh my | 11:24 | |
kungfuftr | Alias_: yar, such as different tag styles | ||
nothingmuch would have implemented it with Regexp::Common | |||
Alias_ | That would be way too expensive | ||
::Tiny has a paticular philosophy | |||
nothingmuch | why? only 30 minutes to run the test suite ;-) | ||
yeah, I know of ::Tiny | 11:25 | ||
and I know why it's there | |||
kungfuftr | Alias_: s/$start_tag\s*(\w+)\s*$end_tag/$_[0]->{$1}/g; | ||
Alias_ | Regexp::Common is a beast | ||
kung: right.. | |||
nothingmuch | while I like enjoying someone else's work into that philosophy, I don't want to maintain my own Tiny's | ||
Alias_ | it's easy! | ||
People write in asking for features, and unless they provide a patch that can add it be REMOVING code, you just say no :) | 11:26 | ||
"That would add bloat" | |||
etc etc | |||
kungfuftr | Alias_: yar... [% %] doesn't work in things like dreamweaver, etc... so most designery type people use Template with php style tags | ||
Alias_ | And the module is so small, that it's really easy to test and doesn't really have any reason to change | 11:27 | |
I like [% %] tags in dreamweaver | |||
You can see the tags that way | |||
kungfuftr | *shrug* | ||
Alias_ | but yes, you have to be a little careful | 11:28 | |
anyways, I'll probably keep start/end tag variety | |||
kungfuftr | pre-compilation should reduce the bloat | ||
Alias_ | The reason I haven't done it so far is that I know there's going to be a lot of bloat pressure | ||
QtPlatypus | Can someone tell me why Pugs might produce this error "cannot cast from VObject (MkObject {objType = (mkType "Class"), objAttrs = <ref>, objOpaque = Nothing, objId = 64}) to Pugs.AST.Internals.VCode" | 11:29 | |
broquaint | You tried to treat a class as code? | 11:31 | |
QtPlatypus | Found it. | 11:33 | |
Class("something"); Rather then Class.new("something"); | 11:34 | ||
Alias_ | whoa | 11:36 | |
what timing | |||
q[merlyn] | well, I'll see if the release of Perl6::Pugs works any better than the CVS compile I tried yesterday | 11:53 | |
QtPlatypus | ?eval if (1==1) { "a" } else { "b"} | 11:54 | |
evalbot6 | 'a' | ||
QtPlatypus | ?eval if (1==0) { "a" } else { "b"} | ||
evalbot6 | 'b' | ||
q[merlyn] | ?eval say 'say', 'say, what you want' | 11:55 | |
evalbot6 | Error: No compatible subroutine found: "&say" | ||
q[merlyn] | heh | ||
QtPlatypus | Interesting if has a return value | ||
q[merlyn] | Might just be "last expression evaluated" | ||
same thing as subroutines in perl5 | 11:56 | ||
QtPlatypus nods to q[merlyn] "I expect that it is" | |||
perl5 didn't do that with "if" | 11:57 | ||
?eval my $a =if (1==0) { "a" } else { "b"}; $a | |||
evalbot6 | Error: unexpected "i" expecting expression reserved word | ||
QtPlatypus | Ok | 11:58 | |
q[merlyn] | Yeah, "if" is not an expression. it's a statement | ||
QtPlatypus | ?eval my $a ={if (1==0) { "a" } else { "b"}}; $a | ||
evalbot6 | \sub {...} | ||
q[merlyn] | it's unfortunate that the Perl docs blur those, even though the compiler is very clear and the design is very clear. | ||
QtPlatypus | ?eval my $a ={if (1==0) { "a" } else { "b"}}; $a() | ||
evalbot6 | 'b' | ||
q[merlyn] | yeah, that's "subroutine return val is last expressione evaluated" | 11:59 | |
QtPlatypus | ?eval my $a =do {if (1==0) { "a" } else { "b"}}; $a | ||
evalbot6 | \'b' | ||
q[merlyn] | reference to b? | ||
mr_ank | ?eval my $a =do {if (1==0) { "a" } else { "b"}}; $a.perl | ||
evalbot6 | '\\\'b\'' | ||
mr_ank | ?eval {if (1==0) { "a" } else { "b"}}.perl | 12:00 | |
evalbot6 | 'sub {...}' | ||
QtPlatypus | Ok the tri-op is most likely the best option for that. | ||
q[merlyn] | correct | 12:06 | |
Limbic_Region | is autrijus, theorbtwo, or any other metacommiter around? | 12:09 | |
nothingmuch | yes | 12:14 | |
Limbic_Region: pong | 12:15 | ||
q[merlyn] | Hmm. Perl6::Pugs distro builds fine, but I'm not trying to embed Perl5. | 12:16 | |
Maybe it breaks only when embedding Perl5. | |||
Aankhen`` | QtPlatypus >> A block returns the value of the last statement. | ||
domm | so | ||
Aankhen`` | q[merlyn] >> What platform are you on? | ||
Limbic_Region | nothingmuch - I just got handed my meta commit bit the other night - never used it - need to send a commit invite - how do I do that? | ||
domm | I (mis)used the fact that my son is ill and I don;t have to work to write some perl6 obufs | ||
feather.perl6.nl/~domm/ | |||
there all more or less based on the same idea i had a while ago: | 12:17 | ||
www.perlmonks.org/?node_id=199499 | |||
Limbic_Region | nothingmuch ? | 12:19 | |
nothingmuch | sorry | ||
back | |||
you enter the rt administrative interface | |||
rt.openfoundry.org/Foundry/Project/...?Queue=270 | |||
after you're logged in | |||
that's the members tab already | 12:20 | ||
then in the big box put some emails | |||
and click invite | |||
Limbic_Region | ok - now let's hope I know how to log in | ||
q[merlyn] | OSX 10.4 | 12:21 | |
domm | I'd appreciate it if somebody could add those obfus to pugs/examples/japh | ||
nothingmuch | login - top right corner | 12:24 | |
with your svn password | |||
domm: Limbic_Region can give you commit access ;-) | |||
Limbic_Region doesn't remember entering a svn password | 12:25 | ||
domm | Limbic_Region: can you give me commit access :-) ? | 12:26 | |
nothingmuch | uh, i can try and see if it can be reset, Limbic_Region | 12:27 | |
but when you got an invite you must have chosen a passwd | |||
and then entered it on your first commit | |||
poke around .svn | |||
Limbic_Region | I figured it out | ||
that's at home nothingmuch - but I am all set now | |||
autrijus | domm: invitation sent. welcome aboard! | ||
Alias_ | hazzah | 12:28 | |
domm | autrijus: thanks | ||
finally ... :-) | |||
Alias_ | Guess what domain expires in 2 weeks and I've put in a backorder for :) | ||
autrijus | don't forget to add yourself to AUTHORS :) | ||
Alias_ | jsan.net! | ||
nothingmuch | autrijus: beh, that's like doing someone else's homework ;-) | ||
q[merlyn] | "make test" is proceeding, but it makes me puzzled about yesterday's failure | ||
nothingmuch | hah | ||
Alias_ | JSAN could well be a go-er :) | ||
autrijus | q[merlyn]: uh, you mean you did suceed in making pugs? | ||
q[merlyn] | I'm install Perl6::Pugs with no options from the CPAN. | 12:29 | |
and it seems to be going ok | |||
autrijus | weird. | ||
q[merlyn] | but yesterday, I tried to embed Parrot and Perl5, and it broke. | ||
but that was from the SVN | |||
Limbic_Region | ok - I have logged in - where is it that I enter email address(es) and click invite? | ||
q[merlyn] | so there are a lot of variations there. I'll have to try varying fewer things when I get a chance. | ||
autrijus | Limbic_Region: rt.openfoundry.org/Foundry/Project/...Queue=Pugs | 12:32 | |
nothingmuch forgot all his debian | 12:35 | ||
what's that tool where you select the "roles", and you get a bunch of useful packages? like "Development", etc | |||
Limbic_Region | yay - I figured it out | 12:36 | |
fwiw - using links appeared to log me out so I had to navigate myself and I didn't notice the big box for entering email addresses cause I had to scroll down | 12:37 | ||
all better now - tallman invited | |||
nothingmuch | going home... see you later! | 12:47 | |
hopefully more forth and less teaching today | |||
QtPlatypus | Cool being a key doesn't brake an object's objectness. | 12:57 | |
q[merlyn] | OK... Perl6::Pugs built correctly from the CPAN, but didn't use Perl5 or Parrot embedding | 13:24 | |
crysflame | did you set the environment variables for perl5 or parrot embedding? | ||
restated, did the build process attempt to include perl5/parrot and fail or never try at all? | 13:25 | ||
q[merlyn] | the CPAN install didn't try that | 13:26 | |
I need to try just the SVN install without embedding to vary only one thing at a time | 13:27 | ||
dkf | q[merlyn]: I'm trying that right now. So far I've tried it with perl5 and parrot, and with parrot only, with the same results. | 13:35 | |
It looks to me like it only chokes when trying to build with an embedded parrot. | 13:57 | ||
I just built from a clean tree with PUGS_EMBED="perl5" and it went fine | 13:58 | ||
cognominal | what's the replacement for STDERR or indirect syntax? | 14:03 | |
print STDERR 'bla' # does not cut it anymore | 14:04 | ||
PerlJam | cognominal: why not? | ||
cognominal | pugs> print STDERR 'toto' | ||
*** No compatible subroutine found: "&STDERR" | |||
at <interactive> line 1, column 7-20 | |||
PerlJam | oh, sorry. I forgot what channel I was on :-) | ||
STDERR == $*ERR | |||
cognominal | oki | 14:05 | |
ETOOMANYLANGUAGES | |||
thx | |||
PerlJam | $ERR.say 'toto'; say $ERR: 'toto'; etc. | ||
cognominal: tell me about it. I've been having trouble context switching between perl5/perl6. I simply can't do any perl6 while at work otherwise my perl5 code gets all messed up. | 14:06 | ||
Khisanth | what you need is a Perl6 sourcefilter :) | 14:07 | |
PerlJam | no, I just need a working production level perl6 compiler :-) | ||
integral | Khisanth: use pugs; # it's here today! | ||
cognominal | btw, that's $ERR.say('toto') | 14:09 | |
PerlJam | oh right. methods require parens | 14:10 | |
Limbic_Region | insane in the membrane - insane in the brain | 14:19 | |
Limbic_Region likes that chip is active on p6.l and not just p6.i | |||
having the compiler remember everything about every block just because someone might call it like a sub is INSANE | 14:20 | ||
QtPlatypus | Is "call it like a sub" something that could be detected? | 14:23 | |
Limbic_Region | that's what chip is asking for | 14:24 | |
QtPlatypus nods. | |||
Limbic_Region | "...but only works if the calling block already marked itself as callable, perhaps by mentioning &?BLOCK in its body." | ||
QtPlatypus would prefur to be able to taint blocks, or something like that. | 14:25 | ||
Limbic_Region | I don't really care how it is accomplished as long as it is relatively sane | 14:27 | |
QtPlatypus nods "Likewise" | 14:28 | ||
Limbic_Region was all gung-ho to whip out the framework for the missing synopses until he realized just having the RFCs each S should cover by itself isn't enough reference material | 14:30 | ||
Enveigler | L~R: My gut feel about continuations is the same. So much overhead. I've been reading everything I can find to understand chip's statement about "being a VM means that the info is there anyway", but nothing I've found yet convinces me that this isn't going to need 64-bit memory space for any reasonably complex program! | 14:41 | |
SamB | Enveigler: what makes you think continuations have overhead? | 14:42 | |
integral | Enveigler: are you familiar first with stack based call frames? | 14:43 | |
SamB | are these continuations storing a huge amount of stack contents or something? | ||
Limbic_Region | Enveigler - there are two kinds of continuations - Parrot is going to support both, but only function calls are going to be "full" continuations by default | 14:45 | |
Enveigler | I'm open to persuassion, but for a continuation to be able to continue from where it was, doesn't it mean that the state of every lexical variable from program initiation down the call-chain to the point the continuation is taken must be retained? | ||
Limbic_Region | with that said - I would assume the same holds true for blocks - it won't be special unless you say it is special | ||
Enveigler | integral: Yes. | 14:46 | |
integral | Enveigler: err, that's just the same as if you've got a stack though... | ||
and one this is that you can only jump to where you got a continuation for, and continuations and your "current frame" pointer are the only things that point to frames which can then be garbage collected | 14:47 | ||
Enveigler | Except that lexicals are mutable. If a contuation is taken at level 1, a variable from the parent scope is modified another call/continuation is taken. If the first continuation is invoked, somewhere both intermdiate values of the modified lexical must be retained. | 14:49 | |
integral | ah, you misunderstand | 14:50 | |
You aren't closing over the *values* of the lexicals, but the lexical environment where you map names/indices to boxes for values | |||
It's the same as closures | |||
if you're familiar with assembly level stuff, a CALL pushes a return address on the stack, a continuation based system OTOH would push something much more like a closure on the stack | 14:52 | ||
PerlJam | integral: "I've got all the same boxes I had before only the stuff in them has all changed" ;) | ||
integral now prefers the view that continuations are the future, not the past | 14:53 | ||
and so you're saving stuff you need to use in future, not things you want to restore | |||
PerlJam: :-) | |||
PerlJam | integral: um ... continuations are time-symmetric they work the same in forward and reverse. | ||
SamB | huh. I always found continuations in languages with rampant mutable state to be confusing, probably because I wasn't sure whether they stored values or what... | 14:54 | |
integral | PerlJam: hmm? | ||
PerlJam | integral: I'm just saying that it shouldn't matter which direction along the time arrow you're looking continuations look the same no matter what. But if it helps you to think of them as "saving for the future", you go ahead :) | 14:55 | |
integral | if continuations closed over values this wouldn't print 5: my $a = 4; sub { $a++ }->(); # because the return continual would restore $a to 4 | ||
PerlJam notes that he really needs to get his fingers to type the punctuation in his head | 14:56 | ||
Enveigler is thunking... | 14:57 | ||
PerlJam | Enveigler: thunking is remarkably close to taking a continuation ;) | 14:58 | |
Enveigler nods :) | |||
If a caontinuation is only capturing /what/ is accessible, and not the values, then how is this different to a closure? Speculation. The closure *only* captures the what of variables from prior scopes--a contnuation captures the what of local lexicals also. -- Still thunking. | 15:01 | ||
integral | a continuation is a lot like a closure that doesn't return | 15:02 | |
Enveigler needs to draw some boxes and lines on paper and think so more | 15:03 | ||
s/so/some/ | |||
PerlJam | Enveigler: when you figure it all out, write it down for the other poor souls who don't quite get it. | ||
Enveigler | I'll try | 15:04 | |
15:08
sbkhh is now known as Odin-
|
|||
iheartcanada | doods is perl 6 out? | 15:17 | |
kungfuftr | iheartcanada: yes... watch out... i hear it likes small children! | 15:18 | |
iheartcanada: it'll be done by christmas | |||
Limbic_Region | depends on your definition of perl6 and of out | ||
something that implements a good portion of perl6 is available - called pugs | |||
see topic | |||
iheartcanada | kungfuftr: you are kidding right? that's wonderful | ||
Limbic_Region: thanks man | 15:19 | ||
marcel__ | he didn't say which christmas... | ||
iheartcanada is going to be so happy this Christms | |||
or the 20th Christmas from now | |||
?? | |||
Khisanth | kungfuftr: I didn't know MJ worked on pugs! | ||
iheartcanada | Nth Christmas | ||
Khisanth runs | |||
kungfuftr | iheartcanada: i didn't say _which_ christmas | ||
Limbic_Region | it is a running joke iheartcanada | ||
kungfuftr | Limbic_Region++ # providing wikipedia | 15:20 | |
iheartcanada | is this haskell - imp of perl 6 an official component of perl 6 project? | 15:21 | |
or is it your own imp? | |||
kungfuftr | iheartcanada: it's to assist bootstraping | ||
along with tie down certain implementation details | |||
iheartcanada | i think everyone's surprised how extensive the perl 6 project is, it really revamps everything eh? | 15:22 | |
autrijus | I'm not exactly surprised... more like, well, determined ;) | 15:25 | |
kungfuftr | autrijus: boo! | ||
seen castaway | 15:26 | ||
pah | |||
q[merlyn] | OK, adding Parrot makes the build crash on OSX | ||
autrijus | q[merlyn]: 0.2.1? | 15:27 | |
pasteling | "merlyn" at 209.223.236.162 pasted "OSX 10.4.1, crashes build when embedding Parrot" (17 lines, 801B) at sial.org/pbot/11052 | ||
q[merlyn] | parrot from the CVS | ||
now I'll try embedding perl5 by itself | 15:28 | ||
autrijus | q[merlyn]: you mean SVN? | ||
q[merlyn] | yes | ||
autrijus | q[merlyn]: parrot from svn is segfaulting for "print" for me. | ||
q[merlyn]: I'm working with leo on that ;) | |||
q[merlyn] | aha | ||
autrijus | (in other words, don't rely on it) | ||
q[merlyn] | well, that explains my troubles, perhaps. | 15:29 | |
pugs embedded with perl5 works fine | 15:34 | ||
but that means I still can't use rules, right? | 15:40 | ||
QtPlatypus | You can use rules as long as you have a parrot executable in your path. | 15:43 | |
15:48
Aankh|Clone is now known as Aankhen``
|
|||
Aankhen`` | I am in the same predicament, q[merlyn]. :-( | 15:52 | |
(although I can | |||
(although I can't even embed Perl 5) | |||
Aankhen`` wanders off to eat dinner. | |||
q[merlyn] | Oh. I have a parrot executable. :) | 15:57 | |
ok | |||
but that's the broken parrot | |||
I'm guessing anyway | |||
I'm doing make test to see what happens when I get to rules | |||
PerlJam | q[merlyn]: Are you just playing are you intending to write a column on pugs or something? | 15:58 | |
q[merlyn] | well - the long term goal is to be able to write Learning Perl 6 | ||
the medium term goal is to contribute to the Perl 6 project somehow | |||
the short term goal is to understand what the hell is going on. :) | 15:59 | ||
PerlJam | excellent | ||
q[merlyn]: you might want to help pmichaud with the shift-reduce parser he's writing (in PIR I think) for PGE since pugs has far and away more developers than it needs :) | 16:00 | ||
nothingmuch | evening | 16:05 | |
QtPlatypus | evening | ||
lumi | Evening | ||
nothingmuch decides to scrap most of harrorth's code | 16:07 | ||
lumi | Oi, why? | 16:08 | |
nothingmuch | no reason to keep it =) | 16:09 | |
it's a small amount of code | |||
and it's organized in a way that I know realize is limiting | |||
lumi | So what do you intend to do instead? | ||
Evil Haskell | 16:10 | ||
In any self-respecting language, that would be a huge amount of code | |||
I mean, it would take | |||
nothingmuch | well, i can take some parts | 16:11 | |
and I can make something better | |||
too modular too early | |||
but the current organization of files is a bit silly | |||
spinclad | would you make this a new layer for your document: 'Chapter n+1: we start over'? | 16:12 | |
nothingmuch | i don't know | ||
first I have to write some code, and see if the difference is really big | |||
spinclad | you're not starting from tabula rasa anymore... | 16:13 | |
nothingmuch | what's tabula rasa? | ||
spinclad | = blank slate | ||
nothingmuch | ah | ||
right | |||
most of the code will look similar | |||
it's really the same stuff | |||
but the organization in files is a bit bad | 16:14 | ||
spinclad | (that is, this time you already know what you learned from the first time through) | ||
nothingmuch | right, and that's the point of the whole project =) | ||
dinner time | 16:16 | ||
spinclad | well, good luck however you decide it | 16:17 | |
q[merlyn] | failed test 16 on t/operators/precedence - normal? | 16:48 | |
this is from SVN | |||
Chewie[] | ?eval (<> >>+<< <>).perl | 16:50 | |
evalbot6 | '()' | ||
Chewie[] | ?eval (<>>>+<<<>).perl | ||
evalbot6 | Error: unexpected ">" expecting term | ||
Chewie[] | Heh. Is whitespace required on the dull end? | ||
broquaint | Inline::BF? | ||
Chewie[] | ?eval (<1 2> >>+<< <5 6>).perl | 16:51 | |
evalbot6 | '(6.0, 8.0)' | ||
Chewie[] | broquaint: It's looking like it. Heh. | ||
broquaint | You could almost have it with some judicious operator overloading ... | ||
Chewie[] | You could have it easily, except for the looping constructs. | ||
broquaint | You could do those too, no doubt. | 16:52 | |
Just have <>.,+- as unary ops and [] as the usual circumflex op, take some drugs, and you're sorted. | 16:53 | ||
Limbic_Region | merlyn - did someone point out to you earlier that ?eval say isn't allowed IO operations are considered unsafe | 17:08 | |
Limbic_Region is playing catchup on the log | 17:09 | ||
geoffb is as well | |||
and just done | |||
FWIW -- make unoptimized && make test takes almost exactly 4 hours for me. | |||
geoffb winces before asking the next question . . . | 17:10 | ||
What can I do to help make that faster? | |||
QtPlatypus has been running them while he sleeps. | 17:11 | ||
Limbic_Region | geoffb - my guess would be to buy more memory | ||
how much does that box have? | 17:12 | ||
geoffb forks his response into two threads . . . | |||
A: It has 192 MB -- it doesn't have more because the computer was a gift, and has the worst internal design EVER, for which you basically have to disassemble the box to component chips to be able to add a stick of RAM | 17:13 | ||
Limbic_Region | geoffb - what OS? | 17:14 | |
geoffb | B: I was actually asking, "Lots of people complain about the time make and make test take. I'd like to help improve the experience for everyone. What can I do?" | ||
A: Debian testing | |||
Limbic_Region | there might not be much you can do other than to provide binary distributions | ||
IOW - if there were minor changes that could improve compile time they would already be done | 17:15 | ||
significant changes OTOH..... | |||
geoffb | B: I was thinking perhaps of simplifying the living hell out of Test.pm so that it loads faster, but I don't know how much stripping can actually be done | ||
B: Speaking of which, does the presence of POD inside a .PM significantly slow pugs parsing? Would just chopping the docs and putting them into a .pod make a huge difference . . . ? | 17:16 | ||
Limbic_Region | and on the gripping hand - I know next to 0 about Pugs internals and am just parroting what I have heard in previous conversations on the matter | ||
geoffb thinks "There's one way to find out for sure." :-) | |||
Limbic_Region | ?eval (42).kv | 17:17 | |
evalbot6 | Error: No compatible subroutine found: "&kv" | ||
svnbot6 | r4646, geoffb++ | t/01-sanity/06-use.t: attempt to work around Test.pm being too smart for our good | ||
r4647, iblech++ | * Usual svn props added to new Emit.PIR. | |||
r4647, iblech++ | * Added "blib" to svn:ignore of ext/Locale-KeyedText. | |||
r4647, iblech++ | * t/subroutines/lvalue_subroutines.t -- Added a comment referring to a p6l | |||
r4647, iblech++ | thread and fixed a test. | |||
r4647, iblech++ | * t/01-sanity/06-use.t -- Placed the outputting of the TAP header in a BEGIN | |||
r4647, iblech++ | {...} block and changed the loading of "Test" into "lib", so the TAP header | |||
r4647, iblech++ | isn't printed twice. | |||
r4648, putter++ | sleep() returns seconds slept. | |||
Limbic_Region | hmmm | ||
?eval my @foo = 1..4; @foo.kv | 17:18 | ||
evalbot6 | (0, 1, 1, 2, 2, 3, 3, 4) | ||
Limbic_Region | ?eval (1, 2, 3, 4).kv | ||
evalbot6 | (0, 1, 1, 2, 2, 3, 3, 4) | ||
geoffb | On a completely different subject . . . I wish there were a list of "Books to read so that you can get all the sci-fi references in average geek culture". Thank heavens I've read Stranger in a Strange Land and The Gripping Hand, or I'd be completely lost | ||
Limbic_Region | that still doesn't seem right to me | ||
geoffb | Looks like someone brought svnbot6 back | ||
and again, iblech++ for being way ahead of me. | 17:19 | ||
Limbic_Region | ?eval my %foo = 1..4; %foo.kv | ||
evalbot6 | ('1', 2, '3', 4) | ||
Limbic_Region | ok - duh - I get it now | ||
geoffb | :-) | 17:20 | |
Limbic_Region | key = index when the thing invoking the method is arrayish | ||
geoffb | nodnod | ||
Limbic_Region | I have an idea for a "In Perl6 you can ..." type node | 17:21 | |
at the Monastery | |||
geoffb | As in "things so cute/cool everyone will want Perl6 RIGHT NOW"? | ||
Limbic_Region | well - more from a $larry perspective - here are the things that we didn't get right in p5 but are fixed in p6 so stop b1tching" | 17:22 | |
PerlJam | geoffb: What's "The Gripping Hand"? | ||
Limbic_Region | PerlJam catb.org/~esr/jargon/html/O/on-the-...-hand.html | 17:23 | |
revdiablo | Limbic_Region: heh, did you see that post of larry's (from a while back), where he said he had to constantly resist the urge to reply to a lot of posts at the monastery with "fixed in 6" | ||
geoffb | Thanks, Limbic_Region | ||
Limbic_Region | revdiablo - yes | ||
which really isn't where the idea came from | 17:24 | ||
geoffb | PerlJam, see also en.wikipedia.org/wiki/The_Gripping_Hand | ||
PerlJam | hmm. Never read that book. | ||
revdiablo | Limbic_Region: it just seemed like a similar idea | ||
Limbic_Region | but would allow for a "see node X" reply | ||
geoffb | PerlJam, it's a fun read . . . but it's a sequel. The Mote in God's Eye is the first. | 17:25 | |
Limbic_Region | revdiablo - very similar idea so maybe subconciously that is what I was thinking - but I had a lot of influences | 17:26 | |
Dan's "What the heck is" series | |||
The "Perl Idioms explained" series | |||
etc | |||
the idea is still a bit loose btw | 17:27 | ||
QtPlatypus | Is this a diffrent monastery then I'm thinking of? | 17:29 | |
(I'm thinking of the scary devil monastery) | 17:30 | ||
geoffb | OK, here's the before state for posterity: 'time pugs -e 1' => 6.9s; 'time pugs -MTest -e 1' => 23.7s -- in both cases, insignificant system time, user approx. = real | 17:32 | |
Limbic_Region | QtPlatypus - you are joking right? | 17:33 | |
perlmonks.org | |||
revdiablo | QtPlatypus: Perlmonks is affectionately referred to as the Monastery | 17:34 | |
geoffb decides that a useful activity while waiting for Pugs to compile might be to actually READ the copy of HOP he picked up some time ago | 17:44 | ||
surprisingly, it hasn't all just sunk in by diffusion and osmosis from sitting on the desk nearby | |||
integral | all the bookshops near me have P6N, but none have HOP :-( | 17:52 | |
svnbot6 | r4649, iblech++ | lvalue_subroutines.t, proxy.t -- Fix test according to Larry's ruling on p6l, | ||
r4649, iblech++ | and added a comment referring to his post. | |||
geoffb | P6N? | 17:53 | |
integral | Perl6 Now! | 17:54 | |
geoffb | Ah | ||
integral | which seems rather good | ||
geoffb | Really? Had not heard good things, so prompty dropped it from wetware core | ||
colabti.de/irclogger/irclogger_logs/perl6 | 17:55 | ||
damn, wrong windo | |||
Right, so stripping doc from Test.pm does almost nothing. Which is actually a good thing. :-) | 17:58 | ||
Limbic_Region | heh - my name is spurperl and I am a Lisp Addict : perlmonks.org/index.pl?node_id=466656 | 18:15 | |
wolverian | nice post. | 18:16 | |
geoffb | Why does Test.pm use binding rather than assignment for intermediate results? | 18:38 | |
There's a lot of lines like this: | |||
my $test := $got eq $expected; | |||
Juerd | geoffb: Premature optimization. | 18:56 | |
geoffb: Which for Pugs tests isn't as premature as it may appear. | |||
geoffb | Juerd, how is it an optimization? Just in that it saves a little copying? | 19:02 | |
domm | so, I've added some files to my pugs svk checkout on feather. How do commit them? Is svk ci enough? | 19:15 | |
svnbot6 | r4650, domm++ | three japhs varying one theme | ||
domm | that seems to anwser it | ||
:-) | |||
stevan | geoffb: the := binding actually creates (or at one time did create) a constant | 19:16 | |
IIRC it's like doing *foo = \42; in perl5 | 19:17 | ||
domm | ?eval say <a b c> >>~<< <1 2 3>; | 19:18 | |
evalbot6 | Error: No compatible subroutine found: "&say" | ||
domm | ?eval <a b c> >>~<< <1 2 3>; | 19:19 | |
evalbot6 | ('a1', 'b2', 'c3') | ||
domm | ?eval <a b c> ōæ½xBB~ōæ½xAB <1 2 3>; | ||
evalbot6 | 'a b c1 2 3' | ||
domm | is this a bug? | ||
stevan | looks like one | ||
wolverian | it works fine for me on feather | 19:20 | |
maybe evalbot isn't grokking the utf? | |||
stevan | ?eval ('a', 'b', 'c') ōæ½xBB~ōæ½xAB (1, 2, 3) | ||
evalbot6 | 'a b c1 2 3' | ||
stevan | wolverian: that might be it | ||
I know svn bot had issues with UTF before | |||
stevan has been so out of the pugs loop lately | |||
domm | wolverian: it doesn't work on feather for me: | 19:21 | |
feather.perl6.nl/~domm/hyper_bug.p6 | |||
wolverian | hmm. | 19:22 | |
domm | but I might be doing something wrong, it's my first day with Pugs... | ||
wolverian | your file is different | 19:23 | |
stevan | domm: if you can confirm it is a bug | ||
put a test into t/pugsbugs/ for it | |||
wolverian | ah | ||
your file encoding is latin1 | |||
mine is utf8 | |||
I _think_ latin1 should just work (tm) as well. | 19:24 | ||
domm | and how do I check file encodings? | ||
domm tried very to ignore utf8 et al until now | |||
stevan | domm: what editor are you using? | ||
domm | vim | ||
wolverian | domm: :set fileencoding? | ||
also, 'file yourfile' shows the encoding | 19:25 | ||
(in the shell) | |||
stevan just sets UTF as the default now | |||
wolverian | stevan: me too, especially as my desktop is completely utf8 as well. | ||
but I think perl6 is specced to just work when encoded in latin1 | 19:26 | ||
so it's a pugsbug | |||
geoffb | (sorry, was away for a bit) stevan, what is the value of creating a constant alias to an intermediate calculation? Some sort of fast path in the pugs code? | ||
domm | it's working with fileencoding utf8 | 19:27 | |
stevan | geoffb: I am not sure of the rationale, it was there when I first got here | ||
so basically as autrijus :) | |||
but I know that the idea was it would create a constant | |||
geoffb | stevan, ok then. :-) | ||
stevan | why that is good/bad, I have no idea | 19:28 | |
other that it makes it very hard for other code to mess up the test result | |||
geoffb | hmmm | ||
stevan | it very well might have just be a neat trick :) | 19:29 | |
and nothing more | |||
geoffb | Test.pm seems so caught up in being cool, it's wrong in a few places | ||
stevan | how so? | ||
geoffb: keep in mind that it is one of the oldest module in Pugs | 19:30 | ||
and so has some old workarounds in it | |||
geoffb | It uses named arguments on some subs but not others, and then doesn't call them correctly; | ||
stevan | which may no longer be applicable | ||
geoffb | Some of the type definitions seem bogus, | ||
etc. | |||
nodnod | |||
stevan | let me take a look (its been a while since I last looked at it) | 19:31 | |
which types are wrong? | 19:32 | ||
domm | how do I run prove on pugs/t/somefile.t ? | ||
geoffb | hold on, I need to svk revert . . . I was experimenting with a typeless version | ||
stevan | dont revert | ||
geoffb | domm, s/ on //; | ||
stevan | just use the web view | ||
svn.openfoundry.org/pugs/ext/Test/lib/Test.pm | |||
domm | geoffb: thanks :-) | 19:33 | |
stevan | geoffb: It seems to me that all the named params are correct oo | 19:34 | |
s/oo/too/ | |||
domm | only there is no /usr/bin/pugs on feather? | ||
stevan | geoffb: the $desc and $todo are the only named params | 19:35 | |
geoffb: maybe nopaste your fixes? | |||
geoffb | Hold on . . . was trying to recall all the stuff I found. Lessee here . . . | 19:36 | |
&ok.goto($result, $desc, $todo); is bogus call | |||
stevan | why? | ||
is it not working? | 19:37 | ||
geoffb | Because that should be &ok.goto($result, desc => $desc, todo => $todo) | ||
Unless I'm really confuzzled. | |||
No, it works . . . | |||
stevan | named params should work positionally too IIRC | ||
geoffb | . . . but that's only because pugs has a bug -- named params should *not* work positionally | ||
stevan | ah | ||
ok | |||
then that should get fixed then | 19:38 | ||
geoffb | yeah | ||
stevan | geoffb 1 Test.pm 0 | ||
geoffb | And almost everything has a type, except $todo. | ||
stevan | next :) | ||
yes, I think that might have been a parse bug at the time that was written | |||
geoffb | And limiting like and unlike to Str and Rule matching is P5-ish. This is P6 | ||
and so on | |||
stevan | what other types would you suggest? | 19:39 | |
geoffb | Any / Any | ||
Internally, it just does a smartmatch | |||
stevan | yes | ||
however, it is really supposed to be based on Test::More::like|unlike | |||
so allowing other types would change that behavior | |||
geoffb | I didn't have a big list of issues created, I'd just found a lot of little niggles while trying to figure out how to make it faster | 19:40 | |
stevan | not that I think Test::More is the best thing since sliced bread | ||
well so far I agree on all except the like(Any) thing | 19:41 | ||
geoffb | I can see that point . . . but by making Test.pm be sortof a merge of Test::Simple and part of Test::More, with some random sprinkles such as special todo handling and so on, we've already crossed the "perfect clone" barrier | ||
stevan | I think it will pave the way for a lot of abuses | ||
geoffb: it also has some Test::Exception thrown in too :) | |||
geoffb | fair enough. :-) | ||
stevan | I am not thinking it should be a clone, but like() in perl5 and like in Test.pm should be reasonably similar | 19:42 | |
Keep in mind too that Test.pm will *NOT* be the perl6 test module of choice | |||
it is just to make pugs testing easier | |||
geoffb | perhaps we just need a "matches/not_matches" pair to have Any / Any semantics (but with a better choice of name than not_matches, blech) | ||
stevan | geoffb: that sounds good to me | ||
or is_like() | 19:43 | ||
isnt_like() | |||
that implies a wider range of match IMO | |||
geoffb | fair enough | 19:44 | |
stevan | I am sure proclaim() could use some work | ||
geoffb | NOD | ||
stevan | geoffb: all this sounds good, you should add your changes | 19:45 | |
remember to bump up the version to 0.0.7 and add any tests you need to | 19:46 | ||
and run a full Pugs test run before and after | |||
geoffb | I probably will . . . but I've got some more experimenting to do | ||
stevan | so you can be sure you didnt break anything | ||
geoffb | of course! | ||
nodnod | |||
stevan broke the build once not doing that :) | |||
geoffb | oops | ||
stevan | but there was only a few hundred tests and about 20 developers, so it wasnt as big a deal :P | 19:47 | |
svn revert is your friend :) | |||
geoffb | The other thing is the performance side -- if this module is really just for pugs tests, and the recommended test module will be different, perhaps this needs to be split into a friendly/powerful module and a fast one for running the pugs test suite | ||
oh yeah, been reverting a bit lately | |||
(not checked in versions, just local stuff that doesn't work) | 19:48 | ||
stevan | geoffb: I see no reason to split it | ||
if you can make this faster, then by all means do so | |||
no need to split off | |||
Test::Builder will surely be the basis for any non-Pugs tests later | |||
geoffb | Oh, sorry, wasn't clear. Missing phrase "If it won't go any faster without cutting functionality," | 19:49 | |
stevan | ah | ||
geoffb | several of my ideas so far have amounted to like a percent or two here or there, but not giving up yet | ||
gotta run, but will be back in a bit and reading scrollback, so don't hesitate to toss ideas out if you have any | 19:50 | ||
stevan | geoffb: I have to get back to $work myself | ||
domm | Hmm, I'm having problems with prove et.al. | 19:51 | |
Do I have to do perl Makefile.PL && make in pugs | 19:52 | ||
before running prove? | |||
stevan | domm: you can always just do pugs t/somefile.t | 19:53 | |
domm | stevan: Can't locate Test.pm in @*INC | ||
stevan | domm: pugs -I ext/Test/lib/ t/somefile.t | 19:58 | |
domm | stevan: works, thanks! | 19:59 | |
pelagic | Hello World! | 20:08 | |
Limbic_Region | saluations pelagic | 20:09 | |
pelagic | hey L~R! | ||
mr_ank | palagic: you name the output we write the program? | ||
pelagic | go ahead! | 20:10 | |
Limbic_Region | ?eval 'go ahead!' | ||
evalbot6 | 'go ahead!' | ||
Limbic_Region | next | ||
mr_ank | <pelagic> Hello World! | 20:11 | |
(sleep depravation + stress = bad jokes) | |||
pelagic | seen worse ... | ||
mr_ank | (*and* grammar) | ||
Limbic_Region | pelagic - you really need to come up with something a bit more difficult ;-) | 20:12 | |
mr_ank | heh | ||
Limbic_Region hopes $larry agrees with him and knows of a way to move forward | 20:13 | ||
pelagic | let me think it over ... | 20:14 | |
svnbot6 | r4651, domm++ | hmm, how do I say this in ASCII...? | 20:17 | |
r4651, domm++ | 'french-quotes' >> ~ << not working if file isn't utf8-encoded | |||
domm | Boogie: you /just/ missed my first submissions to Pugs... | 20:22 | |
Boogie | domm: oh. | 20:23 | |
I have network problems - the router doesn't give net, just for my wireless connection... | 20:24 | ||
pmichaud | ummm, are spaces allowed within hyper-ops? | 20:28 | |
domm | pmichaud: you mean >>~<< vs >> ~ << ? | ||
pmichaud | domm: yes | ||
domm | no idea, but pugs doesn't seem to care. I think | 20:29 | |
pmichaud | for some reason I presumed that spaces weren't allowed | ||
well, I just noticed a test in pugs for spaces | |||
and was curious about it | |||
Odin-LAP | Why shouldn't they? | ||
Odin-LAP ponders. | |||
domm | ?eval ('a','b') >> ~ << (a,2) | ||
evalbot6 | Error: unexpected ">" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
domm | ?eval ('a','b') >> ~ << (1,2) | ||
evalbot6 | Error: unexpected ">" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
domm | ?eval ('a','b') >>~<< (1,2) | ||
evalbot6 | ('a1', 'b2') | ||
domm | ok, it does care... | 20:30 | |
pmichaud | well, it cares when using texan quotes, I'm not sure it cares with french quotes | ||
geoffb | Odin-LAP, I'm guessing it's a parsing issue. Like how reduce-ops can contain only certain items | ||
just a guess . . . and possibly wrong | |||
pmichaud | Odin-LAP: it depends on how we consider the meta ops to parse | ||
Odin-LAP | I see. | 20:31 | |
pmichaud | i.e., is + << really a hyper + or a + followed by another operator of some sort? | 20:32 | |
Juerd | domm: meta-operators are not operators | ||
domm: Operators (which can be a combination of meta operators on real operators) cannot contain whitespace. | |||
pmichaud: It is + qw( | |||
pmichaud | Juerd: yes, that's what I was thinking | 20:33 | |
Juerd | [+], >>+, etc, must all be whitespaceless | ||
domm | Pugs currently accepts say <a b c> ōæ½xBB ~ ōæ½xAB <1 2 3>; | ||
pmichaud | something in the tests for hyper_latin1.t caught my eye about that, so I thought I'd ask | ||
domm | but not <a b c> >> ~ << <1 2 3>; | ||
Juerd | I'm not sure what [x] does. Is it reduction or [x()]? | ||
pmichaud | [x] would be a reduction | 20:34 | |
Juerd | If [x] is reduced x, then [x ] breaks | ||
But I wouldn't like that. | |||
I think repeated x|xx is useless. | |||
And only [Y] is a real "problem" | |||
Still, the solution must be the same. | |||
pmichaud | but I don't think [x ] breaks | ||
Juerd | pmichaud: [x ] must be [x() ] | ||
pmichaud | [x] is reduced &infix:<x>, while [x ] is [x() ] | ||
exactly | |||
Juerd | pmichaud: Because the operator [x] doesn't have ws in it | ||
s/breaks/disambiguates/ | 20:35 | ||
domm | pmichaud: thanks for the spot, I updated hyper_latin1.t | ||
pmichaud | yeah, I should probably review a lot of the tests and see which ones stick out in my mind :-) | ||
domm goes to bed now, but will add some more hyper-tests tomorrow | |||
Juerd | Heh. | 20:38 | |
Hyper latin. | |||
That's another exciting class school didn't teach. | |||
wolverian | hehe. | ||
pmichaud | and a "hyper-test" sounds like a psychological examination of some sort :-) | 20:39 | |
Juerd | Hm | ||
svnbot6 | r4652, domm++ | removed wrong spaces from hyper-op, test result unchanged | ||
Juerd | Although... | ||
one of my Latin teachers was kind of hyperactive at times | |||
Too bad the guy left, burned out. He was a great teacher. | |||
domm | anyway, see you tomorrow! | ||
Juerd | Bye, domm | ||
pmichaud | later, domm, thanks! | 20:40 | |
wolverian | dammit, this motherboard doesn't fit into this ages old compaq case. | 20:44 | |
wolverian ponders just running it outside the case | |||
Juerd | Rule #1: if any compaq equipment dies, replace it | ||
Rule #2: do not re-use compaq hardware | |||
Rule #3: do not try to fix broken compaq stuff | 20:45 | ||
geoffb | Juerd, why? | ||
Odin-LAP | When does it get to burning factories making Compaq stuff to the ground? | ||
Juerd | geoffb: I prefer compatibility with the real world. | ||
geoffb blinks | 20:46 | ||
Juerd | I myself am incompatible with much of the real world, but that doesn't mean my hardware shouldn't be. | ||
geoffb can only barely remember the last time he used Compaq equipment | |||
Juerd | (compatible) | ||
geoffb | I think about 10 years ago or so | ||
Juerd | I see | ||
I'll give you a few examples: | |||
geoffb | Please. :-) | 20:47 | |
Juerd | Many compaq boxes accept only compaq memory. This is the same memory, but thrice as expensive, because it was modified to identify itself as compaq memory. | ||
Compaq servers are usually shipped with scsi controllers. These controllers refuse to work in non-compaq mainboards, stating they work in compaq mainboards only at bootup. Hacking a BIOS string can help. | 20:48 | ||
Compaq has for a long time used different colours for wires. This has caused some electrical equipment to blow. | |||
geoffb | wow, impressively bad corporate behavior, that | ||
pmichaud | hmmm, regarding ingy's latest post to p6l -- is it true that string context on an array puts spaces between the elements? | ||
Juerd | A few positive things about compaq: | 20:49 | |
geoffb | The itsy? | ||
Juerd | Their hardware usually doesn't break | ||
When it does, you get new stuff real quick (although I've heard some "yeah, yeah, RSN. Maybe tomorrow"-ish stories too) | |||
pmichaud | s/ingy/ingo (sorry) | 20:50 | |
Juerd | And they were one of the first to think about screwdriverless hardware maintenance | ||
wolverian | screws-- | ||
Juerd | Still, I prefer compatibility, because I don't want to wait for some support engineer to get me new hardware | ||
wolverian | this is an extremely unsupported piece of extremely old hardware | 20:51 | |
Juerd | I want to get a new $50 thing from ANY computer store and just fix the damn problem. | ||
(The same thing would cost at least $150 from compaq) | |||
wolverian | granted it still just works with no problems whatsoever, except the lack of RAM. | ||
PerlJam | pmichaud: Is it true that that's what happens or that that's what's supposed to happen? :) | ||
pmichaud | what's supposed to happen | ||
Juerd | wolverian: Now to find old compaq RAM - good luck. | ||
PerlJam | pmichaud: yes, I believe that's what's supposed to happen. | 20:52 | |
Juerd | Now if it were compatible, you'd just get any module worth less than $5 and have it work. | ||
pmichaud | isn't that significantly different from perl 5? I can't seem to find a note about it in the design documents | ||
Juerd | But because it's compaq and antique, you probably have to spend more than $100 for the same :) | ||
Aankh|Clone | Are there any straightforward examples of using Perl 5 modules? | ||
20:52
Aankh|Clone is now known as Aankhen``
|
|||
geoffb | I'm not a fan of Dell by any means, but I'm reminded of one thing I *do* like about them. You can get certified on their hardware relatively easily, and then if you call them up and say "my foo is broken" they send you a new foo immediately, no questions asked (except customer # :-), no listening to insipid first level support "did you plug it in" crap | 20:53 | |
Juerd | Aankhen``: Yes. | ||
wolverian | Juerd: I'm not spending any money, trust me. :)( | ||
s,(,, | |||
Juerd | geoffb: Not here. | ||
Aankhen`` | Juerd >> Could you point me to them? | ||
PerlJam | pmichaud: How do you impose string context upon an array in perl5 except by surrounding it in "" ? | ||
Aankhen`` | I see an example script under examples/perl5/, but that's a little too complicated. | ||
geoffb | Juerd, ah well. | 20:54 | |
Juerd | geoffb: Dell usually just try to convince you your hard drive isn't broken. BUT IT GIVES UncorrectableErrors DAMNIT | ||
pmichaud | pj: ~@array | ||
geoffb | Juerd, BLEAH | ||
Juerd | geoffb: "Windows and Linux both agree" "But we don't" "...!" | ||
geoffb | heh | ||
Juerd | It's so terribly frustrating | ||
pmichaud | pj: my @array = <a b c d>; my $str = ~@array; | ||
seems to me that $str should be "abcd" | 20:55 | ||
Juerd | I now prefer to build my own machines. | ||
pmichaud | ingo's post (and apparently pugs) seems to think it should be "a b c d" | ||
geoffb | Someone could create a computer company with amazing support, perfect shipping, helpful salespeople, and so on . . . and noone would be willing to spend the extra $50 per box. | ||
Juerd, I agree with that sentiment | |||
pmichaud | I'd be a bigger fan of Dell if my Dell's fan wasn't so loud at the moment :) | ||
Juerd | I use Asus or Aopen cases, WD hard drives, any cheap (non-whitelabel) optical drive, and Sweex SATA controllers | ||
PerlJam | pm: I know how to do it in perl6; I'm saying there's no equivalent in perl5 (except putting the array in "") | ||
pm: so, I don't see how it can be a departure. | |||
wolverian | Juerd: what kind of warranty do WD HDs have nowadays? | 20:56 | |
Juerd | geoffb: Yep. That's because everyone has a nerdy neighbour (that'd be me) who just LOVES (not!) to fix other people's computers, because - well, he does that stuff ALL DAY because he must LIKE it, doesn't he? | ||
pmichaud | pj: Oh, perhaps that makes sense. Seems odd, however | ||
geoffb resembles Juerd's remark | |||
Juerd | wolverian: All cheap (PATA/SATA) hard drives have 1 yr now | ||
PerlJam | pm: all the shiny new stuff seems odd at first :) | ||
wolverian | Juerd: ah. thanks. | 20:57 | |
Juerd | I like using computers | ||
I like hacking | |||
I just don't like fixing things clueless people broke. | |||
When I get paid for it, sure, I'll do it, as I'll do anything (computer related) for a paying client. | |||
But the expectation that I love to fix things -for free- really bothers me sometimes. | 20:58 | ||
PerlJam | pm: besides, you can always my $str = [~] @a; say $str; if you really don't want the spaces | ||
pm: It's a huffmanly wash as far as I'm concerned. | |||
Juerd | They ask me "what can I do to prevent this from happening in the future?" | 20:59 | |
geoffb | Juerd, I thought the Seagate ones were up to 5 years now (as of sometime last year) | ||
Juerd | We all know the answer | ||
pmichaud | pj: what if someone passes an array to a function expecting an argument in string context? Same thing...? | ||
Juerd | But they won't accept that (self-)education is required. | ||
They won't install other software. | |||
geoffb: Not the cheap ones. | |||
geoffb: The scsi disks and the high end satas are | |||
Juerd almost typed satans there | |||
PerlJam | pm: that or a warning/error depending on your chosen level of bondage. | ||
geoffb | The 7200.8's aren't? | 21:00 | |
pmichaud | pj: okay | ||
geoffb | sigh | ||
Odin-LAP | What, you mean they aren't? | ||
Juerd | geoffb: nafaik | ||
pmichaud | still it surprised me somehow :-) | ||
Odin-LAP | (Satans, that is.) | ||
pasteling | "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (20 lines, 273B) at sial.org/pbot/11065 | ||
Juerd | geoffb: It's no problem. You get 5 drives for the same amount of money you spent on 1 five years ago | ||
geoffb: So just make it redundant. So just make it redundant. | |||
geoffb | Above pasteling output brought to you by random data gathering | ||
Juerd, :-) | 21:01 | ||
Juerd | Linux software raid has become very good and can compete with expensive hardware raid solutions | ||
We use EUR 35 sata-controllers from sweex (2 ports) and software raid on that | 21:02 | ||
Works wonderfully, with acceptable performance. | |||
And really, I prefer a 3-disk raid-1 mirror with lots of redundancy to a single scsi disk and scsi controller, because the redundant solution is cheaper. | 21:03 | ||
wolverian | Juerd: do you try to buy the SATA drives from different batches? | ||
PerlJam | Juerd++ | ||
Juerd | Anything can break. And if it's redundant, it CAN break. No big deal. Replace a disk and forget it happened. | ||
pmichaud | amen | ||
Juerd | wolverian: I know I should - but usually I don't pay attention to that. | ||
wolverian | right. | 21:04 | |
Juerd | Take for example feather - it uses the setup I just described | ||
A cheap EUR 35 non-raid sata-controller | |||
With two cheap 80 GB disks from western digital | |||
svnbot6 | r4653, Aankhen++ | * docs/01Overview.html -- updated "Can Pugs work with Perl 5 libraries". | ||
Aankhen`` | Could someone take a look at that? | ||
Juerd | And we have 20 machines like that | ||
In small non-19" cases | |||
Because 19" is also too expensive and really any easier. In fact, it can be quite annoying to have to screw all the time. | 21:05 | ||
These are small and ugly aopen cases | 21:06 | ||
They are set up vertically, so no machine rests on top of any other | |||
Four of them next to eachother fit in a 19" rack | |||
Add a shelf, then four more, etcetera | |||
Juerd laugs at people who spend way too much money on servers for simple tasks :) | 21:07 | ||
No, you really don't need that quad xeon for your non-slashdot site ;) | |||
(That is: yet another website running maybe four or five PHP scripts) | 21:08 | ||
Oh, and debian all the way of course :) | 21:09 | ||
svnbot6 | r4654, Aankhen++ | * docs/01Overview.html -- added some more information to the Perl 5 answer. | ||
Juerd | Let's not waste too much time on maintenance | ||
geoffb | debian++ | 21:10 | |
Juerd just opens 8 X terminals, sshs to 8 machines and runs dist-upgrades | |||
In the same time, someone else has finally updated a single gentoo box's once-again-broken config | |||
Aankhen`` | G'night. | ||
Juerd | Oh, and test scripts work much better than nagios-like stuff ;) | 21:11 | |
cd ~root/t; make test # :) | |||
pasteling | "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (21 lines, 452B) at sial.org/pbot/11066 | 21:12 | |
geoffb | Slightly cleaner | 21:13 | |
I wonder what test uses plan twice | |||
Juerd | ical-- # too easy to accidentally create events | ||
ical-- # too hard to deliberately delete them | |||
nothingmuch | harrorth is in a crisis =( | ||
Juerd | ical-- # the combination of these two is hateful | ||
geoffb | nothingmuch, what seems to be the problem? | ||
nothingmuch | Juerd: doesn't undo cut it? | 21:14 | |
geoffb: well, my initial interpretation of how a forth system works was too high level | |||
what I have now is a heap of stuff that shouldn't be there | 21:15 | ||
abstractions which are a pain | |||
nothingmuch keeps blaming autrijus for the too early reader monadization | |||
;-) | |||
Juerd | ical-- # can't do anything during isync | 21:16 | |
nothingmuch | regardless, I think i'm going to switch to a bufferred approach, where there are two buffers, an AST buffer, and a string buffer | ||
Juerd | Even fscking outlook lets you change things during synch | ||
And it just adds whatever you do to the queue of synchable items | |||
nothingmuch | the string buffer is used to fill the AST buffer when it's empty | ||
Juerd | ical++ # pretty, though. | ||
nothingmuch | and the user is used to fill in the string buffer whan that's empty | ||
Juerd | Undo seems towork | 21:17 | |
nothingmuch | also, with this approach the whole process is going to be like a loop | 21:18 | |
and not like reduction | |||
geoffb | nod | ||
nothingmuch | i hope this doesn't end up too confusing for my readers | ||
because it is already pretty confusing for me =P | 21:19 | ||
geoffb knew he was right to let nothingmuch iterate a couple times before diving in | |||
heh | |||
nothingmuch | but then again, confusion is a good starting point | ||
geoffb: ah, you're also a forth guru? | |||
geoffb guffaws | 21:20 | ||
nothingmuch | wtf guffaws | ||
mugwump chortles | 21:21 | ||
geoffb | Nope, just have a healthy belief that wave functions tend to collapse later than most people think | ||
nothingmuch | ah | ||
well, i was anticipating this kind of stuff, but i didn't expect forth to be so surprising | 21:22 | ||
geoffb | It's on my list of languages to learn, because I have a feeling that it has the "simple concept, deep meaning" thing going | ||
nothingmuch | well, the problem with forth is that it's simple concept, superficially simple meaning, deep application of meaning | 21:23 | |
because it gives a very mediocre first impression | |||
geoffb | nodnod | ||
nothingmuch | it's the way the language is applied to itself, to it's runtime, and so forth that makes it powerful | ||
it's the way that it's extensible that allows it to be flexible, and symbolically powerful | 21:24 | ||
and it's the way that it is interpreted and compiled that keeps it simple enough to be fast and small, without forefitting the two other properties | |||
pasteling | "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (21 lines, 452B) at sial.org/pbot/11067 | ||
geoffb | This time without including matches in comments, sigh | ||
nothingmuch | i'm off for my weekly cigarette | ||
autrijus | greetings! | 21:41 | |
geoffb | greetings! | ||
mugwump | hi! | ||
nothingmuch | hola | ||
autrijus | so, /me svk pull and about to svk ci | ||
awwaiid | forth sounds like playing go | 21:42 | |
rjbs | click click click? | ||
svnbot6 | r4655, autrijus++ | * PAST compileation and PIR emission, phase 1, works! Try this, | 21:49 | |
r4655, autrijus++ | which generates, according to Leo, "100% correct" PIR: | |||
r4655, autrijus++ | % ./pugs -C PIR -e 'say "Hello, World!"' | |||
r4655, autrijus++ | % parrot dump.ast | |||
r4655, autrijus++ | Hello, World! | |||
r4655, autrijus++ | * Also because it's now a Proper Compiler, we have this now: | |||
r4655, autrijus++ | % ./pugs -C PIR -e '"Hello, World!"' | |||
r4655, autrijus++ | *** Literal value used in constant expression: VStr "Hello, World!" | |||
jhorwitz | autrijus++ | 21:50 | |
mr_ank | wow | 21:52 | |
Odin-LAP | karma autrijus | ||
Hmm? | |||
:p | |||
nothingmuch | perlbot karma autrijus | 21:53 | |
perlbot | Karma for autrijus: 719 | ||
21:53
nothingmuch is now known as perlbot_
|
|||
obra | perlbot karma c | 21:53 | |
perlbot | Karma for c: 517 | ||
perlbot_ | Karma for autrijus: astronomical | ||
21:53
perlbot_ is now known as nothingmuch
|
|||
obra | perlbot karma perl | 21:53 | |
perlbot | Karma for perl: 21 | ||
nothingmuch | ;-) | ||
Khisanth ponders how to abuse the ((( and ))) operators | 22:01 | ||
wrong channel :) | 22:02 | ||
vcv | (((.. wtf! | ||
Khisanth | 1 ((( 2 ))) 3 == 1 :p | 22:03 | |
vcv | very confused | ||
Khisanth | user defined ;) | ||
vcv | yeah but what does that mean? | 22:04 | |
Khisanth | it means whatever I define it to mean! | 22:05 | |
vcv | so <Khisanth> 1 ((( 2 ))) 3 == 1 :p meant nothing really | 22:06 | |
svnbot6 | r4656, autrijus++ | * Switch to functional dependency for the "Translatable" class. | ||
r4656, autrijus++ | * add usual svn props for Pugs.Compile.PIR. | |||
autrijus | vcv: right... Khisanth is just noting the fact that in perl6 you can override what ((( means | ||
without using a source filter. | |||
pjcj | ah - Khisanth is Lewis Carroll! | ||
vcv | phew. i thought it was some crazy new p6 def op | 22:07 | |
Khisanth | heeey even better it can be a prefix and an infix :) | 22:08 | |
mugwump | pugs -C PIR -e 'eval_perl5 "print \"Hello, world!\n\""' | ||
parrot dump.ast | |||
Name '&eval_perl5' not found | |||
damn :) | 22:09 | ||
mugwump & # bah, meeting | |||
autrijus | mugwump: sure... ;) | ||
Khisanth | hmm can't have a infix and postfix op with the same "name"? | 22:15 | |
autrijus | journal up :) | 22:18 | |
autrijus waves and sleeps & | |||
Darren_Duncan | thems some great improvements | 22:21 | |
arcady | Khisanth you need the proper whitespace, I think | 22:23 | |
like no whitespace before the postfix | |||
and some whitespace before the infix | |||
Khisanth | I was trying ((( 1 ((( 2 ))) 3 ))) :p | 22:24 | |
((( 1 ((( 2 ))) 3))) didn't work either | 22:25 | ||
arcady | so now "my $x = 10; while ($x --> 0) { say $x }" doesn't work | ||
though it does in perl 5 (and the equivalent translated into C too) | 22:26 | ||
Juerd | for reverse 0..9 -> $x { say $x } is better anyway | 22:30 | |
Or, well, say reverse 0..9 ;) | |||
Still, the --> idiom should work, I think | |||
1..10 | |||
Exactly why the idiom is misleading :) | |||
Hm, no, 0..9 | 22:31 | ||
Argh. I hate this. | |||
xerox | Hi | 22:32 | |
Do anybody applied for Google's Summer of Code about pugs? | 22:33 | ||
Darren_Duncan | updated to 4656 ... 'make' gives some warnings with Emit.PIR and Pugs.Compile.PIR ... no other problems in 'make' | 22:39 | |
wolverian | hmm. I don't understand haskell's precedence rules. | 23:34 | |
mugwump | xerox: there are a few summer of gode proposals for various parts of parrot | 23:43 | |
nothingmuch | holy crap | 23:46 | |
i think i got it | |||
: foo 1 ; | 23:47 | ||
foo | |||
.s | |||
[1] | |||
pasteling | "nothingmuch" at 212.143.91.217 pasted "Harrorth version 2" (203 lines, 5.6K) at sial.org/pbot/11072 | 23:48 | |
nothingmuch | i'll document it tomorrow, because it's 3 am | ||
but reviews are most welcome | |||
mugwump | writing your own compiler nothingmuch ?! :) | 23:49 | |
oh, forth | 23:50 | ||
nothingmuch | feather.perl6.nl/~nothingmuch/harrorth/ | ||
mugwump: yes, trying to learn haskell | |||
i'm documenting my progress in tutorial format | |||
wolverian | I'm learning it too now, I think, as I have a friend to learn with. I'm not up to explicit monadic constructs yet though :) | ||
(so I can't review your code, sorry. but nothingmuch++!) | |||
nothingmuch | wolverian: try reading through harrorth's docs, there's lots of monad crap flying all over the place | 23:51 | |
wolverian | yeah, I did that a while back, up to the fifth kwid I think | 23:52 | |
I'm letting thing simmer a bit | |||
nothingmuch | =) | ||
the 6th kwid is the Reader monad dissected | |||
wolverian | oh, I should read that then | ||
Reader or ReaderT? (what's the difference?) | |||
nothingmuch | the 7th kwid is about forth for Real Men | ||
ReaderT is touched on, but not discussed deeply | |||
i don't know it's magic yet | |||
except that it can instantiate monads into the MonadReader class | 23:53 | ||
but functionally Reader and ReaderT's Reader part are identical |