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