pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
jbwiv guys, I'm sure this is an oft asked question...but is there any slight hint of a date when perl 6 might be released? Say, before 2010? 02:45
Tene jbwiv: it will be released sooner if you help... want a commit bit for the svn repository? 02:52
araujo jbwiv, i heard that every time someone asks when perl 6 will be released, this is delayed 6 months , 6 weeks, 6 days more 02:55
diakopter jbwiv: more importantly, I'm severely curious why you're interested in when an implementation of Perl 6 will be released. Do you have a particular business decision you're making, and perhaps considering Perl 5 or 6? 03:01
pmichaud I'm working on it, really! :-) 03:12
TimToady I'm just listening to pudge.
Tene I'm surprised by how little development has happened since audreyt hasn't been around. 03:13
Zoffix What kind of work do you need "help" with? 03:18
I am not THAT good with Perl more of a web guy
Tene Zoffix: something that would be very helpful would be if someone would write up a spec for web libraries for Perl 6. 03:20
diakopter Zoffix: what other language(s) do you know (if any)?
Tene Or at least expand on Juerd's proposal.
Zoffix realizes that he won't be of much help .... :) 03:21
Tene Zoffix: svn.pugscode.org/pugs/ext/HTTP/docs/ -- take a look at these two docs here.
Zoffix looks
diakopter Zoffix: ah, you're a CSS guy. 03:23
Alias_ oh dear 03:24
Tene Zoffix: oh, you do actual web stuff, not perl stuff that creates web stuff?
Alias_ I look at that web motivations thing and I see second-system syndrome all over again
Tene misunderstood.
Alias_ I have libraries that do what he describes
And they are fairly chunky
Tene Alias_: perhaps you could speak about those thoughts for a bit? 03:25
Alias_ I tried this several times
Took me 2 or 3 attempts
Zoffix diakopter, pretty much ( zoffix.com && haslayout.net ) I know CSS/HTML really well, a bit of JS. Coded some Python and C++ in the past but don't remember a thing. Been coding in Perl for about a year. 03:26
Alias_ What I found was that simplistic sticky fields was fairly naive
Doing is right was far trickier
it
For example
Lets say you have a series of options, radio buttons 03:27
Tene CGI::FormBuilder has a pretty good implementation of part of it, at least.
Alias_ If you are editing an existing record, you NEED the current value to be an option, even if it's not in the list
Tene *nod*
Alias_ That means you really are treating the entire cluster as a single thing
Also, those things naturally trend to classes
Where the class is responsible for BOTH taking a piece of data and turning it into HTML 03:28
And then taking the result fragment of CGI fields and looping it back into the data
And error checking it
And that single class can throw a piece of data around the data->HTML->browser->CGI->data as many times as it likes
in my case I have data->view, data->edit, cgi->data 03:29
And an intermediate form for things like three-dropdown date selectors, where they don't select all three
Which would be the object itself really
$object = WidgetClass->from_cgi
if ( $object->error_messages ) etc
So in my web apps, I've accumulated all these neat hybrid classes 03:30
diakopter tries to figure out what in the world Alias_ is talking about
Alias_ Like Widget::AU::DriversLicense
(composite state dropdown with validates textfield attached)
Tene diakopter: Juerd's Web proposal is full of Second System Syndrome, according to Alias_.
Alias_ Or Widget::Human::EyeColour
And so on
Tene diakopter: and I asked him for details. 03:31
Alias_ I think his motivations suggest solving those problem too close to the basic library layer
Alias_ My widget library solves the hard stuff, but it uses HTML generators and stuff underneath it 03:31
They aren't linked together
diakopter ahhh... those documents.
Alias_ I also needed a fairly complex role-based inheritance structure to make it all work 03:32
Because you have widgets that have context, or vary based on other widgets etc
some need embedded javascript
I have a widget that needs a thumbnailing module :)
And one that has to check for client flash support 03:33
etc
(That would be Widget::Media::URI::MP3Player btw)
Alias_ If we're going to solve problems in the Perl 6 web library, it's best to really solve the tricky stuff that spans entire sets of things 03:34
like HTML vs XHTML contexts and what have you
Doing CGI, just the CGI bit, strictly correctly
Most of the problems with CGI.pm come from various attempts to join CGI to HTML 03:35
sticky fields being one
God sessions 03:36
Another nasty problem
sessions in shared memory? on disk databases? in the main database?
what if my sesions need some special modality
Or the need to straddle a cluster
Tene leaves himself a note to return tomorrow and compile this set of thoughts into a document of some sort.
Alias_ The best thing you could possibly do, is solve the seperate problem domains seperately 03:37
And don't play favourites and built-in functionality games when it comes to the hard stuff
About the only new feature I'd like to see in a CGI app, is the idea of a subform 03:38
Where you name your CGI fields, say, "foo.name", "foo.address", etc
And you can go CGI->new->subform('foo') and you get a subset of the fields 03:39
with the prefix stripped/ignored
Tene And that's not really anything core... that's pretty trivial to add on top of any correct implementation.
Alias_ Something like that I've found useful and complementary to CGI
Tene: Indeed
I've written it 3 times :)
Tene Exactly.
Tene goes to bed.
Alias_ night
Tene will read scrollback tomorrow. 03:40
diakopter will flood the scrollback with commits 03:42
diakopter welcome, perlDreamer 03:50
perlDreamer hola 03:51
pugs_svnbot r17132 | diakopter++ | initial stub of a feather-only svnbot plugin for Botnix, a multi-nick, multi-network, multi-channel, event-driven Perl 5 ircbot. We'll see how it goes 03:52
diff: dev.pugscode.org/changeset/17132
lambdabot Title: Changeset 17132 - Pugs - Trac
pugs_svnbot r17133 | perlDreamer++ | Remove old comments from top of file. 04:06
r17133 | perlDreamer++ | Uncuddle the elsif.
r17133 | perlDreamer++ | Fix the typos for the template line inside init.
diff: dev.pugscode.org/changeset/17133
lambdabot Title: Changeset 17133 - Pugs - Trac
Alias_ Tene: One thing I do agree with Juerd on though is that there should be a way to say things like "use utf8" or "use xhtml" once 04:12
Alias_ (not necesarily in terms of "use" module loading of course) 04:16
layon Hi! I need to extract attached files from mails, RFC 822 mail text, more exacly 04:32
diakopter layon: great! :)
Perl 6 would be good for that. 04:33
layon I know how to "separate" the attached file from mails, but I need get the mail without the attach....
diakopter, can you help me? 04:34
diakopter layon: which implementation of Perl 6 are you using?
layon I use GNU/Linux 04:35
diakopter layon: hm. are you in the right channel? 04:36
This is the channel for Perl 6.
layon perhaps I`m wrong.... 04:39
I use perl 5, but think here can found some help......sorry
torz if you look at the channel name once more you will notice that you're wrong 04:44
torz hmmm 04:44
yawn
diakopter layon: no problem. Good luck stripping attachments from emails.
pugs_svnbot r17134 | perlDreamer++ | Add a method to interpolate the template for svnbot. 04:51
diff: dev.pugscode.org/changeset/17134
lambdabot Title: Changeset 17134 - Pugs - Trac
pugs_svnbot r17135 | perlDreamer++ | Instrument the template interpolator with a cache for reading 05:06
r17135 | perlDreamer++ | template files.
r17135 | perlDreamer++ | Take some care to make sure the template cache doesn't stomp
r17135 | perlDreamer++ | on itself.
r17135 | perlDreamer++ | Fix a few typos and syntax errors.
diff: dev.pugscode.org/changeset/17135
lambdabot Title: Changeset 17135 - Pugs - Trac
kane__ szbalint: no, it's not online, but the npw, lpw or yapc::eu may have recorded it 07:52
Juerd 05:24 < Alias_> I look at that web motivations thing and I see second-system syndrome all over again 10:04
Alias__: Ehm, it's just a Perl6-ish redesign of LWP and CGI.pm
Alias__: Not adding any new feature - just restructuring, and changing syntax to something that is more Perl 6-ish (and IMO better) 10:05
Alias__: How is it 2nd system like?
Alias__ The sticky stuff should never have existed in CGI.pm the first time, sessions get done differently all over the place... 10:06
Juerd Alias__: I disagree about stickiness. For the simple cases, it's very useful. As for sessions, I'd like to learn how they should be done 10:06
Alias__: Note that I think stickiness should be off by default, but it could easily be added afterwards with a role. 10:07
Alias__: As for setting an option in a radio group that doesn't have that option - can be a fatal error for all I care :)
Alias__ Sessions are going to need to be done very differently depending on the web model
Juerd Alias__: How? 10:08
Alias__ If you are doing it on a single machine, you can use fast stuff in shared memory, others use local DBM, the session might need to be in the database...
then there's clusters
Stuff that works in an async environment 10:09
Juerd Anyway, my strongest points are that you shouldn't have to repeat yourself, that get and post should be separated, and that we should have hash-like interfaces where hash-like interfaces make sense.
All the rest is negotiable (this is too, but I'm less likely to be convinced)
Alias__ I totally agree with the HTML vs XHTML and the unicode thing
The sticky stuff I've found completely pointless, because the implementation is so utterly trivial 10:10
Juerd But that's where the sessions are *stored*. I don't think I even touched that subject.
Alias__ I don't like linking the HTML and CGI sides of the problem
Juerd I only said that there should be a default that works out of the box, regardless of performance.
Alias__ They are intrinsically orthogonal problems
Juerd Alias__: Yes, but if they talk to eachother, that can be useful
Alias__ OR, the next layer up can use them both 10:11
Juerd HTML::Form.new( use_for_defaults => $request ); suffices.
Alias__ ugh 10:12
stinks of bloat to me
Juerd If this already looks like bloat to you, then our disagreement is rather fundamental 10:13
You seem to say that default values based on the current request must not be possible
pugs_svnbot r17136 | fglock++ | [kp6] added tests for the Prelude (still fail)
diff: dev.pugscode.org/changeset/17136
lambdabot Title: Changeset 17136 - Pugs - Trac
Juerd Whereas I think it's absolutely necessary, to provide an upgrade path from Perl 5's CGI.pm 10:14
Alias__ HTML::Sticky.new( cgi => $cgi, form => HTML::Form.new() ); 10:14
Juerd Doesn't have to be in the same toolkit, doesn't have to be enabled by default, doesn't even have to have ultra-nice syntax. But it *must* be available, and it must work with the standard web toolkit.
Alias__: Perfect.
Alias__ is big on layers not getting above themselves :) 10:15
Juerd Alias__: I think you've misunderstood my posts. The code is for illustration, and I haven't even posted any code about stickiness anyway.
Alias__ I didn't get to the code :) 10:16
Juerd I've just said that it's useful, and must be available - can't see how that's second system syndrome.
Alias__ Most of the hard work I do lately pretty much hangs on stuff like motivations :)
Juerd Can you explain why you think it's bloated?
Alias__ Juerd: It was the "we can do better, and provide functionality for this and this and this"
I had a dark feeling of "like CGI.pm, but bigger!" 10:17
Or something vaguely like that
Juerd Alias__: That's because it has to be, at least somewhat, like CGI.pm, in the grand scale. CGI.pm is used a lot, and all its useful features need to be provider, if people are ever going to adapt the new stuff.
Alias__ ya
Juerd Alias__: The interface and implementation, however, can be radically different.
And I think I said that :) 10:18
Most important to me is that it works out of the box, and is much better designed that CGI.pm
Alias__ hear hear 10:19
Juerd And indeed, HTML generation, including stickiness, is *not* part of a CGI framework, that's why I called it Web, not CGI :)
Web::* is a bunch of smart wrappers around HTTP::* and HTML::*, in my mind.
And, if HTTP and HTML are no longer the world wide defaults, then it can easily be changed to support other techniques 10:20
But if at first you just get a raw HTTP::Request object, fine 10:21
pugs_svnbot r17137 | fglock++ | [kp6] match stringification works; but doesn't load Prelude correctly
diff: dev.pugscode.org/changeset/17137
lambdabot Title: Changeset 17137 - Pugs - Trac
Juerd LWP is mostly very well designed - there's no reason its class structure couldn't be copied over and reused
And I think it's a bit weird that we're not already widely using it in Perl 5 web development :)
Alias__ indeed 10:22
It just beed to be better maintained
Juerd An HTTP request object is great on the client side as well as on the server side
Alias__ gisle doesn't exactly give it much attention any more
Juerd Well, for Perl 6, it needs minor redesign anyway
I don't want to set headers with methods, or grab form variables with methods. 10:23
We can build ordered hashes and hybrid array/scalar values, and we should
Build that once, and it'll be useful all over the CPAN :)
Alias__ uuhhh... 10:24
Juerd At least for everything that vaguely resembles mime headers :)
Alias__ if there's no methods, how do you overload and emulate stuf
I want the simplest possible solution
And most extensible
Juerd There can be methods
The array/scalar thing is just a role an object can have 10:25
Same for the ordered hash thing.
Alias__ ordered hash thing is tricky
Juerd "does Hash" just gives your object a bunch of methods, like .keys, .values, and .{} and .<>
Why?
Alias__ Because the CGI params aren't really an ordered hash
Juerd Er, yes they are :) 10:26
Alias__ foo=1;bar=2;foo=3
Turn that into an ordered hash and you've got information loss
Juerd Much less than when .param() is your only entry.
What data would be lost, except the semicolons?
Alias__ seen the internals? :)
buubot Alias__: Sorry, I haven't seen the
Juerd Oh, I get it -- you're talking about having to choose between "foo is an array" and "foo is two values"? 10:27
Alias__ ya
Juerd I think that should be a user decision. Obviously one can't have both.
Alias__ Either a list of pairs, or an ordered list, or an unordered list
The most literal version is a list of pairs 10:28
Juerd Yes, but that'd be detached from common use
I think that in practice, the fact that bar=2 was before foo=3 doesn't matter in more than 99% of all webapps.
Ordering is necessary within headers/formvars of the same key only 10:29
I think a normal hash would suffice even
As long as the values are scalar/array hybrid
Alias__ hmm 10:30
Juerd In any case, I think we agree on most things
Alias__ objects, removed, just checked the structure of the CGI.pm internals
objection removed
Juerd Let's put this stuff on a wiki soon and hack on it
Alias__ rather
Juerd I can reformat my post "Web development I: Web::Toolkit" as a bullet point wishlist 10:31
Then the individual points can be molded into the right shape
Jmax coughs 11:46
any prelimenary work done on pod2.0 ?
I wish pod had tables :)
fglock_ hmm - if I inline the kp6 Prelude into a program, it works - but it fails when "use"d 11:54
it's time to get "use" properly implemented
masak fglock_: any idea why it fails? 11:57
fglock_ masak: not yet - the initialization seems to be working in the right order 11:58
masak ok
any tests say anything about use?
fglock_ t/kp6/30-prelude-match.t fails if the 'use' is uncommented 11:59
masak svns up 12:01
meppl hello
masak meppl: hi there
fglock_ meppl: hey 12:02
meppl hello masak and fglock
avar Jmax: pod2 has tables 13:06
pugs_svnbot r17138 | fglock++ | [kp6] working Perl6::Prelude 14:40
diff: dev.pugscode.org/changeset/17138
lambdabot Title: Changeset 17138 - Pugs - Trac
pugs_svnbot r17139 | fglock++ | [kp6] '$_' and '$/' are not 'GLOBAL' 15:52
diff: dev.pugscode.org/changeset/17139
lambdabot Title: Changeset 17139 - Pugs - Trac
pugs_svnbot r17140 | fglock++ | [kp6] v6/docs/kp6-roadmap.pod - phase 4 is marked as started 16:01
diff: dev.pugscode.org/changeset/17140
lambdabot Title: Changeset 17140 - Pugs - Trac
moritz_ updates the HTML version 16:04
moritz somehow the git mirror doesn't work as I expected 16:05
lambdabot moritz: You have 1 new message. '/msg lambdabot @messages' to read it.
moritz lambdabot: I know, I backlog... ;) 16:10
TimToady hard to backlog and listen to Tim O. at the same time... 16:11
moritz TimToady: that's why we hilight you if there's something important ;) 16:13
TimToady I've yet to see a hilighter that could distinguish my important ideas from my blatherations. :) 16:14
moritz filter it through perlmonks.org ;)
pugs_svnbot r17141 | fglock++ | [kp6] added tests for Capture 16:17
diff: dev.pugscode.org/changeset/17141
lambdabot Title: Changeset 17141 - Pugs - Trac
diakopter kayak.com is my favorite screen-scraper 17:01
moritz thinks about tags/labels that could be attached to conversations in the irc logs 17:10
diakopter moritz: my last comment would get the "OSCON lurker/troll" label. 17:12
diakopter any other OSCONers want to share what session(s) they're attending this morning and the rest of today? 17:15
diakopter I'll be in the "herding cats" talk right now... or in the virtual hallway track. 17:17
Jmax avar: nice 17:28
diakopter Jmax: what do you mean by Pod2.0?
Jmax i mean the p6 version of pod 17:29
i was simply using a cute name for it!
diakopter Jmax: there's currently quite a big blocking controversy occuring on the mailing lists regarding exactly that...
Jmax the name?
diakopter a controversy that's blocking further progress, I mean 17:30
rho is away: getting ice cream
diakopter no, the format itself
Jmax oh, I see
bcmb I can't seem to get pugs to build with parrot embedded, any ideas? 17:50
diakopter bcmb: I don't think that configuration currently works anywhere. 17:51
bcmb diakopter, thanks ... today was the first time that I tried that 17:56
diakopter bcmb: may I ask if you have a pugs commit bit yet?
bcmb not yet ... I was looking over the todo list and I think that I could help with getting some of the smart links setup 17:57
diakopter aside: I suspect that half the macbooks Apple has ever made are in Portland, OR at the moment.
bcmb: great! PM me your email address and preferred svn username :) 17:58
moritz_ diakopter: did you check in your todo list from moritz.faui2k3.org/irclog/out.pl?ch...19#id_l437 somewhere?
lambdabot Title: IRC log for #perl6, 2007-07-19, tinyurl.com/2erfo8 17:59
diakopter (private message, I mean). Or just put it here in the channel if you don't care about spam to that address, or have excellent filtering, etc.
moritz: no, but I'm learning lots at oscon that is putting those ideas in flux...
bcmb: invitation sent :) 18:00
moritz: (the usual featuritis and scope creep and idealism over pragmatism) 18:01
moritz_ diakopter: I know that ;)
bcmb diakopter, got it ... thanks
moritz_ www.perlmonks.org/?node_id=628746 <-- I wrote my first meditation on pm, about contributing to perl6 18:02
lambdabot Title: Getting Involved with Perl 6
diakopter bcmb: you're already familiar with the Synopses? :) 18:05
bcmb diakopter, I've been reading through them in my spare time the last few days 18:06
rho is back 18:32
meppl good night 20:31
moritz_ sleep well, meppl ;) 20:32
meppl ;) 20:33
masak meppl: night 20:36
meppl ;) 20:40
diakopter TimToady: hilight! :) SPJ (paraphrased) - "If the language is too wide-ranging [permissive?] the compiler has no chance of optimization." (referring to design choices in Data-Parallel Haskell's syntax for denoting Data-parallel arrays) 21:11
TimToady we did something like that when we made the >><< reversible to indicate dwimminess vs lack of dwimminess 21:18
diakopter TimToady: how was the DBI::Gofer talk? I think it's interesting that it's getting presented the same year as MySQLProxy (which is similar, but at the transport layer). 21:31
diakopter walks and types 21:36
diakopter any haskellers around today? 22:14
(I would like to chat about an alternative idea for approaching P6-on-ghc (other than pugs' current approach).) 22:15
wolverian how much of a haskeller do you want?
oh. that much.
wolverian backs off
diakopter heh 22:16
wolverian: have you toyed with haskell.org/haskellwiki/GHC/As_a_library ? 22:17
lambdabot Title: GHC/As a library - HaskellWiki
wolverian some time ago, yes. I left it alone due to lack of docs
that was in 6.5 days
oh, the page is a lot better nowadays :)
wolverian hm. I wanted to use it from vim 22:20
diakopter wolverian: after a 20-min discussion with spj on the topic, he recommends *not* attempting to do either of the two alternatives I was considering, but not for the reasons I would have expected. Here are my two ideas: 23:33
wolverian diakopter++ 23:34
Tene diakopter++
diakopter what's with the karma-ing? :P 23:35
[particle1 diakopter--
:P
diakopter spj++ for being patient with me and willing to address my novice ramblings... 23:37
wolverian and the ideas? :)
diakopter 1) Implement Perl 6 on top of libGHC as, essentially, a source filter that translated Perl 6 source into some haskell-syntax intermediary form, that included calls to functions imported from some new dynamic-language Haskell module, including a functional edition of PGE/TGE's functionalities. It would have then fed the translated Haskell source to libGHC. 23:38
Eidolos wonders if it's a joke at Perl 6's expense that diakopter didn't give us #2 23:49
diakopter oops, now I remember, he said that I *could* consider number #2... which was: 2) Implement Perl 6 as a substitute front-end to GHC, that handles the parsing, the type-checking/enforcement, and again, a translation of much of Perl 6's dynamic and "impure" language features to [usages of] new haskell libraries (of mostly new monads, apparently), which emits the result to Core (haskell's lower-level, preferably-functional ... 23:50
... intermediary representation).
Ediolos: :P
Eidolos: :P 23:51
wolverian I wonder how much that would give us over the current approach
Tene What's the current approach? 23:52
diakopter anyway, he said that #2 was possible and feasible, because it could reuse lots of GHC's existing Haskell98 front-end... but that of course it's mostly a super-set of #1. 23:53
Eidolos #2 is what Liskell does
well, partly. it does the parsing at least :)
it still defers to ghc on the parsing
it still defers to ghc on the type checking (sigh, I'm tired) 23:54
diakopter wolverian: it would eliminate the bootstrapping step. Suddenly, there's no need to bootstrap, because Perl 6 would be sorta a dialect of Haskell-on-GHC. GHC would replace Parrot/PGE...
no need to bootstrap, and no benefit to bootstrap, I mean. 23:55
wolverian diakopter, oh, right.. haskell 6? :)
diakopter in addition, it would give Haskell the ability to host/intake the same set of languages that Parrot targets. 23:59