Parrot 0.8.2 "Feliz Loro" Released www.parrot.org/news/2008/Parrot-0.8.2
Set by moderator on 23 December 2008.
00:00 kid51 joined
Infinoid oh yeah. out of 1300 functions tagged, that's surprisingly good. 00:01
chromatic It's also shown some value to the process. 00:02
dalek r34774 | chromatic++ | branches/pdd09gc_part2 (17 files): 00:06
: [GC] Moved src/gc/dod.c to src/gc/api.c and include/parrot/dod.h to
: include/parrot/gc_api.h. 00:07
review: www.parrotvm.org/svn/parrot/revision?rev=34774
chromatic Gah, what's wrong with Trac?
Is it too much to ask for a ticketing system that doesn't forget my password, allows me to reset my password, and lets me create tickets? An email interface would just be FROSTING at this point. 00:08
kid51 What *isn't* wrong with Trac? ;-/
cognominal one needs to call the interpreter or compile it in a certain way to trigger these assertions?
kid51 Did you just lose your TICKET_CREATE privileges?
chromatic cognominal, a standard debugging build should work.
cognominal ok, thx
Infinoid cognominal: just running the code (built without optimization)
chromatic kid51, I can't even log in, even though I saved the password in my web browser.
Infinoid I've had fairly good luck with it so far. it's beginning to sound like I'm the only one. 00:09
00:09 AndyA joined
Infinoid I have been annoyed by the reformatting of the text field when I post a comment, but that's my only annoyance. 00:09
kid51 chromatic: See rt.perl.org/rt3/Ticket/Display.html?id=61870. You'll have to have someone with admin privileges blow away your account and start from scratch.
chromatic I'm okay with the idea we needed to move off of perl.org so as not to offend other language communities who might some day in the future want to target Parrot, but it would have been nice to migrate to a system which actually worked. 00:10
kid51 This happened to GeJ and me within past few days.
chromatic: My sentiments exactly. I was really cursing the other night.
chromatic I would have assumed that you don't want to cut off your contributors at the knees if you have a deadline coming up.
kid51 Once you re-register, I advise don't set anything in the Preferences page.
Coke ping 00:11
chromatic I can't file bugs.
I don't get notified of bugs.
I can't close bugs.
I can't comment on bugs.
I can't edit the wiki.
kid51 Yup. Like I say, you have to get your account nuked and start over.
chromatic Which of those activities would be valuable for me to be doing right now?
allison chromatic: I haven been able to figure out what's causing the problem 00:12
chromatic Can you remove my account so I can start over? 00:13
allison chromatic: did you mind if I do a quick bit of interactive debugging?
I just want to try one thing with permissions and see if that fixes it
chromatic Go ahead.
cognominal I think I filed a bug without problem with TRAC 00:14
kid51 Infinoid: Is any of the work you're doing with t/codingstd/c_arg_assert.t stuff that you could use help on? 00:15
allison chromatic: okay, go ahead and try it
Infinoid kid51: you're welcome to tag some of the untagged functions, I've been trying to keep a pace of 200 or so per day
allison chromatic: I deleted and readded the permissions for the entire 'developer' group, and readded you to it
Infinoid I'm done for the day though. aiming to get it all done by sunday 00:16
allison (on the off chance that the problem is that in the migration, some permissions weren't re-written out to a file)
kid51 Infinoid: Well, I really don't understand any of the issues, since they're beyond my C-foo. Is there anything that is more copy-and-paste?
Infinoid well, it's a matter of sticking ASSERT_ARGS(name_of_function); at the beginning of each function, just after the top level local variables (if any) were declared 00:17
chromatic allison, no luck.
kid51 Which particular functions?
chromatic I still can't log in or reset my password.
kid51 An example I could follow? 00:18
allison chromatic: okay, deleting your account
kid51 I could create a branch so that I wouldn't harm anything.
Infinoid kid51: the untagged functions are warned about by t/codingstd/c_arg_assert.t. I've just been taking the last one in the list, acking to find the file, and then just tagging everything in that file
allison chromatic: done, you can re-register
Infinoid the changes look like www.parrotvm.org/svn/parrot/revision?rev=34773
kid51 And the test that you have done something right, and done no harm is ...? 00:19
Infinoid "make test"
purl "make test" is possessed!
Infinoid if you get an assertion failure, then you change the corresponding ARGWHATEVER argument to ARGWHATEVER_NULLOK (like www.parrotvm.org/svn/parrot/revision?rev=34772 )
"make headerizer" updates the autogenerated bits after you make that change to the actual function.
kid51 At what point can you call 'make headerizer'? do you have to 'make clean' or 'realclean' first? 00:20
chromatic Alright, I've reregistered now.
Notice: <acct_mgr.web_ui.MessageWrapper object at 0x80e979ec>
Infinoid no, you don't. in fact, it won't work after a clean; it likes all the header files and stuff to be generated before it will run
it's a pretty mechanistic process, overall. 00:21
kid51 mechanistic -- that's what I'm looking for.
chromatic We should probably review all uses of NULLOK though to make sure of our assumptions.
Infinoid the only real annoyance is the amount of code logic that goes into the top lines where the local variables are declared; sometimes it's all up there, so tagging the function is mostly pointless.
chromatic: I'm happy to provide a list. I'm sure of the correctness of some more than others.
dalek r34775 | chromatic++ | branches/pdd09gc_part2 (9 files): 00:22
: [GC] Renamed Parrot_dod_* functions to Parrot_gc_* functions.
review: www.parrotvm.org/svn/parrot/revision?rev=34775
Infinoid tries to stab TT #116
allison chromatic: did it create the account before giving you the error message, or simply refuse to create the account? 00:23
kid51 Infinoid: Would you like me to work from the end of that list as you were doing? 00:24
... or perhaps from the beginning? 00:25
Infinoid either way, please feel free. I'm working on other stuff right now so we won't conflict
kid51 k 00:26
Infinoid after this is done, Andy had the nice idea of doing the same thing to pmcs and ops... but I think we can hide all of that behind the scenes, so we won't have to touch every function. 00:27
kid51 trac.parrot.org taking loooong time to load
allison kid51: not for me, try reloading the page? 00:30
kid51 This is what I'm trying: trac.parrot.org/parrot/ticket/117
... the ticket rurban just opened.
Infinoid loaded fine for me, less than a second 00:31
5 refreshes, no issue 00:32
dalek r34776 | jkeenan++ | branches: 00:34
: Creating assert_args in svn.perl.org/parrot//branches
review: www.parrotvm.org/svn/parrot/revision?rev=34776
r34777 | jkeenan++ | tags:
: Tagging trunk at r34775 so that the assert_args can later be synched to it.
review: www.parrotvm.org/svn/parrot/revision?rev=34777
kid51 Hrmm. Even with a page refresh, it just kept "Loading". But when I closed the tab and started from scratch, it came right up. 00:35
Infinoid: Is this work governed by TT 105? 00:37
Infinoid yes 00:38
00:42 gravity joined
chromatic_flautas allison, it created the account, but I get that message in the header where I expect to be able to modify wiki pages. 00:43
kid51 Infinoid: If after revising one .c file and running 'make headerizer', I get this output ... am I doing it correctly? 00:49
Headerization complete.
src/exec_dep.c
Parrot_exec_cpcf_op: "Parrot_jit_info_t *jit_info" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE
Parrot_exec_normal_op: "Parrot_jit_info_t *jit_info" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE
Parrot_exec_restart_op: "Parrot_jit_info_t *jit_info" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE
offset_fixup: "Parrot_exec_objfile_t *obj" isn't protected with an ARGIN, ARGOUT or ARGMOD (or a _NULLOK variant), or ARGFREE
5 warnings in 4 funcs in 1 C files
Infinoid ok, those require some additional treatment. (I also don't see that on my platform, probably because jit is disabled.) 00:51
unless you were actually editing that file or its source (src/jit/i386/exec_dep.c?) you can probably ignore it
kid51 Well, exec_dep.c was not the file I was working on.
I was working on the file that contained set_union
Infinoid fair enough. I'd say ignore it 00:52
kid51 compilers/imcc/sets.c
Now running 'make coretest' in branch
Infinoid: Heh! Everything in 'make coretest' passes -- except t/pmc/freeze.t! First time I've ever had that failed outside of our experiments earlier today! 01:05
Infinoid it's been on and off for me over the last few days. sounds good so far 01:07
that's the issue I'm trying to figure out right now, actually
kid51 So if I've "fixed" one file, should the number of "unused assert macros found in total" increase or decrease? ('cause I got an increase.) 01:08
Infinoid uh. it was supposed to decrease, but maybe headerizer generated more stuff on your platform
kid51 k
I'll proceed, and when I stop for the night I'll post an svn diff somewhere. 01:09
Infinoid kid51++
dalek r34778 | jkeenan++ | branches/assert_args (4 files): 01:11
: Adding ASSERT_ARGS() to all functions in compilers/imcc/sets.c; running 'make headerizer'; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34778
Coke shells into his home mac frpm his phone fpr no good reason
~ 01:12
Infinoid that's what phones are for.
01:13 Andy joined
Coke -12 c on the hiway! 01:14
->> 01:15
01:28 Limbic_Region joined
dalek r34779 | jkeenan++ | branches/assert_args/src: 01:38
: Adding ASSERT_ARGS() to one functions in src/exec.c; running 'make headerizer'; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34779
Infinoid kid51: good stuff. but you don't have to do a "make headerizer" unless you've changed the prototype of a function (e.g. by adding _NULLOK) 01:39
kid51 k 01:41
01:56 TiMBuS joined 02:06 rhr joined 02:17 Whiteknight joined 02:20 Andy joined
dalek r34780 | jkeenan++ | branches/assert_args/src: 02:40
: Adding ASSERT_ARGS() to one functions in src/embed.c; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34780
02:41 MariachiElf joined
dalek r34781 | jkeenan++ | branches/assert_args/src: 03:08
: Adding ASSERT_ARGS() to all functions in src/inter_run.c; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34781
Infinoid stares at the bowels of the Default PMC and the freeze/thawing of prop-hashes 03:40
dalek r34782 | jkeenan++ | branches/assert_args/src: 03:41
: Adding ASSERT_ARGS() to all functions in src/charset.c; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34782
Andy oh, I'm adding good stuff. 03:42
I hope
dalek r34783 | petdance++ | trunk/lib/Parrot/Pmc2c/PMC: 03:43
: removed commented-out code
review: www.parrotvm.org/svn/parrot/revision?rev=34783
Andy Infinoid: is there any chance you screwed up default.pmc? 03:52
Infinoid I haven't checked in anything related to default.pmc, so it seems unlikely
Andy ok
Infinoid TT #116 is getting more interesting. it doesn't look like a bug in freeze/thaw, it looks like an attack against the hash function itself. certain values for interp->hash_seed result in a non-functional hash after thawing 03:57
kid51 Attack of the Frozen Seeds ??? 03:58
dalek r34784 | petdance++ | trunk/lib/Parrot/Pmc2c: 03:59
: removing unused vars in the header setup
review: www.parrotvm.org/svn/parrot/revision?rev=34784
04:02 elmex_ joined
dalek r34785 | jkeenan++ | branches/assert_args/src: 04:03
: Adding ASSERT_ARGS() to all functions in src/pbc_merge.c; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34785
Andy PMC header file dependencies aren't right in the Makefile. 04:05
kid51 must sleep 04:13
purl $kid51->sleep(8 * 3600);
dalek r34786 | allison++ | trunk/t/tools: 04:21
: [pdd30install] Small cleanups to parrot_debugger tests. Extracted from
: pdd30install branch (Reini Urban).
review: www.parrotvm.org/svn/parrot/revision?rev=34786
r34787 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 05:12
: [rakudo]: Change $?SIGNATURE_BLOCK to $?BLOCK_OPEN.
review: www.parrotvm.org/svn/parrot/revision?rev=34787
r34788 | pmichaud++ | branches/rvar/languages/perl6/src/parser: 06:11
: [rakudo]: Be quite a bit smarter about block generation within signatures.
review: www.parrotvm.org/svn/parrot/revision?rev=34788
r34789 | allison++ | trunk (3 files): 06:14
: [pdd30install] Add configure step and tests for pod2man. Extracted from
: pdd30install branch (Reini Urban). Closes TT #94.
review: www.parrotvm.org/svn/parrot/revision?rev=34789
r34790 | petdance++ | trunk/lib/Parrot/Pmc2c (3 files): 06:15
: shim out unused PMC * arguments
review: www.parrotvm.org/svn/parrot/revision?rev=34790
r34791 | allison++ | trunk: 06:22
: [pdd30install] Adding new pod2man files to the manifest.
review: www.parrotvm.org/svn/parrot/revision?rev=34791
06:38 Theory joined
dalek r34792 | pmichaud++ | branches/rvar/languages/perl6/src (2 files): 07:00
: [rakudo]: Handle "is also" trait.
review: www.parrotvm.org/svn/parrot/revision?rev=34792
r34793 | petdance++ | trunk/src: 07:01
: headerized all the static functions.
review: www.parrotvm.org/svn/parrot/revision?rev=34793
07:02 chromatic_flautas joined 07:06 Zaba joined 07:11 mberends joined 07:15 uniejo joined 07:18 pdcawley joined 07:27 Zaba joined
dalek r34794 | allison++ | trunk/config/gen/makefiles (5 files): 07:42
: [pdd30install] Some makefile changes to use the new conditional line syntax for
: macro files. Extracted from pdd30install branch (Reini Urban).
review: www.parrotvm.org/svn/parrot/revision?rev=34794
07:43 Zaba joined
dalek r34795 | chromatic++ | branches/pdd09gc_part2 (5 files): 07:48
: [GC] Renamed src/gc/gc_gms.c to src/gc/generational_ms.c.
review: www.parrotvm.org/svn/parrot/revision?rev=34795
r34796 | chromatic++ | branches/pdd09gc_part2 (6 files): 07:51
: [GC] Renamed src/gc/gc_ims.c to src/gc/incremental_ms.c.
review: www.parrotvm.org/svn/parrot/revision?rev=34796
08:44 integral joined 09:38 flh joined 09:40 contingencyplan joined 09:46 iblechbot joined 09:53 alvar joined 09:56 nopaste joined 10:04 tomyan joined 10:13 kj joined 10:25 Zaba joined 10:41 barney joined 10:49 masak joined 11:02 pdcawley joined 11:15 gaz joined
dalek r34797 | kjs++ | trunk/compilers/pirc/new (5 files): 11:18
: [pirc] work on keys. A key now consists of 1 main node "key", and key entries by "key_entry". The key node keeps a pointer to the head of the list of entries, and stores the number of entries.
: Refactoring of code to fit these changes.
review: www.parrotvm.org/svn/parrot/revision?rev=34797
masak examples/library/ncurses_life.pir has bit-rotted. am I the only one who thinks that is less than acceptable? 11:21
mberends masak++ 11:22
masak mberends: now you're just overdoing it :) 11:23
mberends ok, ok
masak anyway, I started to fix the PIR, but I got stuck because I don't know enough about the syntax changes. 11:25
is there a way to run ./parrot to syntax-check (but not run) files? if so, I suggest that such runs be added as tests somewhere. 11:26
perhaps I should write to parrot-dev about this.
kj I think the "global" keyword is gone now in IMCC 11:27
masak kj: yes, things like that.
only I can't do it on my own.
kj I'll have a look 11:28
masak kj: thank you.
11:39 desertmax joined
kj masak: I made some changes, it compiles, but doesn't run 11:59
it might have to do with the fact that I'm on windows
masak kj: ok. I'll have a look.
kj shall I send it to parrot-dev? 12:00
masak yes, please.
kj k, thanks
masak kj: thank _you_.
kj I proposed many of these changes, so I guess I should clean it up :-P
masak aye. :) 12:01
kj sent, should be there soon 12:02
masak goodie. 12:03
lunch &
kj: it works over here. I'll apply the patch after lunch, if I manage to get my commit bit back from Bitcard. 12:07
kj I can apply it.. 12:08
masak ah. of course you can. :/ 12:09
dalek r34798 | kjs++ | trunk/examples/library: 12:10
: [examples] clean up library/ncurses_life.pir which used a lot of deprecated and removed PIR syntax. Reported by masak++.
review: www.parrotvm.org/svn/parrot/revision?rev=34798
kj could you reply on the email, so that other people don't spend time on it?
masak kj: oki
done. 12:11
kj great thanks. If you find any other PIR bitrot, I can do them in low-productivity moments
dalek r34799 | bernhard++ | trunk (2 files): 12:17
: [codingstd] set svn props
review: www.parrotvm.org/svn/parrot/revision?rev=34799
12:17 kid51 joined
TiMBuS i have a kinda dumb question. all my language's builtin functions require a global object, so they all call get_global when they are called.. is there any way to perhaps, have a permanently allocated register or something between subroutines to remove this overhead? 12:18
yeah i know its probably not possible but i may as well ask 12:19
kj TiMBuS: I don't think so. Not sure, you could try to create a .const
not sure if that's going to work
but declare the .const as : .const "Hash" globals = "initglobals"
then, write an :immediate sub that instantiates a "Hash", and returns that 12:20
TiMBuS its only one global
kj the :immediate sub should be named the same as the RHS assigned to the .const
Yes I know
but then you can access the thingy called "globals"
TiMBuS oh
kj but it's a constant, not sure if that's going to work
and then try to set and get as you go; the object called "globals" is accessible from all .subs 12:21
try it, and let me know if it works ;-)
otherwise, you may pass a hash to all functions 12:22
it's an extra parameter overhead, but shouldn't be too much of a problem I think
TiMBuS well, i used the get_global under the assumption a param would be more overhead 12:23
kj it would be a wild guess ;-)
hard to say, I think. DOing a get_global each time requires a hash lookup 12:24
now hashtables are fast.. but it's still cycles
TiMBuS its hard to tell on a vm
kj profiling would be the only option to tell what's the difference. Also, all :method calls imply passing an extra parameter "self", and that's generally not considered a problem 12:25
aargh. parrot won't build because of this ASSERT_ARGS thingy 12:26
dalek r34800 | kjs++ | trunk/src: 12:32
: [src] the ASSERT_ARGS macro in debug.c expands to a statement, after which a var. declaration follows. This is not allowed, and won't build on MSVC. This patch moves the declaration to before the assertion, but it can't be 'const' any more, as the declaration is separate from initialization.
review: www.parrotvm.org/svn/parrot/revision?rev=34800
12:35 register joined
masak I sitll think we need those tests, though. 12:48
dalek r34801 | rurban++ | trunk/config/gen/makefiles: 12:50
: fix wrong logic in r34794. fixes also trac TT#118
review: www.parrotvm.org/svn/parrot/revision?rev=34801
12:53 barney joined
kj masak: such tests means a full PIR parser 12:56
12:56 alvar joined
masak kj: yes? 12:56
kj you want to syntax-check all PIR files right? 12:57
12:57 rurban joined
masak aye. 12:57
kj right. well, that's not so easy ..
masak it'd just be a way of catching changes early in examples/*.pir
kj: I see. too bad. 12:58
kj suppose you load an ops lib, then you can add new PIR ops 12:59
Coke (syntax check pir files)
kj so you have to execute stuff as well
it could be done, of course
Coke You can do this with ./parrot -o /dev/null foo.pir
and we should be doing that with pretty much every complete program in examples if we're not already.
(er, not already actually testing it.)
I am c oming in late on this conversation though. 13:00
kj Coke: I think your suggestion is good
if output is redirectied to dev/null, it will only complain if there's syntax errorrs 13:01
13:01 masak` joined
dalek r34802 | kjs++ | trunk/src: 13:04
: [src] Fix disassembling of PBC so that it prints ":slurpy", not "flat" on parameters.
review: www.parrotvm.org/svn/parrot/revision?rev=34802
r34803 | jkeenan++ | branches/assert_args/src: 13:06
: Adding ASSERT_ARGS() to all functions in src/pic.c; storing tested results.
review: www.parrotvm.org/svn/parrot/revision?rev=34803
r34804 | masak++ | trunk/languages/perl6/src/builtins: 13:08
: [rakudo] corrected documentation -- C<eval> is not to be found in
: src/builtins/eval.pir, but src/builtins/control.pir
review: www.parrotvm.org/svn/parrot/revision?rev=34804
13:11 Zaba joined
rurban install_config.c:2602: undefined reference to `_Parrot_set_config_hash_internal' 13:36
13:37 Theory joined
nopaste "masak" at 130.238.45.242 pasted "more bitrot." (132 lines) at nopaste.snit.ch/15156 13:46
dalek r34805 | bernhard++ | trunk/languages/pipp (2 files):
: [Pipp] Add vtable 'get_bool()' to PippObject.
review: www.parrotvm.org/svn/parrot/revision?rev=34805
13:47 tetragon joined 13:52 tetragon_ joined
dalek r34806 | kjs++ | trunk/compilers/pirc/new (5 files): 13:54
: [pirc] works on keys. it's not correct yet.
review: www.parrotvm.org/svn/parrot/revision?rev=34806
14:12 gryphon joined, tetragon joined
dalek r34807 | kjs++ | trunk/compilers/pirc/new (4 files): 14:17
: [pirc] refactoring and add a stub for annotations.
review: www.parrotvm.org/svn/parrot/revision?rev=34807
rurban Just compiling on debian with --optimize='-ggdb3'. ccflags is taken from perl -V::ccflags: so you should not change that. objdump -W *.o | grep macro shows you e.g. the macros within DWARF 14:18
dalek r34808 | pmichaud++ | trunk/languages/perl6/docs: 14:19
: [rakudo]: spectest-progress.csv update: 264 files, 5911 passing, 0 failing
review: www.parrotvm.org/svn/parrot/revision?rev=34808
14:26 PacoLinux_ joined
Coke there. added a new test file. 14:41
only tested on os x, but I tried to make it portable. 14:42
dalek r34809 | coke++ | trunk (2 files):
: Add a (failing) test to help us keep our examples functioning.
: Should be executed during "make examples_tests"
review: www.parrotvm.org/svn/parrot/revision?rev=34809
14:42 flh joined
Coke fails miserably: 14:43
t/examples/catchall (Wstat: 7424 Tests: 162 Failed: 29)
dalek r34810 | pmichaud++ | branches/rvar/compilers/pct/src/PAST: 14:44
: [pct]: PAST::Var attribute nodes don't use :isdecl .
review: www.parrotvm.org/svn/parrot/revision?rev=34810
Infinoid hmm. having an implemented parrot_dump_hash would come in really handy for debugging this 14:46
Coke Infinoid: what's wrong with data dumper? 14:47
dalek r34811 | coke++ | trunk/examples/benchmarks:
: Make this example compile again.
: (Looks like it even works, too.)
review: www.parrotvm.org/svn/parrot/revision?rev=34811
Coke or do you mean parrot-level hashs, not PMC hashs?
*hashes
Infinoid I mean C-level Hashes 14:48
if I can call data dumper from the gdb command line, that'd work
dalek r34812 | coke++ | trunk/examples/benchmarks: 14:51
: make example compile (and work) again.
review: www.parrotvm.org/svn/parrot/revision?rev=34812
r34813 | coke++ | trunk/examples/pir: 14:55
: Make long-dead example compile (and work) again.
review: www.parrotvm.org/svn/parrot/revision?rev=34813
14:56 tetragon joined
Coke thinks we should just remove DWIM.pir 14:58
15:05 uniejo joined
dalek r34814 | coke++ | trunk/examples/benchmarks (4 files): 15:06
: reclaim 4 example files;
: remove some opcode invocations that (1) did nothing, and (2) don't exist anymore.
review: www.parrotvm.org/svn/parrot/revision?rev=34814
15:08 masak joined
Coke masak++ 15:11
masak Coke: hello. now what did I do? :)
15:11 tetragon joined
Coke t/examples/catchall.t 15:11
masak ooh
Coke Been meaning to do that for some time.
masak Coke++ for doing it
Coke does an svn update and wishes he had checked how old that checkout was first. 15:14
15:14 tetragon_ joined
Coke one of those pge examples fails because it can't be run from parrot root. 15:24
dalek r34815 | kjs++ | trunk/compilers/pirc/new (8 files): 15:33
: [pirc] more key stuff.
: + start adding support for encoding-aware strings (e.g. iso-8859-1:"hi")
review: www.parrotvm.org/svn/parrot/revision?rev=34815
15:47 jhorwitz joined 15:51 tetragon joined 15:55 flh joined
dalek r34816 | bernhard++ | trunk/languages/pipp (3 files): 16:13
: [Pipp] Pass arguments to the constructor, in a convoluted way.
review: www.parrotvm.org/svn/parrot/revision?rev=34816
r34817 | bernhard++ | trunk/languages/pipp/src/classes: 16:15
: [codingst] Remove a trailing space.
review: www.parrotvm.org/svn/parrot/revision?rev=34817
r34818 | coke++ | trunk/examples/io: 16:18
: The pir sugar for substr was removed;
: Example still broken due to changes on FileHandle from ParrotIO.
review: www.parrotvm.org/svn/parrot/revision?rev=34818
16:18 tomyan left 16:19 tomyan joined
Coke particle: is it a feature that you can specify -e multiple times? 16:19
I would just as soon have a single -e.
particle coke: it exists in p5 today 16:20
>perl -e "my $x = 0;" -e "print $x" -e "if $x"
>perl -e "my $x = 1;" -e "print $x" -e "if $x"
1
Coke not compelling enough to keep it, for me. =-) 16:21
if you do keep it, any reason to just say "you can't mix -e and -e6" ?
(*not to say.)
cognominal can we have intervening switches that makes the different -e compiled differently? 16:22
particle well, i may make -e6 into an option that affects all -e's
cognominal the particle example is really a counterexample
I mean options in between the -e
particle with p5, -e accepts a line and puts a newline afterwards
it allows you to write multi-line scripts on one command-line 16:23
cognominal you could do it with \\n within the script?
particle -e 'my $x = <<FOO;' -e 'foo' -e 'bar' -e 'FOO' -e 'print $x' 16:24
...i wonder if there's a shell that would allow that...
yep, windows allows it. 16:25
>perl -e "my $x = <<FOO;" -e "foo" -e "bar" -e "FOO" -e "print $x"
foo
bar
purl bar
cognominal interleaving switches sound more scary -e "..." -ne "..." -pe "..." # I don't think it can mean anything
what interleaving switches could be useful? 16:26
particle hrmm, can you do that?
cognominal I don't know
particle i don't think so, because the first -n would process all of STDIN
cognominal yes, but would it complain? 16:27
dalek r34819 | kjs++ | trunk/compilers/pirc/new (8 files): 16:29
: [pirc] revert previous changes. It broke stuff, and I don't know why. Better to re-try, than to fix.
review: www.parrotvm.org/svn/parrot/revision?rev=34819
particle cognominal: perl -ne "print '1';" -pe "print '2'" foo # prints 12<each-line-in-foo> 16:31
so does perl -pe "print '1';" -ne "print '2'" foo
cognominal my question is about Perl6, does some switch(s) help to make things easier by breaking a script in different -e parts? 16:33
-p and -n are just a counterexample
I can't find a meaningful example but I don't know well the rakudo switches 16:34
dalek r34820 | kjs++ | trunk/compilers/pirc/new (6 files):
: [pirc] add encoding-aware tokens to lexer and parser.
review: www.parrotvm.org/svn/parrot/revision?rev=34820
r34821 | kjs++ | trunk/compilers/pirc/new: 16:36
: [pirc] add a string-parsing function, which handles [iso-8859-1:"hi there"]-kindof strings. (other encodings as well, this is an example) 16:37
review: www.parrotvm.org/svn/parrot/revision?rev=34821
rurban os.'rm'("$temp_pbc") in t/pmc/eval test 10 fails after load_bytecode "/tmp/HhY9ocQ3wA.pbc" I guess load_bytecode is still holding a handle (cygwin). in the strace I see that the unlink call fails 16:38
even weirder: cd /tmp; $ ls -al *.pbc 16:40
16:40 Wknight8111 joined
rurban ls: cannot access HhY9ocQ3wA.pbc: No such file or directory 16:40
-rw------- 1 rurban phpwiki 784 Jan 2 16:33 hH0DltAQPj.pbc
Coke did the unlink perhaps fail because the file was already gone? 16:41
rurban No it's there, but the clib cannot access it
Some windows or cygwin specific
dalek r34822 | Whiteknight++ | trunk/docs/book:
: [Book] update chapter 4 with some information about using continuations and some clarifications about lexical subroutines.
review: www.parrotvm.org/svn/parrot/revision?rev=34822
rurban Does this also fail under msvc? 16:42
In ls -al I see "??????????? ? ? ? ? ? HhY9ocQ3wA.pbc". So there's some handle open 16:43
Maybe it's the weird delayed unlink code inside cygwin. if unlink fails it tries again when the process ends 16:45
Coke holy poo.
the sdl examples are so old, they expect the version of the calling conventions that set specific registers for return values. 16:46
the sdl stuff worked on the mac at one point, neh? 16:48
dalek r34823 | coke++ | trunk/examples/pir: 16:50
: remove useless .begin/.end return block.
review: www.parrotvm.org/svn/parrot/revision?rev=34823
r34824 | bernhard++ | trunk/languages/pipp/src/pct: 17:09
: [Pipp] Declare register vars in PAST, not in PIR
review: www.parrotvm.org/svn/parrot/revision?rev=34824
particle cognominal: the best example i can give is that writing a long one-liner is better done as -e 'some long line' \\ 17:14
-e 'some other long line'
if you don't want to put it in a file, that is.
pmichaud particle: (-e6) actually works as -e '6' 17:20
because a program that begins with "6;" is assumed to be perl 6 running in lax mode.
so -ev6 also works in the same way :-) 17:21
particle hrmm.
pmichaud (S11:459)
particle i guess that means -e6 needs to be specified before any other -e 17:22
pmichaud so nothing special needs to be done for -e6, as long as it's the first -e ... right
particle and it's entirely not special
:)
pmichaud++ for digging that up
pmichaud something tickled my brain about that so I looked it up again.
particle -ev6 won't work, though, you need -e=v6 17:23
the single dash will try to bundle -e -v and -6 17:24
pmichaud okay.
particle -e6 will work, because numbers are not valid option names 17:25
Infinoid so I tweaked the headerizer argument asserts to make them look like a local variable initialization. This lets me put them at the very beginning of the functions, so they can protect the local variable initializers too (which are often quite verbose) without getting a C90 warning about mixing declarations with code. 17:32
weird thing is, I get unused variable warnings from that in compilers/imcc/, but nowhere else. Are we using different CFLAGS to build IMCC?
particle yes, likely 17:33
isn't there a file called CFLAGS?
Infinoid yeah, looking at it now 17:34
ah, {^compilers/imcc/(?!imclexer)} s/-Wno-unused/-Wunused/
dalek r34825 | bernhard++ | trunk/languages/pipp/src (2 files): 17:35
: [Pipp] Add a default __construct in ['PippObject']
review: www.parrotvm.org/svn/parrot/revision?rev=34825
Infinoid tries adding __attribute__unused__ 17:37
17:44 Debolaz joined
Coke does perl6 provide anything like tcl's "uplevel" or "upvar" ? 17:47
tewk you know you are a garbage collector hacker when you have to script gdb using expect to find bugs :) 17:51
dalek r34826 | rurban++ | branches/pdd30install_stage3/t/pmc: 17:52
: [TODO] TT#121 t/pmc/eval.t test10 fails on cygwin
review: www.parrotvm.org/svn/parrot/revision?rev=34826
Coke rurban: looks like the file that is opened with fopen on load_bytecode /is/ closed with fclose (at least in one path I've found)
rurban yes, the code looks code. but the error is reproducable. 17:53
I marked the test as TODO with the ticket number just for cygwin.
Coke <nod>
rurban really strange: I made test pir's for this ticket, and they fail not with permission denied, but the 2nd load-bytecode fails silently. 17:55
Looks like an OS issue or maybe the virus scanner...
pmichaud Coke: what does uplevel/upvar do? 17:58
Coke upvar lets you muck with variables up the call chain. 18:00
uplevel lets you execute code in the context of somewhere higher up the call chain.
pmichaud in Perl 6 that would be CALLER
(upvar would be CALLER)
Coke so with uplevel you can add, e.g., new flow control commands.
it's kind of like wandering through your c stack with gdb. 18:01
dalek r34827 | bernhard++ | trunk/languages/pipp/src (2 files):
: [Pipp] Call __construct as method.
review: www.parrotvm.org/svn/parrot/revision?rev=34827
Coke pmichaud: here's a different question:
if you have a namespace foo, how do you differentiate between a procedure in that namespace called "bar", and a child namespace called "bar" ?
pmichaud I'm not sure that occurs in Perl 6. 18:02
Coke if you have a namespace "foo::bar", does that imply a NS 'foo' with a child namespace 'bar' ? 18:03
pmichaud it means "bar" within the namespace foo. I don't think it says that 'bar' has to be a namespace.
particle foo::bar:: is always a namespace 18:04
foo::bar may not be a namespace
pmichaud "Foo::bar" is either a namespace or a sub. I don't think it can be both.
Coke right. in tcl, you can have both, there's no conflict. 18:05
so, I'm going to undo my change to remove & so that part keeps working. ah well.
hurm. svn mojo to revert revision FOO but keep all revisions post-FOO? 18:07
pmichaud get a reverse diff
Coke (I think I'l create a patch and just apply it in reverse)
ok.
pmichaud svn diff -r FOO:FOO-1 >file.patch 18:08
apply file.patch
18:14 chromatic joined
Coke back to uplevel/upvar; pretty sure those are the only reason I need to be managing my own call_chain at this point. 18:15
so if you had a way to avoid them (and still had to do what tcl does), then I could ditch that global and use more pure parrot. 18:16
pmichaud perhaps use lexicals?
then you could look up the caller chain in Parrot and get to the lexicals. 18:17
yes, this would imply modifying the way Tcl does its lexicals currently. 18:19
Coke how would I introduce a new step int eh chain?
pmichaud s/Tcl/partcl/
Coke (e.g. I only want subs that correspond to HLL procs to get another level)
(not utility parrot subs) 18:20
pmichaud oh, that would be an issue. hrm.
do you need to "count up" a specific number of levels?
Coke yup.
for the aforementioned uplevel/upvars.
pmichaud I can outline an approach that might work 18:21
(more)
but I need to refill my Dr. Pepper glass before I can do that.
Coke tease!
;)
pmichaud this isn't necessarily pretty. 18:22
in any level corresponding to a scope, create a (Parrot) lex entry
e.g., .lex 'lexpad', $P0
dalek r34828 | bernhard++ | trunk (2 files): 18:23
: [Pipp] Don't bother with ChangeLog, until there are releases
review: www.parrotvm.org/svn/parrot/revision?rev=34828
pmichaud where $P0 ends up being the dynamic lexpad that Tcl wants/needs
so, partcl lexicals are still in hashes, but keep track of the hashes is handled by Parrot lexicals
Coke I'm not sure that buys me much? 18:24
pmichaud then, search up the caller chain until you find a caller that has a 'lexpad' entry.
and you have access to its lexicals via that entry.
you can keep count of the number of callers you find that have 'lexpad' entries 18:25
which may be smaller than the number of callers.
you're correct that this might not be an improvement over a normal push/pop stack.
but it does mean that parrot can manage your caller chain for you.
(so you don't have to remember to do the push/pop)
Coke that's concentrated in one place atm. 18:26
pmichaud this sounds very similar to what Perl 6 (and PCT) will be doing soon with contextual variables
the other way that Rakudo will be handling OUTER/CALLER is by binding a lexical 'OUTER' and 'CALLER' to the appropriate lexpads when entering a routine 18:27
so, CALLER refers to my caller's lexical scope, CALLER::CALLER refers to its caller's lexical scope, etc. 18:28
18:44 tomyan left
Wknight8111 pmichaud, is there any documentation around that explains lexpads and their use in more detail? 18:44
It's a subject that needs to be added to the book, and I dont know anything about it
18:44 register joined
dalek r34829 | kjs++ | trunk/compilers/pirc/new: 19:04
: [pirc] refactoring of bcgen code.
review: www.parrotvm.org/svn/parrot/revision?rev=34829
r34830 | bernhard++ | trunk/languages/pipp (3 files): 19:08
: [Pipp] Add namespace declarations for php_reflection.pir.
: Add dummy implemention of ReflectionClass::__contruct() and ReflectionClass::getName().
review: www.parrotvm.org/svn/parrot/revision?rev=34830
kj anybody around who knows bits of the function imcc:pbc:pcc_reg_mov() ? (I guess if you know that name the answer is 'yes' ;-) 19:12
Coke hey, -t4 is borked again. 19:18
Coke grumbles.
dalek r34831 | bernhard++ | trunk/languages/pipp/src/common: 19:30
: [Pipp] namespace directive in included file messed things up
review: www.parrotvm.org/svn/parrot/revision?rev=34831
19:36 gmansi joined
dalek r34832 | kjs++ | trunk/compilers/pirc/new (2 files): 19:37
: [pirc] work on sub's namespace PMC representation. + function docs.
review: www.parrotvm.org/svn/parrot/revision?rev=34832
r34833 | bernhard++ | trunk/languages/pipp/src/common: 19:38
: [Pipp] add a space after '.namespace', for readability
review: www.parrotvm.org/svn/parrot/revision?rev=34833
chromatic Hm, each Sub PMC could know how it wants to process its arguments.... 19:43
particle ?
you mean a CallSignature?
chromatic In theory, a Sub could know if it has only positional or named or slurpy arguments. 19:44
When it processes its arguments, it could do different things based on what it needs. 19:46
dalek r34834 | kjs++ | trunk/compilers/pirc/new:
: [pirc] function doc and cleanup.
review: www.parrotvm.org/svn/parrot/revision?rev=34834
chromatic For example, not looking for slurpies if it doesn't expect them.
19:50 Theory joined
Coke on a vaguely related note, it would be nice if subs could emit their own exceptions for invalid args. 19:51
(tcl has to basically ignore calling conventions, accept everything, and then rethrow an exception from inside the sub.)
kj can't that be done through .HLL_map?
that would imply that 1) .HLL_map should be able to replace subclasses, and 2) that Sub should throw a particular subclass of exception for that 19:53
Coke kj: what, chromatics? I don't think so. even hll sub invocations go through Parrot__PCCINVOKE
19:53 rurban_ joined
Coke No, that's not what I want. 19:53
kj I mean, if Sub throws a particular type/class of exception, you could override that exception with .HLL_map
that's not it?
pmichaud I'm thinking it's very likely that Rakudo will end up implementing its own versions of get_params 19:54
Coke no. let's say I define a tcl proc that takes 3 args. You call it with 4.
before my sub is invoked, the calling conventions rat me out. 19:55
kj i see
you want to throw it later than that
pmichaud we also have the opposite problem
Coke no. I HAVE to to get the error I want.
pmichaud if I have a Sub PMC that takes zero arguments, the calling conventions never catch that.
Coke pmichaud: there's a ticket to re-enable that.
pmichaud Coke: yes, but doing so brings its own set of problems. 19:56
Coke the 0 arg thing was disabled at one point; I had it mostly done, but couldn't get :main working, IIRC.
kj isnt that a bug?
:main is special i think eh?
chromatic :main is very special.
pmichaud kj: whether it's a bug or not really depends a lot on who we think drives the argument capture
if I choose to do my own argument capturing (bypassing get_params because it doesn't do what I need), does that necessarily imply that PCC should revoke any call to that sub that passes arguments? 19:57
19:57 Andy joined, cognominal joined
pmichaud unless/until Parrot provides all the forms of argument capture that the hlls want or need, it'd be wrong to say "well, your sub doesn't have any .param statements so it should take zero arguments" 19:58
and I don't buy that always doing :slurpy is the right way around that. 19:59
Coke (tcl does :slurpy everywhere to get around that.)
pmichaud right, and Rakudo is looking as though it's likely to have to do the same.
although I'm thinking we can bypass the slurpies if we do our own argument capturing dynops 20:00
Coke that might be nicer.
kj I had understood the calling conventions would be updated so it could handle everything that Perl 6 needs
pmichaud kj: ...in what timeframe?
Coke I have a lot of PIR code devoted to that. :|
kj dunno, I guess not before 1.0 20:01
pmichaud at this point I'd just be happy to see the calling conventions cleaned up into something that everyone could begin building from. 20:02
chromatic_away I haven't seen a good set of use cases for various languages. That's probably why all of our calling conventions attempts have been stabs in the dark. 20:03
20:03 alvar joined
kj I agree. I just remembered some IRC discussion some months ago about this. 20:03
Wknight8111 we have a tasklist for the calling conventions work, you can add any wishlist items to the list as well: trac.parrot.org/parrot/wiki/Callin...nsTasklist 20:04
shorten Wknight8111's url is at xrl.us/bebbut
Wknight8111 Always better to have these things listed and written down instead of trying to recall old IRC conversations or hunting through logs
dalek r34835 | pmichaud++ | branches/rvar/languages/perl6 (3 files): 20:14
: [rakudo]: First cut at attributes in classes.
review: www.parrotvm.org/svn/parrot/revision?rev=34835
nopaste "flh" at 88.160.47.207 pasted "Introspection does not work" (21 lines) at nopaste.snit.ch/15157 20:37
flh I do not understand why this piece of code does not work: the inspect opcode works fine if I call it directly in main, but not if I pass the Sub as an argument 20:38
am I missing something?
Coke what do you expect it to print? 20:39
flh 2 20:40
Coke and what does it print for you?
(it print 2 for me.)
flh mmh well ok :)
maybe it's getting a bit too late for me 20:41
Coke np. happens to me all the time.
Coke runs callgrind on a simple tcl program and gets a ton of hashing. 20:42
flh actually, in an expanded version it does print "Unknown introspection value 'pos_required'"
Coke can you nopaste that version? 20:43
flh sure, I'm trying to make a simplified version fail 20:46
ok, my mistake, I had replaced a Sub with $I0 somewhere 20:49
Coke if I am callgrinding parrot, are the ASSERT_ARGS going to affect me in a normal build? 20:53
chromatic_away Yes.
Coke can I get callgrind -and- not have them affect me? 20:57
(callgrind is showing me we spend 15.3% of our time in hash.c)
chromatic_away build optimized 20:59
Coke (rebuilding)
interesting. optimized build hash.c is only 1.1%. 21:02
Infinoid if you want unoptimized stats without ASSERT_ARGS, you could redefine ASSERT_ARGS to something benign, or add -DNDEBUG to your CFLAGS 21:07
Coke parrot_hash_get_bucket is still the worst offender.
dalek r34836 | allison++ | trunk/config/gen/makefiles (3 files): 21:08
: [pdd30install] More makefile changes to use the new conditional line syntax for
: macro files. Extracted from pdd30install branch (Reini Urban), with
: modifications.
review: www.parrotvm.org/svn/parrot/revision?rev=34836
Coke glares at parrot. 21:14
chromatic What calls parrot_hash_get_bucket the most? 21:31
Coke how can I tell? 21:37
21:37 Theory joined
Coke reads the docs on callgrind_annotate. 21:38
10,634,092 < /home/coke/sandbox/parrot/./src/pmc/hash.pmc:Parrot_Hash_exists_keyed_str (113917x) 21:39
15,588,880 * ???:parrot_hash_get_bucket [/home/coke/sandbox/parrot/blib/lib/libparrot.so.0.8.2]
if I read that right, Parrot_Hash_exists_keyed_str
(those are the last 2 lines of the first "paragraph" when running callgrind_annotate with --tree=caller 21:40
jonathan Hi all 21:44
Just a note - I'm back to normal work from Monday next week. :-)
(Parrot/Rakudo included.) 21:45
21:45 eric256 joined
chromatic Coke, you really need kcachegrind for visualization of the call graph. 21:46
eric256 hey...is there anyway to get the current file in rakudo? i was playing with adding $*FILE to src/builtins/globals.pir but i was stumped as to how to get the file name out of PCT::HLLCompiler ...seems to be several different layers the name would have to be passed through, or added to the args.. 21:47
Coke my previous attempts to install that have met with abject failure.
chromatic Coke, if you bzip the callgrind.out.xxxx file, I'll look at it on my box.
eric256, I think it needs bytecode annotations. jonathan knows better. 21:48
eric256 chromatic: that just sounds scary ;)
Coke chromatic: feather.perl6.nl:~coke/callgrind.out.4549.bz2
chromatic: that location ok? 21:49
chromatic Coke, I don't have a feather account; is there a web address?
jonathan eric256: As chromatic said, and I'm working on 'em. (Or will be again soon.) 21:51
21:52 Khisanth joined
Coke chromatic: I apparently can't scp to coleda.com webhost atm. ah well. 21:53
chromatic Coke, looks like you need to move that file to your public_html on feather.
feather.perl6.nl/~/
eric256 and here i was thinking $*FILE should be something easy to add
Coke done.
whee.
Coke wonders if kcachegrind will work on cygwin. 21:54
chromatic Doubt it.
It might run on Windows; lots of KDE 4 apps do.
jonathan eric256: It will be, after bytecode annotations are done. ;-) 21:55
pmichaud jonathan++
Coke I see WinCacheGrind, last updated in '05.
chromatic Hm, lots of your time goes to Parrot_oo_register_type, which throws an exception (probably because the type already exists).
pmichaud I should have the rvar branch merged back into trunk by Monday
jonathan pmichaud: How goes the branch?
pmichaud but it's going _very_ well. 21:56
I really like the new code.
jonathan Awesome.
Monday I can get back onto the type registry then. :-)
And get that merged in
pmichaud the type registry will be much simpler now also.
jonathan As usual, I've got a grant that I'm behind on. ;-)
chromatic Coke, delete line 561 of src/oo.c and see what happens.
jonathan Hope to be caught up nicely this month, however
pmichaud same here.
Coke chromatic: if (!PMC_IS_NULL(classobj)) { 21:57
eric256 jonathan++ # line numbers and file names ;) right?
Coke ?
jonathan Your refactors will be nice to have before I did into dispatch changes too.
eric256: Yes.
s/did/dig/
pmichaud wednesday I got sidetracked realizing I needed to quickly spend some EOY funds. Yesterday was a lot of things going on around here, including a UPS that kept cutting out on me.
chromatic Coke, hm, no. The fail_if_type_exists(...) line.
jonathan Ah, un-fun.
pmichaud (would've been nice to get the UPS replacement using EOY funds... but, oh well.) 21:58
jonathan I'm guessing, tax year there matches up with calender year?
pmichaud yes, for me at least.
jonathan I'm in transition between tax systems at the moment, having decided I'm staying in Slovakia for the medium-term, I expect. 21:59
But in UK it ends in April.
pmichaud anyway, I'm back to working on the branch again.
jonathan OK, awesome.
Coke chromatic: 22:00
10,634,063 < /home/coke/sandbox/parrot/./src/pmc/hash.pmc:Parrot_Hash_exists_keyed_str (113917x)
15,628,302 * ???:parrot_hash_get_bucket [/home/coke/sandbox/parrot/blib/lib/libparrot.so.0.8.2]
... virtual no impact?
*virtually
gotta run. I'll see if I can get some machine running kcachegrind. 22:01
22:01 Whiteknight joined
Coke -> 22:01
jonathan Family that have been staying with me head home tomorrow morning, I'll take the train up to Brno and have a day alone to relax and get back in the mood for work stuff, then by Monday I'll be in the right frame of mind, and free of distractions. :-)
chromatic Coke, not on that function but on overall runtime.
pmichaud jonathan: that works well for me. Kids start back to school on Tuesday, so I might be a little distracted on Monday itself, but after that things are very good.
jonathan Great.
Coke chromatic: I wasn't testing runtime. =-) 22:02
hang on.
purl hang on. is this actually "session is still there but user has been deleted" ?
jonathan I'll likely hack on bytecode annotations as a priority thing.
pmichaud that would be good.
jonathan As they need to be landed by the next Parrot release.
pmichaud my next priority after rvar (and closing tickets) is the PGE refactors to support the bytecode annotations :-)
jonathan If you have Cursor changes in time it'd be nice if we used them in Rakudo by the next release. :-)
pmichaud so, yes. 22:03
jonathan Great. That will be a nice thing for Rakudo users.
justin Is it already known that: 'my $i = 0; $i++++; say($i)' produces '1' instead of '2' (prefixed '++' work correctly)?
dalek r34837 | rurban++ | branches/pdd30install_stage3/runtime/parrot/include:
: fixes Trac TT#123, remove more hard-coded runtime/ paths from libs
review: www.parrotvm.org/svn/parrot/revision?rev=34837
pmichaud justin: I suspect that 1 might be right.
or that it's an error.
justin oh? ok.. 22:04
jonathan If it parses as ($i++)++ then yes, 1 is right.
I'm a tad surprised it's not a syntax error, however.
pmichaud I suspect that postfix:<++> returns an rvalue.
Coke chromatic: with the value for that declaration commented out, runtime for a simple program is 80% of original.
(define a function and invoke it.)
justin ah, okay.. but in that case it should produce an error, right? 22:05
Coke (lemme try something with a while loop in it.)
chromatic Okay. Just brainstorming.
pmichaud justin: yes, I think it should probably produce an error.
chromatic HLLCompiler should really not try to redefine classes over and over again.
pmichaud chromatic: I can fix it to test for an existing class first.
I kinda thought the point of exceptions was to avoid such tests, though.
chromatic pmichaud, you might be surprised at the performance improvement.
pmichaud and did you mean HLLCompiler, or PGE ? 22:06
I don't recall that HLLCompiler itself creates classes (but could be wrong there)
chromatic I've noticed it in HLLCompiler.
in the compile method.
Coke I'm not using HLLCompiler. 22:07
(fyi)
chromatic Maybe PGE then....
Coke ah. right.
pmichaud and I don't see anything in the compile method, or things that it calls.
I know that PGE and Perl6::Grammar use exception handling for duplicate classes.
chromatic Re-registering 'Perl6Grammar' 22:08
pmichaud but yes, we can do the explicit null check instead.
chromatic Yes, that's the one.
Coke chromatic: for something a little more serious, run time is cut from 56.99 to 35.237
chromatic 40% improvement.
Coke wow. only 17 more of those to go, and I'll be as fast as tclsh. =-) 22:10
if that's all from PGE trying to register Perl6Grammar, am I not using PGE properly? 22:11
pmichaud Coke: it's possible.
justin pmichaud: no error on latest trunk build (or earlier version), but why does $i++ produce an rvalue and ++$i an lvalue? 22:12
pmichaud $i++ increments $i and returns the value of $i prior to the increment. Obviously that's not $i itself.
Coke chromatic: so did you find this by looking at the CG output I sent you? 22:13
justin oh it's implemented like that
chromatic Coke, I saw that this is a bottleneck in the CG output.
justin that's one way, I always implemented it as a delayed increment.. but this probably makes more sense with closures 22:14
chromatic The 'Perl6Grammar' line I pasted I coaxed out of Rakudo, which behaves similarly.
Coke k. really have to go now. Let me know if I can do anything to get this 40% improvement checked in. =-) 22:15
22:15 eric256 left
Coke -> 22:15
pmichaud I think I need to understand the context a bit better here.
by "redefine classes over and over again", how many times are we talking about? 22:16
< 10? dozens? hundreds?
chromatic Every time you invoke PGE::Exp's compile() method. 22:17
pmichaud so that would be once per regex compilation.
okay, I'll check that.
chromatic Looks like nine times for each sanity test. 22:18
22:31 TiMBuS joined
dalek r34838 | pmichaud++ | trunk/runtime/parrot/library: 22:59
: [p6object]: Add 'get_proto' method to obtain a protoobject (if it exists).
review: www.parrotvm.org/svn/parrot/revision?rev=34838
r34839 | pmichaud++ | trunk (2 files): 23:00
: [pge]: Use P6object 'get_proto' method to skip creating a class if it
: already exists.
review: www.parrotvm.org/svn/parrot/revision?rev=34839
23:08 allison joined
Coke that change had no appreciable impact. 23:17
pmichaud I didn't think it would. But it should get rid of the "redefine classes over and over again". 23:18
chromatic_away 2% 23:23
purl 0.02
Infinoid allison: "make realclean" doesn't fix TT #116 for me. I'm adding more info to the ticket 23:24
23:36 gmansi joined 23:43 TiMBuS joined 23:47 alvar joined 23:48 Aisling joined, diakopter joined, cotto joined, Ademan joined 23:51 confound joined
Whiteknight I'm having the hardest time finding a complete BCPL grammar online 23:52
I found a decent-looking B grammar, and already have it written up in mostly-perl6grammar 23:53
and GW-BASIC is a hard grammar to find too 23:55
I did find a nice one for VS COBOL II 23:57