6.2.10 released! xrl.us/hxnb | geoffb's column (/. ed): xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 | www.geeksunite.net Set by integral on 25 October 2005. |
|||
dduncan | I for one welcome the new metamodel integration | 00:01 | |
autrijus | ...and concurrency too | 00:06 | |
autrijus commits s17 early draft | |||
sub bomb is atomic { ... }; sub path is critical { ... }; | |||
eric256 | lol | 00:07 | |
rafl_ | :-) | ||
autrijus | the hs runcore will get a head start | ||
azuroth | I just changed the pods and kwik... is the one on pugscode.org automatically converted to html or something? | ||
autrijus | as it's all from GHC.Conc ;) | 00:08 | |
but liz also got uncountable numbers of Thread::* modules on CPAN to emulate this | |||
so p5 runtime shouldn't be _that_ bad either | |||
azuroth: which url? | |||
azuroth | hmm. search.cpan.org/dist/Perl6-Pugs/lib...s/hack.pod - it's linked to from pugscode's index | 00:09 | |
autrijus | ahh. | ||
yeah it's pod2html of the latst release | |||
so your fix will wait till 6.28.0 | |||
azuroth | ahh, okay | 00:10 | |
Khisanth | hmm how long does it usually take to compile ghc? | ||
svnbot6 | r7787 | autrijus++ | * S17 draft, sketch notes, with Liz | ||
r7788 | azuroth++ | Fixed some grammaticos and wrongness in documentation | |||
autrijus | Khisanth: if you insist... you can do that. on my laptop is 5hr | 00:11 | |
Khisanth | ! | ||
eric256 | (grammaticos and wrongness)++ lol | 00:12 | |
azuroth | ;-p | ||
what are some easy TODOs? ^_^ | 00:17 | ||
autrijus | in hs space? | 00:18 | |
azuroth | yeah - or anything, really | ||
eric256 | you can help link tests to documentation ;) | ||
autrijus | I'm actually going to sleep soonish -- ask the channel for ideas :) | 00:19 | |
I can use help implementing both the conc and objsp stuff, but more details tomorrow :) | |||
azuroth | okay, cool | ||
link tests to documentation, eh? | |||
eric256 | yea. L<S12/"Heading" /regex to specific spot in paragraph/> tests.pugscode.org | 00:20 | |
stevan | autrijus: I just finished reading the "Ruby in C" section of the PickAxe book,.. it was actually very helpful,... (and much cleaner than XS) | 00:21 | |
autrijus | good. | ||
and it would make sense to compare to YARV arch | |||
stevan | yes | ||
very much so | |||
autrijus | which is like, distilled version of the tree reduction semantics | ||
(ruby was tree reduct like pugs-vanilla and p5) | |||
but they are going bytecode as well | |||
stevan | ah | 00:22 | |
bytecode is so old school though ;) | |||
autrijus | ASTs are fine for semantics stuff and static analysis | ||
azuroth | eric256: where can I find S12? ;-p | ||
autrijus | but for minimal runtime vocab, you want something more restrictive, and stack bytecode is one of the many comparably restrictive ways to achieve that | 00:23 | |
eric256 | either feather.perl6.nl/~eric256/t_index/Synopsis/ or dev.perl.org/perl6/doc/synopsis.html | ||
autrijus | not doing that will result in runtime bloat, like our dear p5vm | ||
;) | |||
(aka, "too many primitives") | |||
stevan | autrijus: so should I rethink the P6::Objectspace::Core stuff? | 00:24 | |
autrijus | stevan: I thought you were going to rethink it anyway :) | ||
stevan | yes, but I guess I am asking how radically I am going to rethink it :) | ||
azuroth | ahh, ok. thanks | ||
azuroth away | |||
stevan | should I lean more towards bytecode?? | ||
autrijus | stevan: no, I think minimal function call API works better than bytecode | 00:25 | |
since they are isomorphic | |||
stevan | ok | ||
autrijus | but easier to reason with | ||
sorta like the ANF<->SSA duality | |||
also, because we are not really writing VMs. | |||
it would be very much not fun if we have to write either YARV or Parrot. | |||
;) | |||
stevan | yes, at least not yet ;) | ||
autrijus | nah, not going to :) | ||
we enslave^Wdominate^Wtarget VMs instead | 00:26 | ||
stevan ponders writing in PIR again,.. then slaps himself | |||
autrijus | maybe you can invent a minimal notation for PIR | ||
but then, why not just take the JS, Pike, IO, or whatever notation | |||
(that nests functions and handles objs) | 00:27 | ||
stevan | :) | ||
autrijus | but really, the effort would amount to be the same as calling a set of p5 space core funcs | ||
so I fail to see the gain :) | |||
stevan | so do you see a usefulness for anything in Core::, or should I svk rm it all ? | 00:28 | |
eric256 failes to see what either of you are even talking about. lol ;) | |||
stevan | eric256: ObjectSpace :) | ||
autrijus | eric256: it's in docs/notes/object_space.txt | ||
eric256 ahhh...and rolles his eyes. ;) | |||
stevan | :D | ||
autrijus | stevan: the casting stuff are fine | 00:29 | |
base type enumeration and coercion rules | |||
those we can't do without anyway | |||
so I don't think they need to go | |||
they are the intrinsics | |||
stevan | they need to go? or stay? | ||
autrijus | still makes sense Perl6::Val really | ||
stevan | sorry didnt see "dont" | ||
autrijus | :p | ||
stevan | so maybe I just assume these things are my VM primatives then? | ||
or at least thin wrappers around them | 00:30 | ||
autrijus | sure, like the ruby "val" and "num" etc | ||
stevan | yeah | ||
autrijus | you don't need to reason about them at instruction/coreprim level | ||
they are just there, aye | |||
closing thoughts of the day: | 00:33 | ||
class Hash { method circumfix:<( )> { say 'Whee!' } }; %ENV(42); | 00:34 | ||
autrijus waves goodnight :) | |||
stevan | nite :) | ||
mugwump | shouldn't that be post_circumfix? ;) | ||
autrijus | riight ;) | ||
postcircumfix | 00:35 | ||
svnbot6 | r7789 | eric256++ | Test-Catalog: Now highlights multi line tests correctly. | 00:39 | |
eric256 | hey...i know i can use perl5 modules in perl6....supposidly...anyone know how? | 00:50 | |
nm. lol | |||
rafl_ | use perl5:Foo? | ||
eric256 | yea i kept trying perl5- ...didn't it used to be that? | 00:51 | |
rafl_ | Not sure. I only know that pugs implements perl5:. | ||
eric256 | do you know the new 'use lib? | 00:54 | |
misc | eric256: use.perl.org/~clkao/journal/24897 i think ? | 00:56 | |
eric256 | misc .... rafl had it right.. much have changed since then | 00:57 | |
Juerd: ping | 01:03 | ||
r0nny_ | re | 01:12 | |
rafl_: ping? | 01:13 | ||
rafl_ | r0nny_: pong | ||
r0nny_ | got svk now | ||
kinda lost in the manpage - cant see, how to get a p4 repo with this | 01:14 | ||
rafl_ | mirror p4:user@host:1666://path/... DEPOTPATH | 01:17 | |
r0nny_ | hmm | 01:18 | |
eric256 has to ask | 01:32 | ||
what is p4? | |||
rafl_ | Some non-free RCS. | 01:33 | |
tewk | p4 is Perforce | 01:44 | |
eric256 | hmmm. zip is documented to use ; instead of , .... anyone know if that has officialy changed. pugs supports , not ; :) | 03:19 | |
luqui | no, zip really does use ; | 03:21 | |
but pugs doesn't support it | |||
so pugs uses , | |||
eric256 | gotcha. ;) why would zip want ; instead of , now that , doesn't flatten | ||
luqui | probably: zip(1,2,3;4,5,6) | 03:23 | |
and zip(f(); g()), so f and g can be called in list context instead of scalar context | |||
eric256 | ; forces list context? | 03:24 | |
luqui | not necessarily (actually maybe, I'm not sure) | ||
eric256 | the first one would be zip( (1..3), (4..6) ); | 03:25 | |
luqui | but , definitely doesn't allow list context | ||
because zip(f(), g()), if f and g were called in list context, they would have to be part of the same list | |||
eric256 | true. hmmm ; for something other than the end of a statment seems...weird. ;) but i guess if thats the way it is, then i'll deal. ;) | ||
luqui | we use it as the "greater comma" | ||
my $matrix = [1,0;0,1] | |||
eric256 | okay....second question. why doens't pugs support it yet? | ||
luqui | nobody's written it yet? | 03:26 | |
and because it's not quite specced | |||
or it wasn't until a week ago | |||
eric256 | just wondered if there was some current barrier | ||
lol. gotcha. | |||
stevan_ | autrijus: when you backlog,.. this is kind of neat to play with www.atdot.net/yc/compile | 03:33 | |
Khisanth | heh so perl has three commas now? :) | 04:29 | |
dduncan | what are the three commas? | 04:39 | |
and don't say '=>' because that isn't a comma | |||
pantie1 | bouncey bouncey? | 05:48 | |
www.livejournal.com/users/clavice_beato/ | |||
clavice and I are space amigos | 05:49 | ||
will you be our space amigos? | 05:50 | ||
Khisanth | ?eval package Foo; | ||
evalbot_7789 | undef | ||
Khisanth | ?eval package Foo; sub foo { say "foo" } package Main; Foo::foo; | 05:51 | |
evalbot_7789 | foo bool::true | ||
pantie1 | fool, bool true! | 05:52 | |
mr T says... | |||
Khisanth | ?eval package Foo; sub foo { say caller().package } package Main; Foo::foo; | 05:53 | |
evalbot_7789 | Main bool::true | ||
Khisanth | ?eval $?PUGS_VERSION | ||
evalbot_7789 | \"Perl6 User\'s Golfing System, version 6.2.10, October 10, 2005 (r7789)" | ||
pantie1 | ?eval $?OS | 05:54 | |
evalbot_7789 | \"linux" | ||
pantie1 | ?eval $*OS | ||
evalbot_7789 | \undef | ||
dduncan | who is this joker? | 06:03 | |
geoffb | good morning, nothingmuch | 06:19 | |
... and goodnight, all | 06:23 | ||
nothingmuch | hhi ho geoffb | 06:45 | |
sleep tight | |||
xinming | ?eval exit | 08:22 | |
evalbot_7789 | Error: No compatible subroutine found: "&exit" | ||
xinming | :-P | ||
iblechbot: ping | 08:31 | ||
wolverian | ?eval ("a".."c").end | 10:39 | |
evalbot_7789 | 2 | ||
liz6 | ?eval ('a'..'c').end | 10:40 | |
evalbot_7789 | 2 | ||
ods15 | ?eval 'a'..'c' | 10:41 | |
wolverian | (just checking if it really was .end and not .last or something) | ||
evalbot_7789 | ("a", "b", "c") | ||
ods15 | ?eval 'a'..'aa' | ||
evalbot_7789 | ("a",) | ||
ods15 | ?eval 'a'..'aaa' | ||
evalbot_7789 | ("a",) | ||
ods15 | heh | ||
?eval 'aa'..'ba' | |||
evalbot_7789 | ("aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az", "ba") | ||
ods15 | ?eval 'a1'..'b1' | ||
evalbot_7789 | ("a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "b0", "b1") | ||
ods15 | ?eval '01'..'10' | 10:42 | |
evalbot_7789 | ("01", "02", "03", "04", "05", "06", "07", "08", "09", "10") | ||
ods15 | ?eval '1'..'10' | ||
evalbot_7789 | ("1",) | ||
ods15 | cool... | ||
bye | |||
wilx | Omg, does Perl6 read minds? :) | 10:43 | |
wolverian | yes. | ||
liz6 | ?eval 1..10 | 10:44 | |
evalbot_7789 | (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) | ||
liz6 | ?eval 1.."10" | ||
evalbot_7789 | (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) | ||
liz6 | ?eval "1"..10 | ||
evalbot_7789 | ("1",) | ||
wolverian | that's a bug. :) | 10:45 | |
hmm. perhaps $obj.sleep( until => "readable" ); # random thought while reading S17 draft | 10:46 | ||
liz6 | keeping Damians PBP in mind, maybe: | 10:47 | |
$obj.sleep( while => "not_readable" ); | 10:48 | ||
wolverian | hmm. | 10:49 | |
$obj.sleep_until: { $obj.readable }; # flexible? | |||
er, although that's just the same as '1 until $obj.readable' which is pretty horrid | 10:51 | ||
liz6 | it's the until | ||
that seems to be hard on people's minds | |||
and therefor not recommended in Perl Best Practices... | |||
wolverian | right. I haven't read PBP yet, actually :) | 10:52 | |
liz6 | recommended... | 10:53 | |
dduncan | I've read it cover to cover ... highly recommended | ||
wolverian | I'll try to get my hands on it. | 10:54 | |
azuroth | evening | ||
dduncan | I find it the second most useful perl book of them all, with 'programming perl' being the first | ||
at least at my current stage of experience | 10:55 | ||
azuroth | what book is this? | ||
dduncan | perl best practices | ||
kgftr|konobi | pbp++ # lots of useful stuff in there, such as indirect method calls being very very bad! | 10:56 | |
dduncan | of course, people in other situations will likely find different books more useful ... such as Peter Scott's on dealing with other people's horrid code | ||
or the 'learning' ones | 10:57 | ||
or the domain specific ones | |||
but the classic camel and pbp are my own personal most useful atm | |||
broquaint | PBP = Sensibility distilled. | 10:59 | |
dduncan | indeed ... quite likely to become a defacto standard methinks | ||
at least I'm contributing to that status | |||
as all my new cpan work is or will be mostly conformant | 11:00 | ||
azuroth | I'll have to read it ... | ||
metaperl | has anyone convinced Larry to allow /* */ as a multi-line comment for p6? | 11:01 | |
wolverian | I hate ->get/set accessors. (Class::Std.) | ||
dduncan | don't know | ||
wolverian | metaperl, not yet. :) | 11:02 | |
dduncan | I like get/set accessors | ||
wolverian | I like lvalue accessors/mutators. | ||
(albeit they suck in perl5.) | |||
dduncan | I never used them in my life | ||
wolverian | it's the way of the future! :) (C# and Perl6 both use them.) | 11:03 | |
liz6 | lvalue accessors are not recommended in PBP | ||
wolverian | liz6, I know. I understand it's not because of any inherent fault in them, but in the implementation of them in perl5, though. | ||
I might be wrong, since I haven't read PBP. | |||
dduncan | they're fine if the values in question can contain any value at all and no error checking is necessary | ||
wolverian | dduncan, why? you can easily add type checking. | 11:04 | |
dduncan, see, for an example, Attribute::Property on CPAN. | |||
broquaint | I think the idea behind not having multi-line comments, metaperl, is that if your comment is taking up multiple lines then it should be in the documentation, hence =pod/=cutthe best way to facilitate multi-line comments. | ||
dduncan | oh yes, you mean in perl 6 | ||
wolverian | dduncan, I mean in both perl5 and perl6. | ||
metaperl | broquaint: i see | ||
broquaint | That's just my theory, mind you. | ||
dduncan | but in that case, you haven't actually got a bare lvalue accessor, as it is wrapped in an object | ||
wolverian | dduncan, a closure. :) | 11:05 | |
dduncan | maybe its just the syntax you like? | ||
wolverian | of course it's just the syntax. they are exactly equivalent in other ways to get/set | ||
liz6 | wolverian: you're right | 11:06 | |
broquaint | Not quite, wolverian, as in lvalue you're just boshing a value into a attribute but in the accessor method style you've got paramters and arguments and binding and so forth. | ||
wolverian | broquaint, true, but if it's that complex it shouldn't be an accessor/mutator anymore, but a generic method. | 11:07 | |
dduncan | and there's the error checking thing thats different with vanilla perl 5 | ||
wolverian | dduncan, yes. | ||
dduncan | and that's mainly what pbp was against | ||
broquaint | Fair enough, wolverian. | 11:08 | |
wolverian | dduncan, that's certainly understandable. | ||
dduncan, but CPAN is there for us to use. :) | |||
broquaint | But, to be fair, PBP is a sensible approach to programming in perl, and programming in perl isn't always sensible :) | ||
dduncan | of course, pbp's ground rule is to get people to do things by choice, rather than by habit | 11:09 | |
wolverian | always following the rules is not -Ofun :) | ||
broquaint | Or should I say the programming with perl isn't always sensible. | ||
dduncan | if you have an explicit reason to do something against its recommendations, that's still going with its intent | ||
and using a cpan module to add whatever is such a conscious choice | |||
liz6 | indeed | 11:10 | |
dduncan | good night, past 3am here and all ... | 11:13 | |
metaperl | good night D | ||
liz6 | nightynight... just after noon here... ;-) | 11:14 | |
xinming | 19:33 here. | 11:33 | |
liz6 | isn't this great: a truly global effort! | ||
xinming | but too few commits. :/ | 11:34 | |
Juerd | IRC pings are so annoying, and such a waste of time. | 12:09 | |
Why do people insist on "$nick: ping", waitfor(pong), "$nick: $question" instead of just beginning with "$nick: $question"? | 12:10 | ||
02:08 < eric256> Juerd: ping | |||
But he is offline now. | |||
If he had asked a question, I'd be able to email him an answer. | 12:11 | ||
webmind | because someone wants a more direct conversation ? | ||
Juerd assumes he wanted to ask something, not socialize. | |||
webmind | could be impatience | ||
Juerd | afk | 12:12 | |
integral | but then there's the people who ask a question, and then ping all the people who answered them last time ... | 12:33 | |
broquaint | ?eval my $_ = "say q/things/;" eval | 13:06 | |
evalbot_7789 | Error: unexpected "e" expecting operator, ";" or end of input | ||
broquaint | ?eval my $_ = "say q/things/;"; eval | ||
evalbot_7789 | undef | ||
broquaint | ?eval my $_ = "q/things/;"; eval | ||
evalbot_7789 | undef | ||
broquaint | ?eval $?PUGS_VERSION | 13:07 | |
evalbot_7789 | \"Perl6 User\'s Golfing System, version 6.2.10, October 10, 2005 (r7789)" | ||
broquaint | Hrm. | ||
svnbot6 | r7790 | autrijus++ | * S17: Incoporate suggestion from Austin Frank; s/wait/join/; timer; continuation | 13:41 | |
r7791 | autrijus++ | * "is throttled" trait | 14:05 | ||
Limbic_Region | salutations liz6 | 14:15 | |
liz6 | hi L~R! | 14:16 | |
Juerd wonders if liz6, like perl6, was designed from scratch | 14:18 | ||
And if she's implemented with Haskell :) | |||
liz6 | I'm implemented with Freckles, actually... | 14:19 | |
Juerd | Is that turing complete? :) | ||
liz6 | Probably not... | 14:20 | |
Limbic_Region | liz6 how is working with autrijus? | ||
liz6 | I always feel like I'm slowing down Autrijus... | ||
but sometimes that's a good thing... | |||
Juerd can imagine | |||
He's incredibly fast :) | |||
liz6 | even faster than you, Juerd... ;-) | 14:21 | |
Juerd | Certainly | ||
autrijus | yo :) | 14:23 | |
Juerd | Is that like io? :) | 14:24 | |
autrijus | driving fast doesn't matter much if you don't know where to go | ||
and liz6 always know where to go, on S17 :) | |||
Limbic_Region | isn't S17 supposed to cover things like coroutines as well? | ||
autrijus | Limbic_Region: yes. | ||
and we'll get there | |||
Limbic_Region | good | ||
Juerd | Nice metaphor | ||
autrijus | which is also why we're using Concurrency instead of Threading | 14:25 | |
as the synopsis name | |||
because coros are just not very threaded | |||
Limbic_Region | right - coros are fancy continuations | ||
autrijus | if by "fancy" you mean "supressed and maimed", yes | 14:26 | |
liz6 | ;-) | ||
Limbic_Region | hmmm - no, that's not what I meant | ||
continuations only work from 1 point right? | |||
while a coroutine can continue and then stop again | |||
? | |||
autrijus | er no, continuations are the most general of all | 14:27 | |
in coro you can only yield into your caller's continuation | |||
while if you have first class continuation, you can invoke from anywhere to anywhere with anything | |||
Limbic_Region | ok, but you can yield mutliple times in multiple places | ||
autrijus | sure, so if you have cont, you can implement coro as simply passing the cont into the coro | 14:28 | |
and yield would be invoking the cont, passing it as argument the cont of the coro | |||
Limbic_Region | well, implementation is above my head | ||
autrijus | but yeah, coro is more accessible. | ||
cont is basically goto() that takes a value and preserves call stack. | 14:29 | ||
very hard to use sensibly. | |||
s/preserve/restore/ | |||
Limbic_Region | right | ||
which is why I saw coros as being more fancy | |||
perhaps wrong word | |||
autrijus | more "dressed up" | ||
nod | |||
liz6 | need to prepare for some $work, later! | 14:30 | |
autrijus | no, I guess "fancy" is the correct word. it's just my mind is in the direction of "the more abstract, bare and generic the thing is, the sexier it is" | ||
obra | There is such a thing as too abstract and generic | ||
autrijus resists a joke on naked singularities | |||
there is. | |||
Limbic_Region | of course, these aren't true coros in the sense that Knuth postulated about | ||
autrijus | obra: looked at the S17 we committed 5mins ago? | 14:31 | |
Limbic_Region | we still have a single processor simulating work in tandem | ||
autrijus | it's not at all there. just things that we agree should be there | ||
Limbic_Region | autrijus - out of curiosity, will you be able to use conts and coros in places where goto's aren't allowed in p5 (body of loops that require initialization for instance)? | 14:33 | |
obra | autrijus: I haven't looked in the last 5 minutes ;) | ||
autrijus | Limbic_Region: yes, of course! | 14:34 | |
that's their entire point. | |||
I'm actually thinking about removing the Stmt form in the PIL tree, as everything is really just an expression; you should be able to take continuations in middle of statement | 14:35 | ||
and, so to speak, goto() into middle of expression. | |||
Limbic_Region | well sure, but when I first brought up the question on the list it didn't sound like there was much interest in using them to their full potential | ||
obra starts to imagine using a VM hook to use continuations to do backups of long-running processes | 14:36 | ||
or to do realtime loadbalancing at the process level. | |||
autrijus | right. | ||
obra | That way you can move one runaway process to each CPU and take down EVERYTHING ;) | 14:37 | |
autrijus praises squeak for demonstrating the viability | |||
yeah, mobile code, etc | |||
obra | you beat my fingers by 10 sec | ||
autrijus | Limbic_Region: it takes education :) | ||
Limbic_Region | autrijus - good, I haven't lost faith yet ;-) The other question I asked in that thread were the same questions Dan highlighted in www.sidhe.org/~dan/blog/archives/000178.html | 14:38 | |
there seemed to be a lot of disagreement amongst @larry at the time | |||
autrijus | yeah, but in 2.5 yrs, things changed | 14:39 | |
Limbic_Region | IIRC, between Luke and Damian | ||
that wasn't 2.5 years ago - it was this past May | |||
autrijus | oh. that was between lazy gather vs explicit coro | ||
I think we need both ;) | |||
Limbic_Region | well that too | 14:40 | |
but still not what I was talking about | |||
autrijus | *puzzled* | ||
Limbic_Region | parameters |
|