|
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 | 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 | |
| so I think that covers the meat of dukeleto's ticket | |||
| I'm not sure, but based on my reading of gc_gms_sweep_pools that we're already doing a 2-pass sweep | 00:29 | ||
| No, wait. Subtly different | 00:34 | ||
| dalek | rrot/whiteknight/gc_two_stage_sweep: 0f8993b | Whiteknight++ | src/gc/gc_gms.c: Implement 2-pass 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 | |
| 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 | |
| threads shortly after that | |||
| dalek | rrot: 9dd39b0 | Whiteknight++ | ChangeLog: Mention Parrot_x_* and exit() changes in ChangeLog |
00:53 | |
| sella/gh-pages: 1ff27cd | Whiteknight++ | / (2 files): +a stub page for Net documentation. |
01:03 | ||
| sella: 63a1e2f | Whiteknight++ | src/core/Parrot.winxed: + a small TODO note, we need a method to determine if we're on darwin |
|||
| whiteknight | and I think whiteknight/gh_675 is mergable too. All these things are pending testing on Rakudo, of course | 01:04 | |
|
01:04
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#344 (master - 9dd39b0 : Whiteknight): The build was fixed. | 01:04 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/a......9dd39b0 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1301119 | |||
|
01:04
travis-ci left
|
|||
| whiteknight | it does not look like Rakudo uses VTABLE_can at all | 01:08 | |
| bacek_at_work | whiteknight, (GC) glad you like it :) | ||
| 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. | ||
| whiteknight | awesome. I haven't benchmarked yet | ||
| I don't think it should be a problem, but you never know | |||
| I have too many branches! I need to start merging them. It's going to be crazy next month | 01:13 | ||
| ttbot | Parrot 9dd39b00 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84392 | 01:22 | |
| whiteknight | it is absurd to me that the sysinfo op is a dynop when the information in it is so fundamental | 01:42 | |
| 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 | |||
| 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:43 | ||
| 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 | ||
| it's better than nothing, I suppose | |||
| I'll sleep on it. For now, bed | 01:46 | ||
| cotto | ~~ | 05:16 | |
| moritz | whiteknight++ # gc_two_stages_sweep | ||
| benabik | ? | ||
| Oh. Missed the branch. Awesome. whiteknight++ indeed | 05:17 | ||
| bacek_at_work | we have to separate VTABLE_destroy from VTABLE_finalize | 05:21 | |
| finalize will able to resurrect "dead" objects | |||
| destroy is for freeing resources | 05:22 | ||
| and we have to have "Write Barrier" approach to handle resurrection | |||
| so | |||
| two steps is just first two steps on 1000 steps road | 05:23 | ||
|
05:37
mdupont joined
05:55
fperrad joined
|
|||
| cotto | ~~ | 06:23 | |
|
06:37
nbrown joined
07:27
brrt joined
|
|||
| dalek | kudo/nom: 9df9957 | moritz++ | src/core/Rat.pm: Rat.ceiling which does not go through Num |
07:52 | |
|
08:15
lucian joined
08:24
alin joined
|
|||
| dalek | kudo/nom: 6a660de | moritz++ | docs/ChangeLog: three more changelog items |
08:31 | |
|
09:19
nbrown joined
09:44
schm00ster joined
|
|||
| dalek | kudo/enum-nonint: 417d760 | moritz++ | src/Perl6/Actions.pm: start to make enums less int centric |
10:22 | |
|
11:03
crab2313 joined
11:44
JimmyZ joined
11:49
alin joined
11:59
contingencyplan joined
12:01
whiteknight joined
|
|||
| dalek | kudo/enum-nonint: 24a3016 | moritz++ | src/ (3 files): [enum] defer creation of type object until we know the base type now setting compilation blows up in term:sym<name> with Can only use nqp_get_sc_for_object with a SixModelObject |
12:19 | |
|
12:30
woosley joined
|
|||
| dalek | kudo/nom: 4cfdb7c | moritz++ | src/Perl6/Actions.pm: get rid of two Q:PIR blocks |
12:34 | |
|
12:55
PacoAir joined
13:12
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:14 | |
| Coke | anyone here talk to adu about implementing scheme on parrot? | 13:15 | |
| whiteknight | Is adu a scheme-interested newcomer? | 13:16 | |
| Coke | he's been on #perl6 for a little while now. Just happened to mention the scheme thing overnight. | 13:17 | |
| so, yes. | 13:18 | ||
| 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. | ||
| alvis | Coke: There's pheme and steme, which he can grab via plumage. Neither work, but they could be a good starting point. | 13:22 | |
| 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:25 | |
|
13:26
brrt joined
13:27
brrt left
|
|||
| 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:27 | |
|
13:28
Hunger joined
|
|||
| 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:39 | |
| Though, of course, Winxed or NQP would be the "preferred" languages with which to work. | 13:40 | ||
| whiteknight | I definitely love bootstrapped approaches | 13:54 | |
| I wonder how much interest we could drum up if we started such a thing | 13:56 | ||
| Coke | for scheme specifically? | 13:57 | |
| 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. | 13:58 | |
| 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.) | ||
| 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. | ||
| whiteknight | alvis: yes, getting started has never been as easy as it should be | 14:06 | |
| 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." | ||
| whiteknight | I've been reading up a lot on rails recently, and I'm inpsired by some of their automation tools | ||
| 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:08 | |
| whiteknight | ha! Okay, that's motivation enough | 14:09 | |
| I've actually got such a tool planned with Rosella, I just haven't put in the work to make it happen yet | |||
| maybe I can fast-track that before the release, because of the code freeze on master | 14:10 | ||
| Winxed is a little bit harder because we have to pick the parser we want to use | 14:13 | ||
| 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 | |||
| 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. | ||
| NotFound | I'm a big fan of hand coded recursive descent. | ||
| whiteknight | yeah, me too. But how do you create a boilerplate for that, so new users can have code to start with? | 14:16 | |
| We're looking for something that we can set new users up with quickly to get them started | |||
| The script will probably look like this: | 14:17 | ||
| NotFound | ohm-eta, probably, but we'll need a good example/tutorial. | ||
| whiteknight | create_language <lang_name> <nqp-rx, nqp or winxed> [--parser=recdescent] | ||
| so I'll have template files for <langname>.<parsername>.template | |||
| and we can have all sorts. --parser=ohmeta, --parser=nqprx, etc | 14:18 | ||
| I wish lalrskate had matured more, that would have been a great addition | 14:19 | ||
| alvis | what's lalrskate? | 14:20 | |
| 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. | ||
| whiteknight | he got much of the algorithmic core done, but it wasn't ready to plug into a toolchain yet | ||
| 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 | |
| with pointers to "you can replace this with <foo>" rather than including that int he tool. | |||
| we already have 2 completely different tools for generating languages, which is one too many (IMO) | 14:24 | ||
| 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:25 | |
| 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:26 | |
| 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? | ||
| tadzik | I don't think that anybody wrote it | ||
| 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? | ||
| tadzik | I think only Rakudo's using the new nqp | 14:30 | |
| JimmyZ | and nqp itsself | ||
| NotFound | I think rakudo is not very adequate as example of a simple compiler for beginners ;) | ||
| tadzik | right :) | 14:31 | |
| Coke | partcl is mid-switch to the new nqp. | 14:35 | |
| that is slightly more adequate for beginners, but tcl is still weird. | 14:36 | ||
| whiteknight | NotFound: no, Rakudo isn't a good beginner example to follow itself, but it's tools can be | 14:37 | |
| NotFound | whiteknight: as long as they don't need to browse its source tree to figure. | 14:38 | |
| alvis | Coke++ # I, for one, definitely want tcl interop. | 14:39 | |
| NotFound | A book "Write your own rakudo version from scratch in easy steps" may be good, though ;) | 14:40 | |
| (Probably not a best seller) | 14:41 | ||
|
14:45
fperrad joined
|
|||
| JimmyZ | maybe jnthn++'s "Inside A Compiler" talk is a good example? | 14:45 | |
| Coke | alvis: really!? | 14:55 | |
| I think you are the only person in 12 years who has said that. ;) | |||
| whiteknight | the tcl syntax seems pretty simple, from my limited understanding of it. I might be underestimating | 15:02 | |
| of course, it's the semantics which are a bear | 15:07 | ||
|
15:09
dmalcolm joined
|
|||
| dalek | kudo/nom: ddbf78c | (Kyle Hasselbacher)++ | t/spectest.data: mark S02-names-vars/perl.t and S32-str/indent.t as requiring ICU |
15:32 | |
|
15:40
Psyche^ joined
16:01
alin joined
|
|||
| dalek | kudo/nom: 372e6b7 | moritz++ | src/core/Rat.pm: implement Rat.norm |
16:04 | |
| p/toqast: e997116 | kboga++ | / (2 files): Adds the hash qast op |
16:19 | ||
| p/toqast: 7923535 | jonathan++ | / (2 files): Merge pull request #37 from kboga/toqast-op-hash Toqast op hash |
|||
| benabik | alvis: cish is built with nqp-rx. It's an exploration of what you get from mk_language_shell.pl | 16:27 | |
| cotto | ~~ | 16:47 | |
|
17:02
PacoAir joined
17:21
plobsing_ joined
17:43
benabik joined
|
|||
| dalek | p: 7e25971 | (Gerhard R)++ | 3rdparty/libtommath/bn_mp_radix_size.c: fix bug in libtommath's mp_radix_size() |
17:49 | |
|
17:49
hercynium joined
17:59
mdupont joined
18:09
mdupont_ joined
18:12
dngor joined
18:34
crab2313 joined
18:39
adu joined,
fperrad joined
18:47
brambles joined
19:07
alester joined
|
|||
| adu | erg | 19:50 | |
| I'm lost | |||
| sorear | joule | 19:52 | |
| how can I help | |||
|
19:54
dngor joined
|
|||
| adu | hi sorear | 20:00 | |
| I'm trying to write actions | |||
| and I don't understand the PCT or PAST documentation | 20:01 | ||
| and what's the difference between :pirop('x') and pir::x? | 20:02 | ||
| benabik | :pirop('x') is a hash/named argument. pir::x invokes the x opcode. | 20:04 | |
| adu | oh ok | 20:05 | |
| so | 20:09 | ||
| if I wanted to stop using PCT/PGE, but use rakudo instead, is there a way to use HLLCompiler from rakudo? | 20:10 | ||
| benabik | No idea. | 20:12 | |
| alvis | adu: Have you looked at nqp? (not nqp-rx, btw) | 20:14 | |
| 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:15 | ||
| 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. | |||
| adu | Coke: :) | 20:17 | |
| benabik | Oh. I thought that was Saturday. Whichever. | ||
| alvis | Coke: Ha! You're right there. I'm painting the baby's room! | ||
| 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 .... | ||
| benabik | alvis: Fair enough. The -2 mo old is taking up enough of my time. | ||
| 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 | ||
| alvis: It wasn't quite intended as a tutorial, but it does have the virtue of being very recent. | |||
| adu | alvis: so did you mean new-nqp instead of parrot-nqp? | 20:20 | |
| alvis | benabik: thanks, and I will. | 20:21 | |
| 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:22 | ||
|
20:24
plobsing joined
|
|||
| 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 | ||
| alvis | adu: oh, ok. I think 'mk_language_shell.pl' uses nqp-rx aka parrot-nqp. | 20:25 | |
| 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 | ||
| 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:28 | |
| alvis | adu: github.com/Benabik/cish.git # cish | 20:29 | |
| adu | I learn best by reading the docs, and there aren't many | ||
| alvis | adu: parrot.github.com/html/pct_tutorial.html # pct | 20:30 | |
| adu | it would be nice if all of those example languages were still there | ||
| benabik | parrot.github.com/html/docs/pdds/pd...t.pod.html | ||
| 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 | ||
| but it's hard to tell which lines are option keys and which are option values | |||
| it's probably just a CSS issue | 20:32 | ||
| alvis | adu: pdd26-ast is, evidently, according to issue #269, a'bit out-a'date. it's on my get-to list. | 20:33 | |
| 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. | ||
| adu | do I really have to do if $<X> { make $<X>.ast } else ⦠every time there is an '|' in the grammar? | 20:36 | |
| benabik | Unless they all assign to the same name, yes. | 20:37 | |
| adu | what do you mean "assign to the same name"? | ||
| benabik | The reason why you have to do the if $<X>, is because the alternations all have different names. Generally like <foo> | <bar> | <baz> | ||
| 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> ] | ||
| $<X> is a shortcut for $/{'X'} | 20:39 | ||
| It's looking up the result for the sub rule in the capture. | |||
| adu | oh | ||
| benabik | $/ is where the capture is stored. (The match information for the regex) | ||
| adu | so I could do a $/.keys[0].ast? | ||
| benabik | That would get you the _name_ of the subrule. | 20:40 | |
| adu | oh | ||
| benabik | You might be able to do something like $/.values[0].ast... not sure. | ||
| adu | make $/{$/.keys[0]}.ast? | ||
| Coke | error:imcc:The opcode 'getprop_p_p_p' (getprop<3>) was not found. Check the type and number of the arguments | 20:46 | |
| who keeps breaking tcl? ;) | 20:47 | ||
| benabik | I think it's getprop_p_p_s, isn't it? | ||
| Coke | Any pointers? this breakage is probably in the past... six months. | ||
| benabik | getprop_p_s_p and getprop_p_p_s | ||
| Coke | I'm invoking: pir::getprop('args', $sub); | ||
| ok. I'll be more specific. | 20:48 | ||
| (this used to work, so something changed in pir:: mebbe. | |||
| benabik | It should probably be getprop($sub, 'args') | ||
| And it sounds like NQP doesn't know it's sig, so you might want to use getprop__PPS | 20:49 | ||
| Coke | bleargh. still getting the "# got : 'set_string_native() not implemented in class 'TclString'' | 20:50 | |
| " error I reported years ago. | |||
| benabik | What? | ||
| Coke | search github issues for TclString | 20:51 | |
| sorry, 17 months ago. | 20:52 | ||
| benabik | Well, have to go. But looks like it's deep in the class system, which is bad news. | 20:53 | |
| Coke | I assumed it was bad news or it'd have been fixed sooner. ;) | 20:54 | |
|
21:08
adu_ joined
21:32
crab2313 left
|
|||
| dalek | rrot: 8fd4d39 | jnthn++ | / (2 files): 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 | |
| p: 9ddfc35 | jnthn++ | tools/build/PARROT_REVISION: Bump to a Parrot that builds on MSVC. |
21:44 | ||
| kudo/nom: 6c6056d | jnthn++ | tools/build/NQP_REVISION: Bump to get MSVC Parrot build fix and the libtommath radix fix. |
21:46 | ||
|
21:48
adu joined
21:54
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#345 (master - 8fd4d39 : jnthn): The build was broken. | 21:54 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/9......8fd4d39 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1309474 | |||
|
21:54
travis-ci left
22:26
Tene joined
|
|||
| dalek | kudo/nom: cc71885 | jnthn++ | src/Perl6/ (2 files): 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 | |
|
22:32
kid51 joined
22:41
plobsing joined
|
|||
| ttbot | Parrot 8fd4d39a MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/84448 | 23:24 | |
| kid51 | taptinder's MSWin32 machine has been reporting failures for some time now; perhaps spurious: tt.taptinder.org/buildstatus/parrot/master | 23:46 | |
|
23:57
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 23:57 | |
| kid51 | Yo! | 23:59 | |
| whiteknight | oy! | ||
| kid51 tests perl-5.16-RC0 | |||