pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | <stevan> Moose... it's the new Camel ":P | .pmc == PPI source filters!
Set by Alias_ on 16 March 2006.
00:07 sean left
chovy is there a command to display a file's encoding type? ie - UTF-8 00:09
svnbot6 r9824 | fglock++ | PCR - grammar.pl parses some statements
FurnaceBoy chovy, iconv 00:22
chovy FurnaceBoy: iconv doesn't tell me what the current encoding type of a file is. 00:34
00:39 hexmode joined 00:56 stevan joined
FurnaceBoy not even with -f ? 01:00
hmm. 01:01
01:13 justatheory joined 01:23 justatheory joined 01:24 Khisanth joined
chovy FurnaceBoy: -f is for a file with a list of files to check (batch mode) 01:32
FurnaceBoy: sorry, i meant file -f. I tried iconv -f and got "iconv: conversion from `resume.html' is not supported"
01:33 justatheory joined 01:35 mako132_ joined 01:40 justatheory joined 01:51 vel joined 01:52 fglock joined
fglock which parts of p6 can't be parsed with a bottom-up parser? 02:12
02:21 vel joined 02:23 xinming joined 02:26 vel joined 02:43 DesreveR joined 02:54 pfenwick joined
pfenwick For those who are interested in such things, Pugs has just become the new "collaboration of the moment" on PerlNet: perl.net.au/wiki/Pugs 02:57
obra pfenwick: you guys actually got ORA to let you use the camel? 02:59
pfenwick obra: Absolutely. 03:01
obra: We've never had problems with ORA and camel usage. We've got a few training notes that use camel images (specifically the "camel code"). Both ORA and Stephen Jenkins were msot obliging. 03:02
04:31 KingDiamond joined 04:32 FurnaceBoy_ joined 04:33 FurnaceBoy_ left
ingy hola 04:38
arcady hello 04:41
news from ingy-land?
ingy arcady: yes 04:44
news at 11 04:45
arcady aww... but i don't want to wait a whole hour... 04:46
ingy 11 *my* time :p 04:49
04:57 coumbes joined
xinming Is my question stupid? 05:32
oops, sorry, wrong channel 05:42
05:47 scw joined 05:52 GeJ joined 06:11 KingDiamond joined 06:53 marmic joined
svnbot6 r9825 | clkao++ | mg proxy code, written by Nicholas Clark. 06:59
07:05 tirwhan joined 07:10 iblechbot joined 08:06 bsb joined 08:13 nothing_pasta joined
gaal nothing_pasta: too bad about the laptop :( 08:18
nothing_pasta yeah
long story short: looks like it's getting worse
08:36 premshree_ joined
gaal what, the laptop started twitching at night then began killing people? 08:36
08:49 elmex_ joined
nothing_pasta gaal: err, no... it appears that I threw out the wrong paper 08:51
the receipt instead of the price quote
so it might cost me ~$1000
and it'll take at least a week
gaal uh the store should have a copy of that 08:57
nothing_pasta gaal: yeah i mailed them 08:59
but they only wake up in a few hours
groups.google.com/group/it.fan.marc...3d1cb0dd51
svnbot6 r9826 | audreyt++ | * S15-draft-tobe: notes from joint design session with 09:15
r9826 | audreyt++ | Dan Kogai san. (Also includes prior discussions and
r9826 | audreyt++ | inputs from Jarkko Hietaniemi and Dan Sugalski.)
09:42 ko1_away is now known as ko1_ 09:55 pmurias joined 09:57 pmurias joined 10:01 pmurias joined
pmurias hi all 10:08
10:09 elmex joined
Juerd Hi 10:09
pmurias: Are you having trouble with feather, or were the disconnects intentional?
pmurias Juerd: troubles with screen, read the manual page, and now reading the svk doc 10:12
Juerd ok 10:16
pmurias svk checkout works like magic, got to go to the lessons 10:22
Juerd Eeeerrh 10:23
The point of screen is not having to leave IRC :)
webmind maybe he just needs to get used to it :) 10:25
10:31 ko1_ is now known as ko1_away 10:55 azuroth joined 11:10 iblechbot joined 11:14 tomyan joined 11:18 Khisanth joined
svnbot6 r9827 | audreyt++ | * A Module::Compile extension may define pmc_use_means_no to true to 11:22
r9827 | audreyt++ | reverse the meaning of "use" and "no".
11:31 pdcawley_ joined
svnbot6 r9828 | audreyt++ | * "no Filter::Simple::Cached sub {...}" now means exactly the same as 11:34
r9828 | audreyt++ | "use Filter::Simple::Cached sub {...}" -- except pmc_use_means_no
r9828 | audreyt++ | will be set to true in this case, reversing the meaning of "use"/"no"
r9828 | audreyt++ | in that filter.
r9829 | audreyt++ | * Filter::Simple::Cached is now named Filter::Simple::Compile. 11:37
11:43 pdcawley1 joined
svnbot6 r9830 | audreyt++ | * add tests for Filter::Simple::Compile 11:43
bsb audreyt: shouldn't it be pmc_no_means_no defaulted to 1? 11:45
svnbot6 r9831 | audreyt++ | * add some semicolons to t/filter3.t
11:47 oeon joined
audreyt you think that is more descriptive? 11:48
I thought it might be nice to mention both "use" and "no" in the method name
bsb Less descriptive, more amusing 11:49
mentioning both is wise, of course 11:50
audreyt yeah :)
S15 and S08 still needs work 11:51
then S14 just follows
(Unicode, References, Tied Variables, respectively) 11:52
S08 can begin to say "there are no references anymore" :D
(and go one to show how the same semantics is achieved.)
bsb I went away for the weekend and references disappeared... 11:55
Or is this a long running April Fool's gag?
audreyt it's not
note the synopses never mentioned $$a
11:55 pdcawley_ joined
audreyt or any dereferncing things 11:56
so pugs has been all wrong
so yesterday TimToady gave $$a and \$a and *$a their semantics
which does not at allinvolve a Ref class or anything like that.
(it's all in the new S02/06)
bsb and you ghost wrote. You need a ghost writer for your journal 11:57
audreyt I absolutely need.
are you volunteering? 11:58
I can give you a typepad sommit bit
bsb whistles
I only understand what's happening *after* reading the journal 11:59
audreyt and it is a real problem that development happens faster than I can record it 12:00
like, far faster
dan kogai san just mentioned Dragon's Egg and I very much feel that way :)
so instead of plunging into implementation, I promise I'll do a proper wrapup report first 12:01
gaal didn't digest that 12:02
there's not ref-to-ref possible?
(hi!)
audreyt ok, maybe I can use irc to explain the idea better 12:03
\ is prefix constructor of Arguments (previously known as Args) objects.
it is very much a special form -- \(...) and :(...) are the two special forms for Arguments and Signature objects.
my $args = \($pos, $pos, :named, :another(1), :another(2)) 12:04
you use it like
func(*$args)
gaal the other half of a closure
audreyt so far so good?
bsb re: ghost blogging, perhaps irc highlights would help. That way I/we don't even need to understand
audreyt bsb: great idea 12:05
maybe I'll do all my blogging here and just link to irc slices
gaal that-whic-you-call-a-closure-with
audreyt that is so very Web 3.0
gaal link to irc *slides* - Web 4.0
audreyt gaal: so. \1 means the same as \(1)
we already know that \(1) always mean \(1:) 12:06
i.e. arguments with 1 at invocant positon
12:06 pdcawley1 joined
gaal k 12:06
audreyt prefix:<$> is a caster that casts things into Scalar
much like prefix:<~> is to Str
Scalar here is Haskell's TVar
(or IORef) 12:07
i.e. a mutabl cell.
gaal sniffs the caster oil
k
audreyt Arguments object simply returns the invocant slot in it when treated as a Scalar
exactly the same way that Match returns its result object when treated as a Scalar.
gaal okay 12:08
audreyt so $(\(1)) goes back to 1.
gaal what about .id?
(for constants vs. mutables)
audreyt Arguments takes lvalues
so \$x captures the container 12:09
not the current value of $x
i.e. there is no implicit FETCH call
gaal hmm, but then how can \(1) work?
audreyt so $(\($x)) = 3 # works
\(1) works just first
gaal ro lvalue?
audreyt $(\(1)) works only on rvalue position
gaal right. 12:10
audreyt as a ro Scalar
if you put it on lvalue, it dies
now, @$args returns all the positions in args 12:11
gaal *$args do you mean?
audreyt positional arguments, that is
I mean @$args
my $args = \(1,2,3);
say @$args;
gaal ah and %$args the named
ok
audreyt yup
and &$args the slurpy block
aka adverbial block 12:12
which like invocant is either Nothing or Just one
$() defaults to $($/)
@() default to @($/)
%() default to %($/)
gaal okay so \\$x is the twice-argumented $x
audreyt to get result object, positional, and named captures 12:13
prefix:<$> ($args = $CALLER::/) { ... }
gaal is there auto-appendage of duplicate keys? or last-wins? or error?
audreyt duplicate keys are auto appended
see the spec for details 12:14
basically
gaal so something can be promoted from a scalar to a list...?
12:14 pdcawley1 joined
audreyt sub fun (Int @x) { ... } 12:14
fun( x => 1, x => 2 ); # @x := (1, 2)
however
sub fun (Int $x) { ... }
f( x => 1, x => 2 ); # $x := 2
gaal ah, the signature sigil captures it. good 12:15
audreyt the wording is
"When there are more than one argument, the C<@> sigil in the parameter list causes the arguments to be concatenated"
12:15 tziku joined
audreyt which is exactly like getopt. 12:15
gaal what about flattening?
sub fun (Int @x) { ... } 12:16
fun( x => (1, 2), x => 3 )
audreyt flattening is just a runtime call to prefix:<*>
which is a caster to Arguments
when occuring as part of another Arguments spec, it is interpolated into it
by simple `mappend`
i.e. order of named vs positional doens't matter 12:17
gaal grins
12:17 Limbic_Region joined, kolibrie joined
audreyt with x=>(1,2) it is one argument of the Tuple type 12:17
so both $x and @x will get (1,2)
gaal not ((1,2), 3) in any case? 12:18
audreyt oh wait
I see x=>3
sorry
$x gets 3, @x gets (1,2,3)
gaal or (1,2,3) in some?
okay:
audreyt bias is to the right
gaal x=>[1,2], x=>3
audreyt same as $x:= binding in rules and hash constructor
gaal ([1,2], 3) ?
audreyt in [1,2] you are passing in an Array object
so yes.
the way out from this reference maze is by splitting container types out from value types 12:19
and do away with automatic promotion to rw containers
this means
$x = (1,2,3);
$x.push(4); # would fail! 12:20
and
$x = [1,2,3];
$x.push(4); # is just fine
I think it is not hard to explain
gaal this example sits well with my intuition fwiw
audreyt good. co-author S08 with me some day? :) 12:21
(probably next week)
gaal I'll happily help where I can :)
audreyt woot :)
so, I hope so far it makes sense
also, binding is now simply "let" 12:22
so
in both above cases
gaal what's $x's "type" in both examples above?
audreyt $x = 4; # works
gaal tuple and Array?
audreyt but if you had
$x := (1,2,3);
$x = 4;
this fails
also
$x := [1,2,3];
$x = 4
also fails
(both cases fails to handle Scalar assignment) 12:23
gaal so the container is permanent, at least until a new rebinding
audreyt gaal: the rvalue of Tuple and Array respectively, yes.
gaal: yes.
s/of/is of type/
with :=(1,2,3), lvalue is just rvalue
with =(1,2,3), lvalue is Scalar, rvalue is Tuple
this again is very straightforward 12:24
12:24 xern joined
audreyt the effect of "my @x" is twofold, compared to"my $x": 12:24
1. the container is prebound to Array
gaal except to implement $x := @y := (1,2) looks tricky?
audreyt 2. used as lvalue, it triggers Array's store, not Scalar's assignment 12:25
s/lvalue/lhs to assignment/
gaal: nope, there is no intrinsic type difference
$x and @y are both bound to Tuple
the sigil is just context hinters for compiler
internally the use the same Pad storage
it's just if you say 12:26
@z = @y
gaal hmm hold on, @y := (1,2) bound to Tuple?
audreyt then it flattens the tuple
@z = $x
does not
gaal: yes.
gaal so @y := (1,2); @y[0] === (1,2) ?
audreyt no, because Tuple handles poscircumfix []
[0] is 1 for sure
$x[0] and @y[0] compiles to the same postcircumfix[] call 12:27
gaal so how does tuplehood manifest in @y?
audreyt in both cases it's the Tuple that handles it
it manifests in that you can't push into it.
nor assign into it
@y = (4,5,6); # fails
gaal ah, I see 12:28
audreyt I hope it makes some sense :) 12:29
so terms like "autoenreferencing" and "autodereferencing" goes away
as there are no references anymore.
gaal I think it does. Does a Tuple know its particular arity? (is that just an implementation issue?)
audreyt you can ask it of .end 12:30
and of prefix:<+>
if that is what you mean
gaal okay 12:31
audreyt you can force lvalue context with variable() 12:32
though maybe lvalue() is better
in any case, assignment into tuples distributes over its elements
(sme as p5) 12:33
though tuple doesn't handle .push ever
but this does mean
my ($x, $y);
my @z := (variable($x), variable($y));
@z = (1, 2); # $x = 1; $y = 2;
which is just a roundabout way to write
gaal whoa :)
audreyt ($x, $y) = (1, 2);
gaal cool
audreyt this is again without special cases 12:34
<- spent all the week removing all special cases encountered from synopses
gaal the RHS of a tuple binding like that must be all constant XOR all variable, right? 12:35
audreyt (in above, it should read "list-assignment into tuples")
not so.
that would be a special case ;)
gaal ie @z := (variable($x), 42); # now what?
audreyt well, @z[0] = 1 # works
@z[1] = 2 # fails
@z = (1); # also fails, as distribution is complete 12:36
that is, it's asif you have said (1,undef)
although we can make it work
gaal this sounds like it won't ever be useful to the programmer -- it's just so the compiler is allowed to do constant folding. (right?)
audreyt ("we can make it work" here means that we can redefine what = means before that line is compiled ;)) 12:39
gaal :-)
bsb "this sounds like it won't ever be useful to the programmer", famous last words gaal ...
audreyt gaal: it is very useful... 12:40
sometimes your function always returns a scalar and a number
so you can say 12:41
sub f { ... ; return(variable($x), 42) }
and then
my ($var, $con) := *f();
and it will transparently work.
gaal .... as opposed to sub f { ... ; return($x, 42) } my ($var, $con) = f(); 12:42
which would also work? :)
audreyt no... it would allow 12:43
$con = 50;
gaal ah
LeTo audreyt: from S09: my $ref = \$array[0][0];
audreyt i.e. variable($con) would be Scalar not Int
LeTo is this still valid?
audreyt sure 12:44
gaal however, this probably can't be inferred generally at compile time, can it?
audreyt gaal: if "f" has a static type
gaal well maybe f is $f of Code
audreyt well then sure
it must be effected at runtime 12:45
which is fine
LeTo: still valid
gaal audreyt: in LeTo's example, does this mean autovivify $array[0]'s container with some assumed type if it didn't already exist? 12:46
audreyt LeTo: fixed, thanks 12:47
gaal: aye, the same rule as used to vivify
my @x = (1,2,3);
i.e. implicitly "is Array"
gaal nods 12:48
what was fundamentally broken with references that they needed to be done away with? 12:49
I can see 12:50
1. insufficient typefulness
audreyt the notion that Array of Array is impossible
is absurd.
it forces dynamic typing, as you observed
also it introduces mutable storage automatically at about any point
my $x = (1,2,3); # allocates mutable [1,2,3] 12:51
which renders := less effective and discourages sharing
gaal nods
audreyt also, it introduces typoglobs. 12:52
(typo intended)
i.e. the "reference type" is a self-cancelling thing that only holds one thing 12:53
but can serve as any container
gaal yeah
audreyt I fixed this by specifying the Arguments class is a value class
i.e. itself is never mutable
and always holds all the inv/pos/nam/blo slots
gaal my latest "did you know" in p5: filehandles are GLOBs, but they don't have an ARRAY slot
audreyt so it _is_ a typeglob, but not mutable and not dangerous 12:54
plus it plays well with function calls and bindings
plus a Match object is basically the same thing
so we have Rules that turn structures into Match/Arguments
and Signatures that turns them back to Pad structures
and I like the duality.
(this is so that we can do bidirectional tree manipulating -- without using attribute grammars) 12:55
gaal how does the last point about AGs follow? 12:56
audreyt are you familiar with structural unpacking in Signatures? 12:57
gaal ($head, @tail) ? 12:58
audreyt no...
class BinTree { has $.left; has $.right }
sub traverse ( BinTree $top ( $left, $right ) ) {
traverse($left);
gaal ah yes
now in S06
audreyt traverse($right)
}
aye
and you can embed them in rules 12:59
see <,> in S06
so it returns a Match tree
and consumes Arguments as input
but Match can be used as Arguments
so you can then feed that back to another rule for parsing 13:00
or to a signature for binding
and use multisubs to select variants
the idea is just that Match/Arguments are the same thing
underneath 13:01
so you can use *$match as arguments
to a function
which will set its result object to invocant position (if any)
positional captures as positional arguments
named as named
so you can also reparse that match with structural rules
I have evil plans to use rules the other way around as structural templates 13:02
gaal I saw that you did but could not understand them
audreyt but even this one-directional cycle is sufficient.
oh, it's rather easy idea
the
/Hello, (\w+)!/ 13:03
rule can be viewed as a Str --> Match
gaal sausage bidirectionality principle, yeah
audreyt we want to use it as Arguments --> Str
so basically write a transformer to turn Rules inside-out into Signatures
inthis case the signature is
sub (Str $0 where /\w+/) { "Hello, $0!" } 13:04
this is like reusing Parsec combinators as PrettyPrint combinators.
bsb ocaml++
or maybe it was somewhere else...? 13:05
gaal yes; what I don't get is the "make the computer do this automatically for you" bit. :)
(I know about the Parsec-Pretty mirrormorphism) 13:06
audreyt concat(const("Hello, "), positional(subrule(quantify(word(), 1...))), const("!")
this can be seen to specify a rule
or to specify a building function
i.e. a template
the use it as a template, simply hoist subrulse into valitaion position 13:07
i.e. constraints
and lift positionals into the sigs
as positionals, and named as named
see rules-are-templates for more transformations
similarily 13:08
:(BinTree $top ( $left, $right ))
can be seen as a template that takes named left/right and make a 'top' by calling BinTree's constructor with named :$left :$right 13:09
the Harmony project has specs for how toreverse other combinators
(just for the record, this reversal thing is not going to be part of any synopses) 13:10
it's more like the collective deranged musings of <clkao audreyt ingy>
gaal derangement++ # also remember please to add to it Generate 13:11
audreyt right :)
it's like Djinn
# www.augustsson.net/Darcs/Djinn/examples 13:13
give type, write code
gaal got url for Harmony?
audreyt since the type is iessentially an Arguments-->Match spec
alliance.seas.upenn.edu/~harmony/cg...n/demo.cgi 13:14
the paper is "Combinators for Bi-Directional Tree Transformations"
Limbic_Region saw combinators and derangement and thought what was being discussed was a way to produce derangements (special kind of permutation)
Limbic_Region really needs to get some sleep
audreyt Limbic_Region: go sleep :)
Limbic_Region is at $work 13:15
audreyt ^Z then
ingy audreyt: I liked your reversal stuff, and least in spirit
roundtripping++
gaal brb, phone call
audreyt *curtsies* 13:16
ingy :)
gaal b 13:17
audreyt (shower, bbiab) 13:19
LeTo: dankogai and I codesigned multibuffer strings 13:20
LeTo: an early draft it is at svn.openfoundry.org/pugs/docs/notes...code_draft 13:22
(grep down for "Bad Ideas")
LeTo: we'll work on it more before it becomes S15, but if that works, pugsstr.pmc will probably be useful as a general parrot STRING* 13:24
Limbic_Region understands how audreyt is able to use her laptop in the shower but he hasn't quite figured out how she is able to actually shower 13:25
and I really want to figure out this hack in your sleep thing too
audreyt touch-typing with toothbrush
gaal TT3 13:26
audreyt and sideway-aligned laptop (L-shaped area touches the ground)
and sleep sideways with fingers near keyboard
only works when sleeping on a mattress on the ground 13:27
or a relatively solid bed
13:29 sri_ joined
audreyt with this arrangement allows hacking during the twilight zone of sleep 13:29
(and produces the same effect as a twilight sleep -- i.e. wouldn't remember what I hacked last night when I wake up)
nothing_pasta i need to shoot someone 13:33
preferably with something you find in a game like Quake
or an original mod
. o O ( Chainsaw Launcher ) 13:34
spinclad quick, hide the railguns!
nothing_pasta rail gun is too clean
i really like those kinds of things when I play quake/unrealt but that's not the kind of mood i'm in =/ 13:35
Limbic_Region didn't get a chance to pray for your laptop until last night nothing_pasta
I assume it was too late then?
nothing_pasta well
there's that
and there's more
now my ISP decided to block my outgoing mail
wrt the laptop: i lost the receipt
it'll cost $1000 or so to repair
it'll take at least a wek
week
just to get the warranty info sorted
Limbic_Region nothing_pasta - did you buy it on credit card? 13:36
if so - get them to issue you a receipt
nothing_pasta yes I did
i mailed the store
maybe they'll get back to me soon
i'll call them too
Limbic_Region depending on your bank/credit card company - they may have electronic records bypassing the need to go to the store
nothing_pasta i'll try that 13:37
thanks for the tip =)
Limbic_Region no worries - though I wouldn't hold your breath. I use some pretty good credit unions here in the states that aren't open to the general public (military affiliation) so I may just be getting better than average service 13:38
nothing_pasta possibly
then again, shouting gets you a long way in israel
i've managed to asshole myself up the food chain of my ISPs customer service dept
now I have to do it for the tech support dept too
and maybe the CC one =) 13:39
Limbic_Region oh yeah, there's that too - I am not exactly pleasant when I don't get what I pay for
13:47 lisppaste3 joined 14:03 vel joined 14:08 bsb joined 14:23 theorb joined 14:40 theorb is now known as theorbtwo 14:46 nwc10 joined
nwc10 I'm trying to build pugs to answer a question. I started with a clean checkout of revision 9831, and it's failing at "Generating precompiled Prelude" 14:48
specifically: 14:49
Generating precompiled Prelude... Use of uninitialized value in length at util/gen_prelude.pl line 158.
system: [/usr/local/bin/perl5.8.8 util/gen_prelude.pl -v -i src/perl6/Prelude.pm -p ./pugs --output blib6/lib/Prelude.pm.yml]: No such file or directory at util/build_pugs.pl line 278.
Is this known?
And actually, my real question which I was trying to answer for myself without needing to ask here was "Does pugs have code to run multiple TAP-producing tests in parallel?"
audreyt nwc10: no it's not known 14:50
run it by hand?
/usr/local/bin/perl5.8.8 util/gen_prelude.pl -v -i src/perl6/Prelude.pm -p ./pugs --output blib6/lib/Prelude.pm.yml
nwc10 Generating precompiled Prelude... Use of uninitialized value in length at util/gen_prelude.pl line 158. 14:53
and exits with code 1
aha. because: exit 1 unless length $lines; 14:54
audreyt do you have a Prelude.pm in the cwd?
nwc10 no
this is on FreeBSD 5.3 and I was using FreeBSD make 14:55
audreyt I'm on fbsd as well
I suspect somehow -w or -x
is missing
trace the open2 on line 153 of util/gen_prelude.pl ? 14:56
to answer your question
look for
smoke_concurrent: 1
in config.yml
14:56 sri_ joined
audreyt and set it to >1 14:56
nwc10 Oh. um. I can't seem to get much joy from ktrace -d 15:00
pugs coredumped, backtrace is pthread_testcancel (), pthread_testcancel (), pthread_mutexattr_init (), pthread_mutexattr_init () 15:01
?? ()
so that's not that helpful
audreyt are you on 64bit?
nwc10 no, x86 15:02
audreyt threaded perl?
nwc10 This is perl, v5.8.8 built for i386-freebsd-64int
it's the stock FreeBSD perl, so it has the defined or patch too 15:03
audreyt I can't duplicate it here... try nuke dist/build/ and hack Makefile.PL line 402 to undef the $threaded config
nwc10 OK. There will now be a 17 minute delay 15:05
(as time said that it took me 17 minutes to get that far last time) 15:06
audreyt "make unoptimised" may make it faster
but ok
nwc10 If it fails I'll try that next
and then if it passes, er, "interesting"
gaal nwc10: yes, pugs make smoke runs TAP tests in parallel if you ask it to 15:07
util/yaml_harness.pl
and you need to edit config.yml to tell it how many processes you want to run
# e.g., smoke_concurrent: 3 15:08
regen Makefile after editing config.yml
(though in this case it may not be needed, I don't remmeber)
nwc10 thanks for the instructions. clearly I need to get it to build first :-)
I'm thinking about hacking concurrent tests into the core perl harness. 15:09
gaal nwc10: cool! it's not very hard, actually
nwc10 because on a multi core machine, doing lots of things is really fast
gaal yup
nwc10 and doing one thing is S L O W
gaal nwc10++
nwc10 it's possibly better to wait with the karma until it's done :-)
gaal I'm not sure I remember why I decided to use yaml for 'make smoke', but I think it was because I had an SMP machine and I didn't want to invent a serialization format for TAP results or even keep around unparsed TAP myself :) 15:11
nwc10 aha. you're splitting all the tests into blocks, then assigning 1 process to run each block
I was thinking about something a bit more crack fuelled
gaal yeah, it's not TehSmrt
it's TehWorksWellWithZillionsOfTests(which we have)
even if one run finishes early, it won't be much early 15:12
just keep in mind that anything that manages a queue will be a bitch to port :(
<-- proponent of KISS
nwc10 I wasn't proposing to replace the existing harness 15:14
just give me one that runs in parallel on Solaris and FreeBSD (at least) where *I* have access to multiple CPU machines
15:15 justatheory joined
gaal well, if you don't mind about the imprecise division of labor in what pugs does, just take our yaml_harness. I don't think it has much pugs hardcoded into it 15:15
maybe a little with configuration, but that's easy to gut out :) 15:16
webmind answer: mostly not 15:23
nothing_pasta good news 15:25
csc++
they mailed me back with a copy of my invoice 15:26
nwc10 audreyt: my pugs build has got to the point of running tests
15:26 kane_ joined 15:30 hlen joined 15:33 FurnaceBoy joined, bradoaks joined
nothing_pasta wtf 15:36
i just absent mindendly sent an email
and it didn't bounce
15:38 clkao_ joined
nothing_pasta false alarm =( 15:38
16:10 bradoaks left 16:15 kane__ joined 16:20 manbou joined 16:26 autark joined 16:34 Odin- joined 16:35 jiing joined, jiing left, fglock joined 16:36 Odin- joined
fglock audreyt: ping 16:37
16:44 autark is now known as bjarnis 16:48 amnesiac joined 16:55 ghenry joined 16:57 _bernhard joined 17:19 tri joined 17:21 ruoso joined
gaal audreyt: ping # YAML::Syck bug weirding me out 17:34
17:34 elmex joined
nwc10 gosh. that was slow. time make test says 17:35
real 149m48.053s
user 108m9.106s
sys 1m56.619s
Limbic_Region covers the bug in chocolate - chocolate covered bugs some how seem less weird
gaal nwc10: make optimized? 17:36
also, make sure you have blib6/lib/Prelude.pm.yml.gz 17:37
nwc10 the default make, so yes, I think optimised
yes, that's there
gaal which hardware did you say you were on? 17:38
smoke.pugscode.org for a few samples of how long this takes... it's been a while since I ran a smoke but I think it takes me half that or less 17:39
nwc10 I didn't say what the hardware was other than x86 (FreeBSD)
it's single cpu: Intel(R) Pentium(R) 4 CPU 2.80GHz (2792.06-MHz 686-class CPU)
gaal I have a similar box 17:42
were you thrashing?
nwc10 I don't know. the box is a friend's colo machine
gaal oh wait, this included the build?
nwc10 yes, including the build
gaal ahhh
nwc10 that was from the start 17:43
gaal okay, reasonable.
just make sure you don't run out of physical ram during compilation, since that will obviously kill speed. you can cap how much GHC is allowed to allocate for its own heap (again, config.yml) 17:45
but your figure doesn't indicate new b0rkedness. 17:46
17:52 Qiang joined 17:54 hexmode joined 18:02 bjarnis joined 18:03 zgh joined
TimToady audreyt: I see you snuck the defaults-to-the-left into S06, but I want to go on record as saying I agree with that. 18:13
I particularly like that a named arg to a func that ignores multi-dim can set the default for all subsequent pipes, while a multi-dim aware function can cause each dimension to have its own defaults by rebinding the particular Arguments to a helper functions parameters. 18:15
18:15 chris2 joined
TimToady *function's 18:19
Also allow me to say again how very happy I am with this last week's progress in unifying the underlying concepts in a way that is more powerful, yet without inducing higher-math headaches in newbies. 18:22
The new stuff looks very cargo-cultable, and I mean that in a nice way.
LeTo TimToady: a side nit/note: could obj.repr be dehuffmanized to e.g. obj.obj_repr to reduce possible confusion of pythoniers? 18:23
TimToady I didn't know we had an obj.repr. I thought we'd changed that to obj.perl, obj.python, obj.js, etc. 18:24
LeTo the confusion is, that it's not related to these at all ;) 18:27
TimToady Oh, okay, you mean the :repr<P6opaque> thing.
LeTo my $candidate = $class.CREATE(:repr<P6opaque>);
TimToady Could be :storage or some such.
LeTo I saw a lot of .repr in pugs code 18:28
storage is fine
TimToady I'd say that :repr is probably just as correct, but you're right that it will induce confusion in Pythoners, who are used to thinking of Python as the only true representation. :) 18:29
LeTo exactly
TimToady Need to go take a shower, bbiab &
Juerd When Perl 6 is released, we should rewrite Mediawiki in it. 18:30
And get the Wikipedia project to convert
TimToady This morning I had a nightmare of 6PAN being implemented as a wiki...
18:30 autark joined
TimToady really & 18:30
Juerd They can then get rid of half their servers, and Perl 6 gets instant PR. 18:31
TimToady: WHooaa. That'd be scary :)
theorbtwo It'd be scary indeed.
Juerd Though fixing bugs would be easier... Hmm..
theorbtwo I think we can manage the mediawiki port, though.
Juerd theorbtwo: 68 kloc 18:32
Doable, I think. But LOTS of work. Would certainly require funding :(
theorbtwo 68 kloc!?
I had no idea it was that big.
Juerd Of course
It's PHP.
Every big PHP project is multi-dozen kloc. 18:33
There's 4 kloc in the parser alone. A grammar easily fixes that problem.
FurnaceBoy eep 18:34
FurnaceBoy uses TWiki
Juerd Twiki sucks.
theorbtwo Yeah, but you still need to /read/ all 68kloc, or at least most of them.
Juerd For users.
theorbtwo shrugs.
FurnaceBoy odd -- most of our users love it.
Juerd theorbtwo: Sure, but there's lots and lots of vertical whitespace, so really I think it's doable.
FurnaceBoy the rest don't say anything :-)
theorbtwo A debate of the rel merits of different wikis is rather irrelevant to this discussion. 18:35
Juerd theorbtwo: Consider that it has no postfix if and such
FurnaceBoy of course. just saying.
Juerd theorbtwo: So every such simple check is 3 lines.
theorbtwo: It has no loop control, so you need lots of huge blocks
And it goes on like that
ingy TimToady: I see you were not consumed by the Pacific ocean
LeTo Juerd: php is improving - don't worry ;) www.sitepoint.com/blogs/2006/03/31/...statement/ 18:37
Juerd And reading 68 kloc... In words (wc -w), it's less than 7 times A12 :) 18:38
LeTo: ... :))
theorbtwo Ah, well, that doesn't sound too bad, though I bed A12 has grown since last I read it.
Juerd A's don't change much 18:39
theorbtwo Oh, g'point.
Juerd And 34 kloc is in the special pages 18:40
If things are compatible enough, you can always port those later :)
18:42 gantrixx joined 18:44 nwc10 left 18:50 xinming joined
nothing_pasta we have a mediawiki hacker onboard, btw 18:51
avar: ping
theorbtwo
.oO(_pasta?)
18:52
theorbtwo wonders if there's any sort of PHP/perl6 integration going on. 18:53
PHP-on-Parrot, for example...
nothing_pasta theorbtwo: my laptop died, this is from my server
pasta.woobling.org
theorbtwo Oh, which is named pasta.
nothing_pasta only my generous ISP screwed up my reverse pointer to that
so you couldn't know ;-)
18:54 mj41_ joined
TimToady ingy: well, yeah, as far as I know, Davy Jones' Locker isn't equipped with IRC 18:54
nothing_pasta TimToady: wrt 6PAN as a wiki:
i think it's actually a semi good idea
in that *anyone* should have the possibility to "branch" a module
TimToady yes, that was the scary part.
nothing_pasta on the 6PAN
easily
annotate, change, edit, add
and then let the author see it, let the world see it 18:55
merge back
TimToady We'll call it...uh...Xanadu...
nothing_pasta or subversion ;-)
ingy :)
nothing_pasta but it needs a good web interface =)
with a wiki
and a page per module ;-)\
ingy: what's up with freepan btw?
ingy nothing_pasta: still humming :) 18:56
aka, nothing new :(
18:56 nnunley joined
ingy aka, full of possibilities 18:56
nothing_pasta bwahahahha 18:57
submit a grant proposal to TPF to work on it?
ingy no way
I don't get paid to have fun, sorry
nothing_pasta heh
work on it?
fglock I'm doing some tests, I need an example of a p6 statement that requires a top-down parser 18:58
ingy For me, being on the hook to produce something of quality, by the money of your friends and admirers is no fun. At that point I decided that I would never accept money directly tied to the goal of me completing an open source project. -- use.perl.org/~ingy/journal 18:59
my one journal entry
nothing_pasta ah 19:01
well, that's a reasonable rationale =)
as in, "i dig that"
Juerd fglock: What's top-down again? Would "%foo{"bar"}" suffice? 19:02
nothing_pasta i think i can work for money on fun stuff though
as long as I can commit full time
which I can't right now
ingy nothing_pasta: let's buy a tour bus 19:03
nothing_pasta tour bus?
ingy yeah 19:04
nothing_pasta search.cpan.org/~kolibrie/Class-Inflate-0.01/
oops, wrong channel
gaal a VW microbus and then we can sing Alice's Restaurant
19:04 FurnaceBoy_ joined
ingy we can drive all over Europe and America doing hackathons, selling snakeoil etc 19:04
wait that's Python 19:05
nothing_pasta no, that's dead python ;-)
hmm
i think not
fglock Juerd: no, that's easy to parse - I'm not sure what I need, but I want to draw a line between where to use bottom-up and top-down
nothing_pasta gas == $$
i need $$
because i'm saving for my studies 19:06
my coding career is about 70% finished
ingy nothing_pasta: you are forgetting one thing
nothing_pasta i think i have no more than 2-3 years left in me
kolibrie nothing_pasta: you pushing my module?
ingy groupies!
nothing_pasta kolibrie: yes, on #catalyst
kolibrie cool
nothing_pasta someone asked for a system that would be forgiving to bad DBs
ingy chix luv perl 19:07
19:07 KingDiamond joined
nothing_pasta also, living in a bus is not my idea of a fun time ;-) 19:07
i will gladly go with you on 1-2 month tours
ingy <== pumpkinzzzzzzzzzzz
nothing_pasta but not much more =)
ingy nothing_pasta: cool 19:08
&
gaal the trans-siberian takes a few days
it's a fun ride
nothing_pasta ciao ingy 19:09
isn't it ~8 days on the train?
i've heard some horror stories from workmates 19:10
gaal I loved the part of it that I took (no Siberia involved)
nothing_pasta hurt his hand hitting the desk and shouting today =/
avar nothing_pasta: what?
nothing_pasta gaal: where were you?
19:11 vel joined
nothing_pasta avar: Juerd and theorbtwo were talking about porting mediawiki to Perl 6, and I thought you could provide some insight ;-) 19:11
gaal Beijing -> Ulaan Baatar
nothing_pasta where's Ulaan Baatar?
gaal (and back)
capital of Mongolia
avar Juerd; theorbtwo: been taking your medicine?
;)
nothing_pasta ah
gaal and Beijing is in China. :)
Juerd avar: Yes. Though I was quite serious.
nothing_pasta always secretly wished he would see Mongolia
gaal: uh, isn't it in Japan or something?
Juerd avar: I will not be able to actually do it, so it's easy for me to say.
avar Juerd: really?;) 19:12
nothing_pasta isn't *that* big an ignoramous
avar Juerd: ah, then it's understandable;)
Juerd avar: But I think it's doable, and would be a huge boost for Perl 6 and the wikipedia projects.
avar Juerd: I don't really think this is a nice application to port;) 19:13
Juerd avar: I do. And when it's ported, it can be made nice.
avar: Technically it's a mess.
avar: But that's mostly becauso of ph.p
php.
avar well, not really
Juerd avar: Given PHP, there is no option of doing these things in a nice way
wolverian hrm, why does S09 talk about @array and $array[0], and %hash and $hash{foo} under Autovivification?
Juerd wolverian: It should probably be $array and $hash 19:14
[note: haven't read the text]
avar Juerd: anyway, I just ran in and I'm running out again 19:15
Juerd: want to discuss this later?
Juerd avar: Bye
avar: Sure
wolverian Juerd, it says $hash{foo}, too.. isn't that foo a bareword in perl6?
nothing_pasta wolverian: it should be %hash<foo> 19:16
Juerd wolverian: Barewords are NOT illegal. Barewords are NOT bad.
gaal no such thing as a bareword in perl6
nothing_pasta but it might possibly be my patch
in which case i was sticking some Perl 5 example code
19:16 siosiosios joined
Juerd wolverian: Unquoted strings are bad, and now illegal. Any bareword foo is just foo(). 19:16
Well, not illegal, just nonexistent 19:17
nothing_pasta wolverian: that's my fault
i was confused
%hash<foo><bar>
wolverian ah, ok.
nothing_pasta i was writing the "bad" perl 5 example
and then stayed in that mode ;-)
i have no environment in which ti patch it now
backlog for "nothingmuch.*whine" to find out why ;-) 19:18
wolverian yeah, I know :)
condolences
nothing_pasta *sob*\
i'll take it in tomorrow and we'll see what comes out of it
LeTo nothing_pasta: p5 examples could also have 'use 5;' or some such in front to avoid confusion 19:20
theorbtwo Or be styled seperately, though I suppose that's difficult to do in POD. 19:23
LeTo yep
gaal =for nostalgic value
19:24 b_jonas joined
wolverian the AES could use perldoc.perl.org's pod2html thing, too, it makes cute code blocks. :) 19:24
(well, someone would have to write the perl6 part, of course..)
gaal and we have perl6.vim too
LeTo gaal: that would be stripped then, I presume, unless you are 'nostalgic value'
gaal no, I am the strange bogon attractor 19:25
LeTo but value 3->3->4 ;) 19:26
gaal though from making a presentation w/syntax hilighting I must say vim coloring from pod is slow :( 19:27
}->
LeTo vim needs a better VM e.g. parrot
wolverian why is the syntax highlighting built into vim anyway? isn't there a common unix tool for it? meh. reuse, people! 19:28
nothing_pasta ciao
LeTo: yes, I agree
but perhaps not in this specific example, as it's 1 expr
gaal well, I bet Text::VimColor <-> spork could be integrated more tightly, it's probably parses (that could be avoided) that are slow 19:29
(nak 3->3->4, LeTo) 19:30
nothing_pasta Kwiki::VimMode 19:32
gaal er, yeah. phone 19:33
fglock can PPI be reused to parse p6? 19:39
nothing_pasta fglock: prolly not elegantly
the approach in Perl 6 is to generalize the parsing a bit
and PPI's biggest challenge was dealing with the quirks and special cases, from what I heard 19:40
you might as well use any parsing module in that case
which could be more easily extended, p'raps
fglock I'm looking for parsing modules in CPAN - there is not much except for Parse::RecDescent 19:46
19:49 weinig is now known as weinig|off
Steve_p Parse::YAPP? 19:54
fglock Steve_p: looking 19:58
kolibrie fglock: there's also HOP::Parser 20:02
fglock kolibrie: this may be a good idea - it resembles a bit PCR internals - I'll see if it can be used as PCR runtime engine 20:10
kolibrie fglock: cool 20:11
fglock I'm not sure about the license 20:12
kolibrie kind of a weird one
20:21 kanru joined, KingDiamond joined 20:23 Odin- joined 20:31 ruz joined 20:33 SamB joined 20:35 pmurias joined
fglock "quantifiers returning a list of match objects" (s05) is really weird - I'm trying to return the captures of the subpatterns and I have to use a bunch of map's to get there 20:37
20:41 weinig|off is now known as weinig
pmurias kolibre: how is the HOP::Parser licence different from the BSD? 20:42
fglock pmurias: HOP::Parser won't help much - it doesn't implement all nodes/data PCR needs 20:44
pmurias fglock: whats wrong with the current engine? 20:48
as a optimalisation Perl6::Rules could be used in some cases 20:50
fglock it's hard to maintain the whole set of tools - I was looking for something to use as a base module 20:52
I've got an optimized version - but I want to have completeness/correctness first
I was trying Perl6::Rules - but it segfaults in PxPerl 20:54
merlyn Perl6::Rules is very fragile 20:56
more "proof of insanity^Wconcept" 20:57
fglock :)
pmurias merlyn: do you know any parse modules which are actively developed or have well documented internals?
merlyn none. ever. :) 20:58
PRD was actively developed, but not well documented :)
fglock I was trying to implement subscripts, then I met an infinite recursion - I thought it was an error in PCR, but it is my rule - I think I found the fix
merlyn HOP::Parse is currently being developed, but not well documented
subscripts require left recursion unless you're careful 20:59
you might check out my PRD "eval" parser
damian liked it at one point
google site:stonehenge.com save eval
safe eval
fglock the problem with PCR is that I never know if the bug is in my app or in PCR 21:00
merlyn www.stonehenge.com/merlyn/LinuxMag/col29.html
fglock but lately it has always been my app
merlyn I had an infinite recursion until I figured out how to break it
but I was also dealing with lvalues vs rvalues etc.
fglock looking 21:01
merlyn gotta go
fglock thanks!
pmurias merlyn: thanks too! 21:02
fglock: got to sleep now (we have a crapy timezone in Poland) 21:05
good night
fglock pmurias: good night!
LeTo audreyt: +++( 5. Treating Str as SvLV makes no sense at all. ... This should totally die, then Str becomes immutable... ) 21:06
fglock LeTo: how is the state of embedding parrot in p5? (in order to reuse PGE) 21:07
LeTo parrot + p5 is stalled currently
not good might be an answer ;) 21:08
21:10 larsen joined
fglock I have a "working" p6 parser in p5 - but in order to really make it work there are a bunch of things remaining to implement - so I'm also looking for alternatives 21:14
a refactoring of Pugs::Grammar::Category would fix most problems 21:16
tewk: ping 21:25
21:30 weinig is now known as weinig|out 21:37 larsen_ joined 21:39 justatheory joined 21:41 fglock left 21:42 lumi joined 21:45 frodo72 joined 22:02 larsen joined 22:15 frodo72 is now known as PolettiX 22:16 PolettiX is now known as frodo72 22:18 frodo72 is now known as froh-doh 22:19 froh-doh is now known as poletti 22:20 fglock joined, poletti is now known as PolettiX
fglock audreyt: ping 22:26
22:27 PolettiX joined
audreyt fglock: pong 22:35
about to pack to leave tokyo for .twnow 22:36
the quantifier-returning-a-list: it may help to think that it returns a special MatchList object. 22:37
22:39 justatheory joined
fglock audreyt: I'm wondering whether to apply for a tpf grant, maybe for improving P::G::Category into a proper extensible grammar 22:43
even if I would work on it anyway
do you think it might be worth working on this, or I'd better work on parrot for example 22:45
I'm not sure how serious people are thinking of perl6 on perl5 22:46
audreyt I think you should submit a grant for working out P::G::* 22:49
and explicitly say that you will make it run the "perl6 grammar" specified in rules 22:50
clkao audreyt: greetings
audreyt and allow sharing of this grammar with parrot-based and ghc-based implementations
clkao: yo
fglock ok 22:51
audreyt fglock: I think for the short term
p5 is the most important vm for P6.
clkao audreyt: i am annoyed with p5 api. otherwise data::bind is doing fine 22:52
audreyt there may come a day wheree spidermonkey or parrot or yarv or something else becomes more important
clkao anyone is planning to do the Module::compile bit for the syntax?
audreyt clkao: woot! I think the point of D::B is that other people won't need to be annoyed again
it encapsulates the annoyance
clkao what i hit now specifically is aliasing array or hash 22:53
audreyt clkao: I can get people looking at it in my osdc.tw tutorials
clkao which tutorial? 22:54
fglock audreyt: about the other ping: do you have an example of p6 code that can only be parsed top-down? I'm trying to figure out why we need both top-down and bottom-up
audreyt fglock: bareword => 'literal'
clkao audreyt: there were rumours about inviting you or miyagawa to a london tech meet or perl weekend ish thing. when will you be in europe again? 22:55
audreyt fglock: also, \(...switch to Arguments syntax...)
:(...switch to Signature syntax...) 22:56
rx{...switch to Rule syntax...}
fglock: it might be that we can unify all top-down as "quoters"
22:56 Limbic_Region joined
audreyt fglock: and use conditional {return...} to reparse 22:57
fglock: but I havn't seriously thought about that approach.
fglock {..perl6 syntax...} {...hash...,}
audreyt fglock: right, the hash autoexplosion 22:58
involves postprocesses froma topdown rule
fglock: basically all the "non-normalized" parts require a topdown
and lord knows there are a lot of those in p6.
clkao: definitely after July 22:59
my euroscon proposal wasn't accepted
I need to get up and eat and pack now :)
fglock can these fit into 'term', such that they can be mixed with operators?
audreyt talk to you later...
fglock bye
audreyt fglock: sure... it's always like that to my mind 23:00
callbacks from bottomup to topdown always use them as terms
different sublanguages has different callback
to topdown rule under the term position 23:01
that's what DynTerm does in my haskellop parser
bbl... & 23:02
TimToady: I'm really glad too... coupled with the subsequent work on strings and (lack of) references (they are in the backlog)
TimToady: I can say that P6 fits in my brain now 23:03
forthe first time ever :)
Limbic_Region proof that men will never understand perl6 - given: 1. Men will never understand women 2. audreyt understands perl6 - proof is self-evident 23:04
audreyt understanding is perhaps not transitive 23:05
fglock :)
TimToady well, have a good transit to .tw
audreyt =)
Juerd Limbic_Region: But why would men not understand things that women do understand? It's not exclusive :)
audreyt Juerd: Limbic_Region's argument holds iff understanding is transitive 23:06
Limbic_Region Juerd - it is like the proof that women are evil. It only works if you don't look too closely but it is funny enough not to bother
fglock is there a single precedence for infix:<+>, or does it depend on the operands?
Juerd audreyt: I don't know what that is
audreyt Juerd: A relation R is transitive if x R y & y R z => x R z.
TimToady single precedence as far as I know
Juerd audreyt: I see
audreyt fglock: infix can't know its operand's dynamic types at parse time anyway.
fglock: so it's not allowed to bias 23:07
Juerd fglock: I hope that the operands *can't* have influence on precedence, and that the language protects sanity by not providing the option.
fglock what if a redeclare infix:<+> precedence? does it change lexically or is it an error?
TimToady probably error, or at least a dire warning 23:08
audreyt fglock: the same infix:<+> can't exist on two prec levels
fglock that's nice to know (I was wondering how to implement this)
audreyt it is definitely an error if that happens
TimToady Unless you give some trait that says you know what you're doing. :)
audreyt re-preccing it is probably only doable with 1. killing the original infix:<+>
2. install a new one relative to other stuff's prec 23:09
but I wouldn't sorry about supporting that at this point :)
s/sorry/worry/ # freudian slip
TimToady You can program any language in Perl 6, but we kinda prefer Perl 6.
fglock biab & 23:10
audreyt TimToady++
23:10 mind joined
TimToady audreyt: don't spend too much time blabbing with us. Ingy only made his flight by a 5-minute margin. If he'd gotten off at the wrong terminal... 23:11
clkao I also made my flight by -10-minute margin 23:12
23:12 bepi joined
TimToady that's a negative 10? 23:12
clkao yes
luckily the airport was nearly empty and the flight arrived late
PolettiX lol 23:13
TimToady they told Ingy "don't do that again
clkao same with me
or, unluckily, otherwise i could get back to tokyo for 2 more days, or even a short trip to taiwan!
TimToady audreyt: btw if you are unsure which terminal, there's a little posting down at one end of the train car saying which airlines are at which terminal. 23:16
which we didn't know till after we'd made the (fortunately correct) guess on his part. 23:17
23:18 bepi left 23:21 fglock left 23:22 fglock joined 23:34 clkao joined