Parrot 3.8.0 "Magrathea" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 29 September 2011.
dalek kudo/nom: 300627d | Coke++ | t/spectest.data:
track failure modes.

  (mostly slightly reworded due to optimization branch.)
00:18
00:39 preflex_ joined 00:46 plobsing_ joined 01:30 rfw joined 01:34 jsut joined
dalek rrot/kid51/testsets2: 5f133a8 | jkeenan++ | lib/Parrot/Harness/DefaultTests.pm:
Merge branch 'master' of git@github.com:parrot/parrot
02:45
rrot/kid51/testsets2: afc69ec | jkeenan++ | lib/Parrot/Harness/ (2 files):
Second try at extracting test group assignments.
rrot/kid51/testsets2: b32b558 | jkeenan++ | MANIFEST:
Update MANIFEST to include new file.
umage: e04372d | soh_cah_toa++ | src/plumage.nqp:
Fixed 'help' command to display usage information if an unrecognized command is passed so that it doesn't thrown an exception.
03:11
umage: bba3824 | soh_cah_toa++ | src/plumage.nqp:
Combined multiple calls to say() in command_help() into just one since doing otherwise is just wasteful.
03:13
kudo/nom: 05d6117 | moritz++ | docs/ChangeLog:
update ChangeLog
04:55
04:55 bluescreen joined
dalek kudo/nom: ea25f3e | moritz++ | src/core/List.pm:
tweak error message
04:59
06:51 lateau1 joined 07:12 fperrad joined 07:32 mj41 joined 08:54 AzureStone joined 09:10 TonyC joined, Tene joined, nopaste joined 09:32 fperrad joined
nine In case anyone's here, I'd be grateful for feedback on this idea: perl6.niner.name/parrot/getting_rid...index.html 09:32
moritz nine: it seems you have lumped togehter NCI with all other kind of C code 09:40
like custom ops
nine and these can call back into PIR?
09:41 contingencyplan joined
moritz nine: sure 09:41
nine: imagine you write a custom math op 09:42
you'll likely call the get_number vtable
which can very well be implemented in PIR
nine moritz: makes sense, yes. Do you see any reason the same system could not be applied to ops?
Apart from sounding very slow :/
moritz nine: I have trouble seeing how it works 09:45
nine: if you write some C pseudo code that illustrates how I would get the result from a get_number vtable without a nested runloop, that might help
nine moritz: will do. This will probably help me as well 09:50
moritz: thanks already :) 09:54
dalek kudo/nom: aa1ea2a | moritz++ | src/core/Complex.pm:
prefix:<abs>(Complex)
10:01
kudo/nom: 25af2d0 | moritz++ | src/core/Complex.pm:
add return type annotations to Complex ops
nine moritz: updated with some more thoughts. I guess the callstacks should explain a little better how I imagine this to work 10:45
moritz: in short: ideally this would be a purely internal implementation change invisible to HLL 10:46
11:00 ttbot joined
moritz nine: so in summary, you propose that all parrot API calls look up the outer runloop, and there schedule to perform the task they are supposed to do, plus some scary C magic that brings resumes execution in the C function that called them? 11:07
ttbot Parrot 6026393c MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/52782 11:09
moritz I could imagine that this might lead to stack corruption very quickly
you'd need to maintain a stack of C stacks 11:10
nine moritz: that's why I think there should still be some nesting going on. But nested scheduler loops instead of nested runloops. For task preemption there needs to be only _some_ scheduler loop running, not neccessarily the outer most. 11:13
The advantage being only one PIR runloop being active at any time making preemption possible. 11:15
Actually this would be _less_ magic than we have now
11:37 Psyche^ joined 11:43 Coke joined 12:15 Coke joined
awwaiid moritz/nine -- starting to sound like Coro :) 12:30
moritz awwaiid: well yes, coroutines are a solution to nested runloops 12:31
awwaiid I meant with the C stack juggling specifically
dalek rrot/kid51/testsets2: 638c465 | jkeenan++ | lib/Parrot/Harness/TestSets.pm:
Update docs to reflect switch to glob patterns.
12:33
awwaiid perl5 Coro splices out/in C stacks to deal with any XS modules. That's why Coro is so Scarily Awesome (Awesomely Scary?) -- it deals both with perl5 internals and XS/C extensions 12:35
13:11 not_gerd joined
not_gerd hello, #parrot 13:11
nine: I don't think you can get rid of nested runloops without taking a snapshot of the C stack 13:16
nine: this is indeed possible, eg by manually creating a copy of the stack on the heap (eg gnu guile does it this way) 13:18
nine: a more portable approach could be to create a new os-level thread for each C call and schedule these the same way as PIR tasks 13:19
nine: however, all three approaches (nested runloops, manual stack copying, threads) have their own issues
benabik There are POSIX functions for dealing with the stack: getcontext/setcontext. 13:31
I have pondered that writing Parrot would be easier if we had a C-with-continuations.
(Of course, writing parrot in an environment with GC and continuations is somewhat the point of M0, as I understand it.) 13:32
14:54 bluescreen joined 14:57 not_gerd joined 15:03 mj41 joined 15:05 Coke joined 15:25 mj41 joined 15:58 whiteknight joined 16:13 lateau left 16:16 GodFather joined
dalek CT: 622c8ee | benabik++ | / (10 files):
Rename Markdown files to .mkd

This makes Vim much happier.
17:17
benabik Q: Does Winxed ignore POD comments, or do I need to wrap them in /* */? 17:26
sorear winxed: do you have an evalbot 17:27
benabik I guess I'll just test it when I'm done building Parrot. 17:30
Need to wrap them. Check. 17:31
17:34 eternaleye_ joined 17:38 zby_home joined 17:47 GodFather joined 17:50 soh_cah_toa joined 17:59 GodFather joined
dalek gest-dynpmcs: b5dd829 | fperrad++ | / (2 files):
use get_id instead of get_addr
18:16
a: 945450f | fperrad++ | dynext/pmc/luaany.pmc:
remove useless get_pointer
18:24 mj41 joined
benabik I was going to work on PACT, but first I want a Winxed syntax highlighter… So wheee.. 18:24
18:40 wagle joined 18:42 Coke joined
benabik … Interesting. Winxed uses String.unescape, which is marked experimental. 18:43
soh_cah_toa what the heck? parrot-nqp only supports private class attributes? 18:47
that's kinda lame...
benabik nqp is not a good system language.
soh_cah_toa is parrot-nqp = nqp || nqp-rx? 18:48
benabik nqp-rx
soh_cah_toa is it actually kept in sync w/ nqp-rx or is it kinda our own version?
benabik It's kept in sync with nqp-rx, but nqp-rx is barely ever updated these days. 18:49
soh_cah_toa rakudo uses nqp (not nqp-rx), right? 18:50
benabik Yes. 18:51
nom does. b uses -rx
soh_cah_toa ok
why the switch? 18:52
benabik nap has 6model, native types, and probably a few other things.
*nqp
soh_cah_toa oh and doesn't it have the new qregex engine too? 18:53
benabik Yes.
soh_cah_toa so then it's not really true the nqp = nqp w/o regex and nqp-rx = nqp w/ regex
benabik Yeah... 18:54
I think there was an nqp before nqp-rx that didn't have them.
soh_cah_toa yeah
it sounds like we'd be pretty stupid to continue using nqp-rx when nqp is clearly superior
benabik It went nqp -> nqp-rx -> nqp. 18:55
soh_cah_toa and more actively maintained
benabik We may change when 6model is in parrot.
But probably not before that.
(my guess)
soh_cah_toa so then...never? ;) 18:56
benabik :P
soh_cah_toa what version of perldoc does parrot-nqp use: p5 or the unrenderable p6? 18:57
benabik I think 6.
There's POD6 parser now in nom… but I don't know how tied it is to the Perl6 parser. 18:58
soh_cah_toa o rly?
what's it called? how do i use it?
i've been dying to actually render p6 pod 18:59
benabik It was a GSoC project. I'd ask over in #perl6 19:00
soh_cah_toa oh right, tadzik i think
benabik Right.
alvis_ Hello all. 19:05
benabik: If I may, are there any docs, of which you are aware, which denote the differences between 'nqp' and 'nqp-rx'?
dalek rrot/kid51/testsets2: cdae7a7 | jkeenan++ | / (4 files):
Add program t/fullharness.

This enables us to run the equivalent of 'make fulltest' as a single target rather than a sequence of individual targets. This brings us closer to being able to submit a smoke report on 'fulltest'.
Restructure lib/Parrot/Harness/TestSets.pm so it's more hash-focused than array-focused. Correct documentation in lib/Parrot/Harness/DefaultTests.pm and use new interface to TestSets.pm.
19:05 eternaleye_ joined
benabik alvis_: NQP is what I would call "documentation light". :-/
Wheee… I'm writing a Winxed syntax file by reading the tokenizer. 19:06
alvis_ benabik: :-)
benabik: Also, you are saying parrot development "should" be with nqp-rx (or parrot-nqp) instead of nqp (or Winxed)? 19:07
benabik alvis_: I would personally recommend winxed for parrot development at this point.
soh_cah_toa agreed 19:08
alvis_ benabik: May I ask why? (I'm just for a basic idea as to why, at this point.)
soh_cah_toa it's prettier and way faster ;)
benabik Faster agreed.
(Prettier depends on how much you like Perl, I suppose.) 19:09
alvis_ Ok, sounds good. (And I like Perl, quite a
a'lot, actually)
benabik alvis_: Mostly winxed is much closer to the actual semantics of the Parrot VM. NQP{,-rx} try to layer Perl semantics on top of it.
soh_cah_toa yes, it's more natural 19:10
benabik (
alvis_ benabik: Oh, ok. Thanks you. That helps.
Make that, Thank you. (Can't type today.)
soh_cah_toa they're both quite poorly documented but i think winxed does a little better job 19:11
alvis_: are you still new to winxed? have you used it before?
19:12 bluescreen joined
benabik winxed has documentation, which puts it ahead of NQP. Agreed it's a little sparse. 19:12
alvis_ soh_cah_toa: Very. I've only looked at it and read through the docs on the Rosella website.
soh_cah_toa alvis_: ah good. that's exactly what i was gonna recommend you go read
benabik I'm also fairly unused to Winxed. Writing a syntax highlighter is my starting point. :-D 19:13
(I may be crazy)
alvis_ benabik: Yeah, I cloned PACT. I really like the idea/drive behind the project, fwiw.
soh_cah_toa also, winxed follows the principle of least surprise a lot better than nqp does. that's b/c nqp wasn't really designed to be a general purpose language and only used by rakudo devs 19:15
alvis_ soh_cah_toa: Ahh ..., that makes sense then. 19:16
soh_cah_toa benabik: wasn't there a project that would allow pct users to write they're action methods in winxed? 19:17
s/they're/their/ #whoops
benabik soh_cah_toa: I don't think there needs to be a project for it… PCT just calls methods on an object.
s/PCT/nqp-rx/
The real use of nqp-rx at this point is grammars, IMHO. It's the best parsing system we have. 19:18
soh_cah_toa sure
sometimes i think it might just be a good idea to offer an alternative syntax at least to pct users who aren't crazy about perl. in particular, python devs 19:20
alvis_ Fwiw, the whole PCT is a cool idea. Reminiscent of re2c or PEGs, but, for me at least, very unfamilar.
When I *first* started looking and digging around, I was really expecting a flex/bison related tool chain. 19:21
soh_cah_toa indeed, it is reminiscent of peg's
benabik It's a fancy recursive decent parser. 19:22
I'd love something with a similar syntax but better backeng.
backend.
soh_cah_toa i wish we had a better and up to date tutorial for pct though :\\
benabik The best I can offer is my cish writeup.
github.com/benabik/cish 19:23
soh_cah_toa yeah, and squaak but it's old
alvis_ soh_cah_toa: Second, big time, on the tutorial for pct.
benabik alvis_: ^^ my cish project was an overview for a class. Not structured as a tutorial, but fairly detailed.
alvis_ benabik: Yeah, I just found that a day or two ago. I just haven't gotten 'round to looking at it yet.
benabik Squaak isn't bad. It just needs to be updated. I don't think it's too out of date though... 19:24
alvis_ benabik: Agreed.
soh_cah_toa, benabik: Well, thank you both very much. I appreciate it. But I gtg to Ft. Worth now. 19:26
benabik alvis_: Have a good trip!
soh_cah_toa alvis_: sure, no problem
NotFound ~~ 19:52
19:52 logie joined
benabik Winxed syntax file for vim: gist.github.com/1291335 19:54
soh_cah_toa benabik++ 20:01
NotFound never use syntax coloring
soh_cah_toa vim syntax files can be a bit of a pain to write
benabik soh_cah_toa: This is a very very simple one. I basically just ran down the Javascript syntax and added the Winxed keywords.
It's enough to make it more readable.
soh_cah_toa cool
NotFound: how come? it makes things more readable 20:02
NotFound soh_cah_toa: it may be a generational barrier
soh_cah_toa whatever floats your boat, i guess 20:03
your boat just isn't very colorful :P
NotFound Just the name "Winxed" is much more colorful than any other programming language. 20:06
soh_cah_toa i'll give you that :)
plobsing_ soh_cah_toa: (re: alternate syntax) people could always start using Ωη;)XD </shameless-plug> 20:29
soh_cah_toa oh 20:30
plobsing_ PCT at its core, IIRC, is simply a means of plugging different compiler stages together. A different parser shouldn't be too much trouble. 20:33
dalek rrot: 2aca3a1 | dukeleto++ | tools/dev/mk_language_shell.in:
[tools] Prevent mk_language_shell.pl from creating svn $Id$ lines
20:36
soh_cah_toa agh, where the heck is the coding conventions document? 20:39
i can never find it >:(
you'd think it'd be in docs/project or docs/dev but no 20:40
plobsing_ you mean docs/pdds/pdd07_codingstd.pod? 20:42
soh_cah_toa ah, yes
plobsing_ find docs | grep coding # ftw
soh_cah_toa not sure i like it in a pdd but whatever
plobsing_ PDDs are supposed to be more binding or something. Which is, of course, why they are for the most part some of the least accurate descriptions of Parrot available in our docs. 20:44
I don't really like anything as a PDD.
soh_cah_toa yeah, codingstd has nothing to do w/ the "design" of parrot though
a more appropriate place would be docs/dev or docs/project 20:45
plobsing_ soh_cah_toa: If you'd like to put our docs in order, I'm sure it would be much appreciated.
soh_cah_toa but it really doesn't matter b/c hardly anybody follows it anyway
plobsing_ that's not true. we have codingstd tests 20:46
soh_cah_toa that usually fail :P
plobsing_ oh?
soh_cah_toa yeah. i'd actually like to make a git hook that runs codingstd tests before commiting
plobsing_ I thought we had magical awesome code gnomes that fixed those.
soh_cah_toa usually the release manager b/c they're the only ones who *have* to run 'fulltest' 20:47
plobsing_ I run fulltest regularly on my branches.
soh_cah_toa wow, i'm surprised. good
plobsing_ yeah, little good it does me. it seems my changes always cause problems anyways. 20:48
soh_cah_toa i suppose i could open an rfc ticket to see how people would feel about a pre-commit hook that runs codingstd tests. that's the best way to get people to actually follow them
plobsing_ I'd be -1 for that. I know several developpers (myself included) whose workflow includes breaking codingstds in minor ways for intermediate states. 20:49
for example, bacek and myself use // to indicate temporary comments, which should be dealt with before merge to master. 20:50
soh_cah_toa can hooks just display a warning rather than totally preventing the commit?
i'll have to check
plobsing_ plus commit hook is the wrong granularity
it should be a 'merge to master' hook
soh_cah_toa that would certainly help 20:51
and wouldn't whine about intermediate states
dalek p-parrot-create: f804aa6 | dukeleto++ | LICENSE:
add artistic license 2.0
21:01
p-parrot-create: 6c1e876 | dukeleto++ | bin/new_parrot_language.pl:
Fork tools/dev/mk_language_shell.pl from parrot.git so I can bend it to my will
benabik Whee… Reading a packfile! gist.github.com/1291423 21:07
21:16 bubaflub joined 21:18 logie joined 21:23 mj41 joined
dalek nxed: 33a55cb | NotFound++ | winxed.winxed:
add ability to use custom stages to non installable driver
21:32
benabik Huh. The Packfile PMCs are telling me that this has 0 PMC constants. pbc_dump says 2 21:37
NotFound benabik: I'll not be surprised if both are wrong. 21:42
benabik NotFound: pbc_dump I think is right… 1 empty FIA for the return, 1 Sub PMC
dalek kudo/nom: 6f86603 | (Geoffrey Broadwell)++ | src/core/Main.pm:
Merge WIP snapshot 2 of main-usage
21:43
NotFound Sounds likely
dalek umage: 13e45b8 | soh_cah_toa++ | docs/hacking/ (6 files):
Fixed all perldoc in docs/hacking so that `perl6 --doc` renders it correctly. Also fixed a bunch of grammatical errors.
21:46
benabik $S0 = $P0[$I0] should be calling get_string_keyed_int($S0, $P0, $I0), yes?
NotFound benabik: yes 21:47
benabik :-(
I'm thinking that the Packfile PMCs are not very well tested.
NotFound Ehhhh... not exactly: should be: $S0 = get_string_keyed_int(nterp, $P0, $I0) 21:48
benabik NotFound: Er, yes, that's what I mean.
benabik was thinking opcode-like, not C func like. 21:49
soh_cah_toa no, they definitely are not
benabik Well, I'm going to finish this and then start poking at the guts.
gist.github.com/1291423
NotFound Thet are probably incomplete, also.
soh_cah_toa good luck. packfile internals are U.G.L.Y. 21:50
benabik soh_cah_toa: I've already poked around in them some. 21:59
soh_cah_toa you poor, poor thing ;)
dalek CT: c936f43 | benabik++ | / (6 files):
Move documentation to docs directory.

Leave README and TODO in place. This is in preparation for there actually being code in the repository.
22:47
CT: a4dd2e5 | benabik++ | src/disasm.winxed:
Toy Disassembler

Uses Packfile PMCs to get information out of a PBC file.
benabik I'm planning on starting off with disassembly into a PACT structure. Can then work on the reverse. :-D
The gist I've been posting has my current notes. gist.github.com/1291423 22:48
soh_cah_toa benabik++ 22:49
it's exciting :)
benabik Need to fix the PMC const and filename issues.
dalek rrot: b160d31 | benabik++ | src/pmc/packfile (3 files):
Update Packfile* PMC documentation

Packfile:
   - Does not have a uuid_length key
   - unpack takes a string, does not return one
PackfileDebug:
   - Doesn't have two get_string_keyed_int methods
PackfileOpMap
   - Isn't a debug segment
   - Has opcode mappings, not filename mappings
23:01
benabik Rejected commit title: "Make Packfile PMC documentation lie less"
soh_cah_toa is seriously traumatized by packfile's after gsoc 23:02
23:02 pjcj joined
benabik D'oh 23:20
pmc_count is accurate when you call it instead of num_count 23:21
copypasta
23:22 rfw joined
soh_cah_toa isn't there a document that describes how to use argument types when calling pir opcodes in nqp? i'm talking about the 'IPs' in `pir::does__IPs()`. i never know when to use lowercase or uppercase 23:22
benabik Is there a way to discover if something can be stringified? 23:24
soh_cah_toa if it 'does string' perhaps? 23:25
benabik Nope! Fun, fun. 23:28
Hm. Should FixedIntegerArray have a get_string VTABLE? 23:35
soh_cah_toa well, yeah. if you wanted to display the contents of the array w/ something like say() 23:36
benabik That's my thought, but it doesn't seem to have one.
soh_cah_toa interesting...
i would see what happens when you try to print one 23:37
benabik It throws an exception about missing get_string VTABLE
dalek CT: 98e8269 | benabik++ | src/disasm.winxed:
Fix copypasta with PMC constants
23:38
CT: 9f17df7 | benabik++ | src/disasm.winxed:
Add custom code to print FIAs.

Shouldn't it just have a get_string VTABLE?
benabik PackfileDebug segment is… odd. 23:54
It (ab)uses get_string_keyed_int to return an integer. 23:55
soh_cah_toa no kidding
benabik It's marked experimental. So if I start mucking with it, nobody will care?
soh_cah_toa well, i do plan on making the podds segment into the regular debug segment once it's complete but that probably won't be for a while 23:56
a long, long while
benabik When you do, I expect you to update src/pmc/packfiledebug.pmc. ;-) 23:58
23:59 eternaleye_ joined
soh_cah_toa if it ever happens at all. i don't even know anymore :( 23:59