Camelia, the Perl 6 bug

IRC log for #parrot, 2010-10-25

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 lucian left #parrot
00:06 preflex left #parrot
00:09 preflex joined #parrot
00:20 * whiteknight is baking his first apple pie
00:21 whiteknight and one thing has become clear to me during the process: I have absolutely no talent for baking
00:23 * simon_ never has much luck with apple pies
00:48 bluescreen left #parrot
00:53 whiteknight I'm lucky at eating them. Not so lucky at baking them
00:53 whiteknight but, I think my first effort turned out edible, so that's a big bonus
01:33 plobsing time to run that rigorous test suite then ;-)
01:35 whiteknight The crust was good, which is surprising. The crust is supposed to be the hardest part to get correctly
01:36 whiteknight I don't think I cooked it long enough
02:02 whiteknight left #parrot
02:10 bacek joined #parrot
02:12 jsut joined #parrot
02:17 jsut_ left #parrot
02:31 jjore left #parrot
02:33 jjore joined #parrot
03:16 dalek parrot: r49656 | chromatic++ | trunk/src/gc/gc_ms2.c:
03:16 dalek parrot: [GC] Removed GC indirection to free PObjs.
03:16 dalek parrot: This gives a 0.9% performance improvement on oofib.pir; small but decent.
03:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49656/
03:16 dalek parrot: r49657 | chromatic++ | trunk/src/gc/gc_ms2.c:
03:16 dalek parrot: [GC] Changed mark/sweep detector to a macro.
03:16 dalek parrot: This avoids an instruction jump from the two places it's called.
03:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49657/
03:16 dalek parrot: r49658 | chromatic++ | trunk/src/gc/fixed_allocator.c:
03:16 dalek parrot: [GC] Plugged memory leak of MS2's fixed allocator.
03:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49658/
03:16 dalek parrot: r49659 | chromatic++ | trunk/src/gc/gc_ms2.c:
03:16 dalek parrot: [GC] Plugged a memory leak of MarkSweep_GC struct.
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49659/
03:17 dalek parrot: r49660 | chromatic++ | trunk/src/pmc (2 files):
03:17 dalek parrot: Initialize custom mark and destroy flags in thawed objects. It's required because ImageIO uses pmc_new_noinit which doesn't initialize these flags
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49660/
03:17 dalek parrot: r49661 | chromatic++ | trunk/src/pmc.c:
03:17 dalek parrot: [GC] Only free PMC_data(pmc) if it exists.
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49661/
03:17 dalek parrot: r49662 | chromatic++ | trunk/src/interp/inter_create.c:
03:17 dalek parrot: [src] Fixed invalid write in Parrot_really_destroy.
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49662/
03:17 dalek parrot: r49663 | chromatic++ | trunk/src (2 files):
03:17 dalek parrot: [GC] Reenabled global destruction of root set PMCs.
03:17 dalek parrot: This walks the final live set during global destruction to call VTABLE destroy
03:17 dalek parrot: on all PMCs, lest they leak memory at the end and confuse people running
03:17 dalek parrot: Valgrind.
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49663/
03:20 ttbot Parrot trunk/ r49663 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/413033.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
03:29 bacek seen chromatic
03:29 aloha chromatic was last seen in #parrot 3 days 8 hours ago saying "I can recommend a book or two for that.".
03:32 dalek parrot: r49664 | bacek++ | branches/generational_gc/src/pmc/packfile.pmc:
03:32 dalek parrot: Reorder setting flag in Packfile.init to avoid race condition with GC.
03:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49664/
03:32 dalek parrot: r49665 | bacek++ | branches/generational_gc/src/gc/api.c:
03:32 dalek parrot: Disable short-cut in mark_PObj_alive. It's conflicting with moving objects between generations.
03:32 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49665/
06:03 cotto seen kid51
06:03 aloha kid51 was last seen in #parrot 8 hours 5 mins ago saying "So your karma poses no obstacles to membership on that team :-)".
06:03 cotto seen aloha
06:03 aloha aloha was last seen in #perl6 3 days 6 hours ago joining the channel.
06:04 cotto needs more recursion
06:08 plobsing I hear cotto can help with that. why don't you ask him?
06:15 cotto cotto: halp
06:15 cotto cotto: ???
06:15 cotto cotto: nm
06:16 cotto plobsing, no luck
06:53 particle1 joined #parrot
06:59 particle left #parrot
07:03 bacek left #parrot
07:23 dalek parrot: r49666 | chromatic++ | trunk/src/gc/gc_ms2.c:
07:23 dalek parrot: [GC] Fixed copy and paste errors in MS2 GC.
07:23 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49666/
07:44 AzureStone left #parrot
07:46 bacek joined #parrot
07:49 AzureStone joined #parrot
08:04 TiMBuS_ joined #parrot
08:05 TiMBuS left #parrot
08:05 TiMBuS_ is now known as TiMBuS
08:09 dalek parrot: r49667 | mikehh++ | trunk/src/gc/gc_ms2.c:
08:09 dalek parrot: add missing ASSERT_ARGS
08:09 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49667/
08:25 dalek parrot: r49668 | mikehh++ | trunk/t/pmc/io_stdin.t:
08:25 dalek parrot: add svn properties
08:25 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49668/
08:40 dalek parrot: r49669 | mikehh++ | trunk/t/pmc/io_stdin.t:
08:40 dalek parrot: remove hard tabs
08:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49669/
08:48 dip joined #parrot
08:52 Hunger left #parrot
10:12 fperrad joined #parrot
10:24 bacek left #parrot
10:37 bacek joined #parrot
10:43 dalek parrot: r49670 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
10:43 dalek parrot: Don't validate dead objects.
10:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49670/
10:43 dalek parrot: r49671 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
10:43 dalek parrot: Wrap validating functions in ifndef NEBUG.
10:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49671/
10:53 jsut_ joined #parrot
10:58 jsut left #parrot
11:25 uniejo joined #parrot
11:28 contingencyplan left #parrot
12:20 zostay left #parrot
12:25 bluescreen joined #parrot
13:12 mikehh left #parrot
13:26 estrabd joined #parrot
13:55 uniejo left #parrot
13:57 PacoLinux joined #parrot
13:58 uniejo joined #parrot
13:59 uniejo left #parrot
14:12 mikehh joined #parrot
14:26 Hunger joined #parrot
14:29 patspam joined #parrot
14:34 dalek parrot: r49672 | mikehh++ | trunk/t/pmc/io_stdin.t:
14:34 dalek parrot: perlcritic complainred about 2 argument form of open and missing perl coda,
14:34 dalek parrot: fixed the first open, but no idea how to handle the second on line 49,
14:34 dalek parrot: my attempts did not work, added coda
14:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49672/
14:53 cognominal left #parrot
15:02 bluescreen left #parrot
15:02 bluescreen joined #parrot
15:02 cognominal joined #parrot
15:06 dalek parrot: r49673 | mikehh++ | branches/generational_gc/src/gc/gc_ms2.c:
15:06 dalek parrot: [generational_gc] add missing ASSERT_ARGS and c function docs
15:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49673/
15:47 awhitworth joined #parrot
16:16 dmalcolm joined #parrot
16:26 awhitworth left #parrot
16:28 brianwisti joined #parrot
16:30 davidfetter left #parrot
16:30 davidfetter joined #parrot
16:31 brianwisti This is a day where I wish I was getting paid to work on Parrot. Ah well, back into the CGI salt mines.
16:32 awhitworth joined #parrot
16:39 Andy joined #parrot
16:55 * dukeleto waves hello from the Git Together 2010
16:56 shockwave joined #parrot
16:56 awhitworth hello duke
16:56 awhitworth is now known as whiteknight
16:59 cotto a wild whitworth appears
17:00 dukeleto awhitworth: hola
17:00 * whiteknight uses hyperbeam
17:01 contingencyplan joined #parrot
17:01 dukeleto whiteknight: is there a reason you did not mention PL/Parrot in your blog post about Embedding Parrot? I can give you some other perspectives
17:01 davidfetter what might "git together 2010" be?
17:02 dukeleto davidfetter: yearly Git developer conference
17:02 dukeleto https://git.wiki.kernel.or​g/index.php/GitTogether10
17:02 whiteknight dukeleto: a personal shortcoming. I should have mentioned PL/Parrot
17:04 dukeleto whiteknight: pl.parrot.org for more info
17:04 dukeleto whiteknight: and just ask me a question if you have one
17:06 * davidfetter wonders where the aforementioned blog post is
17:07 cotto davidfetter, http://wknight8111.blogspot.com/2010​/10/case-study-parrot-critique.html
17:07 whiteknight dukeleto: how did you get that url set up?
17:07 cotto one of several blogs on planet parrot
17:08 dukeleto whiteknight: which URL?
17:08 davidfetter interesting :)
17:08 dukeleto whiteknight: pl.parrot.org ?
17:08 whiteknight yeah
17:08 whiteknight is that in the parrot.org sphere of things, or is it separate?
17:09 dukeleto whiteknight: the OSUOSL peeps added a DNS entry to my server, so it doesn't run on parrot.org
17:10 whiteknight that's very kind of them. By chance, do we have ability to manage dns subdomains like that, or do we always have to go through the OSU guys?
17:11 dukeleto whiteknight: pretty sure you need to ask them. They are #osuosl on freenode
17:11 whiteknight not that I suspect we will be adding many, of course
17:11 whiteknight ok
17:12 whiteknight brb food
17:13 shockwave left #parrot
17:39 Khisanth left #parrot
17:39 Khisanth joined #parrot
17:44 whiteknight ah, I forgot how good and cheap food in the city can be
17:44 whiteknight I'm certainly no healthier for it, but it was fast and cheap
17:47 cotto msg++
17:53 * davidfetter wonders which city, and what "fast" and "cheap" mean in this context
18:06 whiteknight philadelphia. Got a 12 inch sandwich for 3.75$ in about 4 minutes
18:22 whiteknight people from other places might not recognize the value of the almight hoagie
18:26 davidfetter o/` to all my bulls out in philly... o/`
18:27 whiteknight surprisingly, not too many bulls out here
18:27 whiteknight mostly people
18:31 whiteknight our embed API is completely stupid. The more I look at it, the more angry I become
18:31 cotto better you who can fix it than a newcomer who'll go away disappointed
18:32 whiteknight shit. After reading this, I may go away disappointed
18:32 whiteknight I'm going to write up about a bajillion deprecation notices
18:32 whiteknight because: screw this
18:34 atrodo whiteknight> Calling it an API is generous.  It's more like internal functions called an API
18:35 cotto libparrot as our primary product is a new and good idea
18:35 cotto or at least a major product
18:35 whiteknight when you think about fakecutables, for instance, they are new, custom front-ends over libparrot
18:35 whiteknight that's going to be the primary interface for most HLLs, I assume
18:36 kj joined #parrot
18:37 whiteknight I think we'll get pretty nice encapsulation and a decent interface if the parrot exectutable only calls into libparrot using the standard embedding API
18:37 cotto we'll have to
18:38 whiteknight I have a question though: should functions in src/embed.c have the form "Parrot_xxx_..."?
18:38 whiteknight the ones in src/extend.c have "Parrot_ext_...", or they should
18:38 whiteknight Parrot_api_... is a nice idea
18:38 whiteknight or Parrot_emb_...
18:40 whiteknight I would like a way to try and demarcate the API functions without having to use PARROT_EXPORT, or PARROT_API, both of which are not properly used throughout and have no consensus behind them
18:41 cotto Why not hammer out a consensus and use PARROT_API and _EXPORT?
18:43 dukeleto whiteknight: did you see that I wrote a TPF grant to work on the embed system, but it did not get accepted? It has a nice timeline with milestones
18:44 cotto TPF is pretty perl-oriented, so proposals need to be strongly related to Perl 6.  chromatic also had a grant for the profiling runcore, but that never went anywhere.
18:45 dukeleto cotto: it was given positive feedback, but they only do 3 grants per quarter, so I would say you are only half-right about proposals needing to be perl6-related
18:45 kj is now known as kjs
18:45 dukeleto cotto: they are open to parrot stuff, but perl stuff gets ranked higher
18:46 dukeleto http://github.com/leto/proposals/blob/m​aster/TPF/Improve_Parrot_Embedding.pod
18:46 dukeleto whiteknight: the biggest improvement you could work on for embedding is making the docs actually reflect reality, and not be empty
18:46 dukeleto whiteknight: and iterate on from there
18:51 atrodo I would say that the embedding API needs to be designed, not just a series of functions that present loops that everyone has to jump through to do simple things
18:54 dukeleto atrodo: yes please. Are you volunteering?
18:54 atrodo Only if nobody gets to it before I do
18:55 cotto deal
18:56 brianwisti left #parrot
18:57 dukeleto I would be interested in writing a high-level document for "How to I start a project that embeds Parrot"
18:57 dukeleto would anybody be interested in reading that?
18:58 whiteknight I'm definitely planning to do some API design work. atrodo, wanna be my buddy?
18:58 whiteknight dukeleto: yes, that would be fantastic
19:01 cotto dukeleto, +yes
19:01 atrodo whiteknight> Sure, sounds like a good time for all
19:02 whiteknight what I may need to do is start an embedding project of my own, so I can see the problems first-hand
19:03 whiteknight There are plenty of programs I use that support plugins, and a parrot plugin would be nice to have: pidgin, xchat, etc
19:05 cotto the GIMP would be interesting
19:05 whiteknight it would be, but I don't really use the GIMP
19:05 cotto ditto
19:05 bacek aloha, humans
19:05 whiteknight 01101010, bacek
19:06 cotto 1001001020100101 bacek
19:06 whiteknight Don't worry bender, there is no 2!
19:07 bacek It's 15th century already. Binary logic left in 14th!
19:07 NotFound The problem usually has been that emebedding projects gets impatient and instead of discussing the more or less documented api use whatever they need to get functionality.
19:07 dukeleto whiteknight: no no no, you don't need to start another embedding project. You already have a commit bit on PL/Parrot :)
19:07 dukeleto whiteknight: you have for a while
19:07 whiteknight dukeleto: ha! I would love to help, but that sort of defeats the purpose
19:07 dukeleto whiteknight: defeating what purpose?
19:08 whiteknight I'm looking for something more simple and demonstrative. Plus, I want to be able to play with new interfaces without breaking other people's work
19:08 dukeleto whiteknight: you are not breaking anybodies work. And I don't know how much simpler you are going to get than PL/Parrot
19:08 whiteknight the end-goal here isn't a new embedding project, it's an improved embedding API for Parrot
19:09 whiteknight I'll look into it. I don't know a damned thing about postgres, however
19:09 dukeleto whiteknight: yes, which means looking at the most active embedding project right now, PL/Parrot, and seeing what parrot needs for it to move forward
19:09 dukeleto whiteknight: you don't need to know squat about postgres
19:09 dukeleto whiteknight: i didn't know a thing about postgres internals before PL/Parrot
19:09 dukeleto whiteknight: i did all the hard work
19:09 dukeleto whiteknight: you just need to look at how Parrot is involved
19:10 NotFound whiteknight: PARROT_API is not just not properly used, is not used at all.
19:10 whiteknight dukeleto: do you have a ready list of issues in the Parrot interface that you are having problems with?
19:10 whiteknight NotFound: I thought it was
19:10 cotto hi kj
19:10 dukeleto whiteknight: one huge problem is that a syntax error from IMCC is not caught properly, so syntax errors cause Postgres to coredumps, which sucks.
19:10 NotFound whiteknight: ack it
19:10 dukeleto whiteknight: i have made *many* tt's
19:11 dukeleto whiteknight: i was surprised to see you talk about embedding so much recently, without mentioning anything I have been trying to get people to think about
19:11 whiteknight assign them to me
19:11 dukeleto whiteknight: yes sir.
19:12 whiteknight +1
19:12 * cotto thought of Lua as a good example of a popular embedded language too
19:13 dukeleto indeed. Everybody is embedding Lua
19:13 cotto The video game emulator community has done some really neat things with it.
19:14 dukeleto The Nmap project uses Lua as an embedded scripting language
19:15 atrodo nmap could be a good embed target
19:17 whiteknight I'm thinking I want to look at xchat or pidgin
19:17 whiteknight both of which should be pretty easy and straight-forward
19:18 dukeleto Famous last words.
19:19 PerlJam dukeleto: I think you mean "infamous last words"  :-)
19:19 NotFound This is a good example of a simple project for embedding: http://www.linuxjournal.com/article/2901
19:19 dukeleto PerlJam: yep, that has a nice ring to it.
19:20 cotto It hardly matters what the project is since it's primarily an exercise in getting the api down.
19:20 whiteknight exactly
19:20 kjs hi cotto
19:20 whiteknight I could embed into BigBobsManureCalculator for all I care
19:20 NotFound A prpject to big leads to the temptation of forgeting the api and using whatever.
19:20 cotto It might even be beneficial to have multiple people working on different embedding projects at the same time.
19:21 NotFound s/to/too
19:21 cotto Just don't tell the xchat guys that they're on the same level as Big Bob's Manure Calculator.
19:22 dukeleto whiteknight: my thought is that for you to create an entirely new embedding project to figure out an API is not as efficient as seeing what PL/Parrot needs
19:22 NotFound They don't like Big Bobs?
19:22 dukeleto whiteknight: but of course you are free to start as many embedding projects as you like
19:22 dukeleto whiteknight: i've done a lot of the hard things and know where all the sharp edges live
19:23 wagle left #parrot
19:23 dukeleto whiteknight: but if you want to find them all again yourself, I won't stop you.
19:23 whiteknight dukeleto: and that's basically all the information that I need. My hope is that if I do some things the hard way too, I'll have a keener, more intimate understanding of the issues
19:23 dukeleto whiteknight: sure, but take time into consideration.
19:23 NotFound Sometimes I think that the better example of parrot embedding should be parrot itself: make the main executable use only the public api.
19:24 whiteknight I will definitely look at PL/Parrot too
19:24 whiteknight NotFound: Exactly!
19:24 dukeleto whiteknight: gerd++ just made an rpm of PL/Parrot, so it should be easier to install
19:24 dukeleto whiteknight: but we obviously still need more docs and examples
19:25 whiteknight obviously
19:26 NotFound In perlembed there is a paragraph that says: "In a sense, perl (the C program) is a good example of embedding Perl". I'd like for parrot the same paragraph but without the "In a sense" part.
19:27 whiteknight yes
19:27 wagle joined #parrot
19:27 whiteknight NotFound: you interested in joining the product management team? :)
19:28 NotFound whiteknight: if you allow excpetions for the public relations part, sure.
19:28 whiteknight it's a multi-faceted team. We can't all do everything
19:29 dalek parrot: r49674 | mikehh++ | branches/generational_gc/src/gc/gc_ms2.c:
19:29 dalek parrot: [generational_gc] add some casts to get g++ to build
19:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49674/
19:30 NotFound whiteknight: examples/embed/cotorra.c is a start of that idea.
19:30 whiteknight yes, I read that
19:38 whiteknight I think we need to decide where IMCC lives. Is IMCC part of libparrot, or is it an external component?
19:39 cotto Eventually PIRATE will replace imcc, and it'll definitely be an external component.
19:39 whiteknight I really like the idea of being able to load in compiler libraries in the same way that we can load dynpmcs or dynops
19:39 dukeleto whiteknight: IMCC lives in a code cemetary
19:40 whiteknight IMCC is just a prototype example
19:40 whiteknight any compiler could be written in Lex/Yacc or ANTLR and loaded in as the frontend to libparrot
19:41 whiteknight that's exactly what people would want if they are concerned about the performance of NQP and PCT
19:42 whiteknight or if they already have a compiler laying around and are just looking to port it to a more feature-full backend
19:42 whiteknight take the PHP compiler and just dump it onto libparrot to get instant unicode support, for instance
19:43 whiteknight (I know there are more steps than that, i'm glossing over them)
19:45 NotFound If we plan to make imcc or something like it optional, we should think about some kind of code generation api or helper library.
19:46 NotFound Adding a lot of functionality to the packfile PMCs, for example.
19:47 whiteknight we need to do that anyway. The packfile PMCs are in huge need of a rewrite
19:51 whiteknight if we can go through IMCC for instance and encapsulate all packfile accesses behind the Packfile PMC VTABLE and the public API, we will be in great shape
19:51 whiteknight nobody in the world should use struct PackFile or any of it's bastard children directly
19:52 kjs just a quick note: IMCC needs libparrot to build in order to find out whether an identifier is an op. Therefore making it a clean separate external component is difficult.
19:52 PerlJam What do people think of when they say "Parrot"?  What do we want them to think of?
19:52 whiteknight PerlJam: "ZOMG Fantastic!"
19:52 PerlJam whiteknight: What's libparrot then?
19:53 whiteknight a bytecode runtime engine
19:53 PerlJam Are they the same or different?
19:53 whiteknight are what the same?
19:53 PerlJam libparrot and Parrot
19:54 whiteknight no
19:54 whiteknight libparrot is the engine. Parrot is the CLI
19:54 PerlJam Hmm.
19:56 whiteknight In 10 years, I expect libparrot to be used frequently, while the Parrot executable not so much
19:56 PerlJam perhaps I'm just being a little bit silly, but I think of "parrot" as the CLI and "Parrot" as the abstract VM/language and "libparrot" as the implementation of "Parrot".   But I'm sure other people think of things differently.
19:57 whiteknight we could be so precise, yes
19:57 PerlJam And I think that maybe that's part of "parrot the project"'s problem.
19:57 PerlJam Different people are thinking about the "same" thing quite differently.
19:57 whiteknight how so?
19:58 whiteknight we already know we have branding and marketing problems
19:59 whiteknight I do get a little bit weary of using a capital letter to distinguish between two separate things
20:00 PerlJam sure, I'm not talking about branding or marketing so much as whatever this thing is that people are working on.  Some people may think of PIR when they think of parrot so, to them, there's an unstated assumption that *that's* what parrot is.
20:01 whiteknight well, that seems like motivation to rip out PIR and separate it from the rest of Parrot
20:01 whiteknight because PIR is certainly not a "product" that I want people to be thinking of immediately
20:06 cotto Post-Lorito, we'll be able to severely deemphasize PIR for an Lorito overlay.
20:07 * davidfetter wonders whether Lorito comes in Cool Ranch® flavor
20:10 M_o_C joined #parrot
20:15 dalek parrot: r49675 | bacek++ | branches/generational_gc/src/gc (2 files):
20:15 dalek parrot: Introduce pool_is_maybe_owned function for quick preliminary check for pointer. Will be used in GC.is_string_ptr or .is_pmc_ptr
20:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49675/
20:15 dalek parrot: r49676 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
20:15 dalek parrot: Use combination of Pool.is_maybe_owned and PObj flags in GC.is_*_ptr.
20:15 dalek parrot: This gives about 30% speed up on stress_strings by avoiding expensive
20:15 dalek parrot: testing of all live objects.
20:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49676/
20:21 whiteknight I loves me so bacek
20:22 whiteknight he;s going to get this GC done through sheer force of will
20:27 nwellnhof joined #parrot
20:30 davidfetter bacek++ :)
20:36 bacek Speaking of which...
20:36 bacek I _do_ need more eyes on gen_gc branch...
20:36 bacek Looks like I still collect some globals prematurely.
20:37 nwellnhof bacek: I've been thinking about gc_ms2_bring_them_together and I think I found a case that doesn't work.
20:38 nwellnhof Consider the following example:
20:38 nwellnhof 1. There are three object A, B, C in generations 2, 0, 0. They have the following references: A2 -> B0 -> C0.
20:38 nwellnhof 2. There is a gen0 GC. The objects from gen0 are promoted to gen1. So we have A2 -> B1 -> C1.
20:38 nwellnhof 3. Then bring_them_together is called. IIUC, this will move only B to gen2. So we have A2 -> B2 -> C1.
20:38 nwellnhof 4. Now there's a new intergenerational reference from B to C that we don't track.
20:39 bacek nwellnhof, hmm... It's possible.
20:40 bacek nwellnhof, actually, bring_them_together will start with A. Which will bring B into gen2. Which will bring C into gen2
20:41 bacek moving objects between gens will add them into objects[gen] list.
20:41 bacek Bringing B into gen2 will advance objects[2]->last
20:41 bacek So, while(tmp) loop in bring_them_together will process B
20:42 bacek (At least this is what I expect :)
20:42 nwellnhof Yes, you might be right.
20:43 nwellnhof But if bring_them_together works recursively it will copy many objects to an older generation.
20:43 brianwisti joined #parrot
20:43 nwellnhof So we probably don't make much use of generation 1.
20:44 nwellnhof I think we should keep the root_objects list and maybe filter it.
20:45 bacek nwellnhof, yes. But objects into gen2 will be pushed after collecting of gen1
20:45 bacek anyway. It's $dayjob time.
20:45 bacek See you soon.
20:50 jjore left #parrot
20:53 jjore joined #parrot
20:57 whiteknight left #parrot
21:01 kjs left #parrot
21:09 mikehh nwellnhof: can you check r49672 - t/pmc/io_stdin.t is still failing perlcritic at line 49
21:12 dngor joined #parrot
21:26 dukeleto How do I add a new OS to Trac? I am in the admin section, but I don't see how.
21:26 bacek_at_work ~~
21:27 bacek_at_work nwellnhof, we can probably squeeze couple more flags into PObj. Then instead of "bringing" objects into same gen we can set "referenced_from_gen" flags to keep them alive.
21:28 perlite joined #parrot
21:29 perlite_ left #parrot
21:30 M_o_C left #parrot
21:31 lucian joined #parrot
21:31 bluescreen left #parrot
21:31 fperrad left #parrot
21:32 nwellnhof bacek: I just tried to build the gen_gc branch and got a error when building compilers/tge/TGE/Parser.pir
21:33 bacek_at_work nwellnhof, with optimization?
21:33 nwellnhof yes
21:33 bacek_at_work on Linux/i386?
21:33 nwellnhof yes
21:33 bacek_at_work It's good. Because I have same error on my box :)
21:34 bacek_at_work "Looks like I still collect some globals prematurely."
21:34 bacek_at_work Try to rebuild without optimization. It works on my machine...
21:35 nwellnhof I had a look at it and a class->attrib_cache hash seems to be corrupted somewhere.
21:35 bacek_at_work yes. It's collected.
21:36 bacek_at_work I didn't have time to investingate it this morning.
21:48 dalek parrot: r49677 | NotFound++ | trunk (2 files):
21:48 dalek parrot: delete deprecated method lower in String PMC, TT #1606
21:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49677/
21:49 nopaste "bacek" at 192.168.1.3 pasted "Temporary hack for pmc2c." (23 lines) at http://nopaste.snit.ch/24866
21:50 bacek_at_work nwellnhof, take a look at http://nopaste.snit.ch/24866. It can help fighting bug in optimized builds
21:52 cotto aloha, 850/720
21:52 aloha cotto: 1.18055555555556
21:52 cotto aloha, 1/850/720
21:52 aloha cotto: 1.63398692810458e-06
21:52 cotto aloha, 720/850
21:52 aloha cotto: 0.847058823529412
21:53 bacek_at_work nwellnhof, better to change it to if (_self && PObj...)
21:54 bacek_at_work heh. Now it's properly dies in miniparrot!
22:06 shockwave joined #parrot
22:07 davidfetter left #parrot
22:08 davidfetter joined #parrot
22:13 brianwisti left #parrot
22:24 shockwave left #parrot
22:50 dalek parrot: r49678 | nwellnhof++ | trunk/t/pmc/io_stdin.t:
22:50 dalek parrot: [t] Use three-argument form of perl open
22:50 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49678/
22:50 kid51 joined #parrot
22:57 kid51 ~~
22:58 kid51 msg dukeleto Do you need n>1 additional config steps for RTEMS?  If so, can you describe more fully?
22:58 aloha OK. I'll deliver the message.
22:59 dukeleto kid51: i need many
22:59 dukeleto kid51: that is just the first
22:59 dukeleto kid51: i will create tickets for you as I realize I need them :)
23:00 dukeleto kid51: but i can create an intro/overview of rtems for parrot peeps
23:04 kid51 Why don't you (a) create that intro/overview as a wiki page; (b) post on parrot-dev pointing to that wiki page
23:06 kid51 Also:  I've only written the C probes for 1 or 2 config steps myself.  I (or anyone else) will need links to docs as the basis for constructing such probes (as was the case with auto::llvm).
23:07 kid51 And, if RTEMS is essentially one feature, we may want multiple C probes within a single config step.
23:08 * cotto sees why whiteknight usually has several blog posts in the pipeline
23:10 Andy left #parrot
23:10 cotto atrodo, ping
23:11 dukeleto kid51: the configure step just needs to check the definedness of __rtems__, that is all
23:11 cotto dukeleto, that hardly sounds like a configure step
23:12 dukeleto kid51: i understand that you would like extensive docs, but I just don't have the time right now. Do you have enough info to make progress?
23:12 dukeleto cotto: what is it then?
23:12 dukeleto I am fine with making it a C probe, that is actually what I meant.
23:12 cotto a couple #ifdefs in some headers, as needed
23:12 dukeleto I was conflating config step and C probe.
23:12 dukeleto cotto: i need access to it in parrot_config
23:13 cotto because Parrot needs to act differently if it's on a RTEMS system?
23:13 kid51 I need, at least, links to RTEMS, because I know nothing about it.
23:13 dukeleto kid51: rtems.com
23:13 dukeleto cotto: yes
23:14 kid51 dukeleto:  When you were doing that cross-compiling, by any chance did you use the file-based configuration approach to Configure.pl?
23:14 cotto What needs to be different?
23:20 dukeleto kid51: it will be used when we have a full port of Parrot on RTEMS
23:20 dukeleto cotto: we can't call exit()
23:20 dukeleto cotto: we need to have an API for defining what to do when we "exit"
23:21 dukeleto cotto: that api can be a single function which sets a function pointer to call on "exit"
23:21 dukeleto cotto: exit() on RTEMS reboots the OS
23:21 dukeleto cotto: so a syntax error reboots the OS, which sucks
23:22 kid51 Well, that'll teach you to make syntax errors!   ;-)
23:22 dukeleto cotto: there are various other things as well, but that is the most easy to fix and makes it much more usuable
23:23 dukeleto cotto: when you have a few free minutes, could you write a realtime GC too? We need one of those ;)
23:23 dukeleto cotto: but we can get away with -G for a while
23:23 cotto I can write one, but you won't like it.
23:24 cotto not after a few minutes of effort, anyway
23:28 cotto That sounds like it'd work fine at the C level, i.e. pir's exit would dtry on rtems without user intervention.  Does PIR and higher need to do anything different on rtems?
23:29 davidfetter left #parrot
23:30 cotto s/dtry/dtrt/
23:32 dukeleto cotto: no, i think all things that are rtems-specific are known at compile time, so nothing is user-visible except stuff "working like it should"
23:33 dukeleto cotto: rtems is very close to getting dlopen working, so for now, dynamic loading doesn't exist on it yet
23:33 dukeleto cotto: but they are very close to putting it in their HEAD
23:34 cotto ok.  So it wounds like an rtems-specific parrot_config value would be at best a temporary solution.
23:34 cotto s/wounds/sounds/
23:35 dngor_ joined #parrot
23:36 dalek parrot: r49679 | nwellnhof++ | trunk/src/io/unix.c:
23:36 dalek parrot: [io] Throw exception on read error
23:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/49679/
23:37 patspam left #parrot
23:39 dngor left #parrot
23:39 dukeleto cotto: it shouldn't be temporary
23:40 dukeleto cotto: we need operating system info in parrot_config
23:40 dukeleto cotto: rtems is a new OS
23:40 dukeleto cotto: so we need to store info about it in parrot_config
23:40 dukeleto cotto: it happens to be the case that it is very easy to see if you are on rtems, you just see if __rtems__ is defined in your C compiler
23:40 dukeleto cotto: because rtems has a custom compiler toolchain
23:41 cotto dukeleto, is there anything wrong with parrot_config['osname']?
23:42 dukeleto nwellnhof: ping
23:42 dukeleto cotto: nope, that is fine with me
23:42 dukeleto aloha, msg nwellnhof tests for r49679 would be greatly appreciated
23:42 aloha dukeleto: OK. I'll deliver the message.
23:43 nwellnhof dukeleto: pong
23:43 dukeleto nwellnhof: tests please :) If you are going to commit directly to trunk, we like to see tests first, then code, or commit them together.
23:43 dukeleto nwellnhof: if you want to hack on branches, then you can do whatever you want
23:44 dukeleto nwellnhof: and thank you very much for fixing that :)
23:44 kid51 is now known as kid51_at_dinner
23:45 nwellnhof dukeleto: for some things it's five times more work to write tests.
23:46 kid51_at_dinner is now known as kid51
23:46 dukeleto nwellnhof: I am very aware of that. But breaking trunk in a subtle way is worse
23:46 * cotto too
23:46 kid51 nwellnhof I second dukeleto on this.  We cannot have untested commits to trunk.
23:47 dukeleto nwellnhof: I know you write good tests, so it shouldn't be a problem ;)
23:47 cotto It was a lot of work to figure out how to test the profiling runcore.
23:47 lucian left #parrot
23:48 dukeleto nwellnhof: that bug fix probably deserves a mention in NEWS as well
23:50 whiteknight joined #parrot
23:50 nwellnhof dukeleto: any commit can break trunk in subtle ways. adding test cases for a fixed bug is a different thing.
23:52 dukeleto nwellnhof: How so?
23:53 dukeleto nwellnhof: if you think you might break trunk in a subtle way, make a branch.
23:53 dukeleto We should not be committing directly to trunk, by default.
23:54 nwellnhof The main purpose of a test case for a fixed bug is to avoid regressions.
23:54 dukeleto nwellnhof: no, it is to prove that your code works, firstly. To prevent regressions is a secondary usefulness.
23:54 dukeleto nwellnhof: if it doesn't work to begin with, we don't care about regressions
23:56 whiteknight tests can be used for a variety of reasons
23:56 whiteknight tests on new features prove the feature works. Tests on fixed bugs prove the bug is fixed. All tests can prevent regressions
23:57 nwellnhof dukeleto: I always check that my commits do indeed fix things, and always run the test suite. I don't think we should create branches for every one-liner.
23:59 atrodo cotto> pong

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced