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