Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2008-07-26

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:02 AzureStone joined #perl6
00:20 luqui joined #perl6
00:54 alester joined #perl6
01:06 meppl joined #perl6
01:11 [particle]1 joined #perl6
01:36 alester joined #perl6
01:49 bacek joined #perl6
01:57 Khisanth joined #perl6
02:17 agentzh joined #perl6
03:02 elmex_ joined #perl6
03:42 eternaleye joined #perl6
04:01 sri_work joined #perl6
04:03 thorat joined #perl6
04:31 [particle] joined #perl6
04:47 xinming joined #perl6
05:22 alester joined #perl6
05:39 xinming_ joined #perl6
05:46 xinming__ joined #perl6
05:51 Psyche^ joined #perl6
06:27 speckbot r14569 | larry++ | \d123 is now \c123 to avoid confusion with \d character class
06:33 fridim__ joined #perl6
06:38 idemal joined #perl6
06:59 les joined #perl6
07:23 eternaleye joined #perl6
07:27 a-jing joined #perl6
07:29 a-jing joined #perl6
07:29 a-jing left #perl6
07:29 ludan joined #perl6
07:32 ludan hi
07:33 ludan joined #perl6
07:40 alester joined #perl6
07:54 pmurias joined #perl6
07:57 pugs_svn r21547 | lwall++ | [STD] fix heredocs, improve $0 reporting
07:57 pugs_svn r21547 | lwall++ | [quoting.t] update to use \c instead of \d
08:09 pugs_svn r21548 | lwall++ | [STD] new \c code failed to parse itself
08:14 bacek TimToady: but also because he is the first Slashdot interview guest ever to send his answers preformatted in squeaky-clean HTML. :)
08:18 pmurias bacek: he = ?
08:18 bacek pmurias: http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222&mode=thread&tid=145
08:18 lambdabot Title: Slashdot | Larry Wall On Perl, Religion, and..., http://tinyurl.com/1bua
08:18 bacek kinda old interview :)
08:22 pmurias &
08:33 fridim_ joined #perl6
08:59 xinming joined #perl6
09:09 fridim_ joined #perl6
09:15 Psyche^ joined #perl6
09:28 wknight8111 joined #perl6
09:30 iblechbot joined #perl6
09:43 pbuetow joined #perl6
09:48 masak joined #perl6
09:52 hanekomu joined #perl6
10:12 meppl joined #perl6
10:13 chris2 joined #perl6
10:40 Chillance joined #perl6
10:40 Chillance joined #perl6
10:40 apeiron_ joined #perl6
10:57 Chillance joined #perl6
11:19 ruoso joined #perl6
11:20 pmurias ruoso: hi
11:20 ruoso hi pmichaud
11:20 lambdabot ruoso: You have 1 new message. '/msg lambdabot @messages' to read it.
11:20 ruoso hi pmurias
11:20 ruoso pmurias, I actually took Attribute to write because you seemed to be interested in writing Code ;)
11:21 pmurias i'm considering writing a slime replacement
11:22 ruoso cool
11:22 pmurias should i sketch something on the wiki?
11:23 ruoso that's a good start, yes...
11:24 ruoso it would be cool if we could make it with llvm directly
11:24 ruoso since llvm seem to be the cool guy now ;)
11:25 ruoso pmurias, but remember one very important aspect of your implementation, that it should not recurse in the C stack...
11:25 pmurias i'm thinking of something very simple that it should be translated to llvm easily
11:26 pmurias what opcodes do we need call,conditional branch,unconditional branch?
11:28 ruoso pmurias, we need a lot more, actually
11:28 ruoso to support gather/take
11:29 pmurias gather/take are normal functions
11:29 pmurias take just store the continuation
11:29 pmurias * stores
11:31 ruoso which means that you need operators to support continuation....
11:31 a-jing joined #perl6
11:31 pmurias do we do CPS now?
11:31 a-jing left #perl6
11:33 pmurias * if we do CPS the continuation is passed as the first argument
11:33 ruoso yes...
11:33 ruoso we do...
11:34 ruoso in SLIME this is done explicitly calling the interpreter "continuation" method and then a "goto" call in the end of the sm0p block.
11:36 pmurias it can be just stored as the first argument
11:37 pmurias s/stored/passed/
11:37 rakudo_svn r29751 | jonathan++ | [rakudo] Make sleep return the value it was given, which for now fakes the number of seconds slept. More importantly, it avoids a Null PMC Access exception. We can improve this once sub-second time support is in place through the time() call. Patch from Carl M?\195?\164sak
11:37 rakudo_svn ..<cmasak at gmail.com> (masak++).
11:37 ruoso but we can't just add it to the normal capture...
11:38 pmurias how should the slime replacement be called?
11:39 ruoso please, feel free to name it as you want to...
11:39 pmurias any suggestions ;)
11:42 ruoso how will it look like?
11:47 pmurias soup&
11:48 pmurias i think it will be register based
11:48 pmurias i'm filling in the wiki page now
11:56 pugs_svn r21549 | ruoso++ | [smop] lowlevel code implementation in place. It is a callback for a C function.
12:03 pmurias ruoso: got something sketched on the wiki
12:04 pmurias any comments?
12:08 rakudo_svn r29752 | jonathan++ | [rakudo] Make multi f() {} parse and work the same as multi sub f() {}. Resolves RT#57122.
12:20 pmurias ruoso: added a example of what $*OUT.print("hello world") would translate to (in perl6 syntax)
12:47 ruoso pmurias, right.. but how will the interpreter itself work?
12:47 ruoso are you planning something bytecode-like?
12:47 ruoso or optree-like?
12:48 pmurias bytecode like definitly
12:49 pmurias are there any advantages to an optree?
12:52 ruoso I don't know, really...
12:54 pmurias i looked at the interpreter api, is  skiping a node a valid use case of the api?
12:54 pmurias $run_loop.next;$run_loop.next;$run_loop.eval ?
12:54 ruoso yes
12:55 ruoso I mean...
12:55 ruoso of the API,
12:55 pmurias what is this needed for?
12:55 ruoso but it would probably cause major breakage if used like that...
12:55 ruoso pmurias, the importance is to define a way to interoperate different interpreter implementations
12:55 ruoso without C-level recursion
12:56 pmurias i meant the separation of next and eval
12:56 ruoso hmm...
12:57 ruoso one could argue that eval could make this step by itself
12:57 ruoso then "next" would be a no-op
12:58 pmurias yes
12:59 pmurias the interpreter might want to do as many steps as it can withought returning to the runloop
12:59 ruoso pmurias, as long as it doesn't recurse without returning...
13:01 pmurias the runloop could be even reduced to while $interpreter !=== false {}
13:01 pmurias s/be even/even be/
13:02 ruoso it's somehting like that, yes...
13:03 * ruoso home & (starting to build his new house)
13:04 * ruoso later &
13:06 Limbic_Region joined #perl6
13:23 sri_work_ joined #perl6
13:42 rakudo_svn r29754 | jonathan++ | [rakudo] Give a reasonable error message when trying to inherit from a non-existent class (we need something better eventually, but this beats odd exceptions and assertion failures).
14:00 fridim_ joined #perl6
14:19 hanekomu joined #perl6
14:38 * zamanfou is now away: In the rain my tears are forever lost.
14:41 alester joined #perl6
14:47 rakudo_svn r29756 | jonathan++ | [rakudo] Make multi sub foo { } work (the case where you have a multi, but no signature, which means it's a parameterless variant).
14:49 jferrero joined #perl6
15:12 timbunce joined #perl6
15:13 _timbunce joined #perl6
15:22 Moropo joined #perl6
15:22 Moropo "Despite eye-popping profits and operating results, oil companies can't get any love from fickle stock markets."
15:25 ruoso joined #perl6
15:29 was kicked by TimToady: TimToady
15:51 alester joined #perl6
15:55 ludanolo joined #perl6
15:56 eternaleye joined #perl6
16:03 timbunce joined #perl6
16:05 kanru joined #perl6
16:12 meteorjay joined #perl6
16:16 iblechbot joined #perl6
16:21 ludan joined #perl6
16:40 pugs_svn r21550 | fglock++ | [v6.pm] array fixes; more tests
16:45 rakudo_svn r29758 | pmichaud++ | [rakudo]: spectest-progress.csv update, 110 files, 1885 passing tests
16:46 ludan joined #perl6
16:54 rakudo_svn r29760 | pmichaud++ | [rakudo]: Update sleep() to return actual time slept.  Sorta.
17:01 rakudo_svn r29762 | jonathan++ | [rakudo] First cut at getting class attributes (declared my $.x) to work. Does a little refactoring so we can do this without code duplication. Also has a workaround for :outer not being allowed to point at :init :load blocks; we can pull that out once pdd25cx is merged and
17:01 rakudo_svn ..PCT updated. Todo is make the accessor sensitive to the presence or lack or 'is rw' and make sure type constraints get applied.
17:03 alester joined #perl6
17:17 pmurias joined #perl6
17:27 pmurias what's the state of the wiki in Perl6 prize?
17:29 timbunce joined #perl6
17:31 mncharity joined #perl6
17:35 meteorjay joined #perl6
17:38 pmurias mncharity: hi
17:38 ludan joined #perl6
17:40 rakudo_svn r29764 | jonathan++ | [rakudo] If you don't specify a type constraint that is a proto-object, we shouldn't default an attribute to containing Object proto-object.
17:42 pmurias mncharity: would it be ok to merge elfX into elf_g?
17:44 rakudo_svn r29765 | pmichaud++ | [rakudo]: Throw an appropriate exception for unescaped $'s in strings.
17:44 rakudo_svn r29765 | pmichaud++ | * Resolves RT #57118 (masak++)
17:45 mncharity hi pmurias
17:46 mncharity re elfX, looking...
17:46 mncharity so, what is elfX?  README blank...
17:48 pmurias the branch i created not to break stuff
17:50 pmurias you told be too when i attempted to turn the evil operator (=~) into ~~
18:03 meppl joined #perl6
18:07 mncharity pmurias: re ok to merge, no.  I'll scavange the nice improvements like .^! and improved Primitive sigs.  The smop backend should stay separate, as elfish/on_sbcl is.  An elfish/on_smop sounds good.  Looks like there are already two?!?  Feel free to mutate/merge those.  The backstory is
18:09 * zamanfou is now away: In the rain my tears are forever lost.
18:10 mncharity instead of the pugs model of 'all backends get forked from the pugs haskell source', the elf model is elf is just a p6 service.  Eg, if one wrote a p5 smop backend, one wouldn't add it to the perl5 core code, one would add it to cpan.  Same here.
18:11 pugs_svn r21551 | pmichaud++ | S29-str/index.t:  update skip message to be more accurate
18:12 chris2 joined #perl6
18:18 pmurias the elfish/on_smop are obsolete, as they don't work while my smop backend does
18:21 pmurias i could move EmitSM0P.pm to ../on_smop, but it has to stay integrated because it allows to have a dual p5/smop executable
18:28 mncharity re move EmitSM0P.pm to ../on_smop, great. :)   re stay integrated, on_smop like on_sbcl, is of course free to have dependencies on elf internals.  And tweak those internals as needed.  Just as CPAN modules do (well, perlguts tweaks are rare, but...).  elf doesn't change however.  Anymore than the perl program changes each time a new CPAN module is created, even an XS one.
18:31 pmurias why do you want the backends seprated from the main compiler?
18:34 pmichaud pugs:  class A {};  say A.new;
18:34 p6eval pugs: OUTPUT[<obj:A>␤]
18:34 pmurias the problem with moving EmitSM0P.pm out, is that it needs to be compiled in into elfX, as our broken compilation models dosn't support loading in plugins at runtime
18:35 pmurias having a seperate executable with smop is inconvinient as it forces compiling twice
18:38 mncharity re "backends seprated", _everything_ is eventually going to be separate.  the criteria for inclusion in elf is "this is code is absolutely needed to provide p6 service to people".  as that changes, the set of things included will change.  smop isn't there yet.  (unless... you said works... does elf-on-smop bootstrap already?!?)
18:38 pmurias no smop is too limited
18:39 mncharity re support/inconvenient.. what exactly are you trying to do?
18:40 mncharity re too limited, ah, ok
18:40 pmurias elfX uses a -C sm0p option to change $*compiler1 to EmitSM0P
18:42 mncharity And creating an Elf.pm saying 'use EmitWhatever;'  and  elf_f -x -I../.../elf_f_src -o elfY Elf   creates an elfY which changes $*compiler1 to EmitWhatever, no?
18:44 pmurias if you change elf_f you have to recompile both elf_f and elfY
18:45 pmurias which is a waste of CPU time
18:45 mncharity though that recompiles the entire elf (what you said).   elf_f EmitWhatever.pm ...usualargs...  sets $*compiler1 to EmitWhatever, recompiling EmitWhatever but not the rest of the elf.
18:45 pmurias using a ugly bug
18:46 mncharity ugly bug?
18:46 mncharity the emitter0/emitter1 architecture was created for exactly this use case.
18:48 * mncharity tries to remember what a.^!b expands too...  a.HOW!b ?
18:49 pmurias but it relies on elf not keeping the namespaces of the currently compiled code and the compiler
18:50 mncharity I don't understand.  Explain?
18:50 pmurias mncharity: $a.^!b call method ^!b on $a which is intercepted by the representation object of $a
18:52 pmurias $*compiler1 in the compiled code and the $*compiler1 in the code we compile are different things
18:54 pmurias if i compile something like 'BEGIN {$*ERR = $*OUT};$a =~ /.*/' it dosn't make the compiler print the error message that =~ was used to STDOUT
18:55 pmurias the perl6 compiler could be as well implemented in python or pir or haskell
18:57 pmurias TimToady: the namespaces of the compiler and the code being compiled are seperate?
18:57 mncharity perl -we 'BEGIN{select(STDERR)} print "on err\n";'>/dev/null
18:57 mncharity $*compiler1 is part of the _p6_ api exported by the compiler/runtime.
19:00 mncharity the elf compiler is present at runtime as a non-spec prelude extension.  an implicit  'use Elf'.]
19:02 mncharity when you compile a new version of elf, you compile in the default $*compilers.  but the $*compiler1, used by, eg, eval(), at runtime, can be overridden at runtime.
19:02 mncharity err, no, I got that backwards.
19:04 mncharity $*compiler0 is the 'compatible with current runtime' compiler used by the runtime for eval().  $*compiler1 is used by the elf command-line compiler to serve 'compile to a file, with arbitrary runtime' requests.  like  elf -x -o foo Foo.pm.
19:07 pmurias i could just implement runtime code loading
19:07 mncharity I don't understand.  Explain?
19:08 pmurias i could just add a -C SM0P which would look for a SM0P in @INC and use it as $compiler1.emitter
19:10 pugs_svn r21552 | lwall++ | [STD] || now catches panics from its left side
19:10 coumbes joined #perl6
19:11 pmurias mncharity: have you considered using gimme5's regex implementation instead of rx_on_re
19:12 mncharity elf_f SMOP.pm looks for SMOP.pm in @INC and if SMOP ends in $*compiler1.emitter = whatever, uses it.  -C would be different how?
19:14 pmurias you wouldn't have to add $*compiler1.emitter ;)
19:15 mncharity :)
19:16 pmurias add it could do precompilation
19:17 mncharity the $*compilers api is provided by the current Compiler class.  it's not a commitment made by elf, or its CommandLi
19:17 alester joined #perl6
19:17 mncharity ne class.
19:19 mncharity precompilation, or more specifically, independent compilation, while needed in the long term, is vastly more complicated than the current whole-program-compilation+eval.  and given how fast elf is, even running on top of p5, not really needed near term.
19:20 mncharity (running on top of CL should be blazing... but that's not existent yet)
19:24 pmurias if you know how the CL backend should look like i learn some CL and help with it
19:24 rakudo_svn r29769 | pmichaud++ | [rakudo]: Switch sleep to be a listop instead of named unary (masak++)
19:24 rakudo_svn r29769 | pmichaud++ | * Partially solves RT #57924; but uses a hard-coded constant value
19:24 rakudo_svn r29769 | pmichaud++ |   to represent "forever" until Parrot provides a way to do it.
19:28 pmurias but i don't hope i could come up with a sane CL backend design by just looking up stuff from the standard/manual when i need it
19:40 eternaleye joined #perl6
19:40 mncharity sorry, phone call.  and have to run off.
19:42 mncharity re CL, my hope is very little ends up in CL.  and that may be a bit hard to write without a CL background.   but it will need lots of p6 prelude, eg, for basic classes.
19:43 mncharity I don't know if rakudo supports p6 prelude yet.  my fuzzy recollection is the estimate was a couple weeks, a month or so ago.
19:45 mncharity and I'll try to get on_sbcl closer to something which is easier to work on, esp without knowing cl.
19:45 mncharity bbl... tomorrow?
19:45 pmurias so i can merge elfX if i move out EmitSM0P to ../on_sm0p
19:45 mncharity thanks pmurias
19:46 pmurias mncharity: ok
19:46 mncharity oh, right, a commit.  one sec.  re merge elfX, no, but moving EmitSMOP to on_sm*p would be good.
19:48 pmurias it's EmitSM0P as it emits sm0p which is the slime DSL
19:48 pmurias re "a comit" i don't understand
19:48 pugs_svn r21553 | putter++ | [elf_g] Import improvements from elfX.  pmurias++
19:49 mncharity r21553.
19:50 pmurias you didn't choose to use the $*compiler refactor?
19:50 mncharity I think we've discussed most of the changes not merged...  the extra $arg to callbacks can be passed in the emitter object itself, and so don't need to be args.
19:51 mncharity re $*compiler, no.  just now discussed, no?  did I miss something?
19:51 mncharity sorry, I really need to run.  will backlog.
19:56 apple-gunkies joined #perl6
20:37 pugs_svn r21554 | jnthn++ | [spectest] Add some tests for various bits of the multi sub syntax.
20:44 pugs_svn r21555 | jnthn++ | [spectest] Very basic tests for class attributes.
20:45 rakudo_svn r29771 | jonathan++ | [rakudo] Fix for when you have multiple multis without signatures (but different names) in a program; before, all but the first one got mis-generated.
20:47 ludan joined #perl6
20:53 rakudo_svn r29773 | jonathan++ | [rakudo] Add some tests for stuff I fixed/implemented today to spectest_regression.
21:12 alester joined #perl6
21:27 mtrimpe joined #perl6
21:31 Auzon joined #perl6
21:54 jferrero joined #perl6
22:03 Limbic_Region joined #perl6
22:09 Alias_ joined #perl6
22:36 donaldh joined #perl6
23:01 Alias_ joined #perl6
23:04 Alias__ joined #perl6
23:13 hercynium joined #perl6
23:17 pugs_svn r21556 | lwall++ | [Cursor] some speedups
23:28 Schwern joined #perl6
23:47 pugs_svn r21557 | leto++ | No longer skip test related to branch cut of complex numbers.

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

Perl 6 | Reference Documentation | Rakudo