|
Parrot 2.6.0 | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | fix 'make html' (talk to Coke), merge gc_* branches, fix/replace/optimize hashing Set by moderator on 3 August 2010. |
|||
| Austin | PTG, That's essentially a language on top of a language. It's possible, but presently awkward to do that in a single program. | 00:00 | |
| plobsing | in that case it should be relatively simple - stick a macro step before the parse step. HLLCompiler has support for configuring compilation steps. | 00:01 | |
| Paul_the_Greek | Each step is performed at what granularity? | 00:03 | |
| Austin | A pass over the current input text, or tree, or whatever. | 00:04 | |
| plobsing | right now, I'm pretty sure it's whole-file. I think there was some talk about changing that. | ||
| Paul_the_Greek | So the lexing step is performed on the entire file before a macro step could look at it? | 00:05 | |
| Austin | Right | ||
| Hence, "presently awkward" | 00:06 | ||
| Paul_the_Greek | In particular, the lexer's behavior cannot be altered by anything in the source, such as a pragma. | ||
| Austin | False. | 00:07 | |
| Paul_the_Greek | Ah, please explain. | ||
| Austin | There is no lexer. There is a parse step which does both. | ||
| Paul_the_Greek | Ah. But then what does it mean to put a macro step before the parser step? | ||
| Austin | There is no reason a pragma could not modify the behavior. | 00:08 | |
| Paul_the_Greek | Yes, the pragmas are fine. But I don't get the macro step. | ||
| Austin | Imagine something like #define f(x) g(h(x)) | 00:09 | |
| Paul_the_Greek | Okay. | 00:10 | |
| Austin | For most parsers, if you encounter f(x) you're going to convert that to a tree, like (call name='f' args=[ (var name='x') ] ) | ||
| But suddenly, that's wrong. | 00:11 | ||
| You want to either (1) perform a textual replacement (c preprocessor) or (2) perform a tree replacement (lisp) | |||
| And of course, x could be arbitrarily complex. | 00:12 | ||
| There's lots of things that make this awkward. If you have some kind of error, what's the line #? | |||
| How do you do scope resolution? | 00:13 | ||
| Things like that. | |||
| purl | things like that are unusual | ||
| Paul_the_Greek | So how does the macro step work before the parse step? | 00:14 | |
| Austin | Right now, the "simplest" answer - in the sense of "I can describe this to you simply" is to parse as much as you possibly can, then stop (different step) and perform the edits indicated by your macros, then start again (new step) | ||
| For a preprocessor, that would be pretty much exactly like the old-style description of a preprocessor - a separate program that rewrites the text before the "real" compiler sees it. | 00:15 | ||
| Paul_the_Greek | Right, but let's say I have something much more complex, which includes, for example, the ability to evaluate arbitrary expressions. | ||
| mikehh | rakudo (fca2d32) builds on parrot r48342 - make test PASS, make stresstest (pugs r31921) FAIL - Ubuntu 10.04 amd64 (g++ with --optimize) | 00:16 | |
| t/spec/S03-smartmatch/any-bool.t - No subtests run | |||
| t/spec/S05-mass/rx.rakudo - Failed tests: 91, 206-210 | |||
| Paul_the_Greek | It makes sense to put that between the lexer and the parser. | ||
| I guess I could do it all as a preprocessing step. | 00:17 | ||
| But it would need its own lexer. | |||
| Austin | Well, then, you've already assumed an extra step - lexer vs. parser. | ||
| Then you've got a third - macro - between them. | |||
| mikehh | oh forgot to report: All tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48342 - Ubuntu 10.04 amd64 (g++ with --optimize) | 00:18 | |
| Austin | So you write a "parser" that does lexing. And then a macro whatever. And then a parser. | ||
| Paul_the_Greek | Right, that's how I've organized it. | ||
| An interface between the lexer and the parser. | |||
| The lexer needs only a little more capability and the parser needs nothing. | 00:19 | ||
| But it certainly does make them two things instead of one. | 00:20 | ||
| mikehh | partcl-nqp(ae8abf9) builds on parrot r48342 - make test PASS - Ubuntu 10.04 amd64 (g++ with --optimize) | 00:26 | |
| t/cmd_expr.t - TODO passed: 287 | |||
| Austin | purl? | 00:28 | |
| purl | yes, Austin? | ||
| Austin | purl, purl? | ||
| purl | rumour has it i am an endearing annoyance. or like the MST of bots | ||
| Austin | purl is also lonely (see xkcd.org/175) | 00:29 | |
| purl | okay, Austin. | ||
| Austin | purl, purl? | ||
| purl | rumour has it i am an endearing annoyance. or like the MST of bots. or lonely (see xkcd.org/175) | ||
| Paul_the_Greek | bite me purl | 00:33 | |
| Oh, there's an opportunity lost. | |||
| plobsing | bite me? | 00:36 | |
| Austin | purl, bite me is <reply> suck it, $who. | ||
| purl | OK, Austin. | ||
| Paul_the_Greek | Take care, folks. | 00:55 | |
|
00:58
Andy joined
00:59
somebody__ joined
01:37
rurban_ joined
02:11
bacek joined
|
|||
| dalek | ee-optimization: 2cc3e32 | tcurtis++ | src/Tree/Optimizer.nqp: Add Tree::Optimizer.pass-class method. |
02:12 | |
| ee-optimization: 34eb267 | tcurtis++ | src/Tree/Optimizer/Pass.nqp: Add Tree::Optimizer::Pass.transformer-class method to simplify subclassing. |
|||
|
02:19
aloha joined
02:22
bacek joined
02:42
janus joined
|
|||
| dalek | ee-optimization: 91e9a41 | tcurtis++ | src/Tree/Optimizer/CombinedPass.nqp: Give Tree::Optimizer::CombinedPass the transformer-class treatment. |
02:43 | |
| Austin | seen Coke? | 02:49 | |
| purl | Coke was last seen on #parrot 3 hours, 6 minutes and 29 seconds ago, saying: that sort of information is much more important on tickets that are not currently being worked on. | ||
| Austin | msg Coke I notice that config_lib.pir has a ["perl"] variable, but also the ["cat"] entry references $(PERL) - uppercase. Should these two things be consistent? | 02:50 | |
| purl | Message for coke stored. | ||
|
02:51
somebody__ joined
03:00
theory joined
03:23
Andy joined
03:42
somebody_ joined
|
|||
| cotto | ~~ | 04:56 | |
| Coke | Austin: ISTR we went through and updated all those to avoid the makefile references. | 05:07 | |
| Austin | Coke: Apparently not. This is on windows w/ strawberry perl gcc utils, in trunk as of y-day | 05:19 | |
|
06:12
jsut_ joined
06:32
robin-gvx joined
06:58
robin-gvx joined
07:02
Casan joined
07:28
fperrad joined
07:40
Coke joined
07:46
aloha joined
07:47
jjore joined
07:51
cotto joined
07:57
bacek joined
09:37
rurban_ joined
11:21
desertm4x joined
|
|||
| dalek | kudo: 7d4a624 | moritz++ | build/PARROT_REVISION: bump PARROT_REVISION to get Digest::MD5 fix, cosimo++ |
11:31 | |
| kudo: 53ee804 | moritz++ | docs/compiler_overview.pod: [docs] update NQP description in compiler_overview.pod |
|||
|
12:20
whiteknight joined
13:20
kid51 joined
13:23
clinton joined
13:27
mak joined
|
|||
| kid51 | mikehh ping | 13:27 | |
| mak | hi | ||
| purl | hi, mak. | ||
| mak | is awk implemented on parrot? | 13:28 | |
| kid51 | mak: I don't think so. Somewhere (wiki?) there is a list of languages which people have attempted at one point or another to implement. | ||
| mak | parrot.org/languages here? | 13:29 | |
| kid51 | That would be useful. | ||
| mak | awk is not there on that list | ||
| kid51 | Then no one has attempted it. | ||
| I believe there is a TT open stating that that page is very much out-of-date | 13:30 | ||
| msg mikehh Could you comment on my last post in trac.parrot.org/parrot/ticket/1726 ? Thanks. | 13:31 | ||
| purl | Message for mikehh stored. | ||
| mak | I started with trying to understand rakudo, figured that can't learn it without nqp-rx... theres not much documentation on that... | ||
| TiMBuS | personally i found learning PIR was more useful to understand rakudo | 13:33 | |
| mak | TimBus, yes ultimately it comes down to that ... :) | 13:34 | |
| especially if the documentation is scanty | |||
| TiMBuS | there was an old tutorial on using NQP in actions.pm which is still sort of relevant | 13:35 | |
| mak | in the rakudo repo? | 13:36 | |
| TiMBuS | nope, it was something many languages used | ||
| the squaak tutorial is what you want | |||
| mak | ok | ||
| TiMBuS | but ignor the grammars and stuff. you just want to know about making an AST | ||
| mak | docs.parrot.org/parrot/latest/html/...orial.html this one? | 13:37 | |
| TiMBuS | that's it | 13:38 | |
| mak | Actually contributing rakudo will require a good touch over nqp and pir | ||
| *contributing to rakudo | 13:39 | ||
| TiMBuS | not always! sometimes if you just skim the RT there's loads of things that just need implementing or fixing in just perl6 code | 13:41 | |
| so if you like to learn by doing, that helps a lot | |||
| src/core is where you'll find perl6 code for a lot of builtins and objects | 13:42 | ||
| mikehh | kid51: pong | ||
| dalek | TT #1715 closed by jkeenan++: pprof2cg.pl not installed | ||
| TT #1715: trac.parrot.org/parrot/ticket/1715 | |||
| mikehh | kid51: kid51: saw your message = was dion' some testring - sorry for the delay | 13:43 | |
| kid51 | mikehh If you can post a thought or 2 in that ticket ... | 13:55 | |
| have to go afk in a minute | |||
| mikehh | kid51: done | ||
|
14:14
ambs joined
14:42
jan joined
14:56
brianwisti joined
15:44
theory joined
15:50
desertm4x joined
16:15
macroron joined
16:24
PacoLinux joined
|
|||
| dalek | rrot: r48343 | jkeenan++ | branches/tt1726_pmc_pod: Creating tt1726_pmc_pod in ļæ½svn.parrot.org/parrot/branches |
16:29 | |
| rrot: r48344 | jkeenan++ | tags/tt1726_pmc_pod-48342: Tagging trunk at r48342 so that the tt1726_pmc_pod can later be synched to it. |
|||
| Coke wonders why we add more tests to enforce boilerplate docs. | 16:34 | ||
| time better spent /writing docs/ | |||
| (yes, yes, time not fungible.) | 16:35 | ||
|
16:45
brianwisti joined
|
|||
| dalek | rrot: r48345 | khairul++ | branches/gsoc_instrument/runtime/parrot/library/Instrument (4 files): Updated Instrument runtime libraries. |
16:45 | |
| rrot: r48346 | khairul++ | branches/gsoc_instrument/src/dynpmc (6 files): Please codetest (mostly) |
|||
| rrot: r48347 | khairul++ | branches/gsoc_instrument (5 files): Updated tests. |
|||
| purl | updated tests are at the same url, 01_request.t and 02_keepalive.t | ||
| rrot: r48348 | khairul++ | branches/gsoc_instrument (4 files): Updated stub generators and regenerated stubs. |
|||
| rrot: r48349 | khairul++ | branches/gsoc_instrument (7 files): deleted instrumentvtable.pmc (merged into instrumentclass.pmc) |
|||
| rrot: r48350 | jkeenan++ | branches/tt1726_pmc_pod (1 files): First draft of a codingstd file testing for the presence of POD in .pmc files. This first draft follows approach taken in c_function_docs.t. Detects 3 files lacking POD not detected by tools/build/headerizer.pl. |
17:03 | ||
|
17:37
rurban_ joined
18:18
desertm4x joined
18:20
desertm4x joined
18:42
lucian joined
19:02
AzureStone joined
20:07
smash joined
|
|||
| smash | hello everyone | 20:07 | |
| Austin | Hello, smash | 20:08 | |
| moritz | o/ | 20:10 | |
|
20:12
smash joined
20:16
lucian joined
20:23
perlite joined
|
|||
| cotto | ~~ | 20:26 | |
| Austin | Under what circumstances can a call to pir::get_hll_namespace with a key of 'ResizableStringArray' return a namespace first, and then return null? | 20:33 | |
| Tene | Austin: if you changed HLLs? | 20:52 | |
| Austin | Better'n any idea I've got, tene. Thanks | 20:55 | |
| But no, get_root_namespace [parrot::ResizableStringArray] returns null, too. | 20:56 | ||
| Tene | Just to confirm, you *do* mean ['parrot';'ResizableStringArray'], yes? | 20:57 | |
|
20:57
whiteknight joined
|
|||
| Austin | Yeah, just lazy | 20:57 | |
| Tene | I figured, just checking. | ||
| Austin | %r = get_root_namespace ['parrot';'ResizableStringArray'] | ||
| So "obviously" I'm storing / destroying something into the RSA slot in the root namespace. | 20:59 | ||
| Tene | That sounds reasonable. | ||
| Doesn't sound obviously wrong, at least. | |||
| Austin | And I am calling P6metaclass.register twice... | ||
| dalek | rtcl-nqp: f0c25ae | Coke++ | (2 files): make [fileevent] actually check its channel arg. |
||
| rtcl-nqp: 7548f1a | Coke++ | (37 files): Merge branch 'master' of github.com:partcl/partcl-nqp |
|||
| Austin | We have a winner | 21:02 | |
| purl | you have your choice of the first, second, or third door. Or.. the box. | ||
| Austin | the box? | ||
| purl | the box is down, really down | ||
| Austin | no, the box is <reply> okay, the box ... but first: chichi! | ||
| purl | okay, Austin. | ||
| Austin | the box? | ||
| purl | the box is probably down, really down | ||
| Austin | rats. | 21:03 | |
| That trick never works. | |||
| purl | nothin' up my sleeve | ||
| Austin | botsnack | ||
| purl | thanks Austin :) | ||
| Austin | Calling P6metaclass.register twice on the same name ('ReziableStringArray') destroys the namespace. | ||
| Seems obvious to me, in retrospect. | 21:04 | ||
| *ResizableStringArray | |||
| nopaste | "Austin" at 192.168.1.3 pasted "This sucks" (40 lines) at nopaste.snit.ch/22627 | 21:12 | |
| Austin | Of course, it turns out I already knew that: TT#1481 | 21:13 | |
| Tene | That's... unfortunate. | 21:14 | |
| That doesn't sound too difficult to fix, either. | 21:15 | ||
| Austin | Presuming you can locate the problem, I guess not. | 21:16 | |
|
21:44
Chandon joined
|
|||
| Coke | hurm. if I want to use P6Regexen in my NQP code, do I have to load anything? | 21:47 | |
| Regex::P6Regex::Compiler.compiler('stuff'); gives me a NPE. | 21:58 | ||
| Austin | P6regex as different from nqp regex? | 21:59 | |
| Coke | Those would be fine. | 22:00 | |
| Austin | Then I don't think you need to load anything. | ||
| Coke | haz you a sample? | 22:01 | |
| Austin | But outside a grammar, I haven't done it. | ||
| Check the plumage source. I think they have a pattern replace sub | |||
| that uses rexen | |||
| gitorious.org/parrot-plumage/parrot...qp#line353 | 22:03 | ||
| Here's a call: gitorious.org/parrot-plumage/parrot...nqp#line55 | |||
| Coke | plumage? | 22:04 | |
| purl | somebody said plumage was the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. The repository is at gitorious.org/parrot-plumage/parrot-plumage and the design docs are at trac.parrot.org/parrot/wiki/ModuleEcosystem | ||
| Austin | So inline regex looks like /foo/ | ||
| And match looks like $text ~~ $regex | |||
| Coke | if you match with ~~, where's the match object? | 22:09 | |
| $/ ? | 22:10 | ||
| purl | $/ is just one of those things that if you have to ask about it you probably shouldn't use it or if i am still doing join('',<STDIN>) | ||
| Austin | my $match := $text ~~ $regex; | ||
| while $match { @matches.push: $match; $match := $match.CURSOR.parse($text, :rule($regex), :c($match.to)); } | 22:11 | ||
| See the "all_matches" sub in my first link, above. | |||
| dafrito | cotto ping | ||
| Austin | (Please note: I don't really grok this stuff.) | ||
| Coke | is the regex there a regex object or just a string containing a regexz? | 22:13 | |
| in my code, using my own regex subclass, I have to do a .compile() first. | 22:14 | ||
| Austin | It's a regex | ||
| Coke | e.g. github.com/partcl/partcl-nqp/blob/m...ng.pm#L372 | 22:15 | |
| Austin: that is my question. how do I get that regex. =-) just a literal /foo/ ? | 22:16 | ||
| Austin | If you do literal /foo/ you get a regex. | ||
| Run parrot-nqp --target=pir on the nopaste, above. | |||
| nopaste | "Austin" at 192.168.1.3 pasted "Regex resultant" (8 lines) at nopaste.snit.ch/22628 | 22:17 | |
| Austin | You'll see something like this ^^ in the output. That sub $P16 is the compiled regex. | ||
| Coke | Austin: ... I'm writing this in NQP, not pir. | 22:18 | |
| Austin | Right. And the pir I just nopasted was the compiled output of the nqp I nopasted above. | ||
| My point is that the nqp statement :: my $regex := /foo/; | |||
| Stores a sub reference in $regex | |||
| Not a string. | |||
| Actually, it's a regex wrapping a sub reference. | 22:19 | ||
|
22:19
pjcj joined
|
|||
| Austin | So if you want to "compile a string to a regex" you'll want a Compiler.compile call. | 22:20 | |
| If you want to code a regex in line, you want /foo/ | |||
| Coke | Austin: ahhhh, thank you. | ||
| I think I missed a nopaste in there somewhere. Thank you. | |||
| nopaste | "Austin" at 192.168.1.3 pasted "Coke: have a look at this" (7 lines) at nopaste.snit.ch/22629 | 22:21 | |
| Austin | My bad, the nopaste failed but I didn't see it. | ||
| Coke | 22:23 | ||
| +1. familytime, but Austin++ | |||
| kthakore | Coke: hi | 22:36 | |
| Coke: you left me a message? | |||
| whiteknight | holyshit, did anybody else see that proposed proof that P != NP? | 22:56 | |
| sorear | I've lost count | 22:58 | |
| proposed proofs of P != NP are like patents for perpetual motion machines, every marginal mathematician-crank needs to write one | |||
| O | 22:59 | ||
| I'll pay attention *after* Clay doex | |||
|
23:42
brianwisti joined
23:59
Psyche^ joined
|
|||