Parrot 2.9.1 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GC tuning | remove deprecations |
Set by moderator on 21 October 2010.
00:00 lucian left 00:06 preflex left 00:09 preflex joined
whiteknight is baking his first apple pie 00:20
and one thing has become clear to me during the process: I have absolutely no talent for baking 00:21
simon_ never has much luck with apple pies 00:23
00:48 bluescreen left
whiteknight I'm lucky at eating them. Not so lucky at baking them 00:53
but, I think my first effort turned out edible, so that's a big bonus
plobsing time to run that rigorous test suite then ;-) 01:33
whiteknight The crust was good, which is surprising. The crust is supposed to be the hardest part to get correctly 01:35
I don't think I cooked it long enough 01:36
02:02 whiteknight left 02:10 bacek joined 02:12 jsut joined 02:17 jsut_ left 02:31 jjore left 02:33 jjore joined
dalek rrot: r49656 | chromatic++ | trunk/src/gc/gc_ms2.c:
[GC] Removed GC indirection to free PObjs.
03:16
rrot: r49657 | chromatic++ | trunk/src/gc/gc_ms2.c:
[GC] Changed mark/sweep detector to a macro.
rrot: r49658 | chromatic++ | trunk/src/gc/fixed_allocator.c:
[GC] Plugged memory leak of MS2's fixed allocator.
rrot: r49659 | chromatic++ | trunk/src/gc/gc_ms2.c:
[GC] Plugged a memory leak of MarkSweep_GC struct.
rrot: r49660 | chromatic++ | trunk/src/pmc (2 files):
Initialize custom mark and destroy flags in thawed objects. It's required because ImageIO uses pmc_new_noinit which doesn't initialize these flags
rrot: r49661 | chromatic++ | trunk/src/pmc.c:
[GC] Only free PMC_data(pmc) if it exists.
rrot: r49662 | chromatic++ | trunk/src/interp/inter_create.c:
[src] Fixed invalid write in Parrot_really_destroy.
rrot: r49663 | chromatic++ | trunk/src (2 files):
[GC] Reenabled global destruction of root set PMCs.

on all PMCs, lest they leak memory at the end and confuse people running Valgrind.
ttbot Parrot trunk/ r49663 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/413033.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) 03:20
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.".
dalek rrot: r49664 | bacek++ | branches/generational_gc/src/pmc/packfile.pmc:
Reorder setting flag in Packfile.init to avoid race condition with GC.
03:32
rrot: r49665 | bacek++ | branches/generational_gc/src/gc/api.c:
Disable short-cut in mark_PObj_alive. It's conflicting with moving objects between generations.
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 :-)".
cotto seen aloha
aloha aloha was last seen in #perl6 3 days 6 hours ago joining the channel.
cotto needs more recursion 06:04
plobsing I hear cotto can help with that. why don't you ask him? 06:08
cotto cotto: halp 06:15
cotto: ???
cotto: nm
plobsing, no luck 06:16
06:53 particle1 joined 06:59 particle left 07:03 bacek left
dalek rrot: r49666 | chromatic++ | trunk/src/gc/gc_ms2.c:
[GC] Fixed copy and paste errors in MS2 GC.
07:23
07:44 AzureStone left 07:46 bacek joined 07:49 AzureStone joined 08:04 TiMBuS_ joined 08:05 TiMBuS left, TiMBuS_ is now known as TiMBuS
dalek rrot: r49667 | mikehh++ | trunk/src/gc/gc_ms2.c:
add missing ASSERT_ARGS
08:09
rrot: r49668 | mikehh++ | trunk/t/pmc/io_stdin.t:
add svn properties
08:25
rrot: r49669 | mikehh++ | trunk/t/pmc/io_stdin.t:
remove hard tabs
08:40
08:48 dip joined 08:52 Hunger left 10:12 fperrad joined 10:24 bacek left 10:37 bacek joined
dalek rrot: r49670 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
Don't validate dead objects.
10:43
rrot: r49671 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
Wrap validating functions in ifndef NEBUG.
10:53 jsut_ joined 10:58 jsut left 11:25 uniejo joined 11:28 contingencyplan left 12:20 zostay left 12:25 bluescreen joined 13:12 mikehh left 13:26 estrabd joined 13:55 uniejo left 13:57 PacoLinux joined 13:58 uniejo joined 13:59 uniejo left 14:12 mikehh joined 14:26 Hunger joined 14:29 patspam joined
dalek rrot: r49672 | mikehh++ | trunk/t/pmc/io_stdin.t:
perlcritic complainred about 2 argument form of open and missing perl coda,

my attempts did not work, added coda
14:34
14:53 cognominal left 15:02 bluescreen left, bluescreen joined, cognominal joined
dalek rrot: r49673 | mikehh++ | branches/generational_gc/src/gc/gc_ms2.c:
[generational_gc] add missing ASSERT_ARGS and c function docs
15:06
15:47 awhitworth joined 16:16 dmalcolm joined 16:26 awhitworth left 16:28 brianwisti joined 16:30 davidfetter left, davidfetter joined
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:31
16:32 awhitworth joined 16:39 Andy joined
dukeleto waves hello from the Git Together 2010 16:55
16:56 shockwave joined
awhitworth hello duke 16:56
16:56 awhitworth is now known as whiteknight
cotto a wild whitworth appears 16:59
dukeleto awhitworth: hola 17:00
whiteknight uses hyperbeam
17:01 contingencyplan joined
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?
dukeleto davidfetter: yearly Git developer conference 17:02
git.wiki.kernel.org/index.php/GitTogether10
whiteknight dukeleto: a personal shortcoming. I should have mentioned PL/Parrot
dukeleto whiteknight: pl.parrot.org for more info 17:04
whiteknight: and just ask me a question if you have one
davidfetter wonders where the aforementioned blog post is 17:06
cotto davidfetter, wknight8111.blogspot.com/2010/10/ca...tique.html 17:07
whiteknight dukeleto: how did you get that url set up?
cotto one of several blogs on planet parrot
dukeleto whiteknight: which URL? 17:08
davidfetter interesting :)
dukeleto whiteknight: pl.parrot.org ?
whiteknight yeah
is that in the parrot.org sphere of things, or is it separate?
dukeleto whiteknight: the OSUOSL peeps added a DNS entry to my server, so it doesn't run on parrot.org 17:09
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:10
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
ok
brb food 17:12
17:13 shockwave left 17:39 Khisanth left, Khisanth joined
whiteknight ah, I forgot how good and cheap food in the city can be 17:44
I'm certainly no healthier for it, but it was fast and cheap
cotto msg++ 17:47
davidfetter wonders which city, and what "fast" and "cheap" mean in this context 17:53
whiteknight philadelphia. Got a 12 inch sandwich for 3.75$ in about 4 minutes 18:06
people from other places might not recognize the value of the almight hoagie 18:22
davidfetter o/` to all my bulls out in philly... o/` 18:26
whiteknight surprisingly, not too many bulls out here 18:27
mostly people
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
whiteknight shit. After reading this, I may go away disappointed 18:32
I'm going to write up about a bajillion deprecation notices
because: screw this
atrodo whiteknight> Calling it an API is generous. It's more like internal functions called an API 18:34
cotto libparrot as our primary product is a new and good idea 18:35
or at least a major product
whiteknight when you think about fakecutables, for instance, they are new, custom front-ends over libparrot
that's going to be the primary interface for most HLLs, I assume
18:36 kj joined
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
whiteknight I have a question though: should functions in src/embed.c have the form "Parrot_xxx_..."? 18:38
the ones in src/extend.c have "Parrot_ext_...", or they should
Parrot_api_... is a nice idea
or Parrot_emb_...
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:40
cotto Why not hammer out a consensus and use PARROT_API and _EXPORT? 18:41
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:43
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:44
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
18:45 kj is now known as kjs
dukeleto cotto: they are open to parrot stuff, but perl stuff gets ranked higher 18:45
github.com/leto/proposals/blob/mast...edding.pod 18:46
whiteknight: the biggest improvement you could work on for embedding is making the docs actually reflect reality, and not be empty
whiteknight: and iterate on from there
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:51
dukeleto atrodo: yes please. Are you volunteering? 18:54
atrodo Only if nobody gets to it before I do
cotto deal 18:55
18:56 brianwisti left
dukeleto I would be interested in writing a high-level document for "How to I start a project that embeds Parrot" 18:57
would anybody be interested in reading that?
whiteknight I'm definitely planning to do some API design work. atrodo, wanna be my buddy? 18:58
dukeleto: yes, that would be fantastic
cotto dukeleto, +yes 19:01
atrodo whiteknight> Sure, sounds like a good time for all
whiteknight what I may need to do is start an embedding project of my own, so I can see the problems first-hand 19:02
There are plenty of programs I use that support plugins, and a parrot plugin would be nice to have: pidgin, xchat, etc 19:03
cotto the GIMP would be interesting 19:05
whiteknight it would be, but I don't really use the GIMP
cotto ditto
bacek aloha, humans
whiteknight 01101010, bacek
cotto 1001001020100101 bacek 19:06
whiteknight Don't worry bender, there is no 2!
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.
dukeleto whiteknight: no no no, you don't need to start another embedding project. You already have a commit bit on PL/Parrot :)
whiteknight: you have for a while
whiteknight dukeleto: ha! I would love to help, but that sort of defeats the purpose
dukeleto whiteknight: defeating what purpose?
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
whiteknight the end-goal here isn't a new embedding project, it's an improved embedding API for Parrot
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
whiteknight: you don't need to know squat about postgres
whiteknight: i didn't know a thing about postgres internals before PL/Parrot
whiteknight: i did all the hard work
whiteknight: you just need to look at how Parrot is involved
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?
NotFound: I thought it was
cotto hi kj
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.
NotFound whiteknight: ack it
dukeleto whiteknight: i have made *many* tt's
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
dukeleto whiteknight: yes sir.
whiteknight +1 19:12
cotto thought of Lua as a good example of a popular embedded language too
dukeleto indeed. Everybody is embedding Lua 19:13
cotto The video game emulator community has done some really neat things with it.
dukeleto The Nmap project uses Lua as an embedded scripting language 19:14
atrodo nmap could be a good embed target 19:15
whiteknight I'm thinking I want to look at xchat or pidgin 19:17
both of which should be pretty easy and straight-forward
dukeleto Famous last words. 19:18
PerlJam dukeleto: I think you mean "infamous last words" :-) 19:19
NotFound This is a good example of a simple project for embedding: www.linuxjournal.com/article/2901
dukeleto PerlJam: yep, that has a nice ring to it.
cotto It hardly matters what the project is since it's primarily an exercise in getting the api down. 19:20
whiteknight exactly
kjs hi cotto
whiteknight I could embed into BigBobsManureCalculator for all I care
NotFound A prpject to big leads to the temptation of forgeting the api and using whatever.
cotto It might even be beneficial to have multiple people working on different embedding projects at the same time.
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.
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?
dukeleto whiteknight: but of course you are free to start as many embedding projects as you like
whiteknight: i've done a lot of the hard things and know where all the sharp edges live
19:23 wagle left
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
dukeleto whiteknight: sure, but take time into consideration.
NotFound Sometimes I think that the better example of parrot embedding should be parrot itself: make the main executable use only the public api.
whiteknight I will definitely look at PL/Parrot too 19:24
NotFound: Exactly!
dukeleto whiteknight: gerd++ just made an rpm of PL/Parrot, so it should be easier to install
whiteknight: but we obviously still need more docs and examples
whiteknight obviously 19:25
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:26
whiteknight yes 19:27
19:27 wagle joined
whiteknight NotFound: you interested in joining the product management team? :) 19:27
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
dalek rrot: r49674 | mikehh++ | branches/generational_gc/src/gc/gc_ms2.c:
[generational_gc] add some casts to get g++ to build
19:29
NotFound whiteknight: examples/embed/cotorra.c is a start of that idea. 19:30
whiteknight yes, I read that
I think we need to decide where IMCC lives. Is IMCC part of libparrot, or is it an external component? 19:38
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
dukeleto whiteknight: IMCC lives in a code cemetary
whiteknight IMCC is just a prototype example 19:40
any compiler could be written in Lex/Yacc or ANTLR and loaded in as the frontend to libparrot
that's exactly what people would want if they are concerned about the performance of NQP and PCT 19:41
or if they already have a compiler laying around and are just looking to port it to a more feature-full backend 19:42
take the PHP compiler and just dump it onto libparrot to get instant unicode support, for instance
(I know there are more steps than that, i'm glossing over them) 19:43
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:45
Adding a lot of functionality to the packfile PMCs, for example. 19:46
whiteknight we need to do that anyway. The packfile PMCs are in huge need of a rewrite 19:47
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
nobody in the world should use struct PackFile or any of it's bastard children directly
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?
whiteknight PerlJam: "ZOMG Fantastic!"
PerlJam whiteknight: What's libparrot then?
whiteknight a bytecode runtime engine 19:53
PerlJam Are they the same or different?
whiteknight are what the same?
PerlJam libparrot and Parrot
whiteknight no 19:54
libparrot is the engine. Parrot is the CLI
PerlJam Hmm.
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.
whiteknight we could be so precise, yes 19:57
PerlJam And I think that maybe that's part of "parrot the project"'s problem.
Different people are thinking about the "same" thing quite differently.
whiteknight how so?
we already know we have branding and marketing problems 19:58
I do get a little bit weary of using a capital letter to distinguish between two separate things 19:59
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:00
whiteknight well, that seems like motivation to rip out PIR and separate it from the rest of Parrot 20:01
because PIR is certainly not a "product" that I want people to be thinking of immediately
cotto Post-Lorito, we'll be able to severely deemphasize PIR for an Lorito overlay. 20:06
davidfetter wonders whether Lorito comes in Cool RanchĀ® flavor 20:07
20:10 M_o_C joined
dalek rrot: r49675 | bacek++ | branches/generational_gc/src/gc (2 files):
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
rrot: r49676 | bacek++ | branches/generational_gc/src/gc/gc_ms2.c:
Use combination of Pool.is_maybe_owned and PObj flags in GC.is_*_ptr.

testing of all live objects.
whiteknight I loves me so bacek 20:21
he;s going to get this GC done through sheer force of will 20:22
20:27 nwellnhof joined
davidfetter bacek++ :) 20:30
bacek Speaking of which... 20:36
I _do_ need more eyes on gen_gc branch...
Looks like I still collect some globals prematurely.
nwellnhof bacek: I've been thinking about gc_ms2_bring_them_together and I think I found a case that doesn't work. 20:37
Consider the following example: 20:38
1. There are three object A, B, C in generations 2, 0, 0. They have the following references: A2 -> B0 -> C0.
2. There is a gen0 GC. The objects from gen0 are promoted to gen1. So we have A2 -> B1 -> C1.
3. Then bring_them_together is called. IIUC, this will move only B to gen2. So we have A2 -> B2 -> C1.
4. Now there's a new intergenerational reference from B to C that we don't track.
bacek nwellnhof, hmm... It's possible. 20:39
nwellnhof, actually, bring_them_together will start with A. Which will bring B into gen2. Which will bring C into gen2 20:40
moving objects between gens will add them into objects[gen] list. 20:41
Bringing B into gen2 will advance objects[2]->last
So, while(tmp) loop in bring_them_together will process B
(At least this is what I expect :) 20:42
nwellnhof Yes, you might be right.
But if bring_them_together works recursively it will copy many objects to an older generation. 20:43
20:43 brianwisti joined
nwellnhof So we probably don't make much use of generation 1. 20:43
I think we should keep the root_objects list and maybe filter it. 20:44
bacek nwellnhof, yes. But objects into gen2 will be pushed after collecting of gen1 20:45
anyway. It's $dayjob time.
See you soon.
20:50 jjore left 20:53 jjore joined 20:57 whiteknight left 21:01 kjs left
mikehh nwellnhof: can you check r49672 - t/pmc/io_stdin.t is still failing perlcritic at line 49 21:09
21:12 dngor joined
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 ~~
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:27
21:28 perlite joined 21:29 perlite_ left 21:30 M_o_C left 21:31 lucian joined, bluescreen left, fperrad left
nwellnhof bacek: I just tried to build the gen_gc branch and got a error when building compilers/tge/TGE/Parser.pir 21:32
bacek_at_work nwellnhof, with optimization? 21:33
nwellnhof yes
bacek_at_work on Linux/i386?
nwellnhof yes
bacek_at_work It's good. Because I have same error on my box :)
"Looks like I still collect some globals prematurely." 21:34
Try to rebuild without optimization. It works on my machine...
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.
I didn't have time to investingate it this morning. 21:36
dalek rrot: r49677 | NotFound++ | trunk (2 files):
delete deprecated method lower in String PMC, TT #1606
21:48
nopaste "bacek" at 192.168.1.3 pasted "Temporary hack for pmc2c." (23 lines) at nopaste.snit.ch/24866 21:49
bacek_at_work nwellnhof, take a look at nopaste.snit.ch/24866. It can help fighting bug in optimized builds 21:50
cotto aloha, 850/720 21:52
aloha cotto: 1.18055555555556
cotto aloha, 1/850/720
aloha cotto: 1.63398692810458e-06
cotto aloha, 720/850
aloha cotto: 0.847058823529412
bacek_at_work nwellnhof, better to change it to if (_self && PObj...) 21:53
heh. Now it's properly dies in miniparrot! 21:54
22:06 shockwave joined 22:07 davidfetter left 22:08 davidfetter joined 22:13 brianwisti left 22:24 shockwave left
dalek rrot: r49678 | nwellnhof++ | trunk/t/pmc/io_stdin.t:
[t] Use three-argument form of perl open
22:50
22:50 kid51 joined
kid51 ~~ 22:57
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.
dukeleto kid51: i need many 22:59
kid51: that is just the first
kid51: i will create tickets for you as I realize I need them :)
kid51: but i can create an intro/overview of rtems for parrot peeps 23:00
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:04
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:06
And, if RTEMS is essentially one feature, we may want multiple C probes within a single config step. 23:07
cotto sees why whiteknight usually has several blog posts in the pipeline 23:08
23:10 Andy left
cotto atrodo, ping 23:10
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
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
cotto: what is it then?
I am fine with making it a C probe, that is actually what I meant.
cotto a couple #ifdefs in some headers, as needed
dukeleto I was conflating config step and C probe.
cotto: i need access to it in parrot_config
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.
dukeleto kid51: rtems.com
cotto: yes
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?
dukeleto kid51: it will be used when we have a full port of Parrot on RTEMS 23:20
cotto: we can't call exit()
cotto: we need to have an API for defining what to do when we "exit"
cotto: that api can be a single function which sets a function pointer to call on "exit" 23:21
cotto: exit() on RTEMS reboots the OS
cotto: so a syntax error reboots the OS, which sucks
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
cotto: when you have a few free minutes, could you write a realtime GC too? We need one of those ;) 23:23
cotto: but we can get away with -G for a while
cotto I can write one, but you won't like it.
not after a few minutes of effort, anyway 23:24
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:28
23:29 davidfetter left
cotto s/dtry/dtrt/ 23:30
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:32
cotto: rtems is very close to getting dlopen working, so for now, dynamic loading doesn't exist on it yet 23:33
cotto: but they are very close to putting it in their HEAD
cotto ok. So it wounds like an rtems-specific parrot_config value would be at best a temporary solution. 23:34
s/wounds/sounds/
23:35 dngor_ joined
dalek rrot: r49679 | nwellnhof++ | trunk/src/io/unix.c:
[io] Throw exception on read error
23:36
23:37 patspam left 23:39 dngor left
dukeleto cotto: it shouldn't be temporary 23:39
cotto: we need operating system info in parrot_config 23:40
cotto: rtems is a new OS
cotto: so we need to store info about it in parrot_config
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
cotto: because rtems has a custom compiler toolchain
cotto dukeleto, is there anything wrong with parrot_config['osname']? 23:41
dukeleto nwellnhof: ping 23:42
cotto: nope, that is fine with me
aloha, msg nwellnhof tests for r49679 would be greatly appreciated
aloha dukeleto: OK. I'll deliver the message.
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.
nwellnhof: if you want to hack on branches, then you can do whatever you want
nwellnhof: and thank you very much for fixing that :) 23:44
23:44 kid51 is now known as kid51_at_dinner
nwellnhof dukeleto: for some things it's five times more work to write tests. 23:45
23:46 kid51_at_dinner is now known as kid51
dukeleto nwellnhof: I am very aware of that. But breaking trunk in a subtle way is worse 23:46
cotto too
kid51 nwellnhof I second dukeleto on this. We cannot have untested commits to trunk.
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
dukeleto nwellnhof: that bug fix probably deserves a mention in NEWS as well 23:48
23:50 whiteknight joined
nwellnhof dukeleto: any commit can break trunk in subtle ways. adding test cases for a fixed bug is a different thing. 23:50
dukeleto nwellnhof: How so? 23:52
nwellnhof: if you think you might break trunk in a subtle way, make a branch. 23:53
We should not be committing directly to trunk, by default.
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.
nwellnhof: if it doesn't work to begin with, we don't care about regressions
whiteknight tests can be used for a variety of reasons 23:56
tests on new features prove the feature works. Tests on fixed bugs prove the bug is fixed. All tests can prevent regressions
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:57
atrodo cotto> pong 23:59