Camelia, the Perl 6 bug

IRC log for #parrot, 2012-05-03

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 * whiteknight is adding winxed support to Geany
00:00 whiteknight 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 #parrot
00:26 dalek parrot/coke/rm_pasm: ec95e34 | Whiteknight++ | / (11 files):
00:26 dalek parrot/coke/rm_pasm: 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 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/ec95e34b17
00:26 dalek parrot/coke/rm_pasm: 872f2d3 | Whiteknight++ | / (45 files):
00:26 dalek parrot/coke/rm_pasm: Merge branch 'coke/rm_pasm' of github.com:parrot/parrot into coke/rm_pasm
00:26 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/872f2d3d9c
00:36 dalek parrot/whiteknight/rm_pasm2: 7da89ee | Whiteknight++ | tools/dev/pbc_to_exe.pir:
00:36 dalek parrot/whiteknight/rm_pasm2: Fix pbc_to_exe to not use the PASM compreg or dead APIs
00:36 dalek parrot/whiteknight/rm_pasm2: review: https://github.com/parrot/parrot/commit/7da89eebde
00:38 dukeleto joined #parrot
00:59 whiteknight wtf? Somewhere along the line PLA isn't linking to libblas now
01:01 whiteknight I'm adding -lblas to the commandline, but ldd says it's not linked to libblas
01:20 whiteknight and then when I load it, it says it can't find the symbols from that library
01:24 bacek_at_work whiteknight, you probably want to install something like libblas-dev package
01:24 whiteknight I have that
01:24 whiteknight libblas.so apparently isn't exporting any symbols
01:27 whiteknight it was exporting symbols back in 11.10
01:30 benabik joined #parrot
01:32 preflex_ joined #parrot
01:34 bacek_at_work whiteknight, it's... impossible.
01:34 whiteknight bacek_at_work: maybe something is broken with nm on my machine.
01:34 whiteknight nm: /usr/lib/libblas.so: no symbols
01:35 bacek_at_work looks like nm is broken
01:35 bacek_at_work same on debian/testing
01:35 bacek_at_work try objdump -T
01:36 whiteknight ah yes, there are the files
01:36 whiteknight er, symbols
01:36 whiteknight but that doesn't explain why my linker isn't fixing up the symbols
01:36 whiteknight I am using clang. Maybe that's got the same problem as nm. I'll try gcc
01:37 bacek_at_work afaik clang doesn't have linker and uses standard one
01:37 bacek_at_work eg "ld"
01:38 whiteknight I think so too. But I'm still going to try gcc
01:38 whiteknight just in case
01:38 bacek_at_work good luck
01:38 whiteknight I don't need luck. I need more time
01:39 kid51 joined #parrot
01:39 kid51 whiteknight: ping
01:40 whiteknight pong
01:40 kid51 Looking at whiteknight/rm_pasm2 branch; I take it that it's not really ready for testing yet, right?
01:40 whiteknight not at all
01:40 whiteknight not even a little
01:41 kid51 OK, FWIW http://smolder.parrot.org/app/​projects/report_details/27956
01:41 whiteknight it's just a place to dump some things that don't belong in coke/rm_pasm yet
01:41 whiteknight ha! thanks
01:41 kid51 Ah!
01:41 whiteknight kid51++
01:41 aloha Karma for kid51 is now 94
01:41 kid51 However, while I'm on it I will correct one codingstd test :-)
01:42 whiteknight :)
01:42 dalek parrot/whiteknight/rm_pasm2: 6ecf1e7 | jkeenan++ | src/pmc/imccompiler.pmc:
01:42 dalek parrot/whiteknight/rm_pasm2: [codingstd] Remove trailing whitespace.
01:42 dalek parrot/whiteknight/rm_pasm2: review: https://github.com/parrot/parrot/commit/6ecf1e7618
01:43 whiteknight blah, I'm still getting my new editor configured
01:44 whiteknight bacek_at_work: no, you're right. Same thing with gcc. Whatever, I'm going to wait for a while
01:50 benabik ~~
01:59 kid51 Hmm.  We're failing 4 tests in t/benchmark/benchmarks.t
02:00 kid51 That's new ... and disturbing.
02:00 kid51 and fails in t/examples/catchall.t
02:01 kid51 See: http://smolder.parrot.org/app/​projects/report_details/27958
02:02 kid51 Those are regressions since Apr 15 (i.e., since around last release)
02:04 whiteknight blah, no time to look at it now. Time for bed.
02:16 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.
04:04 dalek winxed: be2b8e4 | NotFound++ | winxedst (2 files):
04:04 dalek winxed: rename getparamnum to generateparamnum for clarity
04:04 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/be2b8e4dc9
04:14 bacek_at_work joined #parrot
05:54 brrt joined #parrot
06:13 nine *yawn* Good morning, #parrot
06:33 pjcj joined #parrot
06:37 cotto 'morning, nine
06:44 fperrad joined #parrot
07:08 brrt joined #parrot
08:06 lucian joined #parrot
08:25 tadzik hello #parrot
08:36 cosimo joined #parrot
08:47 alvis left #parrot
08:53 alvis joined #parrot
09:48 brrt it would be so much fun if apache had a documented api
09:48 brrt as in, actual documentation, with full listings of headers, functions, structures
09:49 moritz now you're just being greedy
09:52 brrt am i?
09:52 brrt :-)
09:52 brrt parrot has it
09:54 brrt i'm seriously considering writing a script to read the header files and spit out html right now
10:34 JimmyZ joined #parrot
10:34 JimmyZ Coke: ping
10:50 dalek parrot: e7d7c16 | moritz++ | / (9 files):
10:50 dalek parrot: fix failing tests after kill_current_object merge, kid51++
10:50 dalek parrot:
10:50 dalek parrot: three are fixed by updating to non-ancient calling conventions
10:50 dalek parrot: (self as first invocant). The fourth was in PASM, and is now gone
10:50 dalek parrot: review: https://github.com/parrot/parrot/commit/e7d7c16493
11:30 dalek parrot/coke/rm_pasm: 057bee0 | jimmy++ | / (2 files):
11:30 dalek parrot/coke/rm_pasm: fixed t/pmc/sub.t, now all tests passed
11:30 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/057bee036d
11:33 dalek parrot/coke/rm_pasm: 59bdc0e | jimmy++ | examples/benchmarks/oo4. (4 files):
11:33 dalek parrot/coke/rm_pasm: remove oo4.* from examples/benchmarks/
11:33 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/59bdc0e7da
11:33 awwaiid particle, I met your brother here near DC yesterday at a ruby meetup :)
11:36 dalek parrot/coke/rm_pasm: 8406a40 | jimmy++ | t/compilers/imcc/reg/alloc.t:
11:36 dalek parrot/coke/rm_pasm: fixed t/compilers/imcc/reg/alloc.t
11:36 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/8406a4004b
11:39 dalek parrot/coke/rm_pasm: b4a5889 | jimmy++ | t/compilers/imcc/syn/symbols.t:
11:39 dalek parrot/coke/rm_pasm: fixed t/compilers/imcc/syn/symbols.t
11:39 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/b4a588985c
11:39 kid51 joined #parrot
11:40 dalek parrot/coke/rm_pasm: ffdab27 | jimmy++ | t/op/string_cs.t:
11:40 dalek parrot/coke/rm_pasm: fixed t/op/string_cs.t
11:40 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/ffdab27d33
11:49 dalek parrot/coke/rm_pasm: 8179a57 | jimmy++ | t/pmc/bignum.t:
11:49 dalek parrot/coke/rm_pasm: fixed t/pmc/bignum.t
11:49 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/8179a5746e
11:51 dalek parrot/coke/rm_pasm: c0b29f8 | jimmy++ | t/pmc/coroutine.t:
11:51 dalek parrot/coke/rm_pasm: fixed t/pmc/coroutine.t tests
11:51 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/c0b29f8a41
11:52 benabik joined #parrot
11:53 dalek parrot/coke/rm_pasm: 3490971 | jimmy++ | t/pmc/io.t:
11:53 dalek parrot/coke/rm_pasm: fixed t/pmc/io.t tests
11:53 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/3490971f73
11:56 dalek parrot/coke/rm_pasm: 41ab4a5 | jimmy++ | t/pmc/iterator.t:
11:56 dalek parrot/coke/rm_pasm: fixed t/pmc/iterator.t tests
11:56 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/41ab4a51fd
12:02 kid51_ joined #parrot
12:02 dalek parrot/coke/rm_pasm: 1cd1c06 | jimmy++ | t/pmc/ (2 files):
12:02 dalek parrot/coke/rm_pasm: fixed t/pmc/nci.t and t/pmc/orderedhash.t
12:02 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/1cd1c0698f
12:05 dalek parrot/coke/rm_pasm: d3e4fa6 | jimmy++ | t/compilers/imcc/syn/const.t:
12:05 dalek parrot/coke/rm_pasm: fixed t/compilers/imcc/syn/const.t tests
12:05 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/d3e4fa6d03
12:05 JimmyZ msg Coke I fixed most failed tests
12:05 aloha OK. I'll deliver the message.
12:11 benabik G'morning, #parrot
12:11 JimmyZ morning benabik :_
12:12 benabik JimmyZ: Having a productive morning killing PASM?
12:12 JimmyZ benabik: not really, just fixed test
12:13 benabik Fixing tests is good
12:13 JimmyZ kid51++, who submitted a smolder.
12:13 aloha Karma for kid51 is now 95
12:13 benabik JimmyZ++
12:13 aloha Karma for jimmyz is now 40
12:13 benabik Huh.  When did aloha start doing that?
12:14 benabik eh.
12:14 JimmyZ don't know, ask bacek
12:14 moritz eeks.
12:14 moritz aloha--
12:14 aloha moritz: Karma for aloha is now -68 (pffft)
12:14 benabik sherk
12:14 benabik *snerk
12:14 benabik At least aloha didn't speak up after every commit from dalek.
12:15 moritz karma jimmy
12:15 aloha jimmy has karma of 81.
12:15 JimmyZ looks like I lost karma
12:16 JimmyZ :)
12:16 moritz JimmyZ: no, you are just diversifying your karma over multiple nicks :-)
12:16 kid51_ JimmyZ: IIRC, the smolder I submitted was for whiteknight's version of the rm_pasm branch.
12:16 kid51_ I didn't get around to smoking Coke's branch yet
12:16 moritz whiteknight has such a branch too?
12:17 JimmyZ nope
12:17 kid51_ git branch -a | grep -i pasm
12:18 kid51_ But backscroll about 11 hours to see whiteknight's explanation of it in this channel
12:18 kid51_ moritz: did you get my msg about test failures?
12:18 moritz kid51_: yes, thanks. I fixed them.
12:18 kid51_ Danke
12:18 * kid51_ to $job
12:18 * JimmyZ didn't see that branch
12:20 moritz I think it's stuff we should do after merging coke/rm_pasm
12:21 benabik What stuff?
12:21 moritz the stuff in whiteknight/rm_past2
12:21 mtk joined #parrot
12:21 JimmyZ aye
12:22 benabik moritz: Freud suggests you have something against PAST.
12:22 moritz benabik: nothing efficient :-)
12:22 benabik Ah.  rm_pasm2 is about actually removing PASM from IMCC?
12:23 moritz looks like, yes
12:23 moritz or at least preparing it
12:24 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 :-)
12:25 benabik moritz: "past" as in "beyond" as in "after we merge".  ;-P
12:25 moritz benabik: I know :-)
12:25 benabik moritz: :-)
12:26 dalek rakudo/nom: 1972721 | moritz++ | src/core/Backtrace.pm:
12:26 dalek rakudo/nom: warnings should include line numbers from user-space programs, not from the setting
12:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1972721e46
12:26 Coke JimmyZ: thanks for getting the tests!
12:27 JimmyZ Coke: :)
12:41 bluescreen joined #parrot
12:52 PacoAir joined #parrot
12:55 whiteknight joined #parrot
12:57 whiteknight good morning, #parrot
12:57 benabik o/ whiteknight
13:00 whiteknight hello benabik, how are you doing today?
13:00 brrt morning
13:00 brrt noon, for me
13:00 whiteknight hello brrt
13:01 brrt hows life
13:01 whiteknight life is going well enough. you?
13:01 benabik whiteknight: Pretty good.  Short on sleep, but coffee keeps me going.
13:01 brrt sleep shortness here as well, otherwise very good
13:02 brrt 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.
13:03 brrt funny thing, that americans associate java with coffee
13:03 brrt indonesia used to be the dutch east indies, we tend to associate it with the island :-)
13:03 whiteknight benabik: how are things on the home front? Your wife must be getting ready to burst at the seams
13:03 benabik The island of Java is where the Dutch started cultivating the beans.
13:03 benabik So Java == island == coffee
13:04 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.
13:05 moritz but that's an exciting phase, no?
13:05 moritz you can probably feel the small one moving occasionally
13:05 PerlJam benabik: you should have heard my wife about week 36 when she was pregnant with twins.
13:05 PerlJam benabik: *that* was very pregnant
13:05 benabik PerlJam: I'm not allowed to use the T word around my wife.
13:06 whiteknight that's nothing compared to the list of words you won't be allowed to use around the kid
13:06 PerlJam heh
13:06 whiteknight that list includes all my favorite words!
13:06 whiteknight I taught my son how to say "damnit" and "oh crap", and my wife got very very angry
13:07 moritz parrot speaking your f<censored>ng language!
13:07 whiteknight :)
13:07 benabik I tend to have better control over my language than my wife, so we'll see who blames who.
13:08 moritz benabik: it'll still be all your fault :-)
13:08 benabik moritz: Oh, I'm sure.
13:09 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.
13:10 moritz well, she can already express disagreement quite clearly
13:10 moritz babys learn that very quickly :-)
13:11 brrt whiteknight: anyway, i finally uploaded my private keys to github
13:11 brrt so now, i can push to github - yay -
13:11 whiteknight yes, it's a good day. I saw some of your repos in the feed
13:12 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?
13:13 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"
13:13 brrt so, iirc, not having to type sudo before shutdown is a pretty recent change
13:14 whiteknight benabik: that would have been my report too
13:14 moritz is shutdown setuid-root on recent ubuntu?
13:14 benabik brrt: Gnome and unity have had GUI shutdown options for a while now.
13:14 whiteknight benabik: I found a better text editor than I used to have, and my kit is more streamlined now, so those are benefits
13:15 whiteknight 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.
13:15 benabik ...  Bug... in the linker?
13:16 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 whiteknight bacek said there was a problem in debian/testing, which I haven't followed up on yet
13:16 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
13:18 Coke JimmyZ: t/pmc/bignum.t is an easy fix. the macro is "fp_eq", not "fp_eq_ipr"
13:18 Coke *not "fp_eq_pir"
13:19 Coke might need to regenerate the MANIFEST also.
13:19 JimmyZ Coke: I don't have a bignum lib
13:19 JimmyZ Coke: so I can't test it
13:21 moritz I can do that
13:23 brrt also, i install into /home/bart/usr now, so that speeds things up :-)
13:24 Coke moritz: danke. trying to avoid committing ATM.
13:25 whiteknight brrt: yes, it's a very good trick
13:25 whiteknight Coke: I ripped my commit out into a separate branch last night, so that shouldn't be causing any more troubles for you
13:26 dalek parrot/coke/rm_pasm: 8f67a19 | moritz++ | t/pmc/bignum.t:
13:26 dalek parrot/coke/rm_pasm: fix bignum.t, Coke++
13:26 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/8f67a191cc
13:26 dalek parrot/coke/rm_pasm: 38bc6ba | moritz++ | MANIFEST (2 files):
13:26 dalek parrot/coke/rm_pasm: regen manifest
13:26 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/38bc6ba4e6
13:26 brrt what would any of you advise if you were buying a new computer and energy-efficiency was really really important
13:26 brrt netbooks don't count
13:27 whiteknight I am getting into the market for a new laptop myself, but I don't have any recommendations yet
13:28 brrt too bad
13:28 brrt ultrabooks look attractive, but the screen is too small
13:29 whiteknight I used to use a netbook a lot, the small keyboard was always the killer for me
13:30 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
13:30 moritz I guess its result is now completely irrelevant :-)
13:30 brrt my girlfriend has one, i'm jealous of it because of its efficiency, but i can't use one for myself
13:40 brrt what are reasonable things to place in the blog?
13:40 jashwanth joined #parrot
13:40 moritz a short introduction, who you are, what you're going to work on, and why
13:41 moritz and then usually reports about progress, difficulties, fun and not fun while coding
13:41 brrt the first thing, i already did
13:41 brrt next thing, still have to do
13:44 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:57 brrt advertising, okay, cool :-)
13:57 brrt everybody is going to love mod_parrot
13:58 moritz if you make it loveable, yes :-)
13:59 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
14:01 brrt definitely
14:02 moritz then we'll integrate it with Bailador (a Perl 6 clone of Dancer)
14:02 whiteknight that would be boss
14:02 brrt that would be awesome, if you add some scaffolding
14:03 brrt it would be awesome without
14:03 brrt but scaffolding attracts lazy developers
14:03 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
14:03 whiteknight We've been trying to get a GSOC student to work on modparrot for years
14:03 whiteknight and years
14:03 brrt supposing modparrot works early - which i hope - then a fcgi interface could be possible, too
14:03 moritz fastcgi is very nice in theory, but often hard to debug
14:04 moritz but maybe it can be made more debuggable
14:04 whiteknight yeah, that's why I'm not jumping on it
14:04 whiteknight 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
14:05 whiteknight 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:06 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
14:06 moritz right, if you can record the requests and make them replayable, that would be awesome
14:06 brrt as in, not the module itself, but applications using the module
14:07 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
14:08 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:09 brrt moritz: that sounds doable, too
14:09 brrt just need a mockapache
14:10 Coke whiteknight: just wanted to make sure there was no surprise. ;)
14:11 whiteknight no, I've been following along with moritz's work closely
14:11 whiteknight brrt: that might be a bit of a stretch :)
14:11 moritz Coke++ # ensuring communication
14:11 aloha Karma for coke is now 589
14:11 brrt that depends on how much apache api you want to expose
14:12 brrt php can get along very well with a rather minimal set
14:12 moritz brrt: I'd recommend something like the PSGI/Plack API
14:12 moritz brrt: which is well tested and well used in p5 land
14:12 moritz and not too complicated
14:12 brrt i read a bit about psgi
14:12 brrt but i wonder if it should be mandatory
14:13 * 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'
14:13 Coke . o O (but only a little)
14:14 moritz brrt: psgi was very heavily inspired by a similar standard in python :-)
14:15 brrt i'll read up on psgi
14:16 whiteknight in the world where parrot is king, the perl guys can just take the python library wholesale
14:16 whiteknight pretend like they always thought it was a great idea :)
14:16 moritz well, also if the APIs are similar, it's easy to make a small wrapper which ensure full compatibility
14:17 whiteknight yes
14:17 moritz for Perl 6 we'll need type marshalling anyway, so we'll need some kind of custom wrapper
14:29 nine Perl 5 guys can already take the python library...
14:30 whiteknight nine: but they don't have a great threading solution with high performance
14:31 brrt i do wonder a bit, how apache's per-request-memory-pool will relate to parrot
14:31 brrt i suspect that i can trust parrots' garbage collecting
14:33 whiteknight you're going to have to trust it
14:34 NotFound Mostly because there is no other option ;)
14:34 brrt :-)
14:34 whiteknight there aren't too many alternatives from inside parrot, but it is very decent in most ways
14:36 brrt what about filehandles
14:36 whiteknight What do you mean? We have a FileHandle PMC type
14:36 brrt i mean, filehandles should be auto-closed after each request
14:36 brrt bascially, i imagine the following
14:37 brrt 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
14:37 moritz whiteknight: does it? I remember a bug report not too long ago that it doesn't
14:38 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.
14:38 whiteknight are there still? I thought we had most of those issues sorted out
14:38 moritz aye. When I open a file for writing in rakudo, and don't explicitly close it, the file will stay empty
14:38 brrt supposing i don't worry about that
14:39 whiteknight brrt: definitely, that isn't your problem
14:39 NotFound whiteknight: don't know, I always close explicitly.
14:39 moritz $ perl6 -e 'open(:w, "testfile.txt").say("foo")'
14:39 moritz $ wc -l testfile.txt
14:39 moritz 0 testfile.txt
14:39 whiteknight NotFound: me too, but we shouldn't have to. That's what GC is supposed to be fore
14:39 whiteknight for
14:39 JimmyZ_ joined #parrot
14:39 whiteknight moritz: okay, then I suspect finalization is turned off somewhere. I'll look into it
14:40 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.
14:40 moritz fwiw for rakudo it would be very useful to have separate finalization and freeing stages
14:40 jashwanth joined #parrot
14:41 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 moritz and then a second sweep collects their memory
14:41 NotFound brrt: you can enforce GC. set unwanted variables to null and execute a seep op
14:41 NotFound s/seep/sweep
14:42 whiteknight moritz: I can talk to bacek about that. Might be possible without tanking performance
14:42 whiteknight moritz: is that only at interp shutdown, or for all GC passes?
14:42 moritz whiteknight: for all GC passes
14:43 moritz 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
14:43 whiteknight moritz: but we absolutely, positively would not be able to guarantee ordering with such a scheme.
14:43 brrt NotFound: ok, very nice
14:44 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 ;)
14:45 moritz whiteknight: I have trouble evaluating the consequences of that; maybe talk to jnthn about it?
14:47 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
14:48 NotFound close can fail, and you'll never know it.
14:48 moritz I know
14:48 whiteknight in any case, we do need to make sure handles get closed.
14:49 whiteknight Most other stuff is inconsequential compared to external system resources
14:49 moritz I noticed while writing the SQLite backend for DBIish :-)
14:49 moritz it leaked statement handles
14:49 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
14:50 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
14:50 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
14:50 whiteknight NotFound: yeah, but that's a pretty specific solution. What if you have something that isn't  a normal handle?
14:51 whiteknight 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.
14:52 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
14:52 whiteknight yes
14:52 moritz so we'd better support, even if it's not the brightest idea
14:53 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.
14:53 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
14:53 whiteknight or throw an exception
14:53 whiteknight benabik: what do you mean?
14:53 dmalcolm joined #parrot
14:54 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
14:55 whiteknight even strings
14:55 benabik C++ has very definite semantics for construction and destruction.
14:55 aloha Karma for c is now 709
14:55 benabik aloha: shush
14:56 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?
14:56 NotFound benabik: it has... but then read about mixing longjmp with it.
14:56 moritz (during global destruction, that is)
14:56 whiteknight moritz: we can definitely do that, but then we still run into ordering issues
14:56 moritz that way all the objects still see a "normal" ennvironment
14:57 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?
14:58 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 whiteknight I mean, freeing a FileHandle at interp exist is much much more important than freeing an Integer
14:58 whiteknight we can let the system heap manager pull in most dead memory for free, but handles need to be closed
14:58 NotFound A simple idea that probably solve some cases is to null the object root set and the perform a collection.
14:59 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
14:59 moritz whiteknight: yes, we should have a single bit in the PMC header that indicates if that objects needs custom destroy functionality
14:59 nopaste "rurban" at 192.168.1.3 pasted "cygwin overflow rakudo spectest failures" (163 lines) at http://nopaste.snit.ch/137433
15:00 benabik Nulling the root set will catch everything but cycles.
15:00 benabik And cycles are... hard.
15:00 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.
15:00 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
15:01 whiteknight 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:02 NotFound Uh... we already have that bit.
15:02 whiteknight we do?
15:02 whiteknight PObj_destroy?
15:02 benabik PObj_custom_destroy_FLAG
15:03 whiteknight Yeah, that's not exactly the same thing
15:03 whiteknight We don't want to finalize too much at interp shutdown. We only want to finalize the subset of things which hold external resources
15:04 whiteknight 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?
15:05 whiteknight and calling VTABLE_destroy
15:06 whiteknight I probably need to think about this a lot more
15:07 NotFound Well, if it hasn't custom mark nor custom destroy is almost sure that is dead from a GC point if view.
15:08 nopaste "rurban" at 192.168.1.3 pasted "cygwin t/spec/S16-filehandles/filetest.rakudo" (48 lines) at http://nopaste.snit.ch/137434
15:08 NotFound But probably the only save for that is a bunch of Integer and Integer arrays.
15:09 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 #parrot
15:09 benabik Pretty much anyone who uses one will want to have the other.
15:10 moritz on the high level language, either an object has a destructor, or it does not
15:11 whiteknight blah. Destructors and GC are hard
15:11 benabik Yes.
15:13 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:14 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:15 atrodo so perl5 can never be on parrot?
15:15 moritz atrodo: not very performant and 100% compatiable, no
15:16 moritz 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 ;)
15:17 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
15:17 moritz atrodo: so it would be OK to GC ints and refcount blessed objects and array/hash refs
15:17 NotFound benabik: 100% of anything is impossible.
15:18 NotFound benabik: and asking for the lht last 0.1% usually just gets in the way of the remaining 99.9%
15:19 whiteknight I don't think some GC changes are going to be impossible or distract us from other important work
15:19 whiteknight 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
15:19 benabik Trying a GC sweep at exit feels like it shouldn't be terribly difficult.
15:19 whiteknight We have the code to do exactly that. I suspect it's just commented out somewhere
15:20 whiteknight Having a FileHandle and saying we should definitely clean up that FileHandle on program exit is easy
15:20 benabik finalize_gc_system...
15:21 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.
15:21 whiteknight If Rakudo promises that order of destruction will never be important, we can give them almost everything else
15:22 * 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?
15:22 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
15:23 whiteknight 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 whiteknight ...possibly across multiple threads
15:23 whiteknight ...possibly across security sandbox barriers
15:23 benabik There has to be a "normal" order for destruction.  _Some_ order happens.
15:25 benabik aloha is bacek's, right?
15:25 aloha benabik: Dunno.
15:25 benabik aloha: aloha?
15:25 aloha benabik: aloha is simple Bot::BasicBot::Pluggable hosted on https://github.com/bacek/aloha
15:25 whiteknight I know .NET doesn't offer deterministic ordered destruction, so it's not like we're going to lose out on that feature
15:27 whiteknight I don't think JVM does either, but I can't find a source to verify that right now
15:29 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.
15:30 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.
15:30 moritz so that they never OOM while OOMing :-)
15:30 NotFound moritz: we don't even throw out of memory exceptions yet ;)
15:31 benabik I think our response to OOM is "OMG, the world is ending"
15:31 moritz right, we just die.
15:31 rurban you can specify finalizers to help in ordered destruction, like our DESTROY methods. but it's unordered by definition
15:31 benabik DESTROY method that do things other than release resources are probably not sane.
15:34 * benabik wonders what uncommenting `interp->gc_sys->finalize_gc_system = gc_gms_finalize;` would do.
15:35 whiteknight we can't even just do that trick, because PCC will allocate a CallContext to invoke the handler
15:35 whiteknight not to mention any accidental boxing/unboxing that happens while in the handler that would enter an infinite loop
15:36 benabik It shouldn't infinite loop.
15:36 whiteknight if you didn't pop the handler it would
15:36 benabik Oh, the OOM thing.  Blah.
15:37 benabik 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:38 benabik Okay.  Parrot with gms_finalize enabled builds...  testing.
15:38 * benabik expects subtle errors.
15:41 whiteknight I'm sure it will build and run mostly fine
15:41 whiteknight I think we've fixed up most of the expected order issues that used to be a problem
15:41 whiteknight I'm certain that the feature was turned off because of performance concerns
15:42 benabik It was never enabled for GMS.
15:42 brrt what about stop-the-world?
15:42 benabik And never disabled for MS2.
15:42 whiteknight it was definitely enabled and disabled in turns for MS2
15:42 whiteknight I know we went back and forth with it
15:42 benabik Well, it's currently enabled.
15:42 GodFather joined #parrot
15:42 whiteknight i believe that
15:43 NotFound I miss the infinite memory GC
15:43 whiteknight don't we still have it floating around somewhere?
15:43 * moritz misses the machine with infinite memory
15:43 bluescreen joined #parrot
15:44 NotFound whiteknight: Configure help don't mention it
15:44 whiteknight where's that gigantic turing tape I ordered?!?
15:45 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
15:45 brrt provably unused tape can be stitched on the other end
15:46 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.
15:47 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)
16:01 dalek nqp/toqast: 0ce175f | masak++ | src/QAST/Operations.nqp:
16:01 dalek nqp/toqast: [QAST::Operations] added lots of opcodes
16:01 dalek nqp/toqast:
16:01 dalek nqp/toqast: Stopped at a couple that look like special cases.
16:01 dalek nqp/toqast:
16:01 dalek nqp/toqast: Not all of these are tested, and some are probably wrong,
16:01 dalek nqp/toqast: but most of them should work.
16:01 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/0ce175f22c
16:01 whiteknight what is QAST?
16:02 bluescreen joined #parrot
16:11 dalek nqp/toqast: d36485e | masak++ | src/QAST/Operations.nqp:
16:11 dalek nqp/toqast: [QAST::Operations] some more opcodes
16:11 dalek nqp/toqast:
16:11 dalek nqp/toqast: Do let me know if any of these aren't meant to be kept around
16:11 dalek nqp/toqast: any more. I'll remove them right away. :)
16:11 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/d36485eafc
16:12 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:18 nine moritz: Python uses reference counting and in addition has a GC
16:18 nine moritz: at least CPython
16:18 cotto ~~
16:32 whiteknight NotFound: yes, that op is stable enough
16:33 NotFound whiteknight: maybe is better to also add a new get_context and deprecate getcontext, for consistency.
16:41 dalek winxed: a85b898 | NotFound++ | winxedst2.winxed:
16:41 dalek winxed: new builtin get_context, deprecate and reimplement the old getcontext
16:41 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/a85b89848c
16:41 NotFound Done
16:41 whiteknight that's fine too
16:42 Patterner joined #parrot
16:50 * Coke is looking for a web dev in Albany, NY. privmsg me for details)
16:52 whiteknight I know a webdev in NYC. Probably not good enough
16:53 dalek rakudo/nom: 4823171 | duff++ | src/Perl6/Actions.pm:
16:53 dalek rakudo/nom: nqp-ize pir::chr
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/482317114f
16:53 dalek rakudo/nom: 420739a | duff++ | src/ (25 files):
16:53 dalek rakudo/nom: nqp-ize pir::die
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/420739a511
16:53 dalek rakudo/nom: 03fb952 | duff++ | src/ (8 files):
16:53 dalek rakudo/nom: nqp-ize pir::join
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/03fb952b78
16:53 dalek rakudo/nom: c590cc6 | duff++ | src/Perl6/ (5 files):
16:53 dalek rakudo/nom: nqp-ize pir::split
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c590cc6779
16:53 dalek rakudo/nom: 8b63698 | duff++ | src/Perl6/Actions.pm:
16:53 dalek rakudo/nom: nqp-ize pir::index
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/8b63698812
16:53 dalek rakudo/nom: f043136 | duff++ | src/ (3 files):
16:53 dalek rakudo/nom: nqp-ize pir::clone
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f043136b6a
16:53 dalek rakudo/nom: ba88474 | duff++ | src/core/Exception.pm:
16:53 dalek rakudo/nom: nqp-ize pir::exit
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ba88474ec7
16:53 dalek rakudo/nom: 34b5d7d | duff++ | src/ (7 files):
16:53 dalek rakudo/nom: nqp-ize pir::isnull
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/34b5d7dc85
16:53 dalek rakudo/nom: b26ba49 | duff++ | src/Perl6/Metamodel/ (2 files):
16:53 dalek rakudo/nom: nqp-ize pir::istrue
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b26ba49a12
16:53 dalek rakudo/nom: 83587be | duff++ | src/Perl6/ (5 files):
16:53 dalek rakudo/nom: nqp-ize substr
16:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/83587be2c2
17:10 PacoAir joined #parrot
17:26 dalek Rosella: 3784828 | Whiteknight++ | src/random/randomnumber/MersenneTwister.winxed:
17:26 dalek Rosella: 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 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/3784828312
17:27 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:29 whiteknight it's always a little embarrasing to forget such a fundamental fact  of 2s compliment arithmetic
17:33 whiteknight actually, the implementation is still not correct, but I can do the rest of the fixes later
17:36 schmooster joined #parrot
17:43 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:53 whiteknight oh, okay. Cool
17:54 whiteknight moritz: what does the Q stand for?
17:55 moritz whiteknight: it's the successor of P in the alphabet
17:55 benabik nQp, I think
17:55 moritz or mabe Qompact Abstract Syntax Tree :-)
17:57 cotto Quite Abstract Syntax Tree
17:57 atrodo Quasi Abstract Syntax Tree
17:58 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 #parrot
18:16 jashwanth no I have a 64 bit machine
18:17 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 whiteknight or, 32-bit operating systems
18:19 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
18:19 benabik uname -m
18:19 whiteknight whichever
18:24 whiteknight post the result
18:24 jashwanth k
18:24 jashwanth 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
18:25 whiteknight I think that's a 32bit setup
18:25 jashwanth i686
18:25 jashwanth for -m
18:25 whiteknight "parrot_config intvalsize"
18:25 whiteknight and post the result
18:25 jashwanth 4
18:30 jashwanth so a 32 bit one I suppose
18:30 jashwanth is it
18:31 whiteknight yes
18:31 whiteknight do "which parrot-nqp"
18:31 jashwanth /usr/local/bin/parrot-nqp
18:31 whiteknight is that where you're installing things to?
18:32 whiteknight if not, delete it
18:32 jashwanth no actually u gave me some other place
18:32 whiteknight okay, delete it
18:32 jashwanth bin/jashwanth/
18:32 whiteknight delete anything in /usr/local/bin that starts with "parrot"
18:32 jashwanth something like that
18:35 jashwanth ya did that
18:35 whiteknight okay, do "which parrot-nqp" again
18:36 jashwanth now the above statement does not give any result
18:36 whiteknight blah
18:36 whiteknight echo $PATH
18:37 jashwanth why was these files causing the problem
18:37 jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/lo​cal/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
18:45 whiteknight Okay, you need to add your install path there
18:45 whiteknight edit your ~/.bashrc file, and add this to the bottom:
18:45 jashwanth how ?
18:45 whiteknight PATH=$PATH:/home/jashwant/parrot/bin
18:45 whiteknight just a regular text editor
18:51 jashwanth done
18:52 whiteknight okay, close your terminal and restart it
18:52 whiteknight and when it comes back, type "which parrot"
18:52 whiteknight and "which parrot-nqp"
18:53 jashwanth no result in both cases
18:53 whiteknight do echo $PATH again
18:54 jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:​/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/​bin:/usr/games:/home/jashwant/parrot/bin
18:55 jashwanth now its come up
18:55 whiteknight you're getting /home/jashwanth/parrot/bin/parrot?
18:56 jashwanth no
18:56 jashwanth am getting:/home/jashwant/parrot/bin
18:57 jashwanth sorry yes
18:57 jashwanth the same
18:57 whiteknight okay, same for parrot-nqp?
18:58 jashwanth what should I do?
18:58 whiteknight which parrot-nqp
18:58 whiteknight post the result
18:58 jashwanth nothing
18:58 whiteknight try to install parrot again. parrot-nqp should be at the same place as parrot
18:59 jashwanth I am getting no result for both parrot-nqp and parrot
19:00 jashwanth 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
19:00 whiteknight just install it
19:00 moritz what invocation did you use to configure parrot?
19:00 moritz something like perl Configure.pl --prefix=$HOME/parrot/ ?
19:01 jashwanth where do u  think these newly installed files might go?
19:01 whiteknight jashwanth: they should go to wherever you say in --prefix
19:01 whiteknight you pick the directory
19:02 jashwanth ok
19:03 jashwanth should I perform the test
19:03 whiteknight no
19:03 whiteknight configure, make, install. Copy the output and email it to me
19:04 jashwanth am providing the same address "/home/jashwant/parrot"
19:05 whiteknight okay
19:08 jashwanth done
19:09 jashwanth some initial commands are missing for "make install"
19:12 whiteknight what do you mean?
19:12 whiteknight okay, so it installed to /home/jashwanth/parrot/bin/parrot
19:13 whiteknight do "which parrot"
19:13 whiteknight post the result
19:14 jashwanth no result :(
19:14 whiteknight type "/home/jashwanth/parrot/bin/parrot -V"
19:14 jashwanth This is Parrot version 4.3.0-devel built for i386-linux
19:14 jashwanth Copyright (C) 2001-2011, Parrot Foundation.
19:14 jashwanth This code is distributed under the terms of the Artistic License 2.0.
19:14 jashwanth For more details, see the full text of the license in the LICENSE file
19:14 jashwanth included in the Parrot source tree
19:14 whiteknight okay, so the file exists
19:15 whiteknight do "echo $PATH" again and post the result
19:15 jashwanth ok
19:15 jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:​/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/​bin:/usr/games:/home/jashwant/parrot/bin
19:15 whiteknight you have a typo in the last part.
19:15 whiteknight it says "jashwant", but the path you installed to is "jashwanth"
19:16 whiteknight with the "h" at the end
19:16 jashwanth oh no
19:17 jashwanth what do I do now to correct it
19:17 whiteknight edit your ~/.bashrc file again and fix it
19:17 whiteknight then you can close your terminal and restart it to run the changes
19:18 Coke whiteknight: or "exec bash"
19:18 moritz or you run  exec $SHELL
19:18 Coke moritz++'s safer in general.
19:18 aloha Karma for moritz is now 3122
19:19 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.
19:19 jashwanth /usr/lib/lightdm/lightdm:/usr/local/sbin:​/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/​bin:/usr/games:/home/jashwanth/parrot/bin
19:20 whiteknight jashwanth: looks better. Try "which parrot"
19:20 jashwanth /home/jashwanth/parrot/bin/parrot
19:20 whiteknight and "which parrot-nqp"?
19:20 jashwanth /home/jashwanth/parrot/bin/parrot-nqp
19:20 whiteknight yay! progress
19:20 rich joined #parrot
19:20 jashwanth whiteknight++
19:20 aloha Karma for whiteknight is now 2695
19:20 jashwanth whiteknight++
19:20 aloha Karma for whiteknight is now 2696
19:20 jashwanth whiteknight++
19:20 aloha Karma for whiteknight is now 2697
19:21 whiteknight enough!
19:21 whiteknight :)
19:21 jashwanth ohhh.
19:21 jashwanth :)
19:21 whiteknight okay, go to PLA, "make clean && make && make test"
19:21 whiteknight cross your fingers.
19:21 jashwanth yes going for it
19:21 whiteknight awesome
19:22 jashwanth Rosella
19:22 whiteknight oh yes, that first
19:22 whiteknight 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
19:22 whiteknight not that I would know. I would never do that
19:23 jashwanth error:imcc:'$loadlib' is not a valid register name
19:23 jashwanth in file 'setup.winxed' line 1
19:24 jashwanth for Rosella?
19:24 nine whiteknight: but in case you want to: aloah accepts private messages ;)
19:24 whiteknight do "make"
19:24 whiteknight nine: That's even worse! Then the good news isn't logged publicly
19:24 jashwanth ok
19:26 jashwanth done with rosella
19:26 whiteknight awesome, install that and try PLA
19:27 jashwanth doing
19:29 jashwanth Ohhh  no
19:29 jashwanth -------------------
19:29 jashwanth t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0)
19:29 jashwanth Test aborted with non-zero exit code
19:29 jashwanth t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
19:29 jashwanth Test aborted with non-zero exit code
19:29 jashwanth t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
19:29 jashwanth Test aborted with non-zero exit code
19:29 jashwanth Passed 360 tests in 55 files (3 test runs, 22.15 seconds)
19:29 whiteknight garble
19:29 Coke "make clean all test" would probably also work, wk
19:30 whiteknight Coke: baby steps
19:30 bluescreen joined #parrot
19:31 jashwanth so ?
19:31 whiteknight jashwanth: are those the only failures?
19:31 jashwanth yes
19:31 jashwanth Test Summary Report
19:31 jashwanth -------------------
19:31 jashwanth t/pmc/nummatrix2d.t (exit code: 127 Tests: 15 Failed: 0)
19:31 jashwanth Test aborted with non-zero exit code
19:31 jashwanth t/methods/complexmatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
19:31 jashwanth Test aborted with non-zero exit code
19:31 jashwanth t/methods/nummatrix2d/gemm.t (exit code: 127 Tests: 0 Failed: 0)
19:32 jashwanth Test aborted with non-zero exit code
19:32 jashwanth Passed 360 tests in 55 files (3 test runs, 19.94 seconds)
19:32 jashwanth Result: FAIL
19:32 whiteknight okay, let's just ignore it for now.
19:32 whiteknight We'll have to find a better way to debug those later if they become a problem
19:32 jashwanth so now install PLA
19:32 whiteknight you don't need to install it
19:33 jashwanth ok
19:33 whiteknight you will be working there in the repository
19:34 jashwanth so now just go and read the files to get a fair idea   right?
19:34 dalek winxed: a072d6c | NotFound++ | winxedst2.winxed:
19:34 dalek winxed: allow by reference operator in inline
19:34 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/a072d6c00b
19:34 whiteknight yes
19:40 lucian joined #parrot
19:46 brrt joined #parrot
19:50 brrt ping moritz
19:50 moritz brrt: pong
19:51 brrt hi, did you know that in your country (sorry for that phrase) you can buy laptops with linux pre-installed?
19:51 brrt which is awesome
19:52 moritz brrt: yes. In fact I bought one (and immediately removed it)
19:52 moritz it came with suse, and I wanted debian :-)
19:52 moritz but it was still great that I didn't have to pay a windows license :-)
19:52 PerlJam I thought that laptops with linux pre-installed was old hat everywhere.   Been doing it for years in the US
19:52 brrt it isn't in the netherlands
19:53 whiteknight PerlJam: which vendor?
19:53 PerlJam Dell for one.
19:53 whiteknight PerlJam: The only convincing vendor I've found to do it is System76
19:53 whiteknight 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
19:53 brrt amazon.de sells one from hp
19:54 brrt 80 euro's cheaper than the same model with windows
19:55 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:56 contingencyplan joined #parrot
20:00 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:01 dalek nqp/toqast: 4422265 | jnthn++ | src/QAST/Operations.nqp:
20:01 dalek nqp/toqast: Can't have sigless ops any more. Also concat should always work on strings.
20:01 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/4422265aad
20:01 dalek nqp/toqast: 9eb078c | jnthn++ | src/QAST/Compiler.nqp:
20:01 dalek nqp/toqast: 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.
20:01 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/9eb078c0d4
20:01 dalek nqp/toqast: 6999d2b | jnthn++ | src/QAST/ (2 files):
20:01 dalek nqp/toqast: Slurpy can only go on a QAST::Var.
20:01 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/6999d2b636
20:01 dalek nqp/toqast: 63d58d9 | jnthn++ | t/qast/qast.t:
20:01 dalek nqp/toqast: A couple of initial tests for lexical parameters.
20:01 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/63d58d9999
20:01 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.
20:02 * benabik has never heard of System76 before
20:03 whiteknight I hadn't until recently when I googled for linux-friendly laptop manufacturers. They seem legit
20:04 whiteknight http://herbsutter.com/2012/05/03/​reader-qa-what-about-vc-and-c99/
20:04 nine They've been around for ages.
20:04 whiteknight mom always said if I have nothing nice to say, I shouldn't say anything at all
20:05 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 benabik <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."
20:06 nine If only they had better hardware. But for me they just couldn't compete with a Lenovo T420.
20:12 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 whiteknight but you are right, if I could grab a T420 for a decent price that's hard to beat
20:13 * 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
20:13 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
20:13 whiteknight it's the "fast and easy" upgrade button that gets me every time
20:13 whiteknight nine: wow. 13 hours is pretty boss battery life
20:14 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 benabik 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.  :-/
20:14 whiteknight oh, okay. Definitely cross those fingers
20:15 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
20:15 benabik whiteknight: Neither have I, but it crashes anyway.  I'm guessing the dash queries it when you type.
20:15 whiteknight I do get all sorts of dbus-related error messages, and dpkg
20:18 whiteknight it's not a very solid-feeling release, but many of the feature improvements seem worthwhile
20:18 whiteknight hopefully a few patches and weekly updates fix us up
20:19 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:20 benabik I may just uninstall the video lens.  It doesn't seem terribly useful in a school environment.
20:20 whiteknight what is smlnj?
20:20 cotto the standard ml compiler
20:21 benabik From University of New Jersey
20:44 * Coke is not going to YAPC::NA this yeqr.
20:58 * cotto neither
21:00 rurban Configure auto::va_ptr does a stack-buffer-overflow 40 bytes outside (clang -faddress-sanitizer)
21:01 Coke all code run during config probes should probably not be held to the same standard as parrot itself.
21:01 Coke (no clue about that particular probe)
21:02 rurban I'll debug into it. Does not sound too worrysome
21:08 rurban worse: ./parrot -o runtime/parrot/library/PCT/HLLCompiler.pbc compilers/pct/src/PCT/HLLCompiler.pir  heap-buffer-overflow off-by-one
21:09 benabik lol
21:09 rurban probably past the \0 in a string or so
21:09 rurban its a 2byte buffer, probably a 1-byte string
21:11 rurban I forgot the Configure debugging steps: b postpone auto::va_ptr::runstep did not stop
21:22 perlite joined #parrot
21:46 rurban it's compilers/imcc/pbc.c:1947
21:47 benabik rurban++
21:47 aloha Karma for rurban is now 15
21:47 whiteknight joined #parrot
21:47 benabik Buh.  That's my code.
21:47 whiteknight .?
21:49 benabik I'm not sure how that overruns the array, though.
21:54 benabik Does the string returned by Parrot_str_to_cstring have a length of Parrot_str_byte_length?
21:55 NotFound end >= src shouldn't be end >= start ?
21:56 benabik src is the entire string.  start is the be beginning of the data.  end is the end of the data.
21:57 benabik So src <= src <= end < src+sizeof(src) should always be true.
21:57 benabik Oh, I see what you mean there.  That should probably be the case.
21:58 NotFound Or maybe end > start
21:58 benabik I was looking farther down.  rurban blamed :1947
21:58 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
21:58 rurban I believe it's at the end at /* See if there are any garbage characters after the number */
21:58 rurban we have to check if (chr < end)  ...
21:58 rurban yes, that was it.
21:58 NotFound Yes, but if that is wrong it can reach that point in cases it shouldn't
21:59 rurban I'll send my patch
21:59 benabik Oh.
21:59 benabik It's going one past in the "0" case.
21:59 benabik Moving the ++chr to before "case '\0':" is probably the right move.
22:01 benabik benabik--
22:01 benabik heh.  aloha doesn't announce that.
22:02 nopaste "rurban" at 192.168.1.3 pasted "AddressSanitizer heap-buffer-overflow compilers/imcc/pbc.c:1988" (145 lines) at http://nopaste.snit.ch/137517
22:02 benabik That last while loop should never overrun, as it will stop if it hits \0
22:03 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
22:03 benabik If it is, then there's a problem in the setup.
22:04 benabik whiteknight: I'm concerned with allocated memory, not strlen.
22:04 whiteknight oh yes, I think it will have that much memory
22:04 rurban you are right. The last loop is kosher
22:05 benabik Does `end = src + l - 1` drop end on or before the null? (l = length(src))
22:06 benabik 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
22:06 whiteknight that sounds...bad
22:08 rurban oops, that in the gc. trace_mem_block const size_t ptr = *(size_t *)cur_var_ptr
22:09 dalek parrot: b58a50c | benabik++ | compilers/imcc/pbc.c:
22:09 dalek parrot: IMCC: Be more careful with pointers parsing FIAs
22:09 dalek parrot:
22:09 dalek parrot: - Don't let the end be before the start
22:09 dalek parrot: - Incrementing past NULL is generally considered poor on a C string.
22:09 dalek parrot: review: https://github.com/parrot/parrot/commit/b58a50c2b1
22:10 benabik Hm.  I didn't actually wait for the test to complete on the "obvious" fix.  Hope it actually was right.
22:10 benabik benabik--
22:10 nopaste "rurban" at 192.168.1.3 pasted "GC AddressSanitizer stack-buffer-overflow" (49 lines) at http://nopaste.snit.ch/137518
22:16 rurban And I thought this imcc code was Leo's
22:16 benabik I re-write the FIA parser to be less braindead
22:17 benabik Yay.  PASS on Darwin x86_64.  If it still has a problem there let me know, rurban++
22:18 benabik No idea about the GC one though.
22:19 rurban I recompile in a git cloned dir now. This will be hard to catch traditionally
22:19 rurban But I trust AddressSanitizer to be correct
22:20 benabik GCs are tricky beasts that occasionally do things that are not sane anywhere else.
22:21 rurban its tricky because its not easy repro and I'll have to write to catch it
22:21 rurban write code to catch it
22:22 rurban got it again at the same place, good.
22:22 benabik reproducibility is good.
22:22 rurban But I'll do that tomorrow, have to go soon.
22:24 rurban It definitely reading past lo_var_ptr from the stack in trace_system_stack
22:25 rurban Oh, I read that's intentionally
22:25 rurban my boy. I have to blacklist this beast
22:26 benabik GCs do insane things.
22:30 rurban I added #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif to it
22:35 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 #parrot
22:36 rurban samewise for Parrot_gc_trace_root
22:43 rurban 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
22:44 rurban me neither
22:44 rurban I also get stack underflows, reading beyond the 1st arg interp
22:45 whiteknight well, that function does trace up the stack beyond the current frame. that might be what it's talking about
22:46 whiteknight I wonder if there is an annotation we could use to tell the compiler and other analyzers that this behavior is expected
22:47 rurban #ifdef __clang__ __attribute__((no_address_safety_analysis)) #endif
22:47 rurban 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
22:48 rurban this attr is relatively new
22:50 rurban looks good so far. compiling the library pirs now
22:50 rurban I rather try perl6 which is huge
22:51 rurban parrot tests are passing, I have to leave. more tommorrow
22:53 whiteknight you use clang on cygwin?
23:00 benabik joined #parrot
23:12 whiteknight I had a bunch of macros sitting around for doing precise GC. I need to look them up and see about them
23:22 rurban_home joined #parrot
23:26 kid51 joined #parrot
23:30 cotto seen nbrown
23:30 aloha nbrown was last seen in #parrot 1 days 13 hours ago saying "cotto++".
23:30 whiteknight ha
23:31 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.
23:34 kid51 Are there any branches currently needing basic smoke-testing?
23:34 benabik ~~
23:38 aloha joined #parrot
23:38 bacek_at_work ~~
23:39 bacek_at_work c++
23:39 bacek_at_work karma c
23:39 aloha c has karma of 710.
23:39 bacek_at_work sorry for this
23:39 bacek_at_work I reinstalled everything perl-related on my box using local::lib recently.
23:39 bacek_at_work I lost few fixes for bot::basicbot
23:47 Coke bacek_at_work++ # do you run aloha on #perl6 also?
23:48 kid51_ joined #parrot
23:56 bacek_at_work Coke, yes. Let me restart this instance.

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

Parrot | source cross referenced