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
|