Parrot 0.8.2 "Feliz Loro" Released www.parrot.org/news/2008/Parrot-0.8.2
Set by moderator on 23 December 2008.
tewk Coke: I'm cleaning up the class registry an your t/pmc/key.t TclProc test is coming back to haunt me. 00:01
Coke good luck with that. =-)
tewk This time it has to do with all the Namespaces,
Coke glad I got that test in. one less thing that is likely to bork tcl. =-) 00:02
compiling src/ops/core_ops_cgp.c is WICKED slow on this ole *bsd box.
tewk Why the '_Tcl' namespace and then 'tcl' namespace. 00:03
I just spent hours trying to figure out why TclProc lookup wouldn't work. 00:04
00:09 uniejo joined 00:10 AndyA joined
Infinoid 600 functions marked with headerizer asserts, 1200 more to go 00:10
Infinoid finds a place where string_make_direct() is called with a NULL charset
Coke tewk: 'tcl' is the parrot namespace that corresponds to the top level user-visible tcl namespace. 00:23
'_tcl' is the one that corresponds to the top level of a ``private'' namespace for compiler/interpreter builtins that aren't user-visible. 00:24
tewk what is _Tcl a typeo ?
Coke no. HLLs are case insensitive.
tewk that makes sense now,
Coke or, rather, if I do .HLL '_Tcl', that corresponds to an hll namespace of '_tcl' 00:25
tewk right
Coke tries to build parrot on 3 different machines. 00:27
nopaste "tewk" at 209.193.100.96 pasted "'TclProc' test change" (15 lines) at nopaste.snit.ch/15107
tewk Coke: does that look reasonable, thats how things will work after the class registry fix. 00:29
Coke I'm instantiating a namespace? 00:31
what if I try to instantiate a namespace that isn't actually a class?
tewk TclProc is a class no? 00:33
Coke (in general, I don't particularly care about the syntax, btw.
tewk ok
Coke Yes; what would happen if I did 'TclProcFoo' in that example, where i hadn't done a newclass?
tewk no your getting the TclProc from the namespace it was created in. 00:34
yeah you would get a namespace,
Coke I assume that's so parrot and the various HLLs will be able to have their own similarly named classes this way
?
tewk yes,
get_class is probably the better method, but that doesn't quite work yet. 00:35
Coke k. I'll probably wrap it up in a .macro anyway. (my defense against deprecation)
nopaste "tewk" at 209.193.99.80 pasted "'TclProc' test change attempt 2" (14 lines) at nopaste.snit.ch/15108 00:37
tewk Sorry it will look like this.
Coke wonders how much he'll fubar his *bsd sytem if he runs the system 'cpan'.
tewk: that looks slightly saner. 00:38
hurm. I wonder if it would be useful to make a tcltest option that caused it to generate TAP instead of the normal output. 00:39
(then I could use smolder.)
dalek r34528 | pmichaud++ | branches/rvar/languages/perl6/src (2 files): 00:47
: [rakudo]: Add 'readonly' property to parameters.
review: www.parrotvm.org/svn/parrot/revision?rev=34528
Coke removing experimental ops doesn't require updates to PBC_COMPAT, neh? 00:52
00:52 uniejo left
Coke is trac.parrot.org non responsive for anyone else? 00:58
Tene yes 01:00
dalek r34529 | coke++ | trunk (2 files): 01:01
: Remove the experimental 'slice' ops.
: (don't think we need to touch PBC_COMPAT for experimental ops.)
review: www.parrotvm.org/svn/parrot/revision?rev=34529
Coke I'll email the OSU admins. 01:02
pmichaud ...so trac.parrot.org is finally slower than rt? ;-)
Coke wow. it's almost taking as long to run cpan> i/TAP::Archive::harness/ on this bsd box as it did to build parrot. 01:06
Coke wonders if osu has something like log.perl.org 01:07
01:14 pedr joined 01:16 pedr left
dalek r34530 | coke++ | trunk/tools/dev: 01:16
: note what generates this generated file.
review: www.parrotvm.org/svn/parrot/revision?rev=34530
r34531 | coke++ | trunk (2 files): 01:18
: Avoid deprecated open modes (This allows the build to complete if they are removed.)
review: www.parrotvm.org/svn/parrot/revision?rev=34531
r34532 | pmichaud++ | branches/rvar/languages/perl6/src (3 files): 01:20
: [rakudo]: Add is rw, is copy traits to parameters.
review: www.parrotvm.org/svn/parrot/revision?rev=34532
01:26 pedr1 joined, pedr1 left 01:29 pedr2 joined, pedr2 left 01:32 leto joined
dalek r34533 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 01:33
: [rakudo]: Fix case where params have no explicit traits.
review: www.parrotvm.org/svn/parrot/revision?rev=34533
01:41 leto joined
Coke hurm. $P1 = open 'foo', 'a' doesn't seem to work. 01:42
is it intended that it has to be 'wa' ? 01:47
dalek r34534 | coke++ | trunk/t (10 files): 01:53
: Remove all deprecated open types from 'make test'
review: www.parrotvm.org/svn/parrot/revision?rev=34534
r34535 | coke++ | trunk (2 files): 02:01
: Remove [DEPRECATED] open file modes.
review: www.parrotvm.org/svn/parrot/revision?rev=34535
Coke msg allison Sent a mail to list about open mode 'a' vs. open mode 'wa'. 02:12
purl Message for allison stored.
dalek r34536 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 02:29
: [rakudo]: (simple) multisubs work again
review: www.parrotvm.org/svn/parrot/revision?rev=34536
02:31 tetragon joined
dalek r34537 | pmichaud++ | branches/rvar/languages/perl6 (3 files): 02:47
: [rakudo]: Complain about declaring a lexical twice in same scope.
: * Fix some double-declarations in 00-parrot tests.
review: www.parrotvm.org/svn/parrot/revision?rev=34537
03:09 zostay joined
dalek r34538 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 03:10
: [rakudo]: Restore type bindings (::T) in signatures.
review: www.parrotvm.org/svn/parrot/revision?rev=34538
GeJ nopaste ? 03:12
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
03:14 zostay_ joined
nopaste "GeJ" at 202.22.229.231 pasted "[open modes] Diff applied to "compilers/tge/tgc.pir" to fix build." (21 lines) at nopaste.snit.ch/15109 03:16
GeJ Coke: could you have a look at it if you have a few minutes? 03:17
Coke gej;looks good. you have a commit bit? 03:36
(oddly, my build doesn't break without that.) 03:37
dalek r34539 | coke++ | trunk/compilers/tge: 03:39
: Update mode usage for TGE.
: Courtesy GeJ++
review: www.parrotvm.org/svn/parrot/revision?rev=34539
GeJ Coke: nope. no commit bit.
thank you
Coke thank you. 03:40
I note that "examples_tests" is also borked if you're bored. =-)
(fixing that one now.)
GeJ Well, lucky you, I'm bored :)
03:40 kid51 joined
Coke oooh, really? danke. 03:41
Coke backs away from the examples/ directory.
kid51 trac.parrot.org/parrot/ is back on line.
GeJ hum, can't find . -name "*examples_tests*" though... 03:42
Coke it's a make target, sorry.
GeJ Ah ok... I'm on it.
Coke GeJ++
kid51 Coke: I don't see anything wrong with 'make examples_tests'. Are you talking about something other than top-level dir in trunk? 03:47
Coke kid51: yes, that's what I mean.
kid51 I just ran both 'prove t/examples/*.t' and 'make examples_tests". Setting aside TODOed tests, all tests passed. 03:48
nopaste "kid51" at 68.237.2.168 pasted "make examples_tests" (31 lines) at nopaste.snit.ch/15110 03:49
Coke kid51: what revision?
purl revision is 0, unless it's an svn co, then it's whatever svn reports
kid51 34497
Coke I'm sure it worked fine back then. =-) 03:50
03:50 rurban_ joined
Coke r34535 - Remove [DEPRECATED] open file modes. 03:51
dalek r34540 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 03:54
: [rakudo]: Restore placeholder vars.
review: www.parrotvm.org/svn/parrot/revision?rev=34540
Coke I wonder if there's a "fulltest" analog with just the one core. 03:56
dalek r34541 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 03:59
: [rakudo]: Restore .arity on signatured blocks.
review: www.parrotvm.org/svn/parrot/revision?rev=34541
kid51 Okay, I see the failures you were talking about.
nopaste "kid51" at 68.237.2.168 pasted "make examples_tests at r34539" (271 lines) at nopaste.snit.ch/15111 04:01
Coke ayup.
04:01 elmex_ joined
Coke should be a simple fix; GeJ is working on it now. 04:01
GeJ almost done
kid51 It's almost my bedtime, so I'm glad it's daytime for Gej to work on it ;-) 04:02
Coke =-)
kid51 Coke: Earlier today I posted about the non-working links here: www.parrot.org/docs/ 04:05
Do you know what the plan is to get them working?
Coke there's a ticket about that, neh?
kid51 checks
Coke ah. the original ticket was probably re: parrotcode.
(plan) ISTR particle is working on it.
basically: have a trunk/release version of the docs, and try to create them with "make html". 04:06
kid51 Woah: Trac problem: 04:07
Trac detected an internal error:
OperationalError: database is locked
There was an internal error in Trac. It is recommended that you inform your local Trac administrator and give him all the information he needs to reproduce the issue.
(Cleared up) 04:08
Coke Wow. it is more challenging to cpan install a module on this box than it was to build parrot. 04:10
(swap on this old machine hurts) 04:11
kid51 'make coretest' passes at r34539. 04:14
nopaste "GeJ" at 202.22.229.231 pasted "[open modes] fix `make examples_tests'" (101 lines) at nopaste.snit.ch/15112
GeJ I should note that I SKIP some GMP-related tests... 04:15
Coke if some committer would like to apply that, looks good here.
(I'm in the middle of something in my normal checkout dir0 04:16
GeJ so I may have missed some.
Coke gej;if no one gets to that, plz. open a ticket. I'm not sure I'll remember once I finish this task. 04:17
(or that I'll finish this task tonight)
GeJ Will do. Thanks. 04:18
dalek r34542 | jkeenan++ | trunk (6 files): 04:21
: Fix PIR used in 'make examples_tests' to reflect discontinuation of certain open modes. Patch courtesy of Geraud Continsouzas.
review: www.parrotvm.org/svn/parrot/revision?rev=34542
kid51 'make examples_tests' now PASS 04:22
GeJ Thanks kid51
kid51 Thank *you* -- that was fast work for that number of files.
kid51 must sleep 04:23
purl $kid51->sleep(8 * 3600);
Coke kid51++ GeJ++ 04:26
GeJ Coke: if there's anything else I can do. I still have some CPU cycles available.
Coke ack --parrot 'open.*[<>]' ? 04:27
(see if we missed any?)
dalek r34543 | coke++ | branches: 04:28
: Branch to remove store_global & find_global opcodes
review: www.parrotvm.org/svn/parrot/revision?rev=34543
r34544 | coke++ | branches/global_cleanup (4 files): 04:30
: Remove the opcodes themselves.
review: www.parrotvm.org/svn/parrot/revision?rev=34544
GeJ yup... found some. On it. 04:32
do the new modes also apply to PASM files? 04:36
Coke yup. 04:38
it's the opcode, so it's same on both. 04:39
Coke stares balefully at the ncurses library.
GeJ What are the new modes for '<>' and '+<' ? 04:41
Coke I'm assuming <> == rw
I think +< also means rw. 04:42
+> would mean something else, though.
guessing this based on the code removed in r34535 04:43
GeJ I got a hit in book/ch05_pasm.pod
it describes '+<' as read-write and '<>' as append.
Coke >> was append. 04:45
so replace <> with 'wa'
(fixing the typo)
and +< with 'rw'
GeJ noted. thanks 04:46
Hum, pdd22_io.pod defines : C<open> opcode: 'r' for read, 'w' for write, 'a' for append, and 'p' for pipe. (l 125-126) 04:53
Coke yup. but 'a' by itself is (currently) not enoughy. 04:54
I sent an email to the list noting that.
(when trac was down)
GeJ oh yes, I remember you mentioning that earlier.
GeJ should subscribe to The list.
dalek r34545 | coke++ | branches/global_cleanup/runtime/parrot/library (19 files): 04:56
: Fixup (just compiles, not tested) any _global variants needed to complete 'make'
review: www.parrotvm.org/svn/parrot/revision?rev=34545
GeJ rebuilding parrot with patches, restarting tests. 05:00
there's one file in pipp I'm not 100% sure about. And I probably b0rked the quine example. 05:01
Coke I hate that quine. :| 05:02
bah. I've borked test/builder/tester in the branch. 05:03
picked the wrong _global variant as a replacement somewhere. :|
dalek r34546 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 05:05
: [rakudo]: Clean up package variable vivification.
review: www.parrotvm.org/svn/parrot/revision?rev=34546
r34547 | pmichaud++ | branches/rvar/languages/perl6/src/classes:
: [rakudo]: Autovivify @!params in Signature.
review: www.parrotvm.org/svn/parrot/revision?rev=34547
Coke gives up on global_cleanup for the evening. 05:08
making t/library/test_builder_tester.t pass in the branch will probably be most illuminating. 05:09
nopaste "GeJ" at 202.22.229.231 pasted "[open modes] Yet another batch of conversions. Coke++ for the assignment." (377 lines) at nopaste.snit.ch/15113 05:23
Coke GeJ: I'm heading abed. If no one grabs it, could you open a ticket? Thanks. 05:26
zzzzzzzzz
GeJ++
GeJ Will do. Thanks 05:28
Good night Coke. 05:29
05:46 Andy joined
TiMBuS dumb question: is there a way to redefine a sub block in parrot? 05:49
ive changed undefined functions to throw an error when executed instead of spitting out a 'null pmc' error, but i'd like to be able to change the sub definition if the function is later implemented before it is ran 05:50
dalek r34548 | pmichaud++ | branches/rvar/compilers/pct/src/PAST: 05:51
: [pct]: Make PAST::Block.symbol smart about adding attributes to existing entry.
review: www.parrotvm.org/svn/parrot/revision?rev=34548
r34549 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 05:56
: [rakudo]: Fix up symbol table handling a bit.
review: www.parrotvm.org/svn/parrot/revision?rev=34549
r34550 | petdance++ | trunk/src: 06:17
: removed unused var; did some consting
review: www.parrotvm.org/svn/parrot/revision?rev=34550
r34551 | petdance++ | trunk/lib/Parrot/Pmc2c (2 files): 06:23
: removed unused include
review: www.parrotvm.org/svn/parrot/revision?rev=34551
r34552 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 06:32
: [rakudo]: Restore &-sigil vars.
review: www.parrotvm.org/svn/parrot/revision?rev=34552
r34553 | petdance++ | trunk/lib/Parrot/Pmc2c (3 files): 06:34
: pruned unused imports
review: www.parrotvm.org/svn/parrot/revision?rev=34553
r34554 | petdance++ | trunk/lib/Parrot/Pmc2c: 06:36
: pruned unused imports
review: www.parrotvm.org/svn/parrot/revision?rev=34554
r34555 | petdance++ | trunk/lib/Parrot/Pmc2c (5 files): 06:38
: renamed gen_ret() to return_statement()
review: www.parrotvm.org/svn/parrot/revision?rev=34555
06:45 Theory joined 06:46 tuxdna joined 06:47 Zaba_ joined
dalek r34556 | pmichaud++ | branches/rvar/languages/perl6/src/classes (2 files): 06:53
: [rakudo]: Add Hash() coercion and hash parameters.
review: www.parrotvm.org/svn/parrot/revision?rev=34556
r34557 | pmichaud++ | branches/rvar/languages/perl6/src/parser (2 files):
: [rakudo]: Do something reasonable with the 'returns' trait.
review: www.parrotvm.org/svn/parrot/revision?rev=34557
r34558 | petdance++ | trunk/lib/Parrot/Pmc2c: 06:55
: removed unused include
review: www.parrotvm.org/svn/parrot/revision?rev=34558
r34559 | chromatic++ | trunk/src (4 files): 08:02
: [src] Tidied some source code; no functional changes.
review: www.parrotvm.org/svn/parrot/revision?rev=34559
r34560 | chromatic++ | trunk (24 files): 08:07
: [src] Converted several old file modes to new form (patch by Geraud
: CONTINSOUZAS).
review: www.parrotvm.org/svn/parrot/revision?rev=34560
tewk chromatic: mmd canidate types_names are converted to type_ids at invocation right. 08:09
08:10 iblechbot joined
GeJ chromatic: thanks 08:13
chromatic tewk, yes, for MMD cache keys and such. 08:17
GeJ, I believe we should be thanking *you*.
GeJ Not really like it was a critical patch. I just helped Coke with the dirty repetitive work so he could do something that really matters. 08:29
But if any other tasks like these would come up (and if time permits) I'd be happy to help. 08:30
chromatic trac.parrot.org/parrot/wiki/Conver...tsToParrot is always good. 08:31
GeJ Oh, do you happen to know if some tools are publicly available to convert PseudoPod to PDF? I tried pod2pdf, but some data gets lost in the process.
chromatic We use Pod::PseudoPod::Latex at Onyx Neon, then a LaTeX to PDF converter with a custom stylesheet. 08:32
GeJ I'm going to try that. thanks for the tip. 08:35
lathos 'Ken Lunde has just notified me of the release of the Second Edition of _CJK Information Processing_. ' 08:52
09:12 kj joined
TiMBuS arg. I tried to subclass ResizablePMCArray, but now I get told it 'doesnt array' when I use :flat 09:24
how to I let it array?
09:33 skv joined 09:36 tomyan joined
dalek r34561 | kjs++ | trunk/compilers/pirc/new (5 files): 09:38
: [pirc] for now, stick to current :multi syntax; not sure whether :invocant will be 1.0 feature.
: + Count the number of :multi types during parsing.
review: www.parrotvm.org/svn/parrot/revision?rev=34561
09:53 alvar joined
dalek r34562 | kjs++ | trunk/compilers/pirc/new (6 files): 10:24
: [pirc] decouple bcgen module from rest of PIRC. Define some new structs for multi_types. Add some helper functions.
review: www.parrotvm.org/svn/parrot/revision?rev=34562
10:32 masak joined 10:33 tuxdna joined
dalek r34563 | kjs++ | trunk/compilers/pirc/new (3 files): 10:33
: [pirc] create a signature pmc for :multi(), without any types.
: + add the trick stolen from imcc, that numtypes=1 means :multi(), n=2 means :multi(Type1), n=3 means :multi(Type1,Type2), etc. n is always 1 higher than actual type. If n=1, "__VOID" signature is generated.
review: www.parrotvm.org/svn/parrot/revision?rev=34563
r34564 | kjs++ | trunk/compilers/pirc/new: 10:46
: [pirc] implement parts of generate_multi_signature().
review: www.parrotvm.org/svn/parrot/revision?rev=34564
TiMBuS i had to make the pmclass have a 'provides array' in the declaration 10:50
dalek r34565 | kjs++ | trunk/compilers/pirc/new (6 files): 11:12
: [pirc] create an array of :multi types, and convert the PIRC AST expression nodes into multi_type nodes. This is to keep bcgen module apart from PIRC, otherwise we could have used expression nodes, which are PIRC AST specific.
review: www.parrotvm.org/svn/parrot/revision?rev=34565
r34566 | kjs++ | trunk/compilers/pirc/new (2 files): 11:17
: [pirc] fix a bug, and add a few comments.
review: www.parrotvm.org/svn/parrot/revision?rev=34566
11:50 rurban_ joined, ruoso joined
Tene seems like my RSI rest is mostly over. starting work on HLL stuff tomorrow. 12:01
12:39 ask_ joined
dalek r34567 | rurban++ | branches/pdd30install_stage3/t/tools: 12:52
: Trac #97: Current tests do not test the installables, esp.
: if the prefix is correctly set from the build_dir to the
: configured prefix, i.e. if config.fpmc is linked, in contrary
: to the build-time config_lib.pasm
: t/tools/parrot_config.t checks parrot_config prefix against
: installable_parrot_config prefix.
review: www.parrotvm.org/svn/parrot/revision?rev=34567
Coke I'm going to get this *bsd box working and then realize how horribly outdated it is and probably not worth smoking. =-) 13:01
dalek r34568 | kjs++ | trunk/compilers/pirc/new (7 files): 13:18
: [pirc] work on lexical registering.
review: www.parrotvm.org/svn/parrot/revision?rev=34568
13:20 apeiron joined
dalek r34569 | kjs++ | trunk/compilers/pirc/new (5 files): 13:27
: [pirc] prefix sub_flags with "PIRC", to prevent collisions with libparrot.
review: www.parrotvm.org/svn/parrot/revision?rev=34569
13:30 masak joined 13:31 Theory joined
dalek r34570 | rurban++ | branches/pdd30install_stage3/tools/build: 13:35
: [cage] RT#56998 cygdll_versioning moved the dll to build_dir,
: so this check is not needed anymore.
: RT#57548 CONDITIONED_LINE_enh added a platform check so the
: cygchkdll config entry is also not needed anymore.
review: www.parrotvm.org/svn/parrot/revision?rev=34570
Coke msg timbus (redefine sub block) - if the sub is in a namespace, you can just get the namespace and shove a newly defined sub into it. 13:36
purl Message for timbus stored.
Coke ... it's sad that I can tell when this box is waiting for me to hit enter because the hard drive noise drops below audible. :| 13:37
karma orkut? 13:42
purl orkut has karma of -8
Coke orkut--
dalek r34571 | kjs++ | trunk/compilers/pirc/new (4 files):
: [pirc] bits of find_outer_sub().
review: www.parrotvm.org/svn/parrot/revision?rev=34571
r34572 | rurban++ | trunk/t/tools: 13:44
: [cage] prefer $PConfig{perl} over perl
review: www.parrotvm.org/svn/parrot/revision?rev=34572
13:54 Andy joined 13:56 apeiron joined
dalek r34573 | kjs++ | trunk/compilers/pirc/new (2 files): 13:58
: [pirc] bits for namespace stuff in PMC_sub.
review: www.parrotvm.org/svn/parrot/revision?rev=34573
14:05 apeiron_ joined
dalek r34574 | kjs++ | trunk/compilers/pirc/new (4 files): 14:28
: [pirc] remove lex_name field from target; no longer used. + some documentation updates.
review: www.parrotvm.org/svn/parrot/revision?rev=34574
14:35 jimmy joined 14:52 workbench joined
dalek r34575 | rurban++ | branches/pdd30install_stage3 (5 files): 14:54
: [test] add parrot_utils tests #101
: trac.parrot.org/parrot/ticket/101
review: www.parrotvm.org/svn/parrot/revision?rev=34575
14:57 AndyA joined
dalek r34576 | kjs++ | trunk/compilers/pirc/new (2 files): 15:05
: [pirc] first draft of optimization suggested by chromatic++. box_p_ic becomes set_p_pc.
review: www.parrotvm.org/svn/parrot/revision?rev=34576
15:06 workbench joined 15:13 jsut|work joined
dalek r34577 | kjs++ | trunk/compilers/pirc/new: 15:15
: [pirc] optimize box_p_sc and box_p_nc also as set_p_pc. + refactor.
review: www.parrotvm.org/svn/parrot/revision?rev=34577
15:23 gryphon joined
dalek r34578 | rurban++ | branches/pdd30install_stage3: 15:35
: [install] add missing files which need to installed, languages not yet
review: www.parrotvm.org/svn/parrot/revision?rev=34578
r34579 | pmichaud++ | trunk/languages/perl6/docs: 15:41
: [rakudo]: spectest-progress.csv update: 264 files, 5802 passing, 141 failing
: Failure summary:
: S16-filehandles/io.rakudo aborted 57 test(s)
: S16-filehandles/io_in_for_loops.rakudo aborted 49 test(s)
: S16-filehandles/io_in_while_loops.t aborted 13 test(s)
: S16-io/basic-open.t aborted 9 test(s)
: S16-unfiled/slurp.rakudo aborted 9 test(s)
: integration/say-crash.t aborted 4 test(s)
review: www.parrotvm.org/svn/parrot/revision?rev=34579
masak some IO failures there. 15:42
15:43 Andy joined
jonathan wonders where they came from. 15:45
pmichaud I suspect the filemode changes to FileHandle
jonathan ah, should be easy to fix then
pmichaud: How's paramters going? I glanced over what you've been checking in earlier and it looks good. 15:46
pmichaud it's going well thus far
still a ways to go
jonathan Lot of regressions to fix up?
pmichaud but we now handle sub foo(@a) { ... } and sub foo(%h) { ... } 15:47
well, I've ripped out huge portions of actions.pm that haven't gone back in yet
jonathan We didn't before?
pmichaud no, we didn't before.
before it was treating all parameters as Perl6Scalar
so, for example, sub foo(%h?) { ... } would result in %h being an undef instead of an empty Hash 15:48
jonathan Ah.
OK.
pmichaud and
sub foo(@a) { ... }; foo(1); would leave @a as an Int instead of an Array containing an int
anyway, the typechecking and binding code is no longer in actions.pm 15:49
it's now in a separate function that does the typechecking and binding based on the $!signature object 15:50
jonathan Right, as we agreed a while back. :-)
jonathan is happy to see this implemented.
pmichaud right now I'm trying to figure out if STD.pm chooses to parse @( ... ) as a variable or a circumfix: (and why there are two choices) 15:51
15:51 hercynium joined 15:56 tetragon joined
pmichaud looks like it uses circumfix:sigil . I have no clue why. 15:57
15:57 barney joined
dalek r34580 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 15:58
: [rakudo]: Make <sigil>(...) parse as circumfix again.
review: www.parrotvm.org/svn/parrot/revision?rev=34580
16:00 elmex_ joined
Coke does parrot support a namespace path? 16:14
(like @INC for namespaces)
dalek r34581 | bernhard++ | trunk (5 files): 16:16
: RT #61800: [PATCH] implement array_fill() within pipp.
: Courtesy of Daniel Keane.
review: www.parrotvm.org/svn/parrot/revision?rev=34581
Coke Actually, I suppose I can easily do that on my own, since I have a hook on every command invocation. Ne'ermind.
dalek r34582 | bernhard++ | trunk (7 files): 16:24
: RT #61786: [PATCH] docs/book typo corrections
: Courtesy of Ovid.
review: www.parrotvm.org/svn/parrot/revision?rev=34582
Coke looks like we misspell precidence a bit, too, if someone wants to grab that. 16:27
16:29 Zaba joined
dalek r34583 | bernhard++ | trunk (4 files): 16:29
: RT #61812: [PATCH] Fixed typos in docs -- removed duplicate example code
: Courtesy of Saleem Ansari.
review: www.parrotvm.org/svn/parrot/revision?rev=34583
16:31 jhorwitz joined
dalek r34584 | bernhard++ | trunk: 16:42
: [docs] order entries in CREDITS
review: www.parrotvm.org/svn/parrot/revision?rev=34584
rurban I cannot change the tiackt status of my trac tickets. Who's admin? 17:10
dalek r34585 | pmichaud++ | branches/rvar/languages/perl6/src/classes:
: [rakudo]: Protoobjects are already scalars.
review: www.parrotvm.org/svn/parrot/revision?rev=34585
r34586 | bernhard++ | trunk/languages/pipp/src/common: 17:15
: [Pipp] The Perl-like file modes have been removed from Parrot.
review: www.parrotvm.org/svn/parrot/revision?rev=34586
17:18 tomyan joined 17:29 mberends joined
rurban The cygwin distro is now out (0.8.2) 17:30
I'll report any cygwin feedbacks here. 17:31
17:40 Zaba joined, ask_ joined 17:41 leto joined 17:47 davidfetter joined 17:48 Zaba_ joined
dalek r34587 | rurban++ | branches/pdd30install_stage3/ports/cygwin (7 files): 17:52
: [ports] parrot-0.8.2-1 release
review: www.parrotvm.org/svn/parrot/revision?rev=34587
18:26 allison joined 18:49 register joined 18:55 dngor joined 19:10 ffwonko joined 19:26 chromatic joined
dalek r34588 | bernhard++ | trunk (3 files): 19:28
: [codingstd] remove a trailing space.
review: www.parrotvm.org/svn/parrot/revision?rev=34588
r34589 | jkeenan++ | branches/pdd30install_stage3 (2 files):
: Update MANIFEST and MANIFEST.SKIP.
review: www.parrotvm.org/svn/parrot/revision?rev=34589
allison chromatic: (reviewing gc branch commits) quick question about r34113, was that a merge from trunk? 19:35
chromatic Checking. 19:36
Oh, I'm sure it was.
I tried to check out the branch with SVK and it played helpful.
jhorwitz allison++ # i see pdd22io_part3 branch is coming along nicely :) 19:37
allison chromatic: cool, I'll update the merge history
jhorwitz: just about ready to merge in, fixing a few failing tests 19:38
jhorwitz: well, all existing tests pass, I just added some new ones for the StringHandle PMC
jhorwitz allison: can i subclass using a parrot class or do i have to write a new PMC? 19:39
chromatic That was my question too. 19:40
allison jhorwitz: you can subclass using a Parrot Class, and if you do you can use all the internal I/O functions. The one catch is that a subclass has to have the same basic struct members as FileHandle
jhorwitz as attributes?
allison ah, you mean a PIR class, rather than a C class 19:41
jhorwitz yeah
allison the only way to do that at the moment is by delegation
largely because Parrot's mechanism for subclassing across the C->PIR barrier isn't complete
jhorwitz nods 19:42
allison I created StringHandle as a demonstration that any PMC with the right methods can polymorphically substitute for a FileHandle 19:43
jhorwitz so it would seem that for me it would be easiest to write a new PMC using StringHandle as a template. 19:44
allison the things that won't work are the 'tell', 'seek', and 'peek' functions, which currently work with types that aren't supported in PIR
jhorwitz all i need is open, read and write (or their equivalents). :) 19:46
allison (though, I notice the opcodes handle these by casting the long as an int or two ints
jhorwitz: and, yes, using StringHandle as a template will work fine
jhorwitz excellent
jhorwitz loves it when a plan comes together.... 19:47
allison are you using internal I/O functions at all?
jhorwitz PIO functions?
allison aye, or the Parrot_io_* functions 19:48
(I'm guessing not)
jhorwitz nope
allison then StringHandle is definitely the way to go
(it doesn't use them either) 19:49
jhorwitz any IO that i do is abstracted by apache
keeps me out of trouble. :)
allison and StringHandle, btw, is safe to subclass from PIR 19:50
jhorwitz cool 19:51
19:53 rurban_ joined 19:57 tomyan joined
Coke is it possible to use the trick to get your pir subclasses proxy attribute to override the invoke vtable? 20:02
I want to have my TclProc (a pir class that subclasses Sub) have some setup/teardown on invoke. 20:03
$P0 = getattribute self, ['Sub'], 'proxy'
$P0()
(the overriden vtable is getting invoked, I just can't seem to use that trick to get at the original invoke vtable.) 20:05
(the $P0 there is NULL) 20:07
chromatic Hm, the new IO file modes are undocumented except for the book -- nothing in the PDD, the ops, nor the Parrot_io_* function docs, as far as I can see.
Coke they're in the PDD.
pdd22, search for "append" 20:08
(which has duplicated docs which say "same as open opcode", and yah, I don't think their documented at the opcode. 20:09
ah, in fact, the opcode file lies and says 'perl style'
chromatic Hence my comment.
Coke my fault, I suppose; I didn't update the docs when I ripped out the old syntax.
chromatic I'm running Rakudo tests now, having updated the code there to fix things. Hopefully. 20:10
Coke chromatic: fixed. 20:13
dalek r34590 | coke++ | trunk/src/ops: 20:14
: reference mode types at the opcode docs, where the PDD points us to.
review: www.parrotvm.org/svn/parrot/revision?rev=34590
Coke (oh good, I had already switched back to trunk earlier today. )
my note can probably be cleaned up a bit. 20:15
The way the code is written now, you must specify one of 'r' or 'w'
nopaste "Coke" at 72.228.52.192 pasted "without an arg, this errors out on # of params. With args, the typeof gives the type of the first argument. (where'd self go?)" (25 lines) at nopaste.snit.ch/15115 20:24
Coke I would expect that to print "IN UR VTABLE\\nTclProc" 20:25
tewk I have a class registry patch ready for review. 20:28
allison tewk: excellent
tewk t/library/p6object.t, fails several tests that need to be modified, I just dont' know how to fix them.
chromatic t/spec/S05-substitution/subst.rakudo TODO passed: 22, 25, 35, 38 20:29
dalek r34591 | chromatic++ | trunk/languages/perl6/src/builtins:
: [Rakudo] Fixed IO open modes; all spectests pass again.
review: www.parrotvm.org/svn/parrot/revision?rev=34591
masak chromatic++ 20:32
20:35 dngor joined 20:40 PacoLinux joined
nopaste "tewk" at 209.193.99.80 pasted "class_registry.diff" (2857 lines) at nopaste.snit.ch/15116 20:41
pmichaud I'd be surprised if p6object.t fails tests. That might indicate that the class registry patch isn't as transparent as it needs to be. 20:49
Coke allison: ping 20:52
for open modes, is it intentional that you have to specify "write append", not just "append" ?
allison Coke: yes 20:53
well, wait...
Coke if you use an open mode of just 'a', it fails.
(because 'a' doesn't imply WRITE)
(and you have to specify either read or write, at least on unix.) 20:54
allison Coke: yes, that's how it works
Coke ok.
allison Coke: why?
Coke because i would expect 'a' to imply 'w'
(because 'ra' doesn't make any sense to me.)
chromatic +>
allison the way the internal flags work is you specify "WRITE" and either TRUNCATE or APPEND 20:56
Coke there is no declared way to specify truncate.
chromatic w
allison so, made truncate the default
and then set APPEND if 'a' is also found
(that is, unset TRUNCATE and set APPEND)
Coke right. 20:57
<shrug> I don't particularly care, I just wanted to make sure it was intentional.
I am going to have to map tcl's modes to parrots anyway.
allison the PDD is non-specific
at this point, it can really go either way
it's early enough that changing 'a' to imply 'w' isn't going to mess anyone up 20:58
Coke again, I don't care. I just wanted to make sure it was intentional.
allison so, how strong is your first reaction that 'a' should imply 'w'
Coke it surprised me.
allison yes, but the first reactions of the first users are important
so, want to capture it 20:59
Coke if I didn't have access to the source code, I would have very confused.
tewk pmichaud: I don't put classes in the registry anymore. its just bound to raise its nasty head later.
pmichaud tewk: then we need to go through a deprecation cycle for it.
allison Coke: ok, I'll change that right after I merge in the stringhandles branch
tewk hasn't the old oo system been deprecated for months 21:00
pmichaud (filehandle modes) my first reaction is that they look like stdio modes, so I'd expect them to work as such.
Coke I thought we already replaced the old OO system. =-)
pmichaud tewk: afaik the class registry has not been deprecated.
21:00 workbench joined
allison the class registry is still used to create unique ids 21:01
Coke running one spec test via tclsh8.5 takes 0.055s; via partcl, it takes 5m.
allison and unique ids are still necessary
Coke 5*60/0.055
purl 5454.54545454545
allison and, the new OO system still enters all PIR classes in the registry
tewk allison: creating unique ids hasn't changed, you just can't assume a flat namespace 21:02
allison tewk: right, isn't that what your patch is fixing?
eliminating the flat namespace?
tewk yes but there is code where people assume a flat namespace, and I'm not providing backwards compat for that.
allison mmmm... diff -u is not producing a terribly comprehensible result on this one 21:03
Tene someone want to remind me how to create a branch with svn?
allison Tene: svn copy
purl svn copy is, like, a good idea
Coke svn cp svn.perl.org/parrot/trunk svn.perl.org/parrot/branches/new_branch 21:04
Tene thanks
tewk if you create class foo in namespace A and then in switch to namespace B and do $I0 isa Foo_obj "Foo" 21:05
because it can't find "Foo" in namespace B
$I0 isa Foo_obj Foo_class is the right way to do that of course. 21:06
Tene isa_*_s should probably look in the same place that new_*_s does
tewk Continuing to support a flat namespace is dangerous, as an example, I could introduce my own version of P6object early in the load process and break everything that uses PCT 21:08
Coke Anyone have any ideas on overriding the invoke vtable? (need it to support tcl's [trace])
GeJ Good morning everyone 21:09
pmichaud tewk: actually, that *wouldn't* break PCT because PCT tries never to use the flat namespace in the first place.
that's kinda the point.
(if PCT is using the flat namespace for anything other than Parrot builtin PMCs, it's a bug in PCT.) 21:10
HLLCompiler being the potentially notable exception, as it needs an overhaul
tewk pmichaud: ok. bad example
good news: perl6 only has a couple of failures with the new patch
good news: perl6 only has a couple of failures with the resgistry hack. 21:11
good news: perl6 only has a couple of failures with the class registry fix.
pmichaud I would expect Rakudo to have a couple of failures, yes -- there's still some code that uses new_p_sc
but that's partially why I think we need to keep the registry around a while, to give people a chance to adapt 21:12
nopaste "tewk" at 209.193.99.80 pasted "rakudo.class_registry_fix.results" (9 lines) at nopaste.snit.ch/15117
pmichaud tewk: that's _all_ that fail? 21:13
if so, I'm totally and utterly shocked. :-)
tewk pmichaud: yep, which supports your statement that PCT is doing the right thing.
I think it is further evidence that the change won't be as painfull as maybe we expected. 21:14
pmichaud Rakudo and PCT have the advantage that I've been designing away from the class registry for nearly a year. 21:15
I suspect other languages don't have that luxury.
tewk new_p_sc continues to work if you use it in the same namespace where you declared the class.
Who doesn'
t use PCT? tcl, ...
pmichaud same namespace == same hll namespace?
Tene oh, I should probably wait until after class registry fixes go in 21:16
pmichaud it's not just the compiler, it's also the builtins
PCT just takes care of the compiler part.
Tene tewk: you going to commit class registry stuff today?
pmichaud and if "continues to work if you use it in the same namespace" really means "same hll namespace", then things may break horribly when we start using .hll 21:17
Tene pmichaud: no, same .namespace
tewk no it means the same namespace
pmichaud so, new 'Integer' would fail if I don't have an Integer class in my current namespace?
pmichaud is confused.
tewk Integer is a core PMC, so it will work 21:18
pmichaud "core PMC" means "any PMC"?
how about dynamically loaded PMCs?
Tene I thought that _sc meant [parrot;*] 21:19
pmichaud that wasn't what I proposed, no. 21:20
tewk Tene: no _sc means string constant.
I think all PMC still go into the registry
Tene tewk: s/_sc/the _sc variants of the class registry ops/, but i'm wrong anyway
tewk the _sc variants go into the current namespace. 21:21
We don't support dynpmcs in namespaces yet do we? 21:23
pmichaud every PMC type has a corresponding namespace, yes. 21:24
I don't know if there's a way to have a PMC type in anything other than parrot;
Coke switches to the list for his invoke() question. 21:32
tewk: tcl doesn't use PCT; neither does pheme, IIRC. 21:33
tewk Coke: I'm trying to fix Tcl 21:34
Coke would you like commit bits for partcl?
tewk tewk: no, not yet. 21:35
Coke talking to yourself is not a good sign.
tewk I'm not going to check in the registry fix yet I'm just trying to gauge how bid a disruption it is.
Coke: got: 'Class '[ 'TclExpr' ; 'PAST' ; 'Grammar' ]' not found 21:36
where does this lookup occur?
pmichaud suspects it's a tge-generated item.
Coke very likely.
tewk pmichaud++ sounds right
dalek r34592 | tewk++ | branches: 21:38
: Gut the class registry :)
review: www.parrotvm.org/svn/parrot/revision?rev=34592
tewk no worries I just created a branch :)
Tene Coke: pheme will use PCT soonish. 21:52
tewk pheme passes all its tests
Tene tewk: when do you plan to commit? 21:56
tewk Tene: when/if people think it is a good idea. 21:58
Coke Tene: I thought pheme was meant not to use pct.
ISTR chromatic explaining it as a canary in the coal mine for tcl.
Tene Coke: chromatic said that it's meant to be a simple demonstration of the right way to do things, and so should ddefinitely use PCT 21:59
Coke must have been a happy coincidence.
I would happily accept a patch to let tcl use PCT. =-) 22:00
chromatic Canary in the coal mine for TGE. 22:01
(but it would be easier to add features to Pheme if it used PCT)
dalek r34593 | chromatic++ | trunk/src/ops: 22:02
: [ops] Removed trailing whitespace.
review: www.parrotvm.org/svn/parrot/revision?rev=34593
22:03 Whiteknight joined
Coke wozzat me? sorry 22:03
chromatic Was that me complaining that someone checked in accurate, concise, and timely documentation? No way! 22:06
Coke sorry about the whitespace, still. 22:07
chromatic Check in more documentation and I will happy fix any apostrophe or whitespace fixes if they exist. 22:08
Coke I cannot think of a comment that doesn't invoke tcl and snark. 22:09
pmichaud including that one. :-P 22:12
Coke exactly! 22:15
purl somebody said exactly! was it not awesome?
Coke aside from --optimize, how I can make parrot go faster? 22:23
(3*60+46)/0.055
purl 4109.09090909091
pmichaud perhaps a better GC? 22:24
pmichaud ducks.
Coke I should definitely run future spec test runs against an optimized parrot, though. 22:25
5/(3+46/60)
purl 1.32743362831858
Coke (3+46/60)/5
purl 0.753333333333333
Tene pmichaud: don't we already think that that the class registry fix is a good idea?
pmichaud I think the class registry fix is important. But tewk's details differ slightly from what I was imagining, and we can't cause existing code relying on the registry to break without going through a deprecation cycle first. 22:26
s/important/critical/
(well, we can skip the deprecation cycle, but only by breaking a long-standing policy. I'm not sure it's critical enough to warrant that.) 22:27
tewk I've got an idea about quickly adding backwards compat.
I'll give it a try
Coke note that we are running out of deprecation cycles for 1.0 22:28
pmichaud if fixing the registry involves modifying existing tests or language implementations, then by definition we need a deprecation cycle.
Coke (presuming we're sticking with our target date.)
Tene and we don't currently need this for HLL stuff, right?
pmichaud I think we can move forward on HLL stuff w/o the registry fix, but as you observed it might be good to get the registry fix in place first. 22:29
I don't see one as blocking on the other, no.
Tene I mostly wanted to avoid conflicts, but if it's not going in soon, I should be fine. 22:30
pmichaud I don't think there should be (m)any conflicts.
Tene Can we at least get a deprecation note in DEPRECATED, though?
pmichaud I'd like to know what exactly we're deprecating, first.
Coke getting the note in only matters on release boundaries.
pmichaud again, what tewk described is different from what I proposed, so I'd like to understand that better first. 22:31
Tene Coke: yes, and I'd like to make sure this can be fixed after the next release. 22:32
pmichaud: okay.
pmichaud if fixing the class registry requires a deprecation, then almost by definition we missed the Jan 2009 target for it. :-| 22:33
Tene Ah. 22:34
pmichaud (although we can certainly have it fixed on the day-after-Jan-2009-release :-)
Tene food with the girl &
dalek r34594 | pmichaud++ | branches/rvar/languages/perl6/src (6 files): 22:35
: [rakudo]: Fix a brain-o; we can't have Scalar(), Array(), Hash() subs
: because those are actually types. So work around it for now.
review: www.parrotvm.org/svn/parrot/revision?rev=34594
jonathan is back
Coke jonathan! 22:36
purl i guess jonathan is mailto:jnthn@jnthn.net or trying to put together a grant application.
jonathan Coke!
Coke How much would I have to pay you to work on tcl for a day? =-)
jonathan Seriously?
purl Totally!
jonathan I don't exactly know the codebase... ;-)
Coke come up to speed on your own time! =-)
jonathan Is it using PCT, or written in PIR, or hybrid (like PGE parser, PIR rest...)? 22:37
Coke PGE/TGE
lots of runtime invocations of stuff written in PIR.
jonathan Ah, it's sorta interpreted-ish as much as it is compiled? 22:38
pmichaud Coke: we might get a bigger win if we could get Jonathan to instrument Parrot with some profiling stuff :-)
Coke of more general use would be a ....
what pmichaud said.
jonathan Ah. So what you really want is performance stuff?
Coke If we had sub level profile information (PIR & C), that would be awesome.
then I can properly blame patrick! =-)
jonathan At least, performance analysis...
pmichaud Coke's goal is to make Tcl less annoyingly slow.
s/annoyingly/agonizingly/ 22:39
Coke with an optimized bird, one spec test for tcl is currently 4100 times slower than tclsh8.5.x
chromatic Even just knowing where the hotspots in PGE and PCT are would help.
jonathan Given the recent OMFG 2000 TIMES SLOWER THAN LUA post on the list, I'm struggling to have much faith in Parrot performance right now.
Coke (5400 with a regular build.)
I feel his pain.
chromatic We have to fix calling conventions to NOT COPY DATA AROUND MULTIPLE TIMES WHEN WE COULD JUST POKE IN REGISTERS WHICH IS THE POINT OF REGISTERS NOT STACKS to get some of that back. 22:40
jonathan First step would be to revert the MMD changes on ops. *sigh*
Bluntly, I think that change was a mistake.
chromatic MMD doesn't hurt as much as you think.
jonathan But IANTA.
Coke profiling. need profiling. =-)
jonathan chromatic: No, it didn't hurt before.
chromatic It only hurts now because argument passing is slow. 22:41
jonathan Like, when it was a lookup in a 2D array which gave us a function pointer (OK, a couple of indirections...)
No, a candidate sort or even hitting an MMD cache is *way* more expensive than a 2D array lookup.
chromatic I made a quick patch to run MMD from ops through the cache lookup, and it was only a few percent faster.
jonathan That's because even MMD *with* a cache hit now is more costly than what we used to do.
chromatic It was not worth abstracting out. I was surprised.
It's not the MMD that's the problem. It's Parrot_pcc_invoke_from_sig_object(). 22:42
jonathan That doesn't surprise me that much. The marshalling is costly, however.
Yes.
chromatic There's at least one spot to optimize in MMD caching, and that's the string creation for cache keys.
I haven't thought of a simple solution there though. It'd be very nice to make keys usable with const_string(). 22:43
jonathan chromatic: I only used Parrot STRING*s because of what happened with a cstring cache...
(I forgot about NULL termination ;-))
chromatic Exactly.
jonathan If we didn't piggy-back of hash or tried to do something smart we could do better.
s/of/off/
chromatic I hate to multiply entities, but a trie wouldn't hurt there at all.
jonathan But I was going more for first cut than optimal. 22:44
that'd be wroth looking at.
chromatic Yeah, that's still only at most a 10% improvement though.
jonathan But as you said, efforts on marshalling less and stuff would be a big win.
chromatic Right now we pay a huge cost in argument processing because we *may* have named parameters.
jonathan What worries me plenty is that other VMs can JIT calling.
For simple calls.
chromatic Agreed.
jonathan leo got some amazing performance when he made us able to do that. 22:45
But we've lost it.
(We've gained a lot of correctness and cleaner code, mind...)
pmichaud keep in mind that PGE always has to assume there are named parameters.
chromatic We need to start by unifying all calling through sig objects, and then pull more information into sig objects so we don't create some 4 - 7 PMCs for each invocation.
pmichaud if there's a way to optimize that, I'm in favor of it. 22:46
chromatic At compile time, we know if we have named parameters or named arguments. 22:47
We can make a fast path there.
jonathan We know on the caller side.
chromatic We know on the callee side too.
Not for any given pair, but for each element of the pair.
jonathan We don't know the callee at compile time. ;-)
pmichaud I'll rephrase
jonathan Yes, we're saying the same thing. :-)
pmichaud PGE always has to assume there are slurpy named params 22:48
so a hash gets built for every regex invocation even when it might not be needed.
jonathan wonders how many places modify the thingy that collects the slurpy parameters. 22:49
pmichaud a few, but I know where they are.
chromatic .sub "name" :method
.param pmc adverbs :unique_reg :slurpy :named
jonathan If we know there are no named being passed, and we expect a slurpy, and we can promise non-modification, then we can just have one global read-only Hash. 22:50
pmichaud correct.
I was even thinking of a COW hash :-)
jonathan .param pmc adverbs :slurpy :named :ro
We can't easily do that I fear.
pmichaud right. :-)
chromatic No, it's named adverbs'
pmichaud but there's another approach
chromatic not 'ro'
pmichaud (more) 22:51
Coke kicks off an --optimized run of partcl's spec tests.
pmichaud it would be nice if there was a way to say "ignore any extra arguments the caller happens to send" without having to create slurpies for them
in fact, this is a problem in general
right now we can't throw exceptions when a caller sends arguments to a sub taking zero params 22:52
jonathan Erm? 22:53
purl Erm is it bat shit crazy? It's just unprovable right?
pmichaud iwbni we could have a way to differentiate subs that ignore extra arguments from those that expect a specific set of extra arguments
s:2nd/extra//
jonathan pmichaud: Ah, you mean, this can take any params, but we ignore them and don't bind them anywhere?
pmichaud yes.
"if there are extra params, it's okay, just ignore them"
jonathan That sounds like a quite specific and odd thing.
pmichaud actually, it'd be very common 22:54
jonathan In PGE?
pmichaud yes.
PGE regexes are technically methods
jonathan If it'd get a PGE win, it's probably an optimization worth considering.
pmichaud PGE regexes are technically Perl 6 methods
and Perl 6 methods always have an assumed *%_ param
chromatic At compile time in PIR we know that we have named parameters; we could convert those to hash lookups.
pmichaud (i.e., a slurpy hash)
chromatic At least the first assignments.
pmichaud so therefore when PGE generates its regexes, it always has to put that slurpy param at the end, even though it's not going to use anything it gets there. 22:55
because calling a regex with extra named arguments shouldn't throw an exception.
the same is true for any method in Perl 6
so, PGE ends up creating these slurpy hashes on every regex invocation 22:56
jonathan *nod*
pmichaud better would be
PGE generates specific named parameters for the ones it's interested in, and ignores the rest 22:57
jonathan In Perl 6 it's harder to staticly know when ignoring the extra nameds is possible, but we likely can. And for PGE, I guess it's much easier.
pmichaud for PGE it's pretty easy. 22:58
we don't expect PGE to be dealing with CALLER::<%_>
(at least, I don't.)
22:59 TiMBuS joined
pmichaud but this is also part of the reason I'm in favor of a :capture PMC type 22:59
i.e., make it easy for me to unpack the arguments in whatever way I want.
s/PMC type/param type/ 23:00
note that :capture doesn't have to imply creating a hash and array -- it just means that when I do 23:01
.param pmc args :capture
then args[0] gives me the first positional argument and args['name'] gives me the named argument
GeJ From the i-have-some-free-time-to-do-the-gruntwork dept., could someone point me to a Perl-to-PIR converted test so I can work on some others? 23:02
pmichaud 'args' itself can be something that is very smart about locating the corresponding argument
i.e., $I0 = args[0] doesn't have to involve going through a PMC if the sub was invoked with an integer register as the first argument. 23:03
chromatic GeJ, rt.perl.org/rt3/Ticket/Display.html?id=60682 23:04
jonathan pmichaud: Laziness good. :-)
chromatic All this makes me want to have a smarter register allocator and SSA-based optimizations of PCT before generating PBC. Or I could eat pie and play video games with my family.
pmichaud mmmmm pie 23:05
but it could also mean that I could avoid doing :flat and :named :flat if I just wanted to pass all of the arguments on to another sub (e.g., in a delegation or tailcall)
GeJ chromatic: Ah, thanks. I'll try to warm up with some easy ones first and hopefully will go ballistics later this afternoon. 23:06
chromatic Problem is, we're not thinking of the advantages of registers, nor laziness.
pmichaud we aren't?
chromatic GeJ, I look forward to applying patches.
Currently we aren't.
pmichaud which "we" are we referring to? ;-)
chromatic "We" as in "the current code".
pmichaud correct, the current code does not do this. 23:07
I was hoping that the calling conventions branch might head in this direction, but I'm doubtful now.
chromatic I talked to allison about this yesterday, and she convinced me that unifying multiple disparate invocation styles into one is an advantage to making them fast and saner later. 23:08
pmichaud if you're convinced, then I feel much better.
chromatic It's much easier to optimize decent code than accreted, half-working experiments. 23:09
jonathan While that's true, releasing a 1.0 with a Lua compiler that is 2000 times slower than the standard engine isn't going to fly too well. 23:10
And I don't think it's slow because the Lua on Parrot compiler is bad, though there's doubtless room for optimization there too. 23:11
chromatic I agree, but I don't want to fall into the trap of thinking that we should delay 1.0 for this feature or that feature.
We could release a new version of Parrot every day if we wanted. 23:12
jonathan Sure, we're not saying 1.0 is production, but "a stable platform for building compilers" implies we want to attract compiler writers.
We all know that. It's a perception game. And of course, performance isn't a feature.
pmichaud jonathan: I'm cheerful -- the roadmap says that GC, contexts, and calling conventions will all be refactored in the Jan 2009 release. 1/2 :-)
jonathan pmichaud: And if it happens by then I'll be overjoyed. :-) 23:13
chromatic Our advantage isn't "Faster than LuaJIT"; it's "Interoperable with other languages, unencumbered and free, and the world's best compiler toolkit."
jonathan chromatic: I didn't say we had to be faster. I said we had to be under three orders of magnitude slower. :-)
chromatic Make PGE use fewer PMCs and we can probably double its speed. 23:14
jonathan Slower doesn't bother me. *This* much slower does.
chromatic The trick is knowing which PMCs we don't need and where.
pmichaud give me a way to ignore extra named params and I can likely save one pmc per regex invocation :-)
jonathan :capture :-) 23:15
It's just a...simple matter of implementation...
pmichaud (more than that, because we won't be converting named arguments into PMCs)
chromatic Write me a simple test case, and I'll see what I can do. 23:16
pmichaud (writing.)
chromatic Thanks. 23:17
nopaste "pmichaud" at 72.181.176.220 pasted "ignore extra named arguments test for chromatic" (12 lines) at nopaste.snit.ch/15119 23:18
"pmichaud" at 72.181.176.220 pasted "ignore extra named arguments test for chromatic (with current execution)" (12 lines) at nopaste.snit.ch/15120
pmichaud arggggh
nopaste "pmichaud" at 72.181.176.220 pasted "ignore extra named arguments test for chromatic (with current execution) FOR REAL THIS TIME" (17 lines) at nopaste.snit.ch/15121
pmichaud ideally I'd think something like 23:19
.param pmc args :slurpy :named :ignore 23:20
.param pmc args :slurpy :ignore
chromatic_away the :ignore flag
?
pmichaud basically it means "accept extra arguments for purposes of calling this sub, but don't bother creating the slurpy pmc" 23:21
(pick a more suitable flag or name besides :ignore)
or if not a flag, then a directive.
a flag is nice because we could also then do 23:22
($P0, $P1, $P2 :slurpy :ignore) = 'foo'()
23:22 ruoso joined
pmichaud which allows 'foo' to return extra (named) arguments that are also ignored. 23:22
right now they're ignored by default, because chip rightly disliked the idea that we would have to always do 23:23
($P0, $P1 :slurpy) = 'foo'()
when we only wanted the first return value back from foo
_another_ possibility would be to turn the whole thing around. 23:25
right now we throw exceptions when the number of (named) arguments doesn't match the params
_except_ when a sub doesn't declare params, in which case they're ignored 23:26
if we could have a flag or directive that tells the sub whether or not to do parameter arity checking, that'd be another way to approach it.
i.e., I'm thinking we should perhaps try to solve RT #39844 while we're at this. 23:29
pmichaud shuts up now. 23:30
23:30 Limbic_Region joined
jonathan gets some rest now 23:31
Taking family to Vienna tomorrow, so don't know that I'll be around much.
It'll be January before I really dig back into stuff properly. 23:32
pmichaud jonathan: okay.
jonathan: can you give me a quick overview of how subset types work?
(I haven't looked at the code yet.)
jonathan pmichaud: From what angle?
pmichaud I'll ask slighly differently.
jonathan But basically, all you need to know from a type-checking angle is to tall .ACCEPTS - just smart-matching.
*call
pmichaud what's the difference between "type" and "constraints" in Signature?
jonathan Ah. That matters. :-) 23:33
If you have a simple type, either a single role or a single class name, then it goes in type
If you have either multiple type names or one type name that refers to a subset type, it goes in constraints. 23:34
Examples
purl hmmm... Examples is shorl.com/bynygruhofrebru
jonathan sub foo(Int $a) { ... } # type is Int, constraints is empty
pmichaud then iiuc, 'type' is an optimization for mmd on simple types, while everything else goes in constraints?
jonathan sub foo(R1 R2 $a) { ... } # R1 and R2 go in constraints 23:35
It's deeper than optimization.
Note that
purl somebody said Note that was a really bad picture of me, but it was the only thing I could find at this hour.
jonathan sub foo(Int where { $_ > 0 }) { ... } # type Int, plus one constraint 23:36
oh
I meant sub foo(Int $a where { $_ > 0 })
And was calling to follow it with
sub foo(Int where { $_ > 0 } $a)
Which mean the smae thing.
Basically if there's at most one type that is a class or a role, it goes in type. 23:37
If there is more than one class/role it's more complex and they go in constraints.
pmichaud what would happen if that example ended up with Int and where in constraints ?
(and type empty)
23:37 apeiron joined
jonathan Type should never be empty, but rather Any, otherwise auto-threading won't work. But the direct answer to what you asked, is that MMD would not consider the Int type when doing type narrowness analysis. 23:38
And thus if you wrote a sub foo(Num $a) { ... }
pmichaud is the dispatcher currently smart enough to handle the case when a parameter isn't a subclass of Any?
jonathan And you'd not put Int in the type slot 23:39
Then the Num would come out more narrow.
pmichaud sorry, argument isn't a subclass of Any
23:39 jq joined
jonathan Multi-dispatch will currently say no applicable candidates, I believe. 23:39
perl6: multi foo(Int $x) { say 42 }; foo(1); foo(1 | 2); 23:40
pmichaud that might have some implications for language interop
polyglotbot OUTPUT[42␤No applicable candidates found to dispatch to for 'foo'␤current instr.: '_block14' pc 100 (EVAL_13:46)␤called from Sub '!UNIT_START' pc 16073 (src/builtins/guts.pir:327)␤called from Sub 'parrot;PCT;HLLCompiler;eval' pc 892 (src/PCT/HLLCompiler.pir:508)␤called from Sub
..'parrot;PCT;HLLCompiler;evalfiles' pc 1217 (src/PCT/HLLCompiler.pir:...
jonathan We'll worry about that when we have .HLL and some languages to interporate with.
pmichaud I already have languages to interoperate with: PGE
23:41 cognominal_ joined
jonathan Then we'll have to make Any do something special when the call comes from a different HLL. 23:41
Or handle it in signature binding.
pmichaud right.
again, I was just curious. 23:42
jonathan I don't fancy hanlding it until we have .HLL in place unless we really have to.
When we have that, it's a dynop that cheaply checks if the caller is from a different HLL.
pmichaud I give about a 40% estimate that Perl 6 ends up re-thinking Junction handling before we're done. :-)
(note "Perl 6" not "Rakudo" :-) 23:43
jonathan I like the way it works from a typing point of view.
But I agree it makes language inter-op a tad interesting.
Limbic_Region pmichaud: the synopses officially live in pugs repo now right?
pmichaud L_R: that's correct.
L_R: we still haven't done the magic to make all of the related websites point to the right place.
(and I'm not necessarily the person with that magic.) 23:44
jonathan pmichaud: If you're actually going to enforce the Any type - which I don't think we are right now - we might get some interesting things showing up.
Limbic_Region my question has more to do with the draft synopses that only lived there
for instance - S17
jonathan (As in, during sig binding.)
pmichaud jonathan: actually, I was wondering what happens if I don't enforce it.
if not enforcing it is what we do now, great.
jonathan pmichaud: If it's easy for you to try and see the fallout, please try it.
If you don't, I will have to in a couple of weeks anyway. 23:45
pmichaud it will be easy to do after the refactor.
I'm _very_ pleased with the way this refactor is shaping up.
jonathan (Because we need to for junctions.)
Limbic_Region pmichaud: svn.pugscode.org/pugs/docs/Perl6/Sp...rrency.pod # there is no mention of coroutines anywhere else so I am wondering if these draft synopses should be moved?
shorten Limbic_Region's url is at xrl.us/beay9z
pmichaud so far actions.pm is about 1500 lines shorter.
jonathan I didn't look at everything, but I did look at actions.pm after your changes and liked what I saw.
...wow...
pmichaud (there's a lot of code left to be restored, but it's a lot shorter)
jonathan How many less comments do we now have? ;-) 23:46
I think one of us has a tendancy to write more of those than the other. :-)
pmichaud some of that too. But I'm trying to emulate your commenting style as much as I can.
jonathan I'm not sure how helpful my comments are to others.
pmichaud I can answer that: they're very helpful.
to me, at least.
jonathan OK, good. That's two of us. :-)
pmichaud which is why I'm trying to do the same (with lesser success)
jonathan Do you write code then comments? 23:47
Or write comments and then code?
pmichaud code then comments
jonathan Ah.
pmichaud I think in code.
jonathan That's probably where we differ. :-)
pmichaud to me, code is a more natural medium of expression than prose.
jonathan I can appreciate that.
pmichaud L-R: moving synopsis discussion over to #perl6 23:48
jonathan I'm also the kind to write the opening and closing braces of a block and then to fill in the middle. :-)
Each to their own.
jonathan certainly wouldn't claim to be normal.
pmichaud clearly each of our styles works for us individually, and is workable as a team :-) 23:49
jonathan Aye. Which is fine. :-)
How much % of the spectests does the refactor branch currently regress? 23:50
Like, is it mostly there, or a long way off?
pmichaud it's a way off, but that's because I'm still working on simple things like list assignment. 23:53
jonathan Ah, OK.
pmichaud Like, I found a brain-o an hour or so ago and had to re-regress a bit.
a lot more passes than I would've expected at this point.
mostly I'm catching little things here and there.
jonathan I guess you're reviwing/fixing a lot of stuff I've shoved in over the last year too. :-) 23:54
It's a _big_ refactor.
I expect it'll stand us in a good place for the next bunch of stuff. 23:55