Camelia, the Perl 6 bug

IRC log for #parrot, 2012-05-11

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:05 whiteknight I think I've got all the remaining instances of exit() calls removed. In all cases we either do an API jump out or as a last resort call PARROT_FORCE_EXIT which can be redefined on platforms without exit()
00:05 whiteknight so I think that covers the meat of dukeleto's ticket
00:29 whiteknight I'm not sure, but based on my reading of gc_gms_sweep_pools that we're already doing a 2-pass sweep
00:34 whiteknight No, wait. Subtly different
00:48 dalek parrot/whiteknight/gc_two_stage_sweep: 0f8993b | Whiteknight++ | src/gc/gc_gms.c:
00:48 dalek parrot/whiteknight/gc_two_stage_sweep: Implement 2-pass sweep.
00:48 dalek parrot/whiteknight/gc_two_stage_sweep:
00:48 dalek parrot/whiteknight/gc_two_stage_sweep: Sweep all generations looking for dead PMCs. Call VTABLE_destroy if necessary and add them to a dead_list. Next, iterate the dead_list, freeing memory. This scheme should completely avoid order-of-destruction issues, because all PMCs are kept alive until all destroy vtables are called. moritz++ for the idea. bacek++ for writing such easy-to-hack GC code.
00:48 dalek parrot/whiteknight/gc_two_stage_sweep: review: https://github.com/parrot/parrot/commit/0f8993b772
00:52 whiteknight okay, I think we can definitely get this 2-stage sweep code and the gc_finalization branch merged shortly after 4.4, if it's looking good
00:52 whiteknight threads shortly after that
00:53 dalek parrot: 9dd39b0 | Whiteknight++ | ChangeLog:
00:53 dalek parrot: Mention Parrot_x_* and exit() changes in ChangeLog
00:53 dalek parrot: review: https://github.com/parrot/parrot/commit/9dd39b00ea
01:03 dalek Rosella/gh-pages: 1ff27cd | Whiteknight++ | / (2 files):
01:03 dalek Rosella/gh-pages: +a stub page for Net documentation.
01:03 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/1ff27cd0e0
01:03 dalek Rosella: 63a1e2f | Whiteknight++ | src/core/Parrot.winxed:
01:03 dalek Rosella: + a small TODO note, we need a method to determine if we're on darwin
01:03 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/63a1e2fff3
01:04 whiteknight and I think whiteknight/gh_675 is mergable too. All these things are pending testing on Rakudo, of course
01:04 travis-ci joined #parrot
01:04 travis-ci [travis-ci] parrot/parrot#344 (master - 9dd39b0 : Whiteknight): The build was fixed.
01:04 travis-ci [travis-ci] Change view : https://github.com/parrot/par​rot/compare/a6ec4a1...9dd39b0
01:04 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/1301119
01:04 travis-ci left #parrot
01:08 whiteknight it does not look like Rakudo uses VTABLE_can at all
01:08 bacek_at_work whiteknight, (GC) glad you like it :)
01:09 whiteknight bacek_at_work: I was expecting it to be much harder to make that change. Can you look at that commit and make sure I did it right
01:09 bacek_at_work whiteknight, looks good.
01:09 whiteknight awesome. I haven't benchmarked yet
01:09 whiteknight I don't think it should be a problem, but you never know
01:13 whiteknight I have too many branches! I need to start merging them. It's going to be crazy next month
01:22 ttbot Parrot 9dd39b00 MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/84392
01:42 whiteknight it is absurd to me that the sysinfo op is a dynop when the information in it is so fundamental
01:42 whiteknight And we have a whole list of data about fundamental data types in include/parrot/datatypes.h with absolutely no good way to get that information out
01:43 whiteknight We don't have any way in core parrot, that I can find, to get something so simple as INTVAL_MAX. We need to load a dynop to get it
01:45 whiteknight I want to suggest that we should merge most of the options from the sysinfo op into interpinfo_i_i, though I'm not entirely thrilled with that interface
01:45 whiteknight it's better than nothing, I suppose
01:46 whiteknight I'll sleep on it. For now, bed
05:16 cotto ~~
05:16 moritz whiteknight++ # gc_two_stages_sweep
05:16 benabik ?
05:17 benabik Oh.  Missed the branch.  Awesome.  whiteknight++ indeed
05:21 bacek_at_work we have to separate VTABLE_destroy from VTABLE_finalize
05:21 bacek_at_work finalize will able to resurrect "dead" objects
05:22 bacek_at_work destroy is for freeing resources
05:22 bacek_at_work and we have to have "Write Barrier" approach to handle resurrection
05:22 bacek_at_work so
05:23 bacek_at_work two steps is just first two steps on 1000 steps road
05:37 mdupont joined #parrot
05:55 fperrad joined #parrot
06:23 cotto ~~
06:37 nbrown joined #parrot
07:27 brrt joined #parrot
07:52 dalek rakudo/nom: 9df9957 | moritz++ | src/core/Rat.pm:
07:52 dalek rakudo/nom: Rat.ceiling which does not go through Num
07:52 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9df9957000
08:15 lucian joined #parrot
08:24 alin joined #parrot
08:31 dalek rakudo/nom: 6a660de | moritz++ | docs/ChangeLog:
08:31 dalek rakudo/nom: three more changelog items
08:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6a660deb56
09:19 nbrown joined #parrot
09:44 schm00ster joined #parrot
10:22 dalek rakudo/enum-nonint: 417d760 | moritz++ | src/Perl6/Actions.pm:
10:22 dalek rakudo/enum-nonint: start to make enums less int centric
10:22 dalek rakudo/enum-nonint: review: https://github.com/rakudo/rakudo/commit/417d76010e
11:03 crab2313 joined #parrot
11:44 JimmyZ joined #parrot
11:49 alin joined #parrot
11:59 contingencyplan joined #parrot
12:01 whiteknight joined #parrot
12:19 dalek rakudo/enum-nonint: 24a3016 | moritz++ | src/ (3 files):
12:19 dalek rakudo/enum-nonint: [enum] defer creation of type object until we know the base type
12:19 dalek rakudo/enum-nonint:
12:19 dalek rakudo/enum-nonint: now setting compilation blows up in term:sym<name> with Can only use nqp_get_sc_for_object with a SixModelObject
12:19 dalek rakudo/enum-nonint: review: https://github.com/rakudo/rakudo/commit/24a30163ab
12:30 woosley joined #parrot
12:34 dalek rakudo/nom: 4cfdb7c | moritz++ | src/Perl6/Actions.pm:
12:34 dalek rakudo/nom: get rid of two Q:PIR blocks
12:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4cfdb7c7cd
12:55 PacoAir joined #parrot
13:12 whiteknight joined #parrot
13:14 whiteknight good morning, #parrot
13:15 Coke anyone here talk to adu about implementing scheme on parrot?
13:16 whiteknight Is adu a scheme-interested newcomer?
13:17 Coke he's been on #perl6 for a little while now. Just happened to mention the scheme thing overnight.
13:18 Coke so, yes.
13:19 whiteknight okay, awesome
13:19 benabik I'll be happy to toss in my $0.02 on language implementation, but I'm going to be afk most of the weekend.
13:22 alvis Coke: There's pheme and steme, which he can grab via plumage. Neither work, but they could be a good starting point.
13:25 whiteknight I suspect a basic scheme compiler could be put together with a basic recursive descent parser and a few hours of free time
13:26 brrt joined #parrot
13:27 brrt left #parrot
13:27 whiteknight obviously getting the runtime library and object semantics down will take work, and optimizing things to be less naive will be more work still
13:28 Hunger joined #parrot
13:39 alvis 'course, another approach, would be to take a minimal implementation, e.g., one of Norvig's in Common Lisp, Python or Java, and implement the basic interpreter in either Winxed or NQP or nqp-rx or PIR, which you can then use to bootstrap the rest of Scheme.
13:40 alvis Though, of course, Winxed or NQP would be the "preferred" languages with which to work.
13:54 whiteknight I definitely love bootstrapped approaches
13:56 whiteknight I wonder how much interest we could drum up if we started such a thing
13:57 Coke for scheme specifically?
13:58 alvis Well, I'm about 95% done with my lisp core, which, hopefully, will serve as just such a thing. At least, it'll demonstrate an approach.
14:00 whiteknight alvis: you're working on a lisp core for Parrot?
14:00 alvis The tricky bit is not the lispy "core," it's figuring out all the other stuff, especially if your new to parrot. Which language to use; how to use the opcodes; which language to use to write the core; yada, yada. Basically, figuring out how to target parrot. (At least, it's been so for me.)
14:01 alvis whiteknight: yeah, for my clojure implementation. I've been trying to document things for other's to follow.
14:01 Coke mmm. I would agree with that.
14:06 whiteknight alvis: yes, getting started has never been as easy as it should be
14:07 whiteknight What we really need are improved setup scripts, like mk_language_shell that do more work, are better documented, and set up you in a more fool-proof way
14:07 alvis I've gotten a'bit side-tracked because of the documentation thing. But that's one of the reasons I decided to involve myself with documentation: Because it's been ... a struggle to figure out the basic "how tos."
14:07 whiteknight I've been reading up a lot on rails recently, and I'm inpsired by some of their automation tools
14:08 alvis whiteknight: agreed. i've been thinking about doing something similar in Winxed. But, mostly, I'm hoping you'll beat me to it. :)
14:09 whiteknight ha! Okay, that's motivation enough
14:09 whiteknight I've actually got such a tool planned with Rosella, I just haven't put in the work to make it happen yet
14:10 whiteknight maybe I can fast-track that before the release, because of the code freeze on master
14:13 whiteknight Winxed is a little bit harder because we have to pick the parser we want to use
14:13 whiteknight Right now the options are either a home-brew recursive descent parser or ohm-eta, which I haven't used yet and might be stale
14:15 alvis whiteknight: yep, you're right. with a lispy core, it's not much of a problem, but with other languages ... yeah, the parser bit can be a challenge.
14:15 whiteknight NQP-rx is more straight-forward, definitely.
14:15 NotFound I'm a big fan of hand coded recursive descent.
14:16 whiteknight yeah, me too. But how do you create a boilerplate for that, so new users can have code to start with?
14:16 whiteknight We're looking for something that we can set new users up with quickly to get them started
14:17 whiteknight The script will probably look like this:
14:17 NotFound ohm-eta, probably, but we'll need a good example/tutorial.
14:17 whiteknight create_language <lang_name> <nqp-rx, nqp or winxed> [--parser=recdescent]
14:17 whiteknight so I'll have template files for <langname>.<parsername>.template
14:18 whiteknight and we can have all sorts. --parser=ohmeta, --parser=nqprx, etc
14:19 whiteknight I wish lalrskate had matured more, that would have been a great addition
14:20 alvis what's lalrskate?
14:21 whiteknight it was an LALR parser generator, like bison, that a GSOC student worked on a year or two ago
14:21 NotFound I have a very old Turbo Pascal manual that teaches how to write a recursive descent parser for expressions in one chapter. Is not that unrealistic to expect a language-creator-would-be to do it.
14:21 whiteknight he got much of the algorithmic core done, but it wasn't ready to plug into a toolchain yet
14:23 Coke I think we already ahve too many options for language creation. Be nice if there was an single option that worked and was well documented.
14:23 Coke with pointers to "you can replace this with <foo>" rather than including that int he tool.
14:24 Coke we already have 2 completely different tools for generating languages, which is one too many (IMO)
14:25 NotFound The advantage of a tool is that it can be automatically tested. A document must be checked to be up-to-day by hand.
14:26 whiteknight Coke: We're sort of in a middle place right now. We can't really be recommending nqp-rx forever because I think we want to be using real NQP instead
14:28 alvis whiteknight: oh wow. that's excellent. and it's written in winxed as well. hmm ...
14:28 NotFound There is a version of the squaak tuorial, os something equivalent, for recent NQP?
14:28 tadzik I don't think that anybody wrote it
14:29 tadzik also, new NQP is currently moving to new AST (QAST rather than PAST) so things will probably change
14:29 alvis there's benabik's cish, but i haven't worked through it yet. (gonna try to get through it this weekend.) is that in nqp-rx or nqp?
14:30 tadzik I think only Rakudo's using the new nqp
14:30 JimmyZ and nqp itsself
14:30 NotFound I think rakudo is not very adequate as example of a simple compiler for beginners ;)
14:31 tadzik right :)
14:35 Coke partcl is mid-switch to the new nqp.
14:36 Coke that is slightly more adequate for beginners, but tcl is still weird.
14:37 whiteknight NotFound: no, Rakudo isn't a good beginner example to follow itself, but it's tools can be
14:38 NotFound whiteknight: as long as they don't need to browse its source tree to figure.
14:39 alvis Coke++ # I, for one, definitely want tcl interop.
14:40 NotFound A book "Write your own rakudo version from scratch in easy steps" may be good, though ;)
14:41 NotFound (Probably not a best seller)
14:45 fperrad joined #parrot
14:45 JimmyZ maybe jnthn++'s "Inside A Compiler" talk is a good example?
14:55 Coke alvis: really!?
14:55 Coke I think you are the only person in 12 years who has said that. ;)
15:02 whiteknight the tcl syntax seems pretty simple, from my limited understanding of it. I might be underestimating
15:07 whiteknight of course, it's the semantics which are a bear
15:09 dmalcolm joined #parrot
15:32 dalek rakudo/nom: ddbf78c | (Kyle Hasselbacher)++ | t/spectest.data:
15:32 dalek rakudo/nom: mark S02-names-vars/perl.t and S32-str/indent.t as requiring ICU
15:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ddbf78c71c
15:40 Psyche^ joined #parrot
16:01 alin joined #parrot
16:04 dalek rakudo/nom: 372e6b7 | moritz++ | src/core/Rat.pm:
16:04 dalek rakudo/nom: implement Rat.norm
16:04 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/372e6b728d
16:19 dalek nqp/toqast: e997116 | kboga++ | / (2 files):
16:19 dalek nqp/toqast: Adds the hash qast op
16:19 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/e9971163c8
16:19 dalek nqp/toqast: 7923535 | jonathan++ | / (2 files):
16:19 dalek nqp/toqast: Merge pull request #37 from kboga/toqast-op-hash
16:19 dalek nqp/toqast:
16:19 dalek nqp/toqast: Toqast op hash
16:19 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/792353597e
16:27 benabik alvis: cish is built with nqp-rx.  It's an exploration of what you get from mk_language_shell.pl
16:47 cotto ~~
17:02 PacoAir joined #parrot
17:21 plobsing_ joined #parrot
17:43 benabik joined #parrot
17:49 dalek nqp: 7e25971 | (Gerhard R)++ | 3rdparty/libtommath/bn_mp_radix_size.c:
17:49 dalek nqp: fix bug in libtommath's mp_radix_size()
17:49 dalek nqp: review: https://github.com/perl6/nqp/commit/7e25971480
17:49 hercynium joined #parrot
17:59 mdupont joined #parrot
18:09 mdupont_ joined #parrot
18:12 dngor joined #parrot
18:34 crab2313 joined #parrot
18:39 adu joined #parrot
18:39 fperrad joined #parrot
18:47 brambles joined #parrot
19:07 alester joined #parrot
19:50 adu erg
19:50 adu I'm lost
19:52 sorear joule
19:52 sorear how can I help
19:54 dngor joined #parrot
20:00 adu hi sorear
20:00 adu I'm trying to write actions
20:01 adu and I don't understand the PCT or PAST documentation
20:02 adu and what's the difference between :pirop('x') and pir::x?
20:04 benabik :pirop('x') is a hash/named argument.  pir::x invokes the x opcode.
20:05 adu oh ok
20:09 adu so
20:10 adu if I wanted to stop using PCT/PGE, but use rakudo instead, is there a way to use HLLCompiler from rakudo?
20:12 benabik No idea.
20:14 alvis adu: Have you looked at nqp? (not nqp-rx, btw)
20:15 alvis benabik: btw, thanks for the clarification. like I said earlier, I'm gonna *try* -- emphasis on the try -- to work through cish this weekend. depends a'bunch on the two-month old. :)
20:16 adu alvis: if I'm not mistaken it's what mk_language_template.pl uses by default
20:16 * Coke reminds all hacker dads in the US that they might want to not hack on Sunday.
20:17 adu Coke: :)
20:17 benabik Oh.  I thought that was Saturday.  Whichever.
20:17 alvis Coke: Ha! You're right there. I'm painting the baby's room!
20:18 benabik adu: Sadly, there are three versions of nqp:  The original, which nobody (to my knowledge) uses.  nqp-rx, which is bundled with Parrot as parrot-nqp, and is used in most of the examples out there.  And new nqp, which is used by Rakudo and includes re-implementations of many features of Parrot (which, to some extent, we're trying to steal back as rapidly as possible).
20:18 alvis adu: wait one ....
20:18 benabik alvis: Fair enough.  The -2 mo old is taking up enough of my time.
20:19 benabik alvis: If you have any questions or comments, feel free to msg me.  I'm busy most of the weekend, but I'll get back to you when I can.
20:19 benabik alvis: It wasn't quite intended as a tutorial, but it does have the virtue of being very recent.
20:20 adu alvis: so did you mean new-nqp instead of parrot-nqp?
20:21 alvis benabik: thanks, and I will.
20:22 alvis adu: yes. I was digging around, looking for 'mk_language_template.pl'. I don't know what that is, so I can't answer that.
20:24 plobsing joined #parrot
20:24 alvis adu: I'm afraid I'm not very familiar either with nqp or rakudo. (though I do plan to better familiarize myself with both over time.) I just figured there's gotta be a way from nqp, since some modules inherits (or whatever) from HLLCompiler.
20:24 adu oops, mk_language_shell.pl
20:25 alvis adu: oh, ok. I think 'mk_language_shell.pl' uses nqp-rx aka parrot-nqp.
20:27 alvis adu: anyway, if you git nqp, you can probably dig around in there and find out how the rakudo folks do it. Or you could just ask mortiz++ or jnthn++ or sorear++. I'm sure they could tell you.
20:27 adu my biggest confusion right now is PAST
20:28 benabik PAST is a little bit of a beast, and not terribly well documented.  squaak or cish are good if you learn by example.
20:29 alvis adu: https://github.com/Benabik/cish.git # cish
20:29 adu I learn best by reading the docs, and there aren't many
20:30 alvis adu: http://parrot.github.com/html/pct_tutorial.html # pct
20:30 adu it would be nice if all of those example languages were still there
20:30 benabik http://parrot.github.com/html​/docs/pdds/pdd26_ast.pod.html
20:31 alvis adu: yep, the docs are a mess, but we're diligently trying to get 'em shape...
20:31 adu PDD26 is what I've been reading
20:31 adu but it's hard to tell which lines are option keys and which are option values
20:32 adu it's probably just a CSS issue
20:33 alvis adu: pdd26-ast is, evidently, according to issue #269, a'bit out-a'date. it's on my get-to list.
20:34 alvis adu: 'course. that doesn't help you much now.
20:34 benabik It's missing the last few rounds of improvements, but it's still fairly accurate.
20:36 adu do I really have to do if $<X> { make $<X>.ast } else … every time there is an '|' in the grammar?
20:37 benabik Unless they all assign to the same name, yes.
20:37 adu what do you mean "assign to the same name"?
20:37 benabik The reason why you have to do the if $<X>, is because the alternations all have different names.  Generally like <foo> | <bar> | <baz>
20:38 adu oh, and why is it $<X> instead of $X?
20:38 benabik If they all had the same name, it wouldn't matter.  ( <foo> ) | [ <foo> ]
20:39 benabik $<X> is a shortcut for $/{'X'}
20:39 benabik It's looking up the result for the sub rule in the capture.
20:39 adu oh
20:39 benabik $/ is where the capture is stored.  (The match information for the regex)
20:39 adu so I could do a $/.keys[0].ast?
20:40 benabik That would get you the _name_ of the subrule.
20:40 adu oh
20:40 benabik You might be able to do something like $/.values[0].ast...  not sure.
20:40 adu make $/{$/.keys[0]}.ast?
20:46 Coke error:imcc:The opcode 'getprop_p_p_p' (getprop<3>) was not found. Check the type and number of the arguments
20:47 Coke who keeps breaking tcl? ;)
20:47 benabik I think it's getprop_p_p_s, isn't it?
20:47 Coke Any pointers? this breakage is probably in the past... six months.
20:47 benabik getprop_p_s_p and getprop_p_p_s
20:47 Coke I'm invoking: pir::getprop('args', $sub);
20:48 Coke ok. I'll be more specific.
20:48 Coke (this used to work, so something changed in pir:: mebbe.
20:48 benabik It should probably be getprop($sub, 'args')
20:49 benabik And it sounds like NQP doesn't know it's sig, so you might want to use getprop__PPS
20:50 Coke bleargh. still getting the "#      got : 'set_string_native() not implemented in class 'TclString''
20:50 Coke " error I reported years ago.
20:50 benabik What?
20:51 Coke search github issues for TclString
20:52 Coke sorry, 17 months ago.
20:53 benabik Well, have to go.  But looks like it's deep in the class system, which is bad news.
20:54 Coke I assumed it was bad news or it'd have been fixed sooner. ;)
21:08 adu_ joined #parrot
21:32 crab2313 left #parrot
21:42 dalek parrot: 8fd4d39 | jnthn++ | / (2 files):
21:42 dalek parrot: Seems dynpmcs (or at least, one of the NQP ones) have ended up with a call to Parrot_x_panic_and_exit; I don't see it used directly in the code, so I guess it's the PMC compiler or a macro that's introducing the call to it. Thus it must be marked PARROT_EXPORT. This unbusts NQP build on MSVC.
21:42 dalek parrot: review: https://github.com/parrot/parrot/commit/8fd4d39a61
21:44 dalek nqp: 9ddfc35 | jnthn++ | tools/build/PARROT_REVISION:
21:45 dalek nqp: Bump to a Parrot that builds on MSVC.
21:45 dalek nqp: review: https://github.com/perl6/nqp/commit/9ddfc35ddd
21:46 dalek rakudo/nom: 6c6056d | jnthn++ | tools/build/NQP_REVISION:
21:46 dalek rakudo/nom: Bump to get MSVC Parrot build fix and the libtommath radix fix.
21:46 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6c6056d0e3
21:48 adu joined #parrot
21:54 travis-ci joined #parrot
21:54 travis-ci [travis-ci] parrot/parrot#345 (master - 8fd4d39 : jnthn): The build was broken.
21:54 travis-ci [travis-ci] Change view : https://github.com/parrot/par​rot/compare/9dd39b0...8fd4d39
21:54 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/1309474
21:54 travis-ci left #parrot
22:26 Tene joined #parrot
22:31 dalek rakudo/nom: cc71885 | jnthn++ | src/Perl6/ (2 files):
22:31 dalek rakudo/nom: Implement < a b c > syntax in regexes. Note that it doesn't do LTM yet; it'll get it automatically once alternations start to do so.
22:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cc7188553a
22:32 kid51 joined #parrot
22:41 plobsing joined #parrot
23:24 ttbot Parrot 8fd4d39a MSWin32-x86-multi-thread make error http://tt.taptinder.org/cmdinfo/84448
23:46 kid51 taptinder's MSWin32 machine has been reporting failures for some time now; perhaps spurious:  http://tt.taptinder.org/buildstatus/parrot/master
23:57 whiteknight joined #parrot
23:57 whiteknight good evening, #parrot
23:59 kid51 Yo!
23:59 whiteknight oy!
23:59 * kid51 tests perl-5.16-RC0

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

Parrot | source cross referenced