Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 25 April 2012.
dalek Heuristic branch merge: pushed 1000 commits to parrot/whiteknight/eh_subclass by Whiteknight 00:00
benabik ...
That's awfully exact. 00:01
I wonder if there was just a cutoff.
cotto nbrown: check the todo sections of gist.github.com/2581153 and let me know what you think. You, jimmy and others are welcome to jump in and add more items to the list or work in implementing existing ones.
dalek Heuristic branch merge: pushed 516 commits to parrot/separator_fixes by Whiteknight 00:05
rrot: 2e0c20b | Whiteknight++ | src/pmc/continuation.pmc:
fix attrs in continuation to be inheritable
00:28
rrot: d266143 | Whiteknight++ | src/pmc/ (2 files):
add get_attr_str VTABLEs to ExceptionHandler and Continuation. These are necessary if we want to be able to GET_ATTR_* on a subclass
rrot: 65df2ad | Whiteknight++ | eh.pir:
Add a quick temporary testish file that I'm using to test this new feature. Will be folded into t/pmc/exceptionhandler.t when it works
rrot: 03ad4b6 | Whiteknight++ | / (956 files):
Merge branch 'master' into whiteknight/eh_subclass
rrot: 8431553 | Whiteknight++ | / (663 files):
Merge branch 'master' into whiteknight/eh_subclass
rrot: ed6c53c | Whiteknight++ | eh.pir:
Remove a test file that was accidentally committed long ago
whiteknight cotto: ping 00:29
cotto ~~ 00:30
hio whiteknight 00:31
and pong
whiteknight msg cotto I'd like to merge in the manual_args branch. Can you take a look at it and see if you like the direction?
aloha OK. I'll deliver the message.
cotto ?
I'm here
what does it do?
whiteknight it adds in a :manual_args flag for .sub, which prevents it from automagically declaring "self" 00:32
cotto ok. What's the use case?
doesn't sound very scary 00:33
whiteknight I'm thinking about it as a transitional step so we can slowly get away from automagic self behavior
so we can start playing with the idea now 00:34
cotto gradually switch everything to manual_args and then nuke automatic self?
I need to read up on why automatic self is a bad idea. Any recommendations? 00:35
whiteknight oh, I'd have to look up some old blog posts
cotto of yours? 00:37
I can probably find them
(and have probably read them, for that matter)
whiteknight yeah, I've complained about it mostly on my blog, and we've discussed it here though I doubt I could find the logs 00:38
cotto wfm 00:39
that answers the question I was going to ask you
whiteknight the ultimate goal is really to get away from get_params op and similar, and make PCC more straight-forward and less magical 00:40
the fact that we have opcodes that are so complicated that people can't use them manually is obnoxious 00:41
and the fact that we have a variable that appears magically without being declared according to a set of very convoluted rules is obnoxious
and we can't rename that variable, and there was a ticket somewhere to give us an :invocant flag to let us rename it... 00:42
and vtables shoudl have self, but vtable_invoke suddenly has problems, and then Rakudo can't use this crap anyway because get_params doesn't do what they need so they write up their own binder because they can't use our 00:43
ous
ours
The ultimate end goal is a good one, I just want a second opinion about whether this intermediate step is sane and worthwile 00:44
00:44 JimmyZ joined
JimmyZ cotto: Is there a way to know what is the type of constants? 00:46
cotto JimmyZ, no more than any other register 00:47
JimmyZ, I'm actually toying with the idea of doing away with explicit register types altogether. 00:51
JimmyZ wfm 00:52
cotto that'd also make it easy to allocate a partial call frame, since code can just use registers sequentially 00:53
nbrown cotto: just saw your updated note. I like the idea of doing away with register types
since typing is just a sugestion, why do it?
cotto my thinking too
nbrown the list looks good 00:57
I want to add spec'ing hex constants too 00:58
I keep thinking it should be a string variant with a different encoding #. What do you think?
cotto nbrown, not quite. My idea is that it's a bunch of literal bytes. You could use it to encode a string ,but other things too. 01:01
*the hex codes for bytes
nbrown ok, but when the assembler stores it in the m0b file, what will the format be? 01:02
I think it needs to be size in byte followed by data 01:03
but that conflicts with the current string spec
*string constant spec
cotto I see where you're going.
nbrown so a different encoding number would be a simple way to differentiate
cotto I think so, at least 01:04
nbrown ok
cotto In m0b, there'd need to be a length so the thing can get deserialized correctly. In memory, it wouldn't be necessary. 01:05
nbrown why wouldn't it be necessary in memory?
cotto same reason an explicit length isn't necessary for a C struct
nbrown ok, but what if I wanted to use it to store a 256 bit hex number, like I did when I was considering implementing SHA in m0 01:06
I see your point for serialized objects, but I wanted to use it for raw data too 01:07
cotto the code that works with the 256-bit number knows that it shouldn't go past the last byte 01:08
nbrown oh right. Good point 01:09
sometimes I forget to keep m0 simple 01:10
I added a note to your gist about hex data 01:23
cotto btw, any word from your employer about the cla? 01:24
time to add a remote to a gist clone 01:25
wheee
rurban heap-buffer-overflow with /perl6 -e'my @a=splice([], 1);' reading 2 byte left a 64byte buffer in item + offset + elems1 src/pmc/resizablepmcarray.pmc:673 01:26
but my PMC is only 32byte, hmm
nbrown I didn't have time to get in touch with the right person this week. It's on my list for monday
cotto nbrown, np
gist updated 01:28
and thanks
git++
nbrown I agree, and with that I'm out for the night. But I'll definitely pick up some of those tasks this weekend 01:30
night parrot
cotto 'night, nbrown
nbrown++
whiteknight rurban: you're doing great work with this analysis 01:34
benabik ~~
rurban github.com/parrot/parrot/issues/766 01:38
we also need a testcase for @a=splice([], 1)
whiteknight: you can have this ticket. I don't know PMC internals 01:39
aloha (parrot/parrot) Issues opened : 766 (resizablepmcarray splice heap-buffer-overflow) by rurban : github.com/parrot/parrot/issues/766
dalek sella: 3fd6c9f | Whiteknight++ | src/unstable/net/ (4 files):
[Net] Add a second SocketFactory for IPv6 requests. The SimpleHttp user agent takes a flag to say whether to use ipv4 or ipv6. Some local config issues are preventing me from adequate testing of ipv6 requests
01:43
sella: 5861e03 | Whiteknight++ | src/random/randomnumber/MersenneTwister.winxed:
Merge branch 'master' of github.com:Whiteknight/Rosella
sella: 928f888 | Whiteknight++ | t/harness:
[Xml] Add Xml to the harness
sella: 1851a8b | Whiteknight++ | src/unstable/net/ (3 files):
[Net] Some cleanups for the mime encoder. Break socket creation out into a separate function in the http protocol handler
sella: 0788d25 | Whiteknight++ | src/test/Asserter.winxed:
[Test] Add in a new test method specifically for comparing strings
sella: 757c215 | Whiteknight++ | src/random/ (2 files):
[Random] Some fixes for the Mersenne Twister. Returned integers are in the range 0..0x7FFFFFFF only. Negative values and 64-bit values are not supported currently.
whiteknight rurban: I'll take it. I'll fix that and the other one tomorrow
sella: 2d073ec | Whiteknight++ | src/harness/View.winxed:
[Harness] Fix a bug where failed tests are showing up under the wrong file
sella: cb2d2d2 | Whiteknight++ | / (24 files):
[Net] Add tests for net, fixing a few bugs I found along the way
sella: 63fd59c | Whiteknight++ | / (41 files):
[Net] Net is now stable
rurban whiteknight: the numbers look strange to me. maybe it's a false positive. you'd need to gdb into it 01:45
whiteknight I will
rurban And now I'm off for my wedding holidays for the next 2 weeks :) 01:46
whiteknight have fun!
rurban will have, bye 01:47
whiteknight I've got to fix these two tickets from rurban this weekend, then I want to wrap up the eval_pmc branch patches for nqp and rakudo 01:59
benabik two? 02:00
whiteknight he filed one earlier too
benabik Oh the interp thing.
whiteknight yeah 02:01
Imma kick it in the butt
but until then, it's bed time
benabik 'night
whiteknight goodnight 02:02
02:48 smash joined 02:54 eternaleye joined 03:01 eternaleye joined
cotto anyone around who cares about m0? 03:24
gist.github.com/2599368 03:25
so much less painful, it's almost not painful
03:38 alvis joined 03:40 smash joined 04:00 Maddingue joined 04:17 JimmyZ joined
JimmyZ cotto: me 04:18
or .alias
benabik likes .alias over .namereg 04:19
JimmyZ me too 04:20
but, I'd like to let the assembler auto alias to a register, just like pir. something like ".define foo int" 04:25
cotto My current favorite is .foo = S0 04:34
least noisy I could come up with 04:35
whatever color the bikeshed gets, it wasn't too hard to get it working in the assembler and get the tests passing 04:40
benabik I wouldn't give up the general directive syntax to variables. 04:42
If .foo defined a variable foo, then that blocks off all .whatever directives. 04:43
cotto That's a valid concern. What other kinds of directives might we want?
benabik I don't know, but since you're already using .version, .chunk, .constants, etc... 04:44
.alias, .var, or different punctuation is probably called for.
cotto yeah. the other thing is that . already means a different set of things 04:45
benabik :var, $var, £var
cotto I'm going to veto any characters I have to copy/paste
JimmyZ I'm +1 to ".var foo int " or ".alias foo = S0
cotto I don't like anything, so I'll go with .alias 04:46
benabik I'm likely to steal this syntax for GSoC
JimmyZ which syntax?
prefix . ? 04:47
benabik The assembler syntax in general.
Although I'll probably have a .pact instead of .version or something similar to indicate its origin.
JimmyZ oh, a new assembly age 04:48
:)
benabik yesyes.
Death to IMCC
It's served us well, but it can rest now. :-D
JimmyZ sure
imcc is doing thankless job :) 04:50
benabik And whiteknight++ is doing an even more thankless job by keeping it going. :-) 04:51
JimmyZ hehe
benabik cotto: You may also want to have a way to alias constants 04:52
cotto benabik, how would that look (if you have an idea)? 04:58
benabik cotto: Give me a moment and I'll try to figure it out. 05:11
cotto benabik, no rush. just curious 05:14
benabik cotto: Iteration 1 gist.github.com/2599989 05:19
I'm completely ignoring PCC there. It would be _ugly_ to write out by hand. 05:20
(I did try to think about it for a moment though.) 05:21
cotto that'd fill the niche currently filled by pir?
benabik It's more a PASM level
And even more explicit. Needs separate constant sections. 05:22
It's more-or-less used for what PIR is now.
cotto alright
essentially M1
benabik But I'd expect it to be more a debugging and serialization format. Compilers should access the API directly.
cotto or M.5
benabik M1 or M2, basically. Whatever level normal parrot opcodes are. It's supposed to be a direct text representation of PBC files. 05:23
cotto got it 05:24
benabik PCC would include FixedIntegerArrays in the `.constant pbc` section and calls to the opcodes.
I would imagine that aliases occupy the same namespace as labels. hm 05:25
Although disambiguating labels and registers/constants may be interesting.
cotto something close to that 05:26
tbh, I'm content saying "don't name them the same, then"
low-level stuff can have sharp edges, especially if it's 99% generated
benabik Flat namespace, things named [INSP]C?\\d+ (case sensitive) are reserved? 05:27
Hm. 05:28
Actually, I may require explicit types on the opcodes.
set_n_nc i, NC0
cotto that's consistent with how pir works
benabik PIR determines opcode name by name + types. 05:29
I somewhat want to allow raw integers as labels so the disassembler can just output PCs as labels and print jumps "naturally" 05:30
cotto basic-style
benabik Huh. The jump opcodes actually accept int constants. 05:34
05:40 jwilliams joined
benabik I suppose this would be the more basic version: gist.github.com/2599989 05:41
(same gist, just edited)
Ah. Better idea. Output _PC as labels. That way you can differentiate between labels and int constants. And the assembler looks better with type annotations attached to the arguments. 05:47
dalek rrot/m0-regname: e80bf44 | cotto++ | / (4 files):
first shot at register name aliases, plus tests and docs
05:54
cotto so, there's a thing 05:55
benabik Updated gist again. Probably more sane version this time.
Included a .var directive.
And a lot more .ends
Hm. The .alias var = N0 is probably easier to understand 05:57
cotto just going to mention that
benabik updated
cotto what are options? 05:58
pragmata?
benabik Yeah.
I suppose I could use .pragma instead
cotto What's the point of spelling them out? Will they not always be useful or will they have some associated cost? 05:59
benabik I was thinking that a very stupid parser might be useful for translation into C.
cotto hmmmm 06:00
benabik It would reject most options for simplicity.
cotto you mean a parser implemented in c or something that translates pact assembly to c? 06:01
benabik Parser implemented in C.
If we kick IMCC from core, I'd like to have _some_ assembly available.
cotto if you have the brainpower left, I'd appreciate a quick once-over of that m0 branch 06:04
it passes the test that the branch adds, so I don't expect anything surprising
benabik commit looks sane at a readover 06:15
cotto thanks 06:17
benabik msg whiteknight This may be relevant to your interests: PACT assembly, based on PASM/M0 gist.github.com/2599989 07:06
aloha OK. I'll deliver the message.
cotto I don't think I'll ever be able to see the phrase "relevant to <posessive pronoun> interests" without thinking of a cat. 07:11
thank you, Internets 07:12
07:12 fperrad joined
cotto *possessive 07:13
07:13 jwilliams left
benabik I think of this: www.threadbombing.com/details.php?image_id=5307 07:15
But, yes, the Internets are full of cats
cotto gloriously full 07:20
08:32 jwilliams joined 08:34 Khisanth joined
dalek rrot/coke/rm_pasm: dc85744 | jimmy++ | examples/benchmarks/ (15 files):
remove some pasm files from examples
10:15
rrot/coke/rm_pasm: dd4280e | jimmy++ | / (3 files):
Merge branch 'coke/rm_pasm' of github.com:parrot/parrot into coke/rm_pasm
rrot/coke/rm_pasm: 9adb728 | jimmy++ | examples/benchmarks/ (12 files):
remove the rest of pasm files from examples
10:21
rrot/coke/rm_pasm: 577c2c0 | jimmy++ | examples/subs/ (3 files):
remove pasm files from examples/subs
10:25
rrot/coke/rm_pasm: 95f2221 | jimmy++ | examples/ (8 files):
remove the rest of pasm files from examples
10:34
kudo/nom: 3b028e9 | moritz++ | src/Perl6/Grammar.pm:
fix ms//
10:39
rrot/coke/rm_pasm: cd984a0 | jimmy++ | / (2 files):
fixed t/benchmark/benchmarks.t tests
10:41
rrot/coke/rm_pasm: 70ac69f | jimmy++ | t/ (6 files):
[t] remove pasm test randomly
10:49
10:56 whiteknight joined
dalek rrot/coke/rm_pasm: 78896f6 | jimmy++ | t/ (7 files):
[t] remove pasm tests randomly
10:58
whiteknight good morning, #parrot 11:05
tadzik hello whiteknight 11:06
whiteknight hello tadzik 11:09
dalek rrot/coke/rm_pasm: e50f810 | jimmy++ | / (5 files):
[t] remove pasm tests randomly
11:11
rrot/coke/rm_pasm: 2d63cbe | jimmy++ | / (3 files):
change t/pmc/testlib/number.pasm to pir, also fix Makefile
11:21
11:21 JimmyZ joined
dalek rrot/coke/rm_pasm: 2ba688c | jimmy++ | t/pmc/testlib/number.pir:
fixed t/pmc/testlib/number.pir
11:23
kudo: d7f45ff | moritz++ | src/core/Cool.pm:
Cool.eval
11:26
kudo/nom: dbcdb16 | jnthn++ | src/core/Cursor.pm:
In /<$x>/ don't recompile $x every single time we pass it while scanning/backtracking. This implements it exactly as S05 suggests: 'the compiled form is cached with the string'.
whiteknight something seems screwy with Configure.pl today 12:09
if I pass in -ccflags="...", it uses those only and avoids all others
dalek rrot: 0b7ccce | Whiteknight++ | / (3 files):
Add a new Parrot_x_execute_on_exit_handlers to call exit handlers. Use that in the embedding API to fix an error where we were destroying the interp before attempting to call these handlers. This *should* fix #765
12:22
12:22 jwilliams left
13:05 kid51 joined
nopaste "kid51" at 70.85.31.226 pasted "Parrot failing to build with g++" (487 lines) at nopaste.snit.ch/138011 13:09
13:18 kid51 joined
kid51 msg whiteknight Commit 84315536f18 on May 04 appears to cause the g++ compilation failure pasted earlier 13:33
aloha OK. I'll deliver the message.
whiteknight kid51: on it 13:34
nopaste "kid51" at 71.246.111.55 pasted "git diff -w 6c302cf6acb8..84315536f18" (115 lines) at nopaste.snit.ch/138022 13:35
dalek rrot: 6351204 | Whiteknight++ | src/pmc/ (2 files):
Fix some build errors from un-thought-out attribute accesses. kid51++ for the catch
13:44
kid51 Confirmed 13:51
whiteknight msg benabik your gc finalize branch still doesn't run finalization. I'm working on a branch that will actually enable it (the fix is MUCH larger)
aloha OK. I'll deliver the message.
whiteknight much, much harder 14:14
benabik whiteknight: Well, fair enough. It was just an experiment. Feel free to overwrite the branch. 14:28
whiteknight blah, this destroy code is horrible 14:32
enabling it brings out the segfaults 14:33
The biggest problem is that so many of our C-level tests expect Parrot_interp_destroy to do nothing, because in master it does nothing 14:39
so to change that, we need to add a new function 14:40
dalek rrot/whiteknight/gc_finalize: 75a6765 | Whiteknight++ | / (4 files):
Enable GC finalize at parrot destroy. Refactor the destroy process to not use at-exit processing, because the at-exit mechanism requires GC stuff to be available (which it isn't if we destroy the interp during at-exit). Tests expect Parrot_interp_destroy() to do nothing, so create a new Parrot_interp_destroy_for_exit which does gc finalization and frees resources
14:43
rrot/whiteknight/gc_finalize: ab20bd9 | Whiteknight++ | src/interp/api.c:
Some small cleanups
15:01
rrot/whiteknight/gc_finalize: a3f8fc3 | Whiteknight++ | / (6 files):
Remove the PARROT_DESTROY_FLAG. That flag was optionally enabling GC finalization. If we're always finalizing, we don't need that flag. This is the --leak-test commandline option
cotto ~~ 15:11
15:48 Psyche^ joined
dalek kudo/use-arglist: ff4843a | moritz++ | src/Perl6/Grammar.pm:
preparations for use with arglist
16:08
kudo/use-arglist: 3b5d78c | moritz++ | src/Perl6/ (3 files):
move make_simple_code_object to World, rename it to start with create_
16:23 JimmyZ joined 16:57 PacoAir joined
dalek rrot/m0: e80bf44 | cotto++ | / (4 files):
first shot at register name aliases, plus tests and docs
17:12
17:15 crab2313 joined
dalek kudo/use-arglist: ba1f23a | moritz++ | src/Perl6/ (3 files):
move make_thunk to World, as create_thunk
17:21
17:59 brrt joined
whiteknight /* Sometimes it's the next key, sometimes it's not. The Key code is like that. */ 18:13
this code fills me with joy
cotto I knew that comment sounded familiar. 18:25
not one of my more helpful comments though 18:26
whiteknight the comment is not the unhelpful part 18:29
it is a very honest assessment of very lousy code 18:30
brrt whiteknight: help! 18:48
whiteknight brrt!!!
brrt can't link to parrot
whiteknight what URL are you using?
brrt i do: 18:49
whiteknight :)
brrt gcc parrot-test.c `parrot_config embed-cflags` `parrot_config embed-ldflags` -I`apxs -q INCLUDEDIR` `pkg-config apr-1 --cflags`
no, other type of linking
whiteknight I know. What error are you getting?
brrt /tmp/cccx0hxB.o: In function `main':
parrot-test.c:(.text+0x29): undefined reference to `Parrot_api_make_interpeter'
parrot-test is my own twist to the file in the api documentation 18:51
whiteknight I think you spelled interpreter wrong
brrt oh 18:52
i do
:-)
so, no problems then
oh, wait, can't find shared libparrot.so 18:53
but that is probably a path issue 18:54
whiteknight yeah, make sure the library is in the location `parrot_config embed-ldflags` says it is 18:56
you may also want to update LD_LIBRARY_PATH
brrt that variable, yes :-) 18:57
.. probably more clever than editing /etc/ld.so.conf 18:58
brrt needs to refresh his c compiler invocation skills 19:00
whiteknight I have to go run an errand. I'll be back in ~30 min 19:04
brrt bye 19:05
i know i'm greedy, is there anyone working on a vim / emacs mode for winxed? 19:11
19:39 davidfetter joined
cotto brrt, NotFound has mentioned that he doesn't like syntax highlighting. If you can take the time, it'd come in handy. If not, using js highlighting would probably get you a useful result. 19:44
20:09 brrt joined 21:05 schmooster joined
benabik I have a basic winxed syntax highlight for Vim 21:18
github.com/Whiteknight/winxed-highlight 21:19
21:20 contingencyplan joined
whiteknight benabik: I have a present for you 21:29
dalek rrot: 85b0c86 | Whiteknight++ | / (2 files):
Put together a few Pobj-alike macros for working with the Key flags. Use them in the Key PMC to clean up a little
21:30
rrot: 24dccbc | Whiteknight++ | / (2 files):
Use the new KEY_ macros in src/key.c to cleanup some code and make it more readable
rrot: bdf45a2 | Whiteknight++ | src/ (2 files):
Add several prototype introspection methods to Key PMC for working with register references
whiteknight benabik: Please take a look at these additions. If they work for what you need, or if they need to be modified, let me know. I haven't done much testing yet. 21:33
22:02 travis-ci joined
travis-ci [travis-ci] parrot/parrot#294 (master - bdf45a2 : Whiteknight): The build was fixed. 22:02
[travis-ci] Change view : github.com/parrot/parrot/compare/6......bdf45a2
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1254888
22:02 travis-ci left
Coke pbc_disassemble generates PASM. shoudl it? 22:35
er: if PASM goes away should pbc_disassemble go away, or should it generate PIR instead? 22:36
perhaps go away until m0 appears?
(i'd rather not do that since that leaves a gap)
22:59 brambles joined 23:14 brambles joined
dalek Heuristic branch merge: pushed 17 commits to parrot/coke/rm_pasm by coke 23:18
Coke no, that's just a lot of commits.
23:23 alvis joined
Coke do we care if our merges are squashed or not? 23:26
is INTERPINFO_CURRENT_OBJECT gone? 23:29
ah, looks like bacek did a partial removal of it. 23:31
dalek Heuristic branch merge: pushed 37 commits to parrot/coke/rm_pasm by coke 23:32
rrot/coke/rm_pasm: c92158f | coke++ | config/gen/makefiles/root.in:
This target was removed in an earlier commit
23:35
aloha (parrot/parrot) Issues closed : 765 (With --leak-test at the final interp->exit_handler_list = NULL; interp is already freed ) by rurban : github.com/parrot/parrot/issues/765 23:36
Coke wierd. if I go to that ticket, I see whiteknight closed and reopened it 11 hours ago, but don't see that rurban just closed it. 23:37
dalek rrot/coke/rm_pasm: c9140a1 | coke++ | t/pmc/object-meths.t:
Fixup test plan
23:47
rrot/coke/rm_pasm: 5c447ff | coke++ | t/pmc/orderedhash.t:
fix conversion of test to PIR
Coke whiteknight: you're failing some codetests with recent commits to master. 23:50
t/codingstd/c_arg_assert.t