The Return of the Journal : pugs.blogs.com/ | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 Set by GammaRay on 31 December 2005. |
|||
00:02
bsb left,
nothingmuch joined
|
|||
putter | sigh. last night's "almost but not quite" hash parse fix, was in fact a fix. a second, independent bug, of apparently long standing, left me thinking the fix was still buggy. note to self - there is the "control", and then there is the "experiment". the control differs from the experiment only in... ;) | 00:09 | |
r8742. | |||
svnbot6 | r8742 | putter++ | Parser.hs - Improved hash recognition. {("a"=>3),}.ref is again ::Hash, not ::Block. Various failing tests now succeed. | ||
r8742 | putter++ | Background: {}-like things are initially parsed as a Block, and then their AST is examined to see if they should be a Hash instead. The examination patterns became out of date with respect to the parsed AST. | |||
putter | ?eval 3 | 00:11 | |
luqui: ping? ;) | |||
tewk | putter: So | 00:12 | |
opps what needs to be done to release, little stuff that is. Fix the failing tests in make test ? | |||
putter | yes indeed | 00:13 | |
00:13
locksy joined
|
|||
putter is building a clean pugs with intent of running make smoke on it. | 00:13 | ||
00:15
Tman joined
00:16
Debolaz joined
|
|||
putter | other than that, a release is a good time to step back, look around, and see if anything has gotten old and crufty. outdated information, things that we should really have but never quite got around to (eg, docs' getting_started), etc. anything that would make the release a better creature. | 00:17 | |
for instance, we suggest people do make unoptimized if the pugs build is taking too long for them. but, at least on my machine, the resulting compile of some files (Run I think) takes >1GB memory, and I spend more time swapping than I saved compiling the other files. | 00:19 | ||
So it could be nice for someone to do some timing runs, and see if we should reconsider how we deal with "if the build is going too slow for you...". | 00:20 | ||
Perhaps we could couple make unoptimized with no-precompiled prelude. But if you dont have a precompiled prelude, do things really work? (periodic #p6 traffic suggests not quite). These are cpu and time intensive, or involve groveling in the somewhat cruft build system, but the "step back, pretend I'm | 00:23 | ||
a new user, and explore" applies to docs and everything else as well. | |||
makes sense? | 00:24 | ||
gaal | putter++ | 00:25 | |
gaal tries to sleep again | |||
tewk | Yeah, audrey mentioned a couple of things that unoptimized would probably baloon on, prelude was one of those. I don't remember what the others where Pugs.Run ? | ||
s/where/were/ | |||
putter attempts to shed weariness in gaal's general direction | 00:26 | ||
yes, I think Pugs.Run was the one I noticed. | 00:27 | ||
It might, or might not, be worth glancing over the :todo tests. A lot of them represent stuff which can't be fixed until pugs is a little further along. But sometimes it seems, if a failing test get's todo'ed for a release, it doesnt get touched again until it unexpectedly starts passing. | 00:33 | ||
tewk has an idle dual G5, I'll see if I can get ghc on it | |||
putter | But like I said, a lot of the tests are unaddressably broken for the moment, so I'm not sure how rewarding a skim of them would be. | ||
:) | |||
ah, that reminds me, | 00:34 | ||
tewk | I noticed that my $a=42; $$a.elems is failing, because it isn't throwing an exception. t/builtins/array/elems.t test 4-5. | 00:35 | |
putter | geoffb: re fast numerics, sure Fortran stuff is tuned. but who's insane enough to do something like setting up offloading onto graphics processors? | 00:36 | |
hmm. any question of the form "what language community is insane enough to..." seems to have a... small number of answers. err, maybe just one. I never quite thought of it that way before... | 00:38 | ||
;) | |||
looking... | 00:39 | ||
00:39
Debolaz joined
00:43
penk joined
|
|||
dduncan | hmph, now Pugs says r8712, which is wrong, again | 00:47 | |
putter | tewk: src/Pugs/Prim.hs has a table at the bottom, declaring the types of the primitives. It looks like that is currently entirely non-functional. (I just called several absurd combinations of primitives and argument types). | ||
dduncan | it is starting to look like the version only gets updated in Pugs itself when the Makefile.PL is regenerated | 00:48 | |
putter | dduncan: lol. sorry. | ||
dduncan | or the last few times it worked coincided with that | ||
putter | what platform? | 00:49 | |
dduncan | but even when Pugs wasn't updated correctly, pugs_version.h WAS correct | ||
darwin | |||
putter | oh, err, missing dependency? | ||
dduncan | why? | ||
pugs still runs, but its internal version is wrong | |||
its something between when pugs_version.h is generated and the actual build that isn't working properly | 00:50 | ||
putter | foo.h only ends up in an object file/executable via some bar.c which #include's it. If Makefile(.PL?) doesnt know bar.c depends on foo.h, then foo.h can get updated, without anyone else caring | ||
dduncan | see, during the build process, it says it was compiling Pugs.Version, but it seems that the newer src/Pugs/pugs_version.h wasn't actually being read | 00:51 | |
the latter file contained: #undef PUGS_SVN_REVISION | |||
#define PUGS_SVN_REVISION 8742 | |||
but running ./pugs afterwards said its version was r8712 | 00:52 | ||
which is what it was the last time I built yesterday | |||
putter | you could try running make. then make again into a log file. say make > log1 2>&1 . then touch pugs_version.h (or make a noop edit of it). then make > log2. and see if log1 and log2 are interestingly different. if not, its a missing dependency issue. | 00:53 | |
dduncan | will try that | ||
putter | because then the change to pugs_version.h hasnt motivated make to do anything different. | 00:54 | |
dduncan | I assume you mean to run the first command right now, without changing anything | ||
putter | err, the first of the three make's? that was just an attempt to normalize what ever state you are now in. actually, you might log that one too, and compare all three logs. just incase something less simple is happening. | 00:55 | |
dduncan | the first make is running now ... | ||
done | |||
putter | that was fast... | ||
:) | |||
of course, when I said make > log2 I meant make > log2 2>&1 | 00:56 | ||
dduncan | what I did was "make > log1 2>&1" within the current state | ||
without doing anything else first | |||
putter | fine | ||
dduncan | now I will touch the version file and do it again | ||
putter | oh, why not do another | ||
dduncan | it should be fast since nothing changed | ||
putter | before touching | ||
touching = changed | |||
make uses date of modification, rather than contents, to indicate need for refresh | 00:57 | ||
dduncan | I added a space character to the version file, changing its file date, and am running make again but to log2 | 00:58 | |
done | |||
putter want's dduncan's cpus | |||
(and bus, and memory, and...) | 00:59 | ||
dduncan | this make was fast because it didn't do anything significant | ||
a normal rebuild takes a good hour | |||
and a smoke currently takes about 120 mins | |||
putter | ah | 01:00 | |
dduncan | which is odd since a few months back it took about 70 mins, and the test suite didn't get much bigger meanwhile | ||
or even 45 mins | |||
putter | hmmm. | ||
dduncan | fyi, the hardware is dual-1ghz PPC G4, ram is 768M | 01:01 | |
its about 3.5 years old | |||
putter | tewk: there's something else for the imaginary doesnt really need to be done todo list. a time and space profile building and testing. | ||
01:01
Debolaz joined
|
|||
dduncan | now running a diff showed no significant changes | 01:01 | |
and every run, even when no actual work to do, will regenerate src/Pugs/pugs_version.h | 01:02 | ||
giving it a new date and such | |||
putter | my quick guess is you might be getting nailed by swapping? can you watch a system monitor while test is running? | ||
01:03
nothingmuch joined,
Tman is now known as lovestoes
|
|||
dduncan | the machine didn't act like it was swapping ... er, that happens a bit on build, but not on smoke | 01:03 | |
anyway, on both of these logs, it says it skipped Pugs.Version | 01:04 | ||
I don't think it is the file dates, but the file contents that determine this | |||
or there is some intermediate file that wasn't getting updated | |||
putter runs touch test... | |||
I ran | 01:05 | ||
pasteling | "putter" at 66.30.119.55 pasted "working make" (15 lines, 265B) at sial.org/pbot/15495 | 01:08 | |
dduncan | er, actually the make doesn't rewrite version.h, but regardless, I had touched it | 01:09 | |
I did a diff between my terminal scrollback and one of the log files, to compare the first make after update to the test | |||
originally it said, but this was skipped the second time: Preprocessing library Pugs-6.2.10... Building Pugs-6.2.10... | 01:10 | ||
originally it said, Compiling Pugs.Version, but skipped after | |||
originally it compiled Pugs.Parser but skipped after | 01:11 | ||
all else was skipped both times | |||
01:11
lovestoes is now known as Tman
|
|||
putter | one reason for long smoke times may be hangs. looks like I'm going through 27 cpu minutes on ext/HTML-Entities/t/entities.t ;) | 01:11 | |
dduncan | actually, the later one said Preprocessing library Pugs-6.2.10... Building Pugs-6.2.10... | 01:12 | |
too, but after the compile skips rather than before them | |||
there were no other significant differences | 01:13 | ||
putter | could you do the same set of commands as in my paste, and paste your results? | ||
dduncan | just a minute | ||
when you say, "results", you mean the same summaries you nopasted, I assume | 01:14 | ||
putter | yes | ||
dduncan | its in progress | 01:15 | |
almost done | 01:20 | ||
pasteling | "dduncan" at 24.108.164.7 pasted "nonworking make" (15 lines, 1K) at sial.org/pbot/15496 | 01:24 | |
dduncan | okay, there you go | ||
putter, if you have any other ideas, let me know | 01:25 | ||
putter | back | 01:26 | |
yeah, so it's definitely a dependency problem. well that, or make is trying every time you run it create... | 01:28 | ||
putter greps for pugs_version.h... | |||
dduncan | fyi, each run shows inconsequential diffs from others, such as files having manpages made in a different order | 01:29 | |
putter | what version of ghc are you running? | 01:31 | |
and have you seen the INSTALL notes on darwin? | |||
dduncan | its GHC 6.4.1 | 01:32 | |
I've been using this for many months, as with the same OS (X 10.3.9), and there were no problems with the version for many months, starting just a few weeks ago | 01:33 | ||
putter | hmm | ||
dduncan | one thing that may be a factor is that my system clock was wrong during one update a few weeks ago | ||
it was set to 1969 then | 01:34 | ||
so some files may be saved wrong | |||
however, I did a make realclean in the meantime | |||
and the version periodically *does* update meanwhile | |||
so I would have expected the wrong date to be a temporary ailment | |||
I can do a search for files with bad dates, in case any are still around, that may be significant | 01:35 | ||
tewk | dduncan: xargs touch < find . | ||
putter | Do the logs show ghc trying to recompile Version.hs? | ||
01:36
Debolaz joined
|
|||
dduncan | none of the 4 I just did showed it recompiling Version.hs | 01:36 | |
in fact, it only does this when the version control number is different than version.hs | 01:37 | ||
but its supposed to | |||
only do that on a change | |||
01:37
hcarty left
|
|||
dduncan | regardless, the initial time after my update, it did recompile Pugs.Version | 01:37 | |
but something didn't happen after that | 01:38 | ||
01:38
wilx joined
|
|||
dduncan | I will observe, that even after it recompiled Pugs.Version and Pugs.Parser, it skipped 'Pugs', where it used to redo that all the time | 01:39 | |
and just below that it says "compilation IS NOT required" | |||
not adjacently below | |||
give me a minute | |||
will nopaste something more useful ... | 01:40 | ||
pasteling | "dduncan" at 24.108.164.7 pasted "original log, showing inconsistent versions" (222 lines, 17.4K) at sial.org/pbot/15497 | 01:44 | |
dduncan | putter, look at that | 01:45 | |
it shows what actually happened (wrong) in the normal setting | |||
normal when there actually was an update | |||
and not just a faux update | |||
this was all that happened before I started talking to you today about it | 01:46 | ||
putter | oh. can you blow everything away and just start from scratch? I tend to think of realclean as meaning, sort of kind of but not really clean. in general. maybe it works on pugs. but still. | 01:47 | |
putter regularly compiles pugs from scratch, just to avoid having to worry about/debug "complications". | |||
oh, drats. the fix of pugs with embedded parrot just means, at least on my box, I get to segfault. :( | 01:48 | ||
at least ghc shares my pain: pugs: internal error: EVACUATED object entered! Please report this as a bug to [email@hidden.address] Hey, and this one is replicable. Reporting... | |||
bah. heisenbug. | |||
dduncan | if you are suggesting that I wipe my whole checkout dir and recheckout everything ... or svk revert the whole thing, I could do that | 01:49 | |
is this what you suggest? | |||
putter | looking... | ||
svk? ah. in svn its a trivial op. svk less so. | 01:50 | ||
audreyt | rm -rf *; svk revert -R . | 01:51 | |
trivial enough :) | |||
audreyt spent far too much time reading up on IEEE 754/854/754r :/ | 01:52 | ||
and got nothing useful in return ;) | |||
dduncan | the svk commands are often similar to svn ones | ||
on purpose | |||
putter recalls folks waiting long times for svk bootstraps. still hasnt upgraded from svn himself. | |||
dduncan | okay, will wipe | ||
the main problem I had with svk was installing it in the first place | 01:53 | ||
putter | audreyt: yeah. thats why I ended up not bookmarking/logging anything. "I just so dont want to be here". | ||
"and dont really need to be" | |||
audreyt | putter: svk co svn.openfoundry.org/pugs/ and answer "h" to the "how many revisions you want to go back" :) | ||
leo_ | audreyt: good morning and btw 0/0 is throwing an exception in parrot since a week or so, the latter with constants only since today :) | ||
putter | :) | 01:54 | |
audreyt | leo_: heh, how coincidal ;) | ||
leo_ | yeah | ||
dduncan | fyi, I actually just renamed the pugs checkout folder, made an empty folder in the old ones place, and am reverting into that | ||
leo_ | and I'm going bedwards now ;) | ||
dduncan | that's done | ||
audreyt | leo_: so it fails even with N registers? | 01:55 | |
i.e. not only I? | |||
dduncan | now remaking | ||
leo_ | audreyt: yes | ||
audreyt | leo_: okay... is there a p6i thread for it? | ||
(i.e. what motivated this change?) | |||
putter | is there a way to make smoke without getting ext/*. other than moving ext/* of course ;) | 01:56 | |
audreyt | putter: it's called "make test" | ||
putter | oof. but... where are the pretty pictures? | ||
audreyt | ah, tcl as usual. | ||
01:57
Debolaz joined
|
|||
leo_ | audreyt: not much discussion on p6i, it just seems to be the natural thing to do in that case (a lot of TODO comments in code did also suggest it) | 01:58 | |
dduncan | now on refreshed 'make' ... I also quit BitTorrent this time to free up some RAM ... ghc needs lot | ||
audreyt | leo_: okay... here are 24 other cases to consider | 01:59 | |
but you should sleep first :) | |||
leo_ | I think, if you want to handle fancy things with 1/0 then just create your own PMC that does it | ||
dduncan | back in a bit | ||
audreyt | leo_: I think so too, and p6l is arguing what Perl6Num should do | ||
svnbot6 | r8743 | audreyt++ | * add PUGS_SMOKE_EXCLUDE_EXT env to run-smoke.pl | ||
audreyt | leo_: does this mean NaN is going to go away in N* registers? | 02:00 | |
leo_ | audreyt: I know there are more cases - later | ||
audreyt | i.e. any operation that manufactures NaN normally is turned into exception | ||
it seems terribly inconsistent to have NaNs in some cases and exceptions in some others | |||
dduncan | I, like, totally agree! | ||
audreyt | putter: export PUGS_SMOKE_EXCLUDE_EXT=1 | ||
leo_ | @larries have to figure out some default behaviour | 02:01 | |
or refer to *one* spec | |||
audreyt | ...and fill in undefined bits of that spec | 02:02 | |
in any case, go sleep first, we'll figure it out :) | |||
eventually. | |||
02:03
Medvekoma joined
|
|||
leo_ | sure - my only concern wrt NaN is not to have it on the credit card or such :) | 02:04 | |
audreyt | 4563 1300 0NaN +Inf | ||
leo_ | yeah | 02:05 | |
I could live with a +Inf on the cash side for a while, though | 02:08 | ||
02:11
Southen joined
|
|||
audreyt goes to $job | 02:17 | ||
putter briefly considers a make test output postprocessor | 02:20 | ||
(2 subtests UNEXPECTEDLY SUCCEEDED) (1057 subtests TODO), 879 subtests skipped. Failed 91/511 test scripts, 82.19% okay. 1282/9301 subtests failed, 86.22% okay. | |||
But that's with rules unnecessarily broken. Embedded still segfaults. | |||
unexpecteds are in t/oo/roles/conflicts and ... that's odd. can you have an unexpected success that doesnt say "succeed". grep shows only one of those. hmm... | |||
miles to go before we sleep^W release | |||
hmm... why does builtins/perl.t expect (\{mumble}) to be anything but a block? missing invocation I think... | |||
ah, rx:perl5// stringifies as {rule}, perl()ifies as \{rule}. how unfortunate. | |||
class A {}; A.perl | |||
oops, wrong window | |||
02:22
putter joined,
Debolaz joined
02:27
Medvekoma joined
|
|||
putter | audreyt: ping? | 02:33 | |
oh, hopefully (still) asleep. | |||
audreyt | putter: no, about to run t $job | 02:41 | |
obra | mm. $job | 02:42 | |
audreyt: alexmv just checked in a nice inversion. Now Jifty::Dispatcher calls mason. Your autohandler is free again | |||
02:44
scook0 joined
|
|||
putter | no biggy | 02:46 | |
audreyt | woot! | ||
svnbot6 | r8744 | putter++ | t/builtins/perl.t | ||
r8744 | putter++ | :todo<release> .perl on Rule objects. Which sort of dont exist yet. | |||
r8744 | putter++ | :todo<feature> .perl on recursive structures. Unimplemented. | |||
audreyt pulls with real network (tm) instead of ozymandns | |||
ok, taxi is here. gotta go. bbl & | |||
putter | & | ||
Jifty::Dispatcher calls mason... putter squints | 02:47 | ||
dduncan | okay, following the nuke 'n' pave of the checkout dir plus rebuild, pugs reports the correct as-then checkout version of 8742 ... so far so good | ||
will now update and rebuild, to see if it reflects 8744 or not | |||
putter has fingers crossed. makse typng difficult | 02:48 | ||
dduncan | this update has no src/ changes, but it did say "Compiling Pugs.Version | 02:49 | |
okay, that's done, and pugs seems to report 8744 | |||
so for now at least, no problem! | 02:50 | ||
putter | :) | ||
dduncan | and there were no Makefile.PL changes either, which was good | 02:51 | |
putter | "Get your Amazing Doctor Wunderbar's Elixer of PowerCycle And Reeboot here. Cure for whatever ails you. Indigestion, hair loss, love life, Windows, ALL are brushed away by..." | 02:52 | |
02:54
Debolaz joined
|
|||
meppl | guten morgen | 03:09 | |
svnbot6 | r8745 | putter++ | t/data_types/num.t - Test file is no longer dubious. Wrapped eval()s around parse errors from numbers with underscores (one a correct parse fail, the other a bug). | 03:16 | |
03:25
macli joined,
macli left
|
|||
putter | good, well, "morning". good UTC wee hours of the morning. | 03:29 | |
03:29
Medvekoma joined
|
|||
putter | place a globe on the ground, with your current location up-most, and north pointing the right way, and the light/shadow on the globe matches that on the earth. :) | 03:30 | |
it.slashdot.org/it/06/01/17/0331238.shtml What is Perl6? on /. But it's been up for a while - about to fall off the bottom of the page. So not much use for making comments. As for content, I only skimmed the top, but eh. | 03:47 | ||
03:47
scook0 joined
|
|||
putter | Motivated by chromatic's www.perl.com/pub/a/2006/01/12/what_...erl_6.html | 03:48 | |
robkinyon | seen stevan | 03:55 | |
jabbot | robkinyon: stevan was seen 1 days 9 hours 15 minutes 59 seconds ago | ||
robkinyon | seen stevan_ | ||
jabbot | robkinyon: stevan_ was seen 1 days 9 hours 22 minutes 8 seconds ago | ||
dduncan | now begun to smoke 8745 | 03:57 | |
04:08
Debolaz joined
04:09
scook0 joined
|
|||
pasteling | "putter" at 66.30.119.55 pasted "output of r8742 make test" (1058 lines, 53.7K) at sial.org/pbot/15498 | 04:10 | |
putter | oh, amd64 FC3, external parrot, embedded perl5. | 04:11 | |
good night all & | 04:13 | ||
good wee UTC hours of the morning? just doesnt do it. | |||
04:17
Amnesiac joined
04:31
justatheory joined
|
|||
dduncan | it appears we have an infinite loop in ext/HTML-Entities/t/entities.t now | 04:33 | |
top says pugs has been running 28 minutes straight now | |||
or maybe its actually the file after that | |||
I mean that "ext/HTML-Entities/t/entities.t" is the last line currently displayed of output | 04:34 | ||
on hitting ctrl-c, it says: Could not run yaml harness: No such file or directory at util/run-smoke.pl line 62. | |||
or rather it says: pugs: interrupted Could not run yaml harness: No such file or directory at util/run-smoke.pl line 62. make: *** [smoke-pugs] Error 2 | 04:35 | ||
in any event, many ext/ tests have been dying with "No such method" errors, as they have been for weeks | 04:36 | ||
that's the largest outstanding problem with this release-to-be that I'm aware of | 04:37 | ||
04:40
dolmans joined
04:49
Debolaz2 joined
04:54
imperator_ is now known as imperator,
Debolaz joined
|
|||
audreyt | dduncan: noted, will fix later tonight | 05:03 | |
(if none beats me to it) | |||
05:07
evalbot_8745 joined
|
|||
audreyt | ?eval $+x | 05:11 | |
evalbot_8745 | Error: Undeclared variable: "$+x" | ||
dduncan | I hear you | ||
audreyt | cool :) | 05:12 | |
Debolaz | Good morning people. | 05:15 | |
05:16
weibo1 joined
|
|||
audreyt | Debolaz: hi | 05:16 | |
05:20
scook0_ joined
|
|||
dduncan | good mawning | 05:29 | |
Debolaz | Hmm.. *Tries lighttpd* | 05:30 | |
05:45
sili_ joined
05:46
simcop2387 joined,
hobbs joined
|
|||
simcop2387 | lol | 05:46 | |
sili_ | hi frandz | ||
Cryptic_K | >.< | ||
Cryptic_K gest the popcorn? | |||
gets* | |||
sili_ | for you language designers: this isn't necessarily for p6 or anything.. what is the best i could do to prevent infinite recursion? | 05:51 | |
or infinite looping | |||
06:01
elmex joined
06:12
scook0__ joined
|
|||
dduncan | if you're talking about the test suite | 06:24 | |
sili_ | |||
have the harness run each test in a separate process | |||
and have an automatic kill signal sent to that process after a predetermined interval, such as 60 seconds | 06:25 | ||
okay scripts should finish normally before that time, infinite ones will be killed | 06:26 | ||
I think that web servers do something similar with CGI scripts, or can be set up to, so they aren't hung by bad cgi scripts | |||
I've seen it specifically on IIS back in 1999, and I'm sure Apache does it too | |||
adjust from 60 seconds to an amount reasonably longer than the test would take, such as 10X its expected run time | 06:27 | ||
sili_, does that answer your question? | 06:28 | ||
sili_ | dduncan: it makes me further believe the answer is "it can't reasonably be done" | 06:30 | |
thank you though | |||
dduncan | were you talking about the test suite, or some other circumstance? | 06:32 | |
fyi, pugs can catch certain kinds of kill signals and shut down gracefully | |||
a process can also send a timer signal to itself | |||
eg, tell the OS to notify it when, say, 60 seconds passed | 06:33 | ||
sili_ | not pugs or anything specific. just a language in general | ||
dduncan | the signal handler for that could then shut down gracefully | ||
any language could do this | |||
its simply an OS and/or interpreter feature | |||
what do you want to do? | |||
sili_ | prevent and/or detect+stop infinite loops/recursion | 06:34 | |
dduncan | do you mean, take arbitrary bad code and make sure it doesn't run overtime, or stop your own good code after not-too-long? | 06:35 | |
sili_ | any arbitrary bad code | ||
dduncan | as in the case of the test suite | ||
sili_ | no | ||
dduncan | I can't see this happening efficiently | ||
pugs or whatever language could profile itself | 06:36 | ||
and if the profile says something ran too much in a pattern resembling infinity, it could do something | |||
06:36
GeJ joined
|
|||
dduncan | but all those checks slow everything down | 06:36 | |
fine for debugging, but not otherwise | 06:37 | ||
the timer system works better if you know the code is supposed to be short lived | |||
sili_ | which enforces my answer | ||
dduncan | like a test script, is meant to be short lived | ||
GeJ | greetings all | 06:38 | |
dduncan | greetings one | ||
gaal | sili_: purely speaking it's a halting problem; but you can engineer it so that if you run the same tests several times, you can use old timing information to set new expected timeouts. that way you don't need completely arbitrary limits for tests. | 06:42 | |
afk & | 06:43 | ||
06:51
scook0__ joined
|
|||
sili_ | hmm | 06:53 | |
dduncan | however, we need to start somewhere reasonable | 07:02 | |
for now, perhaps the harness can be altered, unless it already does this, to time each test individually ... the result could be included in the smoke output too; not just a total time to run, but a breakdown | 07:03 | ||
07:04
hobbs left
|
|||
dduncan | after a number of smokes, we can see run time for several developers, then just set a timeout that is longer than the longest test on the slowest system | 07:04 | |
for this purpose, it doesn't have to be complicated; it doesn't have to profile, unless we want the test suite to say when a halting test is taking signficantly longer than usual | 07:05 | ||
07:13
Medvekoma joined
07:15
Medvekoma joined
|
|||
dolmans | i heard perl6 will have strict type declare, is that a mandatory? | 07:23 | |
Khisanth | s/will/can/ | ||
dolmans | Khisanth: do you mean type declare is just optionary? | 07:24 | |
Khisanth | yes, if I am reading your question correctly :) | 07:25 | |
07:26
feng123 joined
|
|||
dolmans | ok, thx. | 07:26 | |
07:26
nothingmuch joined
|
|||
simcop2387 | Khisanth: oo neat that'd be alot of fun to have | 07:27 | |
nothingmuch | hola | 07:30 | |
07:39
Medvekoma joined
|
|||
ingy | hola nothingmuch | 07:41 | |
07:43
Cryptic_K joined
07:45
feng joined
07:52
canhope joined
08:02
scook0__ joined
08:10
iblechbot joined,
stennie joined
08:11
Medvekoma joined
|
|||
nothingmuch | hola ingy | 08:24 | |
08:34
Odin- joined
08:36
scook0__ joined
|
|||
dduncan | hola bothuvya | 08:42 | |
08:46
Cryptic_K joined
08:53
feng123 joined
08:56
scook0 joined
09:20
kane_ joined
09:22
scook0_ joined
09:27
Cryptic_K joined
09:31
Medvekoma joined
10:04
scook0__ joined
10:09
rantanplan_ joined
10:17
Southen_ joined
10:25
scook0_ joined
10:32
rantanplan_ joined
10:33
rantanplan_ joined
10:35
Medvekoma joined
10:57
G2 joined
11:20
myren joined
|
|||
myren | PMC's vtables can be updated at runtime i presume? | 11:20 | |
thats how dynamic typing works i assume? | |||
scook0_ | myren: parrot questions are probably better asked in the parrot channel | 11:50 | |
11:50
scook0_ is now known as scook0
|
|||
scook0 | (you're more likely to find someone who actually knows the answer) | 11:52 | |
myren | is that on a different irc server? | 12:04 | |
there's 1 person in #parrot and they are not an op | |||
cognominal | #parrot does live in irc.perl.org | 12:05 | |
or grou.ch if you have trouble connecting | |||
I keep forgetting where the perl6 version scheme is documented :( | 12:16 | ||
theorbtwo | cognominal: You mean the pugs version scheme? | ||
cognominal | yes | 12:17 | |
12:22
pfenwick joined
|
|||
nothingmuch | the roadmap? | 12:33 | |
theorbtwo | docs/01Overview.html, search for roadmap. | 12:35 | |
13:00
kolibrie joined
|
|||
cognominal | thx | 13:03 | |
13:09
iblechbot joined
13:27
\xe6var joined
13:33
binary42 joined
13:45
stevan joined
13:50
Southen joined
13:52
r0nny joined
13:54
r0nny joined
13:59
Debolaz joined
14:04
petdance joined
14:08
Southen_ joined
14:09
rodi joined,
lypanov joined
14:12
sahadev joined
14:24
joepurl joined
|
|||
lypanov | is there a #parrot somewhere? | 14:24 | |
sorry, googled, found, ignore me | |||
rafl | lypanov: irc.perl.org | 14:25 | |
lypanov: Oh, sorry. Ignore me. | |||
lypanov giggles | |||
thanks anyway rafl :) | |||
14:26
pfenwick left
|
|||
lypanov | just in case anyone actually knows where to find chromatic | 14:27 | |
: www.perl.com/pub/a/2006/01/12/what_...tml?page=3 | |||
has a bad link, to the phalanx project | |||
which, nicely, via firefox | |||
gets you to microsoft.com | 14:28 | ||
rafl | lypanov: It doesn't redirect to microsoft for me, but the link is broken, indeed. | 14:32 | |
lypanov | rafl: probably just some weirdness in the dns i'm using | 14:33 | |
14:38
lisppaste3 joined
14:40
movies1978 joined
14:42
elmex joined
|
|||
xinming | hmm, token doesn't explained well in synopsis. So, anyone here have a clue? | 14:44 | |
obra | you mean what a "token" is? | 14:45 | |
Khisanth | lypanov: no, someone answered that for me the other day, the first result for "http" is mircosoft.com on google | ||
lypanov | Khisanth: aha, magical firefox feature | ||
GeJ | more like a magical google feature | ||
lypanov | hehe | 14:46 | |
yeah | |||
GeJ | well it's a mix indeed... | 14:47 | |
lypanov | is there a special channel for pugs or is this the canonical one? | ||
Khisanth | "ff is basically doing a search for http and hitting I'm Feeling Lucky" | ||
this is the one :) | |||
theorbtwo | This is the cannonical mode. | 14:48 | |
GeJ | firefox gets 'http' as the URL. malformed so assumes it's a search subject, forwards to google and get the first result : microsoft.com | ||
lypanov | whats the most usual frenzied chat time for the channel? | ||
any given timezone or quite random? | 14:49 | ||
i'm looking for a good time when i can ask questions to the core :) | |||
theorbtwo | When audreyt is doing pugs stuff, whenever that is. | ||
...but you might consider the perl6-compiler mailing list. | |||
lypanov | theorbtwo: k :) | 14:51 | |
theorbtwo: i'll 'hang' for the moment, if nothing turns up in a week i'll try the ml :) | |||
thx for the info | |||
xinming | obra: yes. | 14:52 | |
theorbtwo | What's your question? | ||
xinming | obra: the synopsis doesn't have any detail on it. | ||
token | |||
obra | xinming: It's a pretty standard term when talking about parsing. | 14:53 | |
it's (iirc) the smallest unit one can parse soemthing into. | |||
Others can likely give a more computer-sciencey definition | |||
theorbtwo | Well, not neccessarly the smallest unit one can, but the smallest unit one /does/. | ||
14:52 < xinming> obra: the synopsis doesn't have any detail on it. | |||
14:52 < xinming> token | |||
14:53 < obra> xinming: It's a pretty standard term when talking about parsing. | |||
Er, sorry. | 14:54 | ||
xinming | the printable letter(include utf-8 character and ASCII) ? | 14:55 | |
theorbtwo | Can you give us some context for what sort of token you're talking about? | 14:56 | |
xinming | theorbtwo: in Synopsis... | ||
hold on | |||
Tokens (keyword: token) are rules that perform low-level pattern matching (and also enable rules to do whitespace dwimmery). | 14:57 | ||
and for the reason, I can't find the word dwimmery in Dictionary. :-/ | |||
theorbtwo | Do What I Mean... -ery. | 14:58 | |
xinming | :-( | 14:59 | |
Oh, I know... | |||
DWIM mean Do what I mean. | |||
how about the keyword? | |||
theorbtwo | I haven't a clue. | 15:03 | |
xinming | theorbtwo: Did you read the synopsis? It's in S06, | ||
in 'Subroutines and other code objects' part. | 15:04 | ||
lypanov | keyword == a word in the language | 15:05 | |
the keyword is token | |||
e.g "token blah" | |||
could be some code | |||
no real idea, haven't read it, just guessing | |||
theorbtwo | Hm, now I did, and I still haven't a clue... I'm guessing that they want to be called by the rule engine, but I don't really know when or why or where or how... | 15:06 | |
xinming has to be waiting for synopsis update. :-P | |||
lypanov | where can i find the synopsis? | 15:07 | |
theorbtwo | dev.perl.org/perl6/doc/synopsis.html | ||
lypanov: I really suggest you ask your questions now instead of waiting until the channel is more happening; it's likely that they don't require as core sorts of folk as you think. | 15:09 | ||
ingy | hola kiddies | ||
theorbtwo | Hola, ingy. | ||
obra | ingy! | ||
ingy | mind if I refactor your code? | ||
hi obra | |||
theorbtwo | My code? I'm not sure I still have more then 5 lines on a blame... | ||
ingy | I meant the Royal Your | 15:10 | |
lypanov | theorbtwo: basically the question is, how do you expect to make it fast? | 15:11 | |
theorbtwo | Ah. | 15:17 | |
That needs guys more core then me, at least for some bits. | |||
For other bits: GHC is constantly getting faster, or at least introducing methods that we can use to get faster. | |||
15:18
vel__ joined
15:26
petdance left
15:37
xinming joined,
hexmode joined
15:41
Eimi joined
|
|||
lypanov | theorbtwo: yeah, efficiency is my only real concern these days | 15:45 | |
theorbtwo: figured out eventually that high level is useless if you can't easily make it go as fast as a quick hack up solution a low level language :) | |||
16:00
nothingmuch joined,
lucass joined
16:10
kanru joined
16:20
rafl joined
|
|||
stevan | audreyt: ping | 16:25 | |
stevan thinks maybe he has figured out the $repr issues which have gone warnocked on p6l | 16:26 | ||
but I would like to get a sanity check from you before I code anything | |||
16:30
Qiang joined
|
|||
audreyt | stevan: pong! | 16:32 | |
stevan | audreyt: :) | 16:33 | |
audreyt | submit your sanity for inspection now :) | ||
stevan | class finalization | ||
audreyt just woke up from an awkwardly-timed nap... 00:33am here | |||
stevan | but in a very limited way | ||
thats almost like going to sleep at a normal time... | |||
you better be careful, next thing you know you will get an office job | 16:34 | ||
audreyt | nah, this means going to sleep right after exhausting 8-hour $job day | ||
Qiang | 9-5! | ||
audreyt | well, more like 11-7 | ||
stevan | :) | ||
Qiang | that would be a flexible schedule :) | ||
audreyt | but go on :) | ||
stevan | so, lets examine Array for a moment in isolation | 16:35 | |
Array does List | |||
correct? | |||
(List being a role which provides the more "functional" things like map, grep, reduce, etc) | |||
Array is a role itself | |||
I think it is possible to describe the Array role completely leaving only postcircumfix:<[]> (or whatever that is) undefined | 16:36 | ||
audreyt | go on, but I think we are going to legislate punning officially | 16:37 | |
stevan | it may not be the more efficient implementation, but thats not our conceren at the moment | ||
audreyt | (fully defined role moonlighting as a class) | ||
stevan | :) | ||
so ,... we still dont have a class(Array) only a role(Array) | 16:38 | ||
but before I define class(Array) I want to describe how role(Array) could be used | |||
role(Array) can be done by other classes, which will give them Array like behavior | |||
this is an alternative to subclassing Array | 16:39 | ||
audreyt | subclassing Array is insane anyway</mumble> | ||
stevan | s/(Array)/class($1)/ | ||
audreyt | still. :) | ||
(but go on) | |||
stevan | it is insane, but only because of the $repr type I think | ||
audreyt | exactly because of $repr. | ||
stevan | so in all cases where you would want to subclass class(Array), you can do role(Array) | 16:40 | |
the result will be exactly the same | |||
since the local classes methods will override those in role(Array) | |||
so, since $repr presents an issue for Array, we finalize it | |||
s/(Array)/class($1)/ | 16:41 | ||
then you cannot subclass it anyway :) | |||
but you can still have all the same benifits as if you could | |||
audreyt | except for MI. | ||
stevan | because you have a role(Array) which is a 99.99999% implementation | ||
audreyt | which is the insane part | ||
so we conveniently sidestep that problem | |||
stevan | well I think the MI issue can be solved uing the role | 16:42 | |
16:42
eric256 joined,
eric256 left
|
|||
lypanov | audreyt: quick q, when are usually the best times to drill your mind? (in a rather light mannered way) | 16:42 | |
audreyt | role doesn't let you do pre/post "super" calls, does it? | ||
it's all flat | |||
lypanov | audreyt: (wrt performance and pugs/perl6/parrot) | ||
audreyt | lypanov: now. | ||
stevan | if you have to ,.. you create: class MyArray { does Array } and subclass that | ||
16:42
Debolaz joined
|
|||
lypanov | audreyt: mind if i go privmsg? | 16:42 | |
audreyt | lypanov: only if you publicly explain the reason :) | 16:43 | |
lypanov | or create #perl6-performance? | ||
audreyt: to not wreck the conversaion you're already having :) | |||
s/ion/t&/ | |||
16:43
chris2 joined
|
|||
audreyt | lypanov: separate tabs will wreck my mind :) | 16:43 | |
stevan | lypanov: we are used to multiple threaded conversation | ||
:) | |||
audreyt | stevan: agreed. | ||
stevan | par for the course in #perl6 | ||
audreyt | stevan: but I agree the default impl methods does not belong in a class | 16:44 | |
lypanov | audreyt: hehe. okay :P | ||
audreyt | stevan: so, what is preventing us from filling in the missing <[]>? | ||
stevan | audreyt: ideally we put as much as possible into the role, it will make things much more portable | ||
audreyt: in Role? | 16:45 | ||
lypanov | audreyt: okay, basic premise, i'm a ruby nut that started rewriting with three aims: ruby in ruby, efficient, extensible | ||
stevan | s/Role/role(Array)/ | ||
lypanov | audreyt: perl6 is getting clean, and ruby2 is getting less clean, so i'm loosing interest fast in ruby, thusly turning to other possibilities | ||
audreyt | stevan: aye | ||
lypanov | audreyt: however, over the last 6 months i've found that efficiency is unfortunately just too much of a concern for many applications | ||
stevan thinks lypanov has a strange defintion of "clean" ;) | 16:46 | ||
lypanov | audreyt: so i wondered exactly how high on the list of priorities it is for the perl6 team? | ||
stevan: not perl5? ;) | |||
integral agrees. perl6.clean? == no | |||
audreyt | surely lypanov doesn't mean clean as Clean :) | ||
16:46
justatheory joined
|
|||
audreyt | now, "less cruft", that's an agreeable definition | 16:46 | |
stevan tries babelfish for a translation of "clean" | |||
audreyt | lypanov: ok. I can only speak for one person in the pugs team | 16:47 | |
which is myself | |||
stevan | audreyt: the idea is that we create a class(Array) which implements the <[]> part, and then finalize that class | ||
lypanov | audreyt: any opinion of anyone forming the core is more than enough :) | ||
(as in, the people most likely to talk with code) | |||
stevan | basically forcing the "extension of built in types" to always be done using roles | 16:48 | |
audreyt | stevan: got it. and the undef-but-behavioural ::Array in userland is proxy for _both_ | ||
stevan | lypanov: keep in mind that pugs is not the "official" version, only the most complete to date :) | ||
audreyt: both the role(Array) and class(Array)? | |||
audreyt | the most incomplete too | ||
lypanov | stevan: yeah, as i said, i'm more interested in people that are actually working towards the goal :) | ||
audreyt | as there is only one ;) | ||
stevan | :D | 16:49 | |
audreyt | stevan: yes, per the strange S12 duckroling definition, that's my impression. anything wrong with that? | ||
stevan | not at all | ||
lypanov | stevan: try using babelfish to go via at least 3 languages ;) | ||
audreyt | lypanov: okay. pugs's goal is not to create a fast VM | ||
we do have two VMs in our tree | |||
both written in haskell | |||
but the goal is to go for a clean semantics | 16:50 | ||
lypanov | audreyt: the goal is to prototype the language? | ||
integral | ugh, is it possible to make Pugs.Run small again yet using all the new PIL serialisation stuff? | ||
audreyt | efficiency is okay but secondary | ||
integral: yes! yes! | |||
integral: will happen _right_ after 6.2.11 | |||
integral | yay! | ||
audreyt | integral: I just don't want to delay the release again for it | ||
stevan | audreyt: I think we can make the $repr=nil classes deal with does() and is() in an approriate way | ||
audreyt | stevan: that'd fit larry's mind | ||
integral | And so the old evaluator will get killed soon too? | ||
lypanov | audreyt: but the goal of pugs is to be written in perl6 itself, yup? | 16:51 | |
audreyt | integral: s/killed/cannibalised/ | ||
lypanov | audreyt: (thats the more important aim of mine) | ||
audreyt | lypanov: yes. however, our newer VM is really tiny | ||
stevan | audreyt: okay I will document this in docs/notes | ||
audreyt | and reimplementing it in Perl6 (to form a metacircular evaluator) is trivial | ||
stevan: woot! | |||
integral | I think there'd have to be a really optimising perl6 compiler along the lines of jhc or mlton before writing all of it in p6 | ||
stevan loves metacircularity :) | 16:52 | ||
16:52
rantanplan_ joined
|
|||
lypanov | audreyt: is there any docs on the new vm? or best to simply read the code? | 16:52 | |
audreyt | integral: s/writing/writing and using-in-production/ | ||
theorbtwo | integral: You mean whole-program optimization? Not really possible; if we are to allow BEGIN blocks to warp lots, we never see the whole program. | ||
stevan | integral: why can we write an optimizing perl 6 compiler in perl 6? it could then continually optimize itself until it got fast enough for itself | 16:53 | |
integral | theorbtwo: I'm not convinced in the specific case of the compiler since the interfaces to the compiler should be well-defined, so you can do whole-program optimization within them | ||
audreyt | lypanov: svn.openfoundry.org/pugs/src/PIL/Na.../Parser.hs svn.openfoundry.org/pugs/docs/notes..._types.pod | ||
lypanov | audreyt: if i were to svn co from the pugs tree would that be the entire universe or does it have many other hard code deps? | 16:54 | |
audreyt | lypanov: our only dep is: perl5, ghc6.4 | ||
well, perl5.6 actually | |||
well, also "make" | |||
integral | stevan: I think because it'd be really, really too slow to start in perl6 without having got part way there already | ||
audreyt | that should be all | ||
stevan | integral: just leave it running for a day or two :) | 16:55 | |
lypanov | audreyt: excellent. | ||
16:55
r0nny joined
|
|||
stevan picutres it turning into something like the amoeba-tetsuo at the end of Akira | 16:55 | ||
audreyt | lypanov: okay, going back to your question. pugs's idea is to have a series of minilanguages between perl6 and the final target | ||
lypanov: to complicate the matter, "the final target" means any<Haskell Perl5 JavaScript Parrot>. | 16:56 | ||
# pugs.blogs.com/photos/visiolization...ation.html | |||
\xe6var | how evil | 16:57 | |
audreyt | lypanov: so our prototypical VM doesn't matter in the long run; they are just convenient evaluators (and semantic definitions) for the intermediate forms | ||
lypanov: performance is handled in two parts: the underlying runtime, and the codegen | |||
lypanov: the codegen needs to generate as-fast-as-possible code, using whatever trick allowed in the underlying runtime. | 16:58 | ||
lypanov: so a simple PIL construct can be expressed with nasty hacks in eg. the JavaScript codegen. | |||
lypanov | audreyt: basically my main worry with most current systems (especially the new ruby interpreter implementation) is the lack of support for specialization at object model level as opposed to vm level | 16:59 | |
audreyt | lypanov: now, parrot folks -- like leo_ here -- are concerned not only to run perl6 correctly but also run it fast | ||
lypanov: okay... in that case you want to read S12 a bit | 17:00 | ||
search.cpan.org/dist/Perl6-Bible/li...le/S12.pod | |||
lypanov: perl6's metamodel is pluggable; we implement a rather complex default model for the user | 17:01 | ||
lypanov: but those are all implemented in term of primitive PIL^N constructs, namely representation types and prim calls | |||
17:02
r0nny joined
|
|||
audreyt | lypanov: so by changing or augmenting the "boot code" you can end up with entirely different metamodel, even at runtime. | 17:02 | |
stevan | which is pure unadulterated insanity :) | ||
audreyt | our current boot code is here: svn.openfoundry.org/pugs/src/PIL/Na...Bootstrap/ | ||
yes, what steven said | |||
stevan | but its a whole lot of fun :P | ||
audreyt | now, the challenge is to run the prim calls/reprs efficiently in the underlying runtime | 17:03 | |
17:03
bsb joined
|
|||
audreyt | and make sure there are shortcuts for common operations in the boot code | 17:03 | |
robkinyon | stevan: audreyt: So, the upshot of your agreement is that the only $repr will be p6opaque ... ? | ||
stevan | robkinyon: nope | ||
robkinyon | of course not. that would be too simple and logical. :-/ | 17:04 | |
audreyt | robkinyon: svn.openfoundry.org/pugs/docs/notes..._types.pod | ||
stevan | robkinyon: my basic idea is that if we allow classes to be finalized, then we can allow alternate repr types to exist and not trip over each other easily | ||
audreyt | lypanov: so whenever we come up with a potentially expensive requirement in the boot code (C3 dispatch order; iterators; autoboxing) | 17:05 | |
stevan | robkinyon: I think there is sanity in p6opaque being the only repr type available in user-land | ||
but that is not my descision | |||
robkinyon | so, we're still doing $repr === Some-Class-that-has-$repr==p6opaque? | ||
lypanov | audreyt: okay. on a more basic mechanics level, the system shown in the simplecomplation.html performs complation once, is there interest in iterative compilation? | ||
audreyt | lypanov: we ask the real VM people -- leo_ and friends -- to make those fast | ||
lypanov: p6 operates under separate compilation | |||
(and linking) | 17:06 | ||
lypanov: so each individual .pm undergoes the same loop | |||
that is not the case in the v1 (Exp) runcore, but will become as such in v2 (PILN) | |||
stevan | robkinyon: no, I think $Larry[0] still needs to clarify his envisioned usage of diff repr types | ||
audreyt | (previously I tried GhcBinary but it breaks horribly; now we have YAML, those can store our "byte code") | ||
stevan | p6array may not mean "use an Array class as your repr type", but it might mean "use the same repr type as Array" | 17:07 | |
robkinyon | Isn't the $meta`create("") idea done more simply by having an undef singleton? | ||
lypanov | audreyt: ah, but the vm is still fairly high level in any case for parrot etc, so problem avoided basically. | ||
stevan | robkinyon: explain more please | ||
lypanov | audreyt: i'll have to read the svn tonight, idea is interesting | ||
audreyt | lypanov: well, hold on for the "etc" here... parrot may be more lower level than you think :) | ||
lypanov | audreyt: the "<4k code" in an interview with you caught me | 17:08 | |
robkinyon | well, the goal of the undef $repr, as i understand it, is to create an instance of class Foo which evaluates in all situations to the same result as undef | ||
audreyt | lypanov: you can try "make pil" in the current source tree to play with the v2 VM | ||
lypanov | audreyt: (as my ruby interpreter is already approaching that and not nearly finished) | ||
robkinyon | in other words, bless( \(my $x) => 'Foo' ) | ||
audreyt | lypanov: I thinkit's <1k LOC | ||
robkinyon | except more intelligently | ||
with all the appropriate overloads. | |||
stevan | robkinyon: yes, essentially, but it also responds to the methods and introspection/reflection as an instnace of the class would | ||
lypanov | audreyt: given your blog and the word "isight" can i assume it'll compile on a ppc/osx box? | ||
audreyt | lypanov: sure | 17:09 | |
lypanov | excellent | ||
robkinyon | So, since this is something that sounds reasonably common, why not put it as part of the MOP? | ||
.meta, .id, .repr, .as_bit, .as_str, and .null | |||
stevan | robkinyon: what would .null return? | ||
robkinyon | and let the MOP do all the crazy overloading for you instead of hiding it in the $repr | ||
lypanov | audreyt, stevan, et al: hope to chat again when i've gained a bit more understanding :) thx for the info :) | ||
robkinyon | .null would return an object that is the null object for that class | 17:10 | |
stevan | lypanov: your welcome, come back and visit us anytime :) | ||
robkinyon | presumably it would be a singleton in the default | ||
stevan | robkinyon: what is the use of that? | ||
robkinyon | what is the use of $repr == ""? | ||
audreyt | lypanov: thanks for the question :) | ||
stevan | robkinyon: those are created as singletons in the boot code | ||
robkinyon | why can't Foo.null be the same way? | ||
lypanov | stevan, audreyt: :) | ||
lypanov runs off to catch his bus | |||
stevan | robkinyon: I see what you are missing | 17:11 | |
robkinyon | I was sure it was something. :-) | ||
stevan | there are 2 different "Foo"s | ||
17:11
nnunley joined
|
|||
stevan | ^Foo which is the metaclass instance | 17:11 | |
and ::Foo which is an instance of ^Foo with the nil $repr | |||
both are created at boot time | 17:12 | ||
audreyt | because larry thinks ::Int.isa(::Int). | ||
robkinyon | what is the terminology for the class 'Foo' ? | ||
stevan | ::Foo | ||
^Foo is the metaclass instance itself | |||
robkinyon | so, $foo = ::Foo->new ? | ||
stevan | (I think) | ||
at least this week | |||
robkinyon | ok | ||
stevan | yes | ||
robkinyon | so, ::Foo.meta == ^Foo ? | ||
stevan | yes | 17:13 | |
basically what you were saying about "shouldnt it be a singleton" is correct | |||
robkinyon | So, why is ::Foo a null instance of ^Foo ? | ||
audreyt | robkinyon: because ::Foo has no member data | ||
stevan | so that ::Foo.isa(::Foo) | ||
audreyt | class Dog { has $.tail; } | ||
but ::Dog.tail is not there | |||
robkinyon | ok | ||
audreyt | as ::Dog is nil not opaq | ||
s/is/reprs/ | 17:14 | ||
stevan | which means it will blow up easily | ||
audreyt | compile time too | ||
stevan | when you try to access attributes | ||
which is what Larry wanted | |||
robkinyon | So, what I'm proposing is if ^Foo.null == ::Foo, then ::Foo.null == $foo where $foo ~~ undef | ||
stevan | so that the distinction between class methods and instnace methods is made by whether they attempt attr access or not | ||
robkinyon | ahhh! that's a bad distinction | 17:15 | |
audreyt | robkinyon: we all agree! | ||
stevan points at $Larry | |||
audreyt | but that's what S12 explicitly says! | ||
robkinyon | S12 is wrong | ||
audreyt | it's not wrong, any more than perl5 is wrong | ||
perl5 is like that. | |||
stevan wonders if robkinyon got his LISP book yet | |||
audreyt | Dog->tail vs Dog->new->tail | ||
robkinyon will be picking up Advanced Lisp at the library today, but is waiting for Basic Lisp. :-) | |||
how do I do virtual methods then? | 17:16 | ||
virtual instance methods? | |||
but, that's beside the point | |||
audreyt | method meth {...} | ||
stevan | all methods are virtual | ||
audreyt | right. | ||
there is no nonvitual methods. | |||
robkinyon | but meth(), in that case, is a class method | ||
because it doesn't attempt attr access | |||
audreyt | nope. | ||
stevan | robkinyon: it /can/ be a class method | ||
audreyt | the {...} means it's not a method ;) | ||
well rather, that it can't be used as either instance or class meth | 17:17 | ||
robkinyon | ok, so i create a method that doesn't attempt attr access in Foo, then override it in Bar with one that does | ||
what now? | |||
audreyt | robkinyon: you get what you deserve. | ||
robkinyon | or, vice-versa | ||
stevan | :D | ||
audreyt | exactly as in p5. | ||
robkinyon | Why should i have to know the internals of the method in Foo just to create it in Bar? | ||
that's such action at a distance that it hurts | 17:18 | ||
stevan | robkinyon: you dont.,.. you just cant use Bar like you use Foo,.. | ||
robkinyon | That violates liskov | ||
stevan thinks liskov is used to being violated by now | |||
audreyt chortles | |||
robkinyon | It also violates polymorphism | 17:19 | |
audreyt | robkinyon: S12 is by far not nominal class-based object orientation. | ||
stevan points at $Larry again | |||
audreyt | robkinyon: most of what you are describing is now moved to roles | ||
robkinyon | my Dog $fido should be able to be assigned a Chihuahua, regardless of how the methods are defined | ||
stevan | robkinyon: I tried the inject/suggest reasonable class methods, but it didnt take | 17:20 | |
audreyt | robkinyon: actually, liskov as you described Just Works | ||
robkinyon | i think a p6l post is in order | ||
audreyt | robkinyon: you can assign it a Chihuahua _instance_ | ||
robkinyon | audreyt: How do you figure? I can't necessarily call $fido->tail | ||
audreyt | why not? | 17:21 | |
robkinyon | if it's a Dog, I can't call tail(), but if it's a Chihuahua, I can | ||
because Dog defined tail() without attr access and Chihuaha defined it with attr access | |||
audreyt | huh. | ||
stevan | robkinyon: then you cant call Chihuahua.tail() | ||
robkinyon | Liskov is violated | 17:22 | |
stevan | but you can call Dog.tail() | ||
audreyt | but Chihuahua.new.tail() is fine | ||
robkinyon | that's -EXACTLY- my point | ||
audreyt | so is Dog.new.tail() | ||
so ths only failing case is Chihuahua.tail | |||
which I think is outside the common use of liskov | |||
which only governs instances | |||
robkinyon | audreyt: So I can call class methods on instances? | ||
audreyt | robkinyon: surely | ||
(again, just like p5) | |||
robkinyon | that's rather counter-intuitive | ||
stevan | and instance methods on classes, assuming they dont touch attrs | ||
robkinyon | don't bring p5 up in this situation | ||
p5 doesn't have an OO model. It has a model that pretends to simulate OO 90% of the time | 17:23 | ||
audreyt | robkinyon: but this is explicitly modeled after p5... | ||
robkinyon | It shoudn't be | ||
audreyt | ...but sure. | ||
robkinyon | There's a reason that Class:: is the most populated TLN on CPAN | ||
stevan points widly at $Larry again | |||
@Larry even | |||
robkinyon | The reason is that people don't like P5 OO | ||
at all | |||
audreyt | robkinyon: p6's object model is really prototype based, in all seriousness. | ||
robkinyon | LOL | 17:24 | |
you wanna fill her in on the joke, stevan? | |||
audreyt | it just pretends that it has classes and roles but shipping a bunch of default prototypes and have the compiler use them | ||
stevan | robkinyon: fear not, we will have our own "internal" copy of Bootstrap.pil ;P | ||
audreyt | s/but/by/ | ||
robkinyon | if it was prototype-based, then $repr would not be an issue | ||
everything else would be the metamodel | |||
theorbtwo | robkinyon: But what are the prototypes made of? | ||
stevan | theorbtwo: magic pixie dust of course | 17:25 | |
robkinyon | theorbtwo: a black box that responds to get(name) and set(name,value) | ||
it's purely a struct that self-organizes | |||
everything else is based on the fact that blocks are first-class | |||
all the userland crap is done through APIs, with one API being recommended above all others, just like there's one syntax that's recommended above all others | 17:26 | ||
stevan | robkinyon: your blackbox is the PIL^N opaque type :) | ||
robkinyon | ok | ||
then everything else is purely userland sugar | |||
right? | |||
audreyt | well, sugar for the userland | 17:27 | |
stevan | well... there is a layer of meta-land sugar first,.. but yes | ||
audreyt | not sugars written in userland | ||
but yes. | |||
robkinyon | so, the entire $repr question is, for the most part, moot? | ||
theorbtwo | ...which is, IIRC, the repr named 0, or Opaque, and it's an open question as to if there exist other reprs, and what they are for, right? | ||
audreyt | robkinyon: $repr question is saying the you are allowed to choose your black box | ||
robkinyon: some people would like to store their black box in a way that is e.g. compatible with a C struct | 17:28 | ||
robkinyon | Array isn't compatible like that | ||
neither is "" | |||
those should be implemented through roles and methods, not $repr | |||
audreyt | we can (and imho should) make them compatible | ||
stevan | robkinyon: dont think of p6array as being a repr implemented with ^Array | ||
robkinyon | i think my argument is that only unboxed types should be allowed as $repr | ||
audreyt | "" should just reject all set() prim calls | 17:29 | |
robkinyon: oh! we are in vehement agreement. | |||
problem is, some unboxed types have boxed counterparts. | |||
robkinyon | because only unboxed stuff is compatible with foreign data structures | ||
audreyt | and those may have to carry an unbox around | ||
robkinyon | ok | ||
audreyt ponders the expression "carry an unbox around" | |||
robkinyon | what does that have to do with $repr? | ||
audreyt | that unbox has a $repr | ||
surely | 17:30 | ||
but the boxed variant is opaque | |||
robkinyon | no ... that unbox can -be- a $repr | ||
audreyt | yes. | ||
robkinyon | it doesn't have a $repr | ||
audreyt | the box is an opaque that hasa unbox that is a $repr. | ||
theorbtwo | I thought unboxed things didn't have a repr -- that's the definition of unboxed. | ||
Right, OK. | |||
integral | what is --external? | ||
audreyt | so far so good? | ||
robkinyon | one of the attributes within the boxed will be the unbox, but the $repr for the boxed is still p6opaque | ||
unless i'm missing something | 17:31 | ||
audreyt | robkinyon: yes. ^Array and ::Array both has p6opaque as reprs, if that's what you are asking :) | ||
robkinyon: however, array _instances_ carry around an unbox that _be_ the native p6array repr. | |||
robkinyon | so, why is Array being considered as a possible $repr? | ||
stevan | robkinyon: it is not | ||
theorbtwo | s/_be_/_is_/? | 17:32 | |
robkinyon | imho, if you're using a $repr != p6opaque, then you should be forced to deal with internals | ||
theorbtwo | Why is there a native p6array repr? Why not just build it out of a p6opaque? | ||
stevan | robkinyon: I think that $repr = 'p6array' does not mean "use an instance of ::Array as your $repr" | ||
audreyt | integral: it's linking haskell modules with pugs | ||
integral: not actively used anymore; should probably be revived/revised | |||
integral: s/pugs/pugs interpreter/ | 17:33 | ||
robkinyon | stevan: That distinction needs to be blessed by $Larry[0] | ||
stevan | robkinyon: I know,.. | ||
audreyt | theorbtwo: er, speed. | ||
theorbtwo: p6opaque => ParrotObject; p6array => ResizablePMCArray | |||
theorbtwo | OK, I can buy that. | ||
audreyt | theorbtwo: same argument for any other unbox. | ||
stevan | theorbtwo: what would the Array hold in it's p6opaue? | ||
integral | ah | ||
robkinyon | ok ... i think i'm more comfortable now with alternate $repr | 17:34 | |
stevan | class Array { has @array; } is a little to cyclical | ||
audreyt | cool :D | ||
robkinyon | :-p | ||
theorbtwo | stevan: What can you do with a p6array? | ||
stevan | theorbtwo: exactly :) | ||
audreyt | theorbtwo: svn.openfoundry.org/pugs/docs/notes..._types.pod | ||
theorbtwo | Er, with a p6opaque. | ||
robkinyon | i do have to bitch on p6l re: the class method/instance method distinction | ||
audreyt | theorbtwo: has_attr, get_attr, et_attr | ||
stevan | robkinyon: good luck :P | ||
audreyt | s/et_attr/set_attr/ | ||
theorbtwo: and nothing else | |||
robkinyon: we tried :) | 17:35 | ||
stevan | theorbtwo: using the p6array repr type (which is not a $repr which is an instance of ::Array) | ||
robkinyon | And I think someone needs to push Larry for a confirmation that only unboxed can be used as $repr | ||
stevan | you can do many other things which make sense with arrays | ||
robkinyon | does this mean that there's a p6nil unbox? | ||
audreyt | robkinyon: yes. | ||
which is conveniently named "" in the enum | |||
which may be too cute. | |||
robkinyon | That's too cute | 17:36 | |
stevan | robkinyon: I am hoping that larrys silence means he is pondering the $repr issue | ||
theorbtwo | You can build an array from that. Each element goes in an attr named __whatever_$index. | ||
audreyt | robkinyon: if you think it's too cute... fix it in the boot code | ||
robkinyon | every $repr should start with "p6" and then immediately describe the storage mechanism | ||
feh | |||
i don't code ... i just bitch from the sidelines. :-) | |||
stevan | theorbtwo: but then each instance of array has a varying number of attrs | ||
theorbtwo | You could build it with just a single string if you needed to -- that's all memory itself is. | ||
And this is a problem? | 17:37 | ||
robkinyon & # lunch and wife needs the computer | |||
stevan | theorbtwo: when you define a class, you define the attrs it has,.. if each instance has a different set of Attrs, thats nasty from a metamodel perspective | ||
audreyt | robkinyon: oh well... I tried. I'll change it to p6nil | ||
stevan | theorbtwo: if you wanna implement arrays as string,.. go for it :P | ||
theorbtwo: i myself would prefer to implement strings as arrays,.. that makes more sense | 17:38 | ||
theorbtwo | So the judgement is that it's better to have more reprs and avoid yet more levels of indirection then just have one and be cute. | ||
I can deal with that. | |||
stevan | theorbtwo: pretty much | 17:39 | |
theorbtwo: the point is that we need a native list type in the bowels of the runtime anyway, so why not use it as a repr and save ourselves some time | |||
theorbtwo | IWFM. | ||
audreyt | stevan: care to summarize the clarification on robkinyon's concerns in docs/notes/ -- either as part of piln repr types or as something else? | ||
stevan | theorbtwo: I think it introduces some problems, but none that cannot be solved | ||
audreyt: ok, I will make a note of em | |||
theorbtwo | Um, is it "", "p6nil", or "p6undef"? I think I'd prefer the last... | 17:42 | |
stevan | p6-larrys-crazy-class-is-undef-thingy | ||
audreyt | undef carries an exception object | ||
the S12 term is "empty" | 17:43 | ||
theorbtwo | Hm, OK. | ||
17:43
nothingmuch joined
|
|||
audreyt | p6empty better than p6nil? | 17:43 | |
theorbtwo | ...and I think I need to read S12 again. | ||
Probably. | |||
Donno. | |||
Need more sugar before I slump over at keyboard. | |||
Probably more water too. | 17:44 | ||
audreyt | I'll stick with p6nil then. | ||
stevan | audreyt: so looks like there will be a nice Tokyo hackathon | ||
theorbtwo wonders why he's still typing and not getting up. | |||
audreyt | stevan: indeed | ||
stevan wonders if he can get a TPF travel grant | |||
audreyt | I've just decided not to submit one :) | ||
theorbtwo wonders if TPF should get a travel agent. | |||
svnbot6 | r8746 | audreyt++ | * Tidy up unused imports and uncovered base cases in Text.Parser.* | ||
r8746 | audreyt++ | and in PIL.Native.*. | |||
audreyt | so go ahead and submit one for you :D | 17:45 | |
stevan ponders it | |||
is there any type of deadline or such for that kind of stuff? | |||
stevan has never even read the grant page on tpf.org | |||
audreyt | yes, because their next meeting is february | ||
stevan | ah | 17:46 | |
audreyt | so you need to submit, like, now | ||
stevan | ok,.. | ||
any tips? | |||
audreyt | you can then come back with me to OSDC.tw and speak here | ||
and then we can hack more :D | |||
stevan ponders a pan-Asian tour | 17:47 | ||
svnbot6 | r8747 | audreyt++ | * the very-cutely-named "" repr type is now known as "p6nil" instead, | ||
r8747 | audreyt++ | per suggestion from the apparently-not-into-cuteness robkinyon++. | |||
stevan | :D | ||
audreyt++ #nice commit message | |||
audreyt | ingy: cplan.kwiki.org is down so I can't retrieve my grant proposal (not even sure it's there) | 17:48 | |
ingy | audreyt: ok | 17:50 | |
audreyt | stevan: that's what I submitted: | 17:52 | |
ingy | audreyt: this wiki has long since been decommissioned | ||
audreyt | perlcabal.org/~autrijus/tmp/followu...oposal.txt | ||
ingy: that's okay, I found my proposal | 17:53 | ||
stevan | audreyt: cool, thanks :) | ||
ingy | ok, I still have the wiki archived on disk if you need something | ||
hi stevan | |||
stevan | hey ingy | ||
ingy | are you coming here? | 17:54 | |
nothingmuch | ingy: you keep pinging me | ||
stevan | ingy: if TPF will pay for it :) | ||
nothingmuch | do you need something? | ||
ingy pets nothingmuch | |||
just to touch you | |||
nothingmuch | ah | ||
ingy | it's been a while ;) | ||
nothingmuch | hehe | ||
stevan thinks ingy is lonely in .tw | 17:55 | ||
nothingmuch inflates a copy of nothingmuch for ingy | |||
ingy | wheee :D | ||
nothingmuch | i have to go help mum handle her PC | ||
have fun with me while I'm gone | |||
ingy | stevan: do you have a $job these days? | 17:56 | |
stevan | ingy: yes I do, same one actually | ||
ingy | will they let you work from here? | 17:57 | |
that's what I do | |||
stevan | ingy: we are totally virtual too, but my marriage is not :P | ||
ingy | stevan: yeah you gotta sever those ties man | 17:58 | |
audreyt | bring your family here then :D | ||
stevan thinks audreyt might not know what she would be getting into | |||
audreyt | ingy: tsk | ||
stevan: mmm? | |||
ingy | stevan: yeah you can carry your family around on a little scooter like everyone else here | ||
it's fun | 17:59 | ||
stevan | 3 year old twins are a force to be reckoned with | ||
audreyt | oh wow, didn't know they are twins | ||
stevan | ingy: I will discuss it with my wife :P | ||
ingy | the divorce? | ||
audreyt | or rather, that a plural context was expected | ||
ingy | stevan++ | ||
stevan | ingy: if I divorce her, and we get married,.. you will have to stop fooling around with nothingmuch all the time | 18:00 | |
ingy | stevan: Perl 6 is your bitch | ||
stevan | ingy: quite true | ||
18:03
Debolaz joined
|
|||
stevan is trying to figure out what the DELIVERABLES for this grant would be | 18:09 | ||
theorbtwo | stevan: Speaches at $conferences? | ||
s/Speaches/Talks/ | |||
stevan | theorbtwo: I am not sure I want to commit myself to a talk | 18:10 | |
maybe thorough design documents would be enough | |||
and a reference implementation in PIL^N :) | 18:11 | ||
audreyt | and a reference codegen in Perl5. :) | 18:12 | |
(unless you want to do PIR instead) | |||
s/in/to/ | |||
s/codegen/runtime to support the codegen/ | |||
stevan | hmm | 18:13 | |
18:13
Limbic_Region joined
|
|||
audreyt | i.e. bring Perl6::ObjectSpace up to date | 18:13 | |
stevan | yes | ||
audreyt | it's a waste to have it not recognize PILN | ||
stevan | thats a possibility | ||
audreyt | and it's the fastest route for p5 targetting | ||
so add it anyway and we'll figure it out :) | |||
pasteling | "stevan" at 67.186.136.119 pasted "grant proposal draft" (23 lines, 1K) at sial.org/pbot/15504 | ||
stevan | hows that | 18:14 | |
audreyt | change "The Object ModetaModel to "The Object model (with Classes, Roles, etc)" | ||
stevan | ok | 18:15 | |
18:15
randomity joined
|
|||
audreyt | s/langauge/language/ | 18:15 | |
stevan | yeah I will spell check it before i send :) | ||
audreyt | "having both Larry and Damian in the same physical room for this discussion is great... because they don't visit our virtual rooms" | 18:16 | |
(j/k) | |||
stevan | :D | ||
I would like to get this $$ so I think I will stick with my version :P | |||
audreyt | do mention the perl5 runtime -- also include links to the P6-ObjSpace and docs in the pugs tree | 18:17 | |
stevan | ok | ||
audreyt | otherwise fine | ||
best luck | |||
Limbic_Region | 2 p6 related posts at the Monastery today | 18:24 | |
perlmonks.org/index.pl?node_id=523949 | |||
perlmonks.org/index.pl?node_id=523956 | 18:25 | ||
bsb | Is there a log of recent irc history? | 18:26 | |
audreyt | bsb: irc.pugscode.org | 18:28 | |
bsb | Thanks | 18:29 | |
Limbic_Region | bsb - the pugs homepage has a list of very useful links related to all things pugs (to include the irc logs) | ||
bsb | I missed the context to lypanov's ruby plan | ||
audreyt | seems lypanov is doing RbRb | ||
the equiv of PyPy | |||
18:30
G2 joined
|
|||
bsb | Yeah, I see now. Thought it might have been more Ronie | 18:32 | |
As in Ponie | |||
\xe6var | audreyt: rbrb? where? | ||
18:33
Debolaz2 joined
|
|||
bsb | \xe6var: www.lypanov.net/xml/development/rubydium/nanovm | 18:33 | |
I think | |||
audreyt ponders the Ronin project | 18:35 | ||
nice name | |||
bsb | I wrote "Ronie" but Ronin is mush better | 18:36 | |
s/mush/much/ | |||
I'm currently breaking ruby's gc trying to scope the project out | 18:37 | ||
robkinyon | audreyt: I"m into cuteness, just not when it impedes understanding of something that's a bone of contention. :-) | 18:38 | |
18:40
putter joined
|
|||
stevan | audreyt: when is the Tokyo Hackathon scheduled for? pre-conf? post-conf? | 18:40 | |
robkinyon | audreyt: Where in S12 does it say that instance methods are those which access attributes and class methods are those which don't? | 18:41 | |
putter | the p6l annex? | ||
18:42
nothingmuch joined
|
|||
robkinyon | Is it the update to A12 that goes "[Update: class methods are no longer distinguished from instance methods by the compiler, except insofar as the compiler can tell that a method refers to instance variables in the body. It's a run-time error to ask for an attribute of a class object, but that's because the class object doesn't have the attribute, not because it's a class object.]" | 18:43 | |
putter | re rbrb, metaruby is perhaps the furthest along... but hasnt done a public release yet. :( | ||
stevan | A12 is for amusement purposes only IIRC | ||
robkinyon: stick to the new S12 | |||
robkinyon | dev.perl.org/perl6/doc/design/syn/S12.html ? | ||
stevan | yes | 18:44 | |
audreyt goes findking some snack... bbiab | |||
robkinyon | I"m not seeing where S12 says that class methods are methods without attr acccess | 18:46 | |
stevan | robkinyon: it may be on p6l only then | ||
robkinyon | gah | ||
putter | sili_: especially for low level systems, one approach is to engineer so "running" == "making progress", and then have your run loop ping an second, really simple system, whose sole role is to restart the first if there hasnt been a recent ping. | 18:47 | |
18:52
bernhard joined
|
|||
stevan | audreyt: ping | 18:55 | |
18:55
elmex joined
|
|||
putter | stevan: for the near term, I was thinking of breaking the object space p6 code into a bunch of little roles, which can then be assembled. Eg, something like having a separate Mumble::MapGrepReduce role, which this week can be does()ed by Array, on tuesday by List, and on alternate thursdays by Seq. with just a one line change. | 18:55 | |
well. two | |||
thoughts? | |||
stevan | putter: what is the value of breaking it up this way? | 18:56 | |
18:57
mandarin_ joined
|
|||
putter | fast and easy response to design spec changes. so hierarchy changes are localized, rather than being pervasive in multi/method signatures. | 18:57 | |
stevan | I am not sure it pays (in the long run) to optimize for design spec changes :) | 18:58 | |
and I am not sure how this would affect the method signatures | |||
putter | also permits easily creating variant implementations. | ||
stevan | putter: you can create variant implementations with plain role composition | 18:59 | |
putter: the value I can see in this approach is to get more code reuse using smaller parts | 19:00 | ||
putter ponders | 19:01 | ||
stevan | putter: an important piont about the p6 in p6 effort is that it is a clean reference implementation | ||
it really should not attempt to cater to the weaknesses and strengths of each different possible runtime | 19:02 | ||
each runtime should address that on it's own | |||
at least this is my feeling on the subject | 19:03 | ||
putter | currently, when I go to write prim multis/methods, there is an uncomfortable amount of uncertainty. As in, "It's unclear what to do, the process of determining how unclear is hard, and all of the choices seem likely to result in short lifetime before rewrite". Eg, | 19:04 | |
19:04
Debolaz joined
|
|||
stevan | putter: I feel much the same way | 19:05 | |
putter: there is no clear spec for this yet, and all the peices currently fit together only with much hand-waving | 19:06 | ||
putter | what class is this multi actually defined in? Array? List? Elsewhere? Should I go look at S\d\d? Grep p6l? Look back at the #p6 log for a vaguely remembered it should be X not Y? That for the signature. Then, which implementation choice should I use? Cater to eventual optimizability or likely current performance? Together with | 19:07 | |
stevan | putter: optimize for correctness | 19:08 | |
or fun | |||
but nothing else | |||
otherwise it will surely be short lived | |||
I am also not sure you need to define these as multis,.. that is very CLOS-ish, but I am not sure it is nessecary | |||
putter | what dependencies? The concept of a "circular prelude", in the sense of linear ordering, is silly. There are always lots of things which could be implemented using lots of others, all with tradeoffs, not just against the runtimes, but among the api methods. Magical compilation may eventually make that go away, but it's not | 19:09 | |
PerlJam | Everyone congratulate me (or offer condolences if you know better :-), as of Jan 10, the twins gained some marginal independence from their mother. See www.flickr.com/photos/17029646@N00 | 19:11 | |
stevan | PerlJam: congrats | ||
putter | clear my design criteria should be "optimize for imaginary compilers". ;) The main payoff for me, personally, for breaking it into pieces, is it is far less overhead to do multiple implementations, and mixin one which seems merely plausible, knowing the choice can be trivially changed, than now attempting a perhaps | ||
stevan | PerlJam: twins,.. you are in for one hell of a ride ;) | ||
putter | intractable/undefined good quality choice now. /end | ||
;) | |||
19:12
rantanplan_ joined
|
|||
PerlJam | stevan: been more sleep deprived than usual this past week. We'll see how long I can keep it up :-) | 19:12 | |
putter | re CLOS-ish, oh great, I was hoping that at least wasnt an uncertain design decision! :) | 19:13 | |
stevan | PerlJam: boy-girl twins too,.. I have a pair as well,.. mine are almost 4 though,.. | ||
putter considers making a p6 object space _factory_. :) but then, that's what macros are for...:) | |||
stevan | putter: well it's CLOS-ish, but P6 does not do the other stuff in a CLOS-ish way,. so I am not sure it will work as you expect | ||
putter: I think maybe you need to lay your larger vision out first | 19:14 | ||
I have trouble following your reasoning at times, and I really think that is because I am not seeing *your* "BIG PICTURE" | 19:15 | ||
all I tend to see is *my* BIG PICTURE, and I can't see where they both fit yet | |||
19:16
khisanth_ joined
|
|||
\xe6var | PerlJam: my condolences;) | 19:17 | |
boy/girl ? | |||
19:18
khisanth_ is now known as Khisanth
|
|||
PerlJam | aye | 19:18 | |
\xe6var | cool;) | 19:19 | |
Limbic_Region | grats PerlJam | 19:20 | |
19:20
marmic joined
|
|||
audreyt | stevan: pong? | 19:24 | |
stevan | audreyt: any idea when and how long the hackathon would be? | 19:25 | |
audreyt | stevan: the tokyo one? | ||
stevan | yes | ||
putter takes a moment to look at photos... | |||
PerlJam: congrats and sympathy. seeing siblings, at least the nature of your near-term future wont come as a _complete_ surprise. ;) | |||
PerlJam: re "We'll see how long I can keep it up", 4+ years? ;) | |||
stevan: yeah. and maybe I'm overstating the problem. a lot of the object space, likely most of it, doesnt really care what's going on with Array/List/etc. It's strictly "client" code. As long as "@a" works, no problem. | 19:26 | ||
perhaps I shouldnt have started with the hairy tangle of the core. the optimal approach to that, for now, may simply be "whatever the easiest thing is which gets us through the day". | |||
which goes against the trust of the whole "write code in advance of piln being able to run it" thrust of the exercise. but this approach clearly had a "may not fly" risk. | |||
stevan: could you summarize how much is working or not in piln? | |||
stevan | putter: PILn really needs some more tests, and then Array needs work I think | 19:27 | |
putter: I have not looked at it in about a week, so I would have to check and see | |||
putter | is there sanity? | ||
stevan | putter: sanity? whats that? | ||
putter 's irc client syncs, lots of stuff to read... | 19:28 | ||
PerlJam | putter: it shouldn't be that long. With our other children, after about a month, they started sleeping through the night without much worry. | ||
robkinyon | A month?!? | ||
lypanov returns | |||
PerlJam | yes, one month | 19:29 | |
it may be longer with these two as they are slightly premature | |||
stevan | PerlJam: no waking up for food? | ||
robkinyon wonders if PerlJam takes the RubberChicken approach to infant sleep habits. | |||
PerlJam | robkinyon: what's that? | ||
lypanov | hit with a rubber chicken? | 19:30 | |
robkinyon | It's known as the RubberMallet approach in some states | ||
chris2 | oh oh, lypanov is joining the dark sides too ;-) | ||
PerlJam | stevan: maybe once, but usually my wife will feed them well before putting them to bed for the night. | ||
audreyt | stevan: probably the week before March 29 | ||
lypanov | bsb: interestin' | ||
stevan | audreyt: ok | ||
audreyt | stevan: no concrete plan yet | ||
lypanov | bsb: skip the nanovm bit. nanovm is just 800 lines of crappy vm code | ||
bsb: rubydium is the actual goop | 19:31 | ||
PerlJam | robkinyon: you've some strange ideas. (I knew this before reading your posts to p6l ;-) | ||
stevan | audreyt: understood. | ||
putter laughs. there is a subcategory of humor devoted to friends whose first n kids have property x, spend a year or few patting themselves on the back for "how well they did", and then hit n+1... | |||
s/they/we/ | |||
stevan | audreyt: I suppose I dont need anything concrete for the grant though | 19:32 | |
putter | lypanov: what do you think of metaruby etal? | 19:33 | |
lypanov | yoyo chris2 | ||
chris2: yeah, what the hell, ruby2 is gonna suck anyway | |||
putter: metaruby or ruby2c? | |||
chris2 | lypanov: i was refering to #haskell, actually }:-) | ||
lypanov | oh, lol | ||
putter | metaruby. though the two are tangled. | 19:34 | |
audreyt | stevan: yea | ||
bsb | thank lypanov | ||
lypanov | putter: whats metaruby? | ||
putter | ah, looking for url.. | ||
chris2 | lypanov: zenspiders attempt | ||
(nuff said :P) | |||
lypanov | chris2: thats not metaruby | ||
thats ruby2c and "metaruby" :P | |||
chris2 | um, yes it is | ||
ahh :) | |||
lypanov | metaruby is thingies... whats his name... | ||
chris2 | well, matju did a metaruby too, but that was totally different | 19:35 | |
lypanov | that quebecois guy | ||
19:35
khisanth_ joined
|
|||
lypanov | exactly | 19:35 | |
lypanov wonders how to spell quebecois | |||
chris2 | it was a reimplementation of the core classes in ruby | ||
robkinyon | PerlJam: I'll take that as a compliement. :-) | ||
lypanov | chris2: *nod* | ||
robkinyon | lypanov: You need the circumflex under the 'c'. :-) | ||
lypanov | thats the only mistake i made? | ||
w00t! | |||
lypanov grins | 19:36 | ||
putter: anyways. thoughts on the zenspider stuff? | |||
putter: its crap :P | |||
putter: the entire idea is flawed | |||
chris2 | it could work, but it will be crap, yes ;-) | ||
PerlJam | robkinyon: I'm not sure I meant it as such, but you can take it that way if you like :-) I've said similar things to Damian, so you're at least in good company ;) | 19:37 | |
stevan | audreyt: would you mind reading the most recent draft? | ||
putter | www.zenspider.com/Languages/Ruby/MetaRuby.html , but more: blog.zenspider.com/ right-side categories MetaRuby, ParseTree, Ruby2C (and maybe more?). | 19:38 | |
lypanov | bsb: so you're hacking up a replacement gc? | ||
bsb | No. That just were the seqfault was | 19:39 | |
lypanov | putter: yeah, there's two projects with the same name, its confusing as hell | ||
bsb: hehe. whats ronie then? | |||
bsb | I'm trying to understand ruby's implementation | ||
Ronie is just a nice acronym | 19:40 | ||
19:40
khisanth_ is now known as Khisanth
|
|||
putter | yes, there is also an old an inactive-for-years MetaRuby on... raa. raa.ruby-lang.org/project/metaruby/ | 19:40 | |
lypanov | aye | ||
bsb | Would be like www.poniecode.org/ | ||
Maybe not as difficult as ruby seems very clean internally | 19:41 | ||
chris2 | seems ;) | 19:42 | |
putter | bsb: yes, the implementation is nice. | ||
lypanov | considering there are still gc bugs popping uo... | ||
putter | nice, at least for an intelligibility standpoint. it was fairly easy to do automated modifications to the C code to swap in alternate objid/num/array primitives. | 19:44 | |
I can't speak to memory management. | |||
chris2 | at least ruby problems are comparatively easy to localize | ||
putter | odeo.com/audio/306696/view Eric Hodel talks about MetaRuby (haven't watched it myself) | 19:47 | |
glu.ttono.us/articles/2005/10/14/metaruby | 19:49 | ||
lypanov | putter: metaruby as per the current ideas of the project leaders is just.. meh | 19:50 | |
putter: it can not possibly be efficient | |||
19:57
hachi joined
|
|||
Limbic_Region | seen pmichaud | 19:58 | |
jabbot | Limbic_Region: pmichaud was seen 203 days 40 minutes 46 seconds ago | ||
Limbic_Region | hmm | ||
putter | seen pmichaud_ | 19:59 | |
jabbot | putter: I havn't seen pmichaud_, putter | ||
audreyt | pmichaud is I think tied up in $job according to the last two cabal phone conference minutes | ||
putter | ah | 20:00 | |
Limbic_Region | right - I was just looking for contact info | 20:03 | |
demerphq (from PerlMonks) has once again expressed moderate interest in PGE | |||
he is the guy that made the trie patch in the p5 regex engine for alternation in bleedperl | 20:04 | ||
audreyt | Limbic_Region: cool! if he can hop on IRC -- or arrange some Skype/Gobby conference -- I'd like to work with him on porting the Rules-in-Haskell core to C | 20:05 | |
(or to Perl5, but I think C is the way to go) | |||
libpge | |||
Limbic_Region | I will tell him you are interested | ||
audreyt | or just librules | ||
Limbic_Region | AFAIK, he is not IRC savvy | 20:06 | |
audreyt | is he in .de? | ||
if he'll be in GPW, we can work in realspace. | |||
Limbic_Region | IIRC yes | 20:07 | |
I just /msg'd him | |||
frankfurt, germany - so yes (unsure of the GPW though) | 20:08 | ||
20:08
Debolaz joined
|
|||
audreyt | yeah, I think I stayed in his place once | 20:08 | |
stevan | audreyt: proposal submitted & fingers crossed | 20:10 | |
audreyt | woot | ||
Limbic_Region | ok - well I hope things work out audreyt - demerphq is a pretty bright guy but hasn't found a compelling reason to get involved with p6 - I hope this pushes into the abyss | 20:11 | |
20:11
nothingmuch joined
20:13
dduncan joined
|
|||
svnbot6 | r8748 | audreyt++ | * Fix the HTML::Entity infinite loop as reported by darren duncan. | 20:13 | |
audreyt | Limbic_Region: I firmly believe a shared librules will be of use to all people | 20:14 | |
there should be more libraries like syck and pcre. | 20:15 | ||
stevan envisions a "Build your own Perl 6 - some assembly required" | |||
audreyt thinks they directly contribute to world peace | |||
stevan++ | |||
but, sleep. only 5 hrs left. | |||
integral | is syck written in C? | 20:16 | |
stevan | audreyt++ # code for world peace | ||
audreyt | integral: yes | 20:18 | |
dduncan | fyi, starting today and for a few days, I'll be doing a full backup of my computer, and installing Mac OS X 10.4.4 Tiger for the first time; until now, I was using 10.3.9 | ||
among other things, that should make installs of svk easier | |||
audreyt | woot | ||
dduncan | hopefully those filesystem indexes that Tiger will automatically do won't take up too much space | ||
audreyt waves and goes sleeping & | |||
gabor++ # picked my fav photo for osdc.org.il/ | |||
dduncan | fyi, I've had the install DVD since last april, but I was waiting until it became more stable, since my only comp is the machine I work on | ||
ingy | hi audreyt | 20:19 | |
audreyt | ingy: er, hi. you don't see me. I'm already sleeping | ||
dduncan | yes, sleep-talking | ||
ingy | want to share a hotel room Saturday night? ;) | ||
I'll show you my YAML if you show me yours | |||
dduncan | provocative, aren't you | 20:20 | |
ingy | I think I scared audreyt | ||
audreyt | (details already arranged in /msg ;)) | 20:21 | |
audreyt sleeps for real & | 20:22 | ||
ingy | we did our business in private | ||
audreyt | ingy: FWIW, I agree on UseHeader and UseVersion -- always use positive configs; and I agree on fallbacking to $YAML::* if $YAML::Syck* is not set. | ||
ingy: and I also agree to various other things that you may come up with -- if you get cycles, please just commit to the YAML-Syck repo. | 20:23 | ||
ingy | ok | ||
stevan | ingy: if I make it to tokyo can i see your YAML too? | 20:24 | |
ingy | stevan: got iSight? | ||
stevan | nope sorry :) | 20:25 | |
ingy | right here right now baby | ||
stevan | we could share a capsule hotel | ||
ingy | although I'm not sure if the lense is wide enough to capture it all | ||
stevan: yeah | |||
I really want to stay in a coffin | 20:26 | ||
=== Things to do before I die: | |||
* Sleep in a coffin | |||
* Threesome with Japanese twins | |||
lypanov | lol | 20:27 | |
ingy | (my little node to Austin Powers) | ||
grr. being a yamlist makes me type node when I mean nod | |||
svnbot6 | r8749 | audreyt++ | * fix a trivial pod error in MIME::Base64 | 20:34 | |
Limbic_Region | she fixes code in her sleep | 20:36 | |
dduncan | that's one explanation for her great speed | ||
hachi | I'm wondering about her interface, surely it can't be a keyboard because those are too slow. | 20:37 | |
Limbic_Region | seen chip | ||
jabbot | Limbic_Region: chip was seen 50 days 26 minutes 6 seconds ago | ||
20:38
Debolaz joined
20:39
elmex joined
|
|||
dduncan | now beginning smoke of 8749 | 20:54 | |
20:54
stevan_ joined
|
|||
svnbot6 | r8750 | stevan++ | PILN object repr types.pod | 21:03 | |
r8750 | stevan++ | - added section to address the concerns of robkinyon and to (hopefully) | |||
r8750 | stevan++ | clarify how these repr types will be used | |||
21:09
Debolaz2 joined
21:10
DaGo joined
21:12
husohuso joined
|
|||
leo_ | stevan_: $repr and repr type is totally misleading: $ python ... help(repr) | 21:16 | |
stevan_ | leo_: it is from S12, the first argument to CREATE() | 21:17 | |
21:17
Debolaz2 is now known as Debolaz
|
|||
leo_ | I know | 21:17 | |
stevan_ | leo_: I am not sure what else I should call it | ||
leo_ | it's not that common to deal with $repr that is deserves that short name | 21:18 | |
$opject_representation_internals | |||
s/p/b/ | 21:19 | ||
and if you really want to deal with that the type that name ;) | |||
m 2 c of course | 21:20 | ||
stevan_ | :) | 21:21 | |
21:24
Debolaz2 joined
21:30
\xe6var is now known as \xe6\x76\x61\x72
|
|||
dduncan | it appears that ext/Span/t/span.t or the file after it is also infinite looping | 21:40 | |
I'm debating whether to update the harness to do that timer kill thing on long running tests, though I'm not sure how hard it will be to do | |||
21:45
sub_chick joined
21:52
nothingmuch joined
22:04
patron joined,
Debolaz joined,
patron left
22:11
SamB joined
22:16
stevan_ is now known as stevan,
frederico joined
|
|||
svnbot6 | r8751 | Darren_Duncan++ | r2071@Darren-Duncans-Computer: darrenduncan | 2006-01-18 14:16:42 -0800 | 22:22 | |
r8751 | Darren_Duncan++ | in /util/yaml_harness.pl, updated run_test() to time how long each test takes and spit a warning saying so ... this can be a first step in adding granular timing information to smoke reports, and also determining a good kill timer wait to mitigate infinite loops | |||
22:25
Debolaz2 joined
|
|||
gaal | dduncan: tests.yml already has timing information. | 22:26 | |
dduncan | oh | ||
what is the best way to display this info while the test is running? | 22:27 | ||
gaal | what granularity of display do you want? | ||
test or file? | 22:28 | ||
dduncan | per test for now | ||
gaal | if file then line 247 | ||
dduncan | what I actually want to do is set a timer at the right place which will kill an individual test if it runs too long, and move on to the next one | 22:29 | |
I thought perhaps yaml_harness.pl was the place to do it | |||
gaal | individual test or file? | ||
dduncan | test file | ||
eg, one line item in the normal output | 22:30 | ||
gaal | yes, then run_test around that line can do it. | ||
dduncan | if the smoke framework already has the feature to limit time used, it should be turned on | ||
gaal | note that there are platform dependence issues here | ||
I don't think it does, but look at Test::Harness | 22:31 | ||
on which we perform live brain surgery | |||
(i.e., our copy is almost or maybe even entirely unmodified from an upstream version, but we make it do things it didn't think it'd ever do.) | 22:32 | ||
22:32
christo joined
22:34
christo joined
|
|||
svnbot6 | r8752 | stevan++ | Scribbling down the notes from todays discussion about built-in types, and | 22:37 | |
r8752 | stevan++ | the $repr issues created when they are subclassed. Very very very rough, I | |||
r8752 | stevan++ | will clean it up more later. | |||
22:41
frobnitz joined
22:42
stennie joined
|
|||
frobnitz | I'm sure this is a faq, but is there a way to do multi-line input in Pugs' interactive mode? | 22:43 | |
dduncan | if there is a way, I haven't discovered it | 22:51 | |
22:52
amv_ joined
22:55
nothingmuch joined
23:15
Debolaz joined
23:17
\xe6\x76\x61\x72 is now known as \xe6var
23:40
Debolaz2 joined
|