Parrot 2.8.0 released | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | smoke GC-related branches and attack GC tickets
Set by moderator on 1 October 2010.
dalek rrot: r49425 | plobsing++ | trunk (7 files):
probe for INFINITY and NAN macros provided by system headers

see TT #574
00:13
00:36 ruoso left
dalek rrot: r49426 | mikehh++ | trunk (6 files):
ran make headerizer, added missing PARROT_CAN_RETURN_NULL
00:59
rrot: r49427 | mikehh++ | trunk/config/auto/infnan.pm:
remove hard tabs
rrot: r49428 | mikehh++ | trunk/config/auto/infnan.pm:
remove more hard tabs (missed two)
01:03 PerlPilot joined 01:04 Util left 01:08 PerlJam left
dalek rrot: r49429 | nwellnhof++ | trunk (9 files):
[str] Prepare deprecation of string_* functions
01:30
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#403) fulltest) at r49428 - Kubuntu 10.10 RC amd64 (gcc-4.5 with --optimize)
mikehh needs a break - bbl 01:31
01:43 nwellnhof left 02:35 janus left 03:00 janus joined 03:31 dukeleto_ joined
ttbot Parrot trunk/ r49429 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/405193.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 03:39
03:41 eternaleye left 03:42 eternaleye joined
dukeleto_ that ttbot error is 'api.obj : error LNK2019: unresolved external symbol _floatval_divide_by_zero referenced in function _Parrot_str_to_num' 03:43
Coke partcl (old) now thinks that 1/3. is "0" instead of "0.33333". wonder when that happened. 04:54
05:34 dukeleto_ left
Coke blows another potentially productive hacking session tracking down a parrot issue. 05:48
Coke cries.
-> abed. 05:49
plobsing Coke: is it doing integer divide for some reason?
Coke at a guess, new_init_int doesn't respect HLL types. 05:52
which would be a huge problem. ;)
cotto aloha msg whiteknight Your fork of parrot-instrument doesn't build for me with the latest parrot. 05:53
aloha cotto: OK. I'll deliver the message.
plobsing how could new_init_int respect HLL types? it uses INTVAL which isn't a PMC and therefor cannot be overriden 05:55
Coke then we can't use it. 05:58
wait, what?
no, on the /creation/
not the actual int value. 05:59
the pmc type that is created is always Integer, not HLL_mapped(integer)
plobsing well of course. new_init_int asks for a specific class. If you want hll-mapped types, you should use box.
Coke GAHR>G 06:00
/I/ am not using anythign.
this is in src/pmc/integer.pmc, which I am extending.
the invocation of pmc_new_init_int is using type(SELF), which is probably wrong. I'm guessing that DYNSELF might be more appropriate. 06:02
hurm. dynself is no longer valid. 06:03
anyway, I'll leave this for someone else to fix. bedtime.
plobsing sounds like deep magic
Coke nope.
tcurtis Aren't vtables always dynamically dispatched? 06:04
plobsing tcurtis: STATICSELF.vtable_name bypasses dynamic dispatch in the name of expedience 06:05
cotto SELF is the new DYNSELF 06:06
tcurtis plobsing: ah. But, VTABLE_type(INTERP, SELF) doesn't, no?
dalek rrot: r49430 | plobsing++ | trunk/include/parrot/datatypes.h:
use has_header appropriately. should fix win32 build.
plobsing tcurtis: true. the VTABLE macros do dynamic dispatch. as does the SELF.vtable pmc2c syntax sugar 06:07
I'm just saying that not *all* dispatches to vtables are dynamic 06:08
PCC also plays fairly fast and loose with the inards of sublike objects
ttbot Parrot trunk/ r49430 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/405374.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 06:11
plobsing OK I really don't know how to fix that win32 build failure. I probe for a feature and provide implementations for both existant and non-existant cases. 06:15
windows decides to try to use both cases at the same time 06:16
06:23 tcurtis left 06:38 jsut joined 06:43 jsut_ left 07:14 theory left 07:21 Kulag left, Kulag joined 07:30 Kulag left 07:34 Kulag joined 07:41 eternaleye left 07:42 Drossel joined 07:43 Kulag left 07:46 eternaleye joined 07:53 Drossel left 07:54 Kulag joined 07:55 tadzik joined 07:59 Kulag left, Kulag joined 08:04 Drossel joined 08:06 Kulag left 08:13 Drossel left 08:15 PacoLinux left 08:17 Patterner left 08:35 Kulag joined 08:43 Kulag left 08:44 Kulag joined, mj41 left 08:45 Patterner joined 08:52 Kulag left 08:55 mj41 joined 09:01 pmichaud left 09:03 ash_ joined 09:05 davidfetter left 09:11 Kulag joined 09:19 Kulag left 09:22 Kulag joined 09:41 Kulag left 09:42 Kulag joined 10:00 ash_ left 10:07 Kulag left, Kulag joined 10:11 sjn left 10:12 sjn joined 10:22 Kulag left 10:25 Kulag joined, jsut_ joined 10:29 jsut left 10:33 Patterner left 10:37 Kulag left, Kulag joined 10:43 Kulag left 10:49 mikehh left 10:54 Kulag joined 10:57 Patterner joined 11:06 Kulag left 11:08 Kulag joined 11:11 Patterner left 11:29 Patterner joined 11:31 whiteknight joined 11:51 mikehh joined
whiteknight good morning, #parrot 11:58
mikehh hi whiteknight 12:19
BTW we still have a problem with the Windows build on Taptinder
12:29 mikehh left, mikehh joined 12:34 kid51 joined
whiteknight blargh 12:41
I love good news in the morning
kid51 good morning, whiteknight 12:47
whiteknight hello kid51. How are you today 12:50
?
kid51 I'm getting ready to go back to NYC
whiteknight oh, you're out west this weekend, aren't you? 12:52
kid51 No, I've been in Toronto since Wednesday. Out west is next week.
whiteknight ah, sorry. I am not good at remembering my own schedule, so there's no way I get yours correct 12:54
13:15 kid51 left 13:20 Patterner left 13:30 Psyche^ joined, Psyche^ is now known as Patterner 13:50 jan left 13:55 whiteknight left
Coke Infinoid++ 13:59
# svn-bisect
14:15 PacoLinux joined
Infinoid woohoo, free karma :) 14:35
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#414) fulltest) at r49430 - Ubuntu 10.10 RC amd64 (g++-4.5 with --optimize) 14:39
14:56 jan joined
cotto ~~ 15:13
15:29 ash_ joined 15:41 tadzik left 15:53 tadzik joined
mikehh plobsing: you around 16:02
16:11 davidfetter joined 16:18 AzureStone left
dalek rrot: r49431 | mikehh++ | trunk/src/datatypes.c:
change #ifdef to #ifndef (comes into play only if not defined) - this should fix the windows build
16:20
mikehh I think the last comment on TT #922 is spam 16:22
mikehh waiting patiently for TapTinder 16:26
mikehh I lie
16:33 AzureStone joined
plobsing mikehh: pong 16:41
mikehh plobsing: I think I fixed the Windows build problem in r49431, not sure - waiting on TapTinder 16:44
plobsing now that I've had some time to think about the problem, I think the problem is that I'm using #ifdef in stead of #if 16:45
but we'll see if your fix works 16:46
mikehh it never failed on the X86_64, just the i386 build
I thinkl it is related to the PARROT_HAS_INF_NAN test 16:47
plobsing maybe win64 has INFINITY and NAN defined in math.h
mikehh still waiting for the result - it has done the rest 16:49
plobsing maybe the machine gave up 16:51
16:52 M_o_C joined 16:53 dukeleto_ joined 17:15 AzureSto_ joined 17:17 AzureStone left
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#415) fulltest) at r49431 - Ubuntu 10.10 RC amd64 (gcc-4.5) 17:26
17:28 dukeleto_ left, dukeleto_ joined
mikehh bah TapTinder is still running the build for MSWin32/i386 (and the tests for cygwin/i386) 17:31
Great it build ok 17:36
plobsing yay. you fixed it! mikehh++ 17:37
mikehh plobsing: it took me a couple of hours to find it - a one letter change :-{ 17:41
plobsing: it's pretty obvious in retrospect, but those are the sort of things that take forever 17:42
it's called HINDsight :-} 17:43
17:50 patspam joined, patspam left 17:53 theory joined 18:08 tadzik left 18:09 tadzik joined 18:28 tadzik left
cotto mikehh, you would be the one to have that. ;) 18:35
mikehh you would be surprised how many people I have to tell that my name is prounced as in HINDsight NOT HINDia 18:42
cotto You could tell people your middle name is "B". 18:43
though that could have other unintended effects 18:44
mikehh he - it's H
cotto Sure, but "hehind" isn't a word.
mikehh could bring out the donkey in me 18:45
dalek rrot: r49432 | plobsing++ | trunk/src/scheduler.c:
process events on sleep start even if parrot doesn't have threads
19:09
19:25 ash__ joined 19:29 ash_ left, ash__ is now known as ash_ 19:30 theory left
nopaste "bluescreen" at 192.168.1.3 pasted "Can this patch be a possible fix for ticket #1769 (morph not working)" (22 lines) at nopaste.snit.ch/23943 19:32
plobsing that seems wrong to me. morphing should only work on things that have a well defined way to morph (eg: by setting up the vtable override) 19:37
bluescreen plobsing: you saying that objects should not morph? 19:40
plobsing not at all. the code right above your patch handles morphing on types that define how to do it. 19:41
morphing of types that don't know how seems like it would be doomed to failure 19:42
for one, the attributes would be completely jumbled 19:43
bluescreen agree, objects can may totally different from one to another
so then morph should throw an exception for objects that doesn't have an override 19:44
jnthn That patch is doomed to epic fail. 19:46
plobsing bluescreen: quite probably. alternatively, have a look at Parrot_pmc_reuse_by_class 19:47
jnthn Possibly morph to a super or subclass could be made to work.
Rakudo has an op for doing it int he subclass direction.
bluescreen jnthn: is the same thing coz subclasses can have different attribs 19:48
plobsing jnthn: that's more the job of the metamodel and is fully supported by adding a morph vtable override
jnthn bluescreen: importantly, ti's a sueprset.
plobsing: Oh, for sure it's the meta-model's task.
I didn't quite decide how to do it in 6model yet. 19:49
bluescreen plobsing: once the HLL created the new replacement ( morphed object) for an object how should it replace the pointer (PMC *) with the new one? 19:50
plobsing hmmm... I think it is doable, though I don't know how. 19:51
jnthn See rebless_subclass dynop in Rakudo's dynops for an example.
plobsing worst case, we define a become primitive in the GC 19:52
jnthn (I didn't say it was a good example. ;-))
Anyway, reblessing to subclass can be done, but it's pretty evil.
We use it in Rakudo to handle mix-ins.
Which can happen in-place. 19:53
GeJ Bonjour everyone.
plobsing jnthn: (re: rebless_subclass) my eyes! it cannot be unseen! 19:54
bluescreen I've banged my head with this as I want to support dynamic inheritance in my HLL, so I've to create a new class everytime parents change and migrate objects to the new class with 19:55
jnthn plobsing: lol! 19:57
plobsing bluescreen: I would suggest adding ".sub 'morph' :vtable('morph')" to the root class of your heirarchy 20:00
I'm not too sure how the implementation of that would look. It's probably doable though. 20:01
bluescreen jnthn: does the memmove really works? that looks dangerous too 20:03
20:03 davidfetter left
jnthn bluescreen: The trick is that you end up with as many PMCs around as before, just with different contents. 20:04
bluescreen: It "really works" in so far as it's used in Rakudo every time you do a mix-in though. :-) 20:05
plobsing it is dangerous. that pokes deep into parrot internals. it works with parrot now, but changes to the way GC manages PMC's/attributes/etc could break it.
maybe not likely, but possible
we might want to encapsulate part of that on the parrot side of things. that way, if we make such a change, it might be transparent to users. 20:07
bluescreen there should be an op to do that...
plobsing bluescreen: yes. I'm thinking along the lines of smalltalk's become
jnthn plobsing: Yes, it makes a lot of assumptions. 20:09
plobsing: Once Rakudo switches to its new meta-model implementation, it can go away.
plobsing jnthn: really? you won't have any need to change the representation of objects in-place anymore? 20:10
jnthn It's just the best I could come up with to work with Class/Object PMCs.
plobsing: I meant mroe than op will be able to go away. I'll still need to be able to do it, but I can put it in using some cleaner approach. 20:11
The really messy part that dynop is dealing with the case where we go PMC -> class.
That simply won't be an issue because the new meta-model doesn't support PMC inheritance.
bluescreen jnthn: are you going to have a rakudo's inheritance engine ? 20:12
plobsing "doesn't support PMC inheritance". does that objects passed to rakudo from other languages won't work, or that you can't extend parrot types from rakudo?
jnthn bluescreen: Inheritance is not a primitive in the core, it's just something implemented by a meta-class that's iterested in providing it. 20:13
plobsing: Passing objects from other languages should be fine - that's important to make work. 20:14
Inheriting from Parrot types - there won't be PMC inheritance support in a deep sense, *but* I expect it'll be possible to write a meta-class that does some delegation-y model. 20:15
The goal is to keep the core really small.
plobsing would it be possible to use 'rawpmc' as a different object representation? I think the docs mentioned something about being able to do something similar with GObj.
jnthn Yes, that would also work out. 20:16
I think we'll be able to build the compatibility bits people want.
bluescreen jnthn: my point is you might loose some low level optimizations like mro
plobsing cool. so its just a matter of providing a default that is more sane for more people.
bluescreen: low level optimizations that are NYI for years? 20:17
jnthn bluescreen: Actually I'm on course to get a bunch of optimizations possible that can't be done with the current Parrot object model. 20:18
20:18 tcurtis joined
bluescreen mmm, don't get me wrong, but shouldn't HLLs work towards extending parrot to fit more languages ? than reinvent the wheel? I mean whatever its holding P6 might hold other HLLs 20:23
plobsing bluescreen: every HLL has it's own idea of how objects work. many are similar, but none are identical. 20:26
ideally parrot should be providing a framework for them to cohabitate in stead of tryingn to provide an object system that is "good enough" for everyone
because it will never be good enough 20:27
20:27 whiteknight joined
bluescreen plobsing: then why bothering in creating an object model at all? if it will never be good enough and most HLLs will implement their-way 20:31
jnthn I think 6model offers some hope in that it provides a very minimal core and an API. 20:32
The core doesn't even know what a class is.
So it's fine for langauges to implement meta-objects that match the API and get their semantics.
bluescreen yeah in that case I'd move towards to a micro-core
plobsing bluescreen: because it gives people working in LLLs and MLLs an object system (which people tend to want) 20:33
PIR, nqp, and winxed users are (mostly) fine with parrot's default object system
jnthn Further, having *something* that's there out of the box is useful, even if languages end up customizing bits of it. 20:34
20:34 jsut_ left, jsut joined 20:39 dukeleto_ left 20:56 M_o_C left 21:00 PerlPilot left 21:15 tcurtis left 21:19 tcurtis joined, tcurtis left
sorear What's the most efficient way to write sub foo { bar; bar } in PIR? (I'm doing sub-call microbenchmarks on a few VMs) 21:20
plobsing is bar in the same unit as foo? 21:22
sorear yes 21:23
plobsing then you'd likely want to use static resolution ".const 'Sub' $P0 = 'bar'" 21:24
sorear then $P0() \\n $P() \\n .return \\n ? 21:25
plobsing yeah. there's probably some tricks you can pull by exploiting the null args and returns 21:28
sorear Too many errors. Correct some first. 21:38
2310 ns per call on the ladder benchmark, PIR 21:41
1240 for Perl 5 on the same hardware
r49277
plobsing show me teh codez 21:43
sorear gist.github.com/608979 # Perl 6 21:56
nopaste "sorear" at 192.168.1.3 pasted "# Perl 5" (32 lines) at nopaste.snit.ch/23945 21:57
21:58 whiteknight left
nopaste "sorear" at 192.168.1.3 pasted "# PIR" (276 lines) at nopaste.snit.ch/23946 21:58
plobsing hmmm... can't see anything off the level there 22:04
but your perl5 version should fail x0 DNE 22:06
GeJ cheater! 22:07
plobsing GeJ: care to elaborate?
GeJ anouncing numbers to make parrot look bad compared to Perl 5 while the Perl 5 is actually b0rked. That's cheating! 22:08
jnthn sorear: Your x1 calls x0 which is missing. I guess just a missed first line when copy/pasting. 22:10
plobsing seeing as the other examples do not include an x0, I'd say it's also an old version of the benchmark 22:11
sorear yes, the actual version of the p5 I used had sub x1 { } 22:16
I pasted the wrong file there ... (named 'x'. Yes, very descriptive.) 22:17
testing methodology: change the first function called up and down until at least 30 seconds used, then divide by the total number of calls 22:18
repeat twice and use second number
for Rakudo, I also did a very-low-level run to measure startup overhead (4.3 sec here), and subtracted that
the other systems measured had startup overhead <= 0.5 seconds and no attempt at correction was made 22:19
plobsing 1090518910/14136321143 22:24
aloha: 1090518910/14136321143 22:25
arg
anyways, what I'm trying to get at is that Sub.invoke takes 7.7% of that time (non-inclusive) 22:26
seems kinda heavy
GeJ how about tailcall'ing the second call of $P0 ? ( technically, the Perl 5 version returns the result of the second call to xN() ) 22:30
plobsing GeJ: then you'd have to tailcall in perl5 to be fair 22:31
GeJ hum, true. 22:32
plobsing but I doubt it would buy much. the only thing it would do is free up some garbage sooner
sorear plobsing: Only 7.7%? I created that benchmark to isolate the cost of my Sub.invoke equivalent 22:40
nopaste "plobsing" at 192.168.1.3 pasted "sorearbench callgrind (non-inclusive)" (72 lines) at nopaste.snit.ch/23948 22:42
sorear (it wasn't originally going to be run on Parrot at all; this was a curiousity move)
plobsing like I said, that's non-inclusive cost. other costs like allocating and populating contexts fall under that 22:43
sorear oh. exclusive time.
plobsing that's why I think it is a little on the heavy side of things. we might want to take steps to reduce that somehow. 22:46
22:56 particle joined, dukelet0 joined 22:59 particle1 left 23:00 whiteknight joined
whiteknight my kid is going to think his name is "goddamnit" for the first few years 23:01
it's probably the most common thing that we say to him 23:02
cotto whiteknight, ping 23:11
whiteknight pong
cotto what version of parrot were you using with the instrument code?
whiteknight I thought it was 2.8.0 23:18
it may have been shortly after that
cotto tries with 2.8.0 23:19
23:20 jsut_ joined
cotto Looks like the symlink to the latest dev release is out of date. 23:21
cotto fixes 23:22
whiteknight it may have been a weird problem on my machine 23:23
I never rule that possibility out
23:25 jsut left
whiteknight I don't have my normal dev box right now, so nothing is reliable 23:30
cotto It comes closer to building but doesn't quite get there with 2.8.0.
relatively easy fix 23:33