Parrot 3.8.0 "Magrathea" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 29 September 2011.
00:15 benabik joined
benabik o/ #parrt 00:15
*parrot
00:43 bacek_at_work joined 00:44 aloha joined
dalek rrot/kid51/testsets2: 40d1c78 | jkeenan++ | t/fullharness:
Begin to add a smolder_fulltest equivalent.
01:33
benabik Why would I be having problems calling SUPER() in a PMC? It's failing to link with unknown symbol _SUPER. :-/ 01:44
soh_cah_toa benabik: nopaste it 01:46
benabik soh_cah_toa: I'm trying to isolate it from other code changes, so I might in a little bit. 01:49
soh_cah_toa sure
benabik Hm. Maybe SUPER doesn't work inside methods? 01:57
Ahhhhh…. No it doesn't. 01:58
That's the thing that irritates me the most about subclassing in Parrot. Very difficult to get at the superclass' methods. 02:01
soh_cah_toa benabik: huh? why wouldn't SUPER work inside methods?
benabik soh_cah_toa: pmc2c doesn't mangle SUPER inside methods, just inside VTABLEs. 02:02
Why? I don't know.
soh_cah_toa yeah, looks like you're right 02:03
that's really stupid
there has to be some reason why that's so. i mean, i can't imagine that something like that has gone overlooked this long 02:04
benabik Have you seen the hackery needed to call an overrided method in PIR? It's kinda crazy.
soh_cah_toa nah
benabik I can't find the one I got it from… It was more impressive... 02:05
github.com/parrot/parrot/blob/nqp_...ler.pm#L16 02:06
Hah! I know why this test works with annotations not setting the directory! I bet it doesn't use an annotation segment 02:18
The simplest answer is usually the best.
Nope. 02:20
*sigh*
Well, I know what the superclass is doing in that method so I can just do it manually. 02:24
dalek rrot: bbd9822 | benabik++ | src/pmc/packfileannotations.pmc:
PackfileAnnotations: Ignore SUPER a little less

We didn't call the superclass's init, and the superclass has a set_directory which does a little bit of work.
Sadly, SUPER doesn't work inside of methods, so this is basically an inlined version.
02:50
rrot: 89bab21 | benabik++ | src/pmc/packfiledebug.pmc:
PackfileDebug: Bring more sanity to VTABLEs

  - We have a custom mark VTABLE, so mention that in init.
  - Shorten mark a little by getting all the attributes at once.
  - The get_integer VTABLE is actually returning the number of
   elements in the PMC, so use the elements VTABLE.
  - The line number is an integer so use get_integer_keyed_int
   This keeps around get_pmc_keyed_int as a wrapper.
  - Refactor get_string_keyed_int in preparation for further
   changes.
rrot: 883091c | benabik++ | src/pmc/packfiledebug.pmc:
PackfileDebug: Lookup filenames in the const table

The method of doing so is modeled after the code in PackfileAnnotations.
CT: 4593f7d | benabik++ | src/disasm.winxed:
disasm: Simplify debug mapping handling

Parrot master now has more sane vtables on PackfileDebug.
02:51
cotto ~~ 02:52
benabik The Packfiles, they are a-changing. 02:54
(Packfile PMCs, not PBC format. That would be crazy.) 02:55
cotto We already have the FDA maximum recommended daily allowance of crazy. 02:58
benabik 110% of it, I think.
Do packfiles with custom ops use a load_oplib opcode or does parrot load the oplibs based on the opmap? 02:59
Hm. I think it loads it from the opmap. Which means I need a list of oplibs from opmap. 03:00
03:00 rfw joined
cotto yes 03:00
benabik Other than SUPER not working in METHODs, working on PMCs is not as bad as I feared. 03:01
03:02 plobsing_ joined
dalek umage/soh-cah-toa/interactive: d979cfb | soh_cah_toa++ | TODO:
Added and removed a few things from the TODO list.
03:07
umage/soh-cah-toa/interactive: 9dd9341 | soh_cah_toa++ | src/lib/Plumage/Command.nqp:
Removed explicit 'return' statements from accessor methods in Plumage::Command since they're redundant.
umage/soh-cah-toa/interactive: 5ef0d5d | soh_cah_toa++ | t/ (4 files):
Cleaned up test files.
umage/soh-cah-toa/interactive: 1840750 | soh_cah_toa++ | t/sanity.t:
Fixed failing sanity tests.
umage/soh-cah-toa/interactive: 8b12c43 | soh_cah_toa++ | src/ (3 files):
* Improved documentation for Plumage::Command and Plumage::Interactive.

  * Added $!prompt_string attribute to Plumage::Interactive so it can be set when object is instantiated instead of passing it to prompt().
  * Added parse_command_line() method to Plumage::Interactive to parse input command and arguments.
  * Created main runloop for CLI. Now parses and executes commands properly.
benabik Wow. 03:08
soh_cah_toa yeah
now plumage has a cli and can be merged into master. whoopy ding :P
cotto soh_cah_toa++ 03:09
benabik soh_cah_toa: I have a winxed file that doesn't even do everything pbc_merge does. "whoopy ding".
pbc_dump!
soh_cah_toa :)
cotto benabik, woot 03:10
benabik cotto: My discussions of fixing the Packfile PMCs are 100% selfish. I want to use them, so they have to be better.
soh_cah_toa agreed also 100%
i'm also designing plumage to act more like a traditional package manager like luarocks. that is, having a remote repo on parrot.org that contains the metadata (instead of being local) and tarball-like packages called "feathers" (like luarocks' "rocks") 03:16
then once that's all good to go, i want a `plumage-admin` command for creating/packaging "feathers"
luarocks has a lot of good idea, btw ;) 03:17
cotto soh_cah_toa, I'm glad you're taking initiative in that area. I'd also encourage you to post to parrot-dev about your plans. 03:19
soh_cah_toa sure, good idea
that way users would have the option of installing "pre-packaged" modules/projects instead of having to fetch an entire repo and compiling everything 03:20
cotto That has potential to make relocatable install more important. 03:21
soh_cah_toa yup
cotto *installs
soh_cah_toa anyway, it shouldn't be *that* hard to implement. it's pretty straightforward 03:22
dalek umage: c5167ca | soh_cah_toa++ | / (7 files):
* Created Plumage::Command class for representing commands as it will be needed soon by Plumage::Interactive.

  * Added skeleton for docs/interactive.pod which will describe how to use CLI interface.
  * Made various code cleanups and added verbosity to inline comments.
03:23
benabik Hm. oplibs don't know their name. Silly, but I can work around it.
dalek umage: 5414a2a | soh_cah_toa++ | src/lib/Plumage/Interactive.nqp:
Removed part of CLI welcome message that mentioned 'h' shortcut since I'm not sure I want command shortcuts at first.
umage: fb86b8d | soh_cah_toa++ | src/plumage.nqp:
Changed name of 'interactive' command to 'cli' because it's shorter and its purpose is more readily apparent.
cotto no. The hard part will be figuring out what the right thing to implement is.
umage: 72e9a7d | soh_cah_toa++ | / (3 files):
Updated manpage and message displayed by 'help' command to reflect the changes I made while rewriting the %COMMANDS hash.
umage: 42a594c | soh_cah_toa++ | / (2 files):
Added a 'CLI' and 'Misc' section to the TODO file. Also started documenting the CLI in docs/interactive.pod.
umage: d979cfb | soh_cah_toa++ | TODO:
Added and removed a few things from the TODO list.
umage: 9dd9341 | soh_cah_toa++ | src/lib/Plumage/Command.nqp:
Removed explicit 'return' statements from accessor methods in Plumage::Command since they're redundant.
cotto I'm drowning!
dalek umage: 5ef0d5d | soh_cah_toa++ | t/ (4 files):
Cleaned up test files.
cotto ;)
dalek umage: 1840750 | soh_cah_toa++ | t/sanity.t:
Fixed failing sanity tests.
umage: 8b12c43 | soh_cah_toa++ | src/ (3 files):
* Improved documentation for Plumage::Command and Plumage::Interactive.

  * Added $!prompt_string attribute to Plumage::Interactive so it can be set when object is instantiated instead of passing it to prompt().
  * Added parse_command_line() method to Plumage::Interactive to parse input command and arguments.
  * Created main runloop for CLI. Now parses and executes commands properly.
soh_cah_toa agh!
umage: 21b4be6 | soh_cah_toa++ | / (16 files):
Merge branch 'soh-cah-toa/interactive'
cotto and we're back
benabik What happened to heuristic merge?
soh_cah_toa yeah, really
cotto probably just under the threshold
soh_cah_toa that's really annoying
ah
cotto it seems to happen regularly 03:25
dalek rrot: d011f84 | benabik++ | / (2 files):
PackfileOpMap: Add a way to get loaded oplibs

Since OpLibs don't know their own name, use a hash.
03:57
CT: c74ad5c | benabik++ | src/disasm.winxed:
disasm: Print oplib information

Parrot master now has a way to get it, so use it.
benabik I now print oplib and opcode information! 03:58
gist.github.com/1291423 03:59
soh_cah_toa cool
benabik I think that means I now have all the information I need to convert that list of integers at the end into psuedo-assembly.
cotto nice! 04:01
soh_cah_toa yeah, i'm very excited to see how things work out w/ pact
dalek umage: 779374d | soh_cah_toa++ | CREDITS:
Added 'interactive CLI' to the description of myself in CREDITS.
04:11
umage: 7c69eac | soh_cah_toa++ | / (2 files):
Updated manpage and help message to include information on 'cli' command.
umage: 209ef8e | soh_cah_toa++ | docs/interactive.pod:
Updated example in docs/interactive.pod to show new output for 'help' command.
04:16
soh_cah_toa does windows cli have it's cat-like command for reading files? 04:28
cotto type iirc 04:29
unfortunately, I have a sever allergy to windows scripting 04:30
*severe
soh_cah_toa yeah, looks like you're right
yeah, win32 shell is the sux0rz
big time 04:31
who's the one w/ the windows machine? isn't it Coke? 04:37
msg Coke do you think you could check the value of $*OSNAME in nqp on your windows machine? i can't remember if it's 'win32' or 'MSWin32'. thanks 04:39
aloha OK. I'll deliver the message.
cotto soh_cah_toa, I've got one at work. 04:40
For anything non-trivial, it might just be easier to hack something in winxed.
soh_cah_toa cotto: do you think you could do that ^ when you get a chance? 04:41
04:41 contingencyplan joined
moritz nqp: say($*OSNAME) 04:47
p6eval nqp: OUTPUT«Contextual $*OSNAME not found␤current instr.: '_block1000' pc 43 ((file unknown):40) (/tmp/y6wHbb9dck:1)␤»
soh_cah_toa it needs to be predeclared in parrot-nqp for some reason :\\ 04:48
nqp: my $*OSNAME; say($*OSNAME)
p6eval nqp: OUTPUT«␤»
soh_cah_toa awesome
moritz btw it's MSWin32
soh_cah_toa ok
aw, parrot-nqp doesn't support the given/when statement? so lame... 04:49
moritz nqp: say(nqp::atkey(nqp::atpos(pir::getinterp, pir::cont::IGLOBALS_CONFIG_HASH), 'osname'));
p6eval nqp: OUTPUT«Confused at line 1, near "say(nqp::a"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23698 (src/stage2/gen/NQPHLL.pir:6757) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz nqp: say(nqp::atkey(nqp::atpos(pir::getinterp, pir::cont::IGLOBALS_CONFIG_HASH)), 'osname')); 04:50
p6eval nqp: OUTPUT«Confused at line 1, near "say(nqp::a"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23698 (src/stage2/gen/NQPHLL.pir:6757) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz nqp: say(nqp::atkey(nqp::atpos(pir::getinterp, pir::cont::IGLOBALS_CONFIG_HASH)), 'osname');
p6eval nqp: OUTPUT«Confused at line 1, near "say(nqp::a"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23698 (src/stage2/gen/NQPHLL.pir:6757) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz confused too
soh_cah_toa yeah, it's totally weird
moritz nqp: my %h := nqp::atpos(pir::getinterp, pir::const::IGLOBALS_CONFIG_HASH); say(%h<osname>); 04:51
p6eval nqp: OUTPUT«linux␤»
moritz it helps not to misspell 'const' :-)
soh_cah_toa what's nqp::atpos? 04:52
moritz indexing by number 04:54
soh_cah_toa ah, ok
moritz nqp: say( pir::getinterp()[pir::const::IGLOBALS_CONFIG_HASH]<osname> ) 04:55
p6eval nqp: OUTPUT«linux␤»
cotto soh_cah_toa, my tuits are in crazy short supply 04:56
soh_cah_toa :)
05:01 workbench joined
soh_cah_toa in pir, is there really any difference between `$P0 = new 'Foo'` and `$P0 = new ['Foo']`? 05:01
for single names, that is 05:02
i know you need it for something like ['Foo';'Bar';'Baz']
cotto key vs string on the pbc and op level
so a different op gets called. functionally, not much different thouhg 05:03
*though
soh_cah_toa ok
05:13 SHODAN joined
soh_cah_toa i'm looking through the pir book and it says that only pmc's can be stored as lexicals, not primitive types? why is that? 05:13
sorear soh_cah_toa: that's changed as of a few weeks/months ago 05:14
soh_cah_toa: the original reason was simplicity
soh_cah_toa ok
cotto yup 05:15
don't give the pir book too much weight
05:19 SHODAN joined
dalek rrot: 5f3976d | benabik++ | src/pmc/packfiledebug.pmc:
Update Packfile* PMC documentation

Packfile:
   - Does not have a uuid_length key
   - unpack takes a string, does not return one
PackfileDebug:
   - Doesn't have two get_string_keyed_int methods
PackfileOpMap
   - Isn't a debug segment
   - Has opcode mappings, not filename mappings
05:35
rrot: 8f0ec0d | petdance++ | config/auto/warnings.pm:
added a new warning, -Wunused-local-typedefs, from the development branch of gcc 4.7.0
rrot: ededc46 | petdance++ | ChangeLog:
Fixed spelling of "Trac" and add a link to it
07:18 aloha joined 07:57 mj41 joined 08:00 lucian joined 09:54 lucian_ joined 10:06 lateau__ joined 10:17 ambs joined 10:19 ambs joined 11:00 mj41 joined 11:03 smash joined
smash hello everyone 11:03
11:13 smash joined 11:37 Psyche^ joined 11:42 GodFather joined 11:51 benabik joined
benabik o/ #parrot 11:51
benabik-- # apparently I forgot to _compile_ what I pushed. 11:58
dalek rrot: d90df33 | benabik++ | src/pmc/packfileannotations.pmc:
PackfileAnnotations: Fix decl-after-statement

Apparently benabik-- somehow forgot to test the code he pushed. My guess is that it late and this one slipped through some cleanups.
  gerd++ for noticing.
12:01
rrot/kid51/testsets2: ff6eea9 | jkeenan++ | / (2 files):
Change 'make fulltest' to use 't/fullharness'.
12:07
12:23 whiteknight joined
whiteknight good morning, #parrot 12:25
benabik o/ whiteknight
whiteknight benabik++ for the commits last night
benabik Would be more awesome if I hadn't broken the build. Good thing we don't have a dunce cap tradition. 12:26
whiteknight no worries, broken build can be fixed 12:28
benabik I now have Opcode PMCs to get information from, so next I get to walk over the bytecode int by int and decode them into real information. Should be exciting. 12:34
(Real exciting part is PCC, actually, but I hope to steal code from PIRATE for that.)
moritz seen bacek 12:36
aloha bacek was last seen in #parrot 138 days 1 hours ago joining the channel.
benabik bacek kinda just fell off the face of the channel, didn't he? 12:49
I'm sure $life or $work is just keeping him busy. 12:50
whiteknight yeah, he hasn't been around in a while 12:52
benabik: I merged that pull request, by the way 13:31
benabik whiteknight: Woo! 13:32
whiteknight The ubuntu 11.10 upgrade helpfully moved around the folders for gtksourceview, so I had to re-add my highlighters. 13:35
benabik Helpfully.
whiteknight they moved the folders for both gedit and medit. The medit folder was simply renamed for no apparent reason I can find. The gedit ones were at least moved from gtksourceview-2.0/ to gtksourceview-3.0/ 13:36
13:37 GodFather joined
whiteknight I keep telling myself that I need to find a better editor, but every time I experiment with something new I end up woefully disapppointed 13:39
benabik The only disappointment I have with Vim is that grim isn't installed on the CS dept. computers. :-D But I recognize that Vim isn't the friendliest of editors. 13:40
*gvim 13:41
atrodo benabik> better than emacs
benabik atrodo: So very very agreed.
whiteknight atrodo: hardly a ringing endorsement
atrodo before i learned vi, i could exit from vi. Emacs always resulted in killing it from another terminal. 13:42
whiteknight> Very true
benabik Actually, vim has an easy mode that makes insert the default mode… Although that makes using commands more difficult.
whiteknight the very first time I was using vim was on an old terminal machine I had set up as a web server. I couldn't figure out how to exit the program, so I left it open for several hours when I went to class, and when I came home I did a hard reset 13:43
moritz :-)
benabik Ctrl-C helpfully says ":quit<Enter> to exit Vim" 13:44
whiteknight I used lynx at the time to browse the web, since my laptop was busted. So I couldn't even do a search for a command cheatsheet while vim was open
benabik Ctrl-C in emacs eventually results in "C-c C-c is undefined"
I think that sums up why I use Vim over emacs.
moritz try ed 13:45
atrodo ed++
moritz you enter 'help'
it respons with '?'
you enter '?'
it responds with '?'
you enter 'quit' 13:46
it responds with '?'
I've selodmly seen such a consistent user interface :-)
atrodo ed++
benabik ^C, it responds with '?'
At least it goes away with ^D.
whiteknight As far as I am concerned, any console program which does not immediately exit with ^C is a bug 13:47
benabik :map <C-C> :qa!<Enter> 13:49
I accept telling me how to quit. 13:50
moritz I accept not losing data when vim refuses to quit on C-C :-) 13:52
benabik Heh.
whiteknight moritz: I don't need software to treat me like a baby and try to protect me from my own mistakes 13:53
moritz whiteknight: I do. YMV :-) 13:54
13:54 jsut joined
whiteknight if I click the X button on a GUI app, I expect it to close. It might ask me to confirm, but I want it to go away. I don't want it to ignore the request and suggest i click a different button instead 13:54
nine whiteknight: but essentially, that's what GUI apps do. They do not close. They tell you to hit "OK" or "Exit without saving" or whatever it's called in that particular application. 14:05
14:09 arnsholt joined 14:11 dmalcolm joined 14:13 SHODAN joined
whiteknight nine: if i'm in most applications, or an editor with no unsaved changed, I can click that X and the program closes 14:17
even firefox, if you set an option, will close all tabs without confirming
alt+F4 usually does the same thing. Make the program go away 14:18
moritz well, the main difference is that vim's command for "close, really!" isn't Ctrl-C 14:19
it still exists
whiteknight and it's different from the "close, really!" command for most other console programs 14:25
lucian_ i'm on wk on this one. vim should close on ctrl-c
in fact, mine does
benabik There's a decent argument to be made that Vim's default <C-c> mapping should be :qa<Enter> instead of :echo "…"
14:31 arnsholt_ joined
benabik Although :qa doesn't give a great message if the buffer is changed. 14:32
whiteknight The closest I can really get to using vim is with cream. But cream is even less flexible and you can't use things like existing vim colorschemes with it 14:34
and even though I am a programmer, I refuse to learn a custom, one-off scripting language just to make basic configurations to my editor 14:35
moritz didn't learn vim scripting either. Google + copy/paste :-)
whiteknight right, but you can't do that with cream
at least, not in all cases
benabik vim-perl?
I wonder why you can't use normal vim config with cream. It looks like just a set of configs. 14:36
Ahhhh… They muck with color groups and the like. 14:37
whiteknight yeah 14:38
lucian_ i put up with vim because i've seen no other editor with a good modal editing scheme 14:39
arnsholt whiteknight: Well, assumeing the right build-time options to your vim you can script it with Perl, Python and Ruby at least 14:41
But yeah. Vimscript is a bit ugly
14:43 contingencyplan joined 14:55 tty234 joined 14:57 GodFather joined
lucian yeah, python is pretty much a given 14:57
scripting it isn't that bad, just the UIs are a bit bad 14:58
15:06 Maddingue joined
NotFound I hate text edit wars. That's why I use my own editor ;) 15:07
Of course, it hasn't any kind of syntax highlighting or autocompletion. 15:09
15:52 gerd joined, logie joined
dalek rrot: 0a87d4d | NotFound++ | src/pmc/packfiledebug.pmc:
fix C90 violation
15:53
gerd dalek++; it works 15:56
whiteknight gerd++ Thanks for keeping on top of it! 15:59
NotFound That's strange, it failed only in my most up-to-date systems. Has something changed in the cflags recently? 16:06
benabik What the heck? 16:07
16:07 bluescreen joined
benabik Why didn't I get those c90 problems when I compiled it? 16:07
NotFound: That's an area I changed recently. 16:08
NotFound I got it with gcc 4.6.1
Don't get it with 4.3.2 16:09
benabik I'm using llvm-gcc 4.2, but it does catch things like decl-after-statement.
Or at least _should_. 16:11
benabik adds -std=c89 to his CFLAGS. 16:16
Hm. -Werror and parrot don't seem to get along. 16:29
Wait… Parrot adds -Werror=declaration-after-statement to my CFLAGS. How did those compile? 16:30
whiteknight we don't build error-free
er, we don't build warnings free
benabik WTF gcc? 16:31
Right… I guess gcc got much smarter about decl-after-statement in gcc (4.3.2, 4.6.1] 16:32
I'm not surprised we don't build warnings free. It's impossible to see them go by in the build. 16:36
Each gcc invocation is 18 lines lone from all the -W* options we add. 16:37
whiteknight at one point when I first joined the project I had the GCC build warnings-free
but g++ and clang are both much more picky
and with the code generators we now get hundreds of warnings about unused parameters which are hard to shake 16:38
benabik :-/
whiteknight I would argue that, since we use function pointers so frequently and therefore rely on unused parameters, that we should just turn off that warning
that is, the extra verbosity of it doesn't tell us anything we don't know
NotFound benabik: make -s 16:41
benabik NotFound: I've been spoiled by git's Makefile. Lines like "CC git.o" and "LINK git" still tell me where it is without losing the forest for the trees. 16:43
NotFound: Also, make appears not to propagate -s to sub-invocations of make. 16:48
NotFound Is better than nothing, anyway. 16:49
whiteknight NotFound's admission that he uses his own text editor inspires me 17:12
I think I'm going to fork gedit
NotFound Mine is text mode only. 17:13
whiteknight I'm not crazy enough to write my own editor from scratch :) 17:14
NotFound www.arrakis.es/~ninsesabe/qtre/ - Spanish only
I wrote it because at the time we had a bunch of machines with limited resources and several coworkers with vi alergy. 17:16
Later I read an article about embedding perl, and the monster grow up. 17:17
whiteknight I really want an editor with Parrot bindings built in. So I might add that
then I can write new features in winxed :)
NotFound That is one of my old ideas never materialized. 17:18
The name qtre is a pun. 'cutre' in spanish means 'poor, ugly, cheap...' 17:19
whiteknight :) 17:22
17:24 fperrad joined
dalek rrot: bf51f45 | mls++ | / (4 files):
add Hash.update(Hash) method to speed up rakudo/nqp startup
17:36
tadzik haha, it slipped in just before the master freeze :) 17:40
mls (I was worried that it is already frozen...) 17:41
tadzik looking at dukeleto++'s email, you barely made it :)
oh, that does mean that we're rolling out our release in two days or so?
mls seems like it
17:42 Bog joined
tadzik I'm looking forward to seeing a rakudopatch using Hash.update 17:42
dukeleto just remembered that it is release day
17:42 Bog left
whiteknight who is doing the release today? 17:43
17:43 marcel_r joined
tadzik dukeleto I suppose 17:43
nine whiteknight: comments on this? perl6.niner.name/parrot/getting_rid...index.html
whiteknight nine: the biggest source of nested runloops is vtable overrides in custom types 17:44
nine whiteknight: does this happen as often as it sounds like? 17:45
whiteknight nine: very, very often
nine darn
whiteknight look at src/pmc/object.c (it's generated during the build)
almost every single vtable access on one of those types calls a nested runloop
the solution there is to avoid vtables completely on Object, and use only methods 17:46
that would have the nice effect of being a little faster, actually, but we lose some things like interface compatibility with built-in PMC types
I like the idea of using tasks and getting the scheduler involved 17:47
but we need to be very careful that we don't destroy performance of existing code
nine If anything, improved performance should be the target 17:48
dalek p: 514d0fe | mls++ | / (2 files):
use parrot's new Hash.update method to speed up method cache generation
whiteknight vtable overrides have the worst peformance of any call mechanism in parrot
so limiting those is key
mls Why are they so bad?
whiteknight because of the nested runloop
mls Yes, but why is that so bad? Because of the setjmp() ? 17:49
whiteknight it does full PCC to process arguments, and has to set up a new runloop with all the necessary bookkeeping
it's not a lot worse than method calls, but it is measurably worse
nine I'd guess the argument processing is the worst offender here
whiteknight yes
the runloop overhead is just a little extra
whiteknight.github.com/2011/05/10/t...rides.html 17:50
mls argument setup is two PMCs, right?
whiteknight mls: yes. We can reduce that. I have plans to fix it, but haven't gotten there yet
benabik There still hasn't been movement on improving PCC, has there?
whiteknight whiteknight.github.com/2011/05/12/p...mings.html
benabik: I put my ideas out there. besides some words of caution, I didn't see any major disagreements 17:51
mls perfect. whiteknight++
whiteknight I was supposed to prototype some of the necessary new ops, but I never did. Maybe that will be a project for this week
the big problem in my head is how to deal with :named :slurpy parameters, because there's no way to do that in a performance-critical way 17:52
but if we write that off as being a known worst-case, at least there wont be any surprises 17:53
moritz is kinda surprised by the lack of reply to his latest mail on parrot-dev 17:56
whiteknight moritz: you sent an email to parrot-dev?
dukeleto moritz: perhaps it was all the negativity
whiteknight moritz: I don't see one from you
moritz whiteknight: in the "Looking for something to hack on" thread 17:57
whiteknight oh, I see it now
moritz dukeleto: maybe I didn't chose the best formulations for what I wanted to say, but I'm certain there's a core of truth to what I wrote. Please try to see it through the negativity. 17:58
nine moritz: maybe it's just because noone knows a good solution to that problem. People seem to hate trac (which I understand) but a migration certainly is painful. I wouldn't know what to do either. 18:02
moritz my point is that a non-migration plus a switch is also painful 18:03
and dukeleto++ seemed to gloss over that point
dukeleto moritz: stating that parrot devs purposefully ignore our trac tickets is not productive
moritz: everybody in the parrot and perl 6 world is a volunteer
moritz nine: but that could be a reason, yes
dukeleto: do you have any comments on the actual contents of the email, and not just on the style? 18:04
dukeleto moritz: what is the alternative? You are mostly in the perl6/rakudo world, which has lots of people wanting to help and hack on stuff. Parrot development is tapering off because people are leaving
nine It's certainly the reason why I haven't said anything about this. There seems to be pain in every way.
18:04 benabik_ joined
moritz dukeleto: I agreed that the "ignore" jibe was unncessary. I'm sorry about that 18:05
dukeleto moritz: if you speak meanly but say something that is correct, do you think you will win people over?
nine: yes, pain in every direction.
But I care about Parrot and Perl 6, and I don't see anybody else wanting to deal with the pain, so I am masochistic enough to try. 18:06
moritz dukeleto: my proposal is to formulate a plan and gather at least coarse consensus before doing something of such a large scope. I don't know how that will look, and I don't want to draw conclusions before the discussion happens
benabik_ Parrot is in an awkward point. We came up with a lot of things to help keep it stable and track problems… And now we need to shift gears and move quickly before we become irrelevent.
mls whiteknight: speaking of parrot hacking, do you think "push_pad/pop_pad" opcodes would be useful? 18:07
benabik_ mls: I do!
whiteknight mls: in what sense?
like for lexpads?
dukeleto moritz: you also insinuated that i am some lone wolf, trying to refactor the community. Well, I am the self-appointed community manager, and if I am not going to lead the way, who will?
moritz: i hear your concerns
benabik_ Avoiding PCC because you want to shadow a lexical is obnoxious.
dukeleto moritz: but discussing isn't doing
mls yes, for lexpads. to get rid of sub calls
whiteknight mls: yes, I think there are major savings to be had therein
benabik_ Er… I switched meaning in the middle of the sentence there.
moritz dukeleto: you can both lead the effort *and* discuss *first* 18:08
dukeleto moritz: consider the discussion started :)
benabik_ I know I don't pay attention to trac because it doesn't tell me anything I don't already know. Parrot is slow and regularly painful.
moritz dukeleto: ok. What do you plan to do with currently open trac tickets?
dukeleto moritz: if they are still relevant, then migrating them to Github seems to be the most reasonable 18:09
moritz dukeleto: will you do that migration?
dukeleto moritz: i think we have enough hackers to write a script to mostly automate the process, and petdance++ has even volunteered to help
mls whiteknight: Ok, I'm 50% there. I need to add a lexpad PMC to continuations, though, to make invoking a continuation restore the correct lexpad
whiteknight okay, that makes sense
moritz dukeleto: if you make the successfull migration of trac tickets a precondtion for using the github bug tracker(s), I have no objections at all. 18:10
tadzik mls: would that bea a notable perf win like that with Hash.update?
dukeleto moritz: i think first, we need have someone do a serious cage cleaning, i.e.: If there has been no activity on a TT for >1 year, ask the submitter to try and reproduce on a recent parrot, and close the TT
mls Good. That'll be my parrot project for this week
whiteknight mls++
dukeleto that should close about 1/3 of our TT's
then we can programmatically migrate the rest 18:11
mls tadzik: hopefully. But I don't have numbers. It should speed up loops, if statements and the like.
dukeleto moritz: the 1 year mark can be tweaked to a different time frame, but something similar, etc...
tadzik cool
dukeleto having 600 open TT's is just lying to our users that we care about all of them 18:12
mls (We could also use the mechanism to implement next/last/redo without exceptions/extra continuations)
dukeleto what is the subset of TT's that are still relevant and that parrot devs want to hack on? That is the subset that we should migrate
moritz dukeleto: sorry, will have to go afk for a while, will be happy to continue the discussion later
dukeleto Migrating every currently open TT would, in my opinion, be a mistake.
moritz (on the order of ~20min) 18:13
dukeleto moritz: ok. I guess I should work on doing the release ;)
benabik Do we have Parrot::Embed anymore? 18:14
nine funny: the oldest TT I find is "Implement Async I/O" :)
dukeleto benabik: it exists.
cotto ~~
mls whiteknight: the parrot book talks about such opcodes. Were they ever implemented? 18:15
dukeleto benabik: i think i tried to improve it a few months ago, but it needs love
18:17 janus joined
whiteknight mls: which opcodes? 18:17
18:17 contingencyplan_ joined
nine whiteknight: getting rid of nested runloops seems like a herd of yaks to shave. Do you think it a realistic goal? Or do you think it better to work towards OS threads? 18:18
whiteknight nine: that's what M0 is, the over-arching solution to nested runloops
mls push_pad, pop_pad, peek_pad...
benabik mls: peek_pad?
whiteknight mls: no, I'm not aware that we ever had such opcodes
mls (I implemented very differently)
peek_pad: Store the current lexical scope pad in a PMC 18:19
18:19 marcel_r left
mls ch10_opcode_reference.pod 18:19
(and no peek_pad for me ;) )
dukeleto cotto: what are your feelings about an extreme cage-cleaning of our TTs (>1 year old get deleted) + migration of what is left to Github ? 18:20
benabik Being able to access the current lexpad is useful for introspection. But probably also trivial to implement.
whiteknight mls: we probably don't need peek_pad. plobsing++ is talking about a context refactor which is going to put that kind of stuff into specially-named registers for easy access
18:21 ambs joined
whiteknight mls: although I don't know the state of that project. We should probably talk to him 18:21
mls My patch is very different from ch10_opcode_reference.pod. I have a ".lexinfo <name>" command that creates a new lexinfo and .lex can take a lexinfo name as extra argument.
push_pad also takes a lexinfo name as argument 18:22
whiteknight oh wow, that sounds very powerful
I can haz see patch?
benabik mls: What does lexinfo compile to?
I'd rather see ops than PIR directives.
mls whiteknight: not yet ;)
benabik (Speaking as someone trying to replace PIR.)
whiteknight benabik: probably nothing. LexInfo PMCs are stored as constants in the packfile
benabik whiteknight: Ah. Point. Constants I can deal with easy. 18:23
mls benabik: It's got to be PIR because it creates a constant PMC
whiteknight mls: benabik is working on new tooling to create packfiles without PIR, so he can create constants using other tools 18:24
benabik mls: As long as the bytecode behind it is easy to manipulate. I want less PIR magic not more. A PIR directive that just creates a constant I can deal with easily.
whiteknight benabik: at least his patch seems to be explicit about it. Currently, LexInfos are constructed implicitly by IMCC from the .lex directives
so, this actually is a little less magically
benabik heh 18:25
mls Well, actually you also need the .lex command sto fill the lexinfo
still magical, I'm afraid
whiteknight of course, when your reference point is "absolute maximum magic", anything else seems like a little less
benabik But that's old magic.
Old magic I already have to deal with. :-D
mls True.
ok, I gotta do some $dayjob work and then I'll head home. Speak to you guys tomorrow... 18:26
whiteknight later 18:27
18:39 jsut_ joined, schmooster joined
dukeleto mozilla crash reports are pretty spiffy: crash-stats.mozilla.com/report/ind...2812111015 18:46
we could have an environment variable which, if defined, told parrot to attempt to submit a crash report if badness happens... 18:47
benabik bleh. 18:48
Doing so in a cross-platform way is painful, I'd think.
tadzik just realized Parrot Socket has non-blocking capabilities for I-don't-even-know-how-long
whiteknight better idea, parrot can floor the CPU until it starts smoking, and then we can just look out our windows for smoke 18:49
dukeleto benabik: well, evidently mozilla has solved that already, and they happen to share their code :)
whiteknight: i like that too
benabik dukeleto: Can we share the server they submit to? 18:50
NotFound That may need to resurrect the hcf opcode.
whiteknight NotFound: I was thinking the same thing :)
benabik … hcf?
NotFound Halt and Catch Fire
whiteknight benabik: basically, it was a forced segfault
dukeleto benabik: do a search for halt and catch fire. Amusement will occur.
whiteknight I think it may have been used in the early days as a debugging tool, but we removed it
benabik Error: lp0 on fire 18:51
whiteknight ah, the good old days of printer bus error messages 18:52
NotFound People kept reporting that it segfaulted during make test, generating more noise than usefulness
benabik I like HSC (Halt and Spontaneously Combust). 18:54
NotFound I had a wifi access point that did that.
The first hour of usage.
18:57 Lma joined
dalek rrot: 80f8508 | dukeleto++ | ChangeLog:
update and reformat changelog
19:02
dukeleto once set every jumper on a 486 motherboard and then the CPU cracked and caught fire when I turned it on 19:06
benabik _cracked_?
dukeleto benabik: the CPU silicon literally cracked open and caught fire 19:07
what a great time to find a coredumping test in the master branch! 19:08
benabik dukeleto: I hope you kept it as a souvenir.
benabik hopes he didn't do it.
dukeleto gist.github.com/1296368
./parrot t/library/pg.t is coredumping on my machine 19:09
19:09 Coke joined
benabik Uhm. I don't think I touched any of that. Still not good. 19:09
dukeleto the GC is coredumping...
benabik Ahhh… "#skip no Pg connection; skipping remaining tests"
NotFound t/dynpmc/select.t TODO passed: 13 19:11
benabik NotFound: That's probably the test that passes on Linux, but not elsewhere. 19:12
It's more TODO "find a better way to test this" than TODO "make this work"
dukeleto this looks like a GC bug. Sucks hard. 19:13
19:13 benabik_ joined
moritz did parrot's exit handling change? 19:14
dukeleto moritz: not sure. But the kill_threads branch touched a lot of stuff.
dukeleto takes tools/release/auto_release.pl for a whirl 19:15
dukeleto is going to continue with the release process, for now
NotFound The no_pg branch lacks finalize
dukeleto NotFound: huh? I am working on the master branch 19:16
benabik I think he means branch in code not branch in git. 19:17
NotFound benabik: Can you try to add 'finalize ex' after .get_results(ex) in line 243?
Aye
moritz current rakudo fails some exit related tests on parrot master
NotFound There is no exit op in that path
moritz t/spec/S29-context/exit.rakudo and t/spec/S32-temporal/local.rakudo for example 19:18
benabik NotFound: I have no problem with the test though. 19:19
NotFound: Works with or without finalize for me.
NotFound Ah, sorry, I mean dukeleto
19:20 mj41 joined
NotFound Ugh, that test is using load_bytecode with .pir files 19:21
19:23 jlaire joined
NotFound prove -v t/library/pg.t emits 'ok NN #skip skipped'. Shouldn't be '#skip REASON_SUPPLIED" ? 19:24
cotto #ps in 6
benabik moritz: I'm grabbing a more recent Rakudo. Any idea when those tests started to fail? 19:27
dalek rrot: d5f7440 | dukeleto++ | / (7 files):
Update some stuff to 3.9.0
19:28
moritz benabik: I didn't have them on my last spectests, so it must be related to recompiling parrot/master 19:29
benabik moritz: Any idea what the old version of Parrot was? (Assuming new is master) 19:30
moritz benabik: might have been 4934d51 19:32
benabik fails to see anything suspicious in git-log. 19:33
19:35 marcel_r joined
dukeleto msg soh_cah_toa the release script died on me: gist.github.com/1296456 19:36
aloha OK. I'll deliver the message.
dukeleto msg soh_cah_toa it would be nice if it printed out exactly which commands it is running in the background
aloha OK. I'll deliver the message.
19:37 ambs_ joined 19:44 bluescreen joined
dalek rrot: f3f9158 | dukeleto++ | / (3 files):
Update PBC_COMPAT and native pbc tests
19:45
rrot: 3f0688b | dukeleto++ | docs/project/release_manager_guide.pod:
remove pending release from docs/project/release_manager_guide.pod
19:47
benabik … Poll is implemented in terms of select? 19:49
19:50 SHODAN joined
tadzik what is "in terms of select"? 19:50
benabik tadzik: Parrot_io_poll calls select()
tadzik oh cool
benabik fsvo cool.
dalek rrot: 07eb6e9 | dukeleto++ | docs/project/release_manager_guide.pod:
Remove a step from the release process, since we don't use milestones currently
19:52
benabik tadzik: used is passed to the tv_usec part of a timeval, so it is microseconds. Documentation is wrong, name is right.
*usec, not used
dalek nxed: 5fa2a54 | NotFound++ | / (2 files):
jump version to 1.4 devel, fix __ASSERT__ to emit absolutely nothing in non debug mode
tadzik I can fix that
benabik has an up-to-date rakudo, trying spectest. 19:58
benabik also has a class starting so can't dig terribly hard for the next hour or two. :-/
cotto excuses, excuses 20:02
whiteknight dukeleto: done any bisecting? 20:03
dukeleto whiteknight: trying to find a starting rev... 3.8.0 has the same bug
whiteknight ouch 20:04
dukeleto trying 3.6.0 now
whiteknight are we sure it's a parrot problem, not a test problem?
NotFound whiteknight: bootstrap-prt0 is supposed to not emit source annotations?
whiteknight NotFound: I think not. I can't remember
benabik The line it's dying on looks strange… I would think for a segfault there either interp or gc_sys would have to be garbage.
whiteknight NotFound: since we don't intend to include those functions in backtraces 20:05
cotto dukeleto: is it possible an old parrot is interfering?
dukeleto whiteknight: not sure about anything yet
cotto: yes
Coke . 20:06
NotFound The current version has annotations, the regenerated hasn't
cotto I really hope this isn't a parrot problem.
dukeleto cotto: but my new_parrot alias rm -rf's my installed parrot, so I don't think that is it
whiteknight moritz mentioned that Rakudo has been seeing problems related to program exit. I would like more details about that
I don't think I've seen any tickets to that effect yet
NotFound dukeleto: Can I commit a fix for frontend/parrot2 ?
benabik is running Rakudo's spectest while in class. 20:07
20:08 soh_cah_toa joined, davidfetter joined
dukeleto NotFound: go for it. will i need to change PBC_COMPAT ? 20:09
same bug on 3.6.0. double ouch.
whiteknight dukeleto: Okay, those releases were pretty well tested and seemed stable at the time. I think we stop looking at it as a parrot problem 20:10
cotto something's not right
NotFound dukeleto: no, is just a minimal fix
cotto +1 until we get verification from another machine
dukeleto NotFound: ok. go for it 20:11
i may be the only person running those tests with Postgres 8.4.8
it works on 3.0.0 for me
benabik oog
dukeleto crafts a bisect
whiteknight the test sounds shakey to me
dukeleto whiteknight: yes, the test is shoddily-written 20:12
Coke IWBNI if aloha told you WHERE someone gave you the message. 20:14
whiteknight Coke: like a timestamp? 20:15
benabik whiteknight: Not when, where. Like #parrot
whiteknight okay, I wasn't sure if aloha was present in other channels
benabik It's over in #perl6, although it's very quiet there. 20:16
dalek rrot: 4833d68 | NotFound++ | frontend/parrot2/prt0. (2 files):
check lenght before substr'ing in frontend
dukeleto kicks off a bisect 20:17
whiteknight I've got 2:1 odds that the offending commit is a change to the test 20:19
cotto was thinking the same thing
benabik The only change to the test since 3.0.0 is "1c42811 Skip postgres tests if extra nci thunks are not available" 20:21
NotFound dukeleto: issue #167 should be fixed with that
"that" == 4833d682d6 20:23
dukeleto NotFound++ 20:30
NotFound: for future reference, if you include the string "fixes #167" in the commit message, it will autoclose the issue
blarg. still tryinig to craft the bisect script correctly
evidently, exiting with an exit code >128 aborts the bisect
and the test exits with a 139 20:31
cotto not sure why that's a feature
benabik It's generally assumed you're trying to bisect a failing test and something like a segfault is exceptional.
NotFound dukeleto: ok
20:31 marcel_r_ joined 20:32 marcel_r_ left
dukeleto ok, i think i crafted the bisect script correctly. It will probably take about 15 builds or so 20:35
parrot bisect visualize is kinda cool, but some kind of OpenGL rendering would be better 20:40
the race is on. What will finish first? Bisect or my battery life? 20:42
It isn't looking good...
benabik moritz: It looks like something got changed in the way the exit exception is handled. I think it's getting caught somewhere it shouldn't. 20:45
Terminal.app crashed?
cotto screen ftw 20:48
dukeleto but a trusty power cord saved the day, just before a forced hibernation
cotto I love happy endings. 20:54
dalek umage: 004b3a1 | soh_cah_toa++ | / (3 files):
Version 1.0.0: Added new ChangeLog and VERSION files for tracking changes between versions. Also added get_version() subroutine for reading version number from VERSION.
20:55
benabik moritz: It looks like NQP is adding an exception handler that is catching the exit exception. 20:58
benabik hates that NQP and nom broke --target=past 21:00
21:01 benabik_ joined
tadzik benabik: I don't remember --target=past working since I work on rakudo 21:01
benabik tadzik: It worked on b.
tadzik really?
benabik Pretty sure.
tadzik mebbe
benabik It at least worked for nqp-rx, and doesn't for nqp.
When last I tried it gave a bunch of errors… now it's just empty. 21:03
dukeleto 0a8cc07d1cc5ec2a91355f5d17f3317b18ed36d1 is the first bad commit
commit 0a8cc07d1cc5ec2a91355f5d17f3317b18ed36d1
Author: Peter Lobsinger <plobsing@gmail.com>
Date: Fri Apr 22 16:42:36 2011 -0400
remove support for deprecated "t" nci signatures
benabik 124 lines of PIR for -e 'pir::exit(0)' wow 21:05
dalek umage: edef6aa | soh_cah_toa++ | t/02-load-all.t:
Added Plumage/Interactive.pbc and Plumage/Command.pbc to test_load_pbcs() test.
21:06
benabik moritz: I'm stumped. But it's centered in something NQP is doing. PIR `exit 0` works. But `nqp -e 'exit(0)'` doesn.t 21:09
Yeah… I don't even see an exception handler in the PIR for pir::exit(0). 21:10
21:10 Coke joined
benabik Ahhhh… It works fine when compiled. 21:11
The exception handler somewhere in HLL::Compiler is catching it.
moritz: HLL::Compiler is catching the exception. 21:13
dukeleto: Rakudo exit problem seems to be rooted in NQP. 21:14
dukeleto: So probably not a release blocker. 21:15
21:18 dd070 joined 21:19 dd070 left
dalek rrot: e608208 | tadzik++ | src/pmc/socket.pmc:
Fix typo in socket.pmc
21:22
21:25 jsut joined 21:26 GodFather joined
benabik more like a thinko 21:38
tadzik mebbe 21:41
dalek kudo/nom: bed705e | tadzik++ | src/core/IO/Socket.pm:
Implement IO::Socket.poll (unspecced)
21:42
benabik Very strange that that commit causes the error. Nothing in runtime/parrot/library/postgres.t uses t 21:57
The backtrace goes from ffi_call_unix64 to Parrot_str_new. The interp in call_ffi_hunk is different than the interp in Parrot_str_new. 21:58
The error is caused by sub 'cstring_ret_wrapper'. 22:05
Ahah… Parrot_str_new (interp=0x8d8d6b, buffer=0x0, len=9435376) 22:08
$P1 = dlfunc $P1, "Parrot_str_new", "Spi"
$S0 = $P1($P0, 0)
I find that heartily suspicious. 22:09
benabik adds notes to issue. 22:12
dukeleto: See github.com/parrot/parrot/issues/168 for a probable fix. 22:16
Heck, I have a commit bit and a couple minutes... 22:18
tadzik I like the attitude
benabik Have to be careful with the wording in the commit. Want to reference the ticket, but don't want to close it until dukeleto tests it.. 22:23
msg dukeleto Probable fix committed as 1ec04f6. 22:26
aloha OK. I'll deliver the message.
benabik I love the feeling of pushing untested code to master right before a release. :-/ 22:27
<.< >.>
Gotta run.
dalek rrot: 1ec04f6 | benabik++ | runtime/parrot/library/postgres.pir:
postgres: Pass interp to Parrot_str_new

This was segfaulting because Parrot_str_new expects an interp, a buffer, and a length but we were only passing a buffer and length. The result was... not good. See gh-168 for gory details.
22:53 whiteknight joined
whiteknight how are we looking for the release? that test failure get sorted out? 22:58
23:01 jsut_ joined 23:08 benabik joined
benabik back. 23:13
whiteknight: I have a probable fix for it. Waiting for dukeleto to test. 23:14
whiteknight ok 23:18
dalek rrot: 7683718 | dukeleto++ | t/library/pg.t:
Todo a test failure that is blocking the release
23:24
benabik I guess it didn't fix it?