Parrot 0.6.0 "P&P" released | Please mentor for SoC | parrotcode.org/ | YAPC::NA talks deadline is Mar 31 | tinyurl.com/2pmnlq
Set by moderator on 18 March 2008.
kid51 guru ping 00:00
guru here 00:05
kid51 I spotted the line you reported in your patch, but I figured I'd let it slide. I haven't yet figured out how best to handle situations where there's a long line starting with =item * 00:06
Since that PDD is still just a draft, we don't have to be as strict. 00:08
But thanks for running the test! 00:09
pmichaud anyone planning to stick around post-yapc::na? 00:17
kid51 Am planning to be there weekend *before*, but don't have enough vacation days to stay Thu-Fri. 00:18
davidfetter still trying to figure out whether he's going
pmichaud I expect to be there Sat around noon (flying to Midway on Sat morning)
so I'll be there Sat afternoon and all day sunday
but I'm planning out my return flight
davidfetter is midway better for conference access than ORD? 00:19
pmichaud well, I'm flying southwest, so yes :-)
kid51 No significant difference.
davidfetter omg
pmichaud Personally I like midway better than ord
either way just take the train to the conference
davidfetter i used to fly southwest, but no more
kid51 And either way involves 1 transfer on the El
davidfetter turns out they were suborning people pretty high up in the faa not to notice the safety checks they were skipping 00:20
kid51 hopes they finished doing all those repairs on the Blue Line out near ORD
pmichaud well, given that american and united have been also grounding flights this past week for similar reasons, I find it hard to single out swa :-)
davidfetter i don't think either one of those outfits was actively bribing people high up in faa 00:21
pmichaud I haven't seen anything about bribes with swa
and we'd hear about it here, since I'm in their home city (Dallas)
davidfetter www.denverpost.com/headlines/ci_8815970 <-- sample
pmichaud there's nothing there that indicates that southwest was bribing people 00:22
davidfetter thinks it should be a felony to apply for a job in an industry you've regulated 00:23
and another to hire
we're talking class 1, general population, soap-on-a-rope felonies here, not country club 00:24
pmichaud that may be the case... but still I think the fault lies with the faa folks on this one. I've heard that swa was encouraged by the faa officers involved that it would be okay to keep flying the planes. (But I'd need to double-check that.) 00:25
the faa has a habit of viewing itself in partnership with the airlines (as the denverpost article you just mentioned says)
davidfetter i'm curious how one might distinguish "bribe" from "you'll have a cushy job with a fat salary when you retire from swa"
er, from faa*
faa acquired this habit pretty recently. they used to be (and should go back to being, imnsho) an adversarial relationship :P 00:26
pmichaud yes, all of the articles I've read seem to indicate that it was pressure from faa managers that resulted in the lapses. And that it's not limited to SWA. 00:30
but back to my original q: I guess wednesday night return would be okay? 00:31
davidfetter heh. sorry about that.
kid51 Only drawback to that: You'd miss the Speaker's Party (assuming you're going to be a speaker).
pmichaud oh yeah 00:32
speaker's party would be worthwhile
okay, thursday.
purl I never could get the hang of thursdays.
pmichaud speaker's party was worthwhile in 2006, definitely
kid51 Yes, chez jmcadams. But he's moved from there since then.
pmichaud good fares on thursday, too :-) 00:33
kid51 gotta go
purl EXCUSE ME, I HAVE TO GO WASH MY COMPUTER
kid51 purl goodnight 00:34
purl goodnight, sweet prince, may flights of angels sing thee to thy rest. now bugger off, kid51.
kid51 What can I say after that?
00:37 paula35 joined
dalek r26793 | infinoid++ | trunk: 01:35
: [include] Apply C++ correctness patch from Senaka Fernando in RT#52500. Senaka++
diff: www.parrotvm.org/svn/parrot/revision?rev=26793
Infinoid karma c 01:39
purl c has karma of 6833
Infinoid karma (c++)
purl (c++) has karma of -2
Infinoid (c++)--
dalek r26794 | chromatic++ | trunk: 01:45
: [Pheme] Ported from PAST-pm to PCT (Bernhard Schmalhofer, RT #52498).
diff: www.parrotvm.org/svn/parrot/revision?rev=26794
02:03 guru left
cotto_home Infinoid: ping 02:12
Infinoid cotto_home: hi! 02:13
cotto_home t/codingstd/cppcomments.t reports itself as looking for cuddled elses instead of c++-style comments 02:14
Infinoid heh, oops.
thanks! 02:16
dalek r26795 | infinoid++ | trunk:
: [codingstd] Oops. c_cppcomments.t should report itself as checking
: cppcomments, not cuddled elses. cotto++
diff: www.parrotvm.org/svn/parrot/revision?rev=26795
cotto_home thanks!
02:20 particl1 joined 02:28 rdice joined 02:31 kid51 joined
Infinoid overhauls ops2c to calculate all the necessary values *before* printing anything, to make rearranging the output easier 02:47
kid51: are you available for some non-linux patch testing? 02:56
tetragon Infinoid: I'm not kid51, but I'm also on darwin 02:59
Infinoid great! 03:00
nopaste "Infinoid" at 75.5.247.47 pasted "break ops2c completely" (132 lines) at nopaste.snit.ch/12628
Infinoid after applying that, please rm src/ops/*.c and rebuild and test
this gets me one step closer to building with g++, and doesn't seem to break gcc here 03:01
kid51 Infinoid: Note that if you're overhauling ops2c.pl, you'll have to overhaul t/tools/ops2cutils/*.t as well. 03:06
03:06 anna30 joined
Infinoid would be too easy otherwise... 03:06
this is a first hack, but I still don't understand this code very well... think it can use some more love. 03:07
kid51 If you think it's ugly now, you should have seen it before I got my hands on it. 03:08
It was probably a 1000+ line script -- completely untested.
Infinoid kid51++
kid51 In order to render it testable, I had to try to decompose it into reasonable subroutines.
Infinoid I'm trying to make it a bit more MVC-y 03:09
kid51 I'd encourage you, before you get in too deep, to look at those tests files.
Infinoid g++ chokes on ops2c's output, with an error about "static op_lib_t core_op_lib" being defined twice. because it is. so that's my motivation 03:10
I will check out the tests, thanks
kid51 Since the test coverage is very high, you can rest assure that if you change something and the tests fail, that you've broken something, which means you can/should proceed in small steps.
Infinoid ... other than the fact that the output is in a completely different order now 03:11
kid51 In writing those tests, I was, in effect, "working around" the C code found in all those heredocs. I left all the C code completely as it was and focused on refactoring/testing the Perl 5.
Infinoid I might back up a step, because this does need some QA
I hate the thought of breaking platforms I don't have 03:12
kid51 I worked on that > 1 year ago, so my memory is hazy, but IIRC I organized the subroutines around the various 'print' statements that existed in the previous (non-modularized) tools/build/ops2c.pl. 03:13
Infinoid amazingly, t/tools/ops2cutils still passes. 03:14
tetragon So, any requests as to which test scripts to run first?
Infinoid tetragon: I think if it built, I'm doing well
tetragon So far I've only seen the usual crashes
And t/tools/ops2cutils still passes here 03:15
kid51 Infinoid: If, so far, your changes have all been *within* the subs in Ops2c.pm, then, yes, the tests should continue to pass (at least mostly). It's when you start ripping the public methods apart that you'll have problems. 03:16
Infinoid I haven't changed the API, I've just changed the order in which things are done
the code likes to manipulate values in $self within the print() functions, which made it hard to move things around
kid51 I have to get to bed, but if you want to send mail or post an RT outlining your battle plan, I'd be happy to take a look tomorrow.
Infinoid so far when I've found that kind of thing, I just moved it to the bottom of new()
ideally, all values should be calculated beforehand and the rest of it should be output-only, to make it easy to do what I'm doing now 03:17
I'll post it to RT, thanks
tetragon++ # thanks for the testing! 03:18
kid51 cet. par., I like the idea of accumulating all your values, then printing from them. That, in general, is the way that the configuration step classes work -- and where they still do not I intend to refactor them. It's just that ops2c.pl wasn't written that way originally.
Infinoid yeah, ops2c has obviously been an iterative development process :) 03:19
kid51 good night
purl sleep well too
tetragon Hrm, I'm getting two similar but vastly different stack traces for my t/stm/runtime.t test 4 crash 03:21
When I have no error message before the crash, my logs give me traces for two threads 03:22
When I get a single error message, I get a single thread in the log, where that trace is the same as for thread 0 of the two thread log 03:23
Infinoid that's marked as a TODO test, here
tetragon I know
Infinoid sounds racey
tetragon And once in a blue moon, it doesn't crash
It just prints two error messages
(I'm not including Darwin's "Bus Error" in the error message count) 03:24
Infinoid msg kid51 My ops2c patch is rt.perl.org/rt3/Ticket/Display.html?id=52506 03:30
purl Message for kid51 stored.
Infinoid hmm. 03:52
src/builtin.c:145: error: declaration of 'int find_builtin(const char*)' throws different exceptions
src/builtin.c:100: error: from previous declaration 'int find_builtin(const char*) throw ()'
(there's nothing about throwing on line 100)
have I mentioned (c++)-- ?
dalek r26796 | infinoid++ | trunk: 04:07
: [gc] Fix 64-bit platform warning:
: src/gc/gc_ims.c:854: warning: cast to pointer from integer of different size
diff: www.parrotvm.org/svn/parrot/revision?rev=26796
r26797 | infinoid++ | trunk: 04:12
: [pmc] Fix warning:
: ./src/pmc/task.pmc: In function 'Parrot_Task_init_pmc':
: ./src/pmc/task.pmc:174: warning: assignment from incompatible pointer type
diff: www.parrotvm.org/svn/parrot/revision?rev=26797
r26798 | infinoid++ | trunk: 04:17
: [imcc] Fix warning:
: compilers/imcc/optimizer.c:1629: warning: 'is_ins_save' defined but not used
diff: www.parrotvm.org/svn/parrot/revision?rev=26798
r26799 | infinoid++ | trunk: 04:19
: [imcc] Fix warning:
: compilers/imcc/pbc.c:187: warning: 'old_blocks' declared 'static' but never defined
diff: www.parrotvm.org/svn/parrot/revision?rev=26799
Infinoid ever since I was given this jar of blackberry jam, my bread intake has doubled. 04:25
msg wknight8111 (re: #51980) I closed out this ticket, because the two snprintf options are indeed distinct and should be merged. I think you mentioned some warnings on win32, but I can't remember what they were. Please post them to the ticket? 04:36
purl Message for wknight8111 stored.
Infinoid msg wknight8111 Should *not* be merged, rather. I'm up too late.
purl Message for wknight8111 stored.
Infinoid goodnight
purl goodnight, sweet prince, may flights of angels sing thee to thy rest. now bugger off, Infinoid.
04:52 Theory joined 05:14 jjore joined
cotto_home goodnight 05:39
purl goodnight, sweet prince, may flights of angels sing thee to thy rest. now bugger off, cotto_home.
cotto_home purl, forget goodnight
purl cotto_home: I forgot goodnight
cotto_home goodnight
dalek r26800 | chromatic++ | trunk: 05:52
: [src] Minor cleanups and reformattings.
diff: www.parrotvm.org/svn/parrot/revision?rev=26800
06:07 Senaka joined
Senaka is Parrot_dod_clear_live_bits arena based or is it a total wipe-out? 06:07
06:32 Andy joined
Senaka ping everybody 06:47
purl I can't find everybody in the DNS.
Senaka hello everybody
purl Hello Dr. Nick!
Senaka is Parrot_dod_clear_live_bits arena based or is it a total wipe-out? 06:48
06:57 Senaka left 07:05 iblechbot joined 07:22 AndyA joined 07:48 Senaka joined
Senaka seen chromatic 07:49
purl chromatic was last seen on #parrot 1 day and 2 hours ago, saying: Or jonathan. [Apr 4 22:49:14 2008]
Senaka seen Allison
purl Allison was last seen on #parrot 4 days and 12 hours ago, saying: Infinoid: it's not currently spec'd. In fact, we're not planning to implement a compacting or copying collector until after 1.0 [Apr 1 12:41:04 2008]
Senaka oops
seen Infinoid 07:50
purl Infinoid was last seen on purl 3 hours and 4 minutes ago, saying: <private message>
Senaka seen Jonathan 07:51
purl Jonathan was last seen on #parrot 14 hours and 33 minutes ago, saying: I thought the .c extension triggers this?
Senaka seen lathos
purl lathos was last seen on #parrot 2 days and 18 hours ago, saying: For that you may want the concurrency PDD. That's another one worth staying away from. [Apr 3 06:26:49 2008]
Senaka seems that no one is arnd :(
07:58 Senaka joined 08:05 Senaka left 08:54 iblechbot joined
dalek r26801 | fperrad++ | trunk: 09:07
: [readline]
: - fix configure on MinGW32
diff: www.parrotvm.org/svn/parrot/revision?rev=26801
09:21 Senaka joined
Senaka anyone knows about copy-on-write usage? 09:22
09:49 barney joined
dalek r26802 | jonathan++ | trunk: 09:56
: [core] Make Integer and Float PMCs handle somewhat better when subclassed by a high level object.
diff: www.parrotvm.org/svn/parrot/revision?rev=26802
10:04 AndyA joined 10:13 AndyA joined 10:40 Senaka left
dalek r26803 | bernhard++ | trunk: 10:45
: [coding_std]
: Satisfy c_operator.t
diff: www.parrotvm.org/svn/parrot/revision?rev=26803
11:29 Senaka joined
dalek r26804 | bernhard++ | trunk: 11:55
: #50596: [PATCH][PCT] Add basic "tests"
: Apply patch from aparker42@gmail.com with some tweaks.
: 'svn move' t/compilers/past-pm/*.t' in order to preserve history.
: Load 'dumper.pbc' as 'Dumper.pbc' was not found.
diff: www.parrotvm.org/svn/parrot/revision?rev=26804
11:58 rdice joined 12:04 Senaka joined
Senaka what is Parrot_dod_free_pmc for? 12:05
have you got to explicitly say what to free?
barney Senaka: Sorry, I never dug into GC 12:20
dalek r26805 | bernhard++ | trunk: 12:32
: Give credit to Andrew Parker.
diff: www.parrotvm.org/svn/parrot/revision?rev=26805
12:42 kid51 joined
dalek r26806 | infinoid++ | trunk: 13:18
: [src] Apply C++ correctness patch from RT #52510. Senaka++
diff: www.parrotvm.org/svn/parrot/revision?rev=26806
kid51 Infinoid: Have begun looking at the ops2c patch. This might be a good candidate for starting a new SVN branch in which to do revisions -- particularly if changes to the tests are needed. 13:20
Infinoid ok. what's the goal? 13:21
purl the goal is to announce a boostrapped perl6 one way or another in YAPC::NA :)
kid51 purl: I think we've already achieved that goal.
purl kid51: sorry...
Infinoid I'm happy to work on refacting ops2c further, but it helps me to know when to stop :) 13:22
kid51 Since ops2c.pl is invoked very early in the 'make' process, any errors we make have big effects downstream. So this limits potential damage to others working in trunk. 13:23
This wouldn't have to be a long-lived branch, but it would permit all (3) interested to work on it without bothering others. 13:24
Infinoid sounds reasonable
kid51 It's what I did when I refactored this script originally -- but I'll let you make the call. 13:25
Infinoid please go ahead and make the branch
kid51 k
Infinoid I guess my first step would be to document Ops2c::Utils, because I'm unlikely to understand the code otherwise. 13:26
kid51 Call: svn co svn.perl.org/parrot/branches/ops2c 13:27
dalek r26807 | jkeenan++ | ops2c:
: Creating ops2c in svn.perl.org/parrot/branches
diff: www.parrotvm.org/svn/parrot/revision?rev=26807
r26808 | jkeenan++ | ops2c-26806:
: Tagging trunk at r26806 so that the ops2c can later be synched to it.
diff: www.parrotvm.org/svn/parrot/revision?rev=26808
kid51 Ah, this dalek bot fellow performs much better than svnbotl did in this usage. 13:28
dalek++
rotty seen barney
purl barney was last seen on #parrot 1 hour and 9 minutes ago, saying: Senaka: Sorry, I never dug into GC
Infinoid exterminate all humans 13:29
I think svnbotl ignored all changes to tags/, only reporting changes to trunk and branches 13:31
this one isn't so discerning.
kid51 I don't mind that. Tags don't change very often. But in this circumstance, svnbotl would puke at the large number of files being created/modified and go off-line for 10-15 minutes. 13:32
Fixing it to ignore tags would probably be a snap, but might not be worth the effort. 13:33
kid51 applies Infinoid's patch to Ops2c.pm in ops2c branch and runs tests with Devel::Cover
All tests in t/tools/ops2cutils/*.t continue to pass. Coverage actually improves slightly: lib/Parrot/Ops2c/Utils.pm 99.2 86.1 100.0 100.0 13:37
Infinoid maybe I reduced the number of conditionals slightly. *shrug*
kid51 Re-reading the POD in Parrot::Ops2c::Utils, I see that I had to write an FAQ to explain some of its arcane aspects. 13:41
The most unusual/annoying aspect of it was the closing of a filehandle and its subsequent reopening. I've never seen that in any other Perl program.
Infinoid I can see why you'd be so enthusiastic about refactoring it. 13:42
dalek r26809 | jkeenan++ | ops2c: 13:46
: Applying Mark Gline's 20080405 patch in
: rt.perl.org/rt3/Ticket/Display.html?id=52506. Refactoring of several
: internal subs in Parrot::Ops2c::Utils.
diff: www.parrotvm.org/svn/parrot/revision?rev=26809
Coke wakes up. 13:57
dalek r26810 | jonathan++ | trunk: 13:58
: [core] Make scalar PMC (and things inheriting from it) work better when inherited from by high level classes.
diff: www.parrotvm.org/svn/parrot/revision?rev=26810
r26811 | jonathan++ | trunk: 14:01
: [core] Some of the key handling code blindly assumed what it was being passed was a key. Add some checks for this. Before, the fact that you passed an Integer PMC into there and it would do something sensible (as happens with array access) was pretty much blind luck. This change lets languages that have different integer types that maybe use flags or pmc_ext have their arrays work.
diff: www.parrotvm.org/svn/parrot/revision?rev=26811
14:27 paco joined 14:33 Senaka joined
Senaka seen Infinoid 14:34
purl Infinoid was last seen on #parrot 51 minutes and 48 seconds ago, saying: I can see why you'd be so enthusiastic about refactoring it.
Senaka seen Jonathan
purl Jonathan was last seen on #parrot 21 hours and 16 minutes ago, saying: I thought the .c extension triggers this?
Senaka jonathan: ping
infinoid: ping
I need to know few things regarding the GC. Is anyone around? 14:35
dalek r26812 | pmichaud++ | trunk: 14:37
: [rakudo]:
: * Fix 3e4 parsing bug (RT#49910).
diff: www.parrotvm.org/svn/parrot/revision?rev=26812
jonathan Senaka: hi 14:38
Senaka hi
jonathan What do you need to know? I'll answer if I can...
Senaka k thanks
first of all have you got to call methods such as, Parrot_dod_free_pmc? Isn't the GC supposed to internally manage these? 14:39
jonathan No, those should just be called by the GC itself. 14:40
Senaka next is that, as it seems from the exposed interface, the GC is un-aware of object allocations? If not, the interface seems to be distributed beyond the header dod.h
jonathan Allocations are out of arenas.
I think it's maybe memory.c that deals with some of that. 14:41
Senaka so isn't the GC informed saying... I'm picking space from you?
Infinoid maybe the GC works that out after the fact, during the next sweep 14:42
jonathan Right.
It goes through the arenas that are allocated.
Senaka you mean the allocation?
jonathan No, the GC.
Senaka yes
jonathan The allocation is done out of these arenas.
Senaka :)
Infinoid the GC discovers the allocation after it's already happened
Senaka I meant the discovery rather
ok but is this inline with normal GC operations? 14:43
ex:- say I allocate large chunks so rapidly
and free them almost instantly
Infinoid so, the "sweep" phase discovers a lot of newly allocated blocks
or doesn't :)
Senaka sweep isn't called that often isn't it?
and the GC being stop-the-world I don't think so 14:44
Infinoid or the mark phase
Senaka am I missing something here?
jonathan sweep is called either explicitly from the bytecode using the sweep instruction, or on an allocation when all arenas are full.
Infinoid still learning the terminology
Senaka "or on an allocation when all arenas are full."
where is the code that figures this out?
grepping didn't get me any clue... :( 14:45
jonathan src/gc/memory.c I think
oh no, not there
src/gc/smallobject.c 14:46
That one.
Senaka cool
found it
what's get free object doing? do you reuse dead PMCs? 14:47
hmm seems...
purl seems? I know not seems.
Infinoid it'll reuse the buffer from them, sure 14:48
skids While everyone's talking about GC, how is the GC going to handle an embedded C library that does it's own allocs -- will it take hints from the shim code that does the embedding, or just let that all play off in a corner on its own?
Senaka malloc can be wrapped right? 14:49
jonathan The GC only cares about objects allocated out of its memory pools.
Infinoid stuff allocated outside the arenas can fend for itself
jonathan Right.
Senaka yes that's legal
new question 14:50
where would such objects lie?
Infinoid you're asking where PObjs are stored?
Senaka Infinoid: stuff allocated outside the arenas can fend for itself
doesn't the Arenas span the heap space? 14:51
Infinoid oh. that'd end up wherever malloc decides to put it, which is platform-specific
Senaka I see
jonathan The areans hang off struct Arenas *arena_base; in Parrot_Interp structure (interpreter.h)
skids assumes if a PDC references into such an allocation there is a way to tell the pointer apart from a GC-controlled buffer object? 14:52
Infinoid skids: it wouldn't be pointing into an arena's memory range
Senaka so ok... Now since allocations are handled by Arenas the GC will have to rather seek locations of such allocations
perhaps scan a list
on Harmony, the allocation would happen through the GC rather 14:53
so will have to work on some wrapper perhaps
or are their some callbacks etc.?
Infinoid Senaka: Harmony can service the calls parrot makes into smallobject.c, right? 14:54
you wrap those, I mean
are you talking about object allocation, or arena allocation?
Senaka object
Infinoid ok. so yeah. parrot calls gc_ms_get_free_object (or whatever), your wrapper calls the appropriate Harmony function, and Harmony gives us a newly allocated buffer 14:56
right?
skids So when reading the new PDD I did think of a potential "confounding case" surrounding the "buffers never point to PDDs" thing -- a parrot-native trie data structure would have trouble with that, given that "keys" and "values" (the latter pointers to PDDs) are stored in the trie. 14:57
(and having a mapping table of values to PDDs would take extra space, defeating the purpose of a trie)
Infinoid PDDs? PMCs?
diakopter kid51: you around?
kid51 Yes 14:58
Senaka newly allocated buffer ... chunk of memory rather
skids Infiniod: right, sorry, still learning to squawk right. :-)
Senaka well, may be we'll have to address PMC allocations and buffer allocations separately is it? 14:59
Infinoid I was under the impression that PMCs resided within buffers
Senaka hmm buffer is inside PMC ain't it?
diakopter kid51: how goes the TAP::Harness refactoring of t/harness? I'm volunteering the rest of my day today to set up a build farm, using whichever (smolder/pgbuildfarm) build farm orchestration we decide(d) on.
Senaka that's what I was thinking
diakopter I have 400GB of disk and 3072MB of ram and VMWare Server 2.0 beta2 on amd64 to devote to the project. 15:00
skids from PDD: "Parrot really has two independent GC models, one used for objects (PMCs) and
the other used for buffers (including strings). The core difference is that
buffers cannot contain other buffers, so incremental marking is unnecessary."
Senaka diakopter: that's one good box 15:01
kid51 It'
Senaka skids: yes it says so
Infinoid that makes sense. there's some confusion over the definition of "buffer"
PMCs are PObjs
kid51 It's been rather dormant. But I have to eat breakfast now, so let me get back to you in a while.
Senaka buffer is like any free space?
Infinoid your "trie" data structure is a PMC, which points to other PMCs
data buffers (strings and so forth) are allocated from a different pool, I guess 15:02
Senaka yes
two arenas
pdd09
says so
skids Infinoid: internally it has to point to other buffers -- every node in the trie being a PMC would not allow for a compact trie, too much overhead. 15:03
diakopter begins creating oodles of VMs. 15:04
Senaka ok, now there's another concept of movability of buffers
so I believe that a buffer == raw chunk of memory 15:05
isn't it?
skids (mainly I came by this quandry when pondering fixed-type-hashes-as-tries and libjudy, but if it turns out that regexps can do double duty as efficient DFAs that might be better than a trie implementation)
Infinoid Senaka: in this case, "buffer" has the specific meaning of "chunk of memory allocated from the 'buffer' arena, used for raw data and not for PMCs" 15:06
Senaka Infinoid: yes 15:07
skids e.g. adding a pair to a "trie" is $regexp = regexp { $regexp | $pair }, and dumping the trie uses the :e adverb.
Senaka so I think I got it right here
Infinoid ok :)
Senaka so well that seems sorted and perhaps might be too early to decide on what could be done 15:08
what could be done further
what needs some attention is how the GC discovers the allocation? 15:10
Infinoid isn't that what the whole mark & sweep thing does? 15:12
Senaka hmm... well ok
let me put it like this 15:13
in Harmony, when you allocate, the GC can be made aware of the process, so that it will Garbage collect if the memory is exhausted
how does Parrot do that?
smallobject.c doesn't say much on this fact 15:15
Infinoid are you talking about the need to allocate more arenas, or the need to exert memory pressure because the system is out of RAM and malloc failed? 15:16
Senaka like, isn't it required that the GC running in some situations where there is no contiguous blocks of memory 15:17
at least in the arenas for buffers
Infinoid sure, so it allocates a new arena and adds it to the list
Senaka new arena? 15:18
I think you didn't get me
say that I want to allocate in a given arena. But it is nearly full. freespace is scattered. Now when I call alloc, should the GC get called too so that it can make space for me? 15:19
Infinoid alloc is a gc function, so the gc is called
if the arena is out of free objects, it needs to either call malloc() to get another arena, or realloc() to expand an existing one, right? 15:20
Senaka hmm ok
well in the case of PMCs yes
in the case of buffers not always
you can compact ain't it? 15:21
Infinoid if you find all the pointers pointing to those buffers, and fix them all up, and prevent contention from other threads, you can move things around, yes
I don't think we do that at the moment.
Senaka aha 15:22
that's what I was searching I guess
:)
diakopter on which OSes/architectures do folks want to see parrot smoked nightly
Infinoid this is where we start talking about bounce pointers or backreferences or read barriers, and people's eyes start glazing over 15:23
Senaka ok seems sorted
next issue is regarding Copy-on-write 15:24
Harmony doesn't support this
is COW mandatory?
Infinoid COW is a memory optimization. you could just copy immediately, at the expense of extra memory usage 15:25
and extra processing overhead
I don't know how big an effect it would have. (I've seen instances where the effect would be huge, but I don't have any real world stats.) 15:26
Senaka ok 15:27
so perhaps it is not a key requirement isn't it?
Infinoid it is not mandatory 15:28
its just a nice hack, where it's available.
Senaka k cool
Now I have just a few left to sort out Parrot_dod_trace_ methods are some 15:29
Infinoid we'll probably have to fix up some code which expects to set the PObj_COW_FLAG bit and borrow another object's pointers, but that's all
Senaka hmm 15:30
15:32 jan joined, tetragon joined
Senaka Parrot_dod_trace_roots will mark all live objects isn't it? 15:35
Infinoid looks like it 15:36
trace_system_areas() is interesting, traces the current thread's stack 15:37
Senaka that's thread stack enumeration
:)
Infinoid ./breakfast & 15:39
Senaka ok 15:40
any thoughts on pinning objects? 15:49
kid51 diakopter: Broadly speaking, there are two big problems with our smoke testing: 15:54
* Limited scope of platform/OS/C-compiler combinations from which smokes are being submitted.
* Badly designed software which refuses to accept valid smoke reports but does allow people to post raw HTML directly to our servers.
Obtaining a big server with plenty of VMs helps with the first problem, but not necessarily the second.
I started to refactor the various components:
* t/harness
* lib/Parrot/Harness/Smoke.pm
* tools/util/smokeserv-client.pl
* tools/util/smokeserv-server.pl
But ran into several obstacles:
* Parrot::Harness::Smoke require-s two obsolescent CPAN modules, Test::TAP::HTMLMatrix and Test::TAP::Model::Visual -- and then overwrites a key sub from Test::TAP::Model. Very much a hack.
* Trying out changes in our smoke setup requires coordination with perl.org webmasters, which, understandably, cannot be a high priority on their schedules.
* Coke wanted us to consider Smolder, Tinderbox, etc. The latter did not seem appropriate for our needs; the former is poorly documented.
My hope was to refactor the 4 files above so that I could run a test smoke server on my own server and then:
* Have t/harness and Smoke.pm generate a data file -- rather than a fully CSS-ed HTML file -- which would be sent by client.pl to a server of anyone's choice, which would then transform the data into HTML (or any other reporting medium).
* Use this set up for fine-tuning and debugging.
And that's where things have stood since Jan 23.
.eor
Infinoid Senaka: apparently not 16:02
Senaka Ok 16:04
and is it possible to force GC?
yes I think 16:05
since the interface is exposed
Infinoid yeah, there's a pasm op for that 16:06
t/op/gc.t tests it
Senaka what the op?
purl it has been said that the op is an opcode structure. It's the thing that perl -Dx prints
pmichaud collect
svn.perl.org/parrot/trunk/docs/ops/core.pod 16:07
Infinoid purl, forget the op
purl Infinoid: I forgot op
pmichaud oops, nm -- that one isn't in the repo
Senaka :)
yeah 404
pmichaud svn.perl.org/parrot/trunk/src/ops/core.ops 16:08
look for <collect>
Senaka found it on the machine
svn.perl.org/parrot/trunk/docs/ops/core.pod
srry
/usr/local/share/doc/parrot/docs/ops/core.pod
pmichaud right... docs/ops/core.pod gets generated from src/ops/core.ops
afk, lunch
Senaka got it Parrot_go_collect 16:11
in parrot/resources
also, can you time the GC operations? 16:12
16:12 Limbic_Region joined
diakopter kid51: I have a VPS which can host another smoke server, if necessary, helping the 2nd problem. Which smoke system do you want to use? Smolder? 16:15
16:16 iblechbot joined
kid51 I know very little about Smolder. When I went to its sourceforge sites, I couldn't find much documentation. So I wasn't in a position to explore it. If you are familiar with it and can get a prototype up and running, then go for it. 16:18
Would Smolder both run the smoke tests and display the results? 16:19
Or would it simply receive reports generated by average Parrot users and display them? 16:20
Or some combination of the two?
diakopter looks at buildbot.eigenstate.net:8040/ 16:21
I guess there is www.perlfoundation.org/parrot/index.cgi?buildbot 16:24
does anyone know anything about that?
kid51 This page is mostly my musings: www.perlfoundation.org/parrot/index...ke_reports 16:26
shorten kid51's url is at xrl.us/biy53
kid51 www.perlfoundation.org/parrot/index.cgi?buildbot is Matisse Enzer's description of that which you were looking at at eigenstate.net 16:27
Both pages were last updated in January of this year.
diakopter kid51: do you still think storing test results by testfile.t is the right way to go? (I'm not challenging it; just curious) 16:30
dalek r26813 | jonathan++ | trunk: 16:34
: [rakudo] Start refactoring the type hierarchy somewhat. Add the Any type and make types such as Int, Num and so forth lie beneath this - basically, all but Junction. This should allow us to get MMD and Junctions working with Any as the default parameter type. Additionally, it means we can start making classes do various roles, like Positional. Due to what appears to be a Parrot bug, the vartype storage doesn't seem to get inherited in classes that also inhe
diff: www.parrotvm.org/svn/parrot/revision?rev=26813
diakopter kid51: I think I'll set these up merely to run 'make smoke' and not try to solve other problems. What OSes/architectures do you suggest I create as VMs? I was going to do: 32- and 64-bit Windows 2003/2008 on cygwin, strawberry, and msvc++ (12 Windows VMs), and 32- and 64-bit DebianSid/Centos5.1. any other suggestions? 16:38
kid51 diakopter: In debugging test failures, t would be useful for me to say, "At what point did this test start to fail?" That would seem to require a data structure where the fundamental unit is the individual .t file.
Which is what it in effect is right now ... except that the data is not searchable because it's all hard-coded in HTML files.
Those are excellent starting points. We don't get many reports from Windows in general, and we would benefit from regular periodic smoking on the various C compilers people use on Windows. 16:41
16:41 Senaka left
kid51 Some people get consistently smooth builds on Windows; others experience horrible failures. But we don't have enough data to spot patterns. 16:41
It would be good to add a "diakopter's battle plan" section to xrl.us/biy53 16:43
Infinoid wow, Ops2c::Utils->_reset_line_number() is silly. a simple seek(0, 0) would work much more nicely. 16:44
kid51 Feel free to refactor away! As I said earlier, that's the way the code was before I started with it, and not breaking anything was my biggest concern. 16:45
But in a branch, you can break as much as you want ;-)
Infinoid \\o/ 16:46
Infinoid goes for the high score
dalek r26814 | infinoid++ | ops2c: 16:47
: [ops2c] Stage 1 of cleaning up the silly file handling:
: * single function to write a C source file, just calls the top/bottom functions
: for now.
: Next step is to fix the handling of $SOURCE, and to use seek() instead of
: reopening it. Or just use $SOURCE->input_line_number() instead of counting
: them manually. *gasp*
diff: www.parrotvm.org/svn/parrot/revision?rev=26814
r26815 | infinoid++ | ops2c: 16:51
: [ops2c]:
: * name it print_c_source_file() to be consistent with print_c_header_file name.
: * make print_c_source_file responsible for opening the file, then pass that to
: the child functions.
diff: www.parrotvm.org/svn/parrot/revision?rev=26815
Coke diakopter: all of them?
diakopter Coke: sure, why not?
Coke diakopter: seriously, though, we seem to have linux and darwin covered. something solaris x86 would be awesome.
diakopter Coke: ok 16:52
Coke: oh, i see your joke
I've used SunOS... does that count
kid51 Infinoid: 26814 passed all tests. But tests start to break at 26815. 16:53
Coke diakopter: kid51 has some excellent points, but if it's a question of which platforms, pretty much anything other than linux will help more than linux.
(just because many of developers use that and catch stuff sooner than later.)
Infinoid this is prep to fix _reset_line_number(), which I should have done in a few minutes
Coke diakopter: yup.
dalek r26816 | infinoid++ | ops2c: 16:54
: [ops2c] It helps when I use the correct syntax for IO::File.
diff: www.parrotvm.org/svn/parrot/revision?rev=26816
diakopter amd64-linux-x86_64 is updated infrequently
nopaste "kid51" at 70.107.12.156 pasted "Failures in 'make buildtools_tests' at r26815" (31 lines) at nopaste.snit.ch/12631
kid51 Coke: agreed re platforms 16:56
Infinoid there needs to be more google hits for "Parrot polishing" 16:57
I just told a friend that's what I was doing today, and think I gave him the wrong idea. 16:59
17:02 askie joined
Infinoid ok. I'll have to fix up the test suite from the API changes I just made 17:04
dalek r26817 | infinoid++ | ops2c: 17:05
: [ops2c] There, _reset_line_number() no longer reopens anything.
diff: www.parrotvm.org/svn/parrot/revision?rev=26817
diakopter downloads solaris 10 isos
dalek r26818 | infinoid++ | ops2c: 17:08
: [ops2c] Fix and clarify the SYNOPSIS a bit.
diff: www.parrotvm.org/svn/parrot/revision?rev=26818
17:11 braceta joined
dalek r26819 | infinoid++ | ops2c: 17:13
: [ops2c] Fix POD to pass t/doc/pod.t.
diff: www.parrotvm.org/svn/parrot/revision?rev=26819
17:17 ruoso joined
dalek r26820 | infinoid++ | ops2c: 17:23
: [ops2c]:
: * Move the final rename() into print_c_source_file(). Child subroutines should
: only be concerned with printing.
: * Add a test for print_c_source_file(), based on 03-print_c_header_file.t.
diff: www.parrotvm.org/svn/parrot/revision?rev=26820
17:23 grim_fandango joined
dalek r26821 | infinoid++ | ops2c: 17:25
: [ops2c] update MANIFEST and metadata
diff: www.parrotvm.org/svn/parrot/revision?rev=26821
kid51 4 tests still failing as of 26821 17:28
diakopter kid51: any other platforms besides solaris? 17:29
kid51 Well, why not ask for the moon and the stars!
OpenBSD, NetBSD
AIX
Infinoid kid51: fixing up t/tools/ops2cutils/ right now 17:30
last time I tried dragonfly, it was at a very early stage of support 17:31
kid51 Let me ask an OT question: If I've just been given a shell account on a Solaris box, and if the default shell on that is ksh, but I want to use bash, what is the quickest way to make bash my default shell?
Infinoid check if the chsh command exists.
if it does, use that.
kid51 Infinoid: We were getting regular smoke reports on Dragonfly; good ones too.
Infinoid great. I had to patch some stuff in config/ to even get it to build 17:32
but that was a while ago. 17:33
diakopter wonders if AIX is available 17:34
17:35 Senaka joined
kid51 Infinoid: Unfortunately, no 'chsh' or similar commands on this Solaris box. 17:35
Would setting up a .profile file work?
Infinoid to make ksh execute bash? probably 17:36
might be as simple as inserting an "exec bash". but if it doesn't work for some reason, it might be difficult to remove that again. 17:37
17:37 braceta left
Infinoid have a second shell open just in case 17:37
Senaka u mean bash on solaris?
kid51 Yes.
Senaka or any other shell?
kid51 I specifically want bash on solaris.
Senaka u can right? i mean just change the shell
Infinoid that's what he was asking. 17:38
Senaka let me see if I can locate some solaris folks
kid51 It's definitely available on this box: /opt/bash/3.0/bin/bash is the resultant of various symlinks. 17:39
Senaka no chsh?
:(
Infinoid correct, no chsh
kid51 I have to leave now, so if anyone has a suggestion they can msg me in purl.
Senaka /etc/shells? 17:40
Infinoid seeya, kid51
Senaka ok will tell purl
c ya
www.unixguide.net/unix/bash/A7.shtml 17:41
perhaps 17:42
Infinoid: how do you tell purl to keep this msg?
Infinoid msg <name> <line of text> 17:43
purl Sorry, I've never seen <name> before.
dalek r26822 | jonathan++ | trunk: 17:44
: [rakudo] Re-work constraint types so we can use them in declarations (e.g. my EvenInt $x).
diff: www.parrotvm.org/svn/parrot/revision?rev=26822
Senaka msg kid51 www.unixguide.net/unix/bash/A7.shtml
purl Message for kid51 stored.
dalek r26823 | infinoid++ | ops2c: 17:49
: [ops2c] move the $file->close() to the toplevel print_c_source_file() function.
diff: www.parrotvm.org/svn/parrot/revision?rev=26823
r26824 | infinoid++ | ops2c:
: [ops2c]:
: Adapt 04-print_c_source_top.t and 05-print_c_source_bottom.t to the new API.
diff: www.parrotvm.org/svn/parrot/revision?rev=26824
r26825 | allison++ | trunk: 18:03
: [manifest] Deleting file that doesn't exist from manifest.
diff: www.parrotvm.org/svn/parrot/revision?rev=26825
r26826 | infinoid++ | ops2c: 18:16
: [ops2c]: Adapt the rest of t/tools/ops2cutils/ to my API changes.
diff: www.parrotvm.org/svn/parrot/revision?rev=26826
Senaka why does src/jit_emit.h have source in it?
take a look at 1720+ 18:17
aha JIT 18:18
ok ok
implicit function pointer casts are seen in src/jit_emit.h 18:20
these won't compile in C++ 18:21
also
a function pointer casted to void * AFAIK on a 64bit PPC is going to have its address truncated
this is because a function pointer being larger than a data pointer 18:22
Infinoid I don't know about ppc64, but I know all pointers are 64 bit on amd64
Senaka and void * is a data pointer
Infinoid so we get warnings about casting int to (void*), which are fixed by using long instead of int 18:23
Senaka long void?
oh oh ok
ok long to void * is valid
Infinoid is anyone here who tests on ppc64? :) 18:24
Senaka even int to void * is valid
yes that should fail
Infinoid int to void * is not portable, it causes warnings on amd64. so don't do that.
purl, int to void *?
Senaka gcc is silent about this warning but windows throws it
purl i think int to void * is not portable, it causes warnings on amd64. so don't do that.
Infinoid pats purl on the head
purl purrs
Infinoid gcc warns about it here 18:25
Senaka ok
logically it is correct
did u (void *)int_type?
and fail?
purl void abort(void);
Senaka purl, forget void abort(void);
purl Senaka, I didn't have anything matching void abort(void);
Infinoid heh
Senaka wierd 18:26
ok
Infinoid his definition of "fail" is good, I think
www.parrotvm.org/svn/parrot/revision?rev=26796
Senaka thanks
Infinoid check is an "int", but it doesn't store a pointer value, it's just a flag they wanted to pass through 18:27
Senaka that's something cool to know
Infinoid s/check/check_only/
Senaka ok 18:28
Senaka wonders what 128bit would look like
18:28 guru joined
Infinoid ipv6 routing would be *fast*. 18:28
Senaka thinks new C standard 18:29
Infinoid they'd probably invent something ridiculous like "long long long" for 128 bit ints
Senaka there is a long long /// int
hehe
you can do things like that
Infinoid but personally, I'd be happy if they just called it uint128_t and left everything else alone
no need to break things even worse. 18:30
Senaka that'd be super cool
Infinoid Toshiba's got a 128-bit MIPS processor
Senaka ok regarding the fn pointer -> data pointer issue
oh cool
Senaka thinks intel would be thinking of a 128bit even nw 18:31
Senaka thinks AMD might already have one
Infinoid Intel's too busy thinking up new 3 letter acronyms, I think
I think we'd see more benefit if they fit 8 cores into one chip, rather than increase the register size again 18:32
Senaka hehe
davidfetter that's only a 15-bit address space
(TLAs)
Infinoid true
Senaka hehe
Senaka wonders about temperature control 18:33
Infinoid that's the new "BBQ" feature
instead of trying to keep it cool, they've added a grill so you can cook things on it
Senaka ok well, speaking about the ppc64 it is something popular
davidfetter does that go with OMG and WTF?
Senaka and that's an undefined behaviour in the C99 standard 18:34
Infinoid Intel's Proprietary WTF Technology Preview
Senaka :)
Infinoid will feature in the new Intel Pentium(c)(r) Quad Nifty Über Spiffy Pro Core Pro Pro Hypercube Deux(tm)(omg)
Senaka wondering whether the PC will replace the grill 18:35
18:35 Ademan joined
Infinoid why not? P4 chips are already rated up to 100 watts 18:35
Senaka thinks the laptop will the only thing you need for a picnic 18:36
Infinoid Senaka: actually, you can configure processors in all kinds of ways that aren't friendly to C99. For instance, you can configure x86 in a protected mode with 16-bit data pointers and 32-bit code pointers
...but noone does that. Except ppc64, apparently. 18:37
Senaka wondering where I saw this ppc64 issue 18:43
Infinoid here's a good way to rate how annoying and complicated each platform is: 18:48
du -sb /usr/src/linux/arch/*/kernel/module*.c | sort -n
top 5: IA64, PA-RISC (same thing as IA64, I thought), PPC64, S/390, and Blackfin.
(that's the code that has to perform relocations for modules you've inserted with insmod. so it has to deal with all kinds of weird linker stuff.) 18:49
Senaka Rethinking about the PPC64 issue 19:10
developer.apple.com/documentation/D...ion_2.html
seems helpful
shorten Senaka's url is at xrl.us/bizau
Infinoid msg kid51 There, ops2c passes all tests again as of r26826. And I've got all the funky filehandle nonsense consolidated into print_c_source_file(), where it should be. (opening, closing and renaming) 19:19
purl Message for kid51 stored.
19:40 Psyche^ joined
Infinoid that soooo isn't dalek's fault. :) 19:57
20:02 dalek joined 20:03 svnbotl joined, Juerd joined
Infinoid diakopter: I sent svnbotl a SIGSTOP, but maybe you want to remove it from supervise? 20:07
20:09 wolverian joined
Infinoid I'm quite happy with dalek's performance thus far. 20:14
dalek: *hug*
20:18 pmichaud joined 20:20 pmichaud joined
Juerd Hi. If anyone knows which process on feather used all available memory (and swap), please let me know. 20:25
20:27 AndyA joined 20:34 Stephen joined 20:36 LimbicRegion joined 21:05 Theory joined 21:09 lichtkind joined
lichtkind pmurias: everything went fine did hit deadline last second, like in american movies 21:10
21:10 Stephen left
lichtkind pmichaud: everything went fine did hit deadline last second, like in american movies 21:11
21:39 jonathan joined 21:49 leo joined 22:37 AndyA joined
Coke skips review. 22:45
particl1: you in? 22:51
we need to follow up on eric's question regarding mentors.
diakopter kid51: I added amd64-linux-cc and amd64-linux-gcc VMs to smoke automatically. Still working on x86 Solaris. :/ 22:54
23:01 wknight8111 joined
dalek r26828 | jonathan++ | trunk: 23:06
: [rakudo] Add type-checking of parameters to subroutines and methods.
diff: www.parrotvm.org/svn/parrot/revision?rev=26828
diakopter Coke: freebsd and netbsd next? x86 or amd64? 23:07
jonathan We can haz type checking.
diakopter Infinoid: I d[r]owned svnbotl in supervise (now) 23:10
Juerd: no, I don't know. I'll keep an eye on botnix in case its memory usage spirals 23:11
Juerd diakopter: Oh, but it might be a better idea to just impose a memory limit 23:12
diakopter: man ulimit
diakopter msg kid51 should I have the autosmokers make clean before svn update, or vice versa? 23:14
purl Message for kid51 stored.
Infinoid make realclean before svn update 23:17
diakopter Infinoid: thanks, ok 23:21
Infinoid make realclean; svn update; perl Configure.pl; make smoke 23:22
diakopter Infinoid: should they run 'make smoke' in languages/ as well? also, anyone, now's your chance to request any branches to be smoked nightly. 23:23
Infinoid there's a "make languages-smoke" in the toplevel directory 23:24
diakopter ah
wknight8111 I had friends who used to talk about smoking branches nightly 23:26
Infinoid used to?
wknight8111 Thats a bad drug-using joke 23:27
anyway, how do you answer messages from purl?
Infinoid msg <nick> <message>
purl Sorry, I've never seen <nick> before.
wknight8111 no, i have messages waiting, how do I read them? 23:28
Infinoid purl, messages?
purl messages are almost working.
Infinoid that's helpful.
wknight8111 and reassuring
Infinoid msg Infinoid hey purl, tell me how to access messages
purl Message for infinoid stored.
Infinoid purl, ping
purl Infinoid: excuse me?
Infinoid [16:28] <purl> You have 1 message waiting.
[16:28] <Infinoid> messages
[16:28] <purl> You received the following messages:
[16:28] <purl> Infinoid [Sun Apr 6 16:28:29 2008] said: hey purl, tell me how to access messages
wknight8111 okay, i got them. thanks 23:29
Infinoid guess that was it
wknight8111 always deceptively easy
Infinoid purl, messages?
purl messages are almost working.
Infinoid no, messages is <Reply>To access your messages, msg me with the word "messages". 23:30
purl, messages?
purl To access purl's messages, msg me with the word "messages".
Infinoid pats purl
purl don't mess with me
Infinoid messes with purl
diakopter [around] with 23:33
Infinoid splashes in puddles with purl!
diakopter make languages-smoke takes a while. 23:34
Infinoid oh yeah, it takes forever
diakopter anticipates a higher power bill 23:35
23:38 contingencyplan joined
Juerd diakopter: Try setting up a datacentre. We thought we know what to expect, re power bill. 23:43
Server power usage turned out to be a bit lower than we'd calculated, but we had no idea that UPSes and aircon were such power suckers. 23:44
Infinoid out of curiosity, what was the ratio of wall-power to server-power? 23:47
(how efficient are UPS's?)
23:51 guru joined 23:59 braceta joined