Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-08-01

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:07 penk joined #perl6
00:15 vixey joined #PERL6
00:18 viklund` left #perl6
00:20 meppl good night
00:26 ruoso @tell pmurias, when I implemented new in smop_s1p_scalar other tests started failing. Then I realised that was because we were assuming that Scalar would delegate all calls to its cell. but how do we call Scalar.new? I think we need the opposite, every item supports .FETCH(), which means that everytime you want to operate with a value, you need to do the fetching...
00:26 lambdabot Consider it noted.
00:29 ruoso @tell pmurias, I think the '.' operator implies a FETCH()... $*OUT.print would translate to what today is $*OUT.FETCH.print
00:29 lambdabot Consider it noted.
00:32 ruoso @tell pmurias, I'm commiting it with a ___UNKNOWN_METHOD___ instead of the delegation in smop_s1p_scalar... it causes breakage, but the delegation is too much fragile... we should avoid it and force the "value context" where appropriate
00:32 lambdabot Consider it noted.
00:34 ruoso TimToady, is it sane to consider the existence of a "value context"?
00:34 pugs_svn r21662 | ruoso++ | [smop] attribute mostly implemented, tests still failing, but the code is there.
00:34 pugs_svn r21662 | ruoso++ | Scalar no longer delegates the calls to its cell, there should be an implicit fetch in "value context"
00:35 ruoso TimToady, as opposed to "container context"
00:38 ruoso @tell pmurias, in the end, that will mean that we will not see any explicit FETCH/STORE in the code, they would always be implicit depending on the context ('=' is probably the only STORE case, for the lvalue, but the rvalue still have a implicit FETCH in that case)
00:38 lambdabot Consider it noted.
00:42 ruoso I think we reached a very p5-like model... there isn't much sense in a value without a container, considering the features Perl 6 has... What we have different now is that we have the clear distinction of the container and the value,
00:43 ruoso but pragmatically, you always have a container, even if it's a read-only scalar container that have itself as the value
00:52 * ruoso sleep &
00:59 penk joined #perl6
01:26 avar joined #perl6
01:53 penk joined #perl6
02:03 bacek joined #perl6
02:04 luqui joined #perl6
02:11 Lorn joined #perl6
02:25 justatheory joined #perl6
02:29 penk joined #perl6
03:05 pen1 joined #perl6
03:21 kanru joined #perl6
03:23 alester joined #perl6
03:24 coumbes joined #perl6
03:28 penk joined #perl6
03:43 vixey joined #PERL6
04:40 simcop2387 joined #perl6
05:15 justatheory joined #perl6
05:18 luqui joined #perl6
05:42 iblechbot joined #perl6
05:50 Psyche^ joined #perl6
06:10 kanru joined #perl6
06:38 ashizawa joined #perl6
06:58 jan joined #perl6
07:04 silug joined #perl6
07:16 alanhaggai joined #perl6
07:17 * zamanfou is now away: In the rain my tears are forever lost.
07:28 pmurias joined #perl6
07:28 pmurias ruoso: hi
07:34 pmurias the problem with non-delegation is that we will have a lot more method calls
07:40 pmurias it should be possible to have the scalar delegate everything, with a VAR() needed to call methods directly on it
07:40 cosimo joined #perl6
07:50 bacek joined #perl6
07:52 explorer joined #perl6
08:03 zamolxes joined #perl6
08:08 masak joined #perl6
08:38 pugs_svn r21663 | fglock++ | [v6.pm] 0.032
08:56 meteorjay joined #perl6
09:01 fridim_ joined #perl6
09:25 ruoso pmurias, I know it requires additional method calls... but VAR() only makes sense in a higher level, creating an additional container to allow you calling methods on the variable, because '.' would have an implicit fetch
09:26 ruoso pmurias, VAR() doesn't make sense when we are in the level "use v6 blocks" are
09:26 ruoso except we have it making all the implicit FETCH calls
09:26 * ruoso waking up &
09:28 agentz1 joined #perl6
09:37 pmurias "use v6 blocks" are in the top-most level
09:37 barney joined #perl6
09:37 pmurias their content is normal p6
09:39 pmurias (with the exception of the lexical scope faling back on the C lexical scope)
09:47 elmex joined #perl6
10:02 Jedai joined #perl6
10:08 ruoso pmurias, so in "use v6" blocks you need to add implicit FETCH on the '.' operator and other operators that imply "value context"
10:08 * ruoso going to work &
10:08 * ruoso later &
10:23 meppl joined #perl6
10:47 lleksah joined #perl6
10:58 smtms joined #perl6
11:02 alanhaggai_ joined #perl6
11:16 bacek joined #perl6
11:22 pmurias @tell ruoso what are your objections to the redispatching scheme? We could do it differently, a Scalar would be wrapped in an object which would just redispatch *everything* on the scalars .FETCH and the actual scalar could be retrived using VAR()
11:22 lambdabot Consider it noted.
11:22 pugs_svn r21664 | fglock++ | [v6.pm] more tests  # 6500
11:23 pmurias @tell ruso VAR() could either call an internal method (if we can reserve one) or know the Scalar's RI
11:23 lambdabot Consider it noted.
11:26 pmurias @tell ruoso VAR() could either call an internal method (if we can reserve one) or know the Scalar's RI
11:26 lambdabot Consider it noted.
11:31 pmurias lunch&
11:34 Alias_ joined #perl6
11:35 buubot joined #perl6
11:44 pugs_svn r21665 | audreyt++ | * Remove unused third-party modules.
11:46 pugs_svn r21666 | audreyt++ | * Add Cabal, HTTP, zlib and cabal-install to third-party.
11:47 pugs_svn r21667 | audreyt++ | * Also add Parse::Yapp as a prereq of PCR.
11:48 pugs_svn r21668 | audreyt++ | * Rename Makefile.PL to Makefile.PL.old in preparation of
11:48 pugs_svn r21668 | audreyt++ |   the new Makefile.PL overhaul.
11:48 pugs_svn r21669 | audreyt++ | * Replace the Pugs.cabal.in with a standalone Pugs.cabal.
11:52 pugs_svn r21670 | audreyt++ | * A new Makefile.PL based on cabal-install.
11:53 pugs_svn r21671 | audreyt++ | * Add precompile Prelude.pm and Test.pm to src/cbits/.
11:54 pugs_svn r21672 | audreyt++ | * src/: Delete pretty much everything factored out from Pugs proper.
11:56 pugs_svn r21673 | audreyt++ | * Import Pugs 6.2.13.11 from Hackage into our source tree.
11:56 pugs_svn r21673 | audreyt++ | * Highlights:
11:56 pugs_svn r21673 | audreyt++ |     - Much faster startup time
11:56 pugs_svn r21673 | audreyt++ |     - Slightly faster compilation time
11:56 pugs_svn r21673 | audreyt++ |       (mostly due to refactored Pugs.AST.Internals)
11:56 pugs_svn r21673 | audreyt++ |     - Portable-to-Win32 readline thanks to Haskeline
12:02 sri_work joined #perl6
12:10 pugs_svn r21674 | fglock++ | [v6.pm] more tests  # 6600
12:12 pugs_svn r21675 | audreyt++ | * Delete everything we're not actively using from src/.
12:16 moritz_ perl Makefile.PL says:
12:16 moritz_ [Pugs Dependencies]
12:16 moritz_ Can't exec "/bin/cabal": No such file or directory at Makefile.PL line 52.
12:17 ruoso joined #perl6
12:17 moritz_ ah well, lets see which debian package offers cabal..
12:18 moritz_ none, on stable
12:18 pugs_svn r21676 | audreyt++ | * Add back Pugs.Embed.Parrot without .hsc
12:18 moritz_ well, I'll just build on testing then...
12:19 audreyt moritz_: that message should follow by something that installs cabal for you
12:19 audreyt does it not?
12:19 ruoso good to see you around audreyt  ;)
12:19 lambdabot ruoso: You have 2 new messages. '/msg lambdabot @messages' to read them.
12:19 moritz_ audreyt: http://nopaste.snit.ch/13713
12:20 pugs_svn r21677 | audreyt++ | * Reflect data-dir changes.
12:20 audreyt moritz_: just a sec
12:21 audreyt moritz_: try
12:21 audreyt ./Setup -d
12:22 audreyt what does it say?
12:22 moritz_ Setup: No command given (try --help)
12:23 audreyt moritz_: that doesn't sound correct
12:23 audreyt try
12:23 audreyt rm Setup ; rm Setup.hi ; rm Setup.o
12:23 audreyt ghc --make -O0 -o Setup Setup.lhs
12:23 audreyt ./Setup -d
12:23 ruoso @tell pmurias, the problem is that the containers are regular objects that might implement any method they want... but in fact, that brings again the "value context" × "container context"... we don't have much option except for always calling fetch...
12:24 lambdabot Consider it noted.
12:24 moritz_ /home/moritz/.cabal
12:24 moritz_ and there's /home/moritz/.cabal/bin/cabal
12:24 audreyt moritz_: so now perl Makefile.PL would succed.
12:24 masak svn says "Failed to add file 'X': object of the same name already exists" sometimes. how can it not recognize one of its own files?
12:25 ruoso @tell pmurias, my $a = foo(); # in that case, foo() may or may not return a scalar... the only thing we can do is *always* call FETCH when using it as a value, and make values readonly self-containers
12:25 lambdabot Consider it noted.
12:25 ruoso @tell pmurias, then we have "container context operators", like ':='
12:25 lambdabot Consider it noted.
12:26 pugs_svn r21678 | audreyt++ | * Makefile.PL: More robust ~/.cabal detectino thanks to moritz++
12:26 ruoso so every operator that uses "value context" implies a FETCH()
12:27 masak so, if I already have Pugs installed via Cabal, what do I do to install it in this new way?
12:27 ruoso $a.b() actually means LexPad.<$a>.FETCH().b();
12:27 moritz_ audreyt++
12:27 audreyt masak: the new way is just automating the steps you do.
12:27 audreyt masak: so "perl Makefile.PL ; make ; sudo make install" still works
12:27 audreyt but so should simply "cabal install" from pugs dir
12:28 audreyt the difference is the first also installs the docs/ stuff and copies pugs to /usr/local/bin/pugs.
12:28 masak audreyt: ok, cool
12:28 moritz_ http://nopaste.snit.ch/13714
12:30 audreyt moritz_: r21679.
12:30 pugs_svn r21679 | audreyt++ | * Makefile.PL: configure before build.
12:32 masak http://nopaste.snit.ch/13715
12:34 audreyt masak: you may need a "cabal update".
12:34 pasteling "moritz_" at 89.13.240.3 pasted "'make' output for audreyt++ (again ;)" (22 lines, 494B) at http://sial.org/pbot/31747
12:34 masak audreyt: gotcha.
12:35 pugs_svn r21680 | audreyt++ | * Insist on a local cabal-install even if we have a global one.
12:36 audreyt moritz_: rerun Makefile.PL?
12:36 pugs_svn r21681 | audreyt++ | * Add Prelude.hs.
12:37 audreyt moritz_: if it doesn't install all deps for you
12:37 audreyt trace line 59 of Makefile.PL and see if it actually runs.
12:38 moritz_ Resolving dependencies...
12:38 moritz_ cabal: cannot configure regex-pcre-builtin-0.94.2.0.7.7. It requires base
12:38 moritz_ >=3.0
12:38 moritz_ There is no available version of base that satisfies >=3.0
12:38 audreyt uhm
12:38 audreyt what's your ghc version.
12:39 moritz_ 6.6.1-2
12:39 moritz_ probabyl too old?
12:39 audreyt not exactly unworkable
12:39 audreyt but too messy at the point.
12:39 audreyt s/the/this/
12:39 audreyt I'll up the req to 6.8 in inc/.
12:40 moritz_ ok
12:40 audreyt done.
12:40 pugs_svn r21682 | audreyt++ | * Module::Install::Pugs: We now want GHC 6.8.
12:41 pugs_svn r21683 | audreyt++ | * It is okay if the user had no ~/.cabal/.
12:48 pugs_svn r21684 | audreyt++ | * Refer to LICENSE/MIT.
12:50 masak 'cabal update' doesn't seems to actually do anything.
12:51 masak it downloads the package list and then exits silently
12:52 audreyt yes, but then the next "caal install" would resolve using new module list
12:53 pugs_svn r21685 | audreyt++ | * Write Pugs.Config.
12:54 pugs_svn r21686 | audreyt++ | * Oops, add a missing "cabal update".
12:55 pugs_svn r21687 | audreyt++ | * Add PIR Prelude.
12:56 audreyt Ok, a fresh checkout of Pugs just built correctly on a random linux box
12:56 moritz_ holiday &
12:56 audreyt the next step (awaiting dcoutts++ and the cabal-install team)
12:56 masak audreyt: I still get 'setup: At least the following dependencies are missing: FindBin -any, haskeline >=0.2.1, pugs-compat >=0.0.5', though
12:56 audreyt is to wait for their equivalent of CPAN::Inject / CPAN::Mini
12:57 audreyt masak: does "cabal install FindBin haskeline pugs-compat" resolve things for you?
12:57 audreyt masak: the weird thing is that "perl Makefile.PL" is supposed to do that for you
12:57 audreyt ah, that's because you just did "cabal install" on pugs home dir.
12:57 kolibrie audreyt: perl Makefile.PL says: Setup.lhs:11:31: Not in scope: `autoconfUserHooks' Can't exec "./Setup": No such file or directory at Makefile.PL line 23
12:57 kolibrie do I need to rm Setup ; rm Setup.hi ; rm Setup.o
12:57 kolibrie etc
12:58 audreyt kolibrie: aha. a sec.
12:58 pugs_svn r21688 | audreyt++ | * Oops, we need to bootstrap cabal. try again.
12:59 kolibrie audreyt: Linking ./Setup ...
12:59 kolibrie audreyt++
13:00 audreyt kolibrie: r21689 should fix it.
13:00 xinming audreyt: this time, It works
13:00 pugs_svn r21689 | audreyt++ | * Allow for bootstrapping cabal.
13:01 pugs_svn r21690 | audreyt++ | * Final checkin for this batch - Pugs installation should now work
13:01 pugs_svn r21690 | audreyt++ |   from scratch checkout with network connection.
13:01 pugs_svn r21690 | audreyt++ |   Next step: offline.
13:02 pugs_svn r21691 | fglock++ | [v6.pm] more tests   # 6900
13:03 kolibrie Setup: At least the following dependencies are missing: network -any
13:03 kolibrie that will be in a ghc package?
13:03 audreyt oh. hm.
13:03 audreyt it normally is
13:03 audreyt but it is part of the "extra" package
13:04 audreyt I guess it doesn't hurt to require installation of it
13:04 audreyt (this is like finding CGI.pm not installed with perl.)
13:05 kolibrie audreyt: perhaps I should install libghc6-network-dev?
13:05 pugs_svn r21692 | audreyt++ | * Also require the "core" libraries to be installed.
13:05 audreyt kolibrie: that will do, or r21692 Makefile.PL does that for you
13:06 audreyt probably try r21692 Makefile.PL first.
13:06 kolibrie pulling
13:07 kolibrie no go
13:07 pasteling "kolibrie" at 66.239.158.3 pasted "network -any dependency" (15 lines, 611B) at http://sial.org/pbot/31748
13:07 pugs_svn r21693 | audreyt++ | * Add back "make smoke" and "make upload-smoke" targets.
13:07 audreyt oh. hm.
13:07 audreyt you need network to install HTTP
13:07 audreyt which you need to install cabal-install
13:07 audreyt which you need to install network.
13:07 audreyt a sec.
13:08 audreyt that means we need to add network, filepath, parsec to third-party.
13:09 audreyt oh, just network and parsec.
13:09 audreyt ok we do that.
13:10 xinming Global symbol "$pugs" requires explicit package name at Makefile.PL line 141.
13:10 xinming :-D
13:11 audreyt xinming: sa sec
13:11 xinming I think I can fix it. :-)'
13:12 audreyt then do that :)
13:12 pugs_svn r21694 | audreyt++ | * Add network and parsec to third-party.
13:13 cmarcelo joined #perl6
13:13 audreyt cmarcelo: hi! I did your work for you :)
13:13 audreyt xinming: going to commit soon?
13:13 pugs_svn r21695 | yiyihu++ | Fixed
13:13 pugs_svn r21695 | yiyihu++ |  Global symbol "$pugs" requires explicit package name at Makefile.PL line 141.
13:13 pugs_svn r21695 | yiyihu++ | in Makefile.PL
13:13 audreyt cool!
13:13 xinming audreyt: yes, I think It's fixed, But I am not sure. >_<
13:14 kolibrie xinming: that worked for me
13:14 kolibrie audreyt: but I still get the network dependency
13:14 audreyt kolibrie: you need r21696 and perl Makefile.PL
13:14 cmarcelo audreyt: hello, how's going? I saw the blog :o)
13:14 pugs_svn r21696 | audreyt++ | * Solve the problem reported by kolibrie++ of lacking network and parsec.
13:14 audreyt cmarcelo: svn up and "perl Makefile.PL ; make ; make install" should work.
13:15 kolibrie audreyt: ok, looks better now
13:15 audreyt cmarcelo: I havn't yet committed the dependenies like MetaObject and HsSyck in
13:15 audreyt cmarcelo: that'll wait a couple days until the cabal-install people figure out how to make local hackage mirrors work
13:15 audreyt but otherwise pugs should install fine if you have a working network connection.
13:16 cmarcelo great! :-)
13:18 kolibrie audreyt: now when I make I get: make: /home/kolibrie/.cabal/bin/cabal: Command not found
13:19 audreyt kolibrie: hm.
13:19 kolibrie I see ~/.cabal/
13:19 kolibrie but it only has lib and share in it
13:19 audreyt that means cabal-install installation somehow failed.
13:19 audreyt try this
13:19 audreyt cd third-party/cabal-install
13:19 audreyt ./Setup configure --user
13:19 audreyt ./Setup build
13:19 audreyt and see what happens?
13:20 audreyt (and ./Setup install --user)
13:20 kolibrie there is no Setup there, jest Setup.hs
13:20 audreyt well then
13:20 audreyt ghc --make -O0 Setup.hs
13:20 audreyt first
13:20 masak now I get 'gcc-4.0: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags'
13:21 audreyt masak: during "make"? nopaste your Pugs.buildinfo?
13:21 kolibrie Setup: At least the following dependencies are missing: zlib >=0.4
13:21 masak audreyt: ok, hold on
13:21 audreyt kolibrie: that means zlib has failed
13:21 audreyt do the same for third-party/zlib ?
13:22 kolibrie :)
13:22 pasteling "masak" at 130.238.45.242 pasted "my Pugs.buildinfo" (6 lines, 1.3K) at http://sial.org/pbot/31750
13:23 masak audreyt++
13:23 audreyt oy, Universal.
13:24 pmurias joined #perl6
13:24 audreyt masak: r21697
13:24 masak :)
13:24 pugs_svn r21697 | audreyt++ | * Configure.PL: We really can't build universal binaries.
13:24 pugs_svn r21697 | audreyt++ |   Reported by masak++
13:26 masak audreyt: same error... :/
13:26 masak oops, hold on
13:26 masak incomplete svn up
13:26 audreyt ok
13:26 masak svn is very sensitive to files that already exist in the working copy
13:27 audreyt yes, you need to manually rm them
13:27 masak why is that?
13:27 audreyt bad design?
13:27 masak suppose so
13:27 * masak has a good mind to report it as a bug to the svn people
13:27 audreyt well it's a concious design
13:27 masak ...with high severity
13:28 audreyt lest other people's file overwrites your precious not-yet-committed-but-same-named file
13:28 audreyt it could instead just report it as a conflict and offer to resolve interactively, I suppose.
13:28 masak hm
13:28 masak does it still complain if the files are identical>
13:28 masak ?
13:29 audreyt no idea
13:29 masak now it seems to build, anyway
13:29 TJCRI joined #perl6
13:29 masak audreyt++
13:29 jhorwitz joined #perl6
13:30 kolibrie audreyt: after installing zlib and cabal-install, I had to perl Makefile.PL, which pulled down the other dependencies.  Now it is making
13:32 pugs_svn r21698 | audreyt++ | * Seeing how "svn up" on Pugs.Embed.Parrot causes "identical local file"
13:32 pugs_svn r21698 | audreyt++ |   errors, and that Pugs.Embed.Parrot has bitrotten anyway, delete it.
13:33 pugs_svn r21699 | audreyt++ | * The logical consequence of r21698.
13:33 pmurias ruoso: the basic difference between your and my ways of handling containers is IMHO that you propose adding a lowlevel FETCH method call, and i assume all lowlevel method calls assume a FETCH
13:34 pugs_svn r21700 | audreyt++ | * More logical consequences.
13:34 masak FYI, src/Pugs/CodeGen/PIR, src/Pugs/Prelude.hs, amd Pugs.cabal also caused svn problems
13:34 pmurias i rm -fr them, is it ok?
13:34 masak yes
13:34 masak that's what you have to do.
13:35 masak svn-- # design decision
13:35 pmurias no big problem there, I was worried something more sinister happend
13:35 pmurias masak: is there a better way of handling this?
13:35 masak pmurias: git? :)
13:35 ruoso pmurias, which is basically the same thing... ;) "use v6" blocks would make the implicit FETCH calls directly
13:37 ruoso but Scalar would not delegate the calls
13:37 ruoso the operators would do the FETCH when needed
13:37 pmurias a ScalarWrapper
13:37 pugs_svn r21701 | audreyt++ | * Actually Pugs.cabal is still better named Pugs.cabal.in.
13:37 pugs_svn r21701 | audreyt++ |   (To accomodate for e.g. svn versions)
13:40 pmurias i'm proposing $foo would be a delegating scalar wrapper, and VAR($foo) would be the actual Scalar
13:41 masak audreyt: now I get the multiple -arch error later during make
13:41 kolibrie audreyt++ # my pugs works!
13:41 masak namely, after [65 of 89] Compiling Pugs.Run.Perl5
13:42 audreyt masak: aw.
13:42 audreyt masak: nopaste the "make" log?
13:42 masak audreyt: oki
13:43 pmurias my $a = foo() would be VAR(LexPad.<$a>).STORE(VAR(foo()).FETCH)
13:43 pmurias but $a.b would be just LexPad.<$a>.b()
13:43 pugs_svn r21702 | audreyt++ | * Add bytestring to third-party as well.
13:44 pasteling "masak" at 130.238.45.242 pasted "make log" (82 lines, 5.5K) at http://sial.org/pbot/31751
13:44 pmurias ruoso: it is slightly more complex but should be faster
13:45 ruoso pmurias, which one is more complex?
13:46 ruoso oh wait...
13:46 pmurias my proposal
13:46 * ruoso re-readin
13:46 * pmurias re-reading to
13:46 pmurias o
13:46 ruoso pmurias, the problem is that you have foo().bar().baz() where foo, bar and baz might return scalars
13:46 ruoso so you always have to force "value context"
13:47 ruoso which means an implicit FETCH anyway
13:48 pmurias they would return WrappedScalars which are indistinguishable from their content
13:48 hercynium joined #perl6
13:49 pmurias so foo().bar().baz() would work regardless if scalars or values would be returned
13:51 pmurias ruoso: i can implement it as i might be describing it wrongly
13:51 ruoso but how do you call a method in the WrappedScalar?>
13:51 ruoso (in the low-level)
13:52 pmurias you mean a method on the Scalar itself or on the value?
13:53 pmurias $foo.foo would be just $foo.foo in the low-level
13:53 ruoso in the scalar itself
13:53 ruoso on the low-level
13:53 ruoso if you delegate all calls? how do you do an actual call
13:53 rhr audreyt: I got the missing zlib and HTTP when I ran Makefile.PL from r21702.  repeatedly re-runnung perl Makefile.PL seems to have solved it.
13:54 ruoso the thing is that a higher level language
13:54 ruoso have implicit FETCH/STORE defined by the syntax
13:54 pmurias it turn it into the Scalar first with VAR, VAR.postcircumfix:<( )>($scalar).scalar_method
13:54 ruoso $a = $b; implies "container context" in the lvalue and "value context" in the rvalue
13:55 ruoso pmurias, but in the low-level?
13:55 ruoso in the low-level you have just two objects... the scalar and the value
13:55 pmurias three in my scheme
13:55 ruoso hmmm.... that looks strange...
13:56 pmurias it is a bit strange
13:56 pmurias ;0
13:56 pmurias ;)
13:56 pmurias s/;0//
13:56 ruoso I think the idea of having ro-self-containers for values is cleaner
13:56 ruoso which means that every object implements FETCH, even if it returns itself
13:57 ruoso and every operator that uses "value context" makes an implicit FETCH
13:57 ruoso and that's all
13:57 pmurias it would be impossible to read sm0p with FETCH's
13:57 ruoso we're no longer writing sm0p
13:57 ruoso we're writing "use v6" blocks
13:58 ruoso and "use v6" might make that implicit fetch calls
13:58 pmurias i have to read sm0p when debugging elf's smop backend :(
13:58 ruoso like...
13:58 ruoso heh
13:59 ruoso $a = $b means in low-level LexPad<$a>.STORE(LexPad<$b>.FETCH())
13:59 pmurias i could try writing everything on paper to reduce debugging
13:59 pmurias ;)
13:59 ruoso hehe
14:03 ruoso pmurias, so... do we agree?
14:04 pugs_svn r21703 | rhr++ | [INSTALL] howto build Lenny's ghc on Etch: give up
14:06 alester joined #perl6
14:06 barney joined #perl6
14:07 pmurias ruoso: i'm not really sure, i understand how to implement both schemes
14:07 ruoso pmurias, I think delegating is fragile...
14:08 pmurias do you have a example where it fails
14:08 ruoso when you want to call the scalar itself
14:08 pmurias VAR($foo)
14:08 ruoso this is high-level
14:09 pmurias we can have a low-level VAR
14:09 pmurias VAR.($foo)
14:09 ruoso why?
14:09 ruoso we don't need it
14:09 ruoso we can have the container and the valeu
14:09 ruoso value
14:09 ruoso and that's all
14:10 pmurias foo().bar() being foo().FETCH().bar() just feels wrong
14:10 pmurias it will hinder language interoperability
14:10 ruoso you're confusing high-level and low-level
14:11 ruoso about language interoperability... I'm not really sure that is possible as it's currently expected...
14:12 Lorn joined #perl6
14:12 pmurias ruoso: why?
14:14 pmurias ruoso: i'll look how the parrot guys are doing the Scalars
14:15 ruoso pmurias, Perl 6 Object will never be the same as a Java Object
14:15 pugs_svn r21704 | audreyt++ | * Pugs.Prelude should no longer be committed in.
14:16 macroron joined #perl6
14:18 pugs_svn r21705 | audreyt++ | * Makefile.PL: Solve the need-repeat-run-to-install-deps problem
14:18 pugs_svn r21706 | audreyt++ | * Pugs.Run.Perl5: Do without -cpp
14:19 ruoso pmurias, I've asked that question several times... but noone came to me with a clear solution
14:19 pugs_svn r21707 | audreyt++ | * avoid warnings.
14:20 ruoso I really think this supposed language interoperability is a major misguiding principle of the Perl 6 development
14:20 pugs_svn r21708 | audreyt++ | * Run "cabal update".
14:20 ruoso the important to me is runtime-interopeability
14:21 ruoso and in that case, SMOP has a better support than parrot
14:24 pmurias ruoso: what part of language interoperability do you think is infeasible?
14:24 ruoso the transparent integration of java Vector and Perl 6 list
14:24 ruoso there will be always a type-mapping layer
14:25 [particle] i don't see this transparency specced. is it?
14:25 masak ruoso: Java's Vector is superceded by ArrayList nowadays, btw
14:26 pmurias ruoso: a java Vector and a Perl 6 list can be the same thing
14:26 [particle] if a java Vector exposed in a perl 6 program says it does Int, i expect it to
14:27 [particle] ok, Int was a bad example for Vector
14:27 ruoso masak, you still have several List implementations and Set implementations
14:27 [particle] Serializable or whatever
14:27 pugs_svn r21709 | audreyt++ | * Sorry. bytestring does not belong in third-party.
14:27 ruoso [particle], it's not specced, but it's the general expectation
14:27 masak ruoso: yes, definitely.
14:27 [particle] stick to the spec :)
14:28 [particle] it's expected from parrot
14:28 pugs_svn r21710 | audreyt++ | * A better gen_prelude.pl that takes the FFI-based inclusion into account.
14:28 ruoso One thing I decided to neglect was this interoperability, and favor runtime-interoperability instead
14:28 [particle] that sounds proper to me
14:29 pmurias [particle]: how do you do Scalars in parrot?
14:29 ruoso which means... I won't have the Perl 6 list to be the same as a Java List... but I will access the JVM objects instead
14:29 ruoso and allow easier type-mapping implementation than XS
14:29 ruoso simply by translating APIs
14:29 [particle] pmurias: at what level? PAST::Var() contains PAST::Val() or some other object
14:30 pmurias [particle]: i mean like STORE and FETCH
14:30 ruoso [particle], do Scalar delegate the calls to the item? or in "value context" the operators make an implicit FETCH calls?
14:30 [particle] ruoso: yes, but there are devils in the details
14:30 [particle] in perl 6, as i understad, Scalars delegate to the item unless you specify the container, with VAR()
14:31 ruoso [particle], yes.. .but that in high level
14:31 ruoso in the low level you have two objects, the container and the value, right?
14:31 [particle] well... i'm not sure it's done this way in parrot atm
14:31 ruoso in the low-level, do you implicitly FETCH()? or you call the method in the scalar and it delegates?
14:31 [particle] lemme check the latest
14:33 ruoso [particle], about devils in the details... one way I'm trying to exorcise them is by support interoperating runloops with other interpreters....
14:34 [particle] ruoso, still, you need to translate the api, and there are different interpretations of that mapping
14:34 ruoso oh yeah... that mapping won't be automatic...
14:34 pmurias ruoso: isn't it more like summoning than exorcising?
14:36 ruoso pmurias, heh... maybe...
14:37 ruoso [particle], I just want it to be easier to work with then XS...
14:37 ruoso [particle], as it looks now, It will probably be possible to be done in a higher language...
14:38 ruoso [particle], just like you can do with Java::Import
14:38 jdv79 joined #perl6
14:40 [particle] yes, well' parrot's nci is much easier than xs, too
14:40 [particle] so it's definitely possible
14:41 ruoso exactly... I think that's where we can get... I don't think HLL transparent interoperation is actually possible
14:41 pmurias ruoso: isn't the problem with interlanguage interoperability that your application get horrible bloated when you have 10 runtimes?
14:42 ruoso well... I don't work with 10 runtimes today even without integration... I don't think I would have a need to integrate that many runtimes
14:43 ruoso smop, perl5, python, java, C, C++, any one more?
14:43 pmurias haskell?
14:43 audreyt to interop with haskell is to interop with C, basically.
14:44 ruoso maybe ruby, but there isn't many libraries implemented in ruby...
14:44 pmurias audreyt: doesn't haskell have a gc?
14:44 audreyt there's this swig philosophy that says everybody just interop at the C level... and then there's this lua philosophy that says if you want to interop with someone, get embedded in that someone's runtime...
14:45 [particle] lisp
14:45 ruoso and there's the Perl 6 dream of interoperating them in high level...
14:45 audreyt and there's also this pugs philosophy that says if you want to interop with someone, emit code targetting that someone's runtime...
14:46 ruoso audreyt, that's ok for small languages like lua or javascripts
14:46 pmurias n
14:46 pmurias sorry
14:46 audreyt pmurias: yes it does. why?
14:46 ruoso but it doesn't work out when you have languages with native extensions... like perl5 or python...
14:47 ruoso or with enormous API, like Java
14:47 audreyt there is gcj though.
14:48 pmurias audreyt: it has to be taken care of when interoperating so it's not just like with plain c
14:48 ruoso audreyt, that looks like "get embedded in that someone's runtime"
14:48 audreyt ruoso: right.
14:48 ruoso which is what Java::Import does, actually
14:50 ruoso one could port java to parrot... it would make the integration easier... but you would still need type mapping
14:50 audreyt pmurias: point taken, though it's largely handled by the typesystem/FFI code and transparent to embedders.
14:51 pmurias audreyt: is there any support for using CPAN from haskell?
14:51 audreyt pmurias: why yes.
14:51 audreyt http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsPerl5
14:51 lambdabot Title: HackageDB: HsPerl5-0.0.6, http://tinyurl.com/5dnzm9
14:52 ruoso anyway... we haven't had our answer for the Scalar issue yet... ;)
14:52 * ruoso lunch &
14:52 pmurias is there a cabal package for debian lenny?
14:53 [particle] what i'd like to see is a perl 6 statement that exposes the precise question you're asking.
14:53 [particle] (re scalar)
14:53 pmurias [particle]: it's mostly an implementation detail
14:53 [particle] looks to me like rakudo's src/classes/Scalar.pir answers the question to 'my Scalar $x = 3';
14:54 [particle] .namespace ['Perl6Scalar']
14:54 [particle] .sub 'infix:=' :method
14:54 [particle] .param pmc source
14:54 [particle] $P0 = source.'item'()
14:54 [particle] assign self, $P0
14:54 [particle] .return (self)
14:54 [particle] .end
14:54 audreyt it does an implicit FETCH call (except under the name 'item') to its rvalue.
14:57 pugs_svn r21711 | fglock++ | [v6.pm] INSTALL update
15:01 [particle] (back from phoneland) .'item'() gets the item context
15:01 [particle] it's a fetch, yes
15:01 pmurias :/
15:01 [particle] but it's not a container vs value thing
15:02 pmurias so i assume delegation is done in parrot
15:03 pmurias it's the faster choice
15:04 [particle] yes
15:04 audreyt pmurias: by delegation you mean $foo.meth gets emitted as $foo.item().meth by the compiler?
15:05 [particle] The MutableVAR PMC provides access to the container type of a scalar. This is
15:05 [particle] needed as scalar containers forward to their contents.
15:05 Chillance joined #perl6
15:05 [particle] src/pmc/mutablevar.pmc
15:05 audreyt ah, so in parrot the delegation is done by the runtime (PMC) instead of by the compiler.
15:05 pmurias audreyt: by delegation i meant that $foo.foo.bar is emitted as $foo.foo.bar instead as $foo.FETCH.foo.FETCH.bar
15:07 pmurias audreyt: do you think it's better if it's done by the compiler?
15:08 audreyt pmurias: ok, then yes, I think parrot does exactly that, and VAR($foo) gets emitted as something else that involves a MutableVAR wrapper.
15:08 audreyt MutableVAR.new($foo).meth, abstractly, in parrot.
15:09 audreyt pmurias: pugs-the-runtime handles context propagation automatically, so it knows when to make a fetch call and when not
15:09 audreyt that's another alternative.
15:09 audreyt (the bonus here is you get want() for free)
15:11 audreyt pmurias: but I suppose the sanest way is to handle it in the compiler as much as you can, then yield to runtime (via either delegation or a runtime "context" pointer) for cases where you cannot decide
15:11 allbery_b joined #perl6
15:11 pmurias so it knows when to turn $foo.bar.baz into $foo.bar.FETCH.baz?
15:12 audreyt currently in pugs it knows that (SOMETHING).baz must be in rvalue item context for that something
15:12 audreyt so in runtime when evaluating the invocant it does an implicit fetch
15:12 Exodist joined #perl6
15:13 audreyt which is like what perl5 is doing
15:14 audreyt the pp_method_* opcodes first call a
15:14 audreyt SvGETMAGIC(sv);
15:14 audreyt on the invocant
15:14 audreyt which is akin to calling an implicit fetch.
15:14 pmurias thanks, that seems a saner way to do it
15:15 audreyt I'd still say that the only really sane way is compile time analysis :)
15:15 pmurias the context propagation that is
15:15 audreyt but runtime rich context propagation is something unavoidable with perl
15:16 audreyt esp. when you have things like (want.arity > 2)
15:16 audreyt so maintaining a cheap context pointer somewhere in the main runtime is probably a sane thing to do anyway.
15:16 rhr_ joined #perl6
15:18 pmurias it should be possible to maintaing multiple copies of a method and just call the one compiled for the right context?
15:18 audreyt (cxstack in perl5, envContext in pugs)
15:18 audreyt sure, for the major contexts
15:18 audreyt that'd be a wise choice
15:18 audreyt (void, item, list)
15:19 audreyt but you can always do
15:19 audreyt ($x, $y, $z, $w) := your_sub();
15:19 audreyt ($x, *@y) := your_sub();
15:20 audreyt but optimizing for the common contexts seems like a win.
15:28 audreyt (or you can always choose to wrap the return value into a Capture structure)
15:28 audreyt and do a calling-Signature-vs-returning-Capture packing/unpacking at the end of a call
15:28 audreyt but that assumes a very lightweight Capture/Signature/matching implementation.
15:29 [particle] good luck with that :)
15:30 audreyt indeed. not saying it's particularly easy or attractive.
15:31 alanhaggai joined #perl6
15:34 wknight8111 joined #perl6
15:37 avar audreyt: welcome back!
15:39 audreyt thanks :)
15:39 audreyt (but I really should go offline to write my résumé and prepare for $interview.)
15:41 audreyt laters &
15:47 Jedai joined #perl6
15:57 masak audreyt: best wishes
16:03 masak shell
16:03 masak oops, sry
16:05 justatheory joined #perl6
16:17 iblechbot joined #perl6
16:39 pmurias ruoso: do you know how will we implement contexts?
16:41 rafl joined #perl6
16:52 jan joined #perl6
17:02 kanru joined #perl6
17:28 sri_work joined #perl6
17:43 miketinte joined #perl6
17:43 miketinte who Tene
17:56 cotto-work joined #perl6
18:03 ruoso pmurias, re contexts: I'm not sure how to do that except by having implicit method calls depending on the expected context
18:03 ruoso with special casing optimizable situations
18:07 ruoso eventually we might have a context stack as an optimization...
18:08 ruoso for instance...
18:08 ruoso if (foo()) asks for boolean context... the lazy way of doing it is having foo().bool()
18:09 ruoso and a smart way would be having information on the calling of foo() about the desired context and foo() returning a boolean value in advance...
18:12 pmurias s/on/during/
18:12 pmurias ?
18:12 ruoso one could argue that this information could be added to the capture
18:12 ruoso (in that case, on the calling)
18:12 pmurias ruoso: it has to be avalible somehow
18:13 ruoso in slime, I thought it to have a "context" property
18:13 ruoso for each node
18:13 ruoso in the end I think I missed it
18:14 ruoso but it really makes sense for it to be a part of the capture
18:14 ruoso just like the signature contains the return type
18:14 ruoso but most importantly...
18:14 pmurias ruoso: you read how audreyt thinks our Scalar problem can be solved?
18:15 ruoso as I read, the two alternatives are viable...
18:15 ruoso but it looks she agrees with me ;)
18:15 Schwern joined #perl6
18:15 ruoso having the implicit calls defined by the compiler
18:15 ruoso and trying to optimize it with run-time context information
18:16 pmurias falling back on run-time context information
18:17 meppl joined #perl6
18:17 ruoso but that still doesn't seem entirely related to value × container
18:17 ruoso but for different value types... i.e.: int in bool context
18:18 ruoso it seems to me that container × value is entirely syntatical
18:18 ruoso $a = $b × $a := $b
18:19 ruoso and completely possible to delegate to the compiler
18:19 pmurias the unicode x being vs.?
18:19 ruoso yes
18:19 ruoso ;)
18:20 ruoso and remember that every variable is a container that have a container of a specific type that have a value
18:20 pmurias what exactly is entirely syntactical?
18:20 ruoso when to .FETCH()
18:21 pmurias s/have/has
18:21 peeps[work] joined #perl6
18:21 pmurias yes, but in $foo.foo.bar it is compiled as $foo.FETCH.foo.bar
18:22 ruoso actually $foo.FETCH.foo.FETCH.bar, because the '.' operator implies 'container context\
18:22 ruoso 'value context'
18:22 ruoso s/'container context//
18:23 pmurias you just made this up ;)
18:23 ruoso heh... maybe... but that's what I've been saying for a while...
18:24 ruoso as welll as '=' implies container context on the lvalue and value context on the rvalue
18:25 ruoso it might not be the most optimized option... but it does fit on every case I could think of
18:27 ruoso but we also have to remember that $foo is actually LexPad.<$foo>.FETCH ... so ... $foo = $bar = LexPad.<$foo>.FETCH.STORE(LexPad.<$bar>.FETCH)
18:27 ruoso hmpf..
18:27 ruoso $foo = $bar  means     LexPad.<$foo>.FETCH.STORE(LexPad.<$bar>.FETCH)
18:27 pmurias '.' should imply item context
18:27 ruoso oh yeah... osrry
18:27 ruoso $foo = $bar  means     LexPad.<$foo>.FETCH.STORE(LexPad.<$bar>.FETCH.FETCH)
18:28 ruoso pmurias, in the case here the code on the right is in a lower level
18:28 ruoso (that doesn't have contexts)
18:28 ruoso $foo := $bar  means     LexPad.<$foo>.STORE(LexPad.<$bar>.FETCH)
18:29 pmurias is %foo<key> := 1 allowed?
18:29 ruoso why not?
18:29 ruoso pugs: my %foo; %foo<key> := 1;
18:29 p6eval pugs: RESULT[{obj:<Scalar::Const:0xb7b6e751>}]
18:30 ruoso pugs: my %foo; %foo<key> := 1; %foo<key> = 'bar'; # should brake because it is readonly now
18:30 p6eval pugs: OUTPUT[*** Can't modify constant item: VInt 1␤    at /tmp/XIBYhZnWFW line 1, column 26-43␤]
18:30 pmurias my $foo;my %foo;%foo<key> := 7;say $foo;
18:30 ruoso pugs: my $foo;my %foo;%foo<key> := 7;say $foo;
18:30 p6eval pugs: OUTPUT[␤]
18:31 pmurias pugs: my $foo;my %foo;%foo<key> := $foo;%foo<key> = 7;say $foo;
18:31 p6eval pugs: OUTPUT[7␤]
18:31 pmurias re why not, efficiency
18:32 BinGOs joined #perl6
18:32 pmurias why isn't $foo = $bar just LexPad<$foo>.STORE(LexPad<$foo>.FETCH)
18:33 pmurias and $foo := $bar just LexPad<$foo> := LexPad<$bar>
18:34 pmurias not sure what %foo<key> := 1 compiles to in the low-level
18:34 ruoso pmurias, you're confusing low-level and high-level
18:35 ruoso := doesn't exist in low-level
18:37 audreyt ruoso: are you aware that lexpad may have immutable (non-rebindable) entries as well?
18:37 pmurias i'm just using high level syntax because i don't know how := will be implemented
18:37 ruoso audreyt, that means LexPad<$foo>.STORE will fail
18:37 audreyt pugs: constant $pi = 3; $pi := 3.14;
18:37 p6eval pugs: OUTPUT[*** Cannot rebind constant: PEConstant {pe_type = (mkType "Scalar::Const"), pe_proto = <Scalar::Const:0xb752a3b1>, pe_flags = MkEntryFlags {ef_isContext = False}}␤    at /tmp/F6XatDR3Jx line 1, column 19-30␤]
18:38 audreyt ruoso: yes, just checking.
18:38 pmurias ruoso how are we going to implent %foo<key> := 1?
18:38 Limbic_Region joined #perl6
18:38 ruoso LexPad<%foo>.STORE(1)
18:39 ruoso (you can save 1.FETCH here, because it would return itself anyway)
18:39 ruoso ops
18:39 ruoso soty
18:39 ruoso sorry
18:39 ruoso LexPad<%foo>.FETCH.<key>.STORE(1)
18:40 audreyt something like that, yes.
18:41 pmurias and %foo<key> = 1 would be LexPad<%foo>.FETCH.<key>.FETCH.STORE(1)?
18:41 ruoso it's important to realise that print %foo<key> means
18:41 ruoso yes
18:42 ruoso that double-boxing is also important for autovivification of arrays and hashes
18:43 gaal joined #perl6
18:44 pmurias you can do array and hash autovivification withought double boxing
18:44 ruoso it is harder to do it  without it (including WHENCE support)
18:45 pmurias so Array now needs to store a Scalar for every cell :(
18:45 ruoso not really
18:45 ruoso oh
18:45 ruoso yes...
18:46 ruoso yes..
18:46 ruoso in fact..
18:46 ruoso that's true...
18:46 pmurias lok
18:46 pmurias * lol
18:46 * gaal mooses
18:46 ruoso but I mean
18:46 ruoso you don't need to actually have Array knowing about it
18:46 ruoso Array just store *things*
18:47 ruoso in the low-level
18:47 ruoso you might return a lazy object that will, in the end, if needed, make the actual lookup
18:47 ruoso in the low-level the Array doens't need to store a scalar for each cell
18:47 ruoso but in the high-level it will end up doing so
18:48 pmurias does anyone actually need @foo[1] := $foo?
18:49 ruoso I think it's a requirement for $foo := @foo[1]
18:50 pmurias no you just bind the proxy
18:51 audreyt gaal: *hugs*
18:51 ruoso pmurias, not really... bind forces autovivification... you need to "realise" the proxy in that case
18:51 audreyt actually I think the spec says for shaped arrays you really don't need to support :=
18:52 audreyt that is you can assume non-individual-bindability if you have a vector-ish array
18:52 audreyt but the default Array should support arbitrary rebinding yes.
18:52 ruoso yeah... shaped arrays are special cased...
18:54 audreyt pmurias: storing a (potentially lazily instantiaed) Scalar per array cell is exactly what perl5 does.
18:54 audreyt to wit:
18:54 audreyt my @x; tie $x[0], 'main'; sub TIESCALAR {bless \@_}
18:54 audreyt does exactly that.
18:54 ruoso audreyt, it's important to realize that p5 doesn't really have a difference between container and value
18:54 audreyt (and it ends up calling STORE if you do $x[0] = 9, but not for $x[1] = 9)
18:55 ruoso you only have containers...
18:55 audreyt ruoso: they share the same structure, that's true
18:55 audreyt but SvREADONLY things are like values, and things with SvMG for set/get are like containers
18:55 audreyt or rather, conceptually there are differences, they are just implemented in a tangly fashion for speed.
18:56 ruoso in the end, that's the format we're reaching for Perl 6
18:56 ruoso everything is potentially a container
18:56 ruoso even if a readonly-self-container value
18:57 audreyt that's one way to think about it.
18:57 ruoso which pragmatically means that every value should support .FETCH()
18:57 ruoso even if it returns itself
18:57 audreyt well, I had it split at .ITEM and .LIST because list-context return is also a common enough case
18:57 audreyt but the idea is the same, yes.
18:59 ruoso maybe fetch is a wrong name anyway....
18:59 ruoso it's just because the specs cite it while talking about rw subs
19:00 ruoso and list context is actually .[]
19:00 ruoso actually that's not what I meant
19:00 audreyt yes, abstractly that is the case.
19:00 ruoso but a list is only a list when calling list methods
19:00 gaal audreyt! mooooose :)
19:01 ruoso elsewhere it's just a value
19:01 * gaal is pulling >1000 revisions
19:02 ruoso audreyt, which basically means that a list in scalar context returns itself...
19:02 ruoso as any other value
19:03 audreyt ruoso: yes.
19:04 kolibrie gaal: that's about how many it was for me, too
19:04 gaal hey :)
19:04 ruoso so the basic difference between p5 and p6 for that matter is that in p5 containers and values share a structure, in p6 they share an API
19:05 audreyt ...the p5 structure also implies an api of sorts...
19:05 audreyt but yes.
19:07 gaal anyone seen this error? Name does not refer to a filesystem directory: Failure opening '/mirror/pugs/misc/perlhints/data/perl-6.en.dat': '/mirror/pugs/misc/perlhints/data' is not a directory in filesystem '/home/gaal/.svk/local/db
19:07 audreyt no idea...
19:07 ruoso audreyt, btw... what do you think about having the context as part of the capture?
19:07 kolibrie nope.  svk error?
19:07 audreyt gaal: svk sy -s 21644
19:07 audreyt perhaps
19:08 audreyt ruoso: the calling side's capture?
19:08 ruoso yes
19:08 pmurias why does cabal's Setup build tell me to run Setup configure first instead of doing it?
19:08 ruoso the one that is sent in the invocation
19:08 audreyt ruoso: and how are you going to access your caller's context?
19:09 gaal oh, another "svk pull" seems to've worked.
19:09 ruoso you mean the context in which your caller was invoked
19:09 ruoso ?
19:09 audreyt pmurias: because it wants you to think about what flags to pass to configure...
19:09 audreyt ruoso: yes
19:09 ruoso hmm... good question ;)
19:09 clkao oh, i did have the bootstrap dump url prop committed for pugs. you can now do svk mirror PUGSURL //mirror/pugs --bootstrap=auto
19:09 audreyt ruoso: in pugs it's implicitly stored in a caller chain
19:10 audreyt ruoso: but smop is stack-free?
19:10 pmurias yes
19:10 ruoso audreyt, yes
19:10 audreyt then maybe store cxt as part of frame
19:10 ruoso that's one of the most hard requirements I set
19:10 audreyt and then pass the pointer to your calling frame
19:10 audreyt so you still get a linked list of callers
19:10 audreyt but you don't get a stack
19:11 ruoso yeah... I have a "back" attribute in the frame
19:11 audreyt so just store it in the frame
19:11 ruoso which should point to the outer frame
19:11 audreyt each frame have a context for which it was invoked
19:12 audreyt wow, amazingly enough pugs builds with Parsec 3.
19:13 audreyt that means no unsafePerformIO calls anywhere inside the parser.
19:13 * audreyt benchmarks a bit
19:16 pmurias ruoso: should we revert you no delegation in scalars commit so context support can be added?
19:17 pmurias * your
19:17 ruoso pmurias, but the contextual thing maintains that change
19:17 audreyt right. having a proper context pointer means your scalar need not to be delegating.
19:18 ruoso it means that eventually the runtime can figure out when NOT to fetch
19:18 audreyt yup.
19:19 pmurias ruoso i just wanted the test suit to pass ;)
19:19 ruoso heh... fix it then ;););)
19:20 ruoso you actually just need to fix 'use v6 blocks' to make the implicit FETCH calls
19:20 cmarcelo gaal: (not important, but you may want to take a look at git-svn, you can have similar functionality as svk)
19:20 ruoso git-svn++ much simpler
19:22 pmurias i suppose we han have unnecessary FETCH's for now
19:23 pmurias s/han/can
19:23 ruoso yes...
19:23 ruoso that's why every value is a container (even if a readonly-self-contained-value)
19:23 audreyt "all evil is premature optimization squared"
19:24 ruoso heheaheaheah
19:24 * ruoso actually took 10 seconds to understand the joke
19:25 gaal even imaginary evil?
19:26 audreyt negative evil leads to imaginary optimizations
19:26 ruoso hehehe
19:26 audreyt so for your optimizations to be real, you need to be _positively_ evil
19:26 audreyt </pun>
19:26 gaal I thought real evil leads to complex optimizations
19:27 audreyt that too
19:27 audreyt I think we all agree complex optimizations are really evil.
19:27 gaal Me and my imaginary friend here do!
19:28 gaal so, make worked without pulling anything from the network.. or was it a silent pull-from-the-network that Just Worked?
19:29 audreyt it worked because you previously installed pugs from hackage?
19:29 audreyt a pretty recent one at that?
19:29 gaal no :)
19:29 audreyt you got really lucky?
19:29 audreyt hm.
19:29 audreyt that doesn't seem like likely
19:29 gaal hey, maybe i got a version of pugs from the future!
19:30 audreyt did you see a lot of compilation for a lot of different modules?
19:30 audreyt like "1 of 6" "1 of 25" "1 of 83"
19:30 gaal ran out of scrollbuffer -- started the tests on the same window
19:30 audreyt if so then it succeeded rather silently
19:30 gaal Version: 6.2.13.11, fwiw
19:30 audreyt k
19:31 audreyt then it's not from future
19:31 audreyt rather, cabal-install Just Worked
19:31 gaal woot
19:31 gaal and I'm not root
19:31 audreyt yes
19:31 gaal so it worked real well
19:31 audreyt had to wait 1.5 years for it
19:31 gaal someone++
19:31 audreyt worth the wait though ;)
19:31 gaal :)
19:31 audreyt (it only worked that well since, oh, last month.)
19:32 gaal so I take it MO and some other stuff is not being compiled from the pugs tree right now?
19:32 audreyt correct
19:32 audreyt they are from hackage.
19:35 pugs_svn r21712 | pmurias++ | [smop] surplus FETCH's
19:35 pmurias pugs compiled for me ;)
19:35 apeiron joined #perl6
19:37 gaal I think examples/algorithms/lambda-calculus.pl is looping
19:39 ruoso pmurias, but I think that additional FETCHs should be done by elf smop compiler, shouldn't it?
19:40 pugs_svn r21713 | ruoso++ | [smop] test/22 complete... it hangs the compiler...
19:40 ruoso pmurias, could you please take a look at test/22... it hangs the compiler here...
19:41 audreyt gaal: good thing that there's Time::Out support in smoke runner
19:41 audreyt gaal: except you're not making smoke! fail
19:41 audreyt maybe add Time::Out support to make test too?
19:41 audreyt while you're at it, add T::O to Task::Smoke? :D
19:42 gaal oh, my, I forgot smoke !~~ test :(
19:42 gaal Yes, those are two excellent suggestions
19:42 gaal Also, I'd add a big "O HAI PLS USE MEK SMOK K THX" message to "make test" :)
19:43 * audreyt meanwhile nukes all unsafePerform* from Pugs.Parser.*
19:45 gaal reminds me of old bofh .cshrc jokes, "alias nice='echo nice? you must mean kill...; kill $*'
19:45 gaal and alias kill='kill -9 ; kill -9 ; kill -9'
19:45 gaal except you're more like, "unsafePerformIO? Surely you mean safely perform this wonderfully pure operation!"
19:46 audreyt well no, unsafePerformIO is now just liftIO
19:46 audreyt parsec3, you see, is a monad transformer
19:51 pmurias ruoso: the surplus ones should not be done at all
19:51 gaal I should read up on it!
19:51 pmurias the Var's yes...
19:51 ruoso hm?
19:51 ruoso what do you mean?
19:51 * gaal would love for a ByteString Parsec
19:52 audreyt attoparsec.
19:52 jhorwitz joined #perl6
19:52 audreyt also parsec3 is polymorphic to bytestring.
19:52 audreyt also the new "binary" parsers are good as well.
19:52 audreyt lots of choices
19:53 pmurias ruoso: FETCH's shouldn't be done for method calls in item context
19:53 audreyt gaal: but if performance is of concern and you'd like to maintain parsec api compat, attoparsec makes it ~trivial to part
19:53 audreyt *port
19:54 pmurias ruoso: re sm0p hanging, i could rewrite sm0p using Parsec
19:54 ruoso pmurias, the implicit FETCH should be made by the compiler...
19:55 ruoso I just added it explicitly because it seems that it's not being done yet...
19:55 ruoso pmurias, well... you're the author of the sm0p compiler now ;) feel free to rewrite it if you think that's needed ;)
19:55 pmurias sm0p--
19:55 pmurias slime--
19:56 audreyt where is code to mold btw?
19:56 gaal interesting! though I think it's possibly more pressing to do the precompilation cache
19:56 audreyt as in http://www.perlfoundation.org/perl6/index.cgi?smop_mold
19:56 lambdabot Title: SMOP Mold / Perl 6
19:56 audreyt gaal: also we don't use yaml now, we use Data.Binar
19:56 audreyt y
19:56 audreyt which is like storable
19:56 gaal yes
19:56 audreyt which makes startup like 2x-3x faster
19:57 gaal <3
19:57 audreyt also we can freely use dons's sqlite3 package
19:57 audreyt to maintain precompilation cache
19:57 audreyt that might be overkill
19:57 audreyt but might not
19:57 Limbic_Region audreyt are you sleeping now?
19:57 audreyt at least there's a reliable place to put the cache now
19:58 pmurias audreyt: mold is not yet implemented
19:58 pmurias :(
19:58 audreyt cache <- getDataFileName "cache"
19:58 audreyt Limbic_Region: yes, why?
19:58 gaal wow, lots of new stuff in haskelland
19:59 gaal hoogle doesn't know about that though :(
19:59 audreyt getDataFileName?
19:59 audreyt it's part of Cabal
19:59 audreyt http://neilmitchell.blogspot.com/2008/02/adding-data-files-using-cabal.html
19:59 lambdabot Title: Neil Mitchell's Haskell Blog: Adding data files using Cabal, http://tinyurl.com/364awx
19:59 ruoso audreyt, what there's currently is SLIME
19:59 gaal oh
19:59 Limbic_Region audreyt - no reason other than it will take a while to get used to the productive audreyt of sleepland versus the productive audreyt of active hacking land
19:59 pmurias audreyt: i was waiting for the metamodel bootstrap to have the classes in perl6, btw. why do you ask?
19:59 ruoso audreyt, the Smop Lame Interpreter iMplEmentation
20:00 audreyt it's like File::ShareDir.
20:01 audreyt pmurias: just reading up on it... I really like what I'm seeing so far on v6/smop/ and so am wondering the logical next interpreter
20:01 audreyt how will it turn out to be, etc.
20:01 audreyt (bbiab)
20:01 ruoso pmurias, but do you have any idea on how to make test/22 to compile?
20:02 ruoso what's interesting is that it hangs without consuming any CPU or additional memory...
20:03 pmurias undefined reference to `__stginit_parseczm2zi1zi0zi0_TextziParserCombinatorsziParsec_'
20:03 ruoso ouch
20:03 pmurias parsec.o: In function `smW_info':
20:04 pmurias ruoso: re test/22 moving code around can solve it ;)
20:04 ruoso what do you mean?
20:06 pmurias i have completly no idead why and when it happens, but i encoutered it before and it went away when i rewrote the p6 block
20:06 audreyt pmurias: is my checkout broken or is v6/smop/src/smop_lowlevel.c really truncated?
20:06 ruoso audreyt, that file is compiled from smop_lowlevel.sm0p
20:06 ruoso just touch src/smop_lowlevel.sm0p
20:07 audreyt I see.
20:07 ruoso sometimes it stays around... but I don't see why...
20:07 audreyt ah. that reminds me. mac still cannot run ::TRE.
20:08 Limbic_Region audreyt - avar hangs out on #perl on this network
20:08 audreyt avar is here actually.
20:09 Limbic_Region oh, heh
20:09 Limbic_Region well, I stopped hanging out here regularly (and #parrot and perlmonks) and most everywhere else when Alyssa was born
20:15 Limbic_Region unrefutable proof that having children reduces "free time" - http://use.perl.org/~Limbic+Region/journal/36996
20:15 lambdabot Title: Journal of Limbic Region (3985)
20:18 pugs_svn r21714 | ruoso++ | [smop] uses ___UNKNOWN_METHOD___; in bool.
20:18 pugs_svn r21714 | ruoso++ | move_responder set "false" when the result was NULL (we need a failure object).
20:18 pugs_svn r21714 | ruoso++ | test/22 compiles with four lines commented out... I am testing the attribute create_container call, and that is the most important one.
20:19 pugs_svn r21715 | audreyt++ | * Path_Pugs: Point to our shared directory even before installing,
20:19 pugs_svn r21715 | audreyt++ |   to get consistent ghci/ghc behaviours.
20:20 audreyt parsec3 means double the smoke time. not worth the peace-of-mind of ditching unsafePerformIO. sigh
20:20 * audreyt scraps that patch and calls it a day &
20:22 pugs_svn r21716 | ruoso++ | [smop] mark the commented out lines as todo in the test result
20:25 pmurias ruoso: do you think doing m0ld in haskell is a sane idea?
20:26 ruoso you mean the runtime itself?
20:26 pmurias just the language, emitting only a c file
20:27 pmurias language being the sm0p equivalent
20:27 pmurias maybe even a bytecode file
20:28 pmurias that is emitting a bytecode file
20:28 kolibrie audreyt: thanks for all the work you did today
20:28 kolibrie &
20:28 ruoso pmurias, so you mean the compiler in haskell...
20:28 ruoso not the runtime support
20:29 ruoso I think for this helper compilers, we should use the tools that helps us most with absolutely no restrictions...
20:30 ruoso for the runtime itself, it would be cool if we could have something that doesn't include a complete different runtime
20:30 pmurias different from smop?
20:30 pmurias i would omit the runtime Mold frame creation/introspection
20:30 pmurias i meant different from slime
20:31 ruoso different from slime is ok...
20:31 ruoso but it would be nice if we stay in plain C
20:31 ruoso instead of adding another runtime infraestructure
20:31 ruoso i.e. haskell
20:31 ruoso but that restriction doesn't apply for the compiler...
20:32 pmurias i'm not proficient enough with haskell use it as a runtime
20:33 ruoso btw... the problem with freezing sm0p is the blocking IO
20:34 ruoso I need to re-implement sub preprocess with non-blocking IO... it's blocking waiting for some output of ../../src/perl6
20:35 * ruoso home &
20:36 * ruoso will backlog, as usual...
20:36 pmurias the parsec error turned up to be my haskell noobines
20:36 pmurias i have to add a --make flag to ghc
20:41 pugs_svn r21717 | fglock++ | [v6.pm] more tests;
20:41 pugs_svn r21717 | fglock++ | - added script: util/clear_cache.pl - empty the precompilation cache for both v6 and PCR;
20:41 pugs_svn r21717 | fglock++ | - svn properties
20:57 wknight8111 joined #perl6
21:05 TJCRI joined #perl6
21:48 jferrero joined #perl6
21:57 simcop2387 joined #perl6
22:11 pugs_svn r21718 | Auzon++ | [evalbot] I think I finally fixed evalbot's STD.pm.
22:14 jdv79 joined #perl6
22:22 p6eval joined #perl6
22:32 rafl_ joined #perl6
22:38 peeps[work] left #perl6
22:48 TimToady std: $a->foo();
22:48 p6eval std 21665: OUTPUT[parse ok]
22:48 alester joined #perl6
22:49 TimToady hmm, should complain: Obsolete use of -> to call a method; in Perl 6 please use . instead at line 1:
22:51 Sebastian_Knapp joined #perl6
22:52 TimToady std: $foo $bar
22:52 p6eval std 21665: OUTPUT[parse ok]
22:58 TimToady std: do {
22:58 p6eval std 21665: OUTPUT[parse ok]
22:58 TimToady std seems very accepting these days...
23:03 avar audreyt: do you get this error on re::engine::TRE: http://www.nntp.perl.org/group/perl.cpan.testers/2008/06/msg1750616.html ?
23:03 lambdabot Title: FAIL re-engine-TRE-0.04 darwin-thread-multi-64int-2level 8.10.0 - nntp.perl.org, http://tinyurl.com/5bfehs
23:08 TimToady I hope to abandon TRE soonish, since it is rather resource intensive on large numbers of alternatives
23:09 jferrero joined #perl6
23:12 alester joined #perl6
23:14 TimToady I'm now running STD on all of t/ to see how well it does
23:14 luqui joined #perl6
23:20 TimToady at first blush looks like there's a lot of old pod5 in there...
23:21 TimToady I need to catch that and report it as obsolete, I suppose...
23:29 drbean joined #perl6
23:29 BinGOs_ joined #perl6
23:30 Limbic_Region joined #perl6
23:37 simcop2387 joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo