Summer of Perl | 6.2.12 released! | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org | www.treehugger.com/files/th_images/paradigm.jpg
Set by nothingmuch on 12 July 2006.
00:05 vel joined 00:08 bsb joined 00:17 weinig joined 00:25 hikozaemon joined
dduncan fyi, I noticed yesterday that a bunch of Pugs documentation and tests (and impl) seemed to be out of date compared to the synopsis regarding comparison operators and the like, such as === vs eqv, so I will now proceed to update the first 2 as I can 00:31
svnbot6 r11956 | fglock++ | pX/Pugs-Compiler-Rule - added Parsec.pm, 11-parsec-t 00:35
00:36 weinig joined 00:46 toku_away is now known as tokuhirom
svnbot6 r11957 | fglock++ | pX/Pugs-Compiler-Rule - merged Pugs::Runtime::Common 00:46
00:52 dolmans joined 00:59 gaal joined
svnbot6 r11958 | fglock++ | pX/Pugs-Compiler-Rule - merged Makefile.PL 01:11
01:15 mjk joined 01:42 bsb joined
meppl gute nacht 01:45
01:54 tup joined 02:04 xdg joined
svnbot6 r11959 | Darren_Duncan++ | docs/Perl6/Overview/ : updated Data.pod and Operator.pod to bring them up to date in some respects, make fixes, etc ... please review 02:07
02:25 aufrank joined 02:26 Schmooster joined
audreyt the fact that ruby allows "x".chop! is very disturbing to me. 02:27
wolverian and somewhere a small star is quickly estinguished 02:28
s,es,ex, 02:29
audreyt :D
wolverian++
wolverian I'm actually not sure if that's weird, if you think of "" as a constructor. 02:32
audreyt a constructor for mutable arrays? 02:33
wolverian right 02:34
audreyt but a string is very far from a mutable array :)
wolverian a mutable string then
audreyt then remembers that ruby still doesn't have a coherent unicode view for strings
*nod*
wolverian it's probably a bad thing to allow, as it's probably always a user error, but the planes do align in my head when thinking aobut it 02:35
and my fingers aren't working this early
audreyt > strings = %w[foo bar baz] 02:36
lambdabot Parse error
audreyt irb> strings = %w[foo bar baz]
irb> strings.freeze
irb> strings[0] << 'oo' # still works
I guess that's why there needs to be a symbol type where .chop! is not allowed
but it still seems strange to confuse strings with buffers 02:37
02:37 christopher joined
wolverian hm, .freeze documentation: "There is no way to unfreeze an object." Array#frozen: "Return true if this array is frozen (or temporarily frozen while being sorted)." 02:38
wolverian throws a tantrum
audreyt lies! lies!
"There is no way for _you_ to unfreeze an object"
wolverian ah.
wolverian greps ruby source for 'melt' 02:41
audreyt its UNSET FL_FREEZE
wolverian I wish .frozen was called .cool
audreyt has been deep in YARV internals for a while now :)
wolverian it fits ruby so much better
ah, thanks
audreyt sub f ($x) { variable($x).type.say }; f(3); f($_=3); 02:42
I wonder if both should say "Int", or if both should say "Scalar", or if only the latter should say "Scalar", or something.
wolverian is $_ special here, or could it be my $y in the assignment? 02:43
audreyt s/type/meta.name/
could be my$y
this question is whether
"$x is readonly"
actually makes a Pure from a Mut
ie. pass in as if it's a value 02:44
or if it just slaps SvREADONLY (aka FL_FREEZE)
wolverian Val[Int]
audreyt on a container and send it in
wolverian I'm not wizard enough for this :)
dduncan wouldn't "x".chop return a new string, and so the original is not mutating?
wolverian dduncan, but .chop! is mutating 02:45
audreyt i.e. if it's ByVal or ByRefButLocked
I think I like ByVal better (i.e. there's no Scalar involved in the body of &f in either case) 02:46
that also means if $y is tied
f($y) will FETCH and pass in that
instead of calling FETCH whenever it's demanded in body of &f
which methinks is more consistent...
dduncan now, I'm still in the progress of updating some docs and tests, but it would be helpful to me if things like !=== and eqv and !eqv would parse ... as well as "sub foo of bar ..."
they didn't yesterday 02:47
wolverian yeah, byval seems purer (cough)
audreyt I'm very biased *cough*
obra morning, audreyt 02:48
dduncan and also, maybe its just the examples not showing the generalities, but I don't see any practical difference between "sub foo of bar (...) {...}" and "sub foo (...) returns bar {...}"
wolverian I'm beginning to be too
dduncan aka, they just look like alternate syntax for the same thing 02:49
I would like to use the former but it doesn't parse yet ... even if they have different meanings, I would appreciate an interim implementation where "of bar" parses into the same thing as "returns bar"
biab 02:50
audreyt obra: hi 02:55
TimToady: !ne is fine right? 03:04
wolverian huh, operator negations? that's new. 03:05
03:06 amnesiac joined
audreyt yeah. !~ is now !~~ 03:08
all infix chainassoc is now !able 03:09
wolverian nice
dduncan I'm inclined that !ne should fail the same as !!eq does 03:10
audreyt why?
is eq "better" than ne?
is lt "better" than ge? :)
dduncan as if that old shortcut was pre-converted from ne to !eq before the other rules were evaluated 03:11
on the other hand ...
we could allow !ne for syntax consistency, but it would just look weird if it was used
simpler to implement
!ne would become eq
audreyt syntax consistency I think is good 03:12
dduncan but people are already allowed to say "not not cond" anyway
s/but/and/
audreyt because if user defines "like" and "unlike"
as infix chain comparison ops 03:13
it's hard to disallow !unlike
without going thru very weird contortions
fully implemented, btw.
committing 03:14
r11960 03:18
dduncan making that rev now ... 03:20
svnbot6 r11960 | audreyt++ | * Implement "chain infix autonegation" rule:
r11960 | audreyt++ | 1 !== 2
r11960 | audreyt++ | 1 !~~ 2
r11960 | audreyt++ | 1 !eqv 2
r11960 | audreyt++ | all works now. "eqv" is new too.
dduncan audreyt, thank you for that 03:23
(still have to test ...) 03:24
audreyt thank you for prodding :)
yeah, tests would be sweet
dduncan when I say "test" in this case, I uncomment the Relation.pm lines that use some of those and check that they compile this time
on a related note, could you do that seemingly quick "sub|method foo of bar" as well? 03:25
even if the spec semantics are different, having it just parse and alias to "returns bar" for now will meet my short term needs 03:26
s/needs/wants/
make done ... 03:27
audreyt coding 03:28
done 03:34
svnbot6 r11961 | audreyt++ | * Implement "sub x of Int { ... }" as promte by dduncan. 03:35
dduncan thank you ... making that 03:37
I also have a question ... given the rules of subs vs methods, ...
for a subroutine that implements === for my own object ... 03:38
I have said: multi sub infix:<===> of Bool (Foo $x, Foo $y) { ... 03:39
now if I want to do that as a method instead ...
and change 'sub' to 'method', and remove the first parameter
can I still invoke a method using infix notation, or do I call it some other way?
eg, can I say $foo === $bar and have it call my method then? 03:40
will try ... 03:41
03:41 [particle] joined
audreyt you probably can't 03:42
unless there's a multi infix:<===> () in place
that can redispatch with a method call
otherwise it's a sub call only and never a method call 03:43
03:43 justatheory joined
audreyt hm, there's a Mono counterpart to ActivePerl.NET 03:44
razor.occams.info/code/perlsharp/
lambdabot Title: PerlSharp
dduncan okay, so everything I wanted to write yesterday now actually compiles 03:48
but I get a warning: You probably don't want to export an operator name; instead define a new variant on the new operator (eg. multi sub *infix:<+>): "&infix:==="
audreyt that's... quite bogus
it's luqui's warning
dduncan this is in regards to: multi sub infix:<===> of Bool
(Set::Relation::H $lhs, Set::Relation::H $rhs) is export {
return $lhs.is_equal( $rhs );
}
audreyt that's before export can handle multis
dduncan I was looking to see if I can reliably say $myobj1 === $myobj2 now, or if only $myobj1.is_equal( $myobj2 ) can work for now 03:49
audreyt let me look. a sec? 03:50
dduncan yes
no pressure
svnbot6 r11962 | Darren_Duncan++ | ext/Set-Relation/ : updated Set::Relation::H.is_equal() to use the less verbose \!=:= and \!eqv, which now parse thanks to r11960 ; updated all routines to 'sub|method foo of bar' from 'sub|method foo returns bar', thanks to r11961 ; audreyt++ 03:56
dduncan now for me to test its execution ... 03:58
04:11 jikanter joined 04:21 agentzh joined
agentzh is preparing the patch for S06 04:22
04:36 weinig is now known as weinig|sleep
svnbot6 r11963 | audreyt++ | * infix "leg" operator -- what "cmp" was. 04:44
audreyt what would "$*ERR eqv $*OUT" mean, I wonder. 04:45
i.e. does it make sense to compare two external objects for equality
dduncan question ... what is the syntax for iterating the values of a Junction? ... 04:49
eg, I want to designate in a for loop that there is no coupling between iterations
I tried "for all(@ary) ->" but that didn't work, and saying "for =all(@ary) ->" didn't either 04:50
audreyt for all(@ary).values
dduncan thank you
audreyt np :)
agentzh S06 explains the difference between the "of" type return values and the "inner" type over and over again, which is rather verbose and annoying IMHO. :( 05:07
on the other hand, i think the Tree Unpacking section in S06 deserves more explaination. :=) 05:08
agentzh thinks S06 nearly killed him in the past few days. 05:10
audreyt any java people around?
I wonder how .equals works with not-in-memory objects
like handles, processes, etc
audreyt further ponders perl6's lback of private methods and how that may be a win overall 05:12
s/lback/lack/
gaal good morning
audreyt hey! 05:13
gaal hello :) how many equality tests do we have now? == eq === eqv
anythign else? ISTR someone saying lisp had five?
audreyt == and eq are built upon === 05:14
gaal wants a summary of these. which one of them is $^a.valid == $^b.valid ?
agentzh gaal: === is 05:15
gaal agentzh: thanks
agentzh np :)
gaal so how are == and eq built on it, and what's left for eqv?
agentzh gaal, autreyt: what do you think of the idea of having "is(foo, bar, :todo<6.28.0>)" in pugs test suit? 05:16
by doing this, this test will expire automatically once we are at 6.28.0 05:17
audreyt just 6.28 would do
gaal nah, other implementations use out tests but not our numbering system
audreyt but then that is pugs specific
agentzh audreyt: nod
audreyt :pugs<6.28>
:)
agentzh nice! 05:18
dduncan this is a minor nit, but upon launching pugs at the command line, I get what looks like 2 versions of the same message:
Loading Prelude... Reloading Prelude from source...done.
gaal :todo<:pugs<6.28>>
agentzh :pugs_todo<6.28>
dduncan is there another option that can display instead of the second instance?
05:18 kane-xs joined
audreyt :todo(:pugs<6.28>) 05:18
dduncan: rm blib6/lib/Prelude.yml
gaal todo => pugs => 6.28
audreyt and "make" again 05:19
that typically means your .yml is somehow broken
agentzh audreyt: but i think :todo<6.2.13> will still be important if we are todoing tests before the release.
dduncan either way, it loaded almost in an instant
audreyt agentzh: I agree but it shouldn't be pugs specific...
gaal audreyt: read 1/2 the open types paper last night, very nice! 05:20
audreyt maybe just change :todo<feature> to :pugs<6.28>
agentzh audreyt: okay
i will add that to Test.pm later
and also the test suit
audreyt danke
gaal: the class-based one? 05:21
dduncan that file didn't exist, and running pugs again produced just the normal message
maybe it is automatically removed now?
audreyt dduncan: "make" should rebuild that file
05:21 xinming joined
audreyt weird 05:21
unless I somehow broke prelude generation
can someone confirm? it works here (rm blib6/lib/Prelude.pm and "make") 05:22
gaal audreyt: yes, ralf 05:23
dduncan I have a Prelude.pm.yml, but no Prelude.pm
gaal you may need to rm pugs too 05:24
dduncan and Pugs still seems to work normally regardless
05:24 vsoni joined
dduncan that extra message didn't happen again 05:24
gaal ah, maybe you did make install sometime and it's being loaded from @INC?
plus you have a fast computer :)
dduncan: could you strace and see where you're loading the prelude from? 05:25
dduncan my computer is slow compared to many of yours ... about 4 years old and takes 2 hours to run the pugs smoke
maybe the yml prelude is just fast
I have never installed pugs on my system afaik, and I don't think I have strace anyway 05:28
probably a transient ... nothing to worry about now
05:28 vsoni left
gaal huh weird, I'm running make and in building pugs-fps everything is being chansed twice 05:29
*chased
audreyt er, yes, I build profiling now
dduncan I have also never built Pugs in any way but the default way
gaal ah, good
agentzh thinks that with :pugs<x.x.x>, there will be no TODO tests for v6.pm and other non-pugs implementations then (unless they define their own TODO named options) 05:30
it's obviously a good thing 05:31
dduncan if I understand you right, that would seem to work in a system where my %FEATURES suggestion isn't implemented
agentzh for both pugs and v6.pm
dduncan eg, there are no todos except those tied to specific impls by those tags 05:32
agentzh dduncan: that will be even trickier.
dduncan that is, your tags seem to be a good solution for short term
gaal oh, audreyt, I forgot to say ++ on the micro-make in build_pugs :) 05:33
agentzh and your solution is good for long term
dduncan I wouldn't say so with the tags for long term, since ideally the test suite shouldn't know any identifying details of any implementations
svnbot6 r11964 | audreyt++ | * --enable-library-profiling doesn't work on cabal 1.0...
agentzh dduncan: i prefer the easiest way of doing things. :) 05:34
gaal anyway, regenning of Prelude.pm.yml worksforme
dduncan on a different matter, right now I'm troubleshooting why a for-loop seems to be only iterating once rather than twice ... that is, debug messages only print out once 05:35
agentzh dduncan: defining proper feature sets is a lot of work
dduncan sure, and it may be easier to do with a framework written in a language, like mine, rather than for a whole language
agentzh aye 05:36
dduncan eg, at the very least, I would expect something like DBI to include a features() driver-handle function that lets you query what database/api features a particular DBI driver supports
or that would also be a connection-handle function
an order of magnitude simpler, but same principle
agentzh yes 05:37
agentzh goes back to creating patches for S06 05:38
05:41 kanru joined
lumi audreyt: Java's .equals concept is defined by the individual classes 05:44
audreyt lumi: right, I wonder what does external-entity objects define 05:48
gaal lumi: does java take care of ensuring Elk a and Moose b are always unequal or does the equals method need to test instanceof manually?
lumi gaal: It takes care of nuffin. It says ".equals should be symmetric", but that's totally your job 05:49
agentzh pugs still installs pugs.exe.bat on Win32. :(
gaal oh, so not only is it poor mmd, it's also a lot of work :(
gotta go... & 05:50
agentzh ?eval my $pair = :when<now>; (%$pair).say 06:02
06:03 evalbot_11936 is now known as evalbot_11964
evalbot_11964 OUTPUT[] Error: Cannot cast into Pair: VRef <Pair> 06:03
agentzh is it a pugs bug?
if no, then it's a synopsis error. :)
audreyt bug :) 06:04
agentzh whose bug?
i'm not sure $pair should be a Hash object or a Pair object here. 06:05
audreyt %$pair is correct 06:06
agentzh audreyt: okay
so a Pair will converts to a Hash automatically?
*convert
gaal a pair is a hash already, of one elem. (isn't it?) 06:07
agentzh gaal: (!)
06:07 marmic joined
agentzh i thought they're two different kinds of objects 06:07
gaal they are, but i think the synopses mention that a pair can be viewed that way. 06:08
agentzh gaal: oh?
gaal: S0?
gaal L<S06/Immutable Types>: "Seq of two elements that serves as an one-element Mapping" 06:09
svnbot6 r11965 | audreyt++ | * Pugs.Val: More interface work
agentzh gaal: thanks
looking now 06:10
gaal you'll note that it's an immutable type, so it's indeed on a different level of thinginess than Hash is
gaal goes now for real &
agentzh gaal: thx 06:11
dduncan ?eval [1,2] 06:14
agentzh i'm currently introducing a new kind of magic L<..> syntax to pugs test suit: L<S06/Immutable types/Pair "a one-element mapping">.
06:14 evalbot_11964 is now known as evalbot_11965
evalbot_11965 [1, 2] 06:14
dduncan ?eval (1,2)
evalbot_11965 (1, 2)
dduncan oh right ... 06:15
?eval [1,2].ref
evalbot_11965 ::Array
dduncan ?eval (1,2).ref
evalbot_11965 ::Array
agentzh that is, using keywords in a POD paragraph instead of perl regex: L<S06/Immutable types /.../>
dduncan that one should be a Seq
?eval [1,2] === [1,2]
evalbot_11965 Bool::True
dduncan should be false 06:16
the current impl seems to alias === to eqv and treat both of the above as arrays
audreyt yes. I'm working on that :)
agentzh add a test?
dduncan probably an early shortcut
audreyt (in Pugs.val)
dduncan first things first ... see if someone already wrote that test ... 06:17
I will look now ...
agentzh yeah
?eval [1,2].ref.say 06:18
evalbot_11965 OUTPUT[Array ] Bool::True
agentzh ?eval (:when<now>).ref.say 06:19
evalbot_11965 OUTPUT[Pair ] Bool::True 06:20
agentzh ?eval (:when<now> :who<audrey>).ref.say
evalbot_11965 Error: unexpected ":" expecting comment, operator or ")"
agentzh ?eval (:when<now>, :who<audrey>).ref.say
evalbot_11965 OUTPUT[Array ] Bool::True
audreyt agentzh: fixed 06:22
svnbot6 r11966 | audreyt++ | * allow single-pair hash and pair to be used interchangeably. agentzh++
06:22 mindbob joined
agentzh audreyt: thx. i'm adding a test for that 06:23
audreyt yay
agentzh is glad to see audreyt is in the same time-zone as his now. 06:25
audreyt too 06:30
dolmans `say $_ for 1,2,3;' worked as expect but `say for 1,2,3;' did not, is this normal or not? 06:31
svnbot6 r11967 | Darren_Duncan++ | ext/Set-Relation/ : added new test script t/20_Heading.t with 12 line items ; updated Relation.pm so it executes correctly (this is the first time any part of Relation.pm has executed)
TreyHarris audreyt: the powers-that-be at $job supposedly are ready to approve my open-source-contribution application, so hopefully i'll be able to start actually using that commit bit soon :-) 06:32
dolmans ?eval say $_ for 1,2;
06:32 evalbot_11965 is now known as evalbot_11966
evalbot_11966 OUTPUT[1 2 ] undef 06:32
dolmans ?eval say for 1,2;
evalbot_11966 OUTPUT[ ] undef
dduncan of the 12 added tests, 4 fail ... it is possible that they will just work when the pending Pugs update(s) regarding types and equality tests have been done, but I'll revisit then 06:33
TimToady ?eval .say for 1,2;
06:34 evalbot_11966 is now known as evalbot_11967
evalbot_11967 OUTPUT[1 2 ] undef 06:34
dduncan ?eval {1=>2,3=>4} eqv {1=>2,3=>4}
gaal agentzh: I believe that magic syntax exists already.
evalbot_11967 Bool::False
dduncan when that returns true, the 4 tests will probably work
gaal nothingmuch and theorbtwo are responsible.
agentzh gaal: the existing L<...> uses regex 06:35
gaal ...and?
agentzh gaal: and i think we should switch to keywords instead
for example, L<S05/blah blah/key "key word" "another one">
by doing this, we can make the links more reliable and more explainatory 06:36
gaal and what does it mean? \b\Qword\E\b ?
I mean, waht does having several keyords mean there?
agentzh it means that all the keywords given should be appear in the same paragraph
gaal and the locator is to where? the paragraph start? 06:37
agentzh the keywords identify a paragraph in POD
gaal: the paragraph itslef
*itself
gaal the current way is a kludge, but at least it allows arbitrary locators inside a paragrapgh
see eg the test-to-spec thingie
it puts a footnote inside a sentence. 06:38
agentzh gaal: we can also locate at the level of sentences if needed
i think the idea is exactly the same, but different syntax and different matching approach
gaal of course there's fragility when it comes to wrapping, you need to use the same source
agentzh yes, wrapping should be handled properly 06:39
gaal well, L<Snn/Para/key1 key2 key3> -- anchors at the first occurence of key1?
agentzh gaal: currently i'm thinking in terms of paragraphs instead of sentences right now. 06:40
i'm thinking about something like expandable "labels" in HTML instead of "T" hyperlinks. 06:41
err, following the current "T" mechanism, i think anchors should be put at the end of the sentence with "key1", "key2", and "key3" in it. 06:42
gaal brb 06:43
agentzh that's a natural way from my point of view: read this synopsis sentence, and then look at some test cases...
06:44 iblechbot joined
gaal in lit classes for humans the locator is usually "the paragraph starting with..." 06:54
sorry, must go again :(
06:55 agentzh joined
agentzh ?eval foo(*%opt, *@list) { %opts.say; } foo(:a<3>,'b','c',:d<2>) 06:56
evalbot_11967 Error: unexpected "{" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
agentzh ?eval sub foo(*%opt, *@list) { %opt.say; } foo(:a<3>,'b','c',:d<2>)
evalbot_11967 OUTPUT[a3d2 ] Bool::True
agentzh TimToady: i think this behavior is not defined in S06. 06:57
dolmans how can write test case to validate the block's output? - `say for 1,2;', it is possible capturing output of a code snippet?
agentzh (IIRC)
dolmans: redirect $*OUT?
i've been pondering that as well 06:58
?eval my $val; $*OUT := $val; say "Hello, wolrd!"; 06:59
evalbot_11967 OUTPUT[Hello, wolrd! ] Bool::True
dolmans cool, try that
agentzh dolmans: not sure if it works in pugs
it seems not. 07:00
dolmans it a pity, not worked. 07:01
*it's
gaal say in evalbot is always hardcoded to "real" stdout 07:02
dolmans also in pugs. 07:03
gaal that said, I doubt scalar-does-IO is implemented in pugs
dolmans see
gaal: have another solution to capture outputs currently? 07:05
gaal only via file, for now :( 07:07
dolmans oh, see. patch expecting. 07:08
07:12 agentzh joined
agentzh ?eval my $pair = :when<now>; (%$pair).ref.say 07:12
evalbot_11967 OUTPUT[Pair ] Bool::True
agentzh audreyt, gaal: is it correct? shouldn't %$pair be a Hash now? 07:14
dolmans typecasting dosn't change an object's nature? 07:20
07:22 froh-doh joined
agentzh dolmans: hmm, i believe %$pair.ref eq 'Hash. 07:25
an English-related question: "a C<.assuming> method" or "an C<.assuming> method"? 07:26
i'm not sure whether "." should pronounce here.
Synopses give inconsistent answers. 07:27
TreyHarris i think "a". i'd pronounce it "a dot-asuming"
agentzh TreyHarris: thx. will add that to my S06 patch.
07:29 buetow joined
TreyHarris agentzh: did you already catch two instances of "positonal", and "Other sigils binds only" 07:30
unfortunately, until $job's lawyers get their act together, i can't submit diffs :-( 07:31
so i've been accumulating them :-)
agentzh TreyHarris: looking
TreyHarris: i've found the latter. thank you for pointing it out. i apparently missed that one. 07:34
TreyHarris: but i can't locate the former. 07:35
is it in S06?
TreyHarris um, maybe it's been corrected, i haven't read diffs in a few days
search for "always a positional arg"
agentzh okay. 07:36
TreyHarris it used to by if it's now "always a positonal arg"
agentzh TreyHarris: there're a lot of "always a postional arg" in S06. ;-)
TreyHarris right, but just search for "positonal", which is a mispelling. there are three of them on the current version 07:37
agentzh okay!
TreyHarris: got them! 07:38
i'm tooooooo careless.
TreyHarris good
agentzh thx
07:40 xinming_ joined
dduncan ?eval {1=>2,3=>4}.ref 07:40
evalbot_11967 ::Hash
dduncan eval (1=>2,3=>4).ref
?eval (1=>2,3=>4).ref 07:41
evalbot_11967 ::Array
gaal fwiw I disagree, if it's the .assuming _method_, the dot is silent. So I'd say "an". 07:42
07:45 nothingmuch joined
agentzh gaal: S09 uses a .assuming while S06 uses an .assuming. 07:47
should it be "is assoc('chain')" or "is assoc('chaining')"? 07:49
07:49 byte joined
TreyHarris gaal: then how do you distinguish between ".assuming" and "assuming" in spoken speech? 07:49
agentzh S06 is contradictory on that tag
07:52 xinming_ is now known as xinming 07:53 neoesque joined
pasteling "agentzh" at 210.22.200.67 pasted "My patch to S06 (also including fixes from TreyHarris++). it will be sent to p6-l later. comments are very welcome. :)" (541 lines, 19.5K) at sial.org/pbot/18820 07:55
svnbot6 r11968 | agentz++ | [t/data_types/pair.t] 08:02
r11968 | agentz++ | added two tests for "%$pair" (one of them is still failing, audreyt?)
r11969 | Darren_Duncan++ | updated t/operators/value_equivalence.t to double up the line items, where 1 version uses === and the other eqv, and updated docs in the file ... further updates still required 08:11
08:15 dduncan left 08:20 xinming_ joined 08:21 drrho joined
spinclad agentzh: '-Marks a subroutine as being memoized. 08:24
agentzh spinclad: (?) 08:25
spinclad ' is better than 'memorized' i think
agentzh spinclad: is "memoized" correct?
spinclad: really? i was thinking it is a typo. ;-)
audreyt it's not :) 08:26
spinclad 'made into a memo' -- a computer hackers' neologism
agentzh ah, thank you all!
i've already removed that fix from my patch. :=) 08:27
audreyt agentzh++ 08:28
bbiab
spinclad agentzh++ # excellent grasp of technical English style 08:31
# rare to find even in anglophone lands 08:36
08:37 nothingmuch joined
nothingmuch clkao: tea arrived! 08:37
spinclad ,oO { this is the Abstract Syntax Tea, with functors ? } 08:38
08:38 xinming joined, Astinus- joined
nothingmuch spinclad: it's fairly concrete 08:39
08:39 agentzh joined
spinclad .oO { Tea sets, captures spoon } 08:40
nothingmuch i don't know how to retort to that 08:41
agentzh spinclad: thanks. :=)
08:41 Astinus- left
audreyt gaal: I think "Val" and then "MOP" and then "Exp" 08:41
is three distinct modular steps
so I'll switch Pugs.AST.Internals.Val to Pugs.Val first 08:42
and then MOP
all the while retaining the old Eval
and then switch to new Exp
should be easier for my brain to handle as well :)
gaal whee
spinclad .oO { already dreaming... good time to sleep -- ooh! shiny! } &
gaal TreyHarris: perhaps if the sentence is about the method, it shouldn't mention the dot? 08:43
.oO { ELF and COFF, ee! } 08:44
.oO { elk and caribou, whee } 08:45
08:47 chris2 joined
spinclad .oO { elven syntax tea, with kirth and rune } Oo. 08:48
agentzh supper time, brb & 08:53
08:54 agentzh left
gaal ~/ suppertime, and the living is easy.. /~ 09:02
09:04 Aankhen`` joined, Revision17 joined 09:08 neoesque joined 09:24 elmex joined 09:31 froh-doh joined 09:46 neoesque joined 09:56 Southen joined
gaal audreyt: I'll read the rest of the class-open-types paprt tonight, and I have tomorrow free - I hope I can help with some of the stuff? 09:59
gaal mooses 10:07
audreyt good
10:07 ruoso joined
audreyt moose! 10:07
getting Val converted would be a wonderful first step already
Schmooster converted to...? 10:08
svnbot6 r11970 | audreyt++ | * Work in progress: generalized casting interface
r11970 | audreyt++ | (need testing on GHC 6.4 to see if I broke the build)
audreyt Schmooster: to Pugs.Val.Val
from Pugs.AST.Internals.Val
Schmooster ahh, Val's not a person then :S
audreyt :D
Schmooster i have much p6 learning to do. 10:09
10:09 penk joined
Schmooster I think I'm possibly in a position to start now, as I've just converted 17k+ lines of Cplusplus to Perl (3 months :/ ) 10:10
10:10 jferrero joined
Schmooster is there a place where I can check out the main tasks underway/need doing in terms of continued development of the language? 10:11
audreyt the TASKS file 10:12
Schmooster aha, that would make sense
10:13 kane__ joined, cm joined
audreyt ...which I just updated :) 10:13
svnbot6 r11971 | audreyt++ | * add this weeks's tasks for perl.com newletter to TASKS. 10:14
Schmooster may I ask a dumb question? which TASKS file where? 10:15
audreyt TimToady: I just had an epiphany. "want" should simply be &return.signature.
10:15 penk joined
audreyt Schmooster: search.cpan.org/dist/Perl6-Pugs/lib...c/Hack.pod 10:16
lambdabot Title: Pugs::Doc::Hack - How to hack on Pugs - search.cpan.org
audreyt the TASKS file under svn.openfoundry.org/pugs/ (i.e. the checkout dir)
lambdabot Title: Revision 11971: /
Schmooster ah, the pugs one 10:17
cool
10:18 lollan joined 10:19 lollan joined 10:20 lollan joined
Schmooster so, audreyt how long have you been working on things? 10:21
10:24 agentzh joined
Schmooster ahhh, now I get the moose ref :) (pugs.blogs.com) 10:25
10:25 Odin- joined
agentzh oops! forgot to mention the "a .assuming" vs "an .assuming" confusion explicitly in my mail to p6-l. :( 10:26
audreyt Schmooster: since Feb 1st 2005 10:27
Schmooster and how've you been finding ? 10:28
are you full-timing?
audreyt was fulltime for nearly a year
ran out of money
so about 50% of time now
Schmooster good show :)
audreyt (the other 50% of time I hack Jifty for $job)
Schmooster I'm just picking up Moose now, seeing what you've done 10:29
audreyt having lots of fun :) most of the first year is spent on de-handwaving
Schmooster de-handwaving?
audreyt collapsing the design into concrete spec
Schmooster ahhh 10:30
audreyt by showing, via code, that the spec doesn't quite work :)
I'd say we have a much saner spec now :)
Schmooster good, seems like that would have been needed
audreyt and now the spec is solidified a bit, and reflected in tets
I'm refactoring the code to meet the new spec
so I can poke new holes in it
etc, etc. 10:31
Schmooster do you think Pugs is likely to end up being the True Core?
audreyt I don't think there will be a True Core...
Schmooster good answer
audreyt the era of runtime-speicific languages is past us
agentzh hooray! 10:32
audreyt hooray indeed.
Schmooster ...which would be why it's worth hacking at the spec enough to prove it's fallible parts...
audreyt ...and the tests. yes.
I'm responsible for, oh, maybe 1% of the tests.
but that's the most valuable part in the pugs tree :)
agentzh *nod* 10:33
Schmooster from recent experience, I would say YES
audreyt also, _not_ having me writing tests has shown to be a good idea
agentzh so pugs test suit needs love
audreyt since it's too easy to test only what I code for :)
agentzh: verily. see TASKS
agentzh k 10:34
Schmooster wood for the trees, and such :)
audreyt nodnod
Schmooster I'm assuming you're of the persuasion that a job's never finished? (that's my outlook) 10:35
that's not meant as a slight, or insult, or anything 10:36
buubot or is a scurvy black-spotted whoreson!
audreyt well, yes and no... I've passed on my past projects to others
PAR to tsee, Module::Install to Alias, etc
Schmooster seems to be Par for the course ;)
audreyt so of course they are never finished
agentzh audreyt: so we won't TODO any failing tests before pugs' release? 10:37
audreyt but it would be "good enough" at some point :)
Schmooster so is it fair to say you have a role in the evolution of Perl6/Pugs?
audreyt agentzh: right. :pugs<6.28> sounds better
Schmooster: well, obra calls me the Pugs anarchitect...
agentzh audreyt: gotcha
audreyt that seems like a label I'd be happy with
Schmooster good title :) 10:38
gaal the title of the talk i gave at $work last year about pugs was "The Perl of Anarchy"...
Schmooster i'd like to add, at this juncture, that the BBC employs a large number of Perl coders :) 10:39
10:39 Aankh|Clone joined
audreyt yeah. I get support requests from them :) 10:39
for Encode::HanConvert or Locale::Maketext::*, I forgot 10:40
Schmooster really?
audreyt *nod*
Schmooster were they valid requests, or people who hadn't dug deep enough to work out what was going on? 10:41
audreyt valid requests
Schmooster ah, ok. 10:42
I was almost ready to start making derogatory comments about certain work-mates ;)
audreyt nah :)
so... what's your email addr?
I'll send you a commit bit so you can check in to pugs's repository
Schmooster i'm [email@hidden.address] 10:43
audreyt sent. to test the commit, add yourself to AUTHORS
welcome aboard :)
Schmooster thank you very much :)
audreyt :)
Schmooster I don't know how useful I'll be, but I'll endeavour to _not_ screw things up ;)
audreyt you'll do fine :) 10:44
Schmooster hmm. interesting start :) the "I agree" button takes me to a blank page, in firefox 10:45
audreyt ctrl-r
force-repost; the session db has acted strangely before 10:46
I should get them switched to db-less client-side sessions some day :)
Schmooster yep, same as :)
is that not RT's fault, then?
svnbot6 r11972 | audreyt++ | * add Data.Seq.
audreyt might be SQLite. not sure -- I'm not in charge of the machine anymore... 10:47
gaal wow, :>: is interesting!
anyway, audreyt, seems to build OK on 6.4.1 10:48
audreyt gaal: it is :D I think the time I'll save with it is worth the couple hours I banged my head with GHC's typeclass rules
cool
gaal I only vaguely grok it now, still not-really-here...
audreyt (a :>: b) is standard type theory notation that a is a supertype of b 10:49
which means that b can be upcasted to a with no loss of precision (liskov)
Schmooster must dash to work. thanks for the chat, audreyt 10:50
audreyt np. have fun! :)
Schmooster oh, I shall :)
audreyt gaal: and :<: is just a class synonym that allows for (deriving)
Schmooster you also :)
audreyt because currently you can only derive something that has your tyvar at the final position 10:51
(all this is probably going to be fixed by 6.6. gawd how I pine for 6.6 :))
gaal :-) 10:52
svnbot6 r11973 | agentz++ | [TASKS] 10:53
r11973 | agentz++ | added tasks for new TODO mechanism ":pugs<6.x.x> and :perl5<0.xxx>"
r11974 | audreyt++ | * oops, typo 10:56
11:03 Aankh|Clone is now known as Aankhen``
lichtkind audreyt just one more question, no mercy with refractoring... also no fear of duplication (so to have all info in one place in the tutorial, maybe beside things that really belong into the fudfaq) 11:07
audreyt nod 11:08
lichtkind yeah i yesterday checked out and began to read the existing material :) 11:11
11:16 lichtkind_ joined
wolverian hm, where should I read on (:>:)? (also, that is a very schizophrenic smiley) 11:20
audreyt wolverian: Pugs.Intenals 11:21
wolverian thanks
audreyt used in Pugs.Val
wolverian time to pull, then. I'll check out TASKS while I'm there. been doing too much summer.
audreyt yay :D
wolverian eh, it seems to be my ~/.svk is busted (i.e. removed). but I have ~/pugs. can I make svk reuse that? 11:22
audreyt sure
wolverian yay
audreyt but do you know which rev # is that?
wolverian no..
audreyt if you built pugs
then ./pugs -V should tel lyou
-v even 11:23
wolverian wow, r10217
I don't trust that number
audreyt uhm
then just recheckout.
wolverian yeah.
audreyt svk trunk has "svk co --floating"
that puts .svk/ in the checkout dir
may be handy
(makes it darcslike)
wolverian wasn't that something that was fixed in svn->svk? ;)
I could use the darcs mirror too, I suppose 11:24
audreyt yeah, but some people prefers the state to be saved per dir ;)
wolverian I actually like darcs a lot
is it sane to use the darcs mirror? 11:25
gaal funny, some people know'd prefer it to be global /SVK
except that they actually wouldn't use svk
or versrion control at all for that matter
amazing they even use a computer 11:26
11:27 ivas joined
audreyt ok, clever migration plan checked in 11:29
svnbot6 r11975 | audreyt++ | * Pugs.Val.Val is now introduced to Pugs.AST.Inernals as a new 11:32
r11975 | audreyt++ | "V" variant type. The idea is that, like "PerlSV", we can
r11975 | audreyt++ | migrate values piecemeal to the new Pugs.Val regime, removing
r11975 | audreyt++ | one variant of the Pugs.AST.Instances.Val at a time, while
r11975 | audreyt++ | keeping the runloop intact.
r11975 | audreyt++ | (Eventually PerlSV will just become a Ext value under the new regime)
lichtkind_ wow
which admin can please kick lichtkind out of this room ?
11:33 ChanServ sets mode: +o audreyt
svnbot6 r11976 | audreyt++ | * Pugs.Val.Str -- first sketch of a Val class 11:33
11:33 lichtkind was kicked by audreyt (audreyt))
audreyt ...but that wouldn't help :) 11:33
need to log it out somehow 11:34
11:34 audreyt sets mode: -o audreyt
wolverian well, that was confusing. maybe I should tell my client not truncate nicks to 9 characters. 11:36
nothingmuch lichtkind_: register your nick with nickserv 11:40
then you can use it's nick reclaimation services
to auto kick yourself
svnbot6 r11977 | audreyt++ | * GHC 6.4.x needs -fallow-overlapping-instances for :<: to work. 11:45
lichtkind_ nothingmuch what is this? 11:48
nothingmuch lichtkind_: /msg NickServ help 11:49
lichtkind_ ah thx
nothingmuch it lets you register your nick
and only if you're registered you can /msg people
and if you got disconnected you can release the nick by simply loging in with your password 11:50
11:52 lichtkind_ is now known as lichtkind
gaal what's freenode for su - ? 11:53
("-!- mode/#perl6 [+o audreyt] by ChanServ")
wolverian uh. what's #perl7 in TASKS? :)
I assume it's a typo 11:54
audreyt gaal: /msg charserv op #perl6 11:56
typo. fix it :)
wolverian hrm I think I somehow did that, in fact 11:58
my vim foo is weak today 11:59
yup, no 'perl7' in the file :)
gaal /7r6:wq
12:00 xdg joined
wolverian :) 12:00
azuroth_centeric what do the freemasons do? 12:06
wolverian masonry 12:07
12:07 lollan joined 12:08 bradb left
broquaint And control the world. 12:08
gaal azuroth_centeric: en.wikipedia.org/wiki/Freemasonry 12:15
azuroth_centeric pfft. wikipedia is written by the freemasons themselves 12:23
lichtkind azuroth_centeric yeah freemason are strong there
12:31 bpphillips joined
gaal I think the myth of freemasons is all fiction, invented by freemasons 12:47
lichtkind thats definitly not true
gaal or maybe that's discordians?
webmind no, by the illuminatie ofcourse... ;)
lichtkind look at all the old cathedrals in europe 12:48
who build them?
rgs freemasons are to masonry what free software authors are to software authorship
gaal administers copies of _Foucault's Pendulum_
lichtkind of cource free masons
gaal I want a t-shiurt: Free As In Masons!
lichtkind haha 12:49
gaal rgs++
lichtkind but freemasonary got perverted like most sacred things
pendulum was quit boring book
12:56 vel joined
gaal stretches 13:00
13:23 mauke_ joined
audreyt done for tonight 13:26
see you some 10 hours from now
newstyle values is now exposed to language level via `str` 13:27
svnbot6 r11978 | audreyt++ | * Tighten up the Pugs.Val hook by handling the valType and
r11978 | audreyt++ | Pretty cases (currently both are bogus).
r11978 | audreyt++ | * Implement parsing for qx{...}, q:exec{...} and `...`.
r11978 | audreyt++ | However, instead of invoking some sort of readpipe,
r11978 | audreyt++ | they are now hijacked to construct V-PureStr so we can
r11978 | audreyt++ | test interoperability between oldland Str and newland
r11978 | audreyt++ | Str. This should also make strings faster and more
r11978 | audreyt++ | compact if it can be made to work...
13:27 fglock joined
audreyt gaal: I'm too exhausted to write about any of this... if you get some cycles, a quick overview of CapInternal/MOP/PugsVal/etc on the blog would be lovely 13:28
*wave* 13:29
gaal will try in about 5 hr
audreyt yay 13:30
gaal nighty night!
audreyt the goal is to make `foo` work Correctly (tm)
up and including `foo`.meta
.get_methods
etc
at which point we switch 'foo' to it
fglock hi!
gaal audreyt: ok. do you have scaffolding for compilation tests? 13:31
audreyt "make pugs"
./pugs -e 'say `foo`.meta' 13:32
gaal oh i saw you mention there's an incremental moose
tres cool.
audreyt yeah.. the best way to avoid bduf
gaal uh, what's `foo` though?T
audreyt fglock: hi!
hijacked syntax
gaal ah :)
audreyt was parsefail anyway
so I feel less guilty 13:33
gaal (have root on your language implementation)++
audreyt qx{foo} and `foo` currently constructs V-PureStr
once it all works we can rename VStr to vStr
gaal oh, r11978. missed the commit moosage...
audreyt s///g
where vStr :: String -> Val 13:34
vStr x = V . val (cast x :: PureStr)
gaal wow, with fps? so cool
audreyt++
audreyt the next obvious step is "instance Value Val.Val" 13:35
gaal thanks to the :>: thing that packs back and forth, yes?
audreyt in the oldland Internals.hs
yup
gaal *very* nice
audreyt write a oldland castV is just V
oldland fromVal is callmeth
though I'm a bit torn -- I think mmd infix:<as> is good for general object-to-object casting 13:36
but I like a lighter-weight interface for casting to pure values
you know, like ruby to_f to_s or CLR IConvertible 13:37
gaal do we mmd on return type?
audreyt or perl5 SvNV SvPV
no, "as" takes type proxy
"x" as Int
infix:<as>("x", Int)
gaal nod
fglock audreyt: do I have to write the 'as' method, or is a default generated magically?
13:38 mauke_ is now known as mauke
audreyt fglock: Object.as just redispatches to infix:<as> I think 13:39
or maybe the other way around. not sure 13:40
13:41 agentzh joined
audreyt fglock: not sure which "I" you mean 13:41
13:42 justatheory joined
svnbot6 r11979 | fglock++ | pX/Pugs-Compiler-Rule - fixed test count; 13:42
r11979 | fglock++ | - 'use Pugs::Runtime::Match::Ratchet' now just loads Pugs::Runtime::Match
audreyt but I need to sleep :)
see you tomorrow! 13:43
fglock scw: in pX/PCR, t/11-parsec.t has some minor differences in the test results
agentzh night, audreyt.
fglock audreyt: "I" is the class author 13:44
audreyt: good night
agentzh fglock: what do you think of adding v6-alpha-specific TODO options to Test.pm?
for example, is($got, $expected, :perl5<0.100>, :pugs<6.28.0>) 13:45
fglock: so the Perl 5 implementation can have its own TODO tests.
fglock: please also see TASKS for more info. :=) 13:46
fglock agentzh: I'm ok - I'm not sure about using 'perl5' as the identifier
agentzh fglock: or v6<....>?
i think v6 is confusing here. 13:47
[particle] if this is to be done, it should be generic for all platforms (incl parrot)
agentzh [particle]: we can also have :parrot<1.001> or some such
fglock p6p5, p5 ?
agentzh p6p5 sounds cool 13:48
or even lrep?
[particle] what does the platform/version tag give you?
that is, what info does it convey?
i think the harness for your impl should track todo/skip 13:49
agentzh [particle]: :pugs<6.28.0> means this test is a TODO before pugs' version gets 6.18.0 or greater.
[particle] agentzh: how do you handle bugs for a specific impl version?
or two, or three. 13:50
just because it works in one version, doesn't mean it'll work in the next
agentzh [particle]: it's a TODO tag in essence.
[particle] yes, but it should not be in the tests, which are designed to be generic 13:51
'pure perl6'
agentzh [particle]: when the current version ge the specified one, the test will expire to be unTODO'd
[particle]: but we need to mark some tests to be TODO before the pugs release anyway.
[particle] agentzh: let's say parrot/perl 0.2 has a bug that 0.1 and 0.3 don't.
agentzh [particle]: it's not for tracing bugs at all. it's for marking TODO tests only. 13:52
there's no guarantee for the tests to pass for a higher version. 13:53
but there's the guarantee that the test won't be a TODO test for a higher version. 13:54
[particle] well, then, let's say we throw out a subsystem for a while, in order to reimplement
clkao nothingmuch: hurraah!
[particle] i'm just saying i don't think greater-than-or-equal-to-number is expressive enough
nothingmuch clkao: =D
clkao: it's very nice
agentzh [particle]: so you think a better way is to put the list of TODO tests for a specific implementation into the harness configure files, right?
clkao excellent 13:55
nothingmuch i only need some place to store it...
[particle] agentzh: i feel the same way about C<use 5.008;> too btw
agentzh: yes
clkao i slept for 12 hrs :/ 13:56
[particle] agentzh: svn.perl.org/parrot/trunk/t/compile...01-regex.t
nothingmuch clkao: tell your friend(s) thanks for me?
agentzh [particle]: this mechanism is only for making TODO tests expire themselves.
clkao nothingmuch: sure 13:57
agentzh [particle]: what does qw<94> in 01-regex.t? 13:59
*mean
[particle] agentzh: it means test 94 is todo
that could easily be qw<94 123 456> 14:00
agentzh [particle]: hardcoding test number is fragile, i'm afraid.
[particle] um, no.
they're implementation dependent
agentzh [particle]: so 01-regex.t is a test harness. okay.
[particle] it is true that it's typical, and better, to keep todo data with each test. 14:01
agentzh yes, the TODO list is separated from the real tests.
[particle] but when writing a test suite that multiple language implementations will target...
agentzh separation means more chances to get out of sync. 14:02
[particle]: nod. there're arguments for both sides.
[particle] i think the tests should not be modified just to update todo info for a single implementation 14:03
yes, agreed, both sides.
you know which side i take ;)
agentzh [particle]: but i think :pugs<6.x.x> and p6p5<0.100> have no bad effects.
14:04 prefiks joined
agentzh oh, yes, updating the tests once a new implemenation is born. 14:04
this is not a good thing. :=)
[particle] s/born/updated/
agentzh *agree* 14:05
[particle]: so we should maintain a list of TODO for Haskell pugs and another list for v6.pm?
[particle] yes.
and javascript, and parrot, and whatever else.
in a format that's easy for that particular implementation.
agentzh well, that needs more work.
[particle] that is, you don't have to do it my way ;) 14:06
agentzh of course. ;-)
okay, particle, i'll think about it.
[particle] however, a standard config format may make it easier for language implementors exchange info on todo reasons.
okay!
agentzh *nod* 14:07
[particle] let me know if i can help
agentzh sure!
gaal none of the schemes I can think of for this are ideal
[particle] gaal: agreed.
gaal putting TODO info away from the test risks breakage when test # changes
agentzh gaal: any other sultion to this?
[particle] we need to settle for practical, and pragmatic.
gaal putting it in the ok() line sucks because it makes for long ok() lines
agentzh aye 14:08
gaal as well as the problem with for @various_data -> ok test($)
though that already existed
[particle] yep
gaal only now it's worse ecause different implementations may be differently buggy 14:09
[particle] i expect they will be
agentzh identifying tests in the test suit is as hard as cross-referencing tests and Syn
gaal testing is hard, let's, uh...
[particle] ...scrap the test systems and just write more code? 14:10
gaal agentzh: presumably harder! triaging the num tests e.g. was very painful
agentzh the most easy way in the short term is using :pugs<6.x.x> or so.
*the easiest
gaal: nodnod
gaal I wonder if there's some declarative way of doing it 14:11
agentzh gaal: use magic comments?
gaal like:
agentzh is(foo, bar) ## pugs<6.28.0>
[particle] still, any implementation dependent changes force the test repo to change
gaal todo(:pugs<6.x.x>, :v6); is...
14:12 justatheory joined
agentzh yes, the TODO info is still in the test suit 14:12
[particle] which may be okay, *if* the tests are put into an independent repo
agentzh separating them is tooooooo dangerous.
fglock clkao: I think pX is ok to merge back - I only see some minor fails in t/11-parsec.t, which may be due to the Rule grammar fixes
clkao *nod*
gaal a todo function in Test.pm to change state of expected next test
agentzh the problem is our test suit is changing everyday.
as well as the synopses.
clkao you merge my hcanges to Common?
gaal the upside with that is that it's easily conditional, too 14:13
fglock clkao: yes
gaal todo() if $pom ~~ Gibbous
agentzh todo()?
[particle] gaal: can this also be arch dependent?
gaal and who knows, with some magic we might beable to pull off todo_to_block_end
agentzh: I'm proposing &Test::todo 14:14
agentzh arch dependent is a wonderful dream.
[particle] the case where it passes parrot/linux, fails parrot/win32
gaal 17:11 < gaal> todo(:pugs<6.x.x>, :v6); is...
not a smart comment, n actual function call.
fglock 08-test.t runs in 20s, and 0.2s with precompiling 14:15
agentzh the tests affected by the &todo function is always the next test?
gaal [particle]: that would be todo(:parrot) if $*OS ~~ "MSWin32" 14:16
agentzh: yeah
agentzh gaal: thinking...
gaal agentzh: unless like I said we figure ut a "todo to end of block" variant
[particle] gaal: great. one other thing, what if it's todo(:parrot) if <some parrot config option>
eg: in parrotland $PConfig{has_icu} 14:17
agentzh gaal: nod
gaal: just like perl5's Test::More
gaal [particle]: todo is just a function call, so that'll work.
clkao fglock: want to do the merge? -perl6 can be merged without conflicts
gaal agentzh: yes, because we're imperative and not OO.
agentzh aye
gaal von newmann's gotta be good for somehting :-p 14:18
[particle] gaal: function call in what language? p6? i can deal with that, but that means there are new requirements to run Test.pm
(compiler/os introspection)
gaal but surely Test::Builder can also have a too method that only sets the expected state for the test instance.
agentzh i think we can still allow named arguments like :pugs in &is/&ok/etc, because they're more concise.
[particle] not that that's a bad thing to have in order to run a test suite, but it's a requirement.
agentzh [particle]: it's a good thing. :=) 14:20
gaal [particle]: no, the decision to call todo is all in the test file. it can make its decision whichever way it wants or can
[particle] perhaps we should just let the language implementations branch
14:20 cjeris joined
gaal anymoose sorry, I really gotta go again... 14:20
this isn't a difficult change to Test.pm, comits welcome :-) 14:21
s/om/omm/
&
[particle] cya
fglock clkao: can you do it? I would just copy pcr over the old one 14:22
clkao uhm. ok. and kill the ones under pX?
fglock yes, after the tests pass... 14:23
14:25 tokuhirom is now known as toku_away
svnbot6 r11980 | agentz++ | [TASKS] 14:27
r11980 | agentz++ | renamed :perl5<0.xxx> to :p6p5<0.xxx> per fglock
r11980 | agentz++ | added &Test::todo which was proposed by gaal++
14:29 hexmode joined
[particle] agentzh: what if we guarantee each test is named identically? 14:32
gah! s/idental/unique/
agentzh how can we do that?
[particle] sorry morning fingers
if we say each test must be named uniquely 14:33
agentzh [particle]: Hmm, it's feasible, i think.
[particle] then we can specify todo by test uid, rather than (fragile) test number
agentzh aye
just like ingy's Test::Base 14:34
[particle] indeed
agentzh so by doing this, the test suit can be cleaner.
svnbot6 r11981 | fglock++ | v6.pm - Makefile.PL cleans the precompiled rules cache
agentzh no :pugs, :p6p5, and :parrot messing around.
[particle]++ 14:35
[particle] yay
agentzh++ # glad we could finally agree :)
agentzh i'll read through the test suit to see how that works out. 14:36
yes!
not sure if audreyt will like it because it would be harder for her to TODO and unTODO a specific test. ;-) 14:39
she will have to keep a pugs-todo file handy. 14:40
[particle] sure, unless we have some magical $EDITOR macros 14:41
agentzh heh
making test names unique also needs some work. 14:42
clkao fglock: i need to shave some yaks first..
agentzh [particle]: feel free to work on the pugs test suit harness when you have some cycles. :=) 14:43
[particle] i'll take a closer look at it, for sure.
agentzh i'd like to focus on the tests themselves.
yay! 14:44
[particle] ok. well, my first goal is to get parrot/perl6 passing 01- and 02- tests
but i'll be looking at pugs tests very closely after that's done
agentzh okay! 14:45
14:47 kanru joined
fglock clkao: ok! I'll now take a look at p6p6 to see if something changed 14:49
14:53 jferrero joined 14:54 iblechbot joined 14:57 miyagawa joined
gaal what's a test name, it's description? 14:58
doesn't work in loops
unless you tuple it automatically with the iterant, but that might be mangled by the time you get to the test 14:59
14:59 marmic joined
gaal and actually there may be a loop (say, while) that doesn't even have an iterant -- although I bet this isn't the case right now 15:00
agentzh gaal: only TODO tests should have a name. ;-)
[particle] gaal: i don't care if it's description, or some other field
agentzh non-TODO tests are left as usual.
gaal plus of course not all tests have a desc, though argumbly forcing writers to add them is a good thing
agentzh indeed 15:01
gaal [particle]: the point is that some tests run in loops
agentzh tests should have good description.
gaal agentzh: that's like saying a parser should be fast :)
[particle] gaal: since this suite is to be used by multiple implementations, stricter requirements are not a bad thing
gaal: test uids can be generated
(in the case of loops, etc) 15:02
gaal when?
how does it look like?
[particle] i don't know yet :)
agentzh gaal: how about introducing a loop counter to generate a name? 15:03
gaal how does the test know it's in a loop?
svnbot6 r11982 | fglock++ | pX/Pugs-Compiler-Rule - fixed token <%hash> capture; added test
agentzh we feed a name to the tests
gaal if you have the programmer add the nonces it may as well be fully manual
agentzh is($got, $expected, "blah blah" ~ $i++) 15:04
[particle] ok( 1, "$description: $counter" )
right :)
it places a small burden on the test writer to follow the convention
gaal note that if there's a bug in the test it might come up with incorrect counters
etesting control structures 15:05
"e.g. testing"
[particle] no test system is perfect
gaal wow, I'm a lousy typist when I lag
[particle] we all know this is an imperfect solution, we talked about that not too long ago
agentzh concrete examples may be easier to handle in a specific way. 15:06
15:06 justatheory joined
gaal what do you need the unique name for again? putting the todo lists outide the test file? 15:06
15:06 stevan joined
agentzh gaal: yes 15:06
that's the goal.
gaal are we content that that goal is worthy? 15:07
agentzh so there will be no explicit TODOs in the Pugs test suit.
gaal I still think you want to see the todoitness of a test when you look a the source...
[particle] i am.
(content)
but i'm willing to hear counter-arguments
agentzh gaal, [particle]:
maintaining an external file may be a burden. 15:08
but it can make the tests cleaner.
especially when more and more Perl 6 implementations arise.
[particle] i say: the tests must test the spec, not the implementation. 15:09
agentzh having :pugs<xxx>, :p6p5<xxx>, and :parrot<xxxx> will be a pain.
[particle] good summary 15:10
gaal more pain than editing an external file when I want to todo a test? tha's what I'm not sure I agree with 15:11
kolibrie I would rather see the TODO information in the tests, it seems too dangerous to put that information elsewhere
[particle] gaal: i'm hoping for some $EDITOR magic
gaal plus putting todoitness in the test makes it possible to have conditional todoities 15:12
[particle] kolibrie: i'd rather not see unnecessary info in the test files (said from the language implementor perspective)
gaal putting it in external data means you either can't do that, or you need a language to express the conditions
[particle] gaal: express it on the way that's native to that implementation
that is, an implementation-dependent way 15:13
gaal so the todo summary contains code?
[particle] sure!
it's a *test harness*
agentzh if there were only one Perl 6 implementation, we needn't worry about such things for sure. but there're already three.
gaal I'm skeptical about $EDITOR magic here - especially if test names are not literal strings. 15:14
kolibrie another benefit to keeping TODO info with the tests is it is easier to compare implementations if the test TODOs are together
gaal well, you'd want to compare smoke actual results for that 15:15
*actual smoke
kolibrie tue
true
gaal and if you want to compare what implementations bid for, it's arguably easier to do it in a centralized todo repo
the prime thing that's nagging me is the immediacy for the programmer 15:16
If I add new tests, I don't want to be slowwed down by maintaining an external resource
adding tests should be as easy as possible :-)
kolibrie I think the TODO info will get out-of-date easiily, and will be hard to correct, if TODO info is external 15:17
so I'm with gaal 15:18
agentzh [particle]: considering that the Pugs test suit itself is still evolving, maybe a direct approach may be more practical?
for now, implementation independencies may be less important than development productivity. 15:19
PerlJam TODO info should go with the test. 15:20
I too am with gaal if that's his position :)
gaal I can see the arguments for both sides, but I'm leaning for locality.
agentzh hey, folks, how about having both? 15:21
gaal consider also things like this are easy to do:
PerlJam agentzh: if you want to share tests across implementations, then modify the harness to grok something that allows implementation specificity.
gaal perlcabal.org/~gaal/pugstest/slide12b.html#end
lambdabot Title: Example answer
PerlJam agentzh: "both" just makes the problem worse IMHO
agentzh heh
gaal I think TODO is only the first problem... 15:22
new implementations may not beable to parse sophisticated tests
agentzh all right. stick to todo(:pugs<x.x.x>) then. :=) 15:23
gaal so they'll write simpler ones, and there may be a good reason not to even enter those on other implementations
PerlJam gaal: Um ... more tests can't hurt :)
gaal but then there's the risk of missing out when interesting test cases *do* come up...
well, nobody said 15k tests are easy to manage 15:24
PerlJam: yes and no
it's nice to have an obvious place to look when you want to see tests for X
agentzh is($got, $expected, :pugs<6.28.0>, :p6p5<0.100>)
gaal if there's also a t/feature/x-simple ...
(also, we wantmake test to be fast, but let's not admit that) 15:25
agentzh: with the possible declarative additions.
agentzh gaal: like ?
15:25 crem_ joined
PerlJam I don't care if "make test" is slow. As long as it's fast enough. 15:26
gaal agentzh: you know, that &Test::todo function I mentioned
agentzh yes, i know. i've already added that to TASKS.
gaal todo :pugs<6.28.0>; todo :p6p5<0.100>; is $got, $expected, "moose";
agentzh heh, looks nice 15:27
todo :pugs<6.18.0> :p6p5<0.100>; is $got, $expected, 'elk';
gaal PerlJam: some of us are suffering from multicolored trauma on this subject
PerlJam as long as the tests aren't obscured by the todos :)
gaal agentzh: of course it looks nice, it has a moose in it! 15:28
agentzh ;-)
kolibrie is the version optional? I certainly don't know which version a test no longer can be todo
PerlJam gaal: Then I think that some of you people should recalibrate how often tests should be run :)
gaal kolibrie: yes optional
agentzh if the version optional, the TODO tests won't get expire unless you unTODO it explicitly.
kolibrie ok 15:29
agentzh *if the version is omitted
gaal PerlJam: exists %you_people<PerlJam> == 1
ah you mean some of the traumatized? 15:30
PerlJam aye
gaal well, no, I think we grumble and make pugs faster.
PerlJam yes, a faster pugs would be excellent. 15:31
agentzh kolibrie: when we're TODOing tests only because there will be a release soon, we can safely set "todo :pugs<next_point_release>". 15:32
gaal bbl&
15:33 amnesiac joined
kolibrie agentzh: yes, that makes sense 15:33
agentzh :)
#perl6++ # discussing problems effectively 15:35
15:37 Limbic_Region joined 15:45 rodi joined
agentzh bedtime & 15:47
15:47 agentzh left 15:48 [particle] joined 15:57 weinig joined 16:00 weinig joined, prefiks joined
gaal oh noes! foundry is down? 16:17
16:17 iblechbot joined, Limbic_Region joined
kolibrie is not getting a response from openfoundry either 16:19
16:21 hexmode joined 16:23 [particle] joined
[particle] is back from the land of the internet-disconnected 16:26
kolibrie welcome
[particle] did i miss anything more about testing & todos? 16:27
kolibrie several more votes to keep todo information with the test
[particle] heh. it's a tough problem. 16:28
kolibrie I think that was the consensus when the conversation died down
Limbic_Region Is Pugs known to be b0rk on Win32 ATM? 16:32
perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
16:33 Psyche^ joined
pasteling "Limbic_Region" at 129.33.119.12 pasted "Build failure on Win32" (38 lines, 3K) at sial.org/pbot/18823 16:33
TimToady i like todo :foo<> :bar<>. And I think the history of pod has proven the wisdom of locality. 16:35
But I also think it'd be good policy to put todo on its own line.
gaal Limbic_Region: try nuking dist/ in third-party/.../
Limbic_Region k
there is no dist in third-party 16:36
[particle] but does todo() before ok()?
gaal TimToady: agreed, and even allow todo :foo<>; todo :bar<> to aggregate
[particle] s/but//
Limbic_Region just fps, HsJudy, HsSyck, installed, judy, and TextRegexLazy
gaal?
gaal for clear patches from different distros
TimToady I wonder if it could use the call syntax but be a comment? 16:37
just to keep it out of the visual clutter
gaal Limbic_Region: I mean inside HsSyck
Limbic_Region: look deeply
TimToady # todo :foo<1.2.3>
ok(...)
[particle] i think the tests should be as close to data-only as possible. we're testing the specification.
Limbic_Region ahh
gaal TimToady: that would need a strong implementation
or a hacky one :-)
TimToady sed -e 's/&# todo/todo/' 16:38
s/&/^/
[particle] wonders if that's strong or hacky
TimToady in general I'm opposed to meaningful comments, but this seems like a good place for them. 16:39
gaal what I was wondering in the shower was how to make todo_to_block_end work
$?CALLER::LEAVE := { ... }
[particle] i'd love to read timtoady's last post as a comment in some source somewhere :)
TimToady that would be too machiavelian for me... 16:40
but then, someone who is too machiavelian would say that, wouldn't he?
16:40 maco132 is now known as mako132
[particle] perhaps even machiavelli 16:41
gaal plus again I'd make the conditional todo argument
TimToady 'use todo :foo<1.2.3>' might be an easy way to get block scoping 16:42
gaal TimToady: it assumes lexical pragmas, which nobody has yet
not even Perl 5 :)
TimToady well, so? I'm just the chief handwaver here...
SamB heh 16:43
[particle] only in perl6 is handwaving a salute.
gaal and although pugs will get them soon (leut. handwaver here), fledgling implementations surely can't be expected to
and it's them that have more todos...
[particle] indeed. 16:44
our implementation is still insane, according to the tests.
but once it is (and barely) i expect we'll need to update 99% of perl6 tests with :parrot(...) 16:45
SamB thinks that the idea that perl6 could be implemented more than once is rather odd
gaal wow, that took me too long to make sense of [particle] :)
[particle] :)
gaal SamB: how come? how many times has c been implemented?
or haskell? or pascal? or basic....? 16:46
SamB many
C is much simpler than perl6
BASIC is not well standardized
gaal little bit
SamB Haskell is not bad either, it has all that math 16:47
TimToady audreyt: &return.signature could indeed be the long name of want, assuming that &return can be taught to construct itself lazily or at compile time. .signature can of course do the work that must be deferred till runtime. 16:48
16:48 Psyche^ is now known as StudiesInWords
SamB with Haskell the problem is to implement it efficiently, rather than to implement it 16:48
[particle] that's the same problem with parrot, samb 16:49
SamB hmm
TimToady heck, let's just write a gcc front-end. :)
SamB you are crazy indeed! 16:50
gcc front-end...
[particle] heh, i've seen questions about that on #parrot
SamB gcc is so messy
[particle] also seen questions about parrot as a gcc-backend
16:50 Aankhen`` joined
SamB how about a GHC frontend instead ? ;-) 16:50
TimToady isn't that what it is already?
[particle] shivers
TimToady oh, you mean parrot... 16:51
SamB oh, I dunno what I mean
TimToady that's okay--I'm fond of permutational humor.
SamB except that it probably involves linking code with GHC 16:52
that is, with GHC's code
TimToady Haskell chip, anyone?
gaal hee
SamB are they anything like nachos? 16:53
TimToady call it Symbollux or some such.
gaal SamB: we already have eval :lang<haskell>.... (hs-plugins)
SamB: did you see GOA? It is teh awesome
SamB I was thinking you'd have to hack GHC itself, but maybe that new API would make this unneccessary 16:54
GHCi on Acid?
gaal when I get some tuits I'm adding a pugs plugin to \bot
yes
xerox++
SamB I saw a screenshot of it running some lambdabot commands
gaal yes, that's what it is. really nice.
SamB it also had some psychadelic background image 16:55
gaal that too.
SamB what is it anyway? 16:56
gaal what's what? 16:57
TimToady hmm, maybe TODO {...} can be a block property.
SamB I mean, how does GHCi on acid work? 16:58
is it a .ghci file or something?
gaal TimToady: uh, that'll only be useful on whole blocks...
SamB maybe with some modules to go with it?
gaal SamB: ":load /home/roo/src/goa/src/GOA.hs" and some :defs 16:59
yes, .ghci
Limbic_Region gaal - should removing third-party\HsSyck\dist require a realclean or something? If not, same build error
gaal :def is the superglue at work.
TimToady gaal: that would in addition to todo(), not instead of. 17:00
gaal Limbic_Region: yeah, I just backlogged and noticed it's maybe dist/build that needs to be nuked, sorry
TimToady: ACK. but that leaves the middle case untreated.
surely there's a sicker hack than changing the language spec for this. :) 17:01
Limbic_Region gaal - but wiping out dist would get rid of build too?
[particle] is the pugs repo down? (can't svn up)
gaal [particle]: yes :-( 17:02
rodi can't hit that repo either.
[particle] ah. okie then.
gaal Limbic_Region: I mean pugs toplevel dist/, not 3rdp
gaal is getting weird errors that look like hsc/FFI breakages now 17:03
Limbic_Region: in short try make realclean
TimToady arg to TODO is a closure, and can contain conditionals
but I'm just brainstorming... 17:04
I'll think more about it in the shower. & 17:05
rodi cd TimToady; make clean; 17:06
;)
[particle] rodi: you should be using the SOAP api
Limbic_Region trying now 17:07
17:08 lisppaste3 joined
rodi LOL 17:08
[particle] this v6-alpha stuff isn't working well for me :(
gaal this openfoundry breakage is frustrating because I didn't pull A's latest wizardry 17:09
oy: 17:10
Compiling Pugs.Embed.Parrot
Warning: retaining unknown function `Pugs_callSubSSS' in output from C compiler
same with Pugs_trap_exit 17:11
gaal cringes in wait for unresolved symbols at link time
okay, I have a fix for the compilation breakage 17:18
but can't commit it. thankfully it's simple:
please edit Pugs.cabal.in
in the other-modules: line add Data.Seq 17:19
run 'make' again.
17:20 vel joined
gaal Limbic_Region: sorry for the red herrings earlier, but this should work. 17:22
17:23 Aankhen`` joined 17:27 xinming joined
Limbic_Region gaal - sorry, was day dreaming 17:31
as soon as make breaks will try your fix - repo down is why you can't commit?
gaal yeah 17:34
Limbic_Region can't commit to the mirror svn.perl.org/perl6/pugs ? 17:35
lambdabot Title: Revision 10675: /pugs
gaal isn't that RO 17:36
?
Limbic_Region dunno - that's why I asked
Limbic_Region knows very little of how this stuff works
TimToady I think it's okay for todo() to just run and set the todos for the next test, because (presuming todo() returns ()) you can also write either of
ok($x, "fooey", todo()) 17:37
or
ok($x, "fooey") unless todo()
alternately, todo returns a real todo value
gaal "ok unless todo" would mess up the plan
TimToady so then you can say $todo = todo(); ok($x, "fooey", $todo) 17:38
17:38 frederico joined
gaal and really we do want to run todo tests, not skip them 17:38
TimToady the point with the unless is that it would always run because todo would always be false
gaal because we love seeing yellow :)
TimToady but I also like the todo token form. 17:39
gaal ah, so it'sl like a true && something only in reverse? :)
[particle] ok(1) xand todo();
TimToady but it's misleading, so we should probably stick with the fact that a functions arguments are evaluated before the func is called.
[particle] that way the logic is clear :) 17:40
Limbic_Region gaal - other-modules: Data.Seq Data.DeepSeq DrIFT.JSON DrIFT.Perl5 DrIFT.Perl6Class DrIFT.YAML RRegex RRegex.PCRE RRegex.Syntax System.FilePath UTF8
gaal ok() once todo()
TimToady but the token form lets us hide the todos after like currently.
Limbic_Region you suggesting I add Data.Seq again?
17:40 ludan joined
gaal you already have that? weird. 17:40
[particle] one thing that gets me with perl5 is the way heredocs work
i hope p6 won't have thet same problems. let me explain
Limbic_Region yep, and same problem 17:41
gaal Limbic_Region: looking at your nopaste again..
17:41 Aankh|Clone joined
[particle] is( <<'CODE', <<'OUTPUT', "really long test description", :even<more options> ); 17:41
...is typically longer than 80 chars
TimToady and for the unparenthesize form you can say ok $x, "fooey", todo :parrot<1.0>
[particle] but you can't put a \n there
because it takes the next line as part of the first heredoc 17:42
gaal argh, looks like I fixed a different problem? Limbic_Region, what r is your working copy?
Limbic_Region gaal - very recent - up to when the repo died 17:43
17:43 Dr_Pi joined
gaal darn, then I don't have that code. let me see if the mirror does? 17:43
TimToady particle: you could intersperse the <<FOO with the docs: 17:45
is( <<'CODE'
...
CODE
<<'OUTPUT'
...
OUTPUT
"long desc"
[particle] MY EYES!!!
TimToady All I've done is rearrange your tokens. 17:46
[particle] i guess that would work, but it puts the todo/desc info pretty far from the test
TimToady well, I suppose we could solve that in P6 with "unspace".
gaal what happens in Perl 6 there if \-comments are used?? 17:47
s/\?\?/?/
TimToady is(q:to'CODE', q:to'OUTPUT', \
"long description"
17:47 Aankhen`` joined
gaal yes -- that'll work, no? 17:48
[particle] ooh, that'll be much nicer.
TimToady comments are considered whitespace.
gaal Limbic_Region: till I find a recent source, please try adding 'Pugs.Val' to that same place 17:49
Limbic_Region okie dokie
gaal actually no, add it to exposed-modules 17:50
TimToady basically an unspaced newline only counts the line number, but disables all other line-oriented processing, including pod.
Limbic_Region grrr - ok
take it out of other-modules?
gaal yeah 17:51
Limbic_Region ok - and no realclean needed - just make
gaal yeah 17:52
shoudl be fastish even.
Limbic_Region um, yeah 17:53
Limbic_Region thinks that might be it
gaal yippie
Limbic_Region reserves kissing gaal until the make finishes 17:54
17:54 jferrero joined
gaal hands off Limbic_Region, stevan might be jealous 17:55
Limbic_Region nope - I think it is the same error but I am going to do a new nopaste
perlbot nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
gaal rolls his eyes at perlbot that isn't clever enough to interpolate $channel in that message 17:56
pasteling "Limbic_Region" at 129.33.119.12 pasted "Win32 build failure" (34 lines, 2.3K) at sial.org/pbot/18826
gaal Limbic_Region: do you have a file named src/Pugs/Val/Str.hs ? 17:57
Limbic_Region gaal - it seemed like it was doing more stuff at the beginning but apparently I had just ignored that stuff before
gaal if so please add Pugs.Val.Str to that list..
Limbic_Region yes
the exposed 17:58
or the other
gaal audreyt: please change "It compiles, ship it!" to "It links, ship it!"
Limbic_Region: exposed
Limbic_Region trying now 17:59
ok, not to get anyone excited but it is generating a precompiled prelude 18:03
gaal egg sellant! 18:04
Limbic_Region kisses gaal in full view of stevan
it is doing the post pugs stuff like Perl6::Container::Array so that must have done it 18:05
so gaal, when repo comes back up - you going to commit? 18:06
gaal sure, if I'm awake at the time. 18:07
if not, please go ahead and commit it yourseld
s/d/f/
hear that? I want you to go aheaf 18:08
18:09 bernhard joined
Limbic_Region ok - so are both Pugs.Val and Pugs.Val.Str needed or just the Pugs.Val.Str? I hopefully will be around but I am at work so who knows 18:10
gaal both 18:16
Limbic_Region k 18:23
I should be around for the next 2 hours 18:24
gaal I'm leaving soon for about 3, and we'll see then.
18:29 kanru joined 18:34 ruz joined 18:46 awwaiid joined 18:56 weinig joined
lichtkind audreyt to the docs , i will set links like L<perl6vars> 18:57
18:58 c6rbon joined 18:59 aufrank joined 19:20 weinig joined 19:23 ruz joined 19:28 larsen joined
Limbic_Region TimToady ping 19:44
[particle] TimToady++ # thinking before re-committing :)
Limbic_Region is interested in how TimToady is committing since the repo is down 19:45
[particle] he's not committing to the pugs repo
Limbic_Region yes, I know that but
but don't the rev levels correspond? 19:46
case in point
the last post by TimToady said r10678 19:47
if you check out the mirror svn.perl.org/perl6/pugs/
it says r10678
see my confusion?
apparently not 19:53
19:54 xinming joined
[particle] guesses it's svn:externals magic 19:54
i'm not really sure what to think
Limbic_Region *shrug* - seemed odd to me so I thought I would ask 19:58
20:00 miyagawa joined 20:08 weinig joined 20:10 weinig joined 20:21 dduncan joined 20:31 bpphillips left
spinclad contemplates C<< todo :tag<foo> >> in test file, C<< :tag<foo> if :pugs<6.28> >> in harness config (or some such) 20:39
rather than require coming up with unique names; also allows tagging sets of tests.
but i see we seem to have moved toward localizing in the test files. 20:40
[particle] i'm hoping for MTOWTDI :) 20:41
TimToady a todo() function only needs to return a :todo or :!todo value to the test harness. As a function it can take any arguments. So I don't see why you can't introduce as many excessive levels of indirection as you like. :P 20:48
20:49 xinming joined
PerlJam spinclad: what do you mean by "tagging sets of tests"? 20:52
mdiep TimToady: have you considered using <ahead> and <behind> in regexes? <after> <before> are really confusing. (I always struggle with figuring out if <after: ...> it means "after what just matched, match ..." or "make sure I'm after ... ") 20:53
20:53 SageLT joined
PerlJam spinclad: just saying "these N tests are all todo<pugs-6.28>" or something? 20:53
mdiep++ me too!
mdiep I've talked to several people who suffer from similar confusion 20:54
TimToady we're gonna stick with the declarative definitions over the operational.
PerlJam mdiep: I think part of the problem is just language. <after> is a look-behind. Too much directional confusion there.
spinclad for @list { todo :tag<feature>; ok(...) }; .... another_test: todo :tag<feature>
TimToady temp $feature = todo(); ok(..., $feature); 20:55
20:56 fglock joined
gaal ingy has his own perl backend? cool! 20:59
20:59 dduncan left
TimToady the point about regex assertions is that for linguistic "flow" reasons they should all be consistently of the semantic form "match if ..." 20:59
PerlJam TimToady: It seems to me that the directionality of <before> and <after> is almost a side-effect. Just like you got rid of the difference between ye olde \< and \> by creating \b (now <wb>), why not do the analogous thing for <before> and <after> by making the directionality a parameter of the assertion?
TimToady match if before foo
match if after bar
gaal (Block Party)++ (Michel Gondry)++ (Dave Chappelle
)++
TimToady match if next char is X 21:00
switching back and forth between "match if" and "look here" is just going to be more confusing. 21:01
mdiep "match if ..." is very helpful in that regard. that should help clarify them in my mind.
TimToady well, we had directional encodings in P5, and it was still pretty confusing.
PerlJam mdiep: Geez ... how is anyone supposed to argue for change when you back down so easily?!? ;-)
TimToady: I believe it was only confusing because of its cryptic syntax in P5 21:02
TimToady could be.
nevertheless, I don't think they really need short huffman codings. 21:03
PerlJam agreed.
(I just can't think of a good assertion name that works for both before and after in a zero-width sort of way)( 21:04
TimToady and I think people can get used to the declarational meaning because it is consistent.
it's the "flow" choice, in the same way that "given" is a better functor than "switch". 21:05
and "when" is better than "case".
it's too easy to just throw nouns at things that should be more verbal or predicate-like.
mdiep just doesn't read regexes like that. or hasn't yet. 21:06
TimToady or prepositional
[particle] verbs nouns occasionally
fglock clkao: Test.pm now compiles in 11s with optimized <%hash> (was 19s) 21:08
clkao fglock: whoooot
PerlJam fglock: heh, 11 *seconds*? Feels like I've gone back in time just a little bit ;) 21:09
TimToady fglock++
clkao fglock: sorry, i failed to shave the yak this afternoon. still working on it
spinclad verbalizes... or at least babbles
fglock but I can't commit - is there a problem with svn?
TimToady been down all night in .tw time
PerlJam fglock: repo was down, I guess it still is.
TimToady they should be waking up about now...
clkao gr 21:10
no, it's 5am in taiwan 21:11
fglock I rsync'ed to feather as a backup
clkao hates openfoundry with a passion
PerlJam clkao: you could get best practical to be a better openfoundry I bet ;) 21:13
fglock PerlJam: it used to take minutes to compile :) 21:14
Juerd fglock: Heh, just know that feather's backup mechanism isn't working all that well atm 21:18
fglock: A fix is expected this week.
21:18 jferrero joined
fglock Juerd: anything is better than my hard disk 21:19
Juerd fglock: feather still does have raid1 :)
But that doesn't protect against user or root fuckups
PerlJam raid1++ 21:20
TimToady interestingly, openfoundry pings. It just doesn't svn or http. 21:29
21:32 tup joined
Juerd icmp echo is handled by kernel space, svn and http by user space. This symptom appears in many different interesting crashes, but the most occurring one as far as my experience goes, is that the box was out of memory and started killing processes 21:32
feather has done it too.
fglock rev v6.pm - dprofpp shows that about 25% of the time is spent loading the operator tables 21:33
btw, what is the default precedence for a new operator? 21:34
TreyHarris TimToady: many OS's can kernel lock in such a way that ICMP still is working 21:35
PerlJam fglock: Is there a default? 21:36
fglock ie, ' multi infix:<myop> {...} ' without an is tighter/is looser/is equiv
TreyHarris (at my company, we use a completed ssh connection to remotely verify a machine's running, because that requires a successful connect and a fork)
fglock PerlJam: it needs to be inserted somewhere in the op tables 21:37
PerlJam fglock: yes, but another option would be to require the precedence declaration on ops
otherwise, I think the default should be either tightest or loosest. I lean towards tightest right now. 21:39
fglock PerlJam: yes, tightest makes sense 21:42
but S03 could be more clear (or is it S06) 21:43
TreyHarris Juerd: huh, weird... I just saw your response to TimToady, which obviated mine, in scrollback, but when I typed my response, it was shown as the next thing after TimToady. curses issue probably. in any case, I didn't mean to just repeat you :-) 21:51
TimToady well, as it happened, I already knew it, so it didnt matter. but that's okay. I'd rather have redundant information over missing. 21:54
I actually hacked on the tcp/ip stack for 4.3bsd for the same secret project that produced Perl, but that hackery never made it out the door. 21:56
Schmooster clkao, openfoundry.org won't let me register. Zero Sized Reply. is that the normal state of affairs, then? 21:57
clkao i have no idea
i hte openfoundry
TreyHarris durn, i want to see a connection stuck in CAMEL_WAIT state
Schmooster is it just pants? you hate the webiste, or the idea?
fglock TimToady: in the precedence list in S03, do user-defined ops go together with 'terms'?
TimToady audreyt said something about having to ^R the web page earlier. but that's before openfoundry went comatose. 21:58
clkao i hate everything. don't ask me about openfoundry. there's #ossf-bugteam on ircnet
fglock (unless they have a precedence?)
Schmooster hehehe I wasn't asking for a solution from you ;)
TimToady well, A6 discusses this issue, but it doesn't seem to have made it into S6 22:00
Schmooster i was sympathising :)
TimToady, yeah, I think that was in response to my failed attempt to use it. 22:01
TimToady anyway, A6 has infix defaulting to equiv(&infix:<+>), and prefixes defaulting either to named unary or symbolic unary depending on whether they look like identifiers. 22:05
but these days I'm inclined to require the equiv for documentation purposes.
fglock TimToady: I found it, thanks!
lazy-compiling the syntax categories would save some resources - I'll try it later 22:12
& 22:17
22:18 fglock left, fglock joined 22:22 prefiks left
TreyHarris is coercion described somewhere? i've been searching the synopses to no avail 22:29
it's implied in several places
22:32 justatheory joined, xinming joined, PerlJam joined
Juerd TreyHarris: With an protocol as asynchronous as IRC, lacking any kind of transaction or locking, races are bound to happen. Don't worry about it :) 22:35
TreyHarris specifically, I'm wondering what happens when a coercion fails. exception? or do you get the original object back? or an undefined value of the type you were trying to corce to? 22:36
22:42 dduncan joined 22:46 penk joined 23:05 cjeris left 23:11 froh-doh joined, bcorn joined 23:21 cmarcelo joined 23:52 xinming joined 23:54 autark_ joined