Camelia, the Perl 6 bug

IRC log for #perl6, 2006-01-18

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

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

All times shown according to UTC.

Time Nick Message
00:02 bsb left perl6
00:02 nothingmuch joined perl6
00:09 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 putter r8742.
00:09 svnbot6 r8742 | putter++ | Parser.hs - Improved hash recognition.  {("a"=>3),}.ref is again ::Hash, not ::Block.  Various failing tests now succeed.
00:09 svnbot6 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.
00:11 putter ?eval 3
00:11 putter luqui: ping? ;)
00:12 tewk putter: So
00:12 tewk opps what needs to be done to release, little stuff that is.  Fix the failing tests in make test ?
00:13 putter yes indeed
00:13 locksy joined perl6
00:13 * putter is building a clean pugs with intent of running  make smoke  on it.
00:15 Tman joined perl6
00:16 Debolaz joined perl6
00:17 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:19 putter 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:20 putter 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:23 putter 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 putter a new user, and explore" applies to docs and everything else as well.
00:24 putter makes sense?
00:25 gaal putter++
00:25 * gaal tries to sleep again
00:25 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 ?
00:25 tewk s/where/were/
00:26 * putter attempts to shed weariness in gaal's general direction
00:27 putter yes, I think Pugs.Run was the one I noticed.
00:33 putter 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
00:33 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.
00:33 putter :)
00:34 putter ah, that reminds me,
00:35 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:36 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:38 putter 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 putter ;)
00:39 putter looking...
00:39 Debolaz joined perl6
00:43 penk joined perl6
00:47 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).
00:48 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.
00:48 dduncan or the last few times it worked coincided with that
00:49 putter what platform?
00:49 dduncan but even when Pugs wasn't updated correctly, pugs_version.h WAS correct
00:49 dduncan darwin
00:49 putter oh, err, missing dependency?
00:49 dduncan why?
00:49 dduncan pugs still runs, but its internal version is wrong
00:50 dduncan 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
00:51 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 dduncan the latter file contained: #undef PUGS_SVN_REVISION
00:51 dduncan #define PUGS_SVN_REVISION 8742
00:52 dduncan but running ./pugs afterwards said its version was r8712
00:52 dduncan which is what it was the last time I built yesterday
00:53 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
00:54 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
00:55 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 ...
00:55 dduncan done
00:55 putter that was fast...
00:55 putter :)
00:56 putter 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
00:56 dduncan without doing anything else first
00:56 putter fine
00:56 dduncan now I will touch the version file and do it again
00:56 putter oh, why not do another
00:56 dduncan it should be fast since nothing changed
00:56 putter before touching
00:56 putter touching = changed
00:57 putter make uses date of modification, rather than contents, to indicate need for refresh
00:58 dduncan I added a space character to the version file, changing its file date, and am running make again but to log2
00:58 dduncan done
00:58 * putter want's dduncan's cpus
00:59 putter (and bus, and memory, and...)
00:59 dduncan this make was fast because it didn't do anything significant
00:59 dduncan a normal rebuild takes a good hour
00:59 dduncan and a smoke currently takes about 120 mins
01:00 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
01:00 dduncan or even 45 mins
01:00 putter hmmm.
01:01 dduncan fyi, the hardware is dual-1ghz PPC G4, ram is 768M
01:01 dduncan its about 3.5 years old
01:01 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 perl6
01:01 dduncan now running a diff showed no significant changes
01:02 dduncan and every run, even when no actual work to do, will regenerate src/Pugs/pugs_version.h
01:02 dduncan giving it a new date and such
01:02 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 perl6
01:03 Tman is now known as lovestoes
01:03 dduncan the machine didn't act like it was swapping ... er, that happens a bit on build, but not on smoke
01:04 dduncan anyway, on both of these logs, it says it skipped Pugs.Version
01:04 dduncan I don't think it is the file dates, but the file contents that determine this
01:04 dduncan or there is some intermediate file that wasn't getting updated
01:04 * putter runs touch test...
01:05 putter I ran
01:08 pasteling "putter" at 66.30.119.55 pasted "working make" (15 lines, 265B) at http://sial.org/pbot/15495
01:09 dduncan er, actually the make doesn't rewrite version.h, but regardless, I had touched it
01:09 dduncan I did a diff between my terminal scrollback and one of the log files, to compare the first make after update to the test
01:10 dduncan originally it said, but this was skipped the second time: Preprocessing library Pugs-6.2.10... Building Pugs-6.2.10...
01:10 dduncan originally it said, Compiling Pugs.Version, but skipped after
01:11 dduncan originally it compiled Pugs.Parser but skipped after
01:11 dduncan all else was skipped both times
01:11 lovestoes is now known as Tman
01:11 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:12 dduncan actually, the later one said Preprocessing library Pugs-6.2.10... Building Pugs-6.2.10...
01:12 dduncan too, but after the compile skips rather than before them
01:13 dduncan 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?
01:13 dduncan just a minute
01:14 dduncan when you say, "results", you mean the same summaries you nopasted, I assume
01:14 putter yes
01:15 dduncan its in progress
01:20 dduncan almost done
01:24 pasteling "dduncan" at 24.108.164.7 pasted "nonworking make" (15 lines, 1K) at http://sial.org/pbot/15496
01:24 dduncan okay, there you go
01:25 dduncan putter, if you have any other ideas, let me know
01:26 putter back
01:28 putter 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...
01:29 dduncan fyi, each run shows inconsequential diffs from others, such as files having manpages made in a different order
01:31 putter what version of ghc are you running?
01:31 putter and have you seen the INSTALL notes on darwin?
01:32 dduncan its GHC 6.4.1
01:33 dduncan 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
01:33 dduncan one thing that may be a factor is that my system clock was wrong during one update a few weeks ago
01:34 dduncan it was set to 1969 then
01:34 dduncan so some files may be saved wrong
01:34 dduncan however, I did a make realclean in the meantime
01:34 dduncan and the version periodically *does* update meanwhile
01:34 dduncan so I would have expected the wrong date to be a temporary ailment
01:35 dduncan 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 .
01:35 putter Do the logs show ghc trying to recompile Version.hs?
01:36 Debolaz joined perl6
01:36 dduncan none of the 4 I just did showed it recompiling Version.hs
01:37 dduncan in fact, it only does this when the version control number is different than version.hs
01:37 dduncan but its supposed to
01:37 dduncan only do that on a change
01:37 hcarty left perl6
01:37 dduncan regardless, the initial time after my update, it did recompile Pugs.Version
01:38 dduncan but something didn't happen after that
01:38 wilx joined perl6
01:39 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 dduncan and just below that it says "compilation IS NOT required"
01:39 dduncan not adjacently below
01:39 dduncan give me a minute
01:40 dduncan will nopaste something more useful ...
01:44 pasteling "dduncan" at 24.108.164.7 pasted "original log, showing inconsistent versions" (222 lines, 17.4K) at http://sial.org/pbot/15497
01:45 dduncan putter, look at that
01:45 dduncan it shows what actually happened (wrong) in the normal setting
01:45 dduncan normal when there actually was an update
01:45 dduncan and not just a faux update
01:46 dduncan this was all that happened before I started talking to you today about it
01:47 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".
01:48 putter oh, drats.  the fix of pugs with embedded parrot just means, at least on my box, I get to segfault. :(
01:48 putter at least ghc shares my pain: pugs: internal error: EVACUATED object entered! Please report this as a bug to glasgow-haskell-bugs@haskell.org.  Hey, and this one is replicable.  Reporting...
01:48 putter bah.  heisenbug.
01:49 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 dduncan is this what you suggest?
01:49 putter looking...
01:50 putter svk?  ah.  in svn its a trivial op.  svk less so.
01:51 audreyt rm -rf *; svk revert -R .
01:51 audreyt trivial enough :)
01:52 * audreyt spent far too much time reading up on IEEE 754/854/754r :/
01:52 audreyt and got nothing useful in return ;)
01:52 dduncan the svk commands are often similar to svn ones
01:52 dduncan on purpose
01:52 * putter recalls folks waiting long times for svk bootstraps.  still hasnt upgraded from svn himself.
01:52 dduncan okay, will wipe
01:53 dduncan 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".
01:53 putter "and dont really need to be"
01:53 audreyt putter: svk co http://svn.openfoundry.org/pugs/ and answer "h" to the "how many revisions you want to go back" :)
01:53 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 :)
01:54 putter :)
01:54 audreyt leo_: heh, how coincidal ;)
01:54 leo_ yeah
01:54 dduncan fyi, I actually just renamed the pugs checkout folder, made an empty folder in the old ones place, and am reverting into that
01:54 leo_ and I'm going bedwards now ;)
01:54 dduncan that's done
01:55 audreyt leo_: so it fails even with N registers?
01:55 audreyt i.e. not only I?
01:55 dduncan now remaking
01:55 leo_ audreyt: yes
01:55 audreyt leo_: okay... is there a p6i thread for it?
01:55 audreyt (i.e. what motivated this change?)
01:56 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"
01:56 putter oof.  but... where are the pretty pictures?
01:56 audreyt ah, tcl as usual.
01:57 Debolaz joined perl6
01:58 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
01:59 audreyt leo_: okay... here are 24 other cases to consider
01:59 audreyt but you should sleep first :)
01:59 leo_ I think, if you want to handle fancy things with 1/0 then just create your own PMC that does it
01:59 dduncan back in a bit
01:59 audreyt leo_: I think so too, and p6l is arguing what Perl6Num should do
01:59 svnbot6 r8743 | audreyt++ | * add PUGS_SMOKE_EXCLUDE_EXT env to run-smoke.pl
02:00 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
02:00 audreyt i.e. any operation that manufactures NaN normally is turned into exception
02:00 audreyt it seems terribly inconsistent to have NaNs in some cases and exceptions in some others
02:00 dduncan I, like, totally agree!
02:00 audreyt putter: export PUGS_SMOKE_EXCLUDE_EXT=1
02:01 leo_ @larries have to figure out some default behaviour
02:01 leo_ or refer to *one* spec
02:02 audreyt ...and fill in undefined bits of that spec
02:02 audreyt in any case, go sleep first, we'll figure it out :)
02:02 audreyt eventually.
02:03 Medvekoma joined perl6
02:04 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
02:05 leo_ yeah
02:08 leo_ I could live with a +Inf on the cash side for a while, though
02:11 Southen joined perl6
02:17 * audreyt goes to $job
02:20 * putter briefly considers a make test output postprocessor
02:20 putter (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.
02:20 putter But that's with rules unnecessarily broken.  Embedded still segfaults.
02:20 putter 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...
02:20 putter miles to go before we sleep^W release
02:20 putter hmm... why does builtins/perl.t expect  (\{mumble}) to be anything but a block?  missing invocation I think...
02:20 putter ah, rx:perl5// stringifies as {rule}, perl()ifies as \{rule}.  how unfortunate.
02:20 putter class A {}; A.perl
02:20 putter oops, wrong window
02:22 putter joined perl6
02:22 Debolaz joined perl6
02:27 Medvekoma joined perl6
02:33 putter audreyt: ping?
02:33 putter oh, hopefully (still) asleep.
02:41 audreyt putter: no, about to run t $job
02:42 obra  mm. $job
02:42 obra audreyt: alexmv just checked in a nice inversion. Now Jifty::Dispatcher calls mason. Your autohandler is free again
02:44 scook0 joined perl6
02:46 putter no biggy
02:46 audreyt woot!
02:46 svnbot6 r8744 | putter++ | t/builtins/perl.t
02:46 svnbot6 r8744 | putter++ | :todo<release> .perl on Rule objects.  Which sort of dont exist yet.
02:46 svnbot6 r8744 | putter++ | :todo<feature> .perl on recursive structures.  Unimplemented.
02:46 * audreyt pulls with real network (tm) instead of ozymandns
02:46 audreyt ok, taxi is here. gotta go. bbl &
02:46 putter &
02:47 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
02:47 dduncan will now update and rebuild, to see if it reflects 8744 or not
02:48 * putter has fingers crossed.  makse typng difficult
02:49 dduncan this update has no src/ changes, but it did say "Compiling Pugs.Version
02:49 dduncan okay, that's done, and pugs seems to report 8744
02:50 dduncan so for now at least, no problem!
02:50 putter :)
02:51 dduncan and there were no Makefile.PL changes either, which was good
02:52 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:54 Debolaz joined perl6
03:09 meppl guten morgen
03:16 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:25 macli joined perl6
03:25 macli left perl6
03:29 putter good, well, "morning".   good UTC wee hours of the morning.
03:29 Medvekoma joined perl6
03:30 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:47 putter http://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 scook0 joined perl6
03:48 putter Motivated by chromatic's http://www.perl.com/pub/a/20​06/01/12/what_is_perl_6.html
03:55 robkinyon seen stevan
03:55 jabbot robkinyon: stevan was seen 1 days 9 hours 15 minutes 59 seconds ago
03:55 robkinyon seen stevan_
03:55 jabbot robkinyon: stevan_ was seen 1 days 9 hours 22 minutes 8 seconds ago
03:57 dduncan now begun to smoke 8745
04:08 Debolaz joined perl6
04:09 scook0 joined perl6
04:10 pasteling "putter" at 66.30.119.55 pasted "output of r8742 make test" (1058 lines, 53.7K) at http://sial.org/pbot/15498
04:11 putter oh, amd64 FC3, external parrot, embedded perl5.
04:13 putter good night all &
04:13 putter good wee UTC hours of the morning?  just doesnt do it.
04:17 Amnesiac joined perl6
04:31 justatheory joined perl6
04:33 dduncan it appears we have an infinite loop in ext/HTML-Entities/t/entities.t now
04:33 dduncan top says pugs has been running 28 minutes straight now
04:33 dduncan or maybe its actually the file after that
04:34 dduncan I mean that "ext/HTML-Entities/t/entities.t" is the last line currently displayed of output
04:34 dduncan on hitting ctrl-c, it says: Could not run yaml harness: No such file or directory at util/run-smoke.pl line 62.
04:35 dduncan 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:36 dduncan in any event, many ext/ tests have been dying with "No such method" errors, as they have been for weeks
04:37 dduncan that's the largest outstanding problem with this release-to-be that I'm aware of
04:40 dolmans joined perl6
04:49 Debolaz2 joined perl6
04:54 imperator_ is now known as imperator
04:54 Debolaz joined perl6
05:03 audreyt dduncan: noted, will fix later tonight
05:03 audreyt (if none beats me to it)
05:07 evalbot_8745 joined perl6
05:11 audreyt ?eval $+x
05:11 evalbot_8745 Error: Undeclared variable: "$+x"
05:11 dduncan I hear you
05:12 audreyt cool :)
05:15 Debolaz Good morning people.
05:16 weibo1 joined perl6
05:16 audreyt Debolaz: hi
05:20 scook0_ joined perl6
05:29 dduncan good mawning
05:30 Debolaz Hmm.. *Tries lighttpd*
05:45 sili_ joined perl6
05:46 simcop2387 joined perl6
05:46 hobbs joined perl6
05:46 simcop2387 lol
05:46 sili_ hi frandz
05:46 Cryptic_K >.<
05:46 * Cryptic_K gest the popcorn?
05:46 Cryptic_K gets*
05:51 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 sili_ or infinite looping
06:01 elmex joined perl6
06:12 scook0__ joined perl6
06:24 dduncan if you're talking about the test suite
06:24 dduncan sili_
06:24 dduncan have the harness run each test in a separate process
06:25 dduncan and have an automatic kill signal sent to that process after a predetermined interval, such as 60 seconds
06:26 dduncan okay scripts should finish normally before that time, infinite ones will be killed
06:26 dduncan 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
06:26 dduncan I've seen it specifically on IIS back in 1999, and I'm sure Apache does it too
06:27 dduncan adjust from 60 seconds to an amount reasonably longer than the test would take, such as 10X its expected run time
06:28 dduncan sili_, does that answer your question?
06:30 sili_ dduncan: it makes me further believe the answer is "it can't reasonably be done"
06:30 sili_ thank you though
06:32 dduncan were you talking about the test suite, or some other circumstance?
06:32 dduncan fyi, pugs can catch certain kinds of kill signals and shut down gracefully
06:32 dduncan a process can also send a timer signal to itself
06:33 dduncan 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
06:33 dduncan the signal handler for that could then shut down gracefully
06:33 dduncan any language could do this
06:33 dduncan its simply an OS and/or interpreter feature
06:33 dduncan what do you want to do?
06:34 sili_ prevent and/or detect+stop infinite loops/recursion
06:35 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
06:35 dduncan as in the case of the test suite
06:35 sili_ no
06:35 dduncan I can't see this happening efficiently
06:36 dduncan pugs or whatever language could profile itself
06:36 dduncan and if the profile says something ran too much in a pattern resembling infinity, it could do something
06:36 GeJ joined perl6
06:36 dduncan but all those checks slow everything down
06:37 dduncan fine for debugging, but not otherwise
06:37 dduncan the timer system works better if you know the code is supposed to be short lived
06:37 sili_ which enforces my answer
06:37 dduncan like a test script, is meant to be short lived
06:38 GeJ greetings all
06:38 dduncan greetings one
06:42 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:43 gaal afk &
06:51 scook0__ joined perl6
06:53 sili_ hmm
07:02 dduncan however, we need to start somewhere reasonable
07:03 dduncan 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:04 hobbs left perl6
07:04 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:05 dduncan 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:13 Medvekoma joined perl6
07:15 Medvekoma joined perl6
07:23 dolmans i heard perl6 will have strict type declare, is that a mandatory?
07:23 Khisanth s/will/can/
07:24 dolmans Khisanth: do you mean type declare is just optionary?
07:25 Khisanth yes, if I am reading your question correctly :)
07:26 feng123 joined perl6
07:26 dolmans ok, thx.
07:26 nothingmuch joined perl6
07:27 simcop2387 Khisanth: oo neat that'd be alot of fun to have
07:30 nothingmuch hola
07:39 Medvekoma joined perl6
07:41 ingy hola nothingmuch
07:43 Cryptic_K joined perl6
07:45 feng joined perl6
07:52 canhope joined perl6
08:02 scook0__ joined perl6
08:10 iblechbot joined perl6
08:10 stennie joined perl6
08:11 Medvekoma joined perl6
08:24 nothingmuch hola ingy
08:34 Odin- joined perl6
08:36 scook0__ joined perl6
08:42 dduncan hola bothuvya
08:46 Cryptic_K joined perl6
08:53 feng123 joined perl6
08:56 scook0 joined perl6
09:20 kane_ joined perl6
09:22 scook0_ joined perl6
09:27 Cryptic_K joined perl6
09:31 Medvekoma joined perl6
10:04 scook0__ joined perl6
10:09 rantanplan_ joined perl6
10:17 Southen_ joined perl6
10:25 scook0_ joined perl6
10:32 rantanplan_ joined perl6
10:32 rantanplan_ joined perl6
10:33 rantanplan_ joined perl6
10:35 Medvekoma joined perl6
10:57 G2 joined perl6
11:20 myren joined perl6
11:20 myren PMC's vtables can be updated at runtime i presume?
11:20 myren thats how dynamic typing works i assume?
11:50 scook0_ myren: parrot questions are probably better asked in the parrot channel
11:50 scook0_ is now known as scook0
11:52 scook0 (you're more likely to find someone who actually knows the answer)
12:04 myren is that on a different irc server?
12:04 myren there's 1 person in #parrot and they are not an op
12:05 cognominal #parrot does live in irc.perl.org
12:05 cognominal or grou.ch if you have trouble connecting
12:16 cognominal I keep forgetting where the perl6 version scheme is documented :(
12:16 theorbtwo cognominal: You mean the pugs version scheme?
12:17 cognominal yes
12:22 pfenwick joined perl6
12:33 nothingmuch the roadmap?
12:35 theorbtwo docs/01Overview.html, search for roadmap.
13:00 kolibrie joined perl6
13:03 cognominal thx
13:09 iblechbot joined perl6
13:27 \xe6var joined perl6
13:33 binary42 joined perl6
13:45 stevan joined perl6
13:50 Southen joined perl6
13:52 r0nny joined perl6
13:54 r0nny joined perl6
13:59 Debolaz joined perl6
14:04 petdance joined perl6
14:08 Southen_ joined perl6
14:09 rodi joined perl6
14:09 lypanov joined perl6
14:12 sahadev joined perl6
14:24 joepurl joined perl6
14:24 lypanov is there a #parrot somewhere?
14:24 lypanov sorry, googled, found, ignore me
14:25 rafl lypanov: irc.perl.org
14:25 rafl lypanov: Oh, sorry. Ignore me.
14:25 * lypanov giggles
14:25 lypanov thanks anyway rafl :)
14:26 pfenwick left perl6
14:27 lypanov just in case anyone actually knows where to find chromatic
14:27 lypanov : http://www.perl.com/pub/a/2006/0​1/12/what_is_perl_6.html?page=3
14:27 lypanov has a bad link, to the phalanx project
14:27 lypanov which, nicely, via firefox
14:28 lypanov gets you to microsoft.com
14:32 rafl lypanov: It doesn't redirect to microsoft for me, but the link is broken, indeed.
14:33 lypanov rafl: probably just some weirdness in the dns i'm using
14:38 lisppaste3 joined perl6
14:40 movies1978 joined perl6
14:42 elmex joined perl6
14:44 xinming hmm, token doesn't explained well in synopsis. So, anyone here have a clue?
14:45 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
14:45 lypanov Khisanth: aha, magical firefox feature
14:45 GeJ more like a magical google feature
14:46 lypanov hehe
14:46 lypanov yeah
14:47 GeJ well it's a mix indeed...
14:47 lypanov is there a special channel for pugs or is this the canonical one?
14:47 Khisanth "ff is basically doing a search for http and hitting I'm Feeling Lucky"
14:47 Khisanth this is the one :)
14:48 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
14:48 lypanov whats the most usual frenzied chat time for the channel?
14:49 lypanov any given timezone or quite random?
14:49 lypanov i'm looking for a good time when i can ask questions to the core :)
14:49 theorbtwo When audreyt is doing pugs stuff, whenever that is.
14:49 theorbtwo ...but you might consider the perl6-compiler mailing list.
14:51 lypanov theorbtwo: k :)
14:51 lypanov theorbtwo: i'll 'hang' for the moment, if nothing turns up in a week i'll try the ml :)
14:51 lypanov thx for the info
14:52 xinming obra: yes.
14:52 theorbtwo What's your question?
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.
14:53 obra it's (iirc) the smallest unit one can parse soemthing into.
14:53 obra Others can likely give a more computer-sciencey definition
14:53 theorbtwo Well, not neccessarly the smallest unit one can, but the smallest unit one /does/.
14:53 theorbtwo 14:52 < xinming> obra: the synopsis doesn't have any detail on it.
14:53 theorbtwo 14:52 < xinming> token
14:53 theorbtwo 14:53 < obra> xinming: It's a pretty standard term when talking about parsing.
14:54 theorbtwo Er, sorry.
14:55 xinming the printable letter(include utf-8 character and ASCII) ?
14:56 theorbtwo Can you give us some context for what sort of token you're talking about?
14:56 xinming theorbtwo: in Synopsis...
14:56 xinming hold on
14:57 xinming Tokens (keyword: token) are rules that perform low-level pattern matching (and also enable rules to do whitespace dwimmery).
14:57 xinming and for the reason, I can't find the word dwimmery in Dictionary. :-/
14:58 theorbtwo Do What I Mean... -ery.
14:59 xinming :-(
14:59 xinming Oh, I know...
14:59 xinming DWIM mean Do what I mean.
14:59 xinming how about the keyword?
15:03 theorbtwo I haven't a clue.
15:03 xinming theorbtwo: Did you read the synopsis? It's in S06,
15:04 xinming in 'Subroutines and other code objects' part.
15:05 lypanov keyword == a word in the language
15:05 lypanov the keyword is token
15:05 lypanov e.g "token blah"
15:05 lypanov could be some code
15:05 lypanov no real idea, haven't read it, just guessing
15:06 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
15:07 lypanov where can i find the synopsis?
15:07 theorbtwo http://dev.perl.org/perl6/doc/synopsis.html
15:09 theorbtwo 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
15:09 theorbtwo Hola, ingy.
15:09 obra    ingy!
15:09 ingy mind if I refactor your code?
15:09 ingy hi obra
15:09 theorbtwo My code?  I'm not sure I still have more then 5 lines on a blame...
15:10 ingy I meant the Royal Your
15:11 lypanov theorbtwo: basically the question is, how do you expect to make it fast?
15:17 theorbtwo Ah.
15:17 theorbtwo That needs guys more core then me, at least for some bits.
15:17 theorbtwo For other bits: GHC is constantly getting faster, or at least introducing methods that we can use to get faster.
15:18 vel__ joined perl6
15:26 petdance left perl6
15:37 xinming joined perl6
15:37 hexmode joined perl6
15:41 Eimi joined perl6
15:45 lypanov theorbtwo: yeah, efficiency is my only real concern these days
15:45 lypanov 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 perl6
16:00 lucass joined perl6
16:10 kanru joined perl6
16:20 rafl joined perl6
16:25 stevan audreyt: ping
16:26 * stevan thinks maybe he has figured out the $repr issues which have gone warnocked on p6l
16:26 stevan but I would like to get a sanity check from you before I code anything
16:30 Qiang joined perl6
16:32 audreyt stevan: pong!
16:33 stevan audreyt: :)
16:33 audreyt submit your sanity for inspection now :)
16:33 stevan class finalization
16:33 * audreyt just woke up from an awkwardly-timed nap... 00:33am here
16:33 stevan but in a very limited way
16:33 stevan thats almost like going to sleep at a normal time...
16:34 stevan 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
16:34 Qiang 9-5!
16:34 audreyt well, more like 11-7
16:34 stevan :)
16:34 Qiang that would be a flexible schedule :)
16:34 audreyt but go on :)
16:35 stevan so, lets examine Array for a moment in isolation
16:35 stevan Array does List
16:35 stevan correct?
16:35 stevan (List being a role which provides the more "functional" things like map, grep, reduce, etc)
16:35 stevan Array is a role itself
16:36 stevan I think it is possible to describe the Array role completely leaving only postcircumfix:<[]> (or whatever that is) undefined
16:37 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
16:37 audreyt (fully defined role moonlighting as a class)
16:37 stevan :)
16:38 stevan so ,... we still dont have a class(Array) only a role(Array)
16:38 stevan but before I define class(Array) I want to describe how role(Array) could be used
16:38 stevan role(Array) can be done by other classes, which will give them Array like behavior
16:39 stevan this is an alternative to subclassing Array
16:39 audreyt subclassing Array is insane anyway</mumble>
16:39 stevan s/(Array)/class($1)/
16:39 audreyt still. :)
16:39 audreyt (but go on)
16:39 stevan it is insane, but only because of the $repr type I think
16:39 audreyt exactly because of $repr.
16:40 stevan so in all cases where you would want to subclass class(Array), you can do role(Array)
16:40 stevan the result will be exactly the same
16:40 stevan since the local classes methods will override those in role(Array)
16:40 stevan so, since $repr presents an issue for Array, we finalize it
16:41 stevan s/(Array)/class($1)/
16:41 stevan then you cannot subclass it anyway :)
16:41 stevan but you can still have all the same benifits as if you could
16:41 audreyt except for MI.
16:41 stevan because you have a role(Array) which is a 99.99999% implementation
16:41 audreyt which is the insane part
16:41 audreyt so we conveniently sidestep that problem
16:42 stevan well I think the MI issue can be solved uing the role
16:42 eric256 joined perl6
16:42 eric256 left perl6
16:42 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?
16:42 audreyt it's all flat
16:42 lypanov audreyt: (wrt performance and pugs/perl6/parrot)
16:42 audreyt lypanov: now.
16:42 stevan if you have to ,.. you create: class MyArray { does Array } and subclass that
16:42 Debolaz joined perl6
16:42 lypanov audreyt: mind if i go privmsg?
16:43 audreyt lypanov: only if you publicly explain the reason :)
16:43 lypanov or create #perl6-performance?
16:43 lypanov audreyt: to not wreck the conversaion you're already having :)
16:43 lypanov s/ion/t&/
16:43 chris2 joined perl6
16:43 audreyt lypanov: separate tabs will wreck my mind :)
16:43 stevan lypanov: we are used to multiple threaded conversation
16:43 stevan :)
16:43 audreyt stevan: agreed.
16:43 stevan par for the course in #perl6
16:44 audreyt stevan: but I agree the default impl methods does not belong in a class
16:44 lypanov audreyt: hehe. okay :P
16:44 audreyt stevan: so, what is preventing us from filling in the missing <[]>?
16:44 stevan audreyt: ideally we put as much as possible into the role, it will make things much more portable
16:45 stevan 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
16:45 stevan s/Role/role(Array)/
16:45 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
16:45 audreyt stevan: aye
16:45 lypanov audreyt: however, over the last 6 months i've found that efficiency is unfortunately just too much of a concern for many applications
16:46 * 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?
16:46 lypanov stevan: not perl5? ;)
16:46 * integral agrees.  perl6.clean? == no
16:46 audreyt surely lypanov doesn't mean clean as Clean :)
16:46 justatheory joined perl6
16:46 audreyt now, "less cruft", that's an agreeable definition
16:46 * stevan tries babelfish for a translation of "clean"
16:47 audreyt lypanov: ok. I can only speak for one person in the pugs team
16:47 audreyt which is myself
16:47 stevan audreyt: the idea is that we create a class(Array) which implements the <[]> part, and then finalize that class
16:47 lypanov audreyt: any opinion of anyone forming the core is more than enough :)
16:47 lypanov (as in, the people most likely to talk with code)
16:48 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_
16:48 stevan lypanov: keep in mind that pugs is not the "official" version, only the most complete to date :)
16:48 stevan audreyt: both the role(Array) and class(Array)?
16:48 audreyt the most incomplete too
16:48 lypanov stevan: yeah, as i said, i'm more interested in people that are actually working towards the goal :)
16:48 audreyt as there is only one ;)
16:49 stevan :D
16:49 audreyt stevan: yes, per the strange S12 duckroling definition, that's my impression. anything wrong with that?
16:49 stevan not at all
16:49 lypanov stevan: try using babelfish to go via at least 3 languages ;)
16:49 audreyt lypanov: okay. pugs's goal is not to create a fast VM
16:49 audreyt we do have two VMs in our tree
16:49 audreyt both written in haskell
16:50 audreyt but the goal is to go for a clean semantics
16:50 lypanov audreyt: the goal is to prototype the language?
16:50 integral ugh, is it possible to make Pugs.Run small again yet using all the new PIL serialisation stuff?
16:50 audreyt efficiency is okay but secondary
16:50 audreyt integral: yes! yes!
16:50 audreyt integral: will happen _right_ after 6.2.11
16:50 integral yay!
16:50 audreyt integral: I just don't want to delay the release again for it
16:50 stevan audreyt: I think we can make the $repr=nil classes deal with does() and is() in an approriate way
16:50 audreyt stevan: that'd fit larry's mind
16:50 integral And so the old evaluator will get killed soon too?
16:51 lypanov audreyt: but the goal of pugs is to be written in perl6 itself, yup?
16:51 audreyt integral: s/killed/cannibalised/
16:51 lypanov audreyt: (thats the more important aim of mine)
16:51 audreyt lypanov: yes. however, our newer VM is really tiny
16:51 stevan audreyt: okay I will document this in docs/notes
16:51 audreyt and reimplementing it in Perl6 (to form a metacircular evaluator) is trivial
16:51 audreyt stevan: woot!
16:51 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
16:52 * stevan loves metacircularity :)
16:52 rantanplan_ joined perl6
16:52 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/
16:52 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.
16:53 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
16:53 audreyt lypanov: http://svn.openfoundry.org/p​ugs/src/PIL/Native/Parser.hs http://svn.openfoundry.org/pugs/doc​s/notes/piln_object_repr_types.pod
16:54 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
16:54 audreyt well, perl5.6 actually
16:54 audreyt well, also "make"
16:54 integral stevan: I think because it'd be really, really too slow to start in perl6 without having got part way there already
16:54 audreyt that should be all
16:55 stevan integral: just leave it running for a day or two :)
16:55 lypanov audreyt: excellent.
16:55 r0nny joined perl6
16:55 * 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
16:56 audreyt lypanov: to complicate the matter, "the final target" means any<Haskell Perl5 JavaScript Parrot>.
16:56 audreyt # http://pugs.blogs.com/photos/visi​olization/simplecompilation.html
16:57 \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
16:57 audreyt lypanov: performance is handled in two parts: the underlying runtime, and the codegen
16:58 audreyt lypanov: the codegen needs to generate as-fast-as-possible code, using whatever trick allowed in the underlying runtime.
16:58 audreyt lypanov: so a simple PIL construct can be expressed with nasty hacks in eg. the JavaScript codegen.
16:59 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
17:00 audreyt lypanov: okay... in that case you want to read S12 a bit
17:00 audreyt http://search.cpan.org/dist/Perl​6-Bible/lib/Perl6/Bible/S12.pod
17:01 audreyt lypanov: perl6's metamodel is pluggable; we implement a rather complex default model for the user
17:01 audreyt lypanov: but those are all implemented in term of primitive PIL^N constructs, namely representation types and prim calls
17:02 r0nny joined perl6
17:02 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 :)
17:02 audreyt our current boot code is here: http://svn.openfoundry.org/pu​gs/src/PIL/Native/Bootstrap/
17:02 audreyt yes, what steven said
17:02 stevan but its a whole lot of fun :P
17:03 audreyt now, the challenge is to run the prim calls/reprs efficiently in the underlying runtime
17:03 bsb joined perl6
17:03 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 ... ?
17:03 stevan robkinyon: nope
17:04 robkinyon of course not. that would be too simple and logical. :-/
17:04 audreyt robkinyon: http://svn.openfoundry.org/pugs/doc​s/notes/piln_object_repr_types.pod
17:04 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
17:05 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
17:05 stevan but that is not my descision
17:05 robkinyon so, we're still doing $repr === Some-Class-that-has-$repr==p6opaque?
17:05 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?
17:05 audreyt lypanov: we ask the real VM people -- leo_ and friends -- to make those fast
17:05 audreyt lypanov: p6 operates under separate compilation
17:06 audreyt (and linking)
17:06 audreyt lypanov: so each individual .pm undergoes the same loop
17:06 audreyt that is not the case in the v1 (Exp) runcore, but will become as such in v2 (PILN)
17:06 stevan robkinyon: no, I think $Larry[0] still needs to clarify his envisioned usage of diff repr types
17:06 audreyt (previously I tried GhcBinary but it breaks horribly; now we have YAML, those can store our "byte code")
17:07 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?
17:07 lypanov audreyt: ah, but the vm is still fairly high level in any case for parrot etc, so problem avoided basically.
17:07 stevan robkinyon: explain more please
17:07 lypanov audreyt: i'll have to read the svn tonight, idea is interesting
17:07 audreyt lypanov: well, hold on for the "etc" here... parrot may be more lower level than you think :)
17:08 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
17:08 audreyt lypanov: you can try "make pil" in the current source tree to play with the v2 VM
17:08 lypanov audreyt: (as my ruby interpreter is already approaching that and not nearly finished)
17:08 robkinyon in other words, bless( \(my $x) => 'Foo' )
17:08 audreyt lypanov: I thinkit's <1k LOC
17:08 robkinyon except more intelligently
17:08 robkinyon with all the appropriate overloads.
17:08 stevan robkinyon: yes, essentially, but it also responds to the methods and introspection/reflection as an instnace of the class would
17:08 lypanov audreyt: given your blog and the word "isight" can i assume it'll compile on a ppc/osx box?
17:09 audreyt lypanov: sure
17:09 lypanov excellent
17:09 robkinyon So, since this is something that sounds reasonably common, why not put it as part of the MOP?
17:09 robkinyon .meta, .id, .repr, .as_bit, .as_str, and .null
17:09 stevan robkinyon: what would .null return?
17:09 robkinyon and let the MOP do all the crazy overloading for you instead of hiding it in the $repr
17:09 lypanov audreyt, stevan, et al: hope to chat again when i've gained a bit more understanding :) thx for the info :)
17:10 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 :)
17:10 robkinyon presumably it would be a singleton in the default
17:10 stevan robkinyon: what is the use of that?
17:10 robkinyon what is the use of $repr == ""?
17:10 audreyt lypanov: thanks for the question :)
17:10 stevan robkinyon: those are created as singletons in the boot code
17:10 robkinyon why can't Foo.null be the same way?
17:10 lypanov stevan, audreyt: :)
17:10 * lypanov runs off to catch his bus
17:11 stevan robkinyon: I see what you are missing
17:11 robkinyon I was sure it was something. :-)
17:11 stevan there are 2 different "Foo"s
17:11 nnunley joined perl6
17:11 stevan ^Foo which is the metaclass instance
17:11 stevan and ::Foo which is an instance of ^Foo with the nil $repr
17:12 stevan both are created at boot time
17:12 audreyt because larry thinks ::Int.isa(::Int).
17:12 robkinyon what is the terminology for the class 'Foo' ?
17:12 stevan ::Foo
17:12 stevan ^Foo is the metaclass instance itself
17:12 robkinyon so, $foo = ::Foo->new ?
17:12 stevan (I think)
17:12 stevan at least this week
17:12 robkinyon ok
17:12 stevan yes
17:12 robkinyon so, ::Foo.meta == ^Foo ?
17:13 stevan yes
17:13 stevan basically what you were saying about "shouldnt it be a singleton" is correct
17:13 robkinyon So, why is ::Foo a null instance of ^Foo ?
17:13 audreyt robkinyon: because ::Foo has no member data
17:13 stevan so that ::Foo.isa(::Foo)
17:13 audreyt class Dog { has $.tail; }
17:13 audreyt but ::Dog.tail is not there
17:13 robkinyon ok
17:13 audreyt as ::Dog is nil not opaq
17:14 audreyt s/is/reprs/
17:14 stevan which means it will blow up easily
17:14 audreyt compile time too
17:14 stevan when you try to access attributes
17:14 stevan which is what Larry wanted
17:14 robkinyon So, what I'm proposing is if ^Foo.null == ::Foo, then ::Foo.null == $foo where $foo ~~ undef
17:14 stevan so that the distinction between class methods and instnace methods is made by whether they attempt attr access or not
17:15 robkinyon ahhh! that's a bad distinction
17:15 audreyt robkinyon: we all agree!
17:15 * stevan points at $Larry
17:15 audreyt but that's what S12 explicitly says!
17:15 robkinyon S12 is wrong
17:15 audreyt it's not wrong, any more than perl5 is wrong
17:15 audreyt perl5 is like that.
17:15 * stevan wonders if robkinyon got his LISP book yet
17:15 audreyt Dog->tail  vs Dog->new->tail
17:15 * robkinyon will be picking up Advanced Lisp at the library today, but is waiting for Basic Lisp. :-)
17:16 robkinyon how do I do virtual methods then?
17:16 robkinyon virtual instance methods?
17:16 robkinyon but, that's beside the point
17:16 audreyt method meth {...}
17:16 stevan all methods are virtual
17:16 audreyt right.
17:16 audreyt there is no nonvitual methods.
17:16 robkinyon but meth(), in that case, is a class method
17:16 robkinyon because it doesn't attempt attr access
17:16 audreyt nope.
17:16 stevan robkinyon: it /can/ be a class method
17:16 audreyt the {...} means it's not a method ;)
17:17 audreyt 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
17:17 robkinyon what now?
17:17 audreyt robkinyon: you get what you deserve.
17:17 robkinyon or, vice-versa
17:17 stevan :D
17:17 audreyt exactly as in p5.
17:17 robkinyon Why should i have to know the internals of the method in Foo just to create it in Bar?
17:18 robkinyon 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,..
17:18 robkinyon That violates liskov
17:18 * stevan thinks liskov is used to being violated by now
17:18 * audreyt chortles
17:19 robkinyon It also violates polymorphism
17:19 audreyt robkinyon: S12 is by far not nominal class-based object orientation.
17:19 * stevan points at $Larry again
17:19 audreyt robkinyon: most of what you are describing is now moved to roles
17:19 robkinyon my Dog $fido should be able to be assigned a Chihuahua, regardless of how the methods are defined
17:20 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
17:20 robkinyon i think a p6l post is in order
17:20 audreyt robkinyon: you can assign it a Chihuahua _instance_
17:20 robkinyon audreyt: How do you figure? I can't necessarily call $fido->tail
17:21 audreyt why not?
17:21 robkinyon if it's a Dog, I can't call tail(), but if it's a Chihuahua, I can
17:21 robkinyon because Dog defined tail() without attr access and Chihuaha defined it with attr access
17:21 audreyt huh.
17:21 stevan robkinyon: then you cant call Chihuahua.tail()
17:22 robkinyon Liskov is violated
17:22 stevan but you can call Dog.tail()
17:22 audreyt but Chihuahua.new.tail() is fine
17:22 robkinyon that's -EXACTLY- my point
17:22 audreyt so is Dog.new.tail()
17:22 audreyt so ths only failing case is Chihuahua.tail
17:22 audreyt which I think is outside the common use of liskov
17:22 audreyt which only governs instances
17:22 robkinyon audreyt: So I can call class methods on instances?
17:22 audreyt robkinyon: surely
17:22 audreyt (again, just like p5)
17:22 robkinyon that's rather counter-intuitive
17:22 stevan and instance methods on classes, assuming they dont touch attrs
17:22 robkinyon don't bring p5 up in this situation
17:23 robkinyon 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...
17:23 robkinyon It shoudn't be
17:23 audreyt ...but sure.
17:23 robkinyon There's a reason that Class:: is the most populated TLN on CPAN
17:23 * stevan points widly at $Larry again
17:23 stevan @Larry even
17:23 robkinyon The reason is that people don't like P5 OO
17:23 robkinyon at all
17:23 audreyt robkinyon: p6's object model is really prototype based, in all seriousness.
17:24 robkinyon LOL
17:24 robkinyon you wanna fill her in on the joke, stevan?
17:24 audreyt it just pretends that it has classes and roles but shipping a bunch of default prototypes and have the compiler use them
17:24 stevan robkinyon: fear not, we will have our own "internal" copy of Bootstrap.pil ;P
17:24 audreyt s/but/by/
17:24 robkinyon if it was prototype-based, then $repr would not be an issue
17:24 robkinyon everything else would be the metamodel
17:24 theorbtwo robkinyon: But what are the prototypes made of?
17:25 stevan theorbtwo: magic pixie dust of course
17:25 robkinyon theorbtwo: a black box that responds to get(name) and set(name,value)
17:25 robkinyon it's purely a struct that self-organizes
17:25 robkinyon everything else is based on the fact that blocks are first-class
17:26 robkinyon 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 :)
17:26 robkinyon ok
17:26 robkinyon then everything else is purely userland sugar
17:26 robkinyon right?
17:27 audreyt well, sugar for the userland
17:27 stevan well... there is a layer of meta-land sugar first,.. but yes
17:27 audreyt not sugars written in userland
17:27 audreyt but yes.
17:27 robkinyon so, the entire $repr question is, for the most part, moot?
17:27 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?
17:27 audreyt robkinyon: $repr question is saying the you are allowed to choose your black box
17:28 audreyt 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
17:28 robkinyon neither is ""
17:28 robkinyon those should be implemented through roles and methods, not $repr
17:28 audreyt we can (and imho should) make them compatible
17:28 stevan robkinyon: dont think of p6array as being a repr implemented with ^Array
17:28 robkinyon i think my argument is that only unboxed types should be allowed as $repr
17:29 audreyt "" should just reject all set() prim calls
17:29 audreyt robkinyon: oh! we are in vehement agreement.
17:29 audreyt problem is, some unboxed types have boxed counterparts.
17:29 robkinyon because only unboxed stuff is compatible with foreign data structures
17:29 audreyt and those may have to carry an unbox around
17:29 robkinyon ok
17:29 * audreyt ponders the expression "carry an unbox around"
17:29 robkinyon what does that have to do with $repr?
17:29 audreyt that unbox has a $repr
17:30 audreyt surely
17:30 audreyt but the boxed variant is opaque
17:30 robkinyon no ... that unbox can -be- a $repr
17:30 audreyt yes.
17:30 robkinyon it doesn't have a $repr
17:30 audreyt the box is an opaque that hasa unbox that is a $repr.
17:30 theorbtwo I thought unboxed things didn't have a repr -- that's the definition of unboxed.
17:30 theorbtwo Right, OK.
17:30 integral what is --external?
17:30 audreyt so far so good?
17:30 robkinyon one of the attributes within the boxed will be the unbox, but the $repr for the boxed is still p6opaque
17:31 robkinyon 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 :)
17:31 audreyt robkinyon: however, array _instances_ carry around an unbox that _be_ the native p6array repr.
17:31 robkinyon so, why is Array being considered as a possible $repr?
17:31 stevan robkinyon: it is not
17:32 theorbtwo s/_be_/_is_/?
17:32 robkinyon imho, if you're using a $repr != p6opaque, then you should be forced to deal with internals
17:32 theorbtwo Why is there a native p6array repr?  Why not just build it out of a p6opaque?
17:32 stevan robkinyon: I think that $repr = 'p6array' does not mean "use an instance of ::Array as your $repr"
17:32 audreyt integral: it's linking haskell modules with pugs
17:32 audreyt integral: not actively used anymore; should probably be revived/revised
17:33 audreyt integral: s/pugs/pugs interpreter/
17:33 robkinyon stevan: That distinction needs to be blessed by $Larry[0]
17:33 stevan robkinyon: I know,..
17:33 audreyt theorbtwo: er, speed.
17:33 audreyt theorbtwo: p6opaque => ParrotObject; p6array => ResizablePMCArray
17:33 theorbtwo OK, I can buy that.
17:33 audreyt theorbtwo: same argument for any other unbox.
17:33 stevan theorbtwo: what would the Array hold in it's p6opaue?
17:33 integral ah
17:34 robkinyon ok ... i think i'm more comfortable now with alternate $repr
17:34 stevan class Array { has @array; } is a little to cyclical
17:34 audreyt cool :D
17:34 robkinyon :-p
17:34 theorbtwo stevan: What can you do with a p6array?
17:34 stevan theorbtwo: exactly :)
17:34 audreyt theorbtwo: http://svn.openfoundry.org/pugs/doc​s/notes/piln_object_repr_types.pod
17:34 theorbtwo Er, with a p6opaque.
17:34 robkinyon i do have to bitch on p6l re: the class method/instance method distinction
17:34 audreyt theorbtwo: has_attr, get_attr, et_attr
17:34 stevan robkinyon: good luck :P
17:34 audreyt s/et_attr/set_attr/
17:34 audreyt theorbtwo: and nothing else
17:35 audreyt robkinyon: we tried :)
17:35 stevan theorbtwo: using the p6array repr type (which is not a $repr which is an instance of ::Array)
17:35 robkinyon And I think someone needs to push Larry for a confirmation that only unboxed can be used as $repr
17:35 stevan you can do many other things which make sense with arrays
17:35 robkinyon does this mean that there's a p6nil unbox?
17:35 audreyt robkinyon: yes.
17:35 audreyt which is conveniently named "" in the enum
17:35 audreyt which may be too cute.
17:36 robkinyon That's too cute
17:36 stevan robkinyon: I am hoping that larrys silence means he is pondering the $repr issue
17:36 theorbtwo You can build an array from that.  Each element goes in an attr named __whatever_$index.
17:36 audreyt robkinyon: if you think it's too cute... fix it in the boot code
17:36 robkinyon every $repr should start with "p6" and then immediately describe the storage mechanism
17:36 robkinyon feh
17:36 robkinyon i don't code ... i just bitch from the sidelines. :-)
17:36 stevan theorbtwo: but then each instance of array has a varying number of attrs
17:36 theorbtwo You could build it with just a single string if you needed to -- that's all memory itself is.
17:37 theorbtwo And this is a problem?
17:37 * robkinyon & # lunch and wife needs the computer
17:37 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
17:37 audreyt robkinyon: oh well... I tried. I'll change it to p6nil
17:37 stevan theorbtwo: if you wanna implement arrays as string,.. go for it :P
17:38 stevan 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.
17:38 theorbtwo I can deal with that.
17:39 stevan theorbtwo: pretty much
17:39 stevan 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
17:39 theorbtwo IWFM.
17:39 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?
17:39 stevan theorbtwo: I think it introduces some problems, but none that cannot be solved
17:39 stevan audreyt: ok, I will make a note of em
17:42 theorbtwo Um, is it "", "p6nil", or "p6undef"?  I think I'd prefer the last...
17:42 stevan p6-larrys-crazy-class-is-undef-thingy
17:42 audreyt undef carries an exception object
17:43 audreyt the S12 term is "empty"
17:43 theorbtwo Hm, OK.
17:43 nothingmuch joined perl6
17:43 audreyt p6empty better than p6nil?
17:43 theorbtwo ...and I think I need to read S12 again.
17:43 theorbtwo Probably.
17:43 theorbtwo Donno.
17:43 theorbtwo Need more sugar before I slump over at keyboard.
17:44 theorbtwo Probably more water too.
17:44 audreyt I'll stick with p6nil then.
17:44 stevan audreyt: so looks like there will be a nice Tokyo hackathon
17:44 * theorbtwo wonders why he's still typing and not getting up.
17:44 audreyt stevan: indeed
17:44 * stevan wonders if he can get a TPF travel grant
17:44 audreyt I've just decided not to submit one :)
17:44 * theorbtwo wonders if TPF should get a travel agent.
17:44 svnbot6 r8746 | audreyt++ | * Tidy up unused imports and uncovered base cases in Text.Parser.*
17:44 svnbot6 r8746 | audreyt++ |   and in PIL.Native.*.
17:45 audreyt so go ahead and submit one for you :D
17:45 * stevan ponders it
17:45 stevan is there any type of deadline or such for that kind of stuff?
17:45 * stevan has never even read the grant page on tpf.org
17:45 audreyt yes, because their next meeting is february
17:46 stevan ah
17:46 audreyt so you need to submit, like, now
17:46 stevan ok,..
17:46 stevan any tips?
17:46 audreyt you can then come back with me to OSDC.tw and speak here
17:46 audreyt and then we can hack more :D
17:47 * stevan ponders a pan-Asian tour
17:47 svnbot6 r8747 | audreyt++ | * the very-cutely-named "" repr type is now known as "p6nil" instead,
17:47 svnbot6 r8747 | audreyt++ |   per suggestion from the apparently-not-into-cuteness robkinyon++.
17:47 stevan :D
17:47 stevan audreyt++ #nice commit message
17:48 audreyt ingy: cplan.kwiki.org is down so I can't retrieve my grant proposal (not even sure it's there)
17:50 ingy audreyt: ok
17:52 audreyt stevan: that's what I submitted:
17:52 ingy audreyt: this wiki has long since been decommissioned
17:52 audreyt http://perlcabal.org/~autrij​us/tmp/followup_proposal.txt
17:53 audreyt ingy: that's okay, I found my proposal
17:53 stevan audreyt: cool, thanks :)
17:53 ingy ok, I still have the wiki archived on disk if you need something
17:53 ingy hi stevan
17:53 stevan hey ingy
17:54 ingy are you coming here?
17:54 nothingmuch ingy: you keep pinging me
17:54 stevan ingy: if TPF will pay for it :)
17:54 nothingmuch do you need something?
17:54 * ingy pets nothingmuch
17:54 ingy just to touch you
17:54 nothingmuch ah
17:54 ingy it's been a while ;)
17:54 nothingmuch hehe
17:55 * stevan thinks ingy is lonely in .tw
17:55 * nothingmuch inflates a copy of nothingmuch for ingy
17:55 ingy wheee :D
17:55 nothingmuch i have to go help mum handle her PC
17:55 nothingmuch have fun with me while I'm gone
17:56 ingy stevan: do you have a $job these days?
17:56 stevan ingy: yes I do, same one actually
17:57 ingy will they let you work from here?
17:57 ingy that's what I do
17:57 stevan ingy: we are totally virtual too, but my marriage is not :P
17:58 ingy stevan: yeah you gotta sever those ties man
17:58 audreyt bring your family here then :D
17:58 * stevan thinks audreyt might not know what she would be getting into
17:58 audreyt ingy: tsk
17:58 audreyt stevan: mmm?
17:58 ingy stevan: yeah you can carry your family around on a little scooter like everyone else here
17:59 ingy it's fun
17:59 stevan 3 year old twins are a force to be reckoned with
17:59 audreyt oh wow, didn't know they are twins
17:59 stevan ingy: I will discuss it with my wife :P
17:59 ingy the divorce?
17:59 audreyt or rather, that a plural context was expected
17:59 ingy stevan++
18:00 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
18:00 stevan ingy: quite true
18:03 Debolaz joined perl6
18:09 * stevan is trying to figure out what the DELIVERABLES for this grant would be
18:09 theorbtwo stevan: Speaches at $conferences?
18:09 theorbtwo s/Speaches/Talks/
18:10 stevan theorbtwo: I am not sure I want to commit myself to a talk
18:10 stevan maybe thorough design documents would be enough
18:11 stevan and a reference implementation in PIL^N :)
18:12 audreyt and a reference codegen in Perl5. :)
18:12 audreyt (unless you want to do PIR instead)
18:12 audreyt s/in/to/
18:12 audreyt s/codegen/runtime to support the codegen/
18:13 stevan hmm
18:13 Limbic_Region joined perl6
18:13 audreyt i.e. bring Perl6::ObjectSpace up to date
18:13 stevan yes
18:13 audreyt it's a waste to have it not recognize PILN
18:13 stevan thats a possibility
18:13 audreyt and it's the fastest route for p5 targetting
18:13 audreyt so add it anyway and we'll figure it out :)
18:13 pasteling "stevan" at 67.186.136.119 pasted "grant proposal draft" (23 lines, 1K) at http://sial.org/pbot/15504
18:14 stevan hows that
18:14 audreyt change "The Object ModetaModel to "The Object model (with Classes, Roles, etc)"
18:15 stevan ok
18:15 randomity joined perl6
18:15 audreyt s/langauge/language/
18:15 stevan yeah I will spell check it before i send :)
18:16 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 audreyt (j/k)
18:16 stevan :D
18:16 stevan I would like to get this $$ so I think I will stick with my version :P
18:17 audreyt do mention the perl5 runtime -- also include links to the P6-ObjSpace and docs in the pugs tree
18:17 stevan ok
18:17 audreyt otherwise fine
18:17 audreyt best luck
18:24 Limbic_Region 2 p6 related posts at the Monastery today
18:24 Limbic_Region http://perlmonks.org/index.pl?node_id=523949
18:25 Limbic_Region http://perlmonks.org/index.pl?node_id=523956
18:26 bsb Is there a log of recent irc history?
18:28 audreyt bsb: irc.pugscode.org
18:29 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)
18:29 bsb I missed the context to lypanov's ruby plan
18:29 audreyt seems lypanov is doing RbRb
18:29 audreyt the equiv of PyPy
18:30 G2 joined perl6
18:32 bsb Yeah, I see now.  Thought it might have been more Ronie
18:32 bsb As in Ponie
18:32 \xe6var audreyt: rbrb? where?
18:33 Debolaz2 joined perl6
18:33 bsb \xe6var: http://www.lypanov.net/xml/​development/rubydium/nanovm
18:33 bsb I think
18:35 * audreyt ponders the Ronin project
18:35 audreyt nice name
18:36 bsb I wrote "Ronie" but Ronin is mush better
18:36 bsb s/mush/much/
18:37 bsb I'm currently breaking ruby's gc trying to scope the project out
18:38 robkinyon audreyt: I"m into cuteness, just not when it impedes understanding of something that's a bone of contention. :-)
18:40 putter joined perl6
18:40 stevan audreyt: when is the Tokyo Hackathon scheduled for? pre-conf? post-conf?
18:41 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 perl6
18:43 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. :(
18:43 stevan A12 is for amusement purposes only IIRC
18:43 stevan robkinyon: stick to the new S12
18:43 robkinyon http://dev.perl.org/perl6/doc/design/syn/S12.html ?
18:44 stevan yes
18:44 * audreyt goes findking some snack... bbiab
18:46 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
18:46 robkinyon gah
18:47 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:52 bernhard joined perl6
18:55 stevan audreyt: ping
18:55 elmex joined perl6
18:55 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 putter well. two
18:55 putter thoughts?
18:56 stevan putter: what is the value of breaking it up this way?
18:57 mandarin_ joined perl6
18:57 putter fast and easy response to design spec changes.  so hierarchy changes are localized, rather than being pervasive in multi/method signatures.
18:58 stevan I am not sure it pays (in the long run) to optimize for design spec changes :)
18:58 stevan and I am not sure how this would affect the method signatures
18:58 putter also permits easily creating variant implementations.
18:59 stevan putter: you can create variant implementations with plain role composition
19:00 stevan putter: the value I can see in this approach is to get more code reuse using smaller parts
19:01 * putter ponders
19:01 stevan putter: an important piont about the p6 in p6 effort is that it is a clean reference implementation
19:02 stevan it really should not attempt to cater to the weaknesses and strengths of each different possible runtime
19:02 stevan each runtime should address that on it's own
19:03 stevan at least this is my feeling on the subject
19:04 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 Debolaz joined perl6
19:05 stevan putter: I feel much the same way
19:06 stevan putter: there is no clear spec for this yet, and all the peices currently fit together only with much hand-waving
19:07 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:08 stevan putter: optimize for correctness
19:08 stevan or fun
19:08 stevan but nothing else
19:08 stevan otherwise it will surely be short lived
19:08 stevan 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
19:09 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:11 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 http://www.flickr.com/photos/17029646@N00
19:11 stevan PerlJam: congrats
19:11 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
19:11 stevan PerlJam: twins,.. you are in for one hell of a ride ;)
19:11 putter intractable/undefined good quality choice now.  /end
19:11 putter ;)
19:12 rantanplan_ joined perl6
19:12 PerlJam stevan: been more sleep deprived than usual this past week.  We'll see how long I can keep it up :-)
19:13 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,..
19:13 * putter considers making a p6 object space _factory_. :)   but then, that's what macros are for...:)
19:13 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
19:14 stevan putter: I think maybe you need to lay your larger vision out first
19:15 stevan I have trouble following your reasoning at times, and I really think that is because I am not seeing *your* "BIG PICTURE"
19:15 stevan all I tend to see is *my* BIG PICTURE, and I can't see where they both fit yet
19:16 khisanth_ joined perl6
19:17 \xe6var PerlJam: my condolences;)
19:17 \xe6var boy/girl ?
19:18 khisanth_ is now known as Khisanth
19:18 PerlJam aye
19:19 \xe6var cool;)
19:20 Limbic_Region grats PerlJam
19:20 marmic joined perl6
19:24 audreyt stevan: pong?
19:25 stevan audreyt: any idea when and how long the hackathon would be?
19:25 audreyt stevan: the tokyo one?
19:25 stevan yes
19:25 * putter takes a moment to look at photos...
19:25 putter PerlJam: congrats and sympathy.  seeing siblings, at least the nature of your near-term future wont come as a _complete_ surprise. ;)
19:25 putter PerlJam: re "We'll see how long I can keep it up", 4+ years? ;)
19:26 putter 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 putter 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".
19:26 putter 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.
19:26 putter stevan: could you summarize how much is working or not in piln?
19:27 stevan putter: PILn really needs some more tests, and then Array needs work I think
19:27 stevan putter: I have not looked at it in about a week, so I would have to check and see
19:27 putter is there sanity?
19:27 stevan putter: sanity? whats that?
19:28 * 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.
19:28 robkinyon A month?!?
19:28 * lypanov returns
19:29 PerlJam yes, one month
19:29 PerlJam it may be longer with these two as they are slightly premature
19:29 stevan PerlJam: no waking up for food?
19:29 * robkinyon wonders if PerlJam takes the RubberChicken approach to infant sleep habits.
19:29 PerlJam robkinyon: what's that?
19:30 lypanov hit with a rubber chicken?
19:30 robkinyon It's known as the RubberMallet approach in some states
19:30 chris2 oh oh, lypanov is joining the dark sides too ;-)
19:30 PerlJam stevan: maybe once, but usually my wife will feed  them well before putting them to bed for the night.
19:30 audreyt stevan: probably the week before March 29
19:30 lypanov bsb: interestin'
19:30 stevan audreyt: ok
19:30 audreyt stevan: no concrete plan yet
19:30 lypanov bsb: skip the nanovm bit. nanovm is just 800 lines of crappy vm code
19:31 lypanov bsb: rubydium is the actual goop
19:31 PerlJam robkinyon: you've some strange ideas.  (I knew this before reading your posts to p6l ;-)
19:31 stevan audreyt: understood.
19:31 * 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...
19:31 putter s/they/we/
19:32 stevan audreyt: I suppose I dont need anything concrete for the grant though
19:33 putter lypanov: what do you think of metaruby etal?
19:33 lypanov yoyo chris2
19:33 lypanov chris2: yeah, what the hell, ruby2 is gonna suck anyway
19:33 lypanov putter: metaruby or ruby2c?
19:33 chris2 lypanov: i was refering to #haskell, actually }:-)
19:33 lypanov oh, lol
19:34 putter metaruby.  though the two are tangled.
19:34 audreyt stevan: yea
19:34 bsb thank lypanov
19:34 lypanov putter: whats metaruby?
19:34 putter ah, looking for url..
19:34 chris2 lypanov: zenspiders attempt
19:34 chris2 (nuff said :P)
19:34 lypanov chris2: thats not metaruby
19:34 lypanov thats ruby2c and "metaruby" :P
19:34 chris2 um, yes it is
19:34 chris2 ahh :)
19:34 lypanov metaruby is thingies... whats his name...
19:35 chris2 well, matju did a metaruby too, but that was totally different
19:35 lypanov that quebecois guy
19:35 khisanth_ joined perl6
19:35 lypanov exactly
19:35 * lypanov wonders how to spell quebecois
19:35 chris2 it was a reimplementation of the core classes in ruby
19:35 robkinyon PerlJam: I'll take that as a compliement. :-)
19:35 lypanov chris2: *nod*
19:35 robkinyon lypanov: You need the circumflex under the 'c'. :-)
19:35 lypanov thats the only mistake i made?
19:35 lypanov w00t!
19:36 * lypanov grins
19:36 lypanov putter: anyways. thoughts on the zenspider stuff?
19:36 lypanov putter: its crap :P
19:36 lypanov putter: the entire idea is flawed
19:36 chris2 it could work, but it will be crap, yes ;-)
19:37 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?
19:38 putter http://www.zenspider.com/La​nguages/Ruby/MetaRuby.html , but more: http://blog.zenspider.com/ right-side categories MetaRuby, ParseTree, Ruby2C (and maybe more?).
19:38 lypanov bsb: so you're hacking up a replacement gc?
19:39 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
19:39 lypanov bsb: hehe. whats ronie then?
19:39 bsb I'm trying to understand ruby's implementation
19:40 bsb Ronie is just a nice acronym
19:40 khisanth_ is now known as Khisanth
19:40 putter yes, there is also an old an inactive-for-years MetaRuby on... raa.  http://raa.ruby-lang.org/project/metaruby/
19:40 lypanov aye
19:40 bsb Would be like http://www.poniecode.org/
19:41 bsb Maybe not as difficult as ruby seems very clean internally
19:42 chris2 seems ;)
19:42 putter bsb: yes, the implementation is nice.
19:42 lypanov considering there are still gc bugs popping uo...
19:44 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 putter I can't speak to memory management.
19:44 chris2 at least ruby problems are comparatively easy to localize
19:47 putter http://odeo.com/audio/306696/view Eric Hodel talks about MetaRuby  (haven't watched it myself)
19:49 putter http://glu.ttono.us/articles/2005/10/14/metaruby
19:50 lypanov putter: metaruby as per the current ideas of the project leaders is just.. meh
19:50 lypanov putter: it can not possibly be efficient
19:57 hachi joined perl6
19:58 Limbic_Region seen pmichaud
19:58 jabbot Limbic_Region: pmichaud was seen 203 days 40 minutes 46 seconds ago
19:58 Limbic_Region hmm
19:59 putter seen pmichaud_
19:59 jabbot putter: I havn't seen pmichaud_, putter
19:59 audreyt pmichaud is I think tied up in $job according to the last two cabal phone conference minutes
20:00 putter ah
20:03 Limbic_Region right - I was just looking for contact info
20:03 Limbic_Region demerphq (from PerlMonks) has once again expressed moderate interest in PGE
20:04 Limbic_Region he is the guy that made the trie patch in the p5 regex engine for alternation in bleedperl
20:05 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 audreyt (or to Perl5, but I think C is the way to go)
20:05 audreyt libpge
20:05 Limbic_Region I will tell him you are interested
20:05 audreyt or just librules
20:06 Limbic_Region AFAIK, he is not IRC savvy
20:06 audreyt is he in .de?
20:06 audreyt if he'll be in GPW, we can work in realspace.
20:07 Limbic_Region IIRC yes
20:07 Limbic_Region I just /msg'd him
20:08 Limbic_Region frankfurt, germany - so yes (unsure of the GPW though)
20:08 Debolaz joined perl6
20:08 audreyt yeah, I think I stayed in his place once
20:10 stevan audreyt: proposal submitted & fingers crossed
20:10 audreyt woot
20:11 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 nothingmuch joined perl6
20:13 dduncan joined perl6
20:13 svnbot6 r8748 | audreyt++ | * Fix the HTML::Entity infinite loop as reported by darren duncan.
20:14 audreyt Limbic_Region: I firmly believe a shared librules will be of use to all people
20:15 audreyt there should be more libraries like syck and pcre.
20:15 * stevan envisions a "Build your own Perl 6 - some assembly required"
20:15 * audreyt thinks they directly contribute to world peace
20:15 audreyt stevan++
20:15 audreyt but, sleep. only 5 hrs left.
20:16 integral is syck written in C?
20:16 stevan audreyt++ # code for world peace
20:18 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
20:18 dduncan among other things, that should make installs of svk easier
20:18 audreyt woot
20:18 dduncan hopefully those filesystem indexes that Tiger will automatically do won't take up too much space
20:18 * audreyt waves and goes sleeping &
20:18 audreyt gabor++ # picked my fav photo for http://osdc.org.il/
20:18 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
20:19 ingy hi audreyt
20:19 audreyt ingy: er, hi. you don't see me. I'm already sleeping
20:19 dduncan yes, sleep-talking
20:19 ingy want to share a hotel room Saturday night? ;)
20:19 ingy I'll show you my YAML if you show me yours
20:20 dduncan provocative, aren't you
20:20 ingy I think I scared audreyt
20:21 audreyt (details already arranged in /msg ;))
20:22 * audreyt sleeps for real &
20:22 ingy we did our business in private
20:22 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.
20:23 audreyt 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
20:24 stevan ingy: if I make it to tokyo can i see your YAML too?
20:24 ingy stevan: got iSight?
20:25 stevan nope sorry :)
20:25 ingy right here right now baby
20:25 stevan we could share a capsule hotel
20:25 ingy although I'm not sure if the lense is wide enough to capture it all
20:25 ingy stevan: yeah
20:26 ingy I really want to stay in a coffin
20:26 ingy === Things to do before I die:
20:26 ingy * Sleep in a coffin
20:26 ingy * Threesome with Japanese twins
20:27 lypanov lol
20:27 ingy (my little node to Austin Powers)
20:27 ingy grr. being a yamlist makes me type node when I mean nod
20:34 svnbot6 r8749 | audreyt++ | * fix a trivial pod error in MIME::Base64
20:36 Limbic_Region she fixes code in her sleep
20:36 dduncan that's one explanation for her great speed
20:37 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
20:37 jabbot Limbic_Region: chip was seen 50 days 26 minutes 6 seconds ago
20:38 Debolaz joined perl6
20:39 elmex joined perl6
20:54 dduncan now beginning smoke of 8749
20:54 stevan_ joined perl6
21:03 svnbot6 r8750 | stevan++ | PILN object repr types.pod
21:03 svnbot6 r8750 | stevan++ | - added section to address the concerns of robkinyon and to (hopefully)
21:03 svnbot6 r8750 | stevan++ | clarify how these repr types will be used
21:09 Debolaz2 joined perl6
21:10 DaGo joined perl6
21:12 husohuso joined perl6
21:16 leo_ stevan_: $repr and repr type is totally misleading: $ python ... help(repr)
21:17 stevan_ leo_: it is from S12, the first argument to CREATE()
21:17 Debolaz2 is now known as Debolaz
21:17 leo_ I know
21:17 stevan_ leo_: I am not sure what else I should call it
21:18 leo_ it's not that common to deal with $repr that is deserves that short name
21:18 leo_ $opject_representation_internals
21:19 leo_ s/p/b/
21:19 leo_ and if you really want to deal with that the type that name ;)
21:20 leo_ m 2 c of course
21:21 stevan_ :)
21:24 Debolaz2 joined perl6
21:30 \xe6var is now known as \xe6\x76\x61\x72
21:40 dduncan it appears that ext/Span/t/span.t or the file after it is also infinite looping
21:40 dduncan 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 perl6
21:52 nothingmuch joined perl6
22:04 patron joined perl6
22:04 Debolaz joined perl6
22:04 patron left perl6
22:11 SamB joined perl6
22:16 stevan_ is now known as stevan
22:16 frederico joined perl6
22:22 svnbot6 r8751 | Darren_Duncan++ |  r2071@Darren-Duncans-Computer:  darrenduncan | 2006-01-18 14:16:42 -0800
22:22 svnbot6 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 perl6
22:26 gaal dduncan: tests.yml already has timing information.
22:26 dduncan oh
22:27 dduncan what is the best way to display this info while the test is running?
22:27 gaal what granularity of display do you want?
22:28 gaal test or file?
22:28 dduncan per test for now
22:28 gaal if file then line 247
22:29 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 dduncan I thought perhaps yaml_harness.pl was the place to do it
22:29 gaal individual test or file?
22:29 dduncan test file
22:30 dduncan eg, one line item in the normal output
22:30 gaal yes, then run_test around that line can do it.
22:30 dduncan if the smoke framework already has the feature to limit time used, it should be turned on
22:30 gaal note that there are platform dependence issues here
22:31 gaal I don't think it does, but look at Test::Harness
22:31 gaal on which we perform live brain surgery
22:32 gaal (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 christo joined perl6
22:34 christo joined perl6
22:37 svnbot6 r8752 | stevan++ | Scribbling down the notes from todays discussion about built-in types, and
22:37 svnbot6 r8752 | stevan++ | the $repr issues created when they are subclassed. Very very very rough, I
22:37 svnbot6 r8752 | stevan++ | will clean it up more later.
22:41 frobnitz joined perl6
22:42 stennie joined perl6
22:43 frobnitz I'm sure this is a faq, but is there a way to do multi-line input in Pugs' interactive mode?
22:51 dduncan if there is a way, I haven't discovered it
22:52 amv_ joined perl6
22:55 nothingmuch joined perl6
23:15 Debolaz joined perl6
23:17 \xe6\x76\x61\x72 is now known as \xe6var
23:40 Debolaz2 joined perl6

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs