|
#parrot Parrot 0.5.2 Released | parrotcode.org/ | see www.parrotcode.org/misc/parrotsketch-logs/ for logs Set by moderator on 6 February 2008. |
|||
| Tene | lolcode patch sent. I'm confident that this patch is decent, and 'make test' passes. | 00:03 | |
|
00:13
rdice joined
|
|||
| svnbotl | r25634 | chromatic++ | trunk: | 00:23 | |
| : [src] Replaced a magic constant about the size of the destination STRING to | |||
| : preallocate with a much smarter heuristic: the destination has to be at least | |||
| : the size of the format string, but doubling that size will help us avoid the | |||
| : first reallocation when substituting into it. | |||
| : Not only is the code clearer, but we avoid at least one potentially-slow memory hit and waste less memory on smaller strings. | |||
| : I also cleaned up some formatting in this function while it was hurting my | |||
| : eyes. It's far too deeply nested, but I mitigated some of the damage. | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25634 | |||
|
00:26
wknight8111 joined
|
|||
| simcop2387 | ok i'm fairly new to parrot and just playing around, but it seems that pbc_merge fails with a segfault for me when i try to use it to merge a pbc that was compiled with .HLL 'Lua', 'lua_group' set, so i guess my question is, have i done something i'm not supposed to or is pbc_merge? | 00:29 | |
| pbc_merge not doing something its supposed to* | |||
| adu | simcop2387: interesting | 00:35 | |
| simcop2387: I'm new too, I've never heard of pbc_merge | 00:36 | ||
| simcop2387 | adu: that was my thought too, sounds to me like a bug in pbc_merge and something to test for in the future but i've got no clue how to fix it | ||
| i'm currently playing around with mixing lua and pir and turning them into an executable for the heck of it, but i've run into this | 00:37 | ||
|
00:37
chromatic joined
|
|||
| chromatic | pbc_merge is probably doing something untoward. | 00:37 | |
| The best thing to do is run the program under the debugger and post a backtrace to parrotbug@perl.org. | 00:38 | ||
| simcop2387 | thats what i figured, i'll have to figure out why gdb doesn't find any symbols but thats another problem (probably because i did it wrong quickly) | ||
| ok... it works fine in the parrot directory... segfaults outside of it | 00:40 | ||
| i'm missing something here... | |||
| svnbotl | r25635 | chromatic++ | trunk: | 00:41 | |
| : [src] Remove string_nprintf(), which is unused except in t/src/sprintf.t. If | |||
| : we need it later, we can get it out of SVN. Closes RT #44053. | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25635 | |||
| Tene | Hmm. That lolcode patch I sent hasn't showed up on RT yet. | ||
| chromatic | It probably can't load the dynpmc shared library (lua_group.so, right?) and doesn't have a check for it. | ||
| simcop2387 | thats what i'm thinking now | 00:42 | |
| wknight8111 | What are PMC's, exactly? I'm having a lot of trouble in the code and documentation finding out what they are and what role they play | ||
| chromatic | They're the fourth type of primitive in Parrot. | 00:43 | |
| The other three primitives are integers, floats, and strings. | |||
| A PMC is anything that's more complex, including aggregates, objects, coroutines, and threads. | |||
| There's a standard PMC interface which describes operations that all PMCs must implement; that's the vtable interface we talk about sometimes. | 00:44 | ||
| The semantics of that interface depend on the PMC, but every PMC supports all of those operations in the sense that you can perform them on the PMC without crashing Parrot. | |||
| You might get an exception, but you can catch exceptions more easily than segfaults. | 00:45 | ||
| wknight8111 | okay, thanks. That helps a lot | ||
| chromatic | You're welcome. | ||
| simcop2387 | chromatic: yep that looks like the problem exactly (symlinked the runtime directory into place where i'm building it and it works fine, i'll file a bug as soon as i figure out a good way to describe it) | 00:46 | |
|
00:46
kid51 joined
|
|||
| chromatic | I'll be sure to take a look at the report. There may be a simple solution. | 00:47 | |
| simcop2387 | k | 00:48 | |
| adu | wknight8111: so far as I understand them, a PMC is vaugely similar to an IObject interface | 00:51 | |
|
00:52
Theory joined
|
|||
| wknight8111 | thank you | 00:56 | |
|
01:13
AndyA joined
|
|||
| svnbotl | r25636 | jkeenan++ | ports: | 01:46 | |
| : This branch was intended to accommodate development of a module for | |||
| : detecting macports during configuration, but will not be needed. | |||
| r25637 | jkeenan++ | trunk: | |||
| : Tag may be deleted because the branch it was marking has been deleted. | |||
| r25638 | jkeenan++ | trunk: | |||
| : Tag no longer needed. | |||
| r25639 | jkeenan++ | trunk: | |||
| : Tag no longer needed. | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25639 | |||
|
02:56
slightlyoff joined
03:33
petdance joined
|
|||
| diakopter | weird, I do not know why svnbotl stopped giving diff URLs | 03:44 | |
| petdance | chromatic: Did you mean to remove string_npsrintf but not do so? | ||
| chromatic | I thougth I did. | 03:45 | |
| thought | |||
| petdance | you didn't. | ||
| or didn't comit at least. | |||
| Andy | That's OK, I'll do it. | 03:46 | |
| chromatic | Okay, thanks. | 03:48 | |
| svnbotl | r25640 | jkeenan++ | trunk: | 03:50 | |
| : Applying patches supplied by Alan Rocker documenting more C functions. | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25640 | |||
| r25641 | petdance++ | trunk: | 03:56 | ||
| : add a macro PARROT_HAS_SAL for the SAL annotations in MSC | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25641 | |||
| Andy | chrmoatic: Maybe you just removed the tests? | 04:12 | |
| chromatic: Maybe you just rmeoved the tests? | 04:13 | ||
| chromatic | I did. | 04:20 | |
| Forgot to commit src/string.c. | |||
| Andy | you gonna commit it or am I? | ||
| chromatic | Just did. | 04:21 | |
| Andy | k | ||
| chromatic | Thanks for the check. | 04:24 | |
| Andy | SO what can we do about all the uninitialized memory usage? | 04:25 | |
| svnbotl | r25642 | chromatic++ | trunk: | ||
| : [src] Actually remove string_nprintf(), which I forgot to do in r25635. | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25642 | |||
| Andy | we've got 94 unintialized usages, and only 48 leaks | 04:26 | |
| Tene | sjansen++ # useful feedback, can actually read a spec. | 04:44 | |
| svnbotl | r25643 | petdance++ | trunk: | 04:57 | |
| : remove a trailing space | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25643 | |||
| Andy | Mmmm, interesting: By using one of the _zeroed_ macros, I gain a bunch more of uninitialized usages. | 05:02 | |
| svnbotl | r25644 | petdance++ | trunk: | ||
| : use the malloc wrapper macros more | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25644 | |||
| chromatic | Uninitialized how? | 05:21 | |
| I'm starting to wonder if those uninitialized uses are coming from the stack scanning code. | |||
| svnbotl | r25645 | petdance++ | trunk: | 05:40 | |
| : using more wrapper macros | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25645 | |||
| Andy | chromatic: where's the stack scanning stuff? | ||
| chromatic | trace_system_areas() I believe. | 05:41 | |
|
06:04
keijohz joined
|
|||
| keijohz | has anyone tried to use parrot in a game engine environment? | 06:04 | |
| or would there be any major obstacles doing it? | 06:05 | ||
| Andy | Prob'ly not | ||
| chromatic | The embedding interface isn't entirely mature, but trying it is a good way to help get it mature. | ||
| keijohz | and how is the performance comparable to say Mono / Lua / plain C? | 06:06 | |
| i guess it will still be optimized, but i just want to have a vague ideia | 06:07 | ||
| chromatic | It's slower with Parrot, partly because Parrot's more flexible and partly because we haven't optimized much. | ||
| My guess is probably a little bit slower than Lua, but not by an order of magnitude. | |||
| keijohz | ok thanks | ||
| chromatic | Possibly faster in some ways. | 06:08 | |
| keijohz | also can we control when garbage collection runs? | ||
| chromatic | Yes, from either C or Parrot bytecode. | 06:09 | |
| keijohz | neat. :) | ||
| Andy | huh. NOT calling trace_system_stack() causes a segfault. | 06:14 | |
| chromatic | Yeah, PObjs in registers and on the stack will get collected. | 06:15 | |
| CPU registers, that is. | 06:16 | ||
| You could temporarily comment out the calls to sweep and recollect, if you're debugging what I think you're debugging. | 06:19 | ||
| Andy | I'm just flailing, really | 06:20 | |
| I don't get what pobject_lives does. | |||
| chromatic | It's the mark part of mark-and-sweep. | ||
| All of the live GCable objects in the system should be reachable. | 06:21 | ||
| Andy | So it's really "mark_pobject_to_live" | ||
| chromatic | Yep. "Don't collect this PMC/Buffer/String during the sweep phase of GC." | ||
| Andy | Sounds like we might use a s/pobject_lives/mark_pobject/g | 06:22 | |
| chromatic | I want to make one more change to the function if we change it. | ||
| Instead of the if POINTER IS NOT NULL/then pobject_lives | |||
| I want to move the if POINTER check into pobject_lives. | |||
| This actually solves a problem that we'd have with a copying collector. | 06:23 | ||
| Andy | go ahead | 06:24 | |
| chromatic | We can swap the internals of the macro if we use a copying collector -- in that case, before doing the check on the location where we have the pointer to the PObj, we check to see if something else in the mark phase has copied the PObj to a new pool. If so, we update the pointer to point to the new location. | ||
| Otherwise, we copy it to the new location and update the old location with the new location. | |||
| Andy | which macro? | 06:25 | |
| purl | rumour has it which macro is this? =-) | ||
| chromatic | Well whatever pobject_lives is. Macro or function. | 06:26 | |
| Andy | function | ||
| purl | i think function is called from all over, including src/ops/io.ops and lib/Parrot/OpLib/core.pm. but I don't think anyone calls the macros except io.c itself. | ||
| chromatic | purl, forget function | 06:27 | |
| purl | chromatic: I forgot function | ||
| chromatic | Thus we get to keep all of our lovely marking code, but we avoid (mostly) the trouble of updating references with a copying/compacting collector. | 06:28 | |
| svnbotl | r25646 | petdance++ | trunk: | ||
| : teeny documentation | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25646 | |||
|
06:31
Ademan joined
|
|||
| chromatic | I'm not entirely sure how it works for pointers in system areas though. | 06:31 | |
|
06:47
zostay joined,
zev_ joined,
MikeJS_ joined,
Coke_ joined
06:52
Andy joined
06:55
diakopter joined
06:58
japhb joined,
simcop2387 joined
07:00
TimToady joined,
man_in_shack joined
|
|||
| Andy | oh look, potential null derefs | 07:00 | |
| In fact, all-but-guaranteed null derefs | 07:03 | ||
| ok, I am so pleased for tonight | 07:15 | ||
|
07:16
uniejo joined
|
|||
| chromatic | Down with null derefs. | 07:19 | |
| Up with miniskirst. | |||
| aw it wasn't that clever anyway. | |||
| AndyAway | SO PLEASED | 07:20 | |
| All those "use of uninitialized memory" is really NULL derefs | |||
| Or rather, all those NULL derefs were "use of uninitialized memory" | |||
| although clealry the reverse may not be true. | |||
| svnbotl | r25647 | petdance++ | trunk: | ||
| : This little || should have been &&. Otherwise, we dereference NULL. | |||
| : Thanks, splint! | |||
| : Diff in runs from running valgrind on "hello world": | |||
| : 4974c2974 | |||
| : < ERROR SUMMARY: 973 errors from 99 contexts (suppressed: 14529 from 5) | |||
| : --- | |||
| : > ERROR SUMMARY: 879 errors from 59 contexts (suppressed: 14529 from 5) | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25647 | |||
| chromatic | Are you *sure* about r25647? | ||
| AndyAway | AHA | 07:21 | |
| chromatic | Actually, I've just convinced myself. | ||
| Andy | Some of these are two derefs in succession. | 07:22 | |
| It'll complain about dod.c:199 and then dod.c:203 | |||
| we could probably throw an assert in pobject_lives and go from there. | |||
| but now, I must head to bed. | 07:23 | ||
| chromatic | I'll try that tomorrow. | ||
| svnbotl | r25648 | fperrad++ | trunk: | 07:27 | |
| : [Lua] | |||
| : - aligned with Lua 5.1.3 (part 1) | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25648 | |||
|
07:34
paq joined
07:53
iblechbot joined
08:38
shamu joined,
arcady joined
08:39
HG` joined
08:40
SCalimlim joined
08:59
nina29 joined
|
|||
| svnbotl | r25649 | chromatic++ | trunk: | 08:59 | |
| : [src] Changed raw assert() calls to PARROT_ASSERT(), which gives us a nice | |||
| : backtrace when it fails (at least for certain platforms that support it). | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25649 | |||
|
09:00
alvar joined
|
|||
| Tene | Mmm... much nicer. | 10:01 | |
|
10:07
IllvilJa joined
10:24
ruoso joined
11:56
mj41 joined
12:08
rdice joined
12:42
mire joined
13:06
MagNET joined
|
|||
| svnbotl | r25650 | fperrad++ | trunk: | 13:06 | |
| : [install] | |||
| : - add punie & pynie | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25650 | |||
|
14:13
gryphon joined
14:58
Andy joined,
jhorwitz joined
15:00
davidfetter joined
|
|||
| svnbotl | r25651 | petdance++ | trunk: | 15:04 | |
| : more malloc macro retrofitting | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25651 | |||
| r25652 | petdance++ | trunk: | 15:17 | ||
| : remove an unnecessary assert.h | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25652 | |||
| r25653 | petdance++ | trunk: | 15:23 | ||
| : arg is really ARGMOD, not ARGIN. Thanks, splint! | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25653 | |||
|
15:24
drforr_ joined
15:54
ilbot2 joined
|
|||
| moderator | #parrot Parrot 0.5.2 Released | parrotcode.org/ | see www.parrotcode.org/misc/parrotsketch-logs/ for logs | ||
|
15:59
moritz joined
16:39
claes joined,
claes left
17:21
sjansen joined
17:23
Theory joined
17:37
parrot-poke joined
18:05
mire joined
18:06
mire joined
18:13
Theory joined
18:30
gryphon joined
18:41
Ron joined
19:25
davidfetter joined
19:28
coke joined
|
|||
| coke | will ya look at that. | 19:28 | |
| davidfetter looks around | 19:29 | ||
| at what? | |||
| coke | We have coke sign. | ||
| particle | hey there coke. | 19:31 | |
| coke | slow day today. | 19:50 | |
|
19:52
Pabellon joined
|
|||
| Tene | Nice, that means there's more time to get things done. | 19:52 | |
|
20:01
zaphod joined
20:35
zaphod joined
20:37
DarkWolf84 joined
20:41
kj joined
|
|||
| Andy | OK, you kow what sucks? | 20:45 | |
| When I'm the last person to have done a commit. | |||
| GET TO WORK PEOPLE!!!! | |||
| FASTER FASTER | |||
| sjansen | What's that you say? Free caffeine with each commit? | 20:46 | |
| Andy | YES YES YES GOD YES | ||
| FASTER | |||
| I think I'm gonna make Parrot_assert a func | 20:50 | ||
|
20:53
silug joined
|
|||
| coke | yes, but why. | 20:54 | |
| Tene looks for something to hacka t on rakudo. | |||
| zaphod | I think that PAST might need to mangle variable names to support lexical scoping as many languages would expect it. | 20:57 | |
| Tene | zaphod: explain? | 20:58 | |
| kj | zaphod: each scope has its own lexpad | ||
| no need for mangling, the var is just stored in a different lexical pad | |||
| zaphod | so pir has .lex, but it puts at compile time the lexicals in the lexinfo | ||
| kj | iiuc | ||
| zaphod | which means that when you do something like "my $x = 1; {my $x = $x +1; }" that $x in the inner scope is seperate from the $x in the outer scope. The "$x +1" is the outer scope $x | 20:59 | |
| but .lex will say that $x is in my inner scope, even though I haven't set it yet | |||
| kj | mmm | ||
| well it depends... | 21:00 | ||
| that is a declaration | |||
| but not declared YET | |||
| so first you evaluate the rhs | |||
| zaphod | doesn't work in pir | ||
| I've tried | |||
| kj | oh right | ||
| i was thinking symbol tables | |||
| pir is different | |||
| right. good point I think | |||
| find_lex used to take 3 arguments; one indicating what level of lexpad | 21:01 | ||
| (on a "stack" of lexpads) | |||
| but that's long gone | |||
| zaphod | that would be useful | ||
| otherwise the vars of closures and such are very "flat" and static | 21:02 | ||
| kj | mm i see what you mean | ||
| zaphod | which makes you have to mangle names to distinguish | ||
| kj | well preferably not mangling | ||
| that's such a primitive solution | |||
| imho | |||
| zaphod | I was thinking of hiding inside the PAST compiler | 21:03 | |
| hiding it | |||
| I don't want to hide inside a compiler | |||
| kj | better have parrot support it i think? | ||
| zaphod | might be right | 21:04 | |
| otherwise I have to admit I have a really hard time seeing the benifit of the lexpad stuff | |||
| useful for closures, but not for nested scopes | 21:05 | ||
| kj | there is ccurrently still a .namespace <ident> directive in PIR | ||
| it's deprecated, but I'm not sure if we should keep it ( i sent an email on that earlier; no reply yet) | 21:06 | ||
| zaphod | would it solve this problem? | 21:07 | |
| nopaste | "zaphod" at 79.207.244.211 pasted "lexical problem example" (19 lines) at nopaste.snit.ch/12306 | ||
| coke | .namespace is deprecated !? | ||
| kj | ehm. no, you're right. | ||
| only if a language doesn't use lexicals | |||
| coke: only the directive that happens to be spelled the same way | 21:08 | ||
| zaphod | which is probably quite seldom | ||
| kj | not the .namespace [] | ||
| coke: i mean the .namespace my_namespace / .endnamespace | |||
| zaphod | was the find_lex with the third arg to specify how far back in the stack to start searching? That would be perfect (maybe) | 21:09 | |
| kj | zaphod: yah something like that | ||
| -1 was the top level or whatever | 21:10 | ||
| -2 the level below that | |||
| it's been a few years back I think | |||
| since :lex was introduced I *think* | |||
| (uhm, since then it's gone) | |||
| zaphod | the main problem is that from the docs, as I understand it, there is no stack anymore | ||
| kj | well, it was a conceptual stack I guess | 21:11 | |
| mmm good point :-) | |||
| zaphod | so for a closure everything is squished together | ||
| kj | well, why not send this thing to list? | 21:12 | |
| zaphod | sure thing | ||
| kj | I think you have a point; but then again, I'm no expert in this field | ||
|
21:15
buildbot joined
|
|||
| coke | coke? | 21:21 | |
| purl, coke? | |||
|
21:22
coke left
21:46
purl joined
21:51
slightlyoff joined
|
|||
| Tene | purl: coke? | 21:52 | |
| purl | somebody said coke was mailto:coke@cpan.org or Will Coleda or the documentation monkey or seriously considering forking and starting with a dumber version of tcl that works on PCT | ||
|
22:03
paq joined
22:17
HG` joined
22:32
peeps[work] joined
22:35
Theory joined
22:37
TonyC joined
22:40
Limbic_Region joined
22:57
nopaste joined
23:03
TonyC joined
23:05
ruoso joined
23:06
wknight8111 joined
23:09
gryphon joined
23:17
ruoso joined
23:22
Limbic_Region joined
|
|||
| Coke_ | coke is also wcoleda@gmail.com | 23:28 | |
| purl | okay, Coke_. | ||
| svnbotl | r25655 | petdance++ | trunk: | 23:40 | |
| : reheaderized | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25655 | |||
|
23:47
ruoso joined
|
|||
| svnbotl | r25656 | petdance++ | trunk: | 23:47 | |
| : Added Parrot_assert() as a true assert wrapper around Parrot_confess(), because splint needs to operate on a function to understand the assert() semantics, not a macro | |||
| diff: parrotvm.org/svn/parrot/revision/?rev=25656 | |||