Parrot 4.7.0 "Hispaniolan" | parrot.org | Log: irclog/perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 27 August 2012.
00:04 benabik joined
benabik ~~ 00:15
whiteknight good evening benabik 00:31
benabik o/ whiteknight, how's things?
00:36 kid51 joined
whiteknight benabik: things are good enough. Over the weekend we bought a new big-boy bed for my son at Ikea. My hands are still sore from putting it together and punching things out of frustration 00:41
but besides sore hands, things are very good. you? 00:42
benabik whiteknight: A little hectic. Sorting out new classes, committee assignments, TA position, office, daycare, etc.
stty erase 00:43
ww
whiteknight What school are you at, again?
benabik Was at RIT, now University of Rochester. 00:44
Moved down the river.
whiteknight How is the program there? 00:45
I'm still half looking for a program to continue my studies
kid51 benabik: Does move to UofR mean you finished masters at RIT? 00:56
benabik kid51: I... finished my coursework?
Thesis was a bit larger and more interrupted by my kid than expected.
kid51 So are you now PhD candidate?
(And do you have a shorter commute?)
benabik I am a PhD candidate. The commute is actually a bit longer, since I almost pass RIT on the way to UR. 00:57
kid51 Ah, you must live out in the burbs.
benabik whiteknight: The program seems pretty good. There is a very strong sense of community in the department. And the way they fund students is far more flexible than normal. I'm not as tied to my advisor's research as it seemed like I would in other schools. 00:58
kid51: Yar, I live out west.
whiteknight benabik: funding is key. I did my MS for "free" (minus books, fees, etc) and I can't imagine doing it otherwise 01:10
benabik whiteknight: I actually have a reasonable stipend. :-) Not great, but much better than I was paid to sysadmin at RIT. Also, they require trying for several grants. 01:11
(And give help in writing the application.)
kid51 was on phone 01:18
Coke ponders going back for a masters or phd. 01:26
especially since $dayjob has a super generous tuitino program.
*tuition
kid51 A tuitino program is one that supplies you with nano-sized tuits, right? ;-) 01:27
01:44 contingencyplan joined
dalek sella/commandline_2: e1b5631 | Whiteknight++ | src/commandline/ (3 files):
[CommandLine] add a rudimentary ability to require a certain number of positional arguments. Right now we have to give them names, but we can't look them up by name later
01:46
02:24 MikeFair joined
MikeFair Greetings #parrot! 02:36
sorear greetings MikeFair 02:39
02:51 MikeFair joined 03:06 bluescreen joined 03:16 arnsholt joined 03:17 mvorl joined 05:03 bluescreen joined
MikeFair if I wanted to implement an if statement, the reference I have says if <logical> however they don't define <logical> anywhere I can see 05:15
nor do they talk about it
now I know what they are wanting, but I don't know how to express that in Parrot 05:16
or more specificall PCT
Should I just use <EXPR>? 05:17
sorear MikeFair: reading LBAC? 05:21
MikeFair I am, but it's kind of confusing because it kind of looks like Perl6 rules, but isn't, it kind of looks like the language shell mk_language_shell gave me. Squakk seems to use some older practices that cish does a different way 05:24
squakk looks closer to what I want -- but like I said, doesn't seem to fit with what I have/am creating 05:25
05:25 sivoais joined
MikeFair plus I have this BNF that I'm following: www.jaedworks.com/hypercard/scripts...k-bnf.html 05:25
sorear there have been about five iterations of the perl6/parrot grammar engine
all subtly different
MikeFair yeah that's kind of what I seem to be encountering 05:26
sorear *rakudo/parrot perl6-grammar engine
MikeFair Plus it seems that a lot of this is also just "best practice" conventions
Yeah I've been reading everything I can on Perl6 Grammars too but it seems even those are inconsistent, plus some have mistakes 05:27
sorear pmichaud told me in frankfurt, can I remember...
C grammars (dead)
original PGE (dead)
object-oriented PGE (oldest you're likely to see, the original squaak tutorial used this, no support for inline code so _requires_ actions)
used by rakudo alpha 05:28
MikeFair Then add on top of that, I can't tell what's my not understanding what I'm reading/learning, and what's just been updated since this was written or a mistake
sorear nqp-rx (integrated with a perl6 subset, used by Rakudo beta, current squaak tutorial uses this one)
qregex (newest rakudo regex engine, not currently used in parrotland)
MikeFair I'm using these references: en.wikibooks.org/wiki/Parrot_Virtua...irst_Steps 05:29
and
github.com/Benabik/cish
sorear thaaaat would appear to be the original squaak, using grammar engine #3 from the list above 05:30
MikeFair oooohhhhhh
ok
pmichaud afaik there's not an up-to-date tutorial about writing languages for nqp or parrot. I'm working on one now. 05:31
sorear cish looks to be using nqp-rx, #4
MikeFair pmichaud: :)
sorear it seems odd how there has been a spike in people wanting to use nqp for languages corresponding with the NQP documentation hackathon in Norway 05:32
*coinciding
pmichaud yeah, things just work out that way sometimes.
sorear pmichaud: did I miss any in that list?
pmichaud sorear: looks to me like you got it about right.
MikeFair * there are no coincidences :) *
pmichaud: If I could make a recommendation, something that would really help me understand this more would be a couple choices to mk_language_shell.pl 05:33
pmichaud MikeFair: like what kinds of "choices" ? 05:34
sorear there are at least five non-Parrot P6grammar engines too (Pugs(?), Niecza, Cursor.pmc, GGE, Pegex)
pmichaud I suspect that "mk_language_shell" will simply become a github repository for me. :-)
sorear guesses Pugs would have a p6grammar engine unrelated to anything but isn't actually sure 05:35
pmichaud actually, iirc Pugs used PGE for its grammar engine
MikeFair pmichaud: Something that would help me practice with changing the Grammar.pm without having to mess with Actions.pm or Runtime.pm
sorear pmichaud: dynamically loading parrot?
pmichaud MikeFair: oh, to change grammar.pm one typically wants to use --target=parse
MikeFair pmichaud: In addition to bare
pmichaud sorear: yeah, something like that.
of course, Pugs used a Parsec grammar to parse its perl6 code; it then used PGE for P6 regular expressions. 05:36
05:36 fperrad joined
MikeFair pmichaud: Yes, but what I'd like to do is then bind my Grammar.pm results to pre-existing Actions.pm methods 05:36
For instance in the existing shell language I don't have blocks or variable declarations or an assignment statement 05:37
pmichaud MikeFair: well, if you change the grammar it often changes what Actions.pm is looking for. But I'll keep this in mind as I create the tutorials
sorear has no idea what mildew or perlito do with p6regex; Regexp::Grammars might also count
MikeFair pmichaud: The idea is that I'll make sure that i have to make my Grammar.pm line up with what Actions.pm is expecting
For instance, if I want to start a new block, I have to make sure I match it in the proto rule new_block { <*> } ruleset 05:40
Actions.pm then will have the implementation of the new_block method
pmichaud oops, I'm being kicked out of the room I'm in... bbiaw 05:41
MikeFair That way I can play with different syntaxes to create a new block, I can study how a new block gets created
:)
I have no idea if this one is more recent or older: 05:53
parrot.github.com/parrot-docs2/2.8....orial.html
Can someone help me see if I'm comprehending this right? 05:58
rule statement_list { [ <statement> | <?> ] ** ';' }
A <statement> or a something I can't really figure out 05:59
repeat that a bunch of times with a ; in between
each one 06:00
moritz <?> matches the empty string 06:02
so it's really just "statements or nothing delimited with ;" 06:03
MikeFair Ahhhh
It seemed to be some kind of "optional" 06:04
Is that the same match as <.?>
no I guess it wouldn't be
<.?> would actually consume something
I can see that it works to create separate statments, I just can't see why :( 06:07
I can see that ; or newline can separate statements, but it's not clicking for me why they are doing that... or more specifically how the match is being made 06:08
moritz it's the same as [ <statement>? ';' ]* except that the version with <?> allows you to omit the last semicolon 06:13
MikeFair ahh ok, I can see that now 06:14
and unless otherwise specified each match won't cross a newline boundary? 06:15
moritz I have no idea what <statement> looks like, and if it allows newlines ore not 06:21
MikeFair statement has <EXPR> as the last piece in most cases 06:22
when it doesn't, the subrules typically have newline matches in them
err the subrules cross newline boundaries
statement is <statement_control> or <EXPR> 06:23
Someone finally explained to me that <EXPR> is being provided by the bowels of the PCT
moritz also since it's a rule, it implicitly matches <.ws>
MikeFair nods. 06:24
Right whenever a ' ' occurs it puts in <.ws> right
moritz so if ws allows newlines, statement_list does too
correct
MikeFair it does not allow newlines
and the . in the <.ws> does what again?
i'm still working on all those new operators ? . : 06:25
I read them, then have to read them again 06:26
moritz the . supresses capturing 06:27
so there will be no $<ws> to access the matched whitespace
MikeFair Yeah ok, that makes more sense to me know 06:32
err now
I kept reading "ignore the match"
but it wasn't sinking in what exactly that meant
I get it now! ( And it's going to stick this time ) :) 06:33
When I do a 'make $<capturename>.ast' I'm creating a PAST node with that name? 06:45
and filling the value of the node in with the value in the capture? 06:46
arnsholt MikeFair: make $<capture>.ast will make the .ast of the node you're currently be the .ast of the node in $<capture> 07:00
MikeFair arnsholt: So as Grammar.pm is matching stuff it's making an AST node object 07:01
arnsholt No, AST nodes are created by the action methods in Actions.pm 07:02
After a successful match rule/token/regex foo will call the corresponding action method foo, with the match object as an argument
07:02 brrt joined
arnsholt The action method can then use make to create an AST node for the match 07:02
MikeFair OOHHHHHH, it's not waiting for a terminal, if there's a rule with the same name as the match, whenever that rule is matched, it calls the method from actions 07:03
? 07:04
arnsholt Yup
MikeFair err s/rule/action method/
brrt hi #parrot 07:05
MikeFair (frsit one)
That needs to go into the tutorial :)
arnsholt: That's the first time it's become perfectly clear to me the correlation between the stuff in Grammar.pm and the stuff in Actions.pm (at least that part of it anyway) 07:06
:)
arnsholt Happy to help =) 07:07
08:18 Psyche^ joined 08:28 alin joined 08:30 preflex_ joined 09:44 Tene joined 10:14 kurahaupo joined 11:32 schmoo joined 12:37 JimmyZ joined 12:49 whiteknight joined
whiteknight good morning, #parrot 13:04
tadzik good morning whiteknight
whiteknight hello tadzik, how are you doing today? 13:07
13:09 PacoAir joined 13:11 PacoAir joined
tadzik cosimo: whiteknight: pretty good, how about you? 13:23
Coke is glad about the upcoming nqp docs. The current state of the art has been pretty byzantine for years. 13:26
I'm back at work, sadly didn't finish the partcl-nqp rewrite on nqp-latest over the kind-of-break. 13:27
dalek kudo/nom: fc88876 | masak++ | src/ (3 files):
X::TypeCheck::MacroUnquote -> X::TypeCheck::Splice

Also added an $.action attribute, because splicing takes place both during quasi-block incarnation and during macro application.
13:38
13:47 bluescreen joined
whiteknight Coke: your partcl sprint has been very fun to watch 13:57
I am looking forward to getting more things moved to nqp
Coke whiteknight: more like a run-in-place. 14:02
whiteknight Coke: Whatever it was, it was very inspirational 14:04
dalek rtcl-nqp/nqp2: 5768007 | coke++ | / (6 files):
Try to do the smallest thing that will work.

Bundle the Partcl Actions/Compiler/Grammar together into a single file, add the MAIN() line we expect. This then dies trying to find the "invoke" sub.
kudo/nom: 7d10d1a | masak++ | src/Perl6/Actions.pm:
[Perl6::Actions] throw X::TypeCheck::Splice everywhere

This make the remaining two code paths for macros catch up with the fact that we now throw X::TypeCheck::Splice when a macro to be spliced into mainline code doesn't return an AST. See also fc88876.
14:21
rtcl-nqp/nqp: a9fd286 | coke++ | src/init.pm:
remove references to P6object
14:22
rtcl-nqp/nqp: aaf9633 | coke++ | .gitignore:
Simplify ignore rules
rtcl-nqp/nqp2: 00334ea | coke++ | src/min.pm:
whoops, add "invoke" back in
14:55 benabik joined
benabik ~~ 14:55
14:58 contingencyplan joined
tadzik active benabik 15:00
15:04 smash joined
smash hello everyone 15:05
whiteknight smash! 15:06
dalek p: 2f7b14d | masak++ | src/QAST/B (2 files):
add .evaluate_unquotes to BVal and Block
15:13
15:18 davidfetter joined 15:49 dmalcolm joined 15:56 rurban_mobile joined
rurban_mobile hi #parrot 15:56
found a 3rd threads race in interp->scheduler. reading with Parrot_Scheduler_shift_pmc while writing Parrot_cx_schedule_immediate. 15:58
looks harmless 16:03
whiteknight okay, let's keep a record of all these things and either mark them with comments or fix them outright 16:20
even if they are harmless now, they might not be if we make changes in the future
16:32 rurban_mobile joined
rurban_mobile I fixed now 2 of the 3 races I found. Only Task_nci_send left. 16:32
whiteknight wow you're fast 16:33
rurban++
rurban_mobile when the interp is not used anymore, can I replace it with SHIM_INTERP?
whiteknight yes
rurban_mobile as first arg in some thread API calls
whiteknight yes
rurban_mobile Ok, But I'll send my patch to the list first. 16:34
whiteknight okay
rurban_mobile Too many SHIM_INTERP changes for me
Coke alester swoops in every few months and cleans up a lot of those. 16:35
rurban_mobile nine: Why do we need Parrot_thread_get_threads_array at all?
nine: Nobody but threads should have access to the static threads_array[] 16:36
whiteknight rurban: it's just an accessor. I don't think it's essential 16:37
but it could probably be changed to static
rurban_mobile I'll leave it in, but don't like it. 16:38
whiteknight make a TODO note. We can figure it out later 16:39
but yes, it probably should be a static functi0on 16:40
rurban_mobile Whoops, more races with tsan ./parrot t/src/threads.t 16:41
dalek kudo/nom: cd02586 | moritz++ | src/ (2 files):
change X::Comp to mean "potentially compile-time"

There are some cases (like trait application and quasi unsplicing) that usually happen at compile time, but not always. When they were thrown at run time, they warned, because file name and line number were Any. This is now fixed.
rurban_mobile read in gc_gms_allocate_pmc_header vs write in gc_gms_allocate_string_storage
whiteknight teh failz 16:42
rurban_mobile alarm_runloop vs alarm_check is also racy 16:43
whiteknight none of these things surprise me 16:44
actually, I thought in that branch gc was per-interp, so there shouldn't be a race there
I have to re-read some code
dalek rrot/threads: 2206f23 | rurban++ | / (5 files):
Fix two threads races, SHIM unused interp

threads_array when a thread is add is now protected via a global mutex.
tdata->mailbox also needs a lock.
Several interp arguments are gone.
16:46
rurban_mobile Now Parrot_thread_create_local_task needs to be locked. 16:48
alarm_serial seems to need a cond_wait. But this is over my head. 16:50
whiteknight Don't worry. We'll all work on it 17:01
17:29 rurban_mobile joined 17:31 benabik joined 18:14 kurahaupo joined
dalek kudo/macros-d2: 1ac5431 | masak++ | src/ (2 files):
halfway commit, does not work

Still seems to be largly an attempt in the right direction, though.
18:17
18:37 whiteknight joined 18:38 whiteknight_ joined 19:15 lucian joined 19:19 benabik joined 19:34 benabik joined 20:18 ruoso joined 20:19 Timbus joined
dalek kudo/nom: 2311372 | moritz++ | src/core/Stringy.pm:
fix infinite recursion in 42 x Int
20:40
21:01 benabik joined 21:09 kurahaupo joined 21:14 lucian joined
dalek Heuristic branch merge: pushed 19 commits to nqp/toqast by jnthn 21:41
kudo/nqpqast: d703632 | moritz++ | src/Perl6/Grammar.pm:
warn on obsolete use of \\ and | with sigilled parameter
21:45
kudo/nqpqast: fc88876 | masak++ | src/ (3 files):
X::TypeCheck::MacroUnquote -> X::TypeCheck::Splice

Also added an $.action attribute, because splicing takes place both during quasi-block incarnation and during macro application.
kudo/nqpqast: 7d10d1a | masak++ | src/Perl6/Actions.pm:
[Perl6::Actions] throw X::TypeCheck::Splice everywhere

This make the remaining two code paths for macros catch up with the fact that we now throw X::TypeCheck::Splice when a macro to be spliced into mainline code doesn't return an AST. See also fc88876.
kudo/nqpqast: cd02586 | moritz++ | src/ (2 files):
change X::Comp to mean "potentially compile-time"

There are some cases (like trait application and quasi unsplicing) that usually happen at compile time, but not always. When they were thrown at run time, they warned, because file name and line number were Any. This is now fixed.
kudo/nqpqast: 6ae1f62 | jnthn++ | src/ (5 files):
Merge branch 'nom' into nqpqast
kudo/nqpqast: b4a2b7a | jonathan++ | src/Perl6/Grammar.pm:
Patch from tadzik++ to add missing $<spaces>.
21:48
kudo/nqpqast: f92c7fb | jonathan++ | src/Perl6/Metamodel/Dispatchers.pm:
Dispatcher fix (also can avoid creating an iterator).
22:23 rurban_mobile joined 22:25 benabik joined 23:09 davidfetter joined