Please test pre0: pugs.blogs.com/pre0/Perl6-Pugs-6.2.12.tar.gz | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org
Set by audreyt on 12 June 2006.
00:08 amnesiac joined 00:11 |mjk| joined
meppl gute nacht 00:27
FurnacePissy n8 00:28
meppl ;) 00:30
00:36 cmarcelo joined 00:46 audreyt_ joined
audreyt_ yay, meeting over 00:46
00:46 pfenwick joined
audreyt_ @seen ingy 00:46
lambdabot ingy is in #perl6. I last heard ingy speak 5 hours, 42 minutes and 21 seconds ago.
01:00 hikozaemon joined
cmarcelo audreyt_: i saw your slides from MS talk. "Boston Hackaton ... integrate HsJudy" =) any special API requests until there? 01:08
audreyt: ops.. i saw your slides from MS talk. "Boston Hackaton ... integrate HsJudy" =) any special API requests until there?
svnbot6 r10813 | fglock++ | PC-P6 - pass 01-sanity/05-sub.t, 01-sanity/06-use.t 01:27
01:41 jiing_mIRC joined
audreyt yo 01:42
01:42 jiing_ joined, jiing_ left
audreyt cmarcelo: not that I can think of at the moment 01:43
svnbot6 r10814 | audreyt++ | * Repair the JS backend for real, recovering from VType and pad changes... 01:45
cmarcelo audreyt: i'm still stuck on university work these days, but i believe by the hackaton time i'll be free to help you people (by IRC =o) ). btw, sent an email to ghc-users/bugs with the "illegal instruction" problem, but remains a mistery. 01:47
svnbot6 r10815 | audreyt++ | * Pugs.Compat.executeFile': In cases where rawSystem is usable
r10815 | audreyt++ | (like for JS helpers), use it, because the POSIX executeFile
r10815 | audreyt++ | is somehow broken on MacIntel+GHC6.5 here...
audreyt k
dinner, bbiab 02:03
svnbot6 r10816 | audreyt++ | * re-attach the Perl5 bridge:
r10816 | audreyt++ | $ ./pugs -CPerl5 misc/pX/Common/Pugs-Compiler-Perl6/hello_world.pl
r10816 | audreyt++ | $ ./pugs -BPerl5 misc/pX/Common/Pugs-Compiler-Perl6/hello_world.pl
clkao whoot 02:04
02:08 weinig is now known as weinig|sleep
svnbot6 r10817 | audreyt++ | * v6.pm - allow dual use as a command line program: 02:11
r10817 | audreyt++ | perl v6.pm -e "some perl 6 code"
r10817 | audreyt++ | this is used for Pugs's -CPerl5 and -BPerl5 helpers.
audreyt so, probably not going to use Phoenix
the SSA graph it builds is too low level
also, not going to work with BSD licensed tools alone 02:12
have to use their "academic shared source" thing
so instead, doing MSIL<->XML<->Haskell serialization directly now
much as what Jonathan did with parrot/languages/dotnet/
but with more bells and whistles, such as resumable exceptions and delegates 02:13
emeijer has crazy ideas about DHTML version of a subset of WinForms binding 02:14
but we'll see how it plays out ;)
02:24 cmarcelo left 02:54 FurnacePissy is now known as FurnaceBoy 03:03 drbean_ joined
cognominal_ what means "canonical time" in S05? 03:08
I suppose it means that optimizations cannot change the time at which the closure is run. 03:11
03:15 shachaf_ joined
svnbot6 r10818 | fglock++ | v6.pm - adds 'use strict' and 'use Pugs::Runtime::Perl6' to generated code 03:24
r10819 | fglock++ | PC-P6 - pass 01-sanity/07-end-blocks.t
03:29 _SamB_ joined
svnbot6 r10820 | fglock++ | v6.pm - added a few comments 03:33
04:14 gaal left 04:36 __SamB__ joined 04:45 baest joined 04:55 rebcabin joined 05:03 rebcabin left 05:24 rebcabin joined 05:33 visq joined 05:50 hlb joined 06:05 tup joined 06:29 ko1_away is now known as ko1 06:58 Aankhen`` joined
svnbot6 r10821 | Aankhen++ | * perl5/Module-Compile/inc/Module/Install.pm: fix for bug on case-insensitive filesystems. 07:07
07:09 szbalint joined 07:16 buetow joined 07:27 ko1 is now known as ko1_away 07:31 elmex joined 07:37 iblechbot joined 07:50 drrho joined 08:24 Kattana joined 08:28 snowstalker joined
Aankhen`` What do I do to create a local branch of Pugs using SVK? 09:55
I've been trying using `svk mirror`, but maybe I have the host wrong or something... 09:56
>svk mirror svn://svn.openfoundry.org/pugs //mirror/pugs
No connection could be made because the target machine actively refused it. : C
an't connect to host 'svn.openfoundry.org': No connection could be made because
the target machine actively refused it.
svnbot6 r10822 | renormalist++ | - new Twigils 10:02
10:04 chris2 joined
meppl guten morgen 10:12
10:15 ludan joined 10:42 Kattana joined 10:47 marmic joined 10:50 SamB joined 10:55 bjoern_ joined 11:06 kane_ joined 11:11 weinig|sleep joined 11:13 weinig|sleep is now known as weinig 11:24 weinig is now known as weinig|work 11:25 jsiracusa joined 11:27 Aankh|Clone joined 11:57 buetow joined
cognominal I don't remember where is the subversion repository of Perl6::Bible 12:01
it seems that dev.perl.org lags compared to modifs I see in the maillist
audreyt Aankh|Clone: http:// not svn:// 12:02
Aankh|Clone: and you branch with "svk cp //mirror/pugs //pugs"
Aankh|Clone Ah, thanks. 12:03
12:03 Aankh|Clone is now known as Aankhen``
Aankhen`` C:\Development>svk mirror www.openfoundry.org/pugs //mirror/pugs 12:08
RA layer request failed: PROPFIND request failed on '/': PROPFIND of '/': 200 OK
(www.openfoundry.org)
audreyt svn.openfoundry.org not www.
Aankhen`` bangs forehead on wall 12:10
Sorry, I'm very confused.
(As you can see.)
audreyt still very confused, or was very confused? :) 12:11
Aankhen`` Was.
audreyt cool :D 12:12
Aankhen`` I'll warn you if it happens again. ;-)
Okay, now I seem to have an empty directory. 12:13
Hang on a sec.
I'll get it!
svk sync to the rescue!
12:20 lollan joined, dakkar joined 12:36 iblechbot joined 12:38 weinig|work_ joined 12:52 veepster_ joined, veepster_ left 12:57 dakkar joined 13:05 pfenwick left 13:08 Limbic_Region joined 13:18 rzoz joined 13:23 _calvin_ joined 13:28 frederico joined 13:35 miyagawa joined 13:51 bpphillips joined 14:05 dakkar joined 14:13 Student1 joined 14:19 rebcabin joined 14:22 christopher joined 14:24 amnesiac joined 14:45 dakkar joined 14:55 cognominal joined 15:09 vel joined 15:10 FurnaceBoy joined 15:25 turrepurre joined
svnbot6 r10823 | fglock++ | PC-P6 - pass 01-sanity/07-binding.t, 07-defined.t, 07-substr.t, 07-try.t 15:31
15:48 buetow joined 15:50 amnesiac_ joined, snowstalker joined, amnesiac_ is now known as amnesiac 16:02 bjoern_ joined 16:05 particle_ joined
svnbot6 r10824 | fglock++ | PC-P6 - pass 01-sanity/07-split.t 16:19
Aankhen`` Hmm, I'm getting an error building Pugs. 16:25
Aankhen`` heads for the pastebin.
Juerd rafl: Will you be at froscon next weekend? 16:26
rafl: I may be able to go there on Sunday, and bring your things along
pasteling "Aankhen``" at 125.23.11.39 pasted "Error building Pugs on Win32" (13 lines, 589B) at sial.org/pbot/17909
audreyt GHC 6.4.2? 16:27
does typing another "nmake" work?
16:29 penk joined
Aankhen`` I'll try... 16:29
It's version 6.4.1 16:30
Built Pugs successfully yesterday, haven't tried again till now.
audreyt try incremental rebuild 16:31
TimToady audreyt: Might be the new retry stuff. By the way, I think the syntax the retry stuff could probably use some improvement.
Aankhen`` How, audreyt?
audreyt also try upping to 6.4.2 which fixes random runtime system bugs
16:31 fglock joined
audreyt Aankhen``: "nmake" 16:31
TimToady: cool. what kind of improvement? 16:32
Aankhen`` Well, running that anyway.
TimToady what's the relationship to "try", for one?
audreyt no relationship, so it's perhaps not a wonderful name
semantically it's "rollback and redo"
TimToady I also tend to avoid builtins with underscore
audreyt yeah, though it's a method name 16:33
but yeah.
TimToady and {...}.foo:{...} is not a wonderfulness
fglock pugsblogged
TimToady why is it a method?
It looks like adding properties to an object via method call.
I understand it isn't, but still. 16:34
audreyt and I'd agree. it's also kinda horrible to have to type retry thrice
in
{ $a > 100 or retry }.retry_with:{ $a < -100 or retry }
Aankhen`` Okay, looks like it built this time.
audreyt so yeah. could definitely use ergonomics enhancements
TimToady I also wonder about the implicitness of the control state, and whether this is a good place for implicit state.
and the semantics seem unclear when you "run off the end". 16:35
audreyt "run off the end"?
TimToady one might expect it to try the first thing again round robin.
audreyt that is the semantic. 16:36
TimToady so basically, how is this different from a switch based on some more explicit state that can be incremented by retry?
audreyt well, it's composable
so in
TimToady not stated anywhere that I've seen...
(round robin) 16:37
audreyt retrywith_(A,B,retry_with(C1,C2))
it goes A->B->C1->C2->A
16:37 coumbes joined
audreyt but if this chain is part of something larger 16:38
then at end of C2 retry it goes back to that larger chain's start
when you fall off, basically it looks to the beginning of the entire atomically
and reenter from there
TimToady okay, I don't mind that.
I'll stick to syntactic carpage then. 16:39
audreyt yay
please fix the example/tests accordingly and I'll deal
16:39 chris2 joined
TimToady have to think about that some... 16:40
did you see my "minimal" test for the pge dumpage?
audreyt yup. I can't duplicate it at all
so maybe I'll just grab your laptop in chicago
seems easiest
TimToady whack on it in Chi
nod 16:41
particle_ whazzamatternow? pge test that can't be duplicated?
audreyt embed parrot tests
parrot embed is... a continuous exercise 16:42
TimToady probably the same exception handling snafu we ran into earlier, or similar
audreyt nod
TimToady the assertion failure is saying that something is on the free list unexpectedly. 16:43
or off the free list unexpectedly, depending on how you look at it...
particle_ hrmm, does disabling parrot gc make any difference? or is this a pugs free list 16:44
audreyt it's the parrot free list
TimToady it'll be easier to diagnose in Chicago
audreyt if we had a way to recover from IMCC errors
then this probably will be much easier
as it stands, an invalid rule triggers a core exit() from parrot 16:45
and there's no way to trap it
particle_ that is trouble for embedders everywhere
audreyt so I did a setjmp/longjmp myself
which uncovers interesting misassumptions
namely only one parrot can be embedded at one time
since they share Parrot_exit chain
etc, etc.
particle_ aha
audreyt: to get to seattle by 6:30p safely we should probably leave redmond around 5p 16:47
doable?
audreyt sure
svnbot6 r10825 | fglock++ | PC-P6 - better error messages 16:49
16:51 shachaf joined
TimToady audreyt: does atomically {...} trap exceptions? 16:57
audreyt not by itself, no
it's more of a "do" than a "try" 16:58
TimToady so do we lose track of things if we propagate an exception out of one without explicit retry?
audreyt speak in code please :) 16:59
TimToady atomically { { fail } orelse { ... } } does what?
either atomically notices the exception going by and cleans up, or the transaction has to be GCed at some point to roll it back. 17:02
and how does this interact with continuations that might have been taken inside?
audreyt one thing at a time 17:03
re exceptions
it's modelled as a "shift" to the nearest reset
reset being a control exception or normal exception boundary
typically a subroutine or a try{} block 17:04
if that boundary is outside atomic
then all the changes so far is rolled back
it behaves asif the atomic block havn't happened
TimToady but not on "return"? 17:05
audreyt it's the same
if the subroutine boundary is outside atomic
then it's discarded as well
only the returned value remains
TimToady that's counterintuitive
a return is a "succeed" rather than a fail.
audreyt but in p6 semantic it triggers UNDO
TimToady no, triggers KEEP 17:06
audreyt hrm 17:07
svnbot6 r10826 | fglock++ | PC-P6 - simple 'for'
audreyt so it's abnormal
but "good"
17:07 fglock left
audreyt ok. then we can tie it with the UNDO/KEEP distinction 17:08
atomic is rolled back (or orElse'ed) if it's UNDOish
and simply concluded if it's KEEPish
TimToady it seems like a useful unification.
I see that "Definition of Success" is ambigous: uses "exception" to mean "bad exception".
audreyt indeed 17:09
that's the source of my confusion
TimToady but then is retry just a fail()? 17:10
audreyt slightly different
a fail doesn't reenter atomic block
unless you make "atomically" a sort of autoretrying try{} 17:11
TimToady okay, it's really a different control exception that's "semibad"
audreyt nod
TimToady you want it to bypass normal exception handlers inside anyway, like a return.
sort of an "oops" control exception. 17:12
particle_ as opposed to "oops, i did it again?" ;)
TimToady okay, I think that gives me enough to think about for naming purposes.
no, it won't be oops(). :) 17:13
17:13 lollan joined
TimToady though {...} oops {...} oops {...} has a certain cachet... 17:13
snowstalker Beginner question : In P-C-P6, hello_world.pl has 'use v6-pugs;' , how does it know to read lib/v6.pm ? I am trying to read `perldoc Module::Compile` but I haven't grokked this part yet ... 17:16
TimToady it does that basically because P5 doesn't grok hyphens in module names. 17:18
or at least doesn't grok them the same way P6 does. 17:19
snowstalker TimToady, So it is convention that we use 'v6-pugs' ? 17:20
theorbtwo perl -MO=Deparse,-p -e'use v6-pugs;'
TimToady hmm, it's more like one of those "two language hacks" that are interpreted differently, so it's not just convention. 17:21
it's depending on a particular way in which P5's lexer lies to the parser. 17:22
but also on the way that P6 parses module names that contain version info. 17:23
snowstalker theorbtwo, $ perl -MO=Deparse,-p -e'use v6-pugs;'
Can't open -e for input:
No such file or directory at /usr/lib/perl5/site_perl/5.8.8/Module/Compile.pm line 155.
BEGIN failed--compilation aborted at -e line 1.
use v6 ((-'pugs'));
TimToady, Ok I still haven't grokked on what the 'pugs' part of the name ties to ?
TimToady in particular that a module name starting with a version has an implicit Perl- in the front of it, indicating the version is really talking about the Perl version.
snowstalker Is it related to the lib/Pugs dir ?
TimToady it is if v6.pm decides it is. 17:24
snowstalker aah ok
TimToady under P5 it just comes in as an import list arg
see your results above
so it's basically just a very useful complete and utter hack 17:25
which has never slowed us down before. :)
fortunately the P6 interpretation of it is rather less hacky. 17:26
though it's still a very Special Case syntactically. 17:27
audreyt (that, again, has never slowed us down before)
the House of Cards is a noble house!
TimToady speaking of the house, I need to leave it and go to work...
audreyt actually, same here 17:28
audreyt goes check in for the final day of Redmond Hackathon
TimToady have the appropriate amount of "fun". I'm reminded that "fun" means something entirely different in Japanese...
snowstalker TimToady, heh I understand it a li'l better now
TimToady I wonder what Japanese think when they see -Ofun 17:29
"fun" basically meaning ē³ž
later then & 17:31
bpphillips reference: www.fileformat.info/info/unicode/ch.../index.htm
miyagawa "fun" basically means U+697D
theorbtwo Er, "with noodles"? 17:32
miyagawa or, "Raku"
ZuluOne Has anyone had any thoughts about my recent p6l post on binding names to types? 17:36
"me" being [email@hidden.address]
Juerd What does Japanese "fun" mean then? 17:38
And what's "raku"?
miyagawa Japanese "fun" = "shit"
bpphillips the character TimToady pasted: www.fileformat.info/info/unicode/ch.../index.htm
miyagawa bpphillips: yeah, that is a kanji character for "shit" 17:39
obra heh
miyagawa and is pronounced as "fun" in Japanese
or "kuso" 17:40
ZuluOne Actually, I kinda like -Oshit
bpphillips let's stick to "manure, dung, night soil" :-)
ZuluOne It carries connotations of "optimize the manure, dung, night soil out of it"
Steve_p Where's the fun in that? ;)
miyagawa however, when we say "fun" it sounds more like "fecal stuff" i.e. nothing negative 17:41
ZuluOne oh, shame
miyagawa when we say "kuso", it's just like English "Oh, shit!"
17:44 binary42 joined 17:45 binary42 left
Juerd Hmm, okay. That makes optimizings for fun rather interesting indeed. 17:45
And this "raku" thing? Does that mean anything?
There's a local company called Raku... I wonder if it also means something fecal 17:46
miyagawa Oh, okay. I meant "fun" in English maps to "Raku" Kanji character, which means "fun"
or "easy"
so nothing related to the shitty stuff there
Juerd ah 17:47
Too bad :)
miyagawa :)
FurnaceBoy hmm, interesting-- raku is a ceramic process too.
theorbtwo Hmm, perhaps I was thinking of Chinese "fun", not Japanese "Fun"? 18:02
As in "Chow Fun".
theorbtwo shrugs. 18:03
Everything I know about Chinese I learned from reading menus.
TimToady Japanese "fun" is pronounced "fen4" in Mandarin. 18:04
I always like "raku" because it's close to "rakuda" and "rakudai". 18:05
which is "camel" and "failure in a test".
and, actually, English "fun" gets borrowed as "fan" in Japanese, pronounced like "fawn" in English, more or less. 18:07
bpphillips TimToady: what portion of your life has given you the opportunity to learn so much about Japanese?
TimToady the last five years, mostly. and a bunch of anima watching otakuhood before that. 18:08
theorbtwo remembers the long months of waiting for TimToady to come down the mountian and publish some apocolypses.
18:17 audreyt_ joined
szbalint Thanks for your comments nothingmuch on p6l. 18:17
18:35 wilx joined 18:47 FurnaceBoy_ joined 18:49 justatheory joined 18:58 dduncan joined 19:18 audreyt_ joined 19:23 FurnaceBoy_ is now known as FB|afk 19:25 Stoffie joined
Stoffie hi 19:25
audreyt_ greetings 19:29
19:32 wilx joined 19:41 coumbes joined 19:42 fglock joined
svnbot6 r10827 | audreyt++ | * Some more changelogging, now at r10207 19:47
19:48 renormalist joined 19:51 bpphillips left
fglock I added a note on the blog about PC-P6 failing tests 19:58
audreyt_ danke 20:01
svnbot6 r10828 | audreyt++ | * Up to 10312
audreyt_ as putter has always reminded us
expectation management is important :) 20:02
fglock yup
Kattana TimToady: ping 20:08
ingy hi 20:12
svnbot6 r10829 | audreyt++ | * chglog up to r10465 20:21
20:22 rzoz joined
svnbot6 r10830 | fglock++ | PC-P6 - pass 01-sanity/07-for.t 20:24
particle_ is there a mailing list for pugs commits? 20:25
20:25 FB|afk is now known as Furnabceoy
audreyt_ particle: lists.utsl.gen.nz/pipermail/pugs-commits/ 20:31
particle_ excellent, thx. 20:32
audreyt_ np :) 20:33
svnbot6 r10831 | fglock++ | ChangeLog - fixed example: use v6-pugs; say "Perl 6"; use v5; print "Perl 5"
r10832 | fglock++ | PC-P6 - added 'not implemented' message for 'use v5' 20:48
fglock audreyt_: would you write the Makefile.PL for PC-P6? I'm not sure of the Module::Compile requirements 20:49
20:59 bernhard joined 21:15 mj41_ joined
audreyt_ fglock: just use Module::Install plus a line of pmc_support(); 21:18
ingy: maybe you can help :)
audreyt_ is deep in releng
svnbot6 r10833 | audreyt++ | * Finish this pass of changelogging, yay! 21:21
audreyt_ good news: according to emeijer, the cleanest way to do calldynamic and the entire metaobject protocol on CLR is just CreateTransparentProxy 21:27
bad news: Mono doesn't implement it ;)
ZuluOne *sighI
s/I/*/
audreyt_ ponders finding some mono people to talk about that 21:28
because the alternative seems to be swapping out vtable with unmanaged code
which stragely reminds me of pugs/src/pge/parrotembed.c...
svnbot6 r10834 | renormalist++ | cperl-mode.el: 21:30
r10834 | renormalist++ | * sync'd with ilyaz' cperl-mode 5.19
r10834 | renormalist++ | * more Twigils
r10834 | renormalist++ | * no longer recognize qr for regex quoting in Perl6-mode
r10834 | renormalist++ | * lots of keywords and highlighting regardless of Perl5- or Perl6-mode
r10834 | renormalist++ | * more keywords:
r10834 | renormalist++ | - rx, loop, take, taken, state, any, all, one, none,
r10834 | renormalist++ | - completed list of immutable and mutable types (from S06)
r10834 | renormalist++ | (maybe a list of english words that are not Perl6 keywords
r10834 | renormalist++ | would be easier to maintain ... :-)
21:30 xerox_ joined
svnbot6 r10834 | renormalist++ | * corrected indenting after class blocks without ";" 21:30
r10834 | renormalist++ | * more simple "looks-like-perl6-code" heuristics
r10834 | renormalist++ | lib/Pugs/Doc/Hack.pod:
r10834 | renormalist++ | * cperl6-mode --> cperl-mode 21:31
audreyt_ hm, of course it's unplemented, because it's undocumented, not part of MSDN, hidden from code browser 21:36
and generally a very backdoory hack 21:37
...which is stable and maintained and used internally by remoting
why am I not surprised ;)
21:39 fglock joined
audreyt_ hm, mono does support it internally, it's just not exposed 21:41
so maybe it's a simple thing to expose it at mono level, instead of writing unmanaged code
TimToady Kattana: pong 21:42
audreyt_ hm, that seems to be the answer to the flyweight reference thing Chip wanted for parrot 21:43
nothingmuch TimToady: has anyone from @Larry played with Moose yet? 21:47
or more importantly, Class::MOP? (i know that chromatic played with it a bit, but only for introspection) 21:48
svnbot6 r10835 | renormalist++ | - cperl-mode.el: twiddled with qr and rx ("backharmonizing") 21:51
fglock nothingmuch: what should I use to implement p6 class semantics in v6-pugs (no sugar needed)
is there overhead for using Moose? 21:52
like extra sub calls
nothingmuch Moose's overhead is quite big actually (right now)
because it uses introspection and doesn't memoize/inline enough things yet 21:53
audreyt_ t should get Module::Compile'd :)
fglock nothingmuch: you could implement Moose in p6 (depends on how complex it is) 21:55
nothingmuch audreyt_: soon =)
audreyt_: my plan (which will, with ample force, become stevan's plan), is to first lay down some caching rules
once we know what is safe to cache and when, we can then add persistent memoizationw ith MC
and also code inlining with MC
especially if the class becomes closed 21:56
audreyt_ fglock: it will be very metacircular indeed :)
nothingmuch: Moose doesn't yet have "is open" annotations right?
21:56 stephanepayrard_ joined
audreyt_ last I checked it has no classwide annotations 21:56
such as "class Foo is rw"
fglock audreyt_: my plan is to rewrite the emitter in p6 soon - it is simple enough 21:57
nothingmuch audreyt_: not yet
fglock but first, implement P6 closures inside rules using v6 instead of source filter
nothingmuch class is rw? 21:58
is that like the default attr thing?
btw, i've been noticing that all my recent projects (Monju, Class::Workflow, etc) have had good support for purely functional usage using readonly objects
what's Perl's level of support for haskell like records
where you derive a copy
with only some fields overridden?
audreyt_ that's called COW 21:59
svnbot6 r10836 | Sage++ | Adding design docs
r10837 | Sage++ | Adding design docs
audreyt_ and is not present anywhere
so you have to fake it with double refs
which is sad
nothingmuch it's not just COW
it's mostly the lightweight syntax 22:00
oh, and I mean Perl 6
=)
audreyt_ heh
$obj.clone(overridden=>'value')
is probably it
nothingmuch ah
like Moose gives me now
audreyt_ on value objects that can maximize sharing
svnbot6 r10838 | Sage++ | Adding design docs
r10839 | Sage++ | Adding testing material
audreyt_ yes
nothingmuch on any attr is rw it can maxaimize sharing =)
audreyt_ eh, uhm, hm? 22:01
on "is rw" you have to actually copy
nothingmuch err
audreyt_ only on "is readonly" you can share
nothingmuch i meant ir ro
yeah
audreyt_ k
nothingmuch oh, you meant non-deep isro
Kattana TimToady: still there? just wondering if you got that pm the other day
svnbot6 r10840 | Sage++ | Adding personal copy
nothingmuch doesn't Perl 6 have cow by default, btw? 22:02
audreyt_ COW is a runtime feature
not a language feature
if the runtime has support for that in object layout, sure
if not, we can't
nothingmuch i mean as a general rule
audreyt_ I don't think so, no
there's no "tail calls must be fast" like dictate in the Syns
nothingmuch although it's transparent, performance does affect people's decisions on design 22:03
hmm
oh well
audreyt_ the runtime profile for perl6 is very blurry to all involved...
maybe because we don't want to evaluate sqrt($evil)
22:03 renormalist left
nothingmuch yeah, but some things are obviously needed, like bigint support, and STM and stuff 22:04
that is, they can go missing
but there's no real way to support full Perl 6 without this
audreyt_ we don't get STM when targetting JS
nothingmuch likewise, s04 (?) talks about packed arrays
audreyt_ bigint support may vary depending on platform
nothingmuch it's not a requirement
ZuluOne surely sqrt(all($evil)), even though they are equivalent?
nothingmuch but it's a hint
audreyt_ nod
nothingmuch encouraging better design to make use of the extra value on runtimes that do give a damn
audreyt_ well, you are in charge of one of the runtimes :) 22:05
so if you give a damn, we'll work on it :)
nothingmuch which one is that gain?
audreyt_ Moose?
nothingmuch oh
i didn't know i was ;-)
audreyt_ I thought you are a Moose committer and generally hacking on it :)
nothingmuch yes
audreyt_ well then :) 22:06
nothingmuch but I didn't know i was responsible ;-)
audreyt_ fair enough
nothingmuch fglock: the best bet is to probably sort out the Perl 6 MOP WRT moose 22:07
and see how you can translate to that
you'll probably want to use Class:::MOP
and not Moose itself
since Moose is to Class::MOP a bit like Perl 6 is to the object space
(only it's very Perl 5 specific in it's impl)
audreyt_ otoh, Roles are in Moose not in C::MOP
so would make sense to reuse 22:08
nothingmuch well
Moose::Meta stuff is still Class::MOP
Moose itself is the sugar layer
audreyt_ yup
so use M::M
not Moose
is what I meant
nothingmuch aye
fglock: if you want a quick overview:
fglock M::M?
nothingmuch Moose::Meta::*
audreyt_ Moose::Meta
nothingmuch you have Meta::Class which you can subclass 22:09
every perl namespace that was touched by moose has an instance of a meta class
the meta class can introspect and also change the namespace
you can think of the namespace in the symbol table as part of it's instance data
it deals with several other objects:
Class::MOP::Method (simple, and also wrapped/augmented/hooked methods) 22:10
Moose::Meta::Attribute
(an attribute is the interface part - the name, the accessors, the constraints and coercions)
and Moose::Meta::Instance
which describes the structure of the instance and performs slot allocation
(potentially this can be static)
attrs interface with the meta instance to allocate storage slots 22:11
then you have Moose:::Object which implements ->new that calls meta->isntance->create_instance, and then lets all the attrs handle the params, and then calls BUILDALL which does every BUILD
and err, that's it
as for Roles - they have everything deferred
that is, on compotision they apply their stuff to the class they are being composed into 22:12
i hope that helps you know where to look now =)
join #moose on irc.perl.org if you want more detailed info
fglock k 22:13
v6.pm will probably just use Moose first, and then optimize 22:14
nothingmuch it's not a matter of optimization 22:15
audreyt_ not even sure we want to optimize on the v6.pm level
nothingmuch Class::MOP's api is probably just more robust for programatic invocation
audreyt_ nothingmuch: we are codegenning p5
nothingmuch yeah
audreyt_ and whenever sugar makes sense
that will help people debugging
nothingmuch hmm
but Moose and Perl 6 are not 1:1 22:16
so that could be trouble
audreyt_ there is no reason why a subset of Moose cannot be all Perl6 needs
nothingmuch well
audreyt_ and if they disagree on internal metaclass handling logic
nothingmuch whatever works =)
audreyt_ then we need to fight it out in Chicago :)
nothingmuch then you can just write Class::MOP::Perl6
audreyt_ I just don't see why we need that :)
nothingmuch although IMHO Moose should try and mimic Perl 6 as closely as possible
audreyt_ if they fundamentally differ on the meta level 22:17
that's going to confuse people using p5 sugar
and hinder v6.pm adoption
nothingmuch i don't think they differ substantiall, and i'm sure they don't differ fundamentally
fglock bbiab - will backlog &
nothingmuch but perhaps they do subtly
audreyt_ so different sugar is fine, but the M::M shoudl agree
yeah, so we need to iron those things out
nothingmuch right
22:17 fglock left
audreyt_ one good way is p6izing the moose tests :) 22:17
nothingmuch that's why i asked TimToady if anyone played with it =)
audreyt_ but we'll see.
(I've p6ized the cookbooks, and there's only two things: object layout and subset vs subtype) 22:18
p6 allows this
22:18 Limbic_Region joined
nothingmuch object layout? 22:19
audreyt_ class Foo { has $.x; method foo { $.x = 1 } }
(if I'm not mistaken)
nothingmuch splain
audreyt_ but in Moose it has to be
class Foo { has $.x; method foo { self.<x> = 1 } }
because ro slots are ro even within class body 22:20
so you need to peek into the layout
which is not portable across layouts
nothingmuch oh
caller sensitive ro behavior is a long TODO
audreyt_ ("layout" here means "repr" in PIL^N land)
nothingmuch btw
self.<x> isa nono
audreyt_ well the cookbook use that
on the first page
nothingmuch $self->meta->meta_instance->set_slot("x", 1) } ;-)
audreyt_ so *shrug*
nothingmuch yeah
long argument with stevan
of course, that should have an inlinable version 22:21
since meta_instance does not typically change during runtime
audreyt_ just have caller sensitive accessors ;)
so, why is it a nono?
surely we can go the other way with tying?
nothingmuch well
because meta instances are opaque
audreyt_ I mean tie $x 22:22
$self
nothingmuch oh
sure
audreyt_ so that <x> resolves to meta instance call
nothingmuch yeah
audreyt_ that's one way to fix the mismatch
nothingmuch that's just a meta attr class
audreyt_ for sugar, it's perhaps best
nothingmuch i think
either that or Want lvalue
want assign
audreyt_ yeah, but the cookbook is currently broken wrt the p6 callconv
yeah
nothingmuch yep
i'll sit on stevan's head so that he'll fix it
audreyt_ cool! 22:23
yay to a head-sitting nothingmuch
nothingmuch so far i've bulldozed him into supporting a few perl 6 subtleties
but mostly out of the interest of translating Moose code to Perl 6
audreyt_ is bulldozing more painful than railroading?
nod. the roundtrip should be canonical
nothingmuch anyway, sleepy time
audreyt_ good night
see you in Chicago
nothingmuch i dunno how painful railroading is 22:24
indeed!
btw, is balas coming?
audreyt_ to Boston
not Chicago
nothingmuch ah
well
*poof*
audreyt_ ...and he disappeared in a smoke of logic
obra heh
rafl Juerd: No. I wanted to be at the southside festival at this weekend and didn't make it. 22:58
23:00 mako132_ joined
particle_ pings audreyt_ 23:01
audrey: i'm leaving in ~15min. please meet at 5p at *south* side of bldg 35, if possible. you have my number, if you don't see me or plans change. see you soon. 23:04
particle &
audreyt_ ok, will be there 23:11
23:12 KingDiamond joined, premshree_ joined, premshree_ left 23:13 premshree__ joined, premshree_ joined 23:14 premshree_ left, premshree__ left
stevan audreyt_: the Moose::Cookbooks need updating badly 23:17
the $self->{x} was from before we added the instance protocol
it will eventually go away
stevan just needs to find enough @time away from $work
as for Perl 6 <-> Moose ... they will *always* be compatible on some level 23:19
they will always be subsets/supersets of one another 23:20
for instance, Perl 6's MOP will have more to it then Moose
this is because Perl 6 MOP will likely control access to packages, where as with Moose, you can always just bypass the MOP and use symbol table hackery 23:21
audreyt_ er with p6 you can always go into the runtime too 23:22
that's not a problem
Moose is both a p5-runtime level thing
and a conceptual protocol
stevan yeah
audreyt_ I only care about the latter
as you surely would agree :)
stevan but in Perl 6 we can make sure that you always go through the MOP on some level right? 23:23
audreyt_ that's the entire idea :)
sure
stevan yes I agree,. the runtime internals are not as important as the conceptual details
Moose will have things like before/after/around and augment/inner too.. but those are just toys I like 23:24
if I can sell @Larry on them, then P6 can have em too :)
augment/inner is really useful,.. I have to write up a nice cookbook for it 23:25
but yes,.. in the end,.. I am always trying to make sure that Moose and Perl 6 play nice
audreyt_ I like that brendan on the very beginning of JS2 talk 23:27
says that the migration strategy is JS2->JS1 period
and everything else comes later
I really think that's the way forward for P6 as well :)
stevan I am not sure I understand
stevan has not seen the talk maybe
audreyt_ the P6 equivalent would be that ensuring P6->P5 backtranslation on P5 runtime works first 23:28
before doing any other runtime compat tricks
stevan ah yes
well as long the metamodels have a strong enough conceptual similarity ,.. it should be fine
audreyt_ because that nets them a self hosting js2 compiler that can run on js1
and effectively reference implementation of internals 23:29
modeled on a subset of js1 semantic that we all know and love
(or not love, but at least familiar)
stevan ah I see what you mean
audreyt_ which is what Moose effectively is doing, at least in part
stevan it will get trickier when you get down to straight P5 stuff,.. non-OO/Moose
but that is what Moose::Autobox tried to explore 23:30
I agree too that v6.pm should use Moose::Meta::*, however that is not 100% stable yet 23:31
the role MOP needs work
audreyt_: I was looking at the YAPC schedule,.. your deploying p6 talk is the same time as my Moose talk 23:32
double the M??siness 23:33
se ;)
23:35 mako132_ joined 23:41 Ymmv joined
audreyt_ :) 23:44
Seattle.pm &
so we end up figuring out a type to do runtime MOP in CLR :D 23:45
by allocating a "type pool" of 100 uninstantiated static types in compile time
and at runtime whenever the MOP has a createClass or something like that, use one of the unallocated types and swap it out into dynamic types with transparent proxy 23:46
and once the 100 is exhausted, just create 100 more using Reflection
and it even works in mono
beautiful ;)
svnbot6 r10841 | audreyt++ | * Pugs::Lexer - make these two equivalent: 23:53
r10841 | audreyt++ | my Foo $x;
r10841 | audreyt++ | my ::Foo $x;
r10841 | audreyt++ | previously the second one was assigning ::::Foo to $x.
ingy hi audreyt_ 23:54
audreyt_ yo ingy
ingy is M::C on cpan not working with v6?
svnbot6 r10842 | audreyt++ | * Introduce the (Ann Decl) form to eventually support this special form:
r10842 | audreyt++ | state $x = 4;
r10842 | audreyt++ | which must expand to
r10842 | audreyt++ | FIRST { state $x = 4 }
r10842 | audreyt++ | not sure if it's a parsetime or runtime distinction, and not sure
r10842 | audreyt++ | if bindings get the same treatment:
r10842 | audreyt++ | state $x := 4;
r10842 | audreyt++ | TimToady? :)
audreyt_ not sure
it probably does
I gotta run to Seattle.pm meeting 23:55
ingy ok, I'm about to get on a plane
I'll merge M::C into pugs tree
have fun
tell 'em ingy says yo
audreyt_ k :) 23:57
&