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:09 bsb joined 00:16 aldre joined
aldre what should I have for make_arg, and make_install_arg on windows?..In cpan 00:16
00:17 aldre left 00:19 khisanth_ is now known as Khisanth 00:29 rashakil joined
nothingmuch Juerd: if you're still here, I forgot something 00:50
much like liskov the 'does role' question implies about an interface
i.e. just because it's the same method name doesn't mean it does the same thing, expects the same arguments, etc 00:51
the idea is to normally only do roles in the lower classes on the class hierarchy
00:51 obra_work is now known as obra
nothingmuch e.g. URI is a base class, you can find out what kind it is, and the things that *ALL* URIs have 00:52
and then you can find out about sub-behavior (like, if it's a http:// uri then it must have a host, etc) 00:53
think IO::Seekable being a role, and IO being a base class (read, write, etc), and IO::Pipe being a subclass, and IO::File being another subclass that does IO::Seekable
the only difference between manic multiple inheritence and role composition in this respect is the symmetry of the composition - overriding things is in general not OK, you have to be explicit 00:54
01:01 Daveman joined
_meppl gute nacht 01:13
01:13 _meppl is now known as meppl 01:19 rashakil_ joined 01:57 hexmode joined 02:01 Khisanth joined, ma|2duk joined 02:07 jserv-- joined, FurnaceBoy_ joined 02:09 SamB joined 02:14 mako132_ joined 02:27 rashakil__ joined 02:41 mjk joined 03:01 aufrank joined 03:03 weinig is now known as weinig|sleep 03:06 rashakil_ joined 03:09 coumbes joined 03:45 Gothmog_ joined 03:54 hikozaemon joined 04:09 justatheory joined 04:12 calrik joined 05:04 Quell joined 05:18 iblechbot joined 05:25 dvorak_ joined 06:10 Ymmv joined 06:17 GreatFlamingFoo joined 06:34 marmic joined 06:36 ludan joined
ludan hi 06:37
arcady hello 06:40
gaal hi. I got a report that pugs breaks when you upgrade parrot. the scenario is slightly old pugs, parrot 0.4.3 -> 0.4.4 upgrade w/o pugs upgrade, so resolving fails because pugs is linked against 0.4.3 specifically. 06:41
is parrot backwards compatible? is there something we can do about this, if it is?
spinclad pugs seems to link against libparrot.so.N.N.N, which disappears with the new parrot release 06:53
and i think parrot is likely to be incompatible from release to release these days 06:54
so then you'd have to relink pugs against the new libparrot anyway 06:55
but if you keep your old libparrot around (installed, say) you'd be ok 06:56
but old
bsb I think keeping the old parrot lib causes other problems 06:57
for parrot itself
that may be fixed by now... 06:58
spinclad don't think so, they've hit people quite recently
"don't install parrot"
and live with this problem 06:59
07:00 miyagawa joined
gaal < spinclad> and i think parrot is likely to be incompatible from release to release these days 07:01
spinclad: question is, does it break backwards compatibility
spinclad my impression is it's likely to. 07:02
gaal it's probably a fair answer to say "yes, these things are in development"
okay, thanks.
spinclad the opcode list still gets reworked now and then, for example 07:03
namespace work, and such 07:06
i think chip aims to keep some stability at some levels (PIR, say), but i don't think the ABI has been stable between releases much yet. 07:07
(speaking as a kibitzer only, of course) 07:08
07:23 justatheory joined 07:25 rashakil joined 07:32 cdfh_ joined 07:33 bsb left 07:34 GreatFlamingFoo left 07:58 drrho joined 08:20 kane_ joined 08:38 elmex joined 08:46 sri__ joined 09:30 theorbtwo joined 10:06 chris2 joined
ingy `_` 10:23
meppl guten morgen 10:25
ingy *_* 10:26
o_O 10:27
meppl good morning ingy
:D
ingy hola meppl
`_` <- the Spirit Ingy
aka the Elk Spirit 10:28
10:32 kanru joined 10:37 f0rth joined 10:41 penk joined 10:43 penk joined 10:51 bjoern_ joined 11:03 kane__ joined, TimToady joined 11:21 neoesque joined 11:29 rashakil_ joined 11:36 neoesque joined 11:38 rashakil_ joined 12:04 mj41_ joined 12:16 Limbic_Region joined 12:28 wilx joined, vel joined 12:44 weinig|sleep is now known as weinig 12:47 awwaiid joined, kolibrie joined 12:48 penk joined, jiing_ joined 13:00 Mr_Krinkle joined 13:17 particle_ joined 13:23 iblechbot joined 13:30 stevan joined 13:43 Ymmv joined 13:51 kanru joined 13:56 aufrank joined 14:01 wilx joined, kanru joined 14:11 shachaf joined 14:14 ruoso joined 14:29 jsiracusa joined 14:37 justatheory joined 14:58 FurnaceBoy joined 15:08 Aankhen`` joined
Limbic_Region has there really been nothing said for nearly 3 hours? 15:11
TimToady maybe there was nothing worth saying...
personally, though, I just woke up. 15:12
Limbic_Region well, I use a fairly unreliable IRC client that doesn't make it obvious when connection is dropped
wasn't sure if I was a zombie or not
obra I see n0othing in 5 hours
TimToady 8 hours if you discount the ingy reach-out-and-touch meppl 15:13
was it something I said? :) 15:14
obra Heh.
The DBIv2 comments from tbunce this morning are interesting.
meppl what?
timtomorrow 15:15
obra "DBIv2 is going to be an evolution, not a revolution. DBD:: v2 is going to be JDBC"
FurnaceBoy meppl is a reliable ping.
Limbic_Region wonders if the removal of a new API as a specific goal is a good thing or not
obra wonders how quickly we could bootstrap new drivers with DBIv2 + something like Inline::Java or JPL
(Having not looked at JPL since it was first introduced, I don't even remember if it's the right glue) 15:16
theorbtwo I don't think JPL is maintained.
ruoso it seems that Import::Java is the big thing now
15:17 justatheory joined
ruoso s/Import::Java/Java::Import/ 15:17
TimToady It should be a lot easier to do multi-language hacks in P6. The interesting question is how much easier it will be to borg all the APIs of the world.
FurnaceBoy thinks world domination was TT's secret plan all along! 15:18
obra *nod*
"NCI is dead. Long live {Perl,Polyglot}CI"
ruoso TimToady, indeed... a lot of hacks will be needed to make Java Vector be seens as a List in Perl 6 and vice-versa... 15:19
TimToady "He who wishes to be the greatest among you must become the servant of all". I just wish to service all the APIs of the world. :)
well, most of 'em.
rgs glue++
wolverian it probably won't make much sense to copy java-style class trees directly, now that we have roles and such. 15:21
ruoso wolverian, but how will you interact bidirectionally if you don't? 15:22
some Java method expects a java.util.Collection as a parameter
how will you call this method just with (1,2,3) 15:23
theorbtwo Seq does java:java::util::Collection 15:24
wolverian I presume with the Array as java::util::Collection method. isn't that what coercion is for? in any case, I wasn't talking specifically about interacting with Java, sorry.
ruoso theorbtwo, java.util.Collection is just an interface...
theorbtwo, not an implementation 15:25
wolverian I guess I'm saying that I don't want perl6's own things to be polluted by Java-ish notions. 15:26
ruoso wolverian, I agree with that...
particle_ pings ingy
ruoso wolverian, but I must recognize that being able to interact with two different language is an important feature of Perl 6 15:27
theorbtwo So make the first time somebody mentions a java:foo module automagically load Interop::Java, which makes Seq do java::util::Collection.
wolverian I thought that was parrot's goal, not perl6's
theorbtwo (And java interfaces, I think, are clearly perl6 roles.)
ruoso theorbtwo, not exactly, roles have implementations 15:28
java interfaces are just method signatures
wolverian, at low level, yes... but at API level...
theorbtwo, but the Interop::Java seems like a goog idea
wolverian ruoso, right. I hope it can be done with runtime coercion. 15:29
(or by changing the class's composition at runtime)
theorbtwo Roles /can/ have /default/ implementations.
ruoso theorbtwo, ok... but if it doesn't... what happens when the mathod is called?
theorbtwo *splat* 15:30
ruoso but your solution is fine...
Interop::Java will make "Seq does Interop::Java::util::Collection" 15:31
theorbtwo (I don't actually know Java well enough to know if that should be Seq or Array. Come to think of it, it's probably Array.) 15:32
wolverian List should probably be Seq. or Iterable? I forgot. Java's containers are very finely grained
15:32 FurnaceBoy is now known as FB|afk
ruoso arrays in java are much less used than Collection 15:32
because they're extremely poor
it wouldn't help much to have Seq mapped to Array 15:33
theorbtwo No, I meant perl6's Array, not Java's.
ruoso ah...
sure...
wolverian right, me too.
TimToady If there's a large impedance mismatch, perhaps we should be looking at some kind of MMD solution.
use P6's strengths to hide Java's weaknesses... 15:34
wolverian yes please :)
ruoso TimToady, I think much Perl6 code will be needed to use Java inside Perl 6 efficiently...
to map one API to another
the problem is that Java have a HUUUGE API 15:35
wolverian possibly we should wait for the next Java to clean it up..
ruoso wolverian, most people are still working with java 1.4.2
15:36 coops joined
wolverian well, pity the fools. 15:36
bjoern_ Is there a Str that can be passed as first argument to open() so it opens stdout? LWP::Simple::getprint uses '' but that doesn't work for me... I take it $*OUT is stdout but that's not a Str... 15:37
ruoso wolverian, Java is an interpreted language that is very strict on API changes...
it's painfull to turn a running system to one version to another 15:38
wolverian Java is not interpreted in the way that TCL is. :)
ruoso if some method returns void and then starts to return something you get a enigmatic VerifyError 15:39
TimToady that's just the old "you've violated security but we're not going to tell you what you did wrong because that would give you more info." 15:40
covert channel analysis and all that... 15:41
ruoso that's why most people keep with java 1.4
TimToady if P6 is to scale into the real world, we do need to keep track of its ability to be secured, even if we're not interested in that ourselves. 15:42
wolverian egh, this Samsung phone has a terrible UI. it takes *six* clicks to send an SMS once you've written it
15:44 Aankhen`` joined 15:46 mj41_ joined
TimToady Given the negative example of Java, I'm now wondering what we can do with our module version numbers. 15:51
we can already specify which version we want.
but on the other end, a module needs to be able to specify how it can emulate older versions.
ruoso thinks in the dependency model in debian packages 15:52
TimToady there needs to be some kind of declaration at the top to that effect.
and then you have to be able to write "given $?DBA { when v1.2.3 {...}} etc.
ruoso module Foo; version X; provides Y; conflicts: Z;
TimToady the actual version is baked into the module declaration itself. 15:53
module Foo-1.2.4-RUOSO can emulate v1.2.3;
theorbtwo It sounds workable if those can be ranges of versions. 15:55
ruoso can I say "can emulate <= v1.2.3"?
theorbtwo can emulate { $_ <= v1.2.3 } ?
TimToady the 1.2.4 can't be, but the other should probably use the same syntax as "use" version ranges.
though a 1.2..* should probably be capped at 1.2.4 for obvious reasons. 15:56
theorbtwo I'm tempted to say "if you write that, you deserve what you get", but since this /is/ the mechnisim for fixing old stupid releases... 15:57
TimToady whether you want to emulate older versions depends mainly on whether your module uses resources that need exclusive access. 15:58
if there's no exclusive access, you can just do ordinary file versioning.
but if different versions are going to have to share a single dbhandle, for instance...
then you need to be able to emulate old APIs 15:59
theorbtwo Well, when doing a bugfix release, you want to move users who ask for the old version onto the new version.
TimToady assuming it actually works the same except for the bugs... 16:00
ruoso can I say "module Foo-1.2.4 cannot emulate v1.2.1"? or is it implicit?
TimToady I'd think that would be implicit.
theorbtwo That is, that not being able to emulate is the default.
TimToady on the user's side, if they say 1.2.3, it gets 1.2.3 only
ruoso so the "can emulte < 1.2.4" is needed when there is no incompatible changes 16:01
s/emulte/emulate/
TimToady if they've asked for 1.2.3..* then they're willing to be upgraded.
theorbtwo Well, you probably want can emulate 1.2.0..1.2.4
Hm, I'd rather have willingness to upgrade to compatable versions be the default.
TimToady if they've said 1.2, then any 1.2.* is fine.
ohh, maybe there's another Whatever...
theorbtwo Doesn't saying 1.2 mean you want version 1.2, not 1.2.3? 16:02
TimToady 1.2.3 is a version of 1.2
if you want 1.2.0, you ask for that.
ruoso you're forcing a versioning schema...
TimToady if you ask for v6 of Perl, you don't mind 6.1
theorbtwo G'point. 16:03
TimToady We're forcing precision, yes.
or imprecision, as the case may be.
theorbtwo We're forcing people to say what they really mean. 16:04
TimToady and we could certainly say that if a module only claims to be 1.2, that 1.2.0 matches it.
theorbtwo Something tells me that we can't get it quite right without knowing the versioning scheme of the module, but I'm not quite sure.
ruoso theorbtwo, that's my point... 16:05
that depends on the maintainer
TimToady I think versioning schemes will tend toward at least 3 parts simply becuase 1.2 looks too much like a Num.
ruoso thinking on a user's perspective... 16:06
TimToady and if we say that the abstract value of 1.2 is the same as 1.2.0.0.0.0... then it seems to work out as far as ordering goes.
ruoso while writing an app
I see module Bar is in version 1.2.3
so I say: use Bar v1.2.3;
TimToady Bar-1.2.3 but go ahead
theorbtwo I think it'll go to three parts because both linux and perl do it that way.
ruoso the Bar maintainer will need to say: module Bar-1.2.4 can emulate v1.2.3 for every version bump without incompatible changes? 16:07
TimToady only if there's a shared resource.
otherwise you just keep the old version around and use that
ruoso but you have a bugfix in the new release
it's compatible 16:08
TimToady bugfixes don't count
that v1.2.3.1
and 1.2.3 still matches it.
ruoso hmmm...
theorbtwo TimToady: Bugfixes are a very important use case for this that we should consider.
Is a bugfix for v1.2.3.1 then v1.2.3.1.1?
ruoso and what if I release a new version with new features and bugfixes
and I call it 1.2.4
TimToady certainy, that's not the meaning of "don't count" I was meaning.
ruoso but it fix some bugs for 1.2.3 also 16:09
TimToady you can choose to emulate 1.2.3 anyway.
but if you say you emulate, you have responsibilities to actually do so for non-bugs
ruoso sure
I'm talking about backward-compatible versions 16:10
TimToady given $?USEDASVERSION {...}
theorbtwo If I say use 1.2.3, and we have installed a 1.2.3 and a 1.2.4 can emulate 1.2.3, which do I get?
ruoso theorbtwo, that's the point...
why would I have 1.2.3 and 1.2.4 installed at all?
TimToady if you install a 1.2.4 that claims to emulate 1.2.3, it clobbers 1.2.3, I suspect. 16:11
but that maybe be site policy
ruoso hmm
ruoso going for lunch
TimToady Now in most people's theory, 1.2.4 should be backward compatible anyway with 1.2.3 16:12
theorbtwo TimToady: Great, that was what I was hoping you'd say.
Probably, yeah. I still think we should make the author say so. 16:13
TimToady but same arguments hold at 1.2 to 1.3
biab 16:15
wolverian should perl look at the signatures of the methods/functions and note differences between versions that promise compatibility? 16:17
TimToady MMD based on versions? 16:19
particle_ brr. 16:20
wolverian hum. that .. is interesting
particle_ api version adverb?
(optional, of course) 16:21
but could be used for specifying which module version to use for a sub call in case of conflick
*conflict
theorbtwo I don't think we should mix-and-match between individual subs of a module in different versions. 16:26
Sounds like a disaster waiting to happen.
16:29 jserv-- joined
particle_ yeah, agreed. 16:32
i'm only half following this thread, therefore came up with a half-brained idea
TimToady yes, almost certainly you just want most of the old version to be wrappers delegating to the new version. 16:33
either that, or limit the changes to portions of subs via given/when 16:35
but in general sub interfaces are the wrong scale for feature tweaks
wanders off again & 16:36
16:47 lichtkind joined 16:58 FB|afk is now known as FurnaceBoy
ingy particle_: pong 17:18
17:19 ruoso joined, FurnaceBoy joined 17:27 andara joined 17:29 andara left 17:33 stevan_ joined 17:38 Qiang joined 17:39 nothingm1ch joined 17:49 DaGo joined 17:50 davidfetter joined 17:52 andara joined 17:54 andara joined 17:57 andara left 17:58 iblechbot joined
svnbot6 r10364 | fglock++ | PCR - :ratchet internals are objects; named captures work; 17:59
r10364 | fglock++ | - Pugs::Runtime::Match::Ratchet is very clean now;
r10364 | fglock++ | - implemented '<before>', '^'
18:05 macroron joined 18:09 andara joined 18:11 andara left, andara joined 18:23 Odin- joined 18:31 aeon_ joined 18:41 Kattana joined 18:53 lichtkind joined
lichtkind ?eval do{} 18:54
wolverian o.o
FurnaceBoy . . 18:59
19:04 lichtkind joined
lichtkind ?eval sub f {} 19:06
davidfetter o_O
lichtkind pugs seems dont recomment the ... syntax 19:07
i mean my offline pugs at home
theorbtwo ?eval sub {...}; 19:08
Oh. evalbot has left the building.
lichtkind yes
but i also found out that semikolons after closing brakcet are not in pugs mandator< 19:09
like larry said
in pugs does "do { 1};" fine but "do { 1}" gives an error message 19:13
unexpected "s" 19:14
expecting term postfix, operator, postfix conditional, postfix loop, postfix
iteration, ";" or end of input
at new.p6 line 7, column 1
19:27 rashakil__ joined 19:48 pmurias joined
pmurias hi 19:48
19:49 cratylus joined
svnbot6 r10365 | lwall++ | Removed quotes from keys of named arguments. 19:53
20:05 andara left 20:12 penk joined
bjoern_ From dev.perl.org/perl6/doc/design/syn/S06.html "Optional positional parameters are specified after all the required parameters and each is marked with a ? after the parameter ..." 20:14
does that imply one cannot have sub example(Str $x = '', Str $y) i.e., optional positional parameters preceding required ones?
It does not make sense to do that when calling using a parameter list, but given that you can also use example( y => '...' ) I would expect that to work.
hmm, I guess I could use a multi method to work around that... 20:19
PerlJam bjoern_: by adding the text " = ''", you've turned $x into an optional parameter, while $y is still positional. 20:20
(positional and required) 20:21
bjoern_ Well, given the "after all the required parameters" above I wondered whether code like that would result in a parse error
PerlJam bjoern_: this will likely be flagged as an error at compile time.
bjoern_ right...
TimToady It *might* be possible to relax that constraint on a multi declaration. 20:24
on the theory that you'd just write the multis anyway, so why repeat the body.
but it's probably indicative of bad interface design, so why encourage it? 20:25
bjoern_ Well, to get more familiar with the latest Perl 6 development I tried to play with things a bit, 20:27
so I thought a bit how to map e.g. www.w3.org/TR/DOM-Level-3-Events/ev...ventTarget
to Perl 6; this has the addEventListener and addEventListenerNS methods, they differ only in that
you specify the namespace of the event you want to listen to in the NS version, while in the other it defaults to null
i wanted to have something like
method add_event_listener( Str NamespaceURI = undef, Str type, EventListener listener, bool useCapture = False, evtGroup ) 20:28
PerlJam bjoern_: Tim Bunce is looking for volunteers to create the JDBC API in pugs :-)
bjoern_ I edit some of the W3C DOM specs, so I've already got way too much "J" around myself... 20:30
20:31 larsen joined
TimToady It should probably be asking the EventListener object to add itself. 20:31
bjoern_ so I guess instead I should have multi method add_event_listener(type, listener, ...) and multi method add_event_listener(ns, type, listener, ...)
another question: in the DOM, many things can be an EventTarget, Element nodes, XMLHttpRequest objects, the browser Window object ... 20:36
the EventTarget interface provides methods to register and unregister listeners, and dispatch an event to the object. would this be modeled
as a role? it sounds appropriate, but "Element does EventTarget" does not sound very natural to me
theorbtwo Sounds natural to me, though it sounds like "EventSource" would have been a clearer name. 20:37
bjoern_ it seems to me that the source of an event would rather be, say, a mouse, keyboard, ... 20:38
in the DOM events propagate through the tree, so if you click a <button> listeners on the ancestors (<html>, <body>, <form>, ...) would also be triggered 20:39
all the objects would be EventTargets 20:40
theorbtwo Hm, I suppose.
20:42 marmic joined 20:55 FurnaceBoy joined 21:10 shyboy joined 21:14 wilx joined 21:18 shyboy left 21:34 szabgab_ joined
szabgab_ Ask has setup perl6-users mailing list 21:35
see news.perlfoundation.org/2006/05/per..._list.html
or use.perl.org/~ask/journal/ 21:36
or just send mail to [email@hidden.address] to subscribe
wolverian done :) 21:38
(yesterday)
21:39 bernhard joined 21:42 wilx joined 21:54 froh-doh joined 22:19 diotalevi_ joined 22:25 FurnaceBoy is now known as FB|afk
svnbot6 r10366 | lwall++ | Workaround !-e test failures. 22:30
r10367 | lwall++ | Workaround { () } misinterpreted as hash rather than block. 22:36
22:41 aufrank joined
svnbot6 r10368 | lwall++ | Added evaled test for map { () } 22:42
r10369 | lwall++ | eval parsefail in enum.t 22:45
22:59 ludanolo joined 23:00 ludanolo is now known as ludan
svnbot6 r10370 | lwall++ | Can't declare classes in an eval, have to predeclare. 23:07
23:15 Quell joined
svnbot6 r10371 | lwall++ | closure arg requires comma 23:22
23:27 Quell joined, mako132_ joined
svnbot6 r10372 | lwall++ | {...}.arity not valid as list argument. 23:31
r10373 | lwall++ | more {}.arity 23:33
theorbtwo grins. 23:34
.arity was my hack, way back in the day.
svnbot6 r10374 | lwall++ | wrong number of tests 23:36
TimToady still works, just can't use that syntax... 23:39
theorbtwo Hm.
I should possibly read those diffs, then. 23:40
What's the problem with foo({}.arity, 42) ? 23:41
audreyt I don't see the problem either 23:44
foo {}.arity, 42; # this would parse as (foo {}).arity
but surely foo({}.arity, 42) is fine?
TimToady: suppose "shift" default to shift @+_ 23:45
then @_ needs to be env as well
how do I declare *@_ to be env?
sub f (*@_) { env @_; ... } # like this? 23:46
svnbot6 r10375 | lwall++ | workaround rule parsing coredump by inserting <null> 23:58