|
Parrot 4.3.0 "In Which..." | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 25 April 2012. |
|||
| whiteknight is adding winxed support to Geany | 00:00 | ||
| I think Geany might become my new editor of choice, unless I find some serious problems with it soon | |||
|
00:03
bacek_at_work joined
|
|||
| dalek | rrot/coke/rm_pasm: ec95e34 | Whiteknight++ | / (11 files): Back out the last change. It was too aggressive for this branch. We can start a new branch to take the PASM-kill work to the next level |
00:26 | |
| rrot/coke/rm_pasm: 872f2d3 | Whiteknight++ | / (45 files): Merge branch 'coke/rm_pasm' of github.com:parrot/parrot into coke/rm_pasm |
|||
| rrot/whiteknight/rm_pasm2: 7da89ee | Whiteknight++ | tools/dev/pbc_to_exe.pir: Fix pbc_to_exe to not use the PASM compreg or dead APIs |
00:36 | ||
|
00:38
dukeleto joined
|
|||
| whiteknight | wtf? Somewhere along the line PLA isn't linking to libblas now | 00:59 | |
| I'm adding -lblas to the commandline, but ldd says it's not linked to libblas | 01:01 | ||
| and then when I load it, it says it can't find the symbols from that library | 01:20 | ||
| bacek_at_work | whiteknight, you probably want to install something like libblas-dev package | 01:24 | |
| whiteknight | I have that | ||
| libblas.so apparently isn't exporting any symbols | |||
| it was exporting symbols back in 11.10 | 01:27 | ||
|
01:30
benabik joined
01:32
preflex_ joined
|
|||
| bacek_at_work | whiteknight, it's... impossible. | 01:34 | |
| whiteknight | bacek_at_work: maybe something is broken with nm on my machine. | ||
| nm: /usr/lib/libblas.so: no symbols | |||
| bacek_at_work | looks like nm is broken | 01:35 | |
| same on debian/testing | |||
| try objdump -T | |||
| whiteknight | ah yes, there are the files | 01:36 | |
| er, symbols | |||
| but that doesn't explain why my linker isn't fixing up the symbols | |||
| I am using clang. Maybe that's got the same problem as nm. I'll try gcc | |||
| bacek_at_work | afaik clang doesn't have linker and uses standard one | 01:37 | |
| eg "ld" | |||
| whiteknight | I think so too. But I'm still going to try gcc | 01:38 | |
| just in case | |||
| bacek_at_work | good luck | ||
| whiteknight | I don't need luck. I need more time | ||
|
01:39
kid51 joined
|
|||
| kid51 | whiteknight: ping | 01:39 | |
| whiteknight | pong | 01:40 | |
| kid51 | Looking at whiteknight/rm_pasm2 branch; I take it that it's not really ready for testing yet, right? | ||
| whiteknight | not at all | ||
| not even a little | |||
| kid51 | OK, FWIW smolder.parrot.org/app/projects/rep...ails/27956 | 01:41 | |
| whiteknight | it's just a place to dump some things that don't belong in coke/rm_pasm yet | ||
| ha! thanks | |||
| kid51 | Ah! | ||
| whiteknight | kid51++ | ||
| aloha | Karma for kid51 is now 94 | ||
| kid51 | However, while I'm on it I will correct one codingstd test :-) | ||
| whiteknight | :) | 01:42 | |
| dalek | rrot/whiteknight/rm_pasm2: 6ecf1e7 | jkeenan++ | src/pmc/imccompiler.pmc: [codingstd] Remove trailing whitespace. |
||
| whiteknight | blah, I'm still getting my new editor configured | 01:43 | |
| bacek_at_work: no, you're right. Same thing with gcc. Whatever, I'm going to wait for a while | 01:44 | ||
| benabik | ~~ | 01:50 | |
| kid51 | Hmm. We're failing 4 tests in t/benchmark/benchmarks.t | 01:59 | |
| That's new ... and disturbing. | 02:00 | ||
| and fails in t/examples/catchall.t | |||
| See: smolder.parrot.org/app/projects/rep...ails/27958 | 02:01 | ||
| Those are regressions since Apr 15 (i.e., since around last release) | 02:02 | ||
| whiteknight | blah, no time to look at it now. Time for bed. | 02:04 | |
| kid51 | msg moritz Commit 5c81f3ea1cf2 (merge of kill_current_object branch) causes failures in t/examples/catchall.t and t/benchmark/benchmarks.t | 02:16 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | nxed: be2b8e4 | NotFound++ | winxedst (2 files): rename getparamnum to generateparamnum for clarity |
04:04 | |
|
04:14
bacek_at_work joined
05:54
brrt joined
|
|||
| nine | *yawn* Good morning, #parrot | 06:13 | |
|
06:33
pjcj joined
|
|||
| cotto | 'morning, nine | 06:37 | |
|
06:44
fperrad joined
07:08
brrt joined
08:06
lucian joined
|
|||
| tadzik | hello #parrot | 08:25 | |
|
08:36
cosimo joined
08:47
alvis left
08:53
alvis joined
|
|||
| brrt | it would be so much fun if apache had a documented api | 09:48 | |
| as in, actual documentation, with full listings of headers, functions, structures | |||
| moritz | now you're just being greedy | 09:49 | |
| brrt | am i? | 09:52 | |
| :-) | |||
| parrot has it | |||
| i'm seriously considering writing a script to read the header files and spit out html right now | 09:54 | ||
|
10:34
JimmyZ joined
|
|||
| JimmyZ | Coke: ping | 10:34 | |
| dalek | rrot: e7d7c16 | moritz++ | / (9 files): fix failing tests after kill_current_object merge, kid51++ three are fixed by updating to non-ancient calling conventions (self as first invocant). The fourth was in PASM, and is now gone |
10:50 | |
| rrot/coke/rm_pasm: 057bee0 | jimmy++ | / (2 files): fixed t/pmc/sub.t, now all tests passed |
11:30 | ||
| rrot/coke/rm_pasm: 59bdc0e | jimmy++ | examples/benchmarks/oo4. (4 files): remove oo4.* from examples/benchmarks/ |
11:33 | ||
| awwaiid | particle, I met your brother here near DC yesterday at a ruby meetup :) | ||
| dalek | rrot/coke/rm_pasm: 8406a40 | jimmy++ | t/compilers/imcc/reg/alloc.t: fixed t/compilers/imcc/reg/alloc.t |
11:36 | |
| rrot/coke/rm_pasm: b4a5889 | jimmy++ | t/compilers/imcc/syn/symbols.t: fixed t/compilers/imcc/syn/symbols.t |
11:39 | ||
|
11:39
kid51 joined
|
|||
| dalek | rrot/coke/rm_pasm: ffdab27 | jimmy++ | t/op/string_cs.t: fixed t/op/string_cs.t |
11:40 | |
| rrot/coke/rm_pasm: 8179a57 | jimmy++ | t/pmc/bignum.t: fixed t/pmc/bignum.t |
11:49 | ||
| rrot/coke/rm_pasm: c0b29f8 | jimmy++ | t/pmc/coroutine.t: fixed t/pmc/coroutine.t tests |
11:51 | ||
|
11:52
benabik joined
|
|||
| dalek | rrot/coke/rm_pasm: 3490971 | jimmy++ | t/pmc/io.t: fixed t/pmc/io.t tests |
11:53 | |
| rrot/coke/rm_pasm: 41ab4a5 | jimmy++ | t/pmc/iterator.t: fixed t/pmc/iterator.t tests |
11:56 | ||
|
12:02
kid51_ joined
|
|||
| dalek | rrot/coke/rm_pasm: 1cd1c06 | jimmy++ | t/pmc/ (2 files): fixed t/pmc/nci.t and t/pmc/orderedhash.t |
12:02 | |
| rrot/coke/rm_pasm: d3e4fa6 | jimmy++ | t/compilers/imcc/syn/const.t: fixed t/compilers/imcc/syn/const.t tests |
12:05 | ||
| JimmyZ | msg Coke I fixed most failed tests | ||
| aloha | OK. I'll deliver the message. | ||
| benabik | G'morning, #parrot | 12:11 | |
| JimmyZ | morning benabik :_ | ||
| benabik | JimmyZ: Having a productive morning killing PASM? | 12:12 | |
| JimmyZ | benabik: not really, just fixed test | ||
| benabik | Fixing tests is good | 12:13 | |
| JimmyZ | kid51++, who submitted a smolder. | ||
| aloha | Karma for kid51 is now 95 | ||
| benabik | JimmyZ++ | ||
| aloha | Karma for jimmyz is now 40 | ||
| benabik | Huh. When did aloha start doing that? | ||
| eh. | 12:14 | ||
| JimmyZ | don't know, ask bacek | ||
| moritz | eeks. | ||
| aloha-- | |||
| aloha | moritz: Karma for aloha is now -68 (pffft) | ||
| benabik | sherk | ||
| *snerk | |||
| At least aloha didn't speak up after every commit from dalek. | |||
| moritz | karma jimmy | 12:15 | |
| aloha | jimmy has karma of 81. | ||
| JimmyZ | looks like I lost karma | ||
| :) | 12:16 | ||
| moritz | JimmyZ: no, you are just diversifying your karma over multiple nicks :-) | ||
| kid51_ | JimmyZ: IIRC, the smolder I submitted was for whiteknight's version of the rm_pasm branch. | ||
| I didn't get around to smoking Coke's branch yet | |||
| moritz | whiteknight has such a branch too? | ||
| JimmyZ | nope | 12:17 | |
| kid51_ | git branch -a | grep -i pasm | ||
| But backscroll about 11 hours to see whiteknight's explanation of it in this channel | 12:18 | ||
| moritz: did you get my msg about test failures? | |||
| moritz | kid51_: yes, thanks. I fixed them. | ||
| kid51_ | Danke | ||
| kid51_ to $job | |||
| JimmyZ didn't see that branch | |||
| moritz | I think it's stuff we should do after merging coke/rm_pasm | 12:20 | |
| benabik | What stuff? | 12:21 | |
| moritz | the stuff in whiteknight/rm_past2 | ||
|
12:21
mtk joined
|
|||
| JimmyZ | aye | 12:21 | |
| benabik | moritz: Freud suggests you have something against PAST. | 12:22 | |
| moritz | benabik: nothing efficient :-) | ||
| benabik | Ah. rm_pasm2 is about actually removing PASM from IMCC? | ||
| moritz | looks like, yes | 12:23 | |
| or at least preparing it | |||
| benabik | I don't see a particular reason to drag our feet about that past Coke's branch. | 12:24 | |
| moritz | benabik: now your're starting with past too :-) | ||
| benabik | moritz: "past" as in "beyond" as in "after we merge". ;-P | 12:25 | |
| moritz | benabik: I know :-) | ||
| benabik | moritz: :-) | ||
| dalek | kudo/nom: 1972721 | moritz++ | src/core/Backtrace.pm: warnings should include line numbers from user-space programs, not from the setting |
12:26 | |
| Coke | JimmyZ: thanks for getting the tests! | ||
| JimmyZ | Coke: :) | 12:27 | |
|
12:41
bluescreen joined
12:52
PacoAir joined
12:55
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:57 | |
| benabik | o/ whiteknight | ||
| whiteknight | hello benabik, how are you doing today? | 13:00 | |
| brrt | morning | ||
| noon, for me | |||
| whiteknight | hello brrt | ||
| brrt | hows life | 13:01 | |
| whiteknight | life is going well enough. you? | ||
| benabik | whiteknight: Pretty good. Short on sleep, but coffee keeps me going. | ||
| brrt | sleep shortness here as well, otherwise very good | ||
| i was offered a new appartment just this week, will be checking it out tomorrow | 13:02 | ||
| benabik | It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire shaking, the shaking becomes a warning. It is by caffeine alone I set my mind in motion. | ||
| brrt | funny thing, that americans associate java with coffee | 13:03 | |
| indonesia used to be the dutch east indies, we tend to associate it with the island :-) | |||
| whiteknight | benabik: how are things on the home front? Your wife must be getting ready to burst at the seams | ||
| benabik | The island of Java is where the Dutch started cultivating the beans. | ||
| So Java == island == coffee | |||
| brrt | very true, it is just not a very common association arround here | 13:04 | |
| benabik | whiteknight: She's hitting the stage I call "very pregnant". Still mobile and working (desk job), but complaining a lot more. | ||
| moritz | but that's an exciting phase, no? | 13:05 | |
| you can probably feel the small one moving occasionally | |||
| PerlJam | benabik: you should have heard my wife about week 36 when she was pregnant with twins. | ||
| benabik: *that* was very pregnant | |||
| benabik | PerlJam: I'm not allowed to use the T word around my wife. | ||
| whiteknight | that's nothing compared to the list of words you won't be allowed to use around the kid | 13:06 | |
| PerlJam | heh | ||
| whiteknight | that list includes all my favorite words! | ||
| I taught my son how to say "damnit" and "oh crap", and my wife got very very angry | |||
| moritz | parrot speaking your f<censored>ng language! | 13:07 | |
| whiteknight | :) | ||
| benabik | I tend to have better control over my language than my wife, so we'll see who blames who. | ||
| moritz | benabik: it'll still be all your fault :-) | 13:08 | |
| benabik | moritz: Oh, I'm sure. | ||
| moritz | our daughter currently picks up our habit to say "mhm" to mean "no", which is quite cute, considering that she speaks only half a dozen different words | 13:09 | |
| benabik | From what I hear "no" and its synonyms stop being cute very quickly. | ||
| moritz | well, she can already express disagreement quite clearly | 13:10 | |
| babys learn that very quickly :-) | |||
| brrt | whiteknight: anyway, i finally uploaded my private keys to github | 13:11 | |
| so now, i can push to github - yay - | |||
| whiteknight | yes, it's a good day. I saw some of your repos in the feed | ||
| brrt | apxs is a usefull tool, just a bit over-featured as far as i'm concerned | 13:12 | |
| benabik | Blarg. Ubuntu is making it difficult to protect my machines against the user. I just want to disable shutdown, why is this so hard? | ||
| brrt | i used to always have to type 'sudo shutdown' | 13:13 | |
| benabik | I didn't report to #ps, but it should have included "Blockers: Ubuntu" | ||
| brrt | so, iirc, not having to type sudo before shutdown is a pretty recent change | ||
| whiteknight | benabik: that would have been my report too | 13:14 | |
| moritz | is shutdown setuid-root on recent ubuntu? | ||
| benabik | brrt: Gnome and unity have had GUI shutdown options for a while now. | ||
| whiteknight | benabik: I found a better text editor than I used to have, and my kit is more streamlined now, so those are benefits | ||
| although PLA doesn't build on ubuntu now, because of a bug in the linker | 13:15 | ||
| benabik | I don't think so. But I think something root listens on D-Bus to trigger shutdown. | ||
| ... Bug... in the linker? | |||
| whiteknight | benabik: yeah, I was talking to bacek about it last night. nm and ld both tell me that libblas.so doesn't export any symbols, but objdump -T shows hundreds of them | 13:16 | |
| bacek said there was a problem in debian/testing, which I haven't followed up on yet | |||
| brrt | benabik: i know, but i used to run x non-root, so that never worked; also, i used to use slackware until that wasn't worth the effort anymore | ||
| Coke | JimmyZ: t/pmc/bignum.t is an easy fix. the macro is "fp_eq", not "fp_eq_ipr" | 13:18 | |
| *not "fp_eq_pir" | |||
| might need to regenerate the MANIFEST also. | 13:19 | ||
| JimmyZ | Coke: I don't have a bignum lib | ||
| Coke: so I can't test it | |||
| moritz | I can do that | 13:21 | |
| brrt | also, i install into /home/bart/usr now, so that speeds things up :-) | 13:23 | |
| Coke | moritz: danke. trying to avoid committing ATM. | 13:24 | |
| whiteknight | brrt: yes, it's a very good trick | 13:25 | |
| Coke: I ripped my commit out into a separate branch last night, so that shouldn't be causing any more troubles for you | |||
| dalek | rrot/coke/rm_pasm: 8f67a19 | moritz++ | t/pmc/bignum.t: fix bignum.t, Coke++ |
13:26 | |
| rrot/coke/rm_pasm: 38bc6ba | moritz++ | MANIFEST (2 files): regen manifest |
|||
| brrt | what would any of you advise if you were buying a new computer and energy-efficiency was really really important | ||
| netbooks don't count | |||
| whiteknight | I am getting into the market for a new laptop myself, but I don't have any recommendations yet | 13:27 | |
| brrt | too bad | 13:28 | |
| ultrabooks look attractive, but the screen is too small | |||
| whiteknight | I used to use a netbook a lot, the small keyboard was always the killer for me | 13:29 | |
| moritz | my last investigations into the market of small notebooks is two years in the past | 13:30 | |
| brrt | i like netbooks, but again, screen | ||
| moritz | I guess its result is now completely irrelevant :-) | ||
| brrt | my girlfriend has one, i'm jealous of it because of its efficiency, but i can't use one for myself | ||
| what are reasonable things to place in the blog? | 13:40 | ||
|
13:40
jashwanth joined
|
|||
| moritz | a short introduction, who you are, what you're going to work on, and why | 13:40 | |
| and then usually reports about progress, difficulties, fun and not fun while coding | 13:41 | ||
| brrt | the first thing, i already did | ||
| next thing, still have to do | |||
| whiteknight | brrt: blog posts can be as long or as short as you want. Basically, it's advertising to help tell people what cool stuff you're working on | 13:44 | |
| brrt | advertising, okay, cool :-) | 13:57 | |
| everybody is going to love mod_parrot | |||
| moritz | if you make it loveable, yes :-) | 13:58 | |
| whiteknight | By the end of the summer, if we have anything like a security sandboxing system able to be integrated, modparrot could become completely awesome | 13:59 | |
| brrt | definitely | 14:01 | |
| moritz | then we'll integrate it with Bailador (a Perl 6 clone of Dancer) | 14:02 | |
| whiteknight | that would be boss | ||
| brrt | that would be awesome, if you add some scaffolding | ||
| it would be awesome without | 14:03 | ||
| but scaffolding attracts lazy developers | |||
| whiteknight | I do want to put together a fastcgi interface for parrot too, but that's very low priority if modparrot is in the works | ||
| We've been trying to get a GSOC student to work on modparrot for years | |||
| and years | |||
| brrt | supposing modparrot works early - which i hope - then a fcgi interface could be possible, too | ||
| moritz | fastcgi is very nice in theory, but often hard to debug | ||
| but maybe it can be made more debuggable | 14:04 | ||
| whiteknight | yeah, that's why I'm not jumping on it | ||
| moritz: We can have pretty good backtraces available. Mix in a security sandbox where a failing child doesn't crash the process, we can have decent logging too | |||
| throw the whole mess into a debugging mode where all input/output is logged, and make all the stuff unit-testable, I think we can have a winner | 14:05 | ||
| Coke | moritz, whiteknight: you know you're both working on DB access libraries at the rakudo and parrot level, yes? | 14:06 | |
| brrt | i just ponder about a unit-testable mod_parrot | ||
| moritz | right, if you can record the requests and make them replayable, that would be awesome | ||
| brrt | as in, not the module itself, but applications using the module | ||
| whiteknight | Coke: I've just been playing around to check viability and learn the APIs. In the future I'll probably want to redo most of it in NCI | 14:07 | |
| moritz | brrt: sounds not too hard to do, if you provide a way to fill the request objects with mocked data | ||
| whiteknight | Coke: it makes a really great case for having dyncall support integrated into Parrot, so we can borrow back some of moritz's work for general use | 14:08 | |
| brrt | moritz: that sounds doable, too | 14:09 | |
| just need a mockapache | |||
| Coke | whiteknight: just wanted to make sure there was no surprise. ;) | 14:10 | |
| whiteknight | no, I've been following along with moritz's work closely | 14:11 | |
| brrt: that might be a bit of a stretch :) | |||
| moritz | Coke++ # ensuring communication | ||
| aloha | Karma for coke is now 589 | ||
| brrt | that depends on how much apache api you want to expose | ||
| php can get along very well with a rather minimal set | 14:12 | ||
| moritz | brrt: I'd recommend something like the PSGI/Plack API | ||
| brrt: which is well tested and well used in p5 land | |||
| and not too complicated | |||
| brrt | i read a bit about psgi | ||
| but i wonder if it should be mandatory | |||
| Coke misses all his old karma that was never imported into aloha. | 14:13 | ||
| brrt | as in, 'all parrot applications running apache whether python or not should use psgi' | ||
| Coke | . o O (but only a little) | ||
| moritz | brrt: psgi was very heavily inspired by a similar standard in python :-) | 14:14 | |
| brrt | i'll read up on psgi | 14:15 | |
| whiteknight | in the world where parrot is king, the perl guys can just take the python library wholesale | 14:16 | |
| pretend like they always thought it was a great idea :) | |||
| moritz | well, also if the APIs are similar, it's easy to make a small wrapper which ensure full compatibility | ||
| whiteknight | yes | 14:17 | |
| moritz | for Perl 6 we'll need type marshalling anyway, so we'll need some kind of custom wrapper | ||
| nine | Perl 5 guys can already take the python library... | 14:29 | |
| whiteknight | nine: but they don't have a great threading solution with high performance | 14:30 | |
| brrt | i do wonder a bit, how apache's per-request-memory-pool will relate to parrot | 14:31 | |
| i suspect that i can trust parrots' garbage collecting | |||
| whiteknight | you're going to have to trust it | 14:33 | |
| NotFound | Mostly because there is no other option ;) | 14:34 | |
| brrt | :-) | ||
| whiteknight | there aren't too many alternatives from inside parrot, but it is very decent in most ways | ||
| brrt | what about filehandles | 14:36 | |
| whiteknight | What do you mean? We have a FileHandle PMC type | ||
| brrt | i mean, filehandles should be auto-closed after each request | ||
| bascially, i imagine the following | |||
| every child process / thread in apache gets a parrot interpreter instance | 14:37 | ||
| whiteknight | A FileHandle gets closed when the GC collects it, if you don't manually close it before that | ||
| moritz | whiteknight: does it? I remember a bug report not too long ago that it doesn't | ||
| whiteknight | moritz: It's supposed to. There might be an issue that we aren't always finalizing GC on interp destruction | 14:38 | |
| NotFound | There are problems with order of destruction. | ||
| whiteknight | are there still? I thought we had most of those issues sorted out | ||
| moritz | aye. When I open a file for writing in rakudo, and don't explicitly close it, the file will stay empty | ||
| brrt | supposing i don't worry about that | ||
| whiteknight | brrt: definitely, that isn't your problem | 14:39 | |
| NotFound | whiteknight: don't know, I always close explicitly. | ||
| moritz | $ perl6 -e 'open(:w, "testfile.txt").say("foo")' | ||
| $ wc -l testfile.txt | |||
| 0 testfile.txt | |||
| whiteknight | NotFound: me too, but we shouldn't have to. That's what GC is supposed to be fore | ||
| for | |||
|
14:39
JimmyZ_ joined
|
|||
| whiteknight | moritz: okay, then I suspect finalization is turned off somewhere. I'll look into it | 14:39 | |
| brrt | then, after every succesful request, it'd be nice to either enforce garbage collecting, or otherwise reset the interpreter to a state where it is safe to load a new file again | 14:40 | |
| NotFound | Is possible that the buffer gets destructed before the handle. | ||
| moritz | fwiw for rakudo it would be very useful to have separate finalization and freeing stages | ||
|
14:40
jashwanth joined
|
|||
| moritz | so that if you have a cyclic object structure, their .DESTROY methods are all called, but they can still refer to each other | 14:41 | |
| and then a second sweep collects their memory | |||
| NotFound | brrt: you can enforce GC. set unwanted variables to null and execute a seep op | ||
| s/seep/sweep | |||
| whiteknight | moritz: I can talk to bacek about that. Might be possible without tanking performance | 14:42 | |
| moritz: is that only at interp shutdown, or for all GC passes? | |||
| moritz | whiteknight: for all GC passes | ||
| whiteknight: though I suspect would could mark objects that need such behavior on the C level somehow | 14:43 | ||
| whiteknight | I think we should be able to add swept items to a list as we find them, finalize them all at once then add the whole list to the free list | ||
| moritz: but we absolutely, positively would not be able to guarantee ordering with such a scheme. | |||
| brrt | NotFound: ok, very nice | ||
| whiteknight | parents could still be finalized before children, even if they were still technically all "alive" | 14:44 | |
| NotFound | You can put a reference to the handle in the buffer, for even better circularity ;) | ||
| moritz | whiteknight: I have trouble evaluating the consequences of that; maybe talk to jnthn about it? | 14:45 | |
| NotFound | Anyway I don't think that writing to a file and not closing it is a good idea, no matter how good the GC may be. | 14:47 | |
| moritz | I know; but perl programmers are used to get away with it most of the time | ||
| NotFound | close can fail, and you'll never know it. | 14:48 | |
| moritz | I know | ||
| whiteknight | in any case, we do need to make sure handles get closed. | ||
| Most other stuff is inconsequential compared to external system resources | 14:49 | ||
| moritz | I noticed while writing the SQLite backend for DBIish :-) | ||
| it leaked statement handles | |||
| whiteknight | It's almost like we want two VTABLE_destroy variants. One that should be called while the system is running, and one that is guaranteed to be called at system exit | ||
| NotFound | You can set a list of open handles and close them as first step of interp destruction. But that way before final destruction they are referenced and thus not collected ;) | 14:50 | |
| whiteknight | with the understanding that the second one should be used less often | ||
| moritz | in the end I decided to a keep a list of all active statements in the connection handle class, and finalize them all right before disconnect | ||
| whiteknight | NotFound: yeah, but that's a pretty specific solution. What if you have something that isn't a normal handle? | ||
| We'd need to include a C-level cleanup callback handler for each entry | 14:51 | ||
| NotFound | The common idea I read lately in both jvm and cli worlds is that depending on finalizers is The Bad. | ||
| whiteknight | yes, it definitely is bad. But our users expect that and we should be able to provide *something* | 14:52 | |
| moritz | anyway, we want to support langauges on top of parrot that have custom destroy handlers | ||
| whiteknight | yes | ||
| moritz | so we'd better support, even if it's not the brightest idea | ||
| benabik | whiteknight: Why does system_exit_destroy need to be different from destroy? | 14:53 | |
| NotFound | Yeah, but be ready to accept slowliness on custom finalized things. | ||
| whiteknight | I just worry that we're going to get into C++ territory, where we can have destructors but can make almost no guarantees about them, and hope and pray that you don't do anything stupid inside a destructor like allocate memory or call a destructor | ||
| or throw an exception | |||
| benabik: what do you mean? | |||
|
14:53
dmalcolm joined
|
|||
| NotFound | I think that continuation passing style and guarantees of destruction at funtion return are mutually exclusive. | 14:54 | |
| whiteknight | oh, my two destroy vtables above? it's about the environment. One expects a running system to still be available, the other should expect that the ship is going down and references are dead | ||
| even strings | 14:55 | ||
| benabik | C++ has very definite semantics for construction and destruction. | ||
| aloha | Karma for c is now 709 | ||
| benabik | aloha: shush | ||
| whiteknight | In the first case we can expect that the interp still exists, and interp globals still exist, etc. In the second, those things are most likely dead and gone | 14:56 | |
| moritz | if we go with a finalization and a freeing stage, why can't we just call finalize on all objects still alive, before freeing them? | ||
| NotFound | benabik: it has... but then read about mixing longjmp with it. | ||
| moritz | (during global destruction, that is) | ||
| whiteknight | moritz: we can definitely do that, but then we still run into ordering issues | ||
| moritz | that way all the objects still see a "normal" ennvironment | ||
| benabik | NotFound: That doesn't sound like a good idea. | 14:57 | |
| atrodo | moritz> Wouldn't that potentially invalidate the garage collection run? What if an object, in finalization, attach itself to a global object? | ||
| whiteknight | moritz: But at interp shutdown, do we want a 1 second pause while we finalize every PMC, or do we want a shorter pause where we only finalize the ones that hold external resources? | 14:58 | |
| I mean, freeing a FileHandle at interp exist is much much more important than freeing an Integer | |||
| we can let the system heap manager pull in most dead memory for free, but handles need to be closed | |||
| NotFound | A simple idea that probably solve some cases is to null the object root set and the perform a collection. | ||
| benabik | NotFound: Oh. longjmp at all causes issues with destruction because it bypasses normal control flow. I see. | 14:59 | |
| whiteknight | Again, why sweep all PMCs, when the vast majority of them don't need it? We need some kind of priority registry | ||
| moritz | whiteknight: yes, we should have a single bit in the PMC header that indicates if that objects needs custom destroy functionality | ||
| nopaste | "rurban" at 192.168.1.3 pasted "cygwin overflow rakudo spectest failures" (163 lines) at nopaste.snit.ch/137433 | ||
| benabik | Nulling the root set will catch everything but cycles. | 15:00 | |
| And cycles are... hard. | |||
| NotFound | benabik: aye. And in the same way an eventual finalizer in a parrot sub can be bypassed by invoking a continuation in that sub. | ||
| whiteknight | moritz: something like that, yes. We do a separate finalization run of GC, and only pay attention to PMCs in the alive set which have that bit turned on | ||
| that should avoid the performance hit and still give us a guarantee. Plus, all PMCs will stay alive since we don't sweep or free any of them | 15:01 | ||
| NotFound | Uh... we already have that bit. | 15:02 | |
| whiteknight | we do? | ||
| PObj_destroy? | |||
| benabik | PObj_custom_destroy_FLAG | ||
| whiteknight | Yeah, that's not exactly the same thing | 15:03 | |
| We don't want to finalize too much at interp shutdown. We only want to finalize the subset of things which hold external resources | |||
| Everything else will be automatically freed at program exit by the heap manager, and it's a waste of cycles to touch them | 15:04 | ||
| NotFound | whiteknight: You meen freeing the memory? | ||
| whiteknight | and calling VTABLE_destroy | 15:05 | |
| I probably need to think about this a lot more | 15:06 | ||
| NotFound | Well, if it hasn't custom mark nor custom destroy is almost sure that is dead from a GC point if view. | 15:07 | |
| nopaste | "rurban" at 192.168.1.3 pasted "cygwin t/spec/S16-filehandles/filetest.rakudo" (48 lines) at nopaste.snit.ch/137434 | 15:08 | |
| NotFound | But probably the only save for that is a bunch of Integer and Integer arrays. | ||
| whiteknight | Any PMC that allocates unmanaged buffer space from the GC would be unnecessary to finalize | 15:09 | |
| benabik | I somehow feel having two destructors is hazardous. | ||
|
15:09
JimmyZ_ joined
|
|||
| benabik | Pretty much anyone who uses one will want to have the other. | 15:09 | |
| moritz | on the high level language, either an object has a destructor, or it does not | 15:10 | |
| whiteknight | blah. Destructors and GC are hard | 15:11 | |
| benabik | Yes. | ||
| NotFound | Well, if a language particularly wants to offer strict guarantees in some kind of objects it can keep a list in its runtime and reference count it. | 15:13 | |
| moritz | ... and target a VM different from parrot, because it makes absolutely no sense to have both GC and refcounting in the same program (maybe unless the two very closely cooperate) | 15:14 | |
| atrodo | so perl5 can never be on parrot? | 15:15 | |
| moritz | atrodo: not very performant and 100% compatiable, no | ||
| or maybe there is a way to make the two systems cooperate nicely, and I just don't know about it | 15:16 | ||
| NotFound | 100% compatibility with languages with long history and high use is impossible. Ask the python guys about that ;) | ||
| benabik | Our goal is difficult, but let's not declare it impossible, hm? | 15:17 | |
| moritz | atrodo: note that for the p5 user, refcounting only matters for blessed objects and containers that hold them | ||
| atrodo: so it would be OK to GC ints and refcount blessed objects and array/hash refs | |||
| NotFound | benabik: 100% of anything is impossible. | ||
| benabik: and asking for the lht last 0.1% usually just gets in the way of the remaining 99.9% | 15:18 | ||
| whiteknight | I don't think some GC changes are going to be impossible or distract us from other important work | 15:19 | |
| We can give Rakudo all sorts of features if they don't care about performance at all. All systems are going to require some kind of compromise | |||
| benabik | Trying a GC sweep at exit feels like it shouldn't be terribly difficult. | ||
| whiteknight | We have the code to do exactly that. I suspect it's just commented out somewhere | ||
| Having a FileHandle and saying we should definitely clean up that FileHandle on program exit is easy | 15:20 | ||
| benabik | finalize_gc_system... | ||
| whiteknight | order of destruction is and always has been hard | 15:21 | |
| NotFound | Yeah, but I think that mentions of a p5 100% compatible don't help to keep focused. | ||
| whiteknight | If Rakudo promises that order of destruction will never be important, we can give them almost everything else | ||
| moritz can't make that promise for rakudo; too little understanding of the implications | 15:22 | ||
| benabik | Do we guarantee any ordering in the usual case? | ||
| whiteknight | There's no way we can do ordered destruction internally. If Rakudo wants ordered finalization, that's something that will have to happen at the application level | ||
| We would need ordering metadata, specified through an as yet unknown interface, we would need to be able to keep that metadata up to date as GC runs and members of that object graph are freed | 15:23 | ||
| ...possibly across multiple threads | |||
| ...possibly across security sandbox barriers | |||
| benabik | There has to be a "normal" order for destruction. _Some_ order happens. | ||
| aloha is bacek's, right? | 15:25 | ||
| aloha | benabik: Dunno. | ||
| benabik | aloha: aloha? | ||
| aloha | benabik: aloha is simple Bot::BasicBot::Pluggable hosted on github.com/bacek/aloha | ||
| whiteknight | I know .NET doesn't offer deterministic ordered destruction, so it's not like we're going to lose out on that feature | ||
| I don't think JVM does either, but I can't find a source to verify that right now | 15:27 | ||
| benabik | Hm. ms2 does a destruction sweep. | 15:29 | |
| NotFound | Al algorithm that may be reasonable sure, but probably sure is: clean the root set, do a GC, do a GC and keep doing GCs while the number of live objects keep decreasing. | ||
| moritz | fun fact: most JVMs allocate an OutOfMemory exception at startup, and keep it around as a singleton object | 15:30 | |
| benabik | gms has a finalize function but never enables it. | ||
| moritz | so that they never OOM while OOMing :-) | ||
| NotFound | moritz: we don't even throw out of memory exceptions yet ;) | ||
| benabik | I think our response to OOM is "OMG, the world is ending" | 15:31 | |
| moritz | right, we just die. | ||
| rurban | you can specify finalizers to help in ordered destruction, like our DESTROY methods. but it's unordered by definition | ||
| benabik | DESTROY method that do things other than release resources are probably not sane. | ||
| benabik wonders what uncommenting `interp->gc_sys->finalize_gc_system = gc_gms_finalize;` would do. | 15:34 | ||
| whiteknight | we can't even just do that trick, because PCC will allocate a CallContext to invoke the handler | 15:35 | |
| not to mention any accidental boxing/unboxing that happens while in the handler that would enter an infinite loop | |||
| benabik | It shouldn't infinite loop. | 15:36 | |
| whiteknight | if you didn't pop the handler it would | ||
| benabik | Oh, the OOM thing. Blah. | ||
| We could probably allocate enough that a careful destructor could work. Non-careful destructors would just cause the OOM to pass upward through the stack. | 15:37 | ||
| Okay. Parrot with gms_finalize enabled builds... testing. | 15:38 | ||
| benabik expects subtle errors. | |||
| whiteknight | I'm sure it will build and run mostly fine | 15:41 | |
| I think we've fixed up most of the expected order issues that used to be a problem | |||
| I'm certain that the feature was turned off because of performance concerns | |||
| benabik | It was never enabled for GMS. | 15:42 | |
| brrt | what about stop-the-world? | ||
| benabik | And never disabled for MS2. | ||
| whiteknight | it was definitely enabled and disabled in turns for MS2 | ||
| I know we went back and forth with it | |||
| benabik | Well, it's currently enabled. | ||
|
15:42
GodFather joined
|
|||
| whiteknight | i believe that | 15:42 | |
| NotFound | I miss the infinite memory GC | 15:43 | |
| whiteknight | don't we still have it floating around somewhere? | ||
| moritz misses the machine with infinite memory | |||
|
15:43
bluescreen joined
|
|||
| NotFound | whiteknight: Configure help don't mention it | 15:44 | |
| whiteknight | where's that gigantic turing tape I ordered?!? | ||
| NotFound | That reminds me the old joke: "Windows 95 for Spectrum is swapping to 120m tape. Plaease WAIT!" | 15:45 | |
| brrt | garbage collected turing tape | ||
| provably unused tape can be stitched on the other end | |||
| benabik | Benabik/parrot now has a finalize_gms branch with the one line commit to enable finalization. | 15:46 | |
| NotFound | The beauty of the infinite memory model is that you can smile at reports of memory leaks. | ||
| benabik | Sadly, I don't have the time to experiment farther than "builds and passes tests" | 15:47 | |
| NotFound | (I've received a bunch of them for winxed stage 0) | ||
| dalek | p/toqast: 0ce175f | masak++ | src/QAST/Operations.nqp: [QAST::Operations] added lots of opcodes Stopped at a couple that look like special cases. Not all of these are tested, and some are probably wrong, but most of them should work. |
16:01 | |
| whiteknight | what is QAST? | ||
|
16:02
bluescreen joined
|
|||
| dalek | p/toqast: d36485e | masak++ | src/QAST/Operations.nqp: [QAST::Operations] some more opcodes Do let me know if any of these aren't meant to be kept around any more. I'll remove them right away. :) |
16:11 | |
| NotFound | whiteknight: The get_context opcode is supposed to be stable enough to use in the implementation of the getcontext builtin instead of the current way? | 16:12 | |
| nine | moritz: Python uses reference counting and in addition has a GC | 16:18 | |
| moritz: at least CPython | |||
| cotto | ~~ | ||
| whiteknight | NotFound: yes, that op is stable enough | 16:32 | |
| NotFound | whiteknight: maybe is better to also add a new get_context and deprecate getcontext, for consistency. | 16:33 | |
| dalek | nxed: a85b898 | NotFound++ | winxedst2.winxed: new builtin get_context, deprecate and reimplement the old getcontext |
16:41 | |
| NotFound | Done | ||
| whiteknight | that's fine too | ||
|
16:42
Patterner joined
|
|||
| Coke is looking for a web dev in Albany, NY. privmsg me for details) | 16:50 | ||
| whiteknight | I know a webdev in NYC. Probably not good enough | 16:52 | |
| dalek | kudo/nom: 4823171 | duff++ | src/Perl6/Actions.pm: nqp-ize pir::chr |
16:53 | |
| kudo/nom: 420739a | duff++ | src/ (25 files): nqp-ize pir::die |
|||
| kudo/nom: 03fb952 | duff++ | src/ (8 files): nqp-ize pir::join |
|||
| kudo/nom: c590cc6 | duff++ | src/Perl6/ (5 files): nqp-ize pir::split |
|||
| kudo/nom: 8b63698 | duff++ | src/Perl6/Actions.pm: nqp-ize pir::index |
|||
| kudo/nom: f043136 | duff++ | src/ (3 files): nqp-ize pir::clone |
|||
| kudo/nom: ba88474 | duff++ | src/core/Exception.pm: nqp-ize pir::exit |
|||
| kudo/nom: 34b5d7d | duff++ | src/ (7 files): nqp-ize pir::isnull |
|||
| kudo/nom: b26ba49 | duff++ | src/Perl6/Metamodel/ (2 files): nqp-ize pir::istrue |
|||
| kudo/nom: 83587be | duff++ | src/Perl6/ (5 files): nqp-ize substr |
|||
|
17:10
PacoAir joined
|
|||
| dalek | sella: 3784828 | Whiteknight++ | src/random/randomnumber/MersenneTwister.winxed: Fix MersenneTwister for use with 32-bit machines. On 32-bit, 0xFFFFFFFF is -1, so dividing by that just gives you the negative value instead of a normalized value. We really want 0x7FFFFFFF, so we get the maximum positive value and therefore end up with a normalized float. |
17:26 | |
| whiteknight | That bug has bothered me for months, and as soon as I install a 32-bit VM the reason pops right out at me | 17:27 | |
| it's always a little embarrasing to forget such a fundamental fact of 2s compliment arithmetic | 17:29 | ||
| actually, the implementation is still not correct, but I can do the rest of the fixes later | 17:33 | ||
|
17:36
schmooster joined
|
|||
| moritz | whiteknight: re qast, it's a reimplementation of PAST on top of 6model, updated to the state of all(rakudo, nqp, parrot) year 2012 | 17:43 | |
| whiteknight | oh, okay. Cool | 17:53 | |
| moritz: what does the Q stand for? | 17:54 | ||
| moritz | whiteknight: it's the successor of P in the alphabet | 17:55 | |
| benabik | nQp, I think | ||
| moritz | or mabe Qompact Abstract Syntax Tree :-) | ||
| cotto | Quite Abstract Syntax Tree | 17:57 | |
| atrodo | Quasi Abstract Syntax Tree | ||
| whiteknight | msg jashwanth I just built and tested PLA on Ubuntu 11.10, 32-bit, with Parrot 4.3.0 and libatlas-base-dev. This is what you have, correct? We need to debug more if you are seeing bugs | 17:58 | |
| aloha | OK. I'll deliver the message. | ||
|
18:14
alvis joined
|
|||
| jashwanth | no I have a 64 bit machine | 18:16 | |
| whiteknight | oh, okay. Then I wonder why you were seeing that hang in the Rosella test. That was a problem with 32-bit machines | 18:17 | |
| or, 32-bit operating systems | |||
| jashwanth | I dont know to check weather my system is a 64 bit one there was a command and the result suggested it was 64 | 18:19 | |
| whiteknight | uname -a | ||
| benabik | uname -m | ||
| whiteknight | whichever | ||
| post the result | 18:24 | ||
| jashwanth | k | ||
| Linux jashwanth-XPS-L501X 3.0.0-19-generic-pae #33-Ubuntu SMP Thu Apr 19 20:59:10 UTC 2012 i686 i686 i386 GNU/Linux | |||
| whiteknight | I think that's a 32bit setup | 18:25 | |
| jashwanth | i686 | ||
| for -m | |||
| whiteknight | "parrot_config intvalsize" | ||
| and post the result | |||
| jashwanth | 4 | ||
| so a 32 bit one I suppose | 18:30 | ||
| is it | |||
| whiteknight | yes | 18:31 | |
| do "which parrot-nqp" | |||
| jashwanth | /usr/local/bin/parrot-nqp | ||
| whiteknight | is that where you're installing things to? | ||
| if not, delete it | 18:32 | ||
| jashwanth | no actually u gave me some other place | ||
| whiteknight | okay, delete it | ||
| jashwanth | bin/jashwanth/ | ||
| whiteknight | delete anything in /usr/local/bin that starts with "parrot" | ||
| jashwanth | something like that | ||
| ya did that | 18:35 | ||
| whiteknight | okay, do "which parrot-nqp" again | ||
| jashwanth | now the above statement does not give any result | 18:36 | |
| whiteknight | blah | ||
| echo $PATH | |||
| jashwanth | why was these files causing the problem | 18:37 | |
| /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games | |||
| whiteknight | Okay, you need to add your install path there | 18:45 | |
| edit your ~/.bashrc file, and add this to the bottom: | |||
| jashwanth | how ? | ||
| whiteknight | PATH=$PATH:/home/jashwant/parrot/bin | ||
| just a regular text editor | |||
| jashwanth | done | 18:51 | |
| whiteknight | okay, close your terminal and restart it | 18:52 | |
| and when it comes back, type "which parrot" | |||
| and "which parrot-nqp" | |||
| jashwanth | no result in both cases | 18:53 | |
| whiteknight | do echo $PATH again | ||
| jashwanth | /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwant/parrot/bin | 18:54 | |
| now its come up | 18:55 | ||
| whiteknight | you're getting /home/jashwanth/parrot/bin/parrot? | ||
| jashwanth | no | 18:56 | |
| am getting:/home/jashwant/parrot/bin | |||
| sorry yes | 18:57 | ||
| the same | |||
| whiteknight | okay, same for parrot-nqp? | ||
| jashwanth | what should I do? | 18:58 | |
| whiteknight | which parrot-nqp | ||
| post the result | |||
| jashwanth | nothing | ||
| whiteknight | try to install parrot again. parrot-nqp should be at the same place as parrot | ||
| jashwanth | I am getting no result for both parrot-nqp and parrot | 18:59 | |
| so now try to reinstall parrot without removing the old one? | 19:00 | ||
| whiteknight | I don't think there's an old one to remove | ||
| just install it | |||
| moritz | what invocation did you use to configure parrot? | ||
| something like perl Configure.pl --prefix=$HOME/parrot/ ? | |||
| jashwanth | where do u think these newly installed files might go? | 19:01 | |
| whiteknight | jashwanth: they should go to wherever you say in --prefix | ||
| you pick the directory | |||
| jashwanth | ok | 19:02 | |
| should I perform the test | 19:03 | ||
| whiteknight | no | ||
| configure, make, install. Copy the output and email it to me | |||
| jashwanth | am providing the same address "/home/jashwant/parrot" | 19:04 | |
| whiteknight | okay | 19:05 | |
| jashwanth | done | 19:08 | |
| some initial commands are missing for "make install" | 19:09 | ||
| whiteknight | what do you mean? | 19:12 | |
| okay, so it installed to /home/jashwanth/parrot/bin/parrot | |||
| do "which parrot" | 19:13 | ||
| post the result | |||
| jashwanth | no result :( | 19:14 | |
| whiteknight | type "/home/jashwanth/parrot/bin/parrot -V" | ||
| jashwanth | This is Parrot version 4.3.0-devel built for i386-linux | ||
| Copyright (C) 2001-2011, Parrot Foundation. | |||
| This code is distributed under the terms of the Artistic License 2.0. | |||
| For more details, see the full text of the license in the LICENSE file | |||
| included in the Parrot source tree | |||
| whiteknight | okay, so the file exists | ||
| do "echo $PATH" again and post the result | 19:15 | ||
| jashwanth | ok | ||
| /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwant/parrot/bin | |||
| whiteknight | you have a typo in the last part. | ||
| it says "jashwant", but the path you installed to is "jashwanth" | |||
| with the "h" at the end | 19:16 | ||
| jashwanth | oh no | ||
| what do I do now to correct it | 19:17 | ||
| whiteknight | edit your ~/.bashrc file again and fix it | ||
| then you can close your terminal and restart it to run the changes | |||
| Coke | whiteknight: or "exec bash" | 19:18 | |
| moritz | or you run exec $SHELL | ||
| Coke | moritz++'s safer in general. | ||
| aloha | Karma for moritz is now 3122 | ||
| whiteknight | whichever, those are easy too | 19:19 | |
| Coke | btw, I'm guessing someone did a cpan upgrade on aloha's machine, inadvertently upgrading one of the IRC plugins. this has happened before. | ||
| jashwanth | /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jashwanth/parrot/bin | ||
| whiteknight | jashwanth: looks better. Try "which parrot" | 19:20 | |
| jashwanth | /home/jashwanth/parrot/bin/parrot | ||
| whiteknight | and "which parrot-nqp"? | ||
| jashwanth | /home/jashwanth/parrot/bin/parrot-nqp | ||
| whiteknight | yay! progress | ||
|
19:20
rich joined
|
|||
| jashwanth | whiteknight++ | 19:20 | |
| aloha | Karma for whiteknight is now 2695 | ||
| jashwanth | whiteknight++ | ||
| aloha | Karma for whiteknight is now 2696 | ||
| jashwanth | whiteknight++ | ||
| aloha | Karma for whiteknight is now 2697 | ||
| whiteknight | enough! | 19:21 | |
| :) | |||
| jashwanth | ohhh. | ||
| :) | |||
| whiteknight | okay, go to PLA, "make clean && make && make test" | ||
| cross your fingers. | |||
| jashwanth | yes going for it | ||
| whiteknight | awesome | ||
| jashwanth | Rosella | 19:22 | |
| whiteknight | oh yes, that first | ||
| Coke: I don't mind the change. It's better than waiting till everybody goes to bed to check your own karma without people thinking you've got a vanity problem | |||
| not that I would know. I would never do that | |||
| jashwanth | error:imcc:'$loadlib' is not a valid register name | 19:23 | |
| in file 'setup.winxed' line 1 | |||
| for Rosella? | 19:24 | ||
| nine | whiteknight: but in case you want to: aloah accepts private messages ;) | ||
| whiteknight | do "make" | ||
| nine: That's even worse! Then the good news isn't logged publicly | |||
| jashwanth | ok | ||
| done with rosella | 19:26 | ||
| whiteknight | awesome, install that and try PLA | ||
| jashwanth | doing | 19:27 | |
| Ohhh no | 19:29 | ||
| ------------------- | |||
| t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0) | |||
| Test aborted with non-zero exit code | |||
| t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0) | |||
| Test aborted with non-zero exit code | |||
| t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0) | |||
| Test aborted with non-zero exit code | |||
| Passed 360 tests in 55 files (3 test runs, 22.15 seconds) | |||
| whiteknight | garble | ||
| Coke | "make clean all test" would probably also work, wk | ||
| whiteknight | Coke: baby steps | 19:30 | |
|
19:30
bluescreen joined
|
|||
| jashwanth | so ? | 19:31 | |
| whiteknight | jashwanth: are those the only failures? | ||
| jashwanth | yes | ||
| Test Summary Report | |||
| ------------------- | |||
| t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0) | |||
| Test aborted with non-zero exit code | |||
| t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0) | |||
| Test aborted with non-zero exit code | |||
| t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0) | |||
| Test aborted with non-zero exit code | 19:32 | ||
| Passed 360 tests in 55 files (3 test runs, 19.94 seconds) | |||
| Result: FAIL | |||
| whiteknight | okay, let's just ignore it for now. | ||
| We'll have to find a better way to debug those later if they become a problem | |||
| jashwanth | so now install PLA | ||
| whiteknight | you don't need to install it | ||
| jashwanth | ok | 19:33 | |
| whiteknight | you will be working there in the repository | ||
| jashwanth | so now just go and read the files to get a fair idea right? | 19:34 | |
| dalek | nxed: a072d6c | NotFound++ | winxedst2.winxed: allow by reference operator in inline |
||
| whiteknight | yes | ||
|
19:40
lucian joined
19:46
brrt joined
|
|||
| brrt | ping moritz | 19:50 | |
| moritz | brrt: pong | ||
| brrt | hi, did you know that in your country (sorry for that phrase) you can buy laptops with linux pre-installed? | 19:51 | |
| which is awesome | |||
| moritz | brrt: yes. In fact I bought one (and immediately removed it) | 19:52 | |
| it came with suse, and I wanted debian :-) | |||
| but it was still great that I didn't have to pay a windows license :-) | |||
| PerlJam | I thought that laptops with linux pre-installed was old hat everywhere. Been doing it for years in the US | ||
| brrt | it isn't in the netherlands | ||
| whiteknight | PerlJam: which vendor? | 19:53 | |
| PerlJam | Dell for one. | ||
| whiteknight | PerlJam: The only convincing vendor I've found to do it is System76 | ||
| last time I looked at dell, I had a link to a page for linux laptops that was dead, and I couldn't find it on their site | |||
| brrt | amazon.de sells one from hp | ||
| 80 euro's cheaper than the same model with windows | 19:54 | ||
| PerlJam | What I haven't seen are vendors that give you your choice of linux dist. Usually they cater to only 1 or maybe 2 if you're lucky. | 19:55 | |
|
19:56
contingencyplan joined
|
|||
| whiteknight | I'm hoping to get a new laptop this summer. Right now I'm looking at either Lenovo T series or System76. In the former case I'll pay the windows tax and keep it dual-boot for testing | 20:00 | |
| dalek | p/toqast: 4422265 | jnthn++ | src/QAST/Operations.nqp: Can't have sigless ops any more. Also concat should always work on strings. |
20:01 | |
| p/toqast: 9eb078c | jnthn++ | src/QAST/Compiler.nqp: Handling of lexical paramters, including natively typed ones. Also, lookup of lexicals declared in the current block; this is optimized right off to a register access. |
|||
| p/toqast: 6999d2b | jnthn++ | src/QAST/ (2 files): Slurpy can only go on a QAST::Var. |
|||
| p/toqast: 63d58d9 | jnthn++ | t/qast/qast.t: A couple of initial tests for lexical parameters. |
|||
| nine | I've heard that at least with Dell it's possible to call them and remove Windows from the package even if the choice is not available on the website. | ||
| benabik has never heard of System76 before | 20:02 | ||
| whiteknight | I hadn't until recently when I googled for linux-friendly laptop manufacturers. They seem legit | 20:03 | |
| herbsutter.com/2012/05/03/reader-qa...c-and-c99/ | 20:04 | ||
| nine | They've been around for ages. | ||
| whiteknight | mom always said if I have nothing nice to say, I shouldn't say anything at all | ||
| benabik | They don't actually seem to have a Windows option at all. Makes it hard to recommend to most of my friends | 20:05 | |
| <3 "Donate Your Old Computer: System76 has partnered with non-profit Kids on Computers to help bring computers and open source software to disadvantaged kids." | |||
| nine | If only they had better hardware. But for me they just couldn't compete with a Lenovo T420. | 20:06 | |
| whiteknight | The hardware seems decent enough, and if they have a decent price and they love ubuntu I might be convinced. I've seen a few very good reviews | 20:12 | |
| but you are right, if I could grab a T420 for a decent price that's hard to beat | |||
| benabik builds a new Ubuntu 12.04 installer CD and crosses his fingers. | 20:13 | ||
| whiteknight | benabik: install from CD has gone very smoothly for me several times | ||
| nine | have got one with an extended battery and the disk replaced with an SSD for a year now. It's the perfect work machine, runs for 13 hours and is absolutely quiet | ||
| whiteknight | it's the "fast and easy" upgrade button that gets me every time | ||
| nine: wow. 13 hours is pretty boss battery life | |||
| benabik | whiteknight: This is my custom installer that does things like install the pile of packages the CS Dept needs and disables pesky things like "shutdown". | 20:14 | |
| Sadly, after I finish this project, I really need to buckle down on the thesis for a couple weeks. pct_winxed may not get much farther as I'll probably go straight from thesis to GSoC. :-/ | |||
| whiteknight | oh, okay. Definitely cross those fingers | ||
| benabik | whiteknight: I've been getting a lot of crashes on my test installs of 12.04. aptd and unity-lens-video. You seen anything like that? | 20:15 | |
| whiteknight | benabik: no, but I don't think I've used the video lense thingy yet | ||
| benabik | whiteknight: Neither have I, but it crashes anyway. I'm guessing the dash queries it when you type. | ||
| whiteknight | I do get all sorts of dbus-related error messages, and dpkg | ||
| it's not a very solid-feeling release, but many of the feature improvements seem worthwhile | 20:18 | ||
| hopefully a few patches and weekly updates fix us up | |||
| benabik | Yeah. The thing I find interesting is that an entire language went missing. smlnj is in 11.10 and 12.10, but not 12.04 | 20:19 | |
| I may just uninstall the video lens. It doesn't seem terribly useful in a school environment. | 20:20 | ||
| whiteknight | what is smlnj? | ||
| cotto | the standard ml compiler | ||
| benabik | From University of New Jersey | 20:21 | |
| Coke is not going to YAPC::NA this yeqr. | 20:44 | ||
| cotto neither | 20:58 | ||
| rurban | Configure auto::va_ptr does a stack-buffer-overflow 40 bytes outside (clang -faddress-sanitizer) | 21:00 | |
| Coke | all code run during config probes should probably not be held to the same standard as parrot itself. | 21:01 | |
| (no clue about that particular probe) | |||
| rurban | I'll debug into it. Does not sound too worrysome | 21:02 | |
| worse: ./parrot -o runtime/parrot/library/PCT/HLLCompiler.pbc compilers/pct/src/PCT/HLLCompiler.pir heap-buffer-overflow off-by-one | 21:08 | ||
| benabik | lol | 21:09 | |
| rurban | probably past the \\0 in a string or so | ||
| its a 2byte buffer, probably a 1-byte string | |||
| I forgot the Configure debugging steps: b postpone auto::va_ptr::runstep did not stop | 21:11 | ||
|
21:22
perlite joined
|
|||
| rurban | it's compilers/imcc/pbc.c:1947 | 21:46 | |
| benabik | rurban++ | 21:47 | |
| aloha | Karma for rurban is now 15 | ||
|
21:47
whiteknight joined
|
|||
| benabik | Buh. That's my code. | 21:47 | |
| whiteknight | .? | ||
| benabik | I'm not sure how that overruns the array, though. | 21:49 | |
| Does the string returned by Parrot_str_to_cstring have a length of Parrot_str_byte_length? | 21:54 | ||
| NotFound | end >= src shouldn't be end >= start ? | 21:55 | |
| benabik | src is the entire string. start is the be beginning of the data. end is the end of the data. | 21:56 | |
| So src <= src <= end < src+sizeof(src) should always be true. | 21:57 | ||
| Oh, I see what you mean there. That should probably be the case. | |||
| NotFound | Or maybe end > start | 21:58 | |
| benabik | I was looking farther down. rurban blamed :1947 | ||
| whiteknight | benabik: (re Parrot_str_byte_length) not necessarily, if the STRING contains NULL characters the C string will contain those but strlen will report it short | ||
| rurban | I believe it's at the end at /* See if there are any garbage characters after the number */ | ||
| we have to check if (chr < end) ... | |||
| yes, that was it. | |||
| NotFound | Yes, but if that is wrong it can reach that point in cases it shouldn't | ||
| rurban | I'll send my patch | 21:59 | |
| benabik | Oh. | ||
| It's going one past in the "0" case. | |||
| Moving the ++chr to before "case '\\0':" is probably the right move. | |||
| benabik-- | 22:01 | ||
| heh. aloha doesn't announce that. | |||
| nopaste | "rurban" at 192.168.1.3 pasted "AddressSanitizer heap-buffer-overflow compilers/imcc/pbc.c:1988" (145 lines) at nopaste.snit.ch/137517 | 22:02 | |
| benabik | That last while loop should never overrun, as it will stop if it hits \\0 | ||
| rurban | But I'm not sure if chr == end can be allowed | 22:03 | |
| benabik | End should never be beyond the \\0 at the end | ||
| If it is, then there's a problem in the setup. | |||
| whiteknight: I'm concerned with allocated memory, not strlen. | 22:04 | ||
| whiteknight | oh yes, I think it will have that much memory | ||
| rurban | you are right. The last loop is kosher | ||
| benabik | Does `end = src + l - 1` drop end on or before the null? (l = length(src)) | 22:05 | |
| It should drop it before... l is the length of the source parrot string. | 22:06 | ||
| rurban | The next overflow is on the stack (nice, valgrind cannot find that) in Ops/Compiler/Actions.pm | ||
| whiteknight | that sounds...bad | ||
| rurban | oops, that in the gc. trace_mem_block const size_t ptr = *(size_t *)cur_var_ptr | 22:08 | |
| dalek | rrot: b58a50c | benabik++ | compilers/imcc/pbc.c: IMCC: Be more careful with pointers parsing FIAs - Don't let the end be before the start - Incrementing past NULL is generally considered poor on a C string. |
22:09 | |
| benabik | Hm. I didn't actually wait for the test to complete on the "obvious" fix. Hope it actually was right. | 22:10 | |
| benabik-- | |||
| nopaste | "rurban" at 192.168.1.3 pasted "GC AddressSanitizer stack-buffer-overflow" (49 lines) at nopaste.snit.ch/137518 | ||
| rurban | And I thought this imcc code was Leo's | 22:16 | |
| benabik | I re-write the FIA parser to be less braindead | ||
| Yay. PASS on Darwin x86_64. If it still has a problem there let me know, rurban++ | 22:17 | ||
| No idea about the GC one though. | 22:18 | ||
| rurban | I recompile in a git cloned dir now. This will be hard to catch traditionally | 22:19 | |
| But I trust AddressSanitizer to be correct | |||
| benabik | GCs are tricky beasts that occasionally do things that are not sane anywhere else. | 22:20 | |
| rurban | its tricky because its not easy repro and I'll have to write to catch it | 22:21 | |
| write code to catch it | |||
| got it again at the same place, good. | 22:22 | ||
| benabik | reproducibility is good. | ||
| rurban | But I'll do that tomorrow, have to go soon. | ||
| It definitely reading past lo_var_ptr from the stack in trace_system_stack | 22:24 | ||
| Oh, I read that's intentionally | 22:25 | ||
| my boy. I have to blacklist this beast | |||
| benabik | GCs do insane things. | 22:26 | |
| rurban | I added #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif to it | 22:30 | |
| whiteknight | I think we can try to transition to a precise GC that doesn't do stackwalking within the next year | 22:35 | |
| rurban | samewise for trace_system_areas which does a stack-underflow by one ptr | ||
|
22:36
plobsing joined
|
|||
| rurban | samewise for Parrot_gc_trace_root | 22:36 | |
| The gc looks insane to me | 22:43 | ||
| whiteknight | rurban: I'm looking at that trace_mem_block function now, which is what is called by trace_system_areas et al. The loop looks correct. I don't see any obvious overflow | ||
| rurban | me neither | 22:44 | |
| I also get stack underflows, reading beyond the 1st arg interp | |||
| whiteknight | well, that function does trace up the stack beyond the current frame. that might be what it's talking about | 22:45 | |
| I wonder if there is an annotation we could use to tell the compiler and other analyzers that this behavior is expected | 22:46 | ||
| rurban | #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif | 22:47 | |
| but I have to check if that is correct for all clangs or only for -faddress-sanitizer builds. so it might need a configure probe | |||
| this attr is relatively new | 22:48 | ||
| looks good so far. compiling the library pirs now | 22:50 | ||
| I rather try perl6 which is huge | |||
| parrot tests are passing, I have to leave. more tommorrow | 22:51 | ||
| whiteknight | you use clang on cygwin? | 22:53 | |
|
23:00
benabik joined
|
|||
| whiteknight | I had a bunch of macros sitting around for doing precise GC. I need to look them up and see about them | 23:12 | |
|
23:22
rurban_home joined
23:26
kid51 joined
|
|||
| cotto | seen nbrown | 23:30 | |
| aloha | nbrown was last seen in #parrot 1 days 13 hours ago saying "cotto++". | ||
| whiteknight | ha | ||
| kid51 | msg moritz I confirm that you have fixed the failing tests in t/benchmark/benchmarks.t and t/examples/catchall.t | 23:31 | |
| aloha | OK. I'll deliver the message. | ||
| kid51 | Are there any branches currently needing basic smoke-testing? | 23:34 | |
| benabik | ~~ | ||
|
23:38
aloha joined
|
|||
| bacek_at_work | ~~ | 23:38 | |
| c++ | 23:39 | ||
| karma c | |||
| aloha | c has karma of 710. | ||
| bacek_at_work | sorry for this | ||
| I reinstalled everything perl-related on my box using local::lib recently. | |||
| I lost few fixes for bot::basicbot | |||
| Coke | bacek_at_work++ # do you run aloha on #perl6 also? | 23:47 | |
|
23:48
kid51_ joined
|
|||
| bacek_at_work | Coke, yes. Let me restart this instance. | 23:56 | |