Camelia, the Perl 6 bug

IRC log for #perl6, 2005-04-30

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:00 * Shillo just updated. rev 2500, nice, round number. :) Hmm, so far new breakage in math/int and io_in_for_loops
00:00 Juerd theorb: Doesn't COMMITTER include all necessary bits, such as IMPATIENCE and LAZINESS and HUBRIS and CLUE?
00:00 * Limbic_Region is running make test on 2500 now
00:00 Shillo And all t/data_types
00:01 * Shillo still has flaky hardware. So this could really be bad compile.
00:03 * Limbic_Region had a fair amount more failures than usual
00:03 Limbic_Region (3 subtests UNEXPECTEDLY SUCCEEDED), 33 subtests skipped.
00:03 theorb Autrijus said when he gave me a metacommitter bit that I should give anybody who demonstrated a willingness to produce patches a committer bit.
00:03 Limbic_Region Failed 38/234 test scripts, 83.76% okay. 153/4668 subtests failed, 96.72% okay.
00:04 theorb Schwern recently made todo be ignored except in release builds.
00:05 Limbic_Region yeah
00:05 Limbic_Region I saw that
00:06 Shillo (3 subtests UNEXPECTEDLY SUCCEEDED), 15 subtests skipped.
00:06 Shillo Failed 45/234 test scripts, 80.77% okay. 145/3667 subtests failed, 96.05% okay.
00:06 Shillo Lots of scripts died on me, though.
00:06 theorb Hm, that's not good.
00:07 Shillo t/syntax/single_quoted_str​ings...............dubious
00:07 Shillo        Test returned status 0 (wstat 11, 0xb)
00:07 Shillo Same for multi_sub,
00:07 Shillo And 09-dash-uppercase-c
00:08 Shillo *sigh* This kinda sucks. I need a new CPU before I can tell for sure that these really failed.
00:08 * Shillo essentially doesn't trust his build of ghc, in the first place.
00:09 theorb Oh, wstat 11... that'd be segfault, I think, which seems unlikely.
00:09 Shillo *** Error: Cannot cast into Hash: VRef <Array>: NonTerm (MkPos "t/subroutines/sub_return_values.t" 209 4 209 29) at t/subroutines/sub_return_values.t line 209, column 1-63
00:10 theorb Works for me, shillo.
00:11 Shillo Can I rerun an individual test?
00:11 theorb The easy way is PERL6LIB=./blib6/lib ./pugs t/subroutines/sub_return_values.t
00:12 * Shillo actually tries rebuild/retest
00:12 Shillo Just to see exactly how nondeterministic this is.
00:12 Shillo Computer shops open in 7 hours... ;)
00:12 Shillo (2 am here)
00:12 * Limbic_Region prefers to copy Test.pm to .
00:12 Limbic_Region but different strokes for different folks
00:13 * Limbic_Region is trying to verify a bug ATM
00:13 theorb On a saturday morning, Shillo?
00:13 * Shillo nods.
00:14 Shillo My favorite time for the component raids. :)
00:14 Shillo But I prolly won't, to be honest.
00:14 Shillo Because I still have this annoying problem of not wanting to move to Athlon 64 just yet.
00:14 Limbic_Region ahhh - I did find a bug
00:15 Shillo And if I buy a new Athlon XP just now, well...
00:15 Shillo Limbic_Region: about sub_return_values.t ?
00:15 Limbic_Region no
00:15 Shillo Oh.
00:15 theorb Oh, you think your CPU is toasted?
00:16 * Limbic_Region needs to figure out how to fix it though
00:16 Limbic_Region his bug that is
00:17 Shillo theorb: I -know-. :)
00:17 Shillo theorb: Once its temp reaches 60, it goes x-eyed.
00:17 Shillo (Celsius)
00:18 theorb Ah.
00:18 theorb Stick more fans on the case, so it doesn't do that?
00:19 Shillo theorb: Won't help much, it's 20-30 degrees above ambient.
00:19 * Shillo has the vintage. Palomino, the room-heater.
00:19 theorb Ah.
00:20 Limbic_Region ok - bugs fixed now I just need to remember how to check something in
00:22 theorb svn ci
00:22 Limbic_Region theorb - I remember that part
00:22 Limbic_Region I just don't remember how to mark it as being needed
00:22 Limbic_Region svn save <file?
00:22 theorb Unless it's a new file, you don't need to.
00:22 Limbic_Region svn save <file>
00:22 Limbic_Region ahhh
00:22 theorb If it is, svn add filename
00:22 Limbic_Region gotcha
00:23 Limbic_Region so it will just magically no what file I modified?
00:23 Shillo But do svn up, make sure it still builds if it pulled some other changes, then svn diff, and review to make sure you don't commit more than you wanted.
00:23 Limbic_Region Shillo - I just modified a test
00:25 Limbic_Region ok - committed
00:25 Limbic_Region and I am off
00:25 Limbic_Region TTFN all - have a great weekend
00:25 Limbic_Region has quit IRC ()
00:27 Shillo sub_return_values still fails the same way.
00:28 Shillo Failed 45/234 test scripts, 80.77% okay. 154/4603 subtests failed, 96.65% okay.
00:28 Shillo Fewer segfaults, in different places. Well, got my answer. Can't use the machine for testing, really.
00:31 jabbot pugs - 2501 - Fixed broken test in t/statements/next.t
00:33 bloves has joined #perl6
00:33 bloves has quit IRC (Client Quit)
00:34 bloves has joined #perl6
00:40 larsen has quit IRC ("later")
00:42 metaperl has quit IRC (" The IRC Client of the Gods! -> http://www.hydrairc.com <- HydraIRC")
00:48 Shillo Later, all.
00:48 Shillo has quit IRC ("Leaving")
00:51 broquaint has quit IRC ("Chatzilla 0.9.68a [Firefox 1.0.3/20050414]")
00:59 wilx has quit IRC (Connection reset by peer)
01:00 wilx has joined #perl6
01:09 _metaperl has quit IRC (Read error: 110 (Connection timed out))
01:10 theorb_ has joined #perl6
01:15 castaway has joined #perl6
01:27 theorb has quit IRC (Read error: 110 (Connection timed out))
01:28 castaway_ has quit IRC (Read error: 110 (Connection timed out))
02:02 theorb_ OK, time for sleep.
02:02 theorb_ has quit IRC ("leaving")
02:03 scook0 has joined #perl6
02:03 bloves has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 rootmj has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 kungfuftr has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 tcliou has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 Lopo has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 crysflame has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 Juerd has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 plasmabal has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 misc has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 cognominal has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 wolverian has quit IRC (orwell.freenode.net irc.freenode.net)
02:03 sorje has quit IRC (orwell.freenode.net irc.freenode.net)
02:04 bloves has joined #perl6
02:04 wolverian has joined #perl6
02:04 misc has joined #perl6
02:04 cognominal has joined #perl6
02:04 Juerd has joined #perl6
02:04 rootmj has joined #perl6
02:04 kungfuftr has joined #perl6
02:04 tcliou has joined #perl6
02:04 Lopo has joined #perl6
02:04 plasmabal has joined #perl6
02:04 sorje has joined #perl6
02:04 crysflame has joined #perl6
02:11 jabbot pugs - 2502 - More type signatures on top-levels.
02:12 Lopo has quit IRC (Read error: 60 (Operation timed out))
02:12 bloves has quit IRC (Read error: 60 (Operation timed out))
02:16 Lopo has joined #perl6
02:19 bloves has joined #perl6
02:28 Lopo has quit IRC (Read error: 60 (Operation timed out))
02:34 justatheory has quit IRC ()
02:50 Lopo has joined #perl6
02:51 Z15 has joined #perl6
02:52 Z15 has left
03:23 booyaa has joined #perl6
03:28 elmex has quit IRC ("leaving")
03:59 bloves has quit IRC (Read error: 54 (Connection reset by peer))
04:10 justatheory has joined #perl6
04:30 bloves has joined #perl6
04:44 kelan has joined #perl6
04:47 booyaa has left
05:01 justatheory has quit IRC ()
05:09 scook0 has quit IRC ("Leaving")
05:40 kelan has quit IRC ("!")
05:52 saorge{PuLa} has joined #perl6
05:54 saorge has quit IRC ("Leaving")
06:10 autrijus theorbtwo forgot to check in util/munge_haddock.pl :-/
06:19 Aankhen`` has joined #perl6
06:21 jabbot pugs - 2503 - * repair mandel.p6 compilation to parrot
06:25 bloves has quit IRC (Read error: 60 (Operation timed out))
06:26 gaal good morrow.
06:31 autrijus hey gaal.
06:35 gaal hey. i saw you committed some fixes for position - some things were is different places from where i was hacking
06:36 autrijus yeah
06:36 autrijus position annotation is now just like context annotation
06:36 gaal i couldn't make sense of that unfortunately ;-)
06:36 autrijus instead of tackled on the statement structure
06:36 autrijus and statement is just a simple linked list
06:37 autrijus so where we had
06:37 autrijus Statements [(Exp1, Pos1), (Exp2, Pos2), (Exp3, Pos3)]
06:37 autrijus we now have
06:38 autrijus Stmts (Pos Pos1 Exp1) (Stmts (Pos Pos2 Exp2) (Pos Pos3 Exp3))
06:38 autrijus and now all tokens can have their own positions
06:38 autrijus including Syn and App
06:38 autrijus and the position is now a range instead of just the beginning pos
06:38 autrijus see the data definition for Pos
06:40 gaal hmm, that also makes possible that idea i had about annotating literal whitespace, no?
06:40 gaal (for making mad Eclipse-like IDEs)
06:40 autrijus sure
06:41 autrijus you can annotate a Noop with Pos
06:41 autrijus for example
06:41 autrijus or add Syn "#"
06:41 autrijus for comments
06:41 gaal looking at data Exp now.. Syn stands for syntax?
06:42 autrijus yeah
06:42 autrijus please add comments
06:42 autrijus and check them in:)
06:43 gaal application / syntax / context / position / lexical pad / symbol / statements / primitive / value / variable / parentheses / non term? :)
06:44 autrijus yeah :)
06:44 autrijus non term == parse error
06:44 autrijus Parens is currently not used in normal parsing
06:44 autrijus otherwise all correct
06:44 gaal what does Syntax mean then? how is it an *object* in the AST?
06:45 autrijus Syn means something that can not be expressed as an App
06:45 autrijus like
06:45 gaal oh, like a block or a sub?
06:45 autrijus Syn "block" [...block body...]
06:45 autrijus Syn "=" [lhs, rhs]
06:45 gaal gotcha :)
06:45 autrijus basically, anything that involves non-normal reduction order
06:45 autrijus i.e. anything call-by-name
06:45 autrijus or stranger than that
06:47 gaal so eg, it can represent a class definition, where traits can come in the signature or in the body?
06:47 autrijus aye
06:48 gaal Is App the whole applicaiton, or a current compilation unit?
06:48 gaal (does it matter?)
06:49 autrijus App is just a function application.
06:49 autrijus :D
06:49 gaal ah, so what represents the top level?
06:49 autrijus function($invocant: $argument)
06:50 autrijus there's no toplevel marker
06:50 autrijus a toplevel is just an Exp like anything
06:50 gaal like not having volume letters. good! :)
06:50 autrijus yeah :)
06:50 autrijus good analogy, that
06:55 gaal this is futurish, but how can a parser deal forgivingly with errors? again using the Eclipse example, when it encounters a NonTerm, it often (not always) can skip ahead until it manages to synchronize and keep parsing successfully, only marking eg one or two lines as errors.
06:55 gaal i mean, code is not generallt self-synchronizing like utf-8 is
06:58 autrijus I have no idea.
06:59 autrijus maybe instead of parsefail
06:59 autrijus we always return NonTerm
06:59 autrijus then the upper parsing unit can carry on.
06:59 autrijus so e.g.
06:59 autrijus print((3 +), 5)
06:59 autrijus will be
06:59 autrijus App "&print" [] [NonTerm (...failure...), Val (VInt 5))]
07:00 autrijus that will let us report on multiple syntax errors too
07:00 autrijus which may or may not be a win
07:00 autrijus (I think it's a win)
07:00 autrijus woot, I think I just accidentally speeded up pugs again.
07:00 gaal ...since so often it's the first that causes the later? *nod*
07:00 gaal lol
07:00 gaal you keep saying that :)
07:01 autrijus it's not like I can help it :)
07:01 autrijus commit your comments
07:01 autrijus so I can merge?
07:01 gaal one sec
07:04 gaal (beh, got into a conflict, sec)
07:05 madhouse has quit IRC ()
07:06 revdiablo has quit IRC ("Reconnecting")
07:06 revdiablo has joined #perl6
07:09 gaal r2504
07:11 justatheory has joined #perl6
07:11 jabbot pugs - 2504 - Add comment explaining Exp data types
07:12 autrijus ok, I'm committing mine
07:16 autrijus done as r2508
07:16 autrijus I wonder if it actually makes things faster.
07:17 gaal if smoke works, we'll find out soon :)
07:17 gaal r2496 - 221 sec on my box
07:18 gaal assuming no significant changes in thests, etc...
07:19 gaal perhaps we need a more stable benchmark, if anyone's interested in writing one.
07:21 autrijus I usually just use mandelbrot
07:21 autrijus but it's not typical
07:21 jabbot pugs - 2505 - * "make optimised" is now OK too
07:21 jabbot pugs - 2506 - * $_ defaulting now uses the lexical $_
07:21 jabbot pugs - 2507 - * `for @a { ... }` is now always parsed
07:21 jabbot pugs - 2508 - * Add strictness to core monad and objec
07:22 gaal i guess smoke isn't typical either, because it heavily biases compilation and other startups.
07:22 gaal uh, tests are b0rken :(
07:23 gaal oh, no it may be my tree is diryt, sec
07:23 skew has joined #perl6
07:24 autrijus hey
07:24 skew hi
07:24 gaal yeah, false alarm, i had leftover hacks in Lexer.hs
07:24 autrijus skew: so "make smoke" dies?
07:24 skew okay, so I've got Test::TAP::Model installed, but make smoke can't find it
07:25 gaal do you have several perl5s on your system?
07:25 skew and I know absolutely nothing about perl or pugs
07:25 autrijus you need to run "Makefile.PL"
07:25 autrijus using the perl that you installed T::T::M with.
07:25 skew I got that far
07:25 autrijus then "make smoke"
07:25 skew I'll look for spare copies of perl
07:25 obra how goes?
07:25 obra mischan,
07:26 skew how would I check if some perl interpreter can see T:T:M?
07:26 skew I typed perl, now I've got blank space
07:27 gaal skew: perl -MTest::TAP::Model -e1
07:27 skew If you all haven't guessed, I'm coming from Haskell-land.
07:27 gaal you should get back to the shell w/o an error message.
07:27 skew okay, that works
07:28 skew does Makefile.PL remember which perl it was run with somehow?
07:28 gaal yes: it generates a Makefile (no .PL) that's keyed to it.
07:28 skew everything seems to refer to 5.8.6
07:28 skew which is the perl that just found T:T:M, according to your test
07:29 gaal we use perl 5.x in building pugs
07:29 gaal that's all ok
07:29 skew progress - now it's Test::TAP::HTMLMatrix. Okay, I know how to fetch stuff from CPAN
07:29 Corion has joined #perl6
07:30 gaal that one has a few dependencies - use CPAN's dep feature to help you with that.
07:30 gaal skew, what OS are you on?
07:31 Corion Good morning - yesterdays backlog shows what I think is the cause for the scoping error with $_ in $_="Goodbye"; for "Hello" { say }; say; - but I won't be online for the next 8 hours and didn't find out how to remove the problem :)
07:31 skew what's the option for the? force would be useful too. The manpage doesn't mention much
07:31 skew Well, I hit y enough times that it's grabbed everything
07:31 skew hey, looks like it's making smoke
07:32 skew oops, YAML.pm
07:32 skew is there any way to get all the stuff I need at once?
07:32 gaal that also works :) how you get the CPAN shell to d/l things automatically for you depends on whether you're using the regular one or CPANPLUS.
07:32 skew I think I've just got the plain one
07:33 gaal that's an excellent question, skew :) one hopes we'll get this right in perl6-land.
07:33 skew Will I hit new dependencies halfway through a smoke run?
07:34 gaal http://forum2.org/gaal/pugs/smoke-cygwin.html # looks like a 2.7% speedup from r2496. ignore the errors on line_basic.t
07:35 skew why does smoke rebuild the interpreter each run?
07:35 gaal skew, realistically no. theoretically in a perl5 project you might have, but here once smoke runs it's all perl6
07:36 gaal because there's no good way to zero the interpreter state
07:36 bloves has joined #perl6
07:36 skew especially when it seems to be trying to use one frmo /usr/bin
07:36 gaal really? that certainly shouldn't happen!
07:37 skew well, was spewing out errors about not being able to exec /usr/bin/pugs
07:37 skew t/data_types/catch_type_cast_mismatch.t
07:37 skew Can't exec /usr/bin/pugs at t/data_types/catch_type_cast_mismatch.t line 1.
07:37 gaal how did you invoke this, 'make smoke' ?
07:37 skew tyes
07:38 gaal ok, i'll investigate this, but let's try something in the meanwhile:
07:39 gaal set HARNESS_PERL to ./pugs
07:39 gaal and PERL6LIB to ext/Test/lib
07:39 gaal (in your environment)
07:39 gaal then run 'perl util/yaml_harness.pl'
07:40 gaal what OS are you using?
07:41 skew linux
07:41 skew gentoo
07:41 skew it installed 5.8.6, I've been grabbing packages with cpan, though
07:41 autrijus I know why
07:41 gaal this is very weird, because 'run-smoke.pl' sets the env for you.
07:41 jabbot pugs - 2509 - * check for all prereq modules at once,
07:42 gaal why? :)
07:43 autrijus gaal: system("perl")
07:43 autrijus skew: fixed
07:43 autrijus r2510
07:44 gaal autrijus, but the environment is set before system
07:44 autrijus gaal: it's the wrong perl.
07:44 autrijus say, ancient perl
07:44 gaal oh, you think it should be $^X?
07:44 autrijus sure.
07:44 gaal gotcha.
07:45 gaal ideally, Makefile's $(PERL)
07:45 autrijus gaal: hm, 2.7% isn't that bad.
07:45 autrijus ...and I also did the same for Parser.hs
07:45 autrijus so maybe another 2.7%.
07:45 autrijus gaal: it is makefile's $(PERL)
07:45 * castaway gives skew a "g-cpan.pl"
07:45 autrijus because run-smoke is invoked with that
07:45 gaal 2.7% isn't bad at all!
07:46 castaway (for gentoo)
07:46 gaal especially not after 11%, and 30%, and 50% :)
07:46 autrijus I think we should benchmark mandel on this run and on pugs 6.2.1
07:47 * gaal d/ls ye ancient pugs
07:47 autrijus ancient... of less than one week ago
07:48 gaal 'swhat i'm sayin'
07:48 skew what is giving that 2.7?
07:49 autrijus skew: r2512 should do it
07:49 autrijus skew:
07:49 autrijus data SIO a = MkSTM !(STM a) | MkIO !(IO a) | MkSIO !a
07:49 autrijus and
07:49 autrijus    IScalar :: ScalarClass a => !a -> IVar VScalar
07:49 autrijus the two ! there.
07:49 skew do these patchs have descriptions anywhere?
07:50 autrijus skew: sadly not if you are using darcs.
07:50 autrijus I'll make them carry descriptions when I find tuits
07:50 autrijus if you are willing to use svn or svk, though
07:50 autrijus http://svn.openfoundry.org/pugs
07:50 autrijus has descriptions
07:50 autrijus (our main repo)
07:50 autrijus simply "svn co http://svn.openfoundry.org/pugs" will do.
07:51 autrijus I apologize for this inconvenience :-/
07:51 jabbot pugs - 2510 - * make run-smoke run using the configure
07:51 jabbot pugs - 2511 - * more unboxing and explicit data struct
07:51 jabbot pugs - 2512 - * oops.
07:52 skew The most recent patch I see is r5186
07:53 gaal skew, by 5186 we'll be solving the halting problem.
07:53 autrijus gaal: heh
07:53 autrijus r5186 (orig r2604):  autrijus | 2005-04-30 15:49:38 +0800
07:53 autrijus yeah, and the numbers are out of sync.
07:53 skew Sat Apr 30 00:46:07 PDT 2005  perl6-compiler@perl.org
07:53 skew  * r5184
07:53 autrijus gah. I think I need to fix
07:55 skew well, as long as I have the patch that fixes smoke so it will actually test my changes
07:55 skew is that 2.7% from running around unboxing things?
07:55 autrijus ok, fixed.
07:55 autrijus skew: yes.
07:55 autrijus we've already unboxed most of our data structure
07:55 skew that's what I was going to try
07:55 autrijus which brought 30% before
07:56 autrijus the 2.7% is just even more strictness on two places
07:56 skew unpack or use unboxed stuff like INt#?
07:56 autrijus btw, sync.pl fixed
07:56 autrijus not explicit unboxing
07:56 autrijus just -funbox-strict-fields
07:56 skew what does "sync.pl fixed" mean?
07:57 skew maybe I'll find something for SPECIALIZE ...
07:57 autrijus skew: sync.pl is the thing that syncs svn to darcs
07:57 skew oh, okay
07:58 autrijus so if you pull now
07:58 autrijus it should say r2605
07:58 autrijus try it?
07:58 Corion has quit IRC (Read error: 60 (Operation timed out))
07:58 skew no changes left to pull
07:58 autrijus weird. what's your last change?
07:59 skew "r5186"
07:59 autrijus k sec
08:01 autrijus oh btw, what is your real name that I can add to AUTHORS?
08:01 skew that's a bit premature :)
08:01 autrijus no, you already helped a lot on the SIO monad :)
08:01 jabbot pugs - 2513 - * double oops.
08:02 autrijus "Brandon Michael Moore" ?
08:02 skew yep
08:02 skew that's me
08:02 skew hey, I'm getting something that syas "tagged snapshot"
08:02 autrijus yeah, now pull again... it should say r2514
08:03 skew it still says "No remote changes"
08:03 skew whatever, as long as I've got your patch
08:03 autrijus uh, lag?
08:03 autrijus try again :)
08:03 autrijus please :)
08:03 skew okay, r2514 now
08:03 autrijus yay.
08:03 autrijus skew++
08:04 skew is there collected profiling data anywhere?
08:04 gaal mandel benchmark between Pugs 6.2.1 and r2513 show a 37.55% speedup.
08:04 autrijus no... you can do "make clean; perl Makefile.PL; make profiled"
08:04 autrijus to get a profiled pugs
08:05 skew then I suppose I need to run it on tests myself to pass profiling flags and do something sensible with the profiling output?
08:05 autrijus sure. you can do this one-liner
08:05 autrijus (after building a profiled pugs)
08:05 skew make smoke would probably be way too slow with the profiled version anyway
08:05 autrijus find t -type f | xargs ./pugs -e 'require $_ for @ARGS'
08:05 autrijus that will run all tests in one run
08:05 autrijus giving you the profiled output
08:06 autrijus hm, or not
08:06 skew I'm just trying to figure out where to go to look for performance
08:06 skew you need to pass some +RTS options to get it to actually do any profiling
08:07 skew and it's been too long since I last read the user's guide, so I don't know where the output goes
08:07 gaal (from 2m26.750s real to 2m26.750s)
08:07 autrijus find t -type f | grep -v Dialect | grep t$ | xargs ./pugs -e 'require $_ for @ARGS'
08:08 autrijus right
08:08 autrijus find t -type f | grep -v Dialect | grep t$ | xargs ./pugs -e 'require $_ for @ARGS' +RTS -p
08:08 skew gaal: that doesn't seem so impressive
08:08 autrijus that's it.
08:08 autrijus gaal: that looks like the same
08:08 gaal and grep -v Disabled also
08:08 autrijus find t -type f | grep -v D | grep t$ | xargs ./pugs -e 'require $_ for @ARGS' +RTS -p
08:08 skew I can think of some interesting things to do with all that data
08:08 gaal autrijus, looks like the same as what?
08:09 skew (from 2m26.750s real to 2m26.750s)
08:09 gaal oh
08:09 gaal sorry :)
08:09 gaal to  1m31.637s that is.
08:10 gaal i had an, er, paste malfunction.
08:11 gaal that sounds like 30% + 11% + 2.7% plus change.
08:11 jabbot pugs - 2514 - * add skew to authors
08:12 skew that's a bit more impressive
08:12 * gaal forages
08:12 autrijus r2515 has "make pugs.prof"
08:12 skew is the plan to eventually port pugs to C by optimizing untill it's just a mass of Ptr and MutableByteArray#?
08:12 autrijus need to run "make clean; perl Makefile.PL" for that to work
08:14 autrijus skew: no, not really :)
08:14 autrijus skew: a fast interpreter is nice
08:14 autrijus but pugs is a compiler too.
08:14 skew autrijus: one problem with that xargs line is that it continually overwrites pugs.prof
08:14 autrijus so it doesn't quite matter :)
08:14 autrijus skew: huh? it only runs pugs once
08:14 skew does it?
08:15 skew oh, you run it with lots of options
08:15 skew Okay, I misread it, and thought I should check where the output went before I sat through a smoke run
08:16 gaal well, it does potentially run it several times...
08:16 gaal if there are lots of tests.
08:16 skew that would be bad
08:16 gaal that would be xargs
08:17 autrijus fixes welcome.
08:17 pjcj autrijus: you mentioned a while back that you had some thoughts on how to introduce code coverage collection without impacting performance when it is not needed - how is Eval.hs looking in that regard now?
08:17 autrijus (not terribly worred now)
08:17 autrijus pjcj: yes, yesterday's rewrite adds the instrumentation framework
08:17 autrijus pjcj: now we have the info on what line/column ranges have been executed.
08:18 autrijus I gather that's part of what you want?
08:18 pjcj excellent, I wondered whether that was the case
08:18 autrijus as we can reasonably think that two tokens sharing the same line/column range are in fact the same
08:18 justatheory has quit IRC (Read error: 110 (Connection timed out))
08:18 autrijus so that should be a pretty good start for a coverage tool
08:19 pjcj right - I'll have a poke around
08:19 pjcj any pointers on where to start?
08:20 pjcj the other thing that's needed is some info about all the constructs in the program - an AST dump or something
08:20 pjcj is anything like that already in place
08:20 autrijus sure
08:20 autrijus pugs -CPugs -e'say 1'
08:21 autrijus will give you a dump.ast
08:21 autrijus that contains two parts, glob and ast
08:21 autrijus glob is the global pad when the parsing starts
08:21 autrijus ast is the ast to run from that point on
08:21 jabbot pugs - 2515 - * fix testgraph; add "make pugs.prof"
08:21 jabbot pugs - 2516 - * finish "make pugs.prof" support.
08:21 jabbot pugs - 2517 - * four unexpected successes
08:22 pjcj ok - looks like we are in better shape than last time I looked ;-)
08:22 pjcj autrijus++ # I need another reason?
08:23 autrijus so look at Eval.hs line 245
08:23 autrijus you can see reduction rule for Pos
08:23 autrijus there you can record that the Pos has been executed
08:23 autrijus by writing into some magical global var
08:23 autrijus or using the envDebug stash
08:23 autrijus or something.
08:23 autrijus if you need more instrumentation
08:24 pjcj what is a Pos  --  position?
08:24 autrijus it's a range
08:24 autrijus AST.hs line 539
08:24 autrijus if you need more instrumentation
08:24 autrijus just add them to Pos structure
08:24 autrijus but I think the range is sufficient for now
08:24 autrijus the "exp" in Eval line 245
08:24 autrijus is the expression that is about to be run
08:25 autrijus "pos" is its source range
08:25 pjcj great - that looks as though I should have enough information floating around
08:26 pjcj it's a shame there doesn't seem to be any easy way of covering the haskell source code though
08:27 pjcj and somewhat surprising
08:28 autrijus no, it's because Pugs is too cutting edge :)
08:29 pjcj I think it's a wonderful project in that respect :-)
08:31 autrijus :)
08:31 autrijus I think Pugs has used all major new subsystems GHC 6.4 brings
08:31 jabbot pugs - 2518 - * oops, forgot to add pugs.prof line
08:37 iblechbot has joined #perl6
08:38 skew oh, of course you're using STM if you need to fuse it into SIO. Did it solve any interesting concurrency problems?
08:38 autrijus skew: yes. have you read my journal?
08:38 autrijus pugscode.org, the "Journal" link on the left
08:38 skew do I need to rebuild again with this 2518?
08:38 autrijus skew: no, just perl Makefile.PL ; make pugs.prof
08:38 autrijus is enough
08:39 autrijus (well, that is a rebuild. never mind me)
08:39 autrijus it's GHC will skip all the files if you have already built things
08:39 skew I just finshed rebuilding under r2517
08:39 autrijus using "make profiled"?
08:39 skew I'll never get around to actually profiling if I have to keep rebuilding
08:40 skew no, make pugs.prof seemed to build something
08:40 autrijus yeah. give me a sec
08:40 autrijus ok, I think you'll be fine
08:40 skew the pugs I've got now is built with profiling
08:40 autrijus under r2518, "perl Makefile.PL ; make pugs.prof" should just take a second
08:41 autrijus it's just fixing one line in Makefile
08:41 autrijus and it will run the profiled test run
08:41 autrijus I think.
08:41 autrijus at least it does it here
08:41 autrijus also, the profiled pugs is not built with -O
08:41 skew linking pugs each time through takes my system a while
08:41 autrijus as regular "make smoke" pugs is
08:42 autrijus oh. in that case you can just run this by hand
08:42 autrijus        find t -type f | grep -v D | grep -v R | xargs ./pugs -e 'require() for @ARGS'
08:42 skew too late - it's not that long
08:42 autrijus :
08:42 autrijus :p
08:43 skew that saves profiling output?
08:43 autrijus hm it didn't
08:43 autrijus weird. give me a sec, sorry
08:43 skew +RTS -p -RTS
08:44 skew I remember, I wanted to try sticking INLINE on some of the monad methods
08:46 autrijus in that case, if full run is taking too long
08:46 autrijus you can always just do
08:46 autrijus ./pugs examples/mandel.p6 +RTS -p
08:46 autrijus mandelbrot being the canonical benchmarker
08:46 skew is that a good benchmark?
08:47 autrijus it's the one I use mostly
08:47 autrijus so yeah
08:48 gaal autrijus, find | .... | ./pugs -e '$*IN is chomped; require for =$*IN'    # except that 'is chomped' doesn't work yet
08:48 skew well, I don't know what an async or a pad is
08:49 autrijus gaal: anyawy, the full time is
08:49 autrijus        find t -type f | grep -v D | grep -v R | grep -v pugsrun | xargs ./pugs +RTS -p -RTS -e 'my sub exit {}; require() for \@ARGS'
08:49 autrijus skew: async{} is forkIO
08:49 autrijus skew: the pad is the lexical pad.
08:49 gaal i just checked the GNU xargs sources - on some systems the limit is as low as 470 - much too short for our tests
08:49 autrijus i.e. the visible things from your current let-binding
08:50 autrijus gaal: fixes to Makefile.PL welcome.
08:50 gaal (however, "some systems" == "SYSV", so maybe this is not a practical limit)
08:50 skew and these are mutable structures that are now safe to use because of STM?
08:50 autrijus skew: yeah. basically
08:50 autrijus    async { atomic { $x = $y * 10; $y = $x * 10 } };
08:50 skew there was no locking before?
08:51 autrijus there was no lock(), no.
08:51 skew hash tables I can see
08:51 autrijus we can put them in now using TMVar.
08:51 skew okay, I've got a pugs.prof now
08:51 jabbot pugs - 2519 - * add the RTS options.
08:52 autrijus skew: yeah, and it is not terribly useful
08:52 autrijus most time are spent on the parser :-/
08:53 autrijus the tests themselves are all short
08:53 gaal beh, isn't there some global .clone method? not being able to require($_.chomp) for =$*IN because stdin is r/o is annoying
08:53 autrijus for =$*IN -> $x is copy { }
08:54 autrijus I need to run for food.
08:54 autrijus be back later
09:02 autrijus skew: Pugs.Context.findList takes a whooping 6%
09:02 autrijus and it's wrong as well because it only handles single inheritance
09:02 bloves has left
09:02 autrijus I'd be very grateful if you (or other people) can refactor it into Data.Graph.Inductive
09:03 autrijus &
09:05 Jouke has joined #perl6
09:05 Jouke has left
09:12 skew mandel.p6 seems to give more reasonable results. Heavy on Pugs.Prim.op2 like I would expect, then fairly generic sounding stuff
09:12 skew (that is, I expected mandel to be pretty heavy on math and op2 sounds like the bit that does the math)
09:18 masak has joined #perl6
09:21 gaal does pugs.prof work for you guys? i get a coredump.
09:21 gaal well, a segfault.
09:21 gaal well, a gpf.
09:21 gaal this is cygwin :)
09:21 skew works for me
09:22 gaal did you have to install anything special? or just a usual ghc 6.4?
09:22 skew yeah
09:22 skew see if profiling works at all with cygwin
09:22 gaal what should i try? (i'm new to haskell)
09:23 skew wait, pugs.prof is supposed to do the tests on it's own. Building the profiling version and running it with pugs +RTS -p -RTS worked
09:24 gaal doesn't work for me.
09:24 skew just barely saved my pugs.prof from mandel.p6. make pugs.prof seems to be working
09:24 gaal i'll try this on linux then. will take a while.
09:25 skew make some little Haskell program, toss in the -prof option when you compile it, then run it with +RTS -p
09:25 skew see if it gives you a <progname>.prof (good) or a segfault (bad)
09:25 skew enough of a beginner that "make a little Haskell program" is an issue?
09:26 gaal no, i can do that. :)
09:26 skew how long have you been learning, and what can you do?
09:27 gaal i can add trivial Prims. i still fear monads.
09:28 larsen has joined #perl6
09:28 gaal but recursion and e.g. fold are ok.
09:28 skew From visitors to #haskell I get the impression that some people take a long time to learn monads, I'm wondering if the story is different around pugs with more experienced perl programmers and less first-year students
09:28 gaal how long is harder to answer :)
09:29 gaal urp? on linux,
09:29 gaal Chasing modules from: src/Main.hs
09:29 gaal Could not find module `Data.Map':
09:29 skew do you have ghc 6.4?
09:29 gaal yes.
09:29 skew hmm
09:29 skew is this building pugs?
09:30 gaal yes, i wanted to do that in the bg while trying profiling on cygwin.
09:30 gaal oh wait, my tree was dirty.
09:31 gaal but no, that doesn't fix it.
09:32 skew is there any file that describes which modules do what?
09:33 gaal not that i know. there's been work in the past few days to haddock things.
09:33 skew well, the pugs work just claimed a second screen for browsing the tree then
09:35 gaal be
09:35 gaal *brb
09:36 skew is there any pattern about which functions have type signatures?
09:41 gaal i don't think so -- i see no reason not to include them
09:41 gaal except where the author thought they're too trivial.
09:41 skew okay. doBoolIO took about 15% of the profiled run of the tests and didn't have a signature
09:41 gaal but i don't have much to say about style in a language i don't know :)
09:42 gaal does having a signature have any semantic difference?
09:42 gaal i thought it was mostly a documentation hint.
09:42 skew sticking on a signature with the same type that would be inferred doesn't
09:43 skew but some things the type checker is not smart enough to figure out without a hit (that pesky halting problem, you know)
09:43 gaal yeah
09:43 gaal but has this anytrhing to do with profiling?
09:44 skew also, you can give it a more restrive type than would be otherwise inferred
09:44 gaal i'd think signatures had only compile time effect?
09:44 gaal yes, i see that.
09:45 gaal aha! on my cygwin, any profiling fails.
09:45 skew relevant to profiling, if a function ends up polymorphic with a class constraint it is Bad for performance
09:45 gaal "my cygwin" is really ghg-mingw
09:47 skew rule one of optimization is to find and squish laziness and polymorphism
09:47 gaal skew, so could we benefit from narrowing doBoolIO to (possibly several) more tightly typed functions?
09:47 skew I think it already gets a specific type
09:47 skew but that findList autrijus mentioned is polymorphic in Eq, and only used at one type!
09:48 skew do you know how the typeclass stuff works at runtime?
09:48 skew for that matter, does autrijus?
09:48 gaal sorry, no.
09:49 gaal beh,  on linux 'make optimized' works but regular 'make' breaks.
09:49 skew if you have a type like (Eq a) => a -> [a] -> Bool, then internally it takes an extra argument, a record full of the methods for an Eq instance, and uses functions from that record every time it sees a method from Eq
09:49 gaal ...and the prof target is broken as well
09:50 skew at every call, the compiler passes along the right record for whatever type a is is that that call uses
09:50 gaal sounds like virtual method calls :)
09:50 gaal eg c++ vtable hack
09:50 gaal ok
09:51 skew pretty close, except usually (C++ template magic aside) the language can't go out and automatically define a new subclass for your problem
09:51 skew but anyway, if the compiler has a specific type, then it can call those methods directly, and more than that it can inline them and apply all sorts of crazy GHC optimizations to them
09:52 skew actually, typeclasses are more like delegation and the coding style in an untyped language
09:53 skew they just formalize "anything that has method X"
09:53 gaal okay, i made ghci and did :t doBoolIO, and got something extremely hairy
09:54 skew you did?
09:54 skew I expected something like a -> (a -> Eval Bool) -> IO Bool?
09:54 skew could you past it in for me?
09:54 pasteling "gaal" at 192.115.25.249 pasted "something extremely hairy" (10 lines, 370B) at http://sial.org/pbot/9782
09:55 skew Okay, it's not as bad as 10 lines sounds
09:55 gaal one of the things that haskell and perl have in common is that 10 lines can be a lot of hariness. :)
09:55 skew I wonder how many instances of Value there are running around
09:56 gaal i wish i knew more haskell to be able to answer that.
09:56 skew I'd put my money on Haskell for sheer mind bending. I should look over the IOHCC winners and see if there was any sophisticated entries, or it was mostly just ugly syntax
09:58 autrijus yo.
09:58 skew hi
09:58 autrijus gaal, skew: please feel free to commit more type signatures.
09:58 autrijus skew: committing via darcs is currently broken, but you can send patches, or (again) if you are willing to suffer svn, I can give you committer right there
09:59 autrijus skew: and no, I had no idea that typeclasses are vtabled at compile time.
09:59 Alias_ has quit IRC ()
09:59 autrijus and yes, there are lots and lots of Value instances, so we can't do without that
09:59 skew I think I've got a copy around. I can figure out how to use it
09:59 skew that's not the only way to solve the problem
10:00 gaal skew, the classic perl one-liner nuke isn't even very obfuscated:
10:00 gaal perl -wle '(1 x $_) !~ /^(11+)\1+$/ && print while ++ $_'
10:00 skew hmm, mabye it is
10:00 autrijus I'm fixing Context.hs to say Type instead of Eq a => a
10:00 skew is most of Pugs polymorphic ic Value?
10:00 skew autrijus: hold off on that for a bit
10:00 skew I'm trying something a bit different
10:03 autrijus skew: yes, most of the primitives are based on fromVal
10:03 autrijus which pulls out a polymorphic Value from a Val
10:03 pasteling "gaal" at 192.115.25.249 pasted "xargs elimination" (16 lines, 781B) at http://sial.org/pbot/9783
10:04 autrijus skew: too late, I've already checked in Context.hs
10:04 skew there is a SPECIALIZE pragma which should be as good for some of the stuff in Context
10:04 gaal autrijus, or someone, mind trying this patch? i do't have a system to test it on myself.
10:04 autrijus skew: the real problem is Context.hs wants a rewrite using Graph.
10:04 autrijus skew: Tree is wrong -- Perl 6 need multiple inheritance
10:04 gaal (autrijus, plain "make" is broken on linux)
10:05 autrijus gaal: broken how
10:05 gaal LD_RUN_PATH="" cc  -shared -L/usr/local/lib Pugs.o  -o /home/roo/src/pugs/blib/ar​ch/auto/Perl6/Pugs/Pugs.so
10:05 gaal cc: Pugs.o: No such file or directory
10:05 gaal cc: no input files
10:05 gaal make: *** [/home/roo/src/pugs/blib/ar​ch/auto/Perl6/Pugs/Pugs.so] Error 1
10:05 gaal but make optimized does work.
10:06 skew wait, does make install install under the name perl?
10:06 gaal skew, it should not!
10:07 gaal as /usr/bin/pugs
10:07 autrijus gaal: it needs to say =$*IN
10:07 skew oh, it was a message from ghc-pkg about plugins
10:07 autrijus gaal: checked in
10:07 gaal er, yes, thanks :)
10:08 skew I thought for a moment it was pugs complaining
10:08 autrijus gaal: that is very wrong. your tree is clean? is this perl 5.8.1+?
10:08 autrijus you have a sane makemaker?
10:08 skew make seems to be working just fine here
10:08 gaal 5.8.4, i'll make reallyreallyclean again.
10:08 autrijus ditto here
10:09 gaal hey, how come rm -rf * ; svn up does something? :) does * not glob .svn?
10:10 gaal hmm, the real clean make helped.
10:11 skew SPECIALIZE tells GHC to generate an optimized version for the types you specify, and use that wherever it can
10:11 jabbot pugs - 2520 - * add some signatures to Context.hs upon
10:11 jabbot pugs - 2521 - * remove xargs from "make pugs.prof" fro
10:12 skew do the signatures help performance any?
10:13 autrijus dunno, haven't tested. I'm working on $work now
10:14 autrijus skew: I don't think we want SPECIALIZE for things that are monommorphic anyway.
10:14 autrijus it can help for the functions that has (Value a) polymorphism.
10:15 skew if there are few enough instances that it's workable to specialize everything for all of them
10:15 skew actually, I don't think it helps at all if you are using fromVal all over the place
10:15 skew because then it doesn't know at compile time what type it's getting so it has to use the dictionary packed up in the Val
10:16 autrijus right.
10:16 skew Hopefully jhc makes all these worries obsolete
10:17 skew do you ever use code at some particular known Value insatnce?
10:17 skew that's the only way SPECIALIZE would help
10:17 skew I think
10:17 broquaint has joined #perl6
10:19 autrijus well, yes I do
10:19 autrijus all the stuff in Prim.hs
10:19 skew Hey, I think UNPACK is different from ! and -funbox-strict-fields
10:19 autrijus how so?
10:19 autrijus GHC manual says they are the same
10:19 skew are they?
10:19 autrijus yeah.
10:19 autrijus "See also the -funbox-strict-fields flag, which essentially has the effect of adding {-# UNPACK #-} to every strict constructor field."
10:19 autrijus in 7.9, Pragmas
10:20 skew okay
10:20 skew so there's not another howevermany percent sitting there :(
10:20 autrijus nope :)
10:20 autrijus personally I'm already quite happy with how fast Pugs is.
10:20 skew I guess unboxed values would have to be stuck right into the constructor
10:20 autrijus i.e. works for my production needs already
10:20 skew that's nice.
10:21 skew How much slower than perl5 is it?
10:21 autrijus the operator dispatch was ~100 times slower
10:21 skew I heard two orders of magnitude more instructions per op, but that was a while ago
10:21 autrijus since we only improved to 5x speed or so
10:21 autrijus I'd say still much slower.
10:22 skew how does that op stuff work?
10:22 autrijus and I'm happy really, because to get any faster
10:22 autrijus I'll use the parrot and/or ghc compiler backend
10:22 autrijus that is
10:22 autrijus pugscc --runparrot examples/mandel.p6
10:22 autrijus which is already _faster_ than peerl 5.
10:22 autrijus all the op stuff is in Prim.hs
10:23 autrijus and the dispatching happens on Eval.hs
10:23 skew I hope the string matching only happens once
10:23 skew I mean op2 and such
10:23 autrijus yeah.
10:23 autrijus I have no idea
10:25 skew make pugs.prof now fails in linking for me
10:27 skew why should findList be happening a lot anyway?
10:29 autrijus because it is used to do subtype matching
10:29 autrijus via isaType
10:29 autrijus i.e. a Int is a Rat
10:29 autrijus a Rat is a Num
10:29 autrijus and so on and so forth
10:30 autrijus many op dispatch needs to perform typecasing to determine which MMD instance to dispatch into
10:30 autrijus see the large tree at end of Context.hs
10:33 skew does mandel.p6 have to be written that strangely? I thought I could just find a line number somewhere and tweak that to make it only draw half the thing
10:35 Aankhen`` has quit IRC (Read error: 104 (Connection reset by peer))
10:35 skew where did you get the C anyway? The IOCCC?
10:36 autrijus skew: line 36
10:36 autrijus make it > 0
10:36 autrijus I committed the change
10:36 skew I changed y=30 to y=10
10:36 autrijus skew: I have no idea. it's from parrot tree
10:36 skew it seems to be drawing the bottom third now
10:37 skew you guys know those are examples of bad C style right? Even if it is more readable than the perl ...
10:37 skew though some of the blame definitely goes to the default color my editor gives those $ variables
10:38 gaal skew: "This is badly hacked to get Parrot compiler going"
10:38 skew yeah, that's what I was asking about
10:38 autrijus right, except I think we can unhack it now
10:39 autrijus because our parrot compiler is much better now
10:39 autrijus but it will probably need to remain in the ugly C-based style
10:39 autrijus just to get things fairly benchmarked
10:39 autrijus (against pasm, p5, C, etc)
10:39 autrijus woot, I've sent Pugs's Haskell Community Report.
10:41 xerox has joined #perl6
10:41 autrijus # http://autrijus.org/hca2005may-pugs.txt
10:41 jabbot pugs - 2522 - * only draw mandelbrot once
10:44 autrijus bbl. :) &
10:44 skew single character $ variables are pretty unreadable in a light blue color where my eyes blur everything into an S-shaped blob with something sticking off to the right
10:47 skew what did that patch change?
10:47 gaal skew, what editor /font/colorscheme do you use?
10:48 skew vim, with one of the stock colorschemes (I've forgotten which) modified not to show some important Haskell construct in a similarly unreadable color
10:49 gaal fwiw, i like the koehler colorscheme in vim
10:49 skew though the unreadability might have been an artifact of coding in daylight hours
10:50 gaal not used to that, eh? :)
10:50 skew no, I was doing that way back when I made the colorscheme
10:51 skew evening, with green instead of bright yellow
10:53 gaal and what font? i use MS Courier New, though i am looking to change it. (But I require unicode, so it isn't easy to find something)
10:54 gaal need to try http://dejavu.sourceforge.n​et/wiki/index.php/Main_Page
10:54 skew whatever my terminal is using
10:54 gaal if you say your $s blur a lot, maybe a different font can help.
10:55 skew it's fine with something like koehler
10:55 skew some colors are just harder to resolve
10:57 skew I think it's time to stop letting new patches interfere with my work
11:00 skew I'm going the make my copy of pugs run my copy of mandel.p6 blazingly fast, and you want to make changes you can optimize them yourself :)
11:02 theorbtwo has joined #perl6
11:04 skew I wonder how much I would disturb the timing if I learned Ruby on Rails at the same time
11:04 skew I can always just chat on IRC while stuff builds and times, I guess :)
11:06 skew I have a friend with many neat ideas for things to write, but he's too caught up in coding them all up to discover for himself that there are better languages than C# and ASP.NET out there
11:07 skew I figure if I can reimplement a fair chunk of one of his web things with an order of magnitude less code that might get his attention
11:08 elmex has joined #perl6
11:08 gaal avoid html as much as possible if you want to manage that :)
11:09 skew I think not counting HTML is pretty fair
11:09 gaal hey, avoid *http* as long as possible :)
11:12 castaway skew, heh, poor guy
11:12 osfameron has joined #perl6
11:13 skew what compiler backends are there?
11:14 skew never mind, I found the pugscc script
11:16 skew maybe interning strings could help
11:17 skew == on [Char] can be a bit slow
11:24 skew how much value is there in making pugs fast?
11:25 * gaal values fast
11:25 gaal as long as it doesn't obfuscate the code so much it's too hard to maintain
11:25 skew okay
11:26 gaal hey, i'm just another perl6 hacker though :)
11:28 skew actually, a lot of the complexity I'm contemplating would be hidden from most of the code
11:28 saorge has joined #perl6
11:28 skew wow, runparrot is a *lot* faster than the interpreter
11:30 skew more than 60x faster
11:32 gaal skew: http://www.mail-archive.com/perl6​-compiler@perl.org/msg00417.html but i guess you figured all that out by now.
11:33 gaal it isn't so surprising that the compiled versions run faster than interpreted code, is it?
11:33 skew of course, the C cde is 100x faster yet
11:33 broquaint has quit IRC ("Chatzilla 0.9.68a [Firefox 1.0.3/20050414]")
11:35 pjcj is that with an optimised parrot build?
11:36 gaal and hand tuned assembly might be faster still, but at some level it stops mattering :)
11:36 pjcj IIRC the default is unoptimised
11:38 skew wait, I was looking at real time. The C is 300x faster
11:38 skew I doubt there's more than about 10x to gain with clever assembly
11:39 pjcj in the end, real time is all that matters though, right?
11:40 skew isn't it wonderful programs can be 1000x suboptimal and still fast enough for all practical purposes
11:40 skew well, the real time for C is dominated by output
11:40 gaal it's especially possible if it takes 1000x less time to code them :)
11:43 skew I just realized I've been timing the unoptomzied pugs
11:44 skew I wonder if anyone has tried to build pugs with jhc?
11:45 gaal does it have all the newest ghc extensions?
11:45 skew heh
11:45 skew no
11:46 skew It's something somebody wrote themselves to learn Haskell and try out some ideas
11:46 gaal sounds familiar :)
11:47 skew it has an interesting implementation of type classes that might help pugs a lot
11:47 skew it doesn't do much optimization yet, though
11:48 skew actually, the extensions might not be that much work
11:48 skew STM is just an issue of the runtime and you can take that from GHC
11:48 osfameron has quit IRC ("Leaving")
11:49 skew as for the fancy types, the internals are already geared up for dependent types
11:49 skew It's mostly an issue of parsing, typechecking, not having any optimizations, and already taking a gig of ram to compile hello world
11:50 * gaal cheerfully has a gig of ram on his main box :)
11:50 skew implementing separate compilation should help bring that down
11:50 skew also it's a bit odd in that fancier optimizations improve compiler performance
11:50 gaal "separate compilation" == compiling separate units then linking them?
11:51 skew because a simple program is sent to the bits that are really slow
11:51 skew though I think John just found a paper about how to do it in linear time instead of exponential or so
11:51 skew gaal: was
11:51 skew yes
11:51 theorbtwo john == the jhc guy?
11:52 skew basically, all the function pointers and typeclasses and stuff are inlined together into case statements
11:52 skew yes
11:52 skew JohnMeacham, sometimes on #haskell
11:52 gaal brb
11:52 skew something like that anyway
11:53 skew If I understood him right, higher order functions from the library need to be recompiled against the code in your program that calls them
11:53 skew but apparently there is some way to save lots of info to make this fast
11:53 skew after all, the linker still has to copy over the library definitions under GHC
11:56 skew anyway, typeclass stuff compiles to functions that take a representation of the type they are being applied to, and pattern match on that
11:56 skew so with something like unpacking Val it can theoretically do a single case, then go to code for dealing with that particular type
12:05 gaal skew, can you help with a parsec Q?
12:05 skew sure
12:06 gaal inside a rule, i'm trying to get and optinal next bit of data.
12:06 skew that should be easy
12:07 gaal what does this do when it fails?
12:07 gaal lineNum <- try $ many1 digit
12:07 skew fails and tries the alternative
12:07 skew except writing it like that it seems you're in the middle of a do block
12:08 gaal lineNum <- try $ do { many1 digit  } <|> return ()
12:08 skew try is a mark for backtracking
12:08 gaal ?
12:08 skew oh, that's just precedence error
12:08 skew try (many1 digit) <|> return () is the right idea
12:09 skew except use Maybe instead of trying to return either a number or unit
12:09 gaal and then lineNum will be null when the lookahead failed?
12:09 skew no, then ghc will tell you that numbers and () are a very different type
12:09 gaal oh: how?
12:09 skew well, there should be a function called option somewhere that already does all that
12:09 gaal can't blame it :)
12:10 skew do you understand the LL parsing stuff?
12:10 gaal nope, no theoretical background :(
12:10 skew basically, at any choice Parsec goes with the first parser that is willing to take the next character of input
12:11 gaal yes, which is why i mustn't consume things in the first parser if i want to try the second
12:11 skew so if the second character gives a parse error, that's too bad because it's already chosen that alternative
12:11 skew try changes it so it will try the next if there's ever a parse error
12:12 skew really it's more like a parser uses lazy evaluation to return DontMatch or StartedParsing <thunk> right away
12:13 broquaint has joined #perl6
12:13 scook0 has joined #perl6
12:15 skew then the inside evaluates to either Fail <reason> or Success <value> (in some Either lookalike type)
12:16 gaal i unfortunately only have a wisp of your gist :)
12:17 skew 1) by default, once a parser takes a character you're committed 2) try changes that so if it ever fails you will go to the next alternative 3) the implementation is really elegant and uses neat Haskell-stuff
12:18 gaal :)
12:18 gaal why does this parsefail on "="?
12:18 gaal lineNum = option (-1) (do { n <- many1 digits ; return read n })
12:18 skew oh, and 4) There's probably already a combinator to do whatever you want in the library
12:18 skew I don't think "=" is a digit
12:19 skew oh, ghc doesn't like it. Are you in a do block?
12:19 gaal ...and is there a way to use that... combinator to evaluate to either Nothing or Just someNumber?
12:19 skew it's var <- code to run monad stuff, or let var = expr to name something
12:19 gaal let's see...
12:20 skew sure, just use Nothing as the default and wrap your answer in Just.
12:20 skew or, make your own option
12:21 gaal i am in a do, and this fails: lineNum <- option Nothing (do { n <- many1 digit ; return $ Just (read n) })
12:22 gaal i can't return a Maybe?
12:23 skew that should work
12:23 gaal ah, it was getting confued because i hadn't changed my next line to use  a Maybe
12:25 skew I got my two monitors from people moving away for about $150 total, and got the third from the CS department's abandoned stuff pile
12:26 gaal are they all connected to one computer?
12:26 skew yes
12:26 skew though I was explaining to tuomov on #haskell what great use I'm making of ion
12:26 * theorbtwo wants one of those.
12:27 theorbtwo (A CS department's abandoned stuff pile, that is.)
12:27 gaal ion kinda disagrees with the many screens philosophy :)
12:27 skew how so?
12:27 skew I thought the idea was to efficiently use all your space
12:27 gaal ion is the maximized window wm, no?
12:28 skew I go for tiling
12:28 skew to me it's about efficient use of screen real-estate and making it easy to get around with keys
12:29 skew there's nothing wrong with having more real-estate to use efficiently
12:29 gaal my eyes, not being what they used to, really appreciate maximized xterms
12:29 gaal yay! i another test passes.
12:29 gaal skew++; # help with parsec
12:39 gaal okay, this must be utterly trivial, but how do i implement followedBy?
12:40 gaal ie, i want to assert that the next character isSpace
12:40 gaal but not consume it.
12:40 gaal it it just "try isSpace"?
12:40 skew no, that will consume it
12:41 gaal really? i thought the whole idea with try is that it doesn't consume?
12:41 shapr has joined #perl6
12:41 gaal man, this is so much easier with regexps :)
12:41 skew no, the idea with try is that it can still backtrack and try another alternative even if it does fail
12:42 gaal hmmm.
12:46 Aankhen`` has joined #perl6
12:54 skew how about lookahead?
12:55 gaal not mentioned in http://www.cs.uu.nl/~daan/d​ownload/parsec/parsec.html
12:55 gaal maybe l'm looking at an old doc?
12:55 skew it's documented with the rest of the libraries now
12:56 gaal oh
12:56 skew there are no descriptions for many functions, but they are listed
12:57 gaal not mentiond here either: http://haskell.org/ghc/docs/lates​t/html/libraries/doc-index-L.html
13:03 nothingmuch ingy: ping
13:07 nothingmuch gaal: is thirst in hebrew a male noun?
13:07 nothingmuch the page has 'zama kitsoni'
13:07 nothingmuch and i don't know if it should be kitsonit
13:07 gaal yes.
13:07 nothingmuch i'm 90% sure
13:07 nothingmuch yes male or yes female?
13:07 gaal yes SIR!
13:07 gaal yes masculine.
13:08 nothingmuch okay, so when you say 'zama kizonit' it's because you really mean 'thushat zama kizonit'?
13:08 skew Text.ParserCombinators.Parsec.Combinator.lookAhead
13:08 gaal nm: i guess.
13:08 nothingmuch grazie señor
13:09 gaal thanks, skew!
13:10 gaal i can't believe how long it's taking me to do /("?)(.*)\1/ :)
13:11 xerox Is it missing a '/' ?
13:11 gaal no :)
13:11 xerox Oh, what does it mean?
13:12 gaal it matches a sometihng optionally surrounded by quotes
13:12 gaal and the interesting something goes to $2.
13:12 skew how about between (char '"') (char '"') (many anyToken) <|> (many anyToken)?
13:12 xerox Oh yes! :_)
13:12 gaal :)
13:13 gaal complications: there may be trailing whitespace, which i want to ignore;
13:13 skew porting regular expressions is going to give you very strange parsers
13:13 gaal and i certainly don't wan tto consume the newline that may be there.
13:13 gaal skew: i'm doing #line, which is one of three things:
13:14 skew oh, anyChar should be what you want in the middle then
13:14 gaal #line NUM    -> setPosion pos { sourceLine = NUM } (basically)
13:15 gaal #line NUM "FILE NAME"   -> setPosition pos{ souceLine = NUM, sourceFile = FILE NAME}
13:15 skew if this is using Token, then just stick lexeme around anything you want to each trailing whitespace
13:15 gaal and this has to have a VERY SOFT failure mode, because if this fails, eg
13:15 gaal #line oh no that's not what i meant
13:15 gaal or
13:15 gaal #line 123fooled you!
13:15 gaal then this falls back on a comment :)
13:16 skew you mean you want it to be very strict?
13:16 gaal let say,
13:16 gaal using Java terminology, :)
13:17 skew sounds like you want it to be very picky about what it recognizes, and use try to fall over the comment
13:17 gaal i want to surround the whole rule with a try { } catch { treat this line as comment }
13:17 skew that would be <|>
13:17 gaal but that means i really muistn't consume things until the last moment.
13:17 skew I think maybe you have used regular expressions when you should have used a real parser too many times
13:18 gaal don't you mean Real Parser? :-p
13:18 skew why were you even trying to parse something that optionally had quotes around it?
13:18 skew gaal: nah, that's probably writing the state transition table by hand
13:19 gaal well, we're all learning here :) how would you suggest this should be done?
13:21 skew do { string "#line"; whitespace; many1 digit; option (return 'q') (between (char '"') (char '"') (many anyChar)); whitespace }
13:21 skew see if that parses what you want
13:21 skew do you know if you are using Token?
13:21 skew Where does the parser live?
13:21 gaal wait, first of all the quotes are optional
13:22 skew are spaces allowed in the filename then?
13:22 gaal and whitespace, doesn't that include \n?
13:22 gaal spaces are allowed if you use quotes :)
13:22 skew maybe I mean spaces
13:22 gaal the code is in Pugs/Lexer.hs
13:23 gaal oneLineComment
13:23 gaal which i think is on the style of oneEyedPirate
13:23 gaal (arrr)
13:23 Limbic_Region has joined #perl6
13:25 gaal hey, aren't matches greedy?
13:26 gaal oh, scratch that, you were anho
13:26 gaal anchoring against quotes.
13:26 skew I don't know if that works
13:26 Limbic_Region has quit IRC (Client Quit)
13:27 gaal the versiony you have in your source tree didn't go very far
13:27 gaal i've hacked it a bit since.
13:27 skew oh, I'm thinking of the UU combinators, which do have a non-greedy many
13:28 gaal well, worst case,  we can try against your rule
13:28 gaal and if it failes, try against a rule with a single unquoted token
13:29 gaal and if it fails, try against #line NUM which deals with a comment fallback internalky.
13:29 skew I would just replace anyChar with something a bit more specific
13:29 skew if escapes are allowed in the filename you could parse it as a string
13:30 gaal i guess they have to be
13:30 gaal otherwise you won't be able to say
13:30 skew don't try to do everything in a single expression
13:30 gaal #line 123 "file\nwith\nan EXCEPTIONALLY sneaky name"
13:31 gaal key, it's not me
13:31 gaal s/k/h/
13:31 gaal it's the semantics defined by p5
13:31 skew if it's getting too complicated, start a new definition for quotedFilename, or whatever
13:31 gaal where, of course, this is implemented in c
13:31 gaal well, that's where i get confused about not consuming input when i fail.
13:32 skew test little bits of the parser separately
13:32 skew write more complete parsers that refer to the little ones
13:32 skew the magic word is compositionality
13:36 stevan is openfoundry.org down?
13:37 theorbtwo I just checked in the missing util/munge_haddock.pl a moment ago.
13:37 theorbtwo (I really need to be more careful...)
13:37 stevan hm, I cant seem to connect to it
13:37 stevan oh well
13:37 gaal i've had problems this morning, stevan, but it works now
13:40 stevan hmm, this happened once before, it was an DNS issue,... which would explain why it works for you guys and not for me
13:40 stevan oh well I was going to just mess around with test.pm anyway
13:40 stevan anyone have any opinions on the :todo<bug> :todo<feature> idea?
13:41 stevan bugs would fail unless PUGS_RELEASE was on
13:41 jabbot pugs - 2523 - Whoops, add missing munge_haddock.pl!
13:42 stevan and features would just show TODO (like regular)
13:42 stevan (at least this is how my caffine deprived brain is viewing it right now)
13:43 gaal stevan, i never really understood the aim of release-time TODO and what the solutions were trying to achieve. maybe a rationale-type doc can help?
13:44 stevan gaal: the whole idea is quite simple
13:44 stevan to avoid bug reports for problems we know about :)
13:45 stevan its bad QA practice (which is why Schwern was so offended by it), but it is practical given the release schedule
13:45 stevan and the fact that even if we explained that, people done read, so there will still be a glut of bug reports
13:46 gaal okay; what's wrong with making sure the candidate has all fixable bugs accounted for and then
13:46 gaal make test | force_todoer > force_todo_list
13:46 gaal ?
13:47 stevan a force_todoer script would be just about impossible to write
13:47 stevan well actually maybe it wouldnt
13:48 gaal why? the release manager looks at the last smoke, decides it's as good as it's going to be, and registers those tests as force_todo
13:48 gaal (modulo parsefauils, of course)
13:49 stevan so you are basically saying, when we decide to release
13:49 stevan we gather all the failures (through some means)
13:49 stevan and then just force_todo them
13:49 gaal presumably those failures are exactly those we "know about" and dont' want bug reports on, no?>
13:49 stevan yes
13:50 stevan I mean this is pretty much what happens now
13:50 stevan just manually
13:50 gaal there's a minor issue of platform dependent bugs
13:50 gaal the yaml output contains all failing tests in easy-to-use form
13:51 stevan hmmm
13:51 gaal so what are the shortcomings of this approach?
13:51 stevan nothing
13:51 stevan it is an automation of what we are doing manually right now
13:52 gaal but you mentioned todo<bug> and todo<feature>
13:52 gaal what are those?
13:52 stevan there are really two levels of TODO
13:52 gaal known bug and futures?
13:53 stevan the stuff in t/oo is :todo<feature> since they are no where near done
13:53 gaal ("futures" eq "features to be implemented in the future" :)
13:53 stevan yes
13:53 stevan :todo<bug> is someting which should be implemented, but is not (for whatever reason)
13:53 stevan like 'for @list &sub'
13:53 gaal and todo<bug>s are not bugs, they're you-know-what :)
13:54 gaal all right; this obviously needs human interaction.
13:54 stevan yes
13:54 stevan yeah I am not sure <bug> is a good name
13:54 gaal okay, so i do see a possible problem
13:55 gaal we want to have the test results not say things are okay, but rather "it's okay, i knwo this doesn't work."
13:55 gaal but that's just a display issue in the test harness
13:55 gaal and the user doesn't care if it's because of a known bug or a missing feauture
13:57 gaal have we forked off test::harness already? or is ours a pristine copy of something on cpan?
13:57 stevan it is still a pristine copy
13:58 gaal well, maybe it's time to change that. because the problem isn't in Test.pm, i think, but rather in the harness.
13:58 stevan yeah I think you are right
13:58 stevan the test harness should be able to report number of TODOs like it does number of SKIPS
13:58 gaal we have our copy anyway, might as well moose it up.
13:58 stevan at a minimum
13:59 stevan well is this a TAP issue? or a Test::Harness issue?
13:59 gaal alternatively, we *could* cheat and overwrite the make test target to run the yaml harness ;-)
13:59 gaal but not really, because we don't want to bundle yaml.pm too
13:59 stevan :)
13:59 gaal TAP does say something is TODO
14:00 * nothingmuch notices buzzwords and decides to join i
14:00 nothingmuch n
14:00 gaal but it doesn't differentiate <bug> vs. <feature>
14:00 * stevan looks at the TAP doc
14:00 * gaal really must grab a bite
14:00 * scook0 finally manages to build all the haddocked documentation -- thanks, theorbtwo!
14:00 stevan gaal: I wonder if in TAP we can just add support for reporting TODOs
14:00 gaal we can do it as an undocumented extension
14:01 stevan and then in the yaml harness we can get more detailed/pugs specific
14:01 gaal TAP doesn't *report* anything
14:01 gaal but it does say a test is TODO
14:01 stevan gaal: true
14:01 gaal it's the harness that decides to interpret not ok # TODO as "ok"
14:01 stevan ok, so we patch Test::Harness
14:01 gaal which is why
14:01 gaal exactly
14:01 stevan I guess what I am saying though is this
14:02 stevan reportnig TODOs is useful for others
14:02 stevan the different type of TODOs are only useful to us
14:02 stevan so if Test::Harness reports TODOs
14:02 stevan that will be good enough for us
14:02 stevan and then the YAML harness can differentiate
14:02 stevan since that is what we all use for development anyway
14:03 gaal okay, so if i understand correctly, this is just a small display change in Test::Harness.
14:03 stevan yes
14:03 stevan which I am sure the perl-qa folk would like and apply
14:04 nothingmuch see actual_ok
14:04 nothingmuch in TAP::Model
14:04 gaal and this is orthogonal to our force_todoings.
14:04 stevan gaal: yes
14:04 gaal actual_ok == false for not_ok # TODO, right nm?
14:04 nothingmuch yep
14:05 stevan Schwern's issue with our force_todo policy is that no one knows there are errors
14:05 gaal that's entirely our problem
14:05 nothingmuch actual_uk is really just the 'ok' or 'not ok' with no meaning
14:05 gaal by which i mean
14:05 gaal not a T:H issue
14:05 stevan IMO if we show our TODOs then we are still being honest, but avoiding uneeded bug reports
14:06 gaal okay, let's hack this then.
14:06 stevan gaal: ok I am lookin at T::H::run_all_tests
14:07 gaal stevan, mind if i disappear for a few miunutes? i really have to make myself a sandwich.
14:07 stevan gaal: go ahead, i will mess around with this
14:08 gaal beb &
14:08 gaal s/e/r/
14:18 gaal rehi
14:21 stevan gaal:
14:21 stevan this is pretty simple :)
14:21 stevan I think i have it already
14:21 gaal good :)
14:21 stevan basically it now outputs like this
14:21 stevan t/builtins/arrays/end....ok                                                  
14:21 stevan        1/16 skipped: just skippin, 2/16 TODO test(s), 1/16 unexpectedly succeeded
14:21 stevan All tests successful (1 subtest UNEXPECTEDLY SUCCEEDED) (2 subtests TODO), 1 subtest skipped.
14:22 stevan I added a skip and an unexpected succeedd
14:22 gaal woot
14:22 stevan just to see how itall looked
14:22 stevan but it basically just reports TODOs much like it reports SKIPS
14:22 stevan :)
14:24 autrijus yo.
14:24 shapr y0
14:24 stevan hey
14:24 autrijus stevan: you can start doing changelogs :)
14:24 stevan autrijus: sure thing boss :)
14:24 autrijus release eta less than 30 hours from now
14:25 gaal yay! release soon?
14:25 autrijus no other major changes planned
14:25 autrijus stevan: thanks!
14:25 autrijus gaal: sure... it's weekend again
14:25 stevan autrijus: I am not having luck connecting to openfoundry though
14:25 gaal stevan: i'm your backup man, yo
14:25 stevan gaal: :)
14:25 autrijus stevan: hm worksforme
14:25 autrijus stevan: is it dns?
14:25 stevan autrijus: I think so
14:25 autrijus try switch relocate to openfoundry.dyndns.org
14:25 stevan it will probably work soon, gaal has similar issues earlier
14:26 theorbtwo autrijus: sorry I've been a bit sloppy on my checkins of late -- I shall endevor to do better.
14:26 stevan ok
14:26 autrijus svn switch --relocate
14:26 autrijus theorbtwo: that's just fine, I do that all the time
14:26 autrijus :)
14:26 autrijus theorbtwo: think you can make "make haddock" work on 6.2.2?
14:26 autrijus (pugs 6.2.2 that is)
14:27 stevan openfoundry.dyndns.org works :) thanks
14:27 autrijus np
14:28 gaal oh crap, stevan i just noticed what day it is tomorrow and i may not be available as much as i'd like.
14:29 theorbtwo Ooof, makefile hacking.
14:29 stevan gaal: you going "up the river" as they say?
14:29 Odin- May day?
14:30 theorbtwo find src -name \*.hs|perl -pe 's/hs$/hpp/'|xargs make && haddock -h -o docs/haddock/ `find src -name \*.hpp` is what it should do.
14:30 stevan autrijus: we are hacking Test::Harness to show TODOs
14:30 stevan t/builtins/arrays/end....ok                                                  
14:30 stevan        1/14 TODO test
14:30 autrijus stevan: right, I saw that. wunderbar
14:30 stevan as an alternative to making everything die
14:31 gaal stevan, heh, no, though that might still happen :/
14:31 stevan I am going to submit the patch to the perl-qa folks
14:31 stevan gaal: passover related then?
14:32 gaal nah.
14:38 theorbtwo Doesn't passover end today and not tomorrow in Israel?
14:38 * gaal isn't the expert
14:38 nothingmuch it's ending! woohoo!
14:38 nothingmuch i just finished the pitas today
14:38 gaal tomorrow is a work day, but some people have some more celebrations
14:38 nothingmuch but i have some regular bread
14:38 * nothingmuch survived yet another year
14:39 shapr yay
14:39 * theorbtwo doesn't keep pasah dicha any more.
14:41 gaal oh, between isn't greedy? oooof.
14:41 theorbtwo "between isn't greedy"?
14:42 autrijus gaal: why, it is
14:42 gaal theorbtwo: parsec's between
14:42 autrijus open; x <- p; close
14:42 gaal oh! good. :)
14:42 autrijus it looks greedy to me
14:42 theorbtwo Ah.
14:43 autrijus i.e. if "p" here is "many1 anyChar"
14:43 theorbtwo BTW: I only know because I checked wikipedia.
14:43 autrijus then between will always fail
14:43 autrijus so it's not only greedy, it's committed
14:43 autrijus (i.e. not back tracking)
14:44 gaal er, does that mean i can't use it with <|> ?
14:44 autrijus hm?
14:44 autrijus sure can
14:44 autrijus as long as your "p" does not always match "close"
14:52 stevan cool, petdance is going to take the Test::Harness patch :)
14:52 gaal yay!
14:52 stevan I just sent him a patch for Test::Memory::Cycle this morning too :)
14:54 scook0 has quit IRC ("Leaving")
14:57 madhouse has joined #perl6
14:57 shapr Oh hey, I advertised pugs a bit at the end of a monads overview I posted on the pragmatic programmers yahoo mailing list - http://article.gmane.org/gmane.comp.p​rogramming.language-of-the-year/3286
14:57 autrijus nice. shapr++
14:58 autrijus instead of "container" I'd say "action"
14:59 autrijus but I realise monad has this dual nature :)
14:59 shapr Yes, I know it's a 'lie for teaching' but I don't know how to describe it as both without overwhelming the listener.
15:00 autrijus "how to turn a value into an action", and "how to combine two actions together"
15:00 shapr Hm, I'll try that on the next few people who ask for a monads tutorial on #haskell.
15:00 shapr The containers comparison seems easier for those used to objects.
15:01 autrijus yeah but IO is a more interesting monad than State. :)
15:01 autrijus I've run into people who thought State is all there is about monads
15:01 shapr Yeah, that's surprisingly common.
15:01 autrijus and came away thinking that trivial things in other languages takes lots of time in haskell.
15:01 jabbot pugs - 2524 - * same-named variables declared in inner
15:02 autrijus for me, (ReaderT IO a) is the canonical example when I talk about monad and transformers.
15:02 autrijus it has a certain elegance. :)
15:02 boogie has quit IRC (Read error: 110 (Connection timed out))
15:02 shapr I try to start with the Maybe monad because I think everyone has wished to abstract a huge stack of if-then-else.
15:02 autrijus er, no, people usually just use block exit.
15:02 autrijus aka return()
15:03 shapr Hm, I hadn't thought of that.
15:03 autrijus because most languages actually have ContT built in (but without callCC exposed)
15:03 shapr Maybe I'm pickier with my control flow.
15:03 shapr In that case, I really need to rethink my monads tutorial.
15:04 autrijus well, there will be people who think more like you, I'm sure. :)
15:04 autrijus we need all sorts of tutorials.
15:04 shapr I'm not convinced, most people seem instantly confused when I describe my thinking.
15:05 autrijus strangely it hadn't happened to me :)
15:05 shapr You're not most people ;-)
15:05 autrijus ...but all people are not most people...
15:05 shapr excellent point
15:06 shapr I truly hope I can end up hanging out with you for a few days in person at some point.
15:06 shapr I think I will learn a lot.
15:06 autrijus ICFP, likely.
15:06 shapr I'm not coming this year, sadly.
15:06 autrijus I'll submit to Haskell workshop.
15:06 autrijus oh. then Euro OSCON?
15:06 shapr Oh good idea!
15:06 * shapr googles to check dates
15:06 autrijus Euro OSCON could be expensive though, so make sure you get a talk accepted :)
15:07 shapr ICFP is also expensive, I might go if it were cheaper.
15:07 shapr I had *lots* of fun at ICFP2003.
15:08 autrijus brb
15:09 shapr Various real life difficulties have encouraged me to cut back on my output and take some time to search for balance, center, whatever you call it.
15:09 shapr Will you be giving a Perl talk at EOSCON?
15:10 autrijus yeah.
15:10 autrijus likely a 3hr tutorial about Pugs
15:10 autrijus at least.
15:10 shapr Spiffy. I could give a talk on QuickCheck and ports.
15:10 stevan autrijus: do you mind if I remove the PUG_RELEASE stuff? since TODOs are now reported?
15:10 gaal why is the inferred type of fileName () ?
15:10 gaal    fileName <- choice
15:10 gaal        [ do { (between (char '"') (char '"') (many anyChar)) ; trailingWhiteSpace }
15:10 gaal        , do { many1 anyChar ; trailingWhiteSpace }
15:10 gaal        ]
15:10 autrijus tentatively named "Perl 6 Bootstrap Camp"
15:10 autrijus stevan: sure, go ahead
15:11 shapr gaal: you haven't returned fileName
15:11 gaal ah!
15:11 gaal silly me :)
15:12 jabbot pugs - 2525 - adding some more tests for end.t
15:12 * webmind wishes perl6 was here
15:12 shapr It is here!
15:14 webmind not at the speed I like for production
15:15 * webmind could code his product in perl6
15:15 webmind but it won't be fast
15:15 stevan webmind: you could,.. at rate we are going, it will be fast enough
15:15 webmind what rate ?
15:15 shapr Yeah, did you see autrijus journal from yesterday?
15:15 stevan rate of development
15:15 webmind yeah
15:15 webmind how fast is it ?
15:15 autrijus webmind: actually, if you have your application coded
15:16 autrijus in pugs interpreter mode
15:16 stevan webmind: this week alone has seen 50%+ speed increase
15:16 webmind nice
15:16 autrijus chances are that we will help tailoring Parrot backend for you
15:16 autrijus to support the constructs you use
15:16 autrijus then it is guaranteed to be faster than perl 5.
15:16 webmind hm
15:16 webmind how do you mean?
15:17 stevan there is a feature for tests policy here
15:17 autrijus webmind: pugscc --parrot
15:17 stevan you want a feature,.. write a test
15:17 autrijus it generates parrot assembly code
15:17 autrijus that is very very fast.
15:17 webmind hmmm
15:17 autrijus almost guaranteed to be faster than perl5.
15:17 webmind ok
15:17 autrijus so you can use the interpreter mode to test corectness
15:17 webmind so how would that work with the perl6 modules I'm using now ?
15:17 webmind er
15:18 webmind perl5 modules
15:18 autrijus you can load them via ponie
15:18 autrijus talk to Nicholas on irc.perl.org #parrot for how
15:18 autrijus or, to test them with interpreter, you can use eval_perl5() support in pugs
15:18 autrijus (which needs some work, so tests welcome)
15:18 webmind hm
15:19 gaal webmind: or port the interesting ones to p6 :)
15:19 autrijus that too.
15:19 webmind gaal, that's a bit ovwer my head
15:19 webmind over
15:20 webmind :)
15:20 shapr Might not be, you never know until you try.
15:20 stevan webmind: what is your application?
15:20 gaal webmind, it's a great way to learn perl6
15:20 gaal because they already run
15:20 webmind stevan, making a decent photo album
15:21 webmind flexible, yet not too loaded
15:21 webmind gaal, uhuh
15:21 webmind I know it would
15:21 webmind be
15:21 gaal well, if you have to do lots of fancy image manipulation
15:21 gaal then the task sure ain't trivial
15:21 autrijus you can always call out to C libraries
15:21 gaal and you may need to embed c
15:21 autrijus actually I'm thinking about linking in libtap :)
15:21 autrijus (probably not)
15:22 webmind not really.. it's more having a good way to order your pictures, and having flexible interface
15:22 webmind which it is..
15:22 stevan webmind: well we alreayd have CGI.pm, and File::Spec, that should be a good start
15:22 webmind ah no
15:22 stevan :P
15:22 webmind I'm using the tempplate toolkit
15:22 webmind -p
15:22 stevan ah
15:23 gaal that would be nice to have in p6 :)
15:23 autrijus hm, I wonder if Test.TAP will make a good haskell library
15:23 autrijus gaal: indeed :)
15:23 webmind template toolkit and Image::MetaData::JPEG are the main modules I'm using
15:23 gaal autrijus, for haskell itself, or for pugs?
15:23 webmind gaal, yes
15:23 webmind Image::MetaData::JPEG is still experimental though
15:23 autrijus gaal: for haskell itself, _and_ for pugs
15:23 shapr Oh hey, I need to hook up with Alias again next time he's online and ask him for more HaskellDemo suggestions.
15:24 gaal my OR was not exclusiuve ;-)
15:24 autrijus as nice as quickcheck is, sometimes you want simple harnesses
15:24 autrijus oh. :)
15:24 gaal although ", or" is often parsed as XOR in english, isn't it.
15:24 shapr Yes, I think so.
15:25 autrijus $ perl -e 'undef = 3'
15:25 autrijus Modification of a read-only value attempted at -e line 1.
15:25 autrijus $ perl -e '(undef) = 3'
15:25 autrijus # ok
15:25 autrijus sigh.
15:25 autrijus I wonder if perl 6 is going to keep this behaviour ;)
15:25 gaal what got assigned as 4 :)
15:25 gaal err,
15:25 gaal 4--
15:25 gaal ahem. :)
15:25 autrijus :)
15:26 gaal oh, it's there so you can do
15:26 gaal (undef, $x) = something()
15:26 autrijus yeah.
15:27 stevan autrijus: I see the (undef) = 3 being somewhat similar to the _ in some functional langauges (Erlang is where I know it from)
15:27 autrijus right.
15:27 autrijus it's just overloading what undef stands for.
15:27 stevan although I would prefer something more like _
15:27 autrijus yeah.
15:27 stevan but _ is already taken
15:27 autrijus is it?
15:27 stevan $_, @_, etc
15:27 stevan and _ is the filehandle right?
15:27 stevan -e _
15:27 gaal before i knew about this syntax, i'd spell that as ($junk, $x) = ...
15:27 stevan gaal: me too :)
15:28 gaal _ is an annoying keyword in p5. it's always in main::
15:28 gaal autrijus, i think i send you a patch to gettext ages ago about that :)
15:28 autrijus that may be the case :)
15:28 gaal defininf sub _ { }  doesn't look like it works
15:29 gaal although it really sorta does.
15:29 stevan gaal: this works perl -e 'sub _ { print "hey" }; _();'
15:30 gaal stevan, try doing that in package Moose.
15:31 stevan ah
15:31 stevan I see
15:31 gaal what do you know, it works. maybe in older perls it didn't?
15:32 stevan it just died in 5.8.6 for me
15:32 gaal ahhh, right, i remember the problem.
15:32 gaal perl -le 'package Moose; sub _ { print "hey" } package Elk; _()'
15:32 gaal and anyway, now filiesh _ is screwed for life. :)
15:33 gaal i think when i first encountered this problem i had to trace perl to figure it out
15:34 gaal anyway: what's ambiguous about the read here?
15:34 gaal lineNum <- option Nothing (do { n <- many1 digit ; return $ Just (read n) })
15:35 gaal ....and is there a prettier way of saying this?
15:36 stevan ok the patched Test::Harness and the Test.pm with PUGS_RELEASE taken out are commited
15:36 gaal yay. stevan, want me to write an extract_todo tool?
15:36 stevan I will mess around with the :todo<bug> :todo<feature> stuff after this release
15:36 stevan gaal: what would it do?
15:37 autrijus gaal: you can use the "integer" builtin
15:37 gaal remember we said we wanted make test | force_todos > todos
15:37 autrijus or "decimal"
15:37 autrijus I think "decimal" is what you want
15:38 gaal autrijus; okay, but still what's wrong with what i tried?
15:38 autrijus gaal: nothing, it's just you have to annotate
15:38 autrijus (read n :: VInt)
15:38 stevan gaal: let me work out the :todo<attr> thing first
15:38 autrijus gaal: since you had not used lineNum anywhere
15:38 autrijus once you have
15:38 autrijus then that is unneccessayr
15:38 autrijus as it will know the type
15:38 gaal ah, i see!
15:38 autrijus actually, :: Int is right
15:38 autrijus VInt is not it
15:38 gaal thanks :)
15:39 autrijus the joy of inferencing :)
15:39 gaal i suspected something like that was happening because that very same line worked until i commented out something later
15:40 stevan I am off to do my weekend errands, bye all
15:40 stevan autrijus: I will get that changelog to you later this evening (6-8 hours)
15:40 * theorbtwo is back.
15:40 * castaway is forward
15:41 gaal bye, stevan!
15:41 * gaal is ever sideways
15:43 theorbtwo BTW, I'm going through and adding explicit signatures, since haddock documents signatures, and not so much the actual functions/instances.
15:44 autrijus stevan: cool
15:44 autrijus theorbtwo: yes, please go ahead
15:44 autrijus as complete as possible -- ghci is your friend
15:44 autrijus but please drop module name prefixes.
15:44 autrijus i.e. not Pugs.AST.Exp
15:45 autrijus and if you see room of narrowing
15:45 autrijus like
15:45 autrijus (Eq a) => [a] -> a
15:45 autrijus where it is only used for Val or Exp or Type
15:45 autrijus then please narrow it
15:45 autrijus it will buy us much performance according to skew.
15:45 autrijus (and is more readable anyway)
15:46 theorbtwo Can't use ghci.  Have been using ghc --show-iface=src/Pugs/foo.hi some, but that doesn't list everything (presumably it only lists exported functions when there is an explicit export list).
15:46 theorbtwo Will keep the narrowing advice in mind.
15:46 theorbtwo Have mostly been using error messages.
15:46 autrijus k.
15:47 autrijus "make ghci"
15:47 autrijus and then
15:47 autrijus :m Pugs.Prim
15:47 autrijus :t foo
15:47 autrijus has worked for me
15:48 gaal is what :t does a callable funciton?
15:48 gaal if so we can dump this for theorbtwo pretty easy
15:48 autrijus I don't know, I think hsplugins may have access for it
15:49 gaal find -name \*.hs| xargs perl -le 'print $1 if /^(\S+) =/
15:49 metaperl has joined #perl6
15:49 gaal but don't tell skew i used a regexp for that ;)
15:50 theorbtwo GHCi runtime linker: fatal error: I found a duplicate definition for symbol blkcmp
15:51 autrijus seen corion
15:51 jabbot autrijus: I havn't seen corion , autrijus
15:51 autrijus hm. I was about to ask whether he can write to p6l for me
15:51 autrijus or rather, for himself
15:51 castaway he's awake on PM, autrijus
15:51 autrijus Corion reported that <code>for @array { say }</code> broke, because <code>$_</code> is not the implicit argument in the inner block -- <code>@_</code> is.  I have special-cased to turn the block used in <code>for</code> to default to <code>$_</code> for now, pending further clarification.
15:51 gaal to2, rm src/UnicodeC.o
15:51 castaway shall I poke him?
15:51 autrijus castaway: or you can write p6l :)
15:51 castaway meee?
15:51 autrijus sure, you!
15:51 * castaway hides.
15:52 autrijus the problem needing clarification is a simple one :)
15:52 castaway last I read, it should topicalise to $_
15:52 * castaway looks where that was
15:57 autrijus pjcj: paul at pjcj dot net?
15:57 autrijus invitation sent :)
15:58 theorbtwo Don't forget to add yourself to AUTHORS.
15:58 castaway S06, under Switch Statements .. ?
16:00 castaway ".. any block that sets $_, including a for loop"
16:00 gaal autrijus, sorry for not just understanding this parsec thing already :), but: in oneLineComment, if somewhere i evaluate skipToLineEnd, that consumes the input and quits the parser successfully, right?
16:01 gaal ...but not if i'm in a nested do
16:01 gaal ...in that case i have to return skpToLineEnd, yes?
16:02 autrijus return skipToLineEnd?
16:02 gaal or maybe
16:02 gaal skipToLineEnd
16:02 gaal return ()
16:02 gaal ?
16:03 gaal the number of returns must match the number of dos?
16:03 autrijus well
16:03 autrijus if you say
16:03 autrijus skipToLineEnd
16:04 autrijus it is the same as
16:04 autrijus foo <- skipToLineEnd
16:04 autrijus return foo
16:04 autrijus if you want to do something but ignore what it captured
16:04 autrijus you do
16:04 autrijus thatSomething
16:04 autrijus return ()
16:04 Oejet has joined #perl6
16:04 autrijus read existing Parser.hs code for enlightenment (or more confusion) :)
16:04 autrijus I need to sleep.
16:05 theorbtwo G'night, autrijus.
16:05 gaal i'm of the 'be confused until you're enlightened' school.
16:05 castaway night autrijus  :)
16:06 gaal i just hope my eventual enlightenment matches my current confusion :)
16:06 TheHunter has joined #perl6
16:06 autrijus 'nite!
16:06 gaal night.
16:06 autrijus gaal: I'll pray for your nirvana :)
16:06 gaal thank you!
16:06 boogie has joined #perl6
16:07 TheHunter hi, what's the easiest way to get this Test::TAP::Model required for pugs' make smoke installed under debian?
16:08 theorbtwo Easiest? sudo cpan Test::TAP::Model
16:08 gaal TheHunter: do you have cpan?
16:08 TheHunter no.
16:08 castaway you do, unless you have a perl older than 5.6.0
16:08 castaway (or possibly older)
16:09 TheHunter oh, it's v5.8.4
16:09 gaal actually the one with all the deps is Test::TAP::HTMLMatrix
16:09 gaal so do what theorbtwo said but with that module instead.
16:09 castaway then just type "cpan" on in a dos  prompt
16:09 * gaal takes a break &
16:09 castaway umm.. s/dos prompt/terminal/ sorry
16:10 theorbtwo Best?  apt-get install dh-make debhelper; mkdir dh-make; cd dh-make; dh-make --cpan Test::TAP::Model; cd Test-Tap-Model-<tab>; sudo debuild; cd ..; sudo dpkg --install ./libtest-tap-model-perl<tab>
16:10 theorbtwo (Or something a lot like that.)
16:10 TheHunter ok, thanks.
16:12 simcop2387 has quit IRC ("Client exiting")
16:13 shapr castaway said dos prompt! <insert beavis/butthead 'uhuhu' quote>
16:13 castaway someone on another channel was looking for windows info, honest!
16:13 * shapr grins
16:14 * castaway ruffles shapr, long time no see
16:14 shapr Hiya castaway! How's the island?
16:14 shapr Work is getting in the way of my free time.
16:14 castaway bah, work
16:15 castaway tis purty good tanks
16:21 TheHunter ok, the best way is too painful. I'm gonna have to live with /usr/local being messed up by some perl stuff.
16:22 castaway then just to cpan <RET> install Test::TAP::Model
16:23 hlen has quit IRC (Read error: 110 (Connection timed out))
16:23 theorbtwo Hint: When it asks you if you want to do manual configuration, "no" is an acceptable answer, and it'll try to autoconfigure.
16:23 TheHunter oh, for the love of god. "make test had returned bad status, won't install without force"
16:24 TheHunter using force acceptable
16:24 theorbtwo Yep.
16:24 * shapr gets the hammer
16:24 TheHunter oki.
16:24 castaway hammer?
16:25 shapr Use enough force Luke!
16:26 TheHunter ok, thanks all.
16:31 larsen has quit IRC ("later")
16:48 Odin-LAP has quit IRC (Read error: 104 (Connection reset by peer))
16:48 Odin- has quit IRC (Read error: 104 (Connection reset by peer))
16:48 Odin-LAP has joined #perl6
16:48 Odin- has joined #perl6
16:54 putter has joined #perl6
16:58 putter With a few-minutes-old pugs, my make test is massively failing with "strange object 68" "Please report this as a bug to glasgow-haskell-bugs@haskell.org".  Is this a known problem?  x86_64.
16:59 shapr There are a few known GHC on x86_64 bugs, but I don't know if this is one of them.
17:00 putter tnx.  checking...
17:05 theorbtwo Uff.  Suddenly, for no reason I can see, util/munge_haddock.pl (with an argument!) is now hanging until I hit C-d.
17:05 mtve has quit IRC (Read error: 110 (Connection timed out))
17:15 ingy nothingmuch, gaal: ping
17:15 nothingmuch ingy: pong
17:16 nothingmuch i was wondering if there was a kwid impl that can do full kwid->html
17:16 nothingmuch but then i figured out Kwiki::Formatter->new->text_to_html($foo) was good enough for me
17:16 ingy nothingmuch: working on it
17:16 jhorwitz has joined #perl6
17:17 obk has joined #perl6
17:17 ingy nothingmuch: meet obk
17:17 * obk waves
17:17 ingy obk: this is nothingmuch
17:17 nothingmuch hola obk
17:17 obk Hi
17:17 nothingmuch too many of us here
17:17 ingy I think you guys are countrymen
17:17 nothingmuch israeli imperialism ;-)
17:18 nothingmuch see also gaal, lightstep, lumi, roie_m
17:18 obk Brian thinks we know each other
17:18 ingy obk wrote the YAML spec
17:18 obk True, Israel is about the size of Seattle, but still :-)
17:18 nothingmuch well, supposedly everyone knows everyone in israel, but we know that isn't really true ;-)
17:18 obk I hear you are doing a great job on the Perl6 interpreter
17:18 ingy but you guys all look the same ;)
17:19 nothingmuch gah, fscking petal... why won't it reencode the entities it decodes
17:19 obk Ingy, I don't look Israeli - if there is such a thing
17:19 ingy I am trying to persuade obk to open up his great work on the YAML parser, ala pugs style
17:19 * obk promises to open it up next weekend
17:19 nothingmuch does that mean it'll be in haskell or p6?
17:20 obk Nope. Straight ANSI C.
17:20 nothingmuch ah
17:20 ingy his impl is in C
17:20 ingy autrijus wants to do  a haskell version
17:20 ingy but autrijus wants  to do too many things :)
17:20 nothingmuch yeah, /me always does that too
17:20 nothingmuch so you mean the develpment model?
17:20 ingy aye
17:20 nothingmuch sure, i'm going to learn svk
17:21 nothingmuch and hack on pugs
17:21 nothingmuch and whatever
17:21 obk I'm certain it would be easier to write it in a functional language. I wrote a complete programming parser/lexer in a few 100 lines of dfcp...
17:21 ingy oren's work is quite amazing from what I've seen
17:21 Guest22311 has joined #perl6
17:21 nothingmuch at least i learned about catalyst this weekend
17:21 obk Its actually a horrible object-like framework - with coroutines - on top of ANSI C. Yuck.
17:21 nothingmuch obk: what are you using now?
17:21 nothingmuch YACC?
17:21 obk Nope, Yacc is useless for a streaming parser.
17:22 obk In fact, it pisses me to no end there's no common streaming parser generator out there.
17:22 * nothingmuch doesn't know either =P
17:22 nothingmuch don't know YACC, that is
17:22 ingy autrijus: ping
17:22 obk The difference is between "getNextToken" and "parse(tokenCallback)"
17:23 chady has joined #perl6
17:23 ingy is she asleep yet?
17:23 obk I ended up writing a framework for a getNextToken parser myself, and I'm now applying it.
17:24 obk I don't know whether the Haskell compiler knows how to do this sort of thing automatically - thread-less producer/consumer?
17:24 nothingmuch god damnit, i think i've read about 2000 lines of code this weekend
17:24 nothingmuch sick and tired
17:24 ingy autrijus: if you are around you should meld minds with obk for a few minutes
17:24 obk Ah, reading other people's code is the best way to get sick and tired...
17:24 nothingmuch at least search.cpan gives you a recursive grep
17:27 nothingmuch ooh, i think i can hack this in
17:27 * nothingmuch hopes no one will ever read the source code to the beyahad website
17:28 Khisanth has quit IRC ("Leaving")
17:29 castaway ingy, he went to bed a while back
17:29 ingy castaway: ok
17:29 nothingmuch obk: want to be the first person to see it that actually reads hebrew, apart from family and my boss?
17:29 nothingmuch boss being friend who needed this website
17:30 nothingmuch http://woobling.org:81/
17:30 * obk is looking
17:31 nothingmuch brb, i'm going to shoot it
17:31 obk What do you mean, "read Hebrew"? It seems like a normal web site. What am I missing?
17:31 nothingmuch see if it will encode now
17:31 nothingmuch most people i showed this too are english speakers =)
17:31 obk It does display in Hebrew in firefox under Gentoo...
17:32 obk Ah.
17:32 nothingmuch it better... i worked hard getting catalyst to pipe out utf8
17:32 theorbtwo "The connection was refused when attempting to contact woobling.org:81."
17:32 obk nothingmuch turned it off
17:33 nothingmuch ok, up once more
17:33 * nothingmuch bitches and cries
17:34 theorbtwo Looks nifty.
17:34 nothingmuch grazie, theorbtwo
17:34 obk What is character 0u0097? It doesn't exist in my Hebrew font.
17:34 nothingmuch probably mdash
17:34 nothingmuch or copy
17:35 nothingmuch i'm trying to get Petal to re-encode the entities it so graciously expanded for me
17:35 theorbtwo Hm, my copy of unicode says that 0x97 is nonexistant.
17:36 obk Mope, it seems to be some sort of control character. I got it in http://woobling.org:81/page/%D7%A7%D7%91​%D7%95%D7%A6%D7%94_%D7%9C%D7%A2%D7%96%D7​%A8%D7%94_%D7%A2%D7%A6%D7%9E%D7%99%D7%AA
17:36 theorbtwo Em dash is U+2014
17:36 crysflame aiee
17:36 Corion has joined #perl6
17:36 obk It appears right after "autonomy" in the first sentence of the second subject.
17:36 theorbtwo I see the box-with-0097 in my firefox.
17:37 theorbtwo My, that's a really obnixious-looking URL.
17:37 obk Hebrew encoded as UTF-8 and then escaped using URL %xx. As ugly as it gets...
17:38 obk BTW, does anyone know if there's a way (a font name or something) to force the display of arbitrary characters as these numeric-value unicode boxes? It is useful for my debugging of YAML parsing errors.
17:38 nothingmuch obk: yeah, i'll make the URLs bilingual eventually
17:39 nothingmuch obk: that's an mdash
17:39 theorbtwo Hm, should work to set it to show in a font that doesn't include non-ascii chars.
17:39 nothingmuch theorbtwo: i'm trying to fix that right now by making MkDoc::XML::Encode use a better hash
17:40 theorbtwo http://www-950.ibm.com/software/globa​lization/icu/demo/unicode?go=0097&amp​;ch.x=0&amp;ch.y=0&amp;ch=ch&amp;us= lists 0x97 as "control".
17:40 nothingmuch and not do only 'amp', 'lt', 'gt' and that other thing
17:40 nothingmuch hah
17:40 Corion nothingmuch: You did stuff in Catalyst, right? Is there a guided tour of Catalyst somewhere? I feel/fear that mostly, Catalyst creates a lot of scripts for you once, and if you change stuff, you have to recreate. Where do I look/start?
17:40 theorbtwo I think you got snookered by a Microsoft perversion of a standard charset.
17:40 nothingmuch then no wonder it's broken
17:41 nothingmuch Corion: look at ::Tutorial briefly
17:41 nothingmuch then ::Intro briefly
17:41 nothingmuch generate, and look at all the .pm files
17:41 nothingmuch they're simple
17:41 Corion willdo :)
17:41 nothingmuch then read through ::Intro more carefully
17:41 nothingmuch it's very streight forward
17:41 nothingmuch Maypole was a heap, but this is very simple stuff
17:43 Corion nothingmuch: I didn't find Maypole hard. In the end, I mean. But I want-need to implement some good browser for a dataset, and it screams for a webapp (import/export/transport browsing)
17:43 nothingmuch it's easy
17:43 Corion ... that is, import/transport/export of data between programs
17:43 Corion nothingmuch: I'll look into it
17:43 nothingmuch but when i tried it was unfun to hack
17:43 nothingmuch catalyst's code is much more streight-forward
17:43 chady has quit IRC (Read error: 60 (Operation timed out))
17:44 nothingmuch at least that's what maypole was when I tried it
17:45 nothingmuch damnit! why is it being loaded after me
17:47 * nothingmuch sighs
17:49 * nothingmuch types 'sudo gvim /usr/local/lib/perl/site_porl/...' for the 100th or so today
17:49 mauke hoho, porl
17:49 theorbtwo It might work better if you s/porl/perl/.
17:49 nothingmuch oh! MKDoc not MkDoc
17:50 nothingmuch i hate case insensitive FSs
17:50 nothingmuch theorbtwo: try p<tab>
17:50 obk Well, got to go... Keep up the good work.
17:50 obk has quit IRC ("vanishes in a puff of logic.")
17:50 nothingmuch ciao
17:51 integral|ZzZzz has quit IRC (Read error: 131 (Connection reset by peer))
17:53 _integral has joined #perl6
17:59 putter is there an easy way to disable gc?
18:00 elmex ?
18:03 putter sigh.  regret to inform that 6.4 is no longer sufficient to run pugs on x86_64.
18:03 elmex can't connect to svn.openfoundry.org ?!
18:04 putter allegedly a compacting gc bug, fixed in HEAD and eventually in 6.4.1.
18:05 putter make optimized is also failing (differently?).
18:05 Guest22311 has quit IRC ()
18:05 elmex has the svn rep of pugs moved?
18:05 elmex svn: PROPFIND of '/pugs': could not connect to server (http://svn.openfoundry.org)
18:06 theorbtwo I got that a minute ago, apparently people have been having problems all day.
18:06 theorbtwo Somebody had a svn switch command, which I was going to find and then got distracted (thanks).
18:07 Corion I have that problem too, but kept silent about it :) No pugs hacking this weekend. Or so I think ;)
18:07 Corion svn switch
18:07 Corion or something. The backlog has it.
18:07 Corion Or svn relocate
18:07 Corion I don't know
18:07 elmex hmm...i tested pugs the day before yesterday... and somehow experienced not that much speed ...
18:07 broquaint has quit IRC ("Chatzilla 0.9.68a [Firefox 1.0.3/20050414]")
18:08 castaway openfoundry.dyndns.org
18:08 castaway svn switch --relocate
18:08 elmex ./pugs -e 'my ($i, $a); loop ($i = 0; $i < 10000; $i++) { $a += 3 } say $a' takes 5.4 seconds for me...
18:11 putter aside from make, make optimized, and make profiled, is there any other pugs variant I can try to hopefullly sidestep the gc problem?
18:12 putter (clarification: I haven't actually tried profiled yet)
18:12 theorbtwo svn: PROPFIND of '/pugs': could not connect to server (http://openfoundry.dyndns.org)
18:12 theorbtwo There goes that idea.
18:13 shapr You could try the darcs repo.
18:13 theorbtwo Is it bidirectional?
18:13 theorbtwo I have stuff I want to check in.
18:14 shapr It depends.
18:14 shapr You can send patches by email just fine.
18:14 shapr Also, if your repo is http accessible, other people can just update from your repo as well to get patches.
18:14 shapr And you can do the same from theirs, so darcs doesn't really need a server at all.
18:15 shapr I don't think autrijus has set up the darcs repo to put patches back into svn, but it will let you work with the pugs sources in a source control system and share patches with others.
18:17 shapr Does that answer your question sufficiently? Or did I leave out some useful details?
18:18 castaway ooh, Episode IV
18:20 TheHunter has left "Leaving"
18:22 jhorwitz has quit IRC ("Chatzilla 0.9.67 [Firefox 1.0.1/20050223]")
18:27 elmex btw: a small quest what does this mean in perl6:
18:28 elmex sub { my $fo = open ... or die ...; print $fo "blubb\n"; } - does it mean: write "blubb\n" to a file and close it, OR does it mean: write "blubb\n" to a file and forget the filehandle and leak it?
18:33 malpertuis has joined #perl6
18:35 putter has quit IRC ("Leaving")
18:35 theorbtwo elmex: Write "blubb\n" to a file and close it... when we get around to it.
18:36 theorbtwo (Except that's say $foo: "blubb", or $foo.say("blubb").)
18:36 elmex theorbtwo: well... perl6 doesn't gurantee timely destruction
18:37 theorbtwo Right.
18:37 elmex and now imagine i call that sub 40000 times
18:37 elmex and the gc doesn't run
18:37 elmex becaus i give it 10000 mb ram
18:37 elmex or maybe just 30mb
18:37 elmex => no memleak, but my progam will run out of filehandles
18:38 theorbtwo It'll probably do a gc run when it runs out of filehandles.
18:38 elmex what do filehandles have to do with memory? i thoguht a GC is there for memory
18:39 castaway anything thats garbage ..
18:39 theorbtwo Exactly.
18:39 theorbtwo If doing a gc run will sometimes free up filehandles, then doing it when we're out of filehandles seems smart.
18:40 lightstep has joined #perl6
18:40 elmex theorbtwo: then imagine i do open database-handles or other kinds of handles
18:40 elmex maybe a user defined handle type :)
18:41 theorbtwo Opening and closing things over and over is always a poor programming pratice.
18:41 theorbtwo Now there's just another reason it's bad.
18:42 elmex theorbtwo: well, it's not _this_ particular example
18:42 elmex theorbtwo: what about modules i use? if they do stuff with handles?
18:42 theorbtwo Use the source, luke.
18:42 castaway how many is it likely to have that you run out?
18:43 elmex theorbtwo: i do have to know the source of all modules i use?
18:43 theorbtwo The untimely distruction the pugs people were talking about was possibly a few ms late under normal conditions.
18:43 castaway or at least what they do
18:43 revdiablo so, relying on destruction for closing filehandles might not be the best practice
18:43 revdiablo s/file//
18:44 elmex castaway: that wont matter. imagine a deamon that has enough ram, so that the GC won't have to run often... will it crash because the handles run out after 10 days where no GC ran?
18:44 elmex revdiablo: so, it's a bug
18:44 elmex revdiablo: it will invite perl5 programmers to do that bug. and it's hard to find. and it's not do-what-i-mean
18:44 * revdiablo imagines elmex has been waiting to say that for 10 minutes
18:45 elmex i havent
18:45 theorbtwo It's a sad trade-off.
18:46 elmex it's not DWIM
18:46 elmex propably ther will be:
18:46 elmex sub { auto $foo = open .. }
18:46 castaway opening a handle and not closing it, but waiting for it to magically vanish, is DWIM ?
18:46 theorbtwo Yep, it is, castaway.
18:46 elmex castaway: in perl5 it's gurateed, YES
18:47 castaway ah, nevermind me then
18:47 elmex and a gc run for filehandles: how does the GC determine that there are too many open filehandles?
18:47 castaway then I suspect it'll work here eventually ,)
18:47 saorge{PuLa} has quit IRC ("Leaving")
18:47 elmex anyway, it's a tradeoff
18:47 theorbtwo The way that perl5's GC works has the nice property of timely distruction.
18:47 theorbtwo It has lots of not-nice properties too.
18:48 elmex theorbtwo: perl5 uses refcounting
18:48 theorbtwo Correct, elemenx.
18:48 elmex circular ref's leak
18:48 theorbtwo It's slow.
18:48 theorbtwo Circual refs leak.
18:48 theorbtwo It's very error-prone.
18:49 elmex so parrot/perl6 will be fast and circ refs won't leak
18:49 theorbtwo It's very infectious -- it makes it very difficult to write XS code, because all code that touches anything perlish has to know about the refcounting.
18:49 elmex well, thats indeed a feature
18:49 elmex but the tradeoff is timely destruction
18:49 theorbtwo Correct.
18:50 theorbtwo But untimely normally isn't that slow.
18:50 elmex of course
18:50 elmex perl6 will be rockfast
18:50 theorbtwo Laggy, I should say, not slow.
18:50 Corion has quit IRC (Read error: 131 (Connection reset by peer))
18:51 elmex but... well :) poor perl5 programmer that 'updates' his perl to perl6 will probably run into leaking handles if he forgets some { auto $fo = ... } idiom or something like that...
18:51 Corion has joined #perl6
18:52 elmex in end effect: manual resource management
18:52 elmex like java :)
18:52 elmex (but with nicer syntax)
18:52 theorbtwo Not really, no.
18:53 shapr I think I'll enjoy using Perl6.
18:53 theorbtwo Like I said, untimely distruction will not be all that untimely, unless you mess with the gc parameters by hand, in which case you deserve what you get.
18:54 elmex well, but a GC doesn't gurantee it will run in the next 10 days if there is enough RAM... or does it also have to know how many mysql handles there are? well...
18:54 elmex shapr: i probably will enjoy it too :)
18:54 elmex shapr: there are a lot of cool features
18:54 elmex shapr: and it' will probably be quite fast
18:55 shapr Though I sort of feel sorry for my future coworkers. If they don't understand Haskell and Perl, they'll be in for a bit of reading.
18:55 elmex :)
18:55 elmex *g*
18:55 theorbtwo elmex: Perhaps DBI will be smart enough to start a GC run if it appears that it's out of handles.
18:55 elmex theorbtwo: so DBI will be fast but not leaky
18:55 elmex err... s/fast/slow/
18:55 theorbtwo The idea is that a single gc run should be fast, so you won't notice it.
18:55 theorbtwo Nope, elmex.
18:56 theorbtwo A GC run can be very fast, if you have a very fast GC.
18:56 elmex theorbtwo: how will that be gurateed for 100000 objects? ;)
18:57 theorbtwo elmex: 100k objects ain't nothin'.  The Parrot people had problems at that load, and fixed them, years ago.
18:57 theorbtwo Now it gets a bit slow when there's more then a few hundred million living objects.
18:57 elmex interesting
18:59 elmex well, i'm not shure DBI will know whether it runs out of handles... but holding open 100 mysql connections until I run out of them (not caring about other processes or users).. isn't smart
18:59 elmex all that there is to do: the module programmers will have to care about it
19:00 chromatic has joined #perl6
19:01 chromatic Who's coding today?  I have a laundry list.
19:01 castaway nobody, svn is playing up again
19:01 * castaway points at shapr anyway
19:01 shapr wha?
19:01 chromatic Seems okay for me at rev #2622.
19:01 shapr What did I do?
19:02 castaway I'm nominating you.
19:02 shapr I'm busy organizing the second issue of The Monad.Reader
19:02 elmex theorbtwo: i also don't really belive that the GC can really be that fast... java GC takes 4+ seconds when taking up 250Mb ram here ...
19:02 * shapr escapes!
19:02 castaway nooo
19:03 elmex theorbtwo: but parrot is free surprise me there in the real perl6 world when it's done :)
19:04 chromatic I have here a (theoretically) working port of Test::Builder to Perl 6.
19:04 chromatic It awaits some review from the rest of @Larry for a few syntax and implementation issues of which I remain blissfully confused.
19:04 chromatic However, I have a list of all of the features of Perl 6 it needs.
19:04 castaway :)
19:04 theorbtwo Theoretically valid p6 (you think), but not working in parrot, you mean?
19:05 castaway add them to the todo tests ?
19:05 chromatic I'm not sure how to answer that.  It's Perl 6 code, not Parrot code, so no, but it requires nothing from Parrot that's not already there (or emulable).
19:06 theorbtwo Err.
19:06 revdiablo has quit IRC ("leaving")
19:06 theorbtwo but not working in pugs, you mean.
19:06 chromatic Right, I believe so.
19:06 malpertuis has quit IRC ("Leaving")
19:07 * theorbtwo is actually surprised to learn that 'chromatic' !~ @larry.
19:07 chromatic Technically, I am: http://dev.perl.org/perl6/people.html
19:08 castaway ooh, secretary, highly technical job that
19:08 chromatic It means that I type faster than anyone else.
19:08 castaway heh
19:09 * theorbtwo wonders if the secretary is responsible for the index.
19:09 chromatic No.  That's why I suggested "amanuensis".
19:09 jhorwitz has joined #perl6
19:10 nothingmuch mofo!
19:10 revdiablo has joined #perl6
19:10 * nothingmuch hates HTML, and XML, and templating!
19:10 nothingmuch *whine* *bitch* *cry* *blame parents*
19:10 chromatic Anyway.
19:11 * castaway ruffles nothingmuch
19:11 chromatic If I were to name the features I needed, are there people who could say "We have that!" or "Write a test in the file named _____.t"?
19:11 autrijus 03:04 < chromatic> However, I have a list of all of the features of Perl 6 it
19:11 autrijus needs
19:11 castaway good timing autrijus
19:11 autrijus show me the list so I can sleep? :)
19:11 castaway *g*
19:12 chromatic Line at a time in the window so it shows up in the log or uploaded somewhere?
19:12 autrijus er, nopaste.
19:12 * castaway wonders how long
19:12 autrijus or uploaded somewher.
19:12 autrijus but best, mail to p6c/p6l
19:12 chromatic 32 lines
19:12 autrijus perlbot: nopaste
19:12 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
19:13 pasteling "chromatic" at 63.105.17.30 pasted "Perl 6 Features Needed for the Test::Builder Port" (32 lines, 940B) at http://sial.org/pbot/9786
19:14 elmex chromatic: ah, you've wrote a mail about finalization. do you think that finalizers, that run very late (probably after you run out of filehandles), are of much use?
19:14 autrijus oh, chromatic , as you are here, a quick question
19:14 autrijus for @array -> { $_++ }
19:14 autrijus is it legal?
19:14 chromatic elmex: it depends
19:14 autrijus is $_ somehow special that it has a "is rw" tackled on?
19:14 nothingmuch theorbtwo: can you please try that URL again, and tell me if the mdash displays properly?
19:14 chromatic autrijus, I'm not sure.  I *think* so, but I'm not sure.
19:15 nothingmuch then maybe i can forgive myself for what I did to get that working
19:15 elmex chromatic: you have to make shure that your finalizers, who close filehandles, run before you run out of filehandles. and not when the gc decides that it runs out of mem
19:15 chromatic elmex, that's why I think it's important to make a clear distinction between finalization and destruction.
19:16 castaway we dont have classes yet, do we?
19:16 chromatic Finalization is for clearing up used resources, such as filehandles, database connections, sockets, and unmanaged memory.  Destruction is for cleaning up managed memory.
19:16 autrijus ok, let me shorten that list to things that Pugs doesn't yet have.
19:16 castaway autrijus: didnt I answer that yesterday/earlier ?
19:16 chromatic That's a little complicated when you finalize something that you're holding onto elsewhere, but that's a problem with destruction anyway.
19:16 autrijus castaway: yes you did
19:16 castaway (yes it defaults to rw)
19:16 theorbtwo nm, I still see the 0x97 box.
19:16 theorbtwo Even after a force RW.
19:17 autrijus what is "hash key setting"
19:17 nothingmuch in that case I think your font doesn't have '&#x97;' and i should change from it
19:17 chromatic        $status{"skip"}   = 1;
19:17 elmex chromatic: i think, to have some kind of mostly-timely destruction, you need something like: { auto $fh = open "foo.txt" or die; ... print $fh; } - note that a my $fh will be collected on next gc run. => either on scope-exit a run or when you run outof mem.. if you do scope-exit collection, you have to have a fsckin fast gc
19:17 autrijus oh. sure.
19:17 autrijus P5-style global substitution with negative-width lookahead
19:18 autrijus if you can settle for rx:P5//
19:18 autrijus then we are all set
19:18 chromatic    $line ~~ s:perl5:g{\n(?!#)}{\n#};
19:18 autrijus cool.
19:18 theorbtwo That's not suprising; like I said, it's not actually in latin-1 or unicode, just in MS's perversions thereof.
19:18 nothingmuch oh, didn't know that
19:18 nothingmuch i think i missed that part in chat
19:18 chromatic elmex, I think people want timely *finalization*, not timely destruction.
19:18 nothingmuch got any reccomendation?
19:19 autrijus ok, 8 things.
19:19 autrijus object attributes of Bool, Int, Str
19:19 autrijus private class attributes marked "is rw"
19:19 autrijus invocantless attribute access in methods
19:19 autrijus empty classes
19:19 autrijus class inheritance
19:19 autrijus method redispatch through *WALK to supermethod
19:19 autrijus submethod allowed
19:19 autrijus delegation of methods to objects stored in object attributes
19:19 nothingmuch &#8212; ?
19:19 theorbtwo http://www-950.ibm.com/software​/globalization/icu/demo/unicode, search for "m dash" at the bottom under "name".
19:19 autrijus other things are either already there or trivially true after the 8 things are implemented.
19:19 autrijus that doesn't sound so bad.
19:19 theorbtwo U+2041.
19:19 chromatic It's not particularly complicated code.
19:19 autrijus now if we can compile that to parrot.
19:19 elmex chromatic: well, yes, of course. but how do you do timely finalization? if you want to do it with a GC it hast to be fast. if you use some kind of syntactic sugar like 'auto' it's kind of manual resource management
19:20 autrijus I think from the list that it's quite doable too.
19:20 chromatic I could probably rewrite parts of it in IMCC, but I don't know how that translates to Parrot AST.
19:20 autrijus I thought the point of parrot ast
19:20 autrijus is that you don't have to know that.
19:20 autrijus you can drop to imcc level at any time
19:21 chromatic elmex, it's an end-of-scope action.  In theory all it has to do is register the auto-finalize stuff with that hook which can be very fast.
19:21 autrijus but, hey, if you can translate it to IMCC, that's wonderful
19:21 chromatic It doesn't have to mark and sweep the world or scan the current generation.
19:21 autrijus because my IMC generator monad will just use what your translation offers.
19:21 autrijus when thif that works,  then the Pugs AST _is_ Parrot AST.
19:22 chromatic autrijus, the advantages of IMCC are that it works and it has documentation.
19:22 autrijus sigh, laggy connection
19:22 elmex chromatic: yes, i hope that will work if i do { my $fh = open ... } ... objects need a special tag... and there needs to be a system for that...
19:22 autrijus chromatic: as compared to Perl6? :)
19:22 nothingmuch try again?
19:22 chromatic Let me rephrase that then.  The advantages of IMCC is that I already know how to write it or, at worst, read the code.
19:22 chromatic s/is/are/
19:23 autrijus hm. and you can't do that for perl 6?
19:23 autrijus I'm puzzled :)
19:24 chromatic See, now you're just picking on me.
19:24 chromatic Where's the respect for your elders?
19:24 * autrijus pouts. I'm genuinely curious. :)
19:24 Corion . o O ( Pugs didn't get started out of respect :) )
19:25 autrijus but, in all seriousness. I'd love to see your code, and if you can translate whatever part of it to IMCC
19:25 autrijus then I'll make sure that Pugs can compile those parts to equivalent IMCC.
19:25 autrijus how about that. :)
19:25 chromatic Sure, that's pretty easy.
19:25 autrijus woot.
19:26 chromatic I've asked Damian and Luke to review the code to pick up any changes I've missed and I'll send it in as soon as they do.
19:26 autrijus oh btw.
19:26 autrijus my $foo = { say $_ };
19:27 autrijus what is signature of $foo?
19:27 autrijus *$_ or $_ ?
19:27 autrijus or neither? both?
19:28 chromatic $_.
19:28 chromatic It doesn't splat.
19:28 chromatic It only takes the first argument.
19:28 autrijus so
19:28 autrijus $foo(1, 2)
19:28 autrijus is fatal?
19:29 chromatic It depends on how strict signature checking is.
19:29 autrijus because that's what happens when you have a nonsplatty scalar.
19:29 autrijus "Too many arguments" as defined in S06
19:29 chromatic There might be a restrictive pragma in effect.
19:29 autrijus ok. but I'll make it nonsplatty. thanks!
19:29 chromatic Anytime!
19:30 autrijus oh, a related question
19:30 chromatic Go ahead.
19:30 autrijus sub { say "123" }
19:31 autrijus it has a *@_ signature?
19:31 autrijus sub { say }
19:31 autrijus what about this?
19:32 chromatic I don't know about the first one, but I guess that the second has *@_, or at least propagates the signature of say().
19:32 chromatic That's just a guess, not a Mosaic ruling.
19:32 autrijus sub { say; say; say }
19:32 autrijus I don't think that propagates anything, does it?
19:32 autrijus so, in this
19:32 autrijus for 1..10 -> { say }
19:33 autrijus does the pointy there also have *@_?
19:33 autrijus and how does say pick up @_[0] as $_?
19:33 chromatic Good question.
19:33 autrijus is for() explicitly topicalizing?
19:33 autrijus but if it is merely a statement:<for>, how does it do that?
19:33 chromatic In the absence of placeholders, how do you know the count?
19:33 autrijus right.
19:33 chromatic I can only agree that that's the question!  :)
19:34 autrijus my current heuristic is that signatureness closures, when used in "fo"
19:34 autrijus "for"
19:34 autrijus assumes a ($_)
19:34 autrijus since that is what most people expect.
19:34 chromatic That seems reasonable in the absence of any other ruling.
19:34 autrijus can you check it for me, or should we bring it to p6l?
19:34 autrijus for 1..10 -> () { say "you won't see this" } # and this infinite loops... right?
19:35 chromatic I expect not, but I don't know.
19:35 elmex has quit IRC ("leaving")
19:35 theorbtwo I don't understand why that'd inf-loop.
19:35 chromatic I expect for to consume the looping, not the arguments.
19:36 autrijus hm?
19:36 theorbtwo Oh -- each time through the loop, it eats 0 arguments, until 0 are left of the original 10.
19:36 autrijus for 1..10 -> ($x, $y) { ... } # this loops 5 times.
19:36 autrijus and 10 / 0 is ... Inf
19:36 theorbtwo Right, was being momentarally stupid.
19:36 chromatic It takes no parameters, not zero parameters.
19:37 chromatic It's one of those "this is important to math" differences, I guess.
19:37 autrijus not understanding
19:37 castaway 10 / undef ?
19:37 chromatic If there are multiple parameters, it does eat up multiple values.
19:38 chromatic If there are no parameters, it eats up one value per iteration, but you can't access them by name.
19:38 chromatic Eating up multiple parameters is a special case, like multiplayer Pac-Man.
19:38 castaway and default is 1 ?
19:38 chromatic Yes.
19:38 theorbtwo If there's no explicit signature, it eats one parameter (into $_).
19:38 castaway makes some sense
19:38 theorbtwo But there is an explicit signature.
19:38 chromatic So no parameter.
19:38 chromatic Inside the block.
19:39 autrijus ok.
19:39 * autrijus slaps a (min 1) somewhere
19:39 theorbtwo Making it an error?
19:39 chromatic Think of a number, any ten numbers, but don't tell me what they are!
19:39 castaway ,)
19:39 gaal other oprions are run never or raise compile time error?
19:40 chromatic I don't know about the error.  I could argue either way.
19:40 theorbtwo Oh.  So it takes one parameter, and throws it away?
19:40 chromatic theorbtwo, yes, though I might say it throws away a potential parameter before it even thinks about taking it.
19:40 chromatic It steadfastly refuses to take a parameter.
19:40 gaal if we take the run never option it might be useful as a quick way to comment out a block.
19:40 autrijus I'll do the "min 1" ;)
19:41 autrijus someone write a test?
19:41 castaway stubborn thing ,)
19:43 gaal cygterm + http://home.tiscali.de/emil​io.lopes/screen/screen.html == almost non sucky windows system!
19:44 Corion gaal: Why would anybody want to do that? :-)
19:45 gaal because the windows terminal sucks rotting wooden donkey arse.
19:45 theorbtwo At some point, you get to the point of "just run linux already, you silly idiot".
19:45 Corion gaal: I'm quite content with it...
19:45 Corion theorbtwo: But then you lose the hardware, printing, gaming and about everything else :-)
19:45 gaal theorbtwo, you don't understand
19:45 gaal i already do run linux
19:45 nothingmuch Corion: i remember you wanted something like google complete
19:45 nothingmuch Catalyst does that
19:45 gaal on the other machine.
19:46 nothingmuch one second, i'll show you
19:46 gaal but the other machine is slow :)
19:46 Corion Am I doing something wrong, or is my network connection broken? "svn switch --relocate http://svn.openfoundry.org http://openfoundry.dyndns.org" gives me no love
19:46 Corion nothingmuch: I know (S)ajax
19:46 theorbtwo Gives me no love either, Corion.
19:46 nothingmuch it's tré´s´´coó´l
19:46 Corion theorbtwo: Ah :)
19:46 gaal Corion, svn has been acting up since ~12 hours ago.
19:46 gaal on and off.
19:46 Corion theorbtwo: But that would be bad anyway, 'cause you got your love at home ;)
19:47 gaal ah, you know that.
19:47 theorbtwo Oy.
19:48 * theorbtwo plays with his çômþößé kèÿ.
19:48 shapr w00
19:48 castaway ,)
19:48 theorbtwo BTW, X is stupid -- compose,i,j does not give ÿ.
19:50 shapr Shouldn't it give the Dutch connected ij ?
19:50 shapr Oh wait, y uml is the same thing, right?
19:50 shapr Yeah, I remember, y uml was a mistaken form of the Dutch ij.
19:51 Aankhen`` has quit IRC ("Induhvidual quote: "Not to toot my own horse, but......" [Time wasted online: 7hrs 4mins 56secs]")
19:53 chromatic has quit IRC ("out of battery power")
19:56 autrijus really zzz &
19:56 castaway sleep well, autrijus
19:56 theorbtwo Sleep well, Autrijus-San.
19:56 theorbtwo (Or is that s/San/san/?)
19:58 lightstep has quit IRC ("leaving")
19:59 Corion -sama :))
20:10 Entwicklung has joined #perl6
20:13 Entwicklung has quit IRC ()
20:35 lampus has joined #perl6
20:37 Corion has quit IRC ("Chatzilla 0.9.68a [Firefox 1.0.3/20050414]")
20:40 ingy Perl6-Bible-0.16.tar.gz on cpan now
20:46 obra hey ingy
20:46 ingy yes?
20:47 obra how goes?
20:47 obra that was a hello, not a "and I need..."
20:47 ingy it all goes
20:47 obra ;)
20:47 ingy oh
20:47 ingy hey there obra ;)
20:48 ingy I'm  doing good
20:48 ingy out with the old in with the, well, older actually. you know
20:49 ingy is the pugs repos down again?
20:50 mauke does anyone here know of a binary distribution of ghc 6.4 for x86 linux that doesn't require glibc 2.3?
20:52 G2 has joined #perl6
20:56 castaway It::All::Goes ?
20:58 ingy castaway: that sounds like a cool nnew project
20:58 ingy don't tempt me
20:58 ingy I just released a new Test::Chunks
20:59 ingy It is getting very cool
20:59 ingy Can't wait to port to Perl6
20:59 ingy need classes first...
20:59 ingy hmm.
20:59 ingy I should just preport it
21:00 wolverian I have been putting off coding things, waiting for pugs to get OO
21:00 wolverian not a very productive attitude, I guess
21:00 ingy wolverian: yeah
21:00 wolverian you too? :)
21:00 ingy I don't write anything but 1-liners that aren't OO these days
21:01 ingy and i don't write OO that isn't Spiffy
21:01 ingy of course Perl6 is already Spiffy
21:01 shapr I'm tempted to ask how you define OO...
21:01 ingy built right  in
21:01 shapr But I should probably write worky code instead.
21:01 ingy shapr: ask away
21:01 shapr No, I am afraid :-)
21:01 ingy what is your concern?
21:01 ingy haha
21:01 shapr I will never get my work done if I start an interesting conversation!
21:02 theorbtwo has quit IRC ("Download Gaim: http://gaim.sourceforge.net/")
21:03 cosimo has joined #perl6
21:04 theorbtwo has joined #perl6
21:05 shapr has left "worky"
21:07 elmex has joined #perl6
21:15 cosimo has left "goodbye"
22:00 Limbic_Region has joined #perl6
22:05 saorge has quit IRC (Read error: 110 (Connection timed out))
22:05 iblechbot has quit IRC (Connection timed out)
22:06 saorge has joined #perl6
22:11 autrijus hm. I notice that tpe.freepan.org is never down when svn.openfoundry.org goes down on weekends
22:11 autrijus despite them being in the same building.
22:11 * autrijus seriously considers switching over to freepan
22:12 Limbic_Region autrijus are you still up or have you slept already?
22:13 autrijus I have slept for... I think 40 minutes
22:13 autrijus I feel refreshed!
22:13 Limbic_Region my wife would kill me
22:14 * jhorwitz is jealous -- needs 8 hours to feel refreshed.
22:14 autrijus eh?
22:14 castaway werent you in bed? ;)
22:14 Limbic_Region just that between work and playing on the computer when I get home - "bed time" is her time
22:15 Limbic_Region she would be just a tad bit upset if I got up after only 40 minutes
22:16 autrijus ah.
22:16 Limbic_Region autrijus - the failing last.t test is due to last inside a nested loop exiting from all levels - not that I know the first thing about Haskell, but if I were going to start looking where would I start?
22:17 autrijus Limbic_Region: hm. enterLoop in Monads.hs defines it
22:17 autrijus I wonder if it's broken always or just recently
22:18 Limbic_Region AFAIK, there was no test testing it
22:18 Limbic_Region until I added one
22:19 autrijus confirmed as broken
22:19 G2 has quit IRC ("oops")
22:19 autrijus likely because the outer last is seen
22:20 Limbic_Region well if you know how to fix it without much thought be my guest
22:20 * Limbic_Region will try and add more tests and find another bug
22:20 Limbic_Region ;-)
22:21 autrijus fixed.
22:22 castaway heh
22:23 elmex_ has joined #perl6
22:24 Limbic_Region my idea to learn p6 better and spread advocacy is start answering questions at the Monastery with a p5 and p6 answer
22:24 Limbic_Region much like Randal did in the early days of Perl
22:24 Limbic_Region and when applicable, add the solution in examples
22:24 elmex has quit IRC (Read error: 113 (No route to host))
22:24 Limbic_Region but - I really do have a lot to learn about p6 and everything about Haskel
22:30 larsen has joined #perl6
22:33 metaperl has quit IRC (" HydraIRC -> http://www.hydrairc.com <- s0 d4Mn l33t |t'z 5c4rY!")
22:34 Limbic_Region is there any alarm() and sig handling in Pugs yet?
22:35 meppl has joined #perl6
22:36 theorbtwo Yes.
22:36 theorbtwo Even with subsecond resolution and working on win32, IIRC.
22:36 lampus has quit IRC ("leaving")
22:36 theorbtwo (It starts a second thread, which sleeps and kills the master thread... again, IIRC.)
22:36 Limbic_Region hmmm
22:42 autrijus so the problem is quite insidious
22:43 autrijus for 1..10 { for 1..20 { last } }
22:43 autrijus the problem is that a closure is defined to capture the lexical pad upon its creation
22:43 autrijus so the { last } closure captures the &last of the outer loop
22:44 autrijus and because pad restoration happens _after_ enterLoop introduces the inner &last
22:44 autrijus the outer one is restored as the binding to use.
22:45 autrijus the moral is that &last should probably not be implemented as a lexical sub.
22:46 Limbic_Region autrijus - so probably even worse of a problem when last <label> is supported?
22:47 autrijus yeah. the proper fix is to switch to use VControl.
22:47 autrijus (as is intended)
22:47 Limbic_Region same deal with next then
22:47 autrijus right.
22:48 Limbic_Region well, and redo for that matter
22:48 * Limbic_Region has only ever found a use for redo like twice
22:49 theorbtwo Should VError and VControl be that different?
22:49 Oejet has left
22:50 autrijus theorbtwo: I think so; S06 (or S04)? makes it clea
22:50 autrijus clear
22:50 autrijus that control exceptions and error exceptions are different
22:51 theorbtwo I thought control exceptions were a subtype of error exceptions, with just slightly different semantics... but it's been a while.
22:53 theorbtwo Huh?  op2DefinedOr = undefined ?
22:54 nothingmuch beh
22:54 autrijus ok, I have a
22:54 autrijus genSymCC "&next" $ \sym -> do
22:54 autrijus now.
22:54 autrijus it will do for now.
22:54 * nothingmuch finally goes to try and do wrap
22:55 Limbic_Region 3 arg open isn't in Pugs right? I am looking at tests/examples and not seeing it
22:56 autrijus yup
22:56 nothingmuch what's the temp hostname for OF again?
22:56 Limbic_Region and "is chomped" is still todo
22:56 Limbic_Region hmmm
22:57 Limbic_Region I guess I will just answer the question as though those features were available today ;-)
23:00 * Limbic_Region notes the time and heads off to watch some TV
23:00 Limbic_Region TTFN all
23:00 Limbic_Region has quit IRC ("tiuq\")
23:00 castaway openfoundry.dyndns.org (in theory)
23:01 theorbtwo Last I tried neither worked.
23:01 Darren_Duncan has joined #perl6
23:01 autrijus that is right.
23:01 autrijus another 24 hours downtime.
23:01 autrijus I think I'll switch to freepan.org ;)
23:01 autrijus ingy, gugod: around?
23:02 Darren_Duncan are you talking about the non-working subversion server?
23:02 autrijus Darren_Duncan: yes.
23:02 autrijus it seems that they periodically has problems on weekends.
23:02 Darren_Duncan right, that's mainly what I came here to mention
23:02 rafl has quit IRC (No route to host)
23:02 * nothingmuch mutters something about distributed VCS
23:03 * castaway thinks she'll switch to the bedroom..
23:03 castaway g'night
23:03 Darren_Duncan also, for those not in the know, the Ars Mac OS X 10.4 review by John Siracusa is already out
23:03 Darren_Duncan at http://arstechnica.com/reviews/os/macosx-10.4.ars
23:03 * theorbtwo thinks he'll follow castaway.
23:03 Darren_Duncan these are always excellent, and this year's is several weeks early
23:04 Darren_Duncan as soon as I get my copy I'll be able to test Pugs on it, in a couple weeks
23:05 Darren_Duncan specifically, whenever the ADC people send it out to non-seed-getting people
23:05 autrijus oh. I accidentally implemented next and redo.
23:05 theorbtwo Accidentally?
23:05 Darren_Duncan how unfortunate
23:05 autrijus yeah. was just debugging the last() problem
23:06 Darren_Duncan how long until you can recover?
23:06 autrijus and refactoring things
23:06 autrijus Darren_Duncan: I have no idea :-/
23:06 theorbtwo They just kind of slipped out of your fingers... you tried to hold them back, but they were gresey little bugguers...
23:06 autrijus exactly
23:07 Darren_Duncan those are a good compliment to last
23:08 Darren_Duncan has quit IRC ()
23:10 jhorwitz autrijus: mod_pugs lives.  crippled, but alive.
23:11 autrijus jhorwitz: oh. wow. wow.
23:11 autrijus Wow.
23:11 autrijus url?
23:12 jhorwitz autocompiles to IMC, but runs in a PHP-style mode until we have objects to use the apache API
23:12 autrijus fantastic.
23:12 autrijus if you can write pseudocode with objects
23:12 theorbtwo PHP-style mode ?
23:12 autrijus then I'll make that happen.
23:12 jhorwitz theorbtwo: content only -- can't use the apache API
23:13 jhorwitz autrijus: need to put on a public server, then will post the url
23:14 theorbtwo Woo, Pugs.Prims now has 100% top-level signature coverage.
23:14 autrijus woo indeed
23:14 autrijus say, we all have freepan committership here, right?
23:14 Juerd jhorwitz: Just please don't make the mod_perl mistake again.
23:14 autrijus Juerd: what would that mistake be?
23:14 jhorwitz Juerd: which one?  ;-)
23:14 Juerd jhorwitz: Which is to make the content system and the powerful does-everything system the same thing.
23:15 Juerd mod_perl will never be as popular as php
23:15 autrijus ok, next/last/redo is consistently available.
23:15 Juerd *because* it is powerful.
23:15 Juerd It's hard to do simple things with mod_perl
23:16 theorbtwo Well, because it's hard to make it safe for multiuser systems without per-users apacheds.
23:16 Juerd And people don't trust it because they think it's insecure.
23:16 jhorwitz Juerd: mod_parrot is meant to be a framework for writing the higher level modules
23:16 Juerd theorbtwo: PHP has exactly the same problem and got popular regardless.
23:16 Juerd jhorwitz: There must be two mod_thingies, im{not at all}ho
23:17 jhorwitz ?
23:17 Juerd jhorwitz: One light weight and fast, php-ish
23:17 Juerd jhorwitz: One to write plugins for apache
23:17 theorbtwo I'm going to go go to bed, but I'll try to check in from there.
23:17 * autrijus is migrating full history to freepan
23:17 Juerd The first should specifically be webserver independent
23:17 Juerd The other can be apache specific
23:17 autrijus pugs, that is
23:17 Juerd And the full blown, hard to grok thing should NOT be a dependency of the other
23:17 Juerd Only then can Perl ever reach PHP's ease of use.
23:17 autrijus the first one is spelled SpeedyCGI
23:18 autrijus or FastCGI
23:18 autrijus etc?
23:18 Juerd You have to approach it from a sysadmin's point of view as well as a programmer's point of view
23:18 theorbtwo &
23:18 jhorwitz Juerd: i *am* a sysadmin.  :)
23:18 Juerd autrijus: No, all too much setup and things to be careful with.
23:19 Juerd autrijus: The thing that sucks most about PHP is its language.
23:19 autrijus oh. I see what you mean.
23:19 Juerd autrijus: The way it's installed in apache is very friendly.
23:19 * autrijus ponders mod_mason
23:19 autrijus or mod_catalyst
23:19 Juerd autrijus: Perl 5 can't do it correctly because interpreters are very heavy and resetting them takes a lot of time.
23:20 autrijus Juerd: yeah, already grokked.
23:20 Juerd autrijus: Which means forking and then exiting after a single request is faster even :|
23:21 Juerd It takes practically no time to set up a PHP interpreter
23:21 Juerd It doesn't have a big bunch of states to be set to initial values
23:22 Juerd And PHP is internally more modular in these areas
23:22 theorb has joined #perl6
23:22 autrijus *nod*
23:23 theorb Hmm, is password-changing implemented on freepan yet?
23:23 autrijus I thought the idea is for you to commit your password as a special prop
23:23 autrijus no idea if it's implemented or not.
23:23 autrijus but I figure the only way to raise peer pressure is to use it :)
23:24 autrijus (still migrating)
23:25 autrijus jhorwitz: I want to see mod_pugs :)
23:25 Juerd "Only Python modules under a proprietary licence are allowed. GPL and BSD licences are particularly forbidden."
23:25 Juerd HAHA
23:25 theorb wiki.freepan.org/index.pl?C​hangingYourFreepanPassword suggests you email ingy a md5 hash of your username and pass.
23:26 * jhorwitz moving bits as fast as he can...
23:26 autrijus theorb: I've changed my password already this way, I think
23:27 autrijus still on r174.
23:29 nothingmuch http://arstechnica.com/rev​iews/os/macosx-10.4.ars/5 <-- is anyone grokking from this that say, postfix will be launched automatically when someone tries to talk to port 25?
23:30 theorb Hm, what you just described is inetd -- been around halfway to forever.
23:30 theorb Trades having to keep daemons running vs slow response time.
23:30 nothingmuch right, but not exactly
23:31 nothingmuch delay packet, raise postfix, reroute packet
23:31 nothingmuch then kill it after a while
23:31 nothingmuch maybe
23:31 theorb Ah.
23:31 scook0 has joined #perl6
23:31 theorb Interesting idea.
23:31 theorb Not sure it sounds worth the effort.
23:31 nothingmuch but i'm not exactly sure what that is saying
23:31 nothingmuch and then fullfill deps by delaying dependant processes
23:31 nothingmuch by 'figure out dependencies automatically' i thought it would just try to start everything
23:32 nothingmuch but i have no clue
23:32 theorb Write your daemon well, start it on boot, let it swap out if it wants to be.
23:35 jhorwitz autrijus: did you want to see code or a demo?
23:35 autrijus jhorwitz: both.
23:36 autrijus code, preferably
23:36 autrijus but demo is cool too
23:36 jhorwitz autrijus: that's what i was afraid of.  :)  parrot on my public server is WAY out of date, so demo will be a while.  code is simple enough to paste.
23:37 jhorwitz perlbot: nopaste?
23:37 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
23:37 theorb has quit IRC (Read error: 54 (Connection reset by peer))
23:38 theorb has joined #perl6
23:39 theorb Blasted flakey network.
23:40 autrijus hmm, corion's trick broke.
23:40 autrijus he used
23:40 pasteling "jhorwitz" at 68.236.4.147 pasted "a *very* simple pugs layer for mod_parrot" (57 lines, 1K) at http://sial.org/pbot/9794
23:40 autrijus map { $_.values } map { $_.values } (any(...) ~ any(...))
23:40 autrijus that is patent nonsense. :-/
23:40 autrijus and it's all my fault for letting it work before
23:40 autrijus I've now changed it to say
23:40 autrijus map -> Junction $_ { $_.values }
23:40 autrijus instead.
23:41 autrijus jhorwitz: wow.
23:41 jhorwitz autrijus: simple, eh?
23:42 autrijus so when I declare pugs to be just another compiler object inside parrot
23:42 autrijus like Tcl now does
23:42 autrijus you can cut the spawnw
23:42 jhorwitz exactly.
23:42 autrijus and directly feed code in, right?
23:42 autrijus nice.
23:42 autrijus jhorwitz++
23:42 autrijus jhorwitz++
23:42 autrijus jhorwitz++
23:42 jhorwitz actually, if that happens, you can write this layer in pugs
23:42 autrijus that's riight.
23:43 jhorwitz mod_pugs without a line of C
23:43 autrijus this was your original idea all along, isn't it.
23:43 * jhorwitz nods
23:43 autrijus jhorwitz++
23:44 autrijus you'll of course post this to both p6c and p6i, right? :)
23:44 jhorwitz once i commit the changes and have a demo
23:46 theorb Hm, does this mean that we'll get eval_tcl for free, along with eval_imc ?
23:46 autrijus theorb: aye.
23:46 autrijus and eval_commonlisp
23:46 autrijus and eval_python
23:46 autrijus et cetera.
23:46 autrijus as was the plan all along.
23:47 autrijus plan 1..Inf
23:47 autrijus ok 1
23:47 autrijus ok 2
23:47 autrijus ...
23:47 * theorb laughs evily.
23:48 theorb Forget about editors with embedded languages.
23:48 theorb Our langauge can embed yi /and/ emacs!
23:48 theorb At the same time!
23:50 * theorb wonders if oneLineComment should be renamed, since it also parses things that look vaugely like comments, but aren't.
23:51 autrijus jhorwitz: so, what does the handler in p6 look like
23:52 jhorwitz autrijus: since we have no objects, mod_pugs just spits out whatever the handler returns
23:52 jhorwitz sub handler { return "Hello, world!
23:52 jhorwitz ";}
23:53 jhorwitz autrijus: you mentioned pseudocode -- i need to call methods on the PMC argument passed to the pugs handler
23:53 jhorwitz it's completely opaque
23:54 autrijus that is fine. we actually have opaque objects.
23:56 jhorwitz then i guess method calls really won't be that hard to implement.  :)
23:56 autrijus the problem is what to dispatch to.
23:57 autrijus do I just emit code that calls the method back?
23:58 autrijus i.e. if you call with an argument $foo and then invoke $foo.bar()
23:58 jhorwitz $r.puts("hello") would roughly translate to mypmc.'puts'("hello")
23:58 autrijus ok.
23:58 jhorwitz assuming mypmc was passed in as $r

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs