|
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. |
|||
| NotFound | At least compilers don't get upset or bored every time they deal with it. | 00:00 | |
| Compiler writers do, but hopely only one time for each case. | 00:01 | ||
| whiteknight | msg Justin I wrote some notes about IO-related security a few months ago. You might be interested: github.com/Whiteknight/whiteknight...ecurity.md | 00:14 | |
| aloha | OK. I'll deliver the message. | ||
| whiteknight | nine: ping | 00:18 | |
| msg nine which branch should I use for testing now? threads_playground and chameneos_performance branches look to be the furthest ahead | 00:25 | ||
| aloha | OK. I'll deliver the message. | ||
|
01:23
aloha joined,
jlaire joined
01:53
bacek_at_work joined
02:00
wendar joined
02:02
dngor_ joined
02:11
benabik joined
|
|||
| benabik | ~~ | 02:14 | |
| whiteknight++ # don't worry, I'll let IMCC know | 02:15 | ||
|
04:07
bacek_at_work joined
07:11
brrt joined
07:14
lucian joined
07:27
fperrad joined
07:43
c9s joined,
c9s left
08:18
lucian joined
09:16
eternaleye joined
|
|||
| dalek | kudo/nom: 256e1db | moritz++ | src/core/terms.pm: support RAKUDOLIB env variable in addition to PERL6LIB fglock++ asked how sharing of PERL6LIB works between compilers in the presence of compiler-specific modules. I believe this should be part of the answer |
09:17 | |
|
09:20
he joined
10:09
brambles joined
|
|||
| dalek | p/dyncall-wb: 480d22d | (Arne SkjƦrholt)++ | src/6model/reprs/CArray.c: [CArray] Refactor bind_pos_boxed/at_pos_boxed. Since we've added child_objs, we can cache the generated String objects as well, and eliminate the need for at/bind_pos_complex. |
10:22 | |
| p/dyncall-wb: 3776cef | (Arne SkjƦrholt)++ | src/ (2 files): Check argument objects for changes after a C language call. Some refactoring of CArray to fit in with the write barriering. |
|||
|
11:04
lucian joined
11:42
benabik joined,
prologic joined
|
|||
| benabik | Good morning, #parrot | 11:42 | |
| prologic | heya all | 11:43 | |
| just wondering if there happens to be a repository of useful parrot libraries/modules/etc for re-use by others | |||
| benabik | There was a packaging system for libraries, but it isn't widely used yet... | 11:44 | |
| prologic | ah ok | ||
| just that I'm contemplating using either parrot or llvm for my toy language | |||
| and well parrot seems nicer tbh and well documented | 11:45 | ||
| but the thought of writing an object model in pir seems overwheleming :) | |||
| benabik | I'd suggest you write your runtime support in Winxed instead. Much nicer to deal with. | ||
| prologic | ok I'll check it out | 11:53 | |
| thanks! | |||
| tadzik | as for repository of libraries, look for Plumage | 11:55 | |
| benabik | Plumage, that was the name! | 11:58 | |
| The current best winxed documentation is here: whiteknight.github.com/Rosella/winxed/index.html | 11:59 | ||
|
12:25
whiteknight joined
|
|||
| moritz | is there some option to make parrot more valgrind-friendl? | 12:26 | |
| ie not have it spew out lots of "Conditional jump or move depends on uninitialised value(s)" from the GC? | |||
| whiteknight | maybe | 12:28 | |
| that sounds like a warning that we need to fix | |||
| do you know where it is happening? | 12:29 | ||
| Coke | moritz: check out the tools directory. | ||
| moritz | whiteknight: I can give you valgrinds backtraces, if that's any help | 12:30 | |
| Coke | tools/dev/vgp* | ||
| moritz | seems to happen in all rakudo programs | ||
| Coke | those should probably be renamed to "valgrind_parrot" to be less obfuscatory | 12:31 | |
| whiteknight | moritz: yeah, gist a few of them | ||
| moritz | Coke: thanks | ||
| whiteknight: moritz.faui2k3.org/tmp/valgrind.log | 12:32 | ||
| whiteknight: ignore the invalid read and segfault at the end, the rest is pretty standard | |||
| whiteknight | ah, trace_mem_block | 12:39 | |
| yeah, that function is a huge pain | |||
| I can't think of any real way to prevent valgrind from crapping out about that | |||
| benabik | Trickiest part so far of using Winxed: Trying to avoid it boxing and unboxing things. | 12:42 | |
| It assumes var return for many thing.s | |||
| whiteknight | moritz: The problem is that all the values in that function *are* initialized, so there's nothing really to fix | 12:44 | |
| benabik | Also: Good morning, whiteknight | ||
| whiteknight | valgrind just doesn't seem to like the way we're doing it | ||
| moritz | whiteknight: it's ok, I'll just use the suppression file | 12:47 | |
| whiteknight | yeah, that's the best strategy | ||
|
12:49
nn joined
|
|||
| whiteknight | benabik: yeah, I've noticed that too. I'm not sure what the solution is | 12:49 | |
| I suspect he's working around problems where null returns don't unbox well | 12:50 | ||
| if I do a "return null;", then try to do an int foo = bar(), we'll get an exception | 12:51 | ||
| benabik | Fortunitely, either :() or string() solve most of them. | 12:58 | |
| string target = downcase(string(adverbs['target'])); | 13:00 | ||
| At this point I'm auditing all occurrences of /set \\$[INS]\\d+, \\$P/ | 13:02 | ||
| whiteknight | hmm | 13:03 | |
| this really seems like something the Winxed optimizers should take care of | 13:04 | ||
|
13:05
slavorg joined
13:06
bluescreen joined
|
|||
| benabik | That one's actually important because get_keyed_ss and get_keyed_ps may return different things. | 13:08 | |
| Those sorry, get_keyed_string and get_keyed_pmc | |||
| It does, thankfully, DTRT for `string encoding = adverbs['encoding']`. | 13:09 | ||
| whiteknight | yes | ||
| benabik | But I do have to use `:(string foo) = bar()` if I really want to get a string back from a function. Just `string(bar())` doesn't cut it. | 13:12 | |
| whiteknight | yeah, I think that's definitely wrong | 13:13 | |
| benabik | Well, there's a weird one. | 13:33 | |
| whiteknight | ...? | ||
| benabik | Method '!cursor_start' not found for invocant of class 'Regex;Match' | ||
| whiteknight | weird | 13:34 | |
| is it a method or an attribute | |||
| moritz | benabik: '!cursor_start' is a method on a cursor, not on a match | ||
| benabik | No idea. This is not code I've modified. | ||
| I'm guessing I've mis-set a variable somewhere. | 13:35 | ||
| Huh. Succeeded this time. :-/ | 13:37 | ||
| I'm guessing some PIR file was out of sync... I had just finished doing an editing pass on things. | |||
| whiteknight | that is weird | 13:38 | |
|
13:40
prologic left
13:41
preflex_ joined
13:42
JimmyZ joined
|
|||
| moritz | um, the valgrind suppression file for parrot doesn't seme to filter out those traces with trace_mem_block | 13:46 | |
| benabik | Awesome | ||
|
14:11
prologic joined
|
|||
| prologic | Hey is it possible to statically link the executable that pbc_to_exe produces? | 14:11 | |
| whiteknight | prologic: I don't think it exports any symbols | 14:12 | |
| benabik | We do provide a libparrot.a | ||
| whiteknight | prologic: I think we could support that, but we've never taken the time to do it yet | ||
| prologic | just wondering if it's possible at all | ||
| benabik | Although parrot uses dynamically loaded libraries on a regular basis. | ||
| prologic | ship the parrot vm statically along with your language | 14:13 | |
| just curious | |||
| first time learning with parrot | |||
| so far I like it :) | |||
| whiteknight | prologic: if it's something you want, open a ticket and we can work on it | ||
| we've just never had a use for that before | |||
| prologic | k | 14:14 | |
| PerlJam | prologic: what are you using (will be using) parrot for? | 14:16 | |
|
14:18
smash joined
|
|||
| smash | hello everyone | 14:18 | |
| benabik | Ah! There's a difference between ${ get_hll_global p0, 'TOP' } and ${ get_hll_global top, p0, 'TOP' } | 14:19 | |
| o/ smash | 14:20 | ||
| prologic | PerlJam, a toy language I'm working on (toy for now) based around some of the same/similar concepts to Io/Smalltalk | 14:21 | |
| benabik | I _think_ I have successfully ported PCT.HLLGrammar to winxed. | ||
| *HLLCompiler | |||
| PerlJam | prologic: cool. | ||
| prologic | I've already implemented the lexer/parser and a lot of the runtime, have only things like looping constructs and concurrency to implement | ||
| benabik | I'm going to have to find a way to do the other Compilers stepwise. So far I've just been porting a full file at a time. P*ST.Compiler are far too complicated to do that with. | 14:22 | |
| moritz | benabik: can't you just do it method by method? | 14:23 | |
| I mean, adding methods to existing classes isn't hard in parrot | |||
| benabik | moritz: That probably would have been more sane. :-D | 14:25 | |
| I'll probably just .include the generated PIR into the original PIR. | |||
| moritz | in rakudo, we also monkey-patch HLL::Compiler (which is written in NQP) from within the setting (written in Perl 6) by calls to meta classes | 14:26 | |
| whiteknight | prologic: we have a big rewrite of our concurrency system should be landing in master in the next month or two | ||
| prologic | oh good :) | ||
| because I'll need that | 14:27 | ||
| moritz | testing of the branches would be very welcome, I think | ||
| prologic | I hope it includes coroutines/lightweight-threads | ||
| benabik | Oh, I certainly could do that in new programs. But it's easier (for me) to just muck around with the original files so that I can run all the existing tests and languages without changing them. | ||
| prologic | yeah I'll consider fetching the HEAD at some point | ||
|
14:28
PacoAir joined
|
|||
| prologic | you guys decided on a jit library yet? | 14:28 | |
| reading up on DynASM - seems nice and well suited ihmo | |||
| benabik | We're looking at redoing some of our core to be more JIT friendly. | 14:29 | |
| whiteknight | prologic: we had been looking at LLVM, but a few people have not been enthusiastic about that choice | ||
| we can definitely look at DynASM too | 14:30 | ||
| We're probably about a year away from JIT at this point | |||
| prologic | I've been looking at LLVM/Parrot extensively over the last few weeks | ||
| and I have to say, I picked Parrot over LVVM for a number of reasons - simplicity, good documentation, lightweight | 14:31 | ||
| moritz | well, LLVM and parrot really fill different ecological niches | ||
| parrot is much more high-level | |||
|
14:32
knewt joined
|
|||
| prologic | hmm btw how do you go from pir -> pasm? | 14:34 | |
| parrot -a -o hello.pasm hello.pir doesn't seem to do the trick | |||
| benabik | prologic: You don't. | ||
| prologic | oh | ||
| benabik | PASM and PIR are essentially two different kinds of assembly. | ||
| prologic | pbc -> pasm? | ||
| benabik | PASM is not very well supported these days... | ||
| prologic | oh ic | 14:35 | |
| benabik | There is a pbc_disassemble and `pbc_dump -d` to show the contents of PBC | ||
| prologic | in that case I'll forget pasm :) | ||
| whiteknight | prologic: PASM is basically deprecated. PIR is our assembly | ||
| benabik | (And PACT/src/disasm.winxed, technicall) | ||
| prologic | kk | 14:36 | |
| so parrot, pbc and friends and winxed for javascript-like syntax | |||
| whiteknight | yes | ||
| prologic | k well g'night :) | ||
| whiteknight | goodnight | 14:37 | |
| Coke | if PASM is "mostly" deprecated, is there any reason not to make it fully deprecated? | 14:41 | |
| Do we really need MORE code to maintain slash tell people we don't really maintain? | 14:42 | ||
| benabik | It's used for constants and few lingering tests at this point. | ||
| Coke starts a branch. | |||
| benabik | And fully removing it involves hacking IMCC which is nobody's favorite task. | ||
| tadzik | to say it gently | 14:44 | |
| PerlJam | easy! Just remove IMCC :) | ||
| benabik | PerlJam: That's my plan. | ||
| dalek | rrot/pct_winxed: a228fda | benabik++ | / (6 files): PCT: Convert PCT/HLLCompiler to Winxed |
14:46 | |
| rrot/pct_winxed: 07f1e60 | benabik++ | compilers/pct/src/PCT/Node.winxed: PCT.Node: Avoid unneeded box/unbox Just using int() isn't enough to avoid a PMC register in a function call, so use the :() binding syntax instead. |
14:47 | ||
| rrot/pct_winxed: 52b597f | benabik++ | compilers/pct/src/PCT/Grammar.winxed: PCT.Grammar: Use built-in instead of unknown function Winxed uses indexof() for the index op. Oops. |
|||
| rrot/pct_winxed: fcb1cc0 | benabik++ | compilers/pct/src/PCT/Grammar.winxed: PCT.Grammar: Fix null PMC access in onload Error in translation, missed the get_class. |
|||
| Coke | how to push a local branch? | 14:51 | |
| moritz | git push origin <branchname> | 14:52 | |
| Coke | git push -u <name> <name> ? | ||
|
14:52
bluescreen joined
|
|||
| moritz | you can use -u too, yes | 14:52 | |
| Coke | moritz: will that version do tracking for future pushes? | ||
| PerlJam | ${ ... } is how you execute PIR in winxed? | 14:53 | |
| dalek | rrot/coke/rm_pasm: dad33fd | coke++ | docs/pdds/draft/pdd06_pasm.pod: Add a note about PASM deprecation |
||
| rrot/coke/rm_pasm: 6a9fc68 | coke++ | editor/ (6 files): Remove pasm help/docs from editor |
|||
| benabik | PerlJam: More or less. The arguments get parsed as winxed expressions. | ||
| moritz | Coke: with -u a 'git pull' in that local branch will DWYM | ||
| Coke | moritz: I did your version, now "git pull --rebase" complains it doesn't know what to do. | ||
| benabik | (Which notably means that .get_params () calls won't work in ${}) | 14:54 | |
| Coke | how to retro-fit it? | ||
| benabik can never remember the command line to set these things. He always edits .git/config | |||
| moritz | Coke: edit your .git/config | ||
| Coke | arglebargle. Danke. | ||
| benabik | git-branch --set-upstream ? | ||
| moritz | Coke: there's a section [branch "master"]. Copy-and-paste it, and replace "master" with your branch name | 14:55 | |
| Coke | moritz: ew! | ||
| benabik | `git-branch --set-upstream <branch>` ? | ||
| Oops, s/-/ / | |||
| Coke | but danke. | ||
| moritz | Coke: sorry about that. I started git before the -u option was added :-) | 14:56 | |
| PerlJam | benabik: have you considered abstracting the PIRish parts out of PCT::HLLCompiler so that it's all winxed? | ||
| benabik | PerlJam: I am deliberately attempting direct conversions at first. Making it more "natural" Winxed can come later. | 14:57 | |
| PerlJam | ok | ||
| benabik | I did add some inlines for bits that were more natural as functions. | ||
| (mostly where I just wanted the result in a temporary) | 14:58 | ||
| PerlJam | (I have to say from a non-winxed programmer and a used-to-write-PIR programmer perspective that the winxed code iw *much* more readable :) | ||
| s/iw/is/ | 14:59 | ||
| benabik | cotto: ping | 15:02 | |
| msg cotto Random thought for GSoC project: What do we want the new assembly to look like? PASM/PIR? nasm? gas? other? | 15:05 | ||
| aloha | OK. I'll deliver the message. | ||
| NotFound | ~~ | ||
| benabik: I've been looking at your problem. I think I can add an special case for function calls to solve it without breaking anything. | 15:07 | ||
| benabik | NotFound++ | ||
| NotFound: The binding syntax works, but is somewhat kludgy. | |||
| NotFound | Just like it does now for: int(a[b]) | 15:08 | |
|
15:14
bluescreen joined
|
|||
| dalek | CT: eb98173 | benabik++ | TODO.mkd: TODO: Update for GSoC Now that I'm actually accepted, make note of what in the TODO I plan on doing. |
15:15 | |
| JimmyZ | benabik: Is there a public url for your 6model proposal ? | 15:17 | |
| dalek | nxed: b140bf9 | NotFound++ | winxedst2.winxed: special case for call expressions in typecast builtins arguments |
||
| whiteknight | JimmyZ: if there isn't, there should be | 15:19 | |
| We'll make it public, or use it to create a public TODO list | |||
| benabik | I didn't originally make it public. | ||
| whiteknight | JimmyZ: Do you want to get involved with 6model? We could use lots of helpers | ||
| benabik | If I can still edit it, I'll rip some personal details out of the timeline and make it public. | 15:21 | |
| Can't edit it. Should I just post an edited version as a gist? | 15:22 | ||
| JimmyZ | whiteknight: I'm not sure about my ability. But from your post, you said there were some good ideas in benabik's proposal, I think it's interesting | ||
| +1 to a gist | |||
| whiteknight | benabike: yes a gist would be awesome | 15:23 | |
| benabik | I'm just twitchy about posting personal life details online. :-D It probably doesn't even matter in this case, but blah. | 15:24 | |
| whiteknight | benabik: filter out your personal info | ||
| NotFound | whiteknight: winxed b140bf9 is potentially disruptive change, please notify me if you find any problem. | 15:25 | |
| whiteknight | NotFound: It shouldn't be. I'll give Rosella a test and make sure everything is fine | 15:26 | |
| benabik | JimmyZ, whiteknight: gist.github.com/2500370 | 15:28 | |
|
15:31
hernan joined
15:32
hernan joined
15:33
hernan joined
15:34
hernan joined
|
|||
| JimmyZ | benabik: thanks :) | 15:34 | |
|
15:35
hernan joined
15:36
hernan joined
15:37
hernan joined
15:38
hernan joined
15:55
contingencyplan joined
16:01
brrt left
|
|||
| Coke | ... ok,that's weird. I rip out -a and --pasm from frontend/parrot, run make test... no failures. | 16:06 | |
| benabik | Yeah. | 16:07 | |
| Our tests are awesome. | |||
| I think frontent/parrot is mini-parrot. | |||
| whiteknight | yeah, that's just miniparrot | 16:08 | |
| frontend/parrot2 is regular "parrot" | |||
| We can probably rename those at this point, when I originally made the change I was aiming for maximum backwards compatibility and a painless transition | 16:09 | ||
| Coke | ok. | ||
| ARGLEBARGLE. any file that says "# THIS IS A GENERATED FILE! DO NOT EDIT! | 16:15 | ||
| " but does not refer to the generating file should be shot. | 16:16 | ||
| tadzik | Oh yes | ||
| benabik | GSoC Students: Don't forget to check your TODOs. | 16:17 | |
| Coke | whiteknight: also, why is there frontend/ and src/ and not src/frontend ? | 16:19 | |
| aloha | (parrot/parrot) Issues opened : 758 (frontend/parrot2/prt0.pir says "THIS IS A GENERATED FILE"...) by coke : github.com/parrot/parrot/issues/758 | 16:21 | |
| Coke | further confustication: I didn't realize we'd adopted winxed as a /core/ language. like, it's part of the bootstrap for the build process now. | 16:23 | |
| if we're going to do that, it'd be nice if there was some core docs, also, though a pointer to exterior docs would be a good start. | 16:25 | ||
| whiteknight | That's a good point. We should update that file or add a readme or something | 16:27 | |
| Coke | whiteknight: as we're embedding PBC into our parrot library, we probably want to make sure that PBC is minified/optimized . | ||
| whiteknight | how so? | 16:28 | |
| Coke | every parrot invocation has to pay the penalty for the bootstrapping there. we want to make it as smaller as possible, yah? | 16:29 | |
| (not sure if there is a /way/ to generate optimized PBC from the command line versus the config time, but if so, we should use it.) | |||
| whiteknight | I don't have my measurements handy, but parrot/frontend2 is already about 30% faster than the old version | 16:30 | |
| so yes, we can probably optimize further, but it hasn't been an issue yet | |||
| dalek | rrot/coke/rm_pasm: e00fb8a | coke++ | MANIFEST: fix MANIFEST |
16:31 | |
| rrot/coke/rm_pasm: 6046747 | coke++ | frontend/parrot/main.c: remove -a/--pasm from miniparrot |
|||
| rrot/coke/rm_pasm: 2954559 | coke++ | frontend/parrot2/ (3 files): Remove -a --pasm from main parrot executable (NOW tests break: \\o/) |
|||
| whiteknight | The bootstrapping really doesn't add as much overhead as you might thing. The generated PIR is pretty decent | ||
| Coke | also: if we /have/ a way to do that, by putting it in core usage, we ensure it's heavily tested. | 16:32 | |
| *more heavily, anyway. | |||
| whiteknight | have a way to do what, strip/optimize the pbc? | ||
| Coke | yes, that. | 16:33 | |
| not necessarily strip, I suppose, depending on debugging needs. (rakudo is doing something similar with their CORE setting, which is written in perl6) | 16:34 | ||
| the more we write in higher level langauges, the more important this would be. | |||
| nine | Good evening, #parrot | 16:35 | |
| whiteknight | hello nine | ||
| Coke: Like I said, it hasn't really been a pain point yet. If it is a problem, we can definitely devote a few tuits towards optimization | |||
| nine | whiteknight: threads and chameneos_performance are equal right now | ||
| Coke | just noting it as a todo. | 16:36 | |
| whiteknight | Coke: Create a ticket or a page on the wiki or something with notes, so we don't lose them | ||
| nine: Okay, I wanted to do a little testing/playing last night, but I wasn't sure where to start and then my kid was crying | 16:37 | ||
|
16:37
jashwanth joined,
Timbus joined
16:40
Justin joined
|
|||
| Coke | whiteknight: done | 16:40 | |
| Justin | good afternoon | ||
| Coke | (wiki) | ||
| whiteknight | Coke++ | ||
| Does winxed get invoked during the actual build? I think you have to explicitly make that file | 16:41 | ||
| I'd be much more include towards improving the winxed code or improving the winxed optimizers/code-generators than hand-editing any PIR | 16:43 | ||
| much more inclined * | |||
| Coke | whiteknight: it's invoked during the bootstrap. | 16:45 | |
| whiteknight | hmm, I thought we checked in that generated .pir file | 16:46 | |
| I'd have to take a look at it all again, my memory is clearly very fuzzy | |||
| Coke | whiteknight: yes. | ||
| hence "bootstrap" | 16:47 | ||
| dalek | p/dyncall-wb: e99865a | (Arne SkjƦrholt)++ | src/ops/nqp_dyncall.ops: No need to write barrier non-concrete objects. |
||
| Coke | you don't need winxed to build parrot. You need winxed to change how parrot is built. | ||
| Coke heads out for some lunch | |||
| benabik finishes off his GSoC TODO list. | 16:48 | ||
| Does dalek still announce posts on parrot.org ? | |||
| whiteknight | I don't know | 16:52 | |
| I don't think I saw him do it yesterday | |||
| nine | whiteknight: I'm much, much closer now to my random failures. Seems like there's a problem with setting a PMC which is allocated on a child thread as data for a task which is scheduled on the main thread. | 17:05 | |
| whiteknight | okay, that's good | 17:06 | |
| nine | Oh and while at it I finally found my memory leak :) | 17:17 | |
| whiteknight | memory leak? | ||
| nine | moretasks.pir grew to 3 GB of memory within a minute. The reason is simple: the scheduler maintains a list of active tasks which are scheduled on other threads so it does not exit with tasks still running. I pruned the list on the main thread but did not do so on the child threads. | 17:19 | |
| Another good reason for reducing differences between main and child threads. | 17:21 | ||
| whiteknight | yes, a very good reason indeed | 17:23 | |
| I frequently feel like we should have a total_size vtable on PMCs to return an [approximate] total size of memory allocated for that PMC and children | 17:24 | ||
| that would aide in debugging memory errors a huge amount | |||
| nine | oh yeah | ||
| whiteknight | plus it would aide in all sorts of caching tasks | 17:25 | |
| nine | Btw. the write barrier on shared PMCs thing which took me weeks to uncover was actually not even neccessary. It's just that the shift VTABLE call is used to iterate over namespaces. But shift on namespaces does not even write, so the write barrier is not needed at all. | 17:29 | |
| Which is good: because writes to shared PMCs should simply not exist. I accepted those being shared exactly because they are (packfile) constants. | 17:30 | ||
| whiteknight | ok | ||
| and vtable shift on namespaces does not write? Thats....terrible | 17:31 | ||
| nine | It's misused as an iterator. Comment says so. | ||
| whiteknight | hatehatehatehatehate | ||
| benabik | OTOH, asking NSes to shift is probably not what you meant. | ||
| There should probably be a NameSpaceIterator | |||
| whiteknight | we should probably delete namespaces | 17:32 | |
| benabik | And replace them with...? | ||
| aloha | (parrot/parrot) Issues opened : 759 (sprintf error should be more awesome) by Benabik : github.com/parrot/parrot/issues/759 | ||
| whiteknight | the void | ||
| benabik is totally in favor of killing things we have reasonable replacements for. | |||
|
17:35
alvis joined
|
|||
| atrodo | I consider "the void" a reasonable replacement in some situations | 17:37 | |
|
17:37
lucian joined
|
|||
| benabik | Oh. I noticed a subtle difference in my Winxed PCT code... The 'unload' functions aren't anonymous anymore. | 17:38 | |
| Hm. Perhaps just [anon] works. D'oh. | 17:39 | ||
| alvis | NotFound++ # for 'pirado.winxed' and his example use of continuations. | 17:40 | |
| benabik | NotFound++ # Including the obvious solutions in Winxed, even when I don't think of them | 17:41 | |
| tadzik | where is that? | ||
| alvis | tadzik: are you asking about 'pirado.winxed'? | 17:42 | |
| tadzik | yes | 17:43 | |
| benabik | github.com/NotFound/winxed/blob/ma...ado.winxed | ||
| alvis | yep | ||
| cotto | ~~ | 17:49 | |
| benabik: interesting question wrt how pact should look | 17:50 | ||
| I guess that a starting point would be to figure out what all it needs to support. There are all kinds of reasons why PIR is wacky, but the pact assembly should support most of the features even if the expression is differnt. | 17:51 | ||
| benabik | Well, PACT assembly will deliberately be much simpler (at least to start) | 17:52 | |
| moritz | one thing we would like to do better is string constants without the need to escape them :-) | 17:53 | |
| benabik | But it would also have different things like explicit constant segments. | ||
| cotto | if it'll be mostly generated, we can simplify a lot | 17:54 | |
| moritz | is there any reason to have literals outside of a constant segment? | ||
| I mean, our strings are notionally imutable anyway | |||
| benabik | There will probably have to be some escaping, especially if the string constants aren't in the same encoding as the main file. | ||
| moritz: The only reason for literals outside a distinct constant segment is convenience. | 17:55 | ||
| cotto | moritz: for a human-written language convenience is a good reason. For generated code, probably not. | ||
| yeah, that | |||
| moritz | that's what I meant | ||
| NotFound | ~~ | 17:57 | |
| benabik | I'm imagining there will be some nods to convenience, but all optional and default to off. | ||
| cotto | just the kind of thing that makes testing easier? | ||
| NotFound | Note that most programs in winxed examples/ are old, they are not a very good example on how to use the more recent features. | 17:58 | |
| benabik | Basically yes. | ||
| cotto | NotFound: do you have the tuits to update them? | 17:59 | |
| that and the test suite are where I go when I want to figure out how to do something | |||
| alvis | NotFound: is there another source of winxed example code? (Other than whiteknight's docs of course.) | ||
| NotFound | Yes, the test suite need improvement, | ||
| alvis: I think Rosella sources are good examples. | 18:00 | ||
| alvis | NotFound: Yes, sorry. I forgot to add that in as well. | ||
| dalek | rrot/pct_winxed: e782900 | benabik++ | / (6 files): PCT: Convert PAST.Compiler.onload to Winxed Rather than converting the entire compiler in one shot, make the main PIR file include a PIR file generated from winxed. That way we can convert one function at a time. This one just changes onload. |
18:02 | |
| rrot/pct_winxed: f4c4bcc | benabik++ | compilers/pct/src/P (5 files): PCT: Make onload functions anonymous again This got left off of the conversion simply because I didn't try the anon modifier. It works, it's simple, and it's useful. |
|||
| Coke notes that the only time he touches parrot internals is to rip stuff out. | |||
| benabik | Parrot has a lot of cruft. | ||
|
18:02
Timbus joined
|
|||
| benabik | You can chart Rakudo's development through the strata of abandoned code left behind in Parrot. | 18:03 | |
| cotto | Coke: we have yet to reach the point where that's a bad thing. | 18:04 | |
| NotFound | I someone write a tool that allowed to delete dead code with a user interfaces like a game of killing zombies, all will disappear in less than a week. | 18:05 | |
| s/I/If | |||
| cotto | interesting implementation of -Ofire | ||
| alvis | Should we consider expanding our 'examples/' to include winxed (and maybe nqp) code examples? | 18:07 | |
| benabik | cotto: Mostly my question is do we want the new assembly to look like the old, or just make a clean break? Obviously things will be different, but should we keep the general syntax like `.sub`, `$P0`, etc? | 18:11 | |
| Coke | if parrot doesn't own it, I wouldn't bother unless it's showcasing something about interacting with parrot guts. | ||
| (to avlis) | |||
| cotto | benabik: if we expect to port a lot of PIR then maintaining similarity will reduce pain. | ||
| Coke | *alvis | ||
| cotto | Otherwise, I'm not picky | ||
| Coke | cotto: we | ||
| cotto: on the other hand, if we have to port at all, let's not be constrained unduly by past mistkes. | 18:12 | ||
| *mistakes | |||
| cotto | Coke: yes. That's much of the point of pact. | ||
| benabik has been pondering a mostly-bug-compatable port of IMCC onto PACT. | |||
| dalek | rrot/coke/rm_pasm: a827975 | coke++ | config/gen/makefiles/root.in: Allow "make test" to get past this PASM dep. |
18:14 | |
| benabik | I keep putting ; at the end of my PIR lines because I'm switching back and forth. | 18:15 | |
| Coke | there we go, now that branch can run "make test" and explode all sorts of things. | 18:16 | |
| alvis | Coke: Hmm, ok then. Well, what about some doc pointers somewhere? It can be a real challenge for someone new to parrot to find out where to go for good examples, let alone which examples are correct or current? | 18:17 | |
| Coke | alvis: winxed: See NotFound and whiteknight | 18:18 | |
| alvis: nqp: see github.com/perl6/nqp | 18:19 | ||
| alvis | Coke: Right, *I* know that, but someone new to parrot doesn't. | ||
| Coke | ... I assume you're asking that so you can write it down somewhere. | ||
| whiteknight | alvis: The most complete docs that exist so far are here: whiteknight.github.com/Rosella/winxed/ | ||
| alvis | Coke: Yep | ||
| whiteknight | They probably need some updating, but they aren't bad | ||
| NotFound | And in winxed.org/ there is a FAQ than no one reads ;) | 18:20 | |
| benabik | parrot.github.com should probably include a link to winxed.org | 18:21 | |
| And maybe github.com/perl6/nqp-rx | |||
| Coke | whoops. wrong nqp I pointed you at, even. | 18:22 | |
| alvis | Hmm, I'm not getting my point across very well. Someone new to parrot doesn't know about those. It can take a month or two just to figure out where to turn. Our docs are very crufty; we don't include example code, except PIR; and we have very poor references to all of the above. | 18:23 | |
| whiteknight | yes, yes, yes and yes | ||
| so what do you propose we do to fix it? | |||
| benabik | Include links to main pages for included languages in our own documentation. | 18:24 | |
| alvis | benabik: yes. (something other than the one link on one html page.) | ||
| whiteknight: I'd also like to include some winxed example code in 'examples/'. | 18:25 | ||
| whiteknight | oka,y good idea | ||
| alvis | whiteknight: And, while I'm at it, I'd like to include a link to benabik's cish and coolname's babysteps. | ||
| benabik | babysteps? | 18:26 | |
| whiteknight | okay then | ||
| alvis | benabik: It's just a rather simple, but useful tutorial on PIR. | ||
| whiteknight: great! thanks. | |||
| Coke | I don't think we should include winxed example code | ||
| I think we should point to winxed. | 18:27 | ||
| cotto | I'm leaning toward that too. | ||
| Coke | it's developed outside out of parrot - that's where the docs live. | ||
| cotto | exactly | ||
| Suggestions on how to make the examples easier to find are great. | 18:28 | ||
| alvis | ok, no winxed example code in the repo. | ||
| Coke | that said, we can import any parts of winxed into ext/ we like. | ||
| cotto | alvis: put on your newbie shoes. How would you try to find winxed documentation or examples? | ||
| alvis | I'd google parrot and hope for the best and then start clicking on links. I say that because that's what I did. | 18:29 | |
| cotto: you get taken to a lot of bad links, bad docs (or outdated docs) and misleading information. | 18:30 | ||
| Coke | alvis: www.google.com/search?sourceid=chr...umentation | ||
| NotFound | Well, examples on how to use parrot features can be written in winxed for clarity and brevity. | ||
| Coke | first link is winxed.org/ | ||
| cotto | NotFound: could you link to examples from winxed.org more prominently? | 18:31 | |
| alvis | cotto: I had to ask here, in #parrot, just to know which language to work with: PIR, nqp-rx, nqp, winxed. I didn't even know (and think a'lot of folks don't) the difference between nqp, nqp-rx, parrot-nqp. | ||
| cotto | putting them on the site with nice syntax highlighting would be ideal, but that probably violates laziness | ||
| alvis: quite | 18:32 | ||
| Coke | alvis: Yup. no one is arguing with you. | ||
| NotFound | I'm not a big fan of syntax highlighting. | ||
| Coke | especially if there's no clearly defined syntax. | 18:33 | |
| alvis | Coke: Yes, if you *know* about winxed. If your just trying to develop an HLL and want to know the language to use, it's ... something of an ordeal. It's, imho, an unnecessary barrier. | ||
| NotFound | alvis: in order to know the differences between nqp flavours you should study the Holy Trinity in a school of theology during 20 years. | 18:34 | |
| alvis | NotFound: LOL! You're soo right! | ||
| Coke | alvis: yes. no one is arguing with you. | ||
| winxed is just one more layer on the 10 year cake here. | |||
| alvis | Coke: :) | 18:35 | |
| Coke | the problem as I see is it parrot as a group wants to say "you can do whatever you want", instead of saying here is one really good way to do it" | ||
| * "here is | 18:36 | ||
| alvis | Coke: And I don't disagree with that sentiment. In fact, I embrace it; I'm a fan and supporter, but ... there are facets of parrot that can be ... well, ... frustrating. | 18:39 | |
| NotFound | We can ask Status Quo permission to make "Whatever you want" our hymn. | ||
| Coke | alvis: welcome to the club. | ||
| alvis | gotta go. baby's up and fussing and mom's away. | ||
| Coke | NotFound: I don't know what you mean. | ||
| alvis | afk | ||
| Coke | alvis: take care. | ||
| NotFound | Coke: www.youtube.com/watch?v=5QNJXAHayTc | 18:40 | |
| benabik | WTH? I have `${ .lex '@*BLOCKPAST', blockpast }` in winxed and `blockpast = find_dynamic_lex '@*BLOCKPAST'` in PIR. and it's failling. :-( | ||
| Coke | NotFound: ah, nifty. | 18:41 | |
| PerlJam | Coke: I don't think Parrot has been able to say "here's one really good way to do it". Mostly it's more like "well ... here's what we've got so far" | 18:42 | |
| Coke | PerlJam: more like "here's the 3 ways we've got so far." | ||
| PerlJam | sure. | ||
| Coke | let's at least cull the herd. | 18:43 | |
| (which is what I'm doing with PASM at the moment.) | |||
| PerlJam | once PCT is fully winxed, I think it'll be a no-brainer to come up with the one really good way to do it. :-) | 18:44 | |
| benabik | Oh. | ||
| Dynamic lexicals + tailcall = bad idea. | 18:45 | ||
| whiteknight | Culling the herd is not a bad idea. We can do that by killing nqp-rx and migrating whole-hog to NQP proper | 18:46 | |
| PerlJam | btw, has anyone considered when Parrot's "birthday" is? | ||
| Coke wonders if anyone will volunteer to bring lua away from TGE/PGE | |||
| whiteknight | and then jettisoning PIR, and switching most systems-related tasks to Winxed | ||
| that leaves us with two low-level systems-related languages: NQP and winxed, each with slightly different purposes | 18:47 | ||
| Coke | whiteknight: why do we need both nqp* and winxed? | ||
| rakudo doesn't need nqp bundled into parrot. | |||
| (even the newer one.) | |||
| benabik | Parrot needs nqp for ops2c. | ||
| nqp-rx, rather | |||
| whiteknight | Rakudo doesn't need it, no. but we probably want it | ||
| Coke | I'm sure someone can rewrite that into winxed. | 18:48 | |
| whiteknight | NQP is a great thing, and we want to make sure other compiler writers can use it seamlessly | ||
| Coke: so you're suggesting we don't move to the new NQP? | |||
| benabik | Coke: Sure, if we can separate out the grammar engine from nqp-rx. | ||
| Coke | whiteknight: so embrace the downstream project rather than bundle? | ||
| whiteknight | Coke: I guess I don't understand what you're asking for | ||
| Coke | whiteknight: every time we have to support more than one thing, we're splitting resources that are already so tight you have to manage two students for GSOC this year. | 18:49 | |
| "let's do less stuff so we can do the stuff we do better" | |||
| NotFound | I'd like to just decrease the number of live nqp variants. | ||
| whiteknight | That's a fine goal, but there really isn't any duplication in terms of GSOC projects this year. Plus, the reason I'm mentoring two projects isn't because we have too few mentors, it's that mentor interests don't align well with student proposals | 18:50 | |
| Coke | whiteknight: ... you have an odd definition of "too few", then. ;) | ||
| whiteknight | I'm willing to do it because activity levels have been relatively low, and we can't afford to give up any offers for help | ||
| Coke | NotFound: I would also like to do that, but if I can convince folks to just not use nqp inside parrot (i tried convincing them not to use winxed, but that didn't work. ;), then we don't have to even do that. | 18:51 | |
| whiteknight: you keep agreeing with me. | |||
| we don't have enough developers to do things multiple ways. | |||
| whiteknight | Coke: so you're lobbying to have only a single mid-level language bundled in core? | 18:52 | |
| PerlJam | Coke: qualified agreement. he keeps saying "but" too :) | ||
| Coke | whiteknight: Yes. I think that's a reasonable thing. I would have preferred an NQP variant, but at this point don't particularly care which one it is. | 18:53 | |
| whiteknight | NQP-rx needs to go one way or the other. It's old and unsupported | ||
| Coke | (nqp, winxed... Modula-3) | ||
| benabik | NQP-rx is _not_ a system language. | ||
| whiteknight | NQP is fine, but it's developed by the perl6 people for the perl6 project right now, I prefer to not saddle it with a second master | ||
| Coke | benabik: define "system language" | ||
| whiteknight | winxed is the only language that's really developed for no reason besides to expose parrot functionality | 18:54 | |
| benabik | Coke: Close to machine. Efficent enough to use for core libraries. | ||
| NQP has too many additional dependencies to be in core, IMNSHO. That may change over time, but at the moment, it's only diverging. | |||
| PerlJam | Coke++ | 18:55 | |
| Coke | nqp-rx or nqp-latest? | ||
| benabik | -latest | ||
| whiteknight | I would like to see new NQP bundled with Parrot releases because it's so useful and interesting, but that's not our decision to make right now | ||
| benabik | whiteknight: I would only like to see that if we can make it so NQP isn't a separate ecosystem from the rest of parrot. It starts with 6model, but it also contains re-implementations of PCT, FFI, and bigints. | 18:56 | |
| PerlJam | That strikes me as unlikely. | 18:57 | |
| Coke | PerlJam: what does? | 18:58 | |
| PerlJam | that NQP is made such that it isn't separate from parrot. | ||
| benabik | It will be far less separate if we incorporate 6model into core. | 18:59 | |
| PerlJam | benabik: maybe. | ||
| you will have removed some technical barriers, but those aren't the hard ones to overcome. | |||
| benabik | I'm mostly concerned with the technical ones. | 19:00 | |
| cotto | they're necessary but not sufficient | ||
| PerlJam | indeed. | ||
| Coke | right. nqp handles a lot of the impedence mismatch between how parrot thinks things are and how rakudo needs them to be. | ||
| I am worried, as ever, that there was EVER any impedence mismatch there, but I have no idea how to fix that. | 19:01 | ||
| benabik | Once it's possible to interact nicely between Parrot and NQP, my objections fade. But it's full of sharp corners right now. | ||
| Coke | benabik: ah, that's easy: make parrot change. ;) | ||
| benabik | Coke: I think it should | ||
| If we adopt 6model and dyncall (which I think we should do), it's more reasonable to point to NQP as a 'core' language. | 19:02 | ||
| Coke | ok. so a different cleanup project is "eliminate use of parrot-nqp in parrot" as a prelude to removing it. | ||
| benabik | If they keep developing QAST and I keep building PACT, we can eject PCT in favor of QAST. | ||
| (and PACT, obviously) | 19:03 | ||
| whiteknight | the real problem is that there is an impedance mismatch between Rakudo and Parrot, and there shouldn't be | 19:04 | |
| Parrot should be the VM for Rakudo, and every supporting feature Rakudo needs should be in Parrot | 19:05 | ||
| The fact that those features were implemented elsewhere is a tragedy, and we would do very well to try and reverse that trend | |||
| benabik | whiteknight++ | ||
| whiteknight | I suggested ripping out our GMP-based biginteger crap years ago, and people disagreed. Now it turns out that GMP isn't what our biggest user wants or needs, and here we are stuck with it | 19:06 | |
| We've got it, nobody uses it, Rakudo has something better, and they implemented the replacement outside our repo | |||
| The argument can be made that Rakudo's NCI system isn't really "better" than libffi though it certainly works better on windows. In either case, our system is pluggable and the implementation should have been done here | 19:07 | ||
| NotFound | whiteknight: If the nqp guys decided to make it virtual machine agnostic, we can't revert that. | 19:08 | |
| Coke | whiteknight: if anyone is using parrot (which I certainly don't get, based on mailing list usage or chat here), then we could worry about ripping that stuff out. I don't see the downside. | ||
| whiteknight | and now it's going to be a big headache and a lot of manpower to move it to Parrot core, where it really belongs | ||
| Coke | nqp is going to eventually be agnostic, sure. | ||
| 6model was originally written on nqp-clr and ported to nqp-parrot. | |||
| benabik | NQP the language is heading towards agnostic. NQP the implementation is parrot specific. | ||
| whiteknight | The drive to make nqp agnostic is one that started years ago, because Parrot had that impedance mismatch. That should never happened, but it's years in the past at this point | 19:09 | |
| Coke | and there is a (very low priority) task to eliminate usage of pir: opcodes in rakudo, nqp | ||
| whiteknight | All we can do is try to reverse some of the damage and keep more damage from happening in the future | ||
| If NQP wants to become agnostic, that's really fine. But I do know that Parrot needs more good NCI options, I know it needs better big-int/num support, and I know it needs a better object model | 19:10 | ||
| and I know NQP contains all those things, and we should get them | |||
| And when we have everything that Rakudo needs, and when there is no mismatch, maybe they will choose to get closer to Parrot again. Maybe they won't. That's their prerogative. | 19:11 | ||
| benabik | In the mean time, we get more flexible tools, so it's not any kind of loss. | 19:12 | |
| PerlJam | so ... what's parrot's mission then? I'm a little confused I think. | ||
| whiteknight | exactly. All these features already exist and have been implemented for Parrot. They've just been implemented in the wrong repo | ||
| PerlJam: Parrot wants to be a great VM for dynamic languages. | |||
| especially, Perl6 | |||
| there's no change in terms of our goal or mission | 19:13 | ||
| PerlJam | ok. | ||
| Coke | I think the "especially Perl 6" was not evident for a while. | ||
| PerlJam | Then winxed *and* NQP or just winxed? | ||
| (as parrot "core" languages) | 19:14 | ||
| whiteknight | Coke: It was actively non-evident for a while. People made the mistake of trying to hide that relationship, and we're still paying the price for it | ||
| benabik | From my point of view, the problem isn't that Rakudo has their own tools... It's that they were made because what we have isn't good enough. And the improvements weren't made in Parrot. | ||
| Coke | I would say short term, just winxed. | ||
| whiteknight | There was a time when "Rakudo people" and "Parrot people" worked together and were all "we" | ||
| PerlJam | Coke: at least you and I agree then :) | ||
| Coke | benabik: as an HLL developer, it is hard to get parrot to move in the direction you want. | ||
| whiteknight | Coke: In previous years, I think that was a leadership issue. Currently, I think it's a tuit issue | 19:15 | |
| tadzik | If I can put my 3 ā¬cents, I think by the time that Parrot gets all that NQP does into Parrot core, it may be already too late to become the best platform for Rakudo. Maybe the best way for now will be to try to be the best possible platform for NQP, as it is | ||
| whiteknight | obviously we can't stop all our other work just to start shuffling existing code around | 19:16 | |
| except 6model, which has the potential to decrease a lot of pain in a lot of places | |||
| PerlJam | and then what? IF Rakudo is alienated enough to not be "close" to parrot any more, who is going to use Parrot? | 19:17 | |
| (perhaps I'm just a little pessimistic today) | 19:18 | ||
| whiteknight | PerlJam: Ideally, Rakudo shouldn't feel alienated any more. I know old wounds take time to heal | ||
| PerlJam | whiteknight: well ... what would it take to woo Rakudo back I wonder? (I think if parrot got really fast and had a JIT that would be some help) | 19:19 | |
| whiteknight | I think we're about a year away from JIT at this point, if our current M0-based roadmap stays the plan | 19:20 | |
| We can attack from two angles: One by improving the performance and integration of existing features (6model) and adding new features (threads) | |||
| PerlJam | basically I'm assuming that no matter what technical innovations happen in parrot-land, rakudo has no incentive to "get closer" because it's already got tools that work. | ||
| whiteknight | Yes, like I said, the damage is done | 19:21 | |
| there's no sense crying over spilled milk. All we can do is write the "whatever you need" blank check for Rakudo, and hope they cash it | |||
| If they do, good. If not, we'll be a better platform for other compilers for our efforts | 19:22 | ||
| nine | AFAICS the only other VM Rakudo has some support for is the CLR. Just wonder what would happen if Rakudo switched wholesale to that. I somehow can't see so many Perl hackers jump onto that Microsoft technology train. | 19:23 | |
| PerlJam | okay ... so who's the other non-rakudo customer(s) for parrot? | ||
| whiteknight | yeah, that's the big problem, I think. Moving onto any other VM platform has certain....issues that Parrot doesn't have | ||
| PerlJam: None, right now. | |||
| PerlJam: Several compiler projects started back when Parrot was still too mature to support them, and their developers burned out and left. | 19:24 | ||
| benabik | Experimenters. Me, prologic, others. | ||
| We do get a small but steady stream of people going "hey, this Parrot thing looks useful for $language". If we keep improving, more of them will stay. | 19:25 | ||
| whiteknight | After 6model lands, that's the last major technological hurdle between us and languages like JavaScript, Python and Ruby. Those projects will be able to make progress again, if anybody wants to do it | ||
| I keep saying, a killer feature for Parrot will be demonstrating things like Rakudo, JavaScript and Python working together in the same process in the same VM. That will make people stop and take notice | |||
| and that requires 6model | |||
| And then if we show things like a Python or Ruby interpreter with full threading, or a PHP compiler with built-in unicode support, or any other feature that we have that other language implementations don't, that will help even more | 19:26 | ||
| benabik | There was someone at the UofR who wanted to use Parrot as the basis for parallelism in dynamic language research. When I meet him again, I'm going to point him at nine's work. | 19:27 | |
| whiteknight | When the last few bugs get worked out of the threads stuff, I want to merge it to core without delay, and dedicate a shrine in nine's honor for the effort | 19:28 | |
| Coke | still too *immature, you mean? | ||
| PerlJam | I guess what I'm getting at is that it has been ackowledged that not recognizing Rakudo as Parrot's main customer has caused the current situtation and given that Rakudo may or may not have a continued relationship with Parrot, Parrot should figure out who the second best customer is and cater to their needs so that history doesn't repeat itself | 19:29 | |
| (at least that's what's in my head) | |||
| benabik | PerlJam: The win-win part of this is that adopting Rakudo's tools makes us better for all comers. | 19:30 | |
| PerlJam | benabik: indeed. | ||
| I used to think that the killer languages for Parrot would be javascript and PHP. Now, I'm not so sure. | 19:32 | ||
| benabik | IMO, our "2nd customer" is "new language developers". Which makes good documentation the next priority. | 19:33 | |
| PerlJam | benabik: if you're going to target "all languages" like that (in effect), then you also need to add tools that make it drop-dead simple to get started. | 19:34 | |
| NotFound | Also, we need to improve plumage or some like that. There wasn't someone working on it? | 19:35 | |
| whiteknight | PerlJam: JavaScript is definitely high up on my priorities list. I started a JS compiler, but can't do too much until we have some improvements in terms of 6model and PACT | 19:36 | |
| benabik | I think someone saying "I'm interested in implementing a language" is willing to deal with some setup cost, but will definitely need help getting through our current learning curve. | ||
| whiteknight | 6model is the big enabler. From the user perspective, PACT is going to be an invaluable tool for "drop-dead simple" getting started | ||
| benabik | One of the side effect goals of my GSoC project is "an example language using nqp-rx for grammar and Winxed for everything else" | ||
| whiteknight | If I work on JavaScript now, I'm going to need to write a code generator, which will be ugly. But if I have PACT around I can generate the proper AST and get everything else for free. | 19:38 | |
| ideally | |||
| if we have 6model, threads and a good chunk of PACT by the end of this summer, I think we're in good shape | 19:40 | ||
| PerlJam | One of the original "promises" of parrot that interested me was the idea of interoperability between languages. If there were multiple languages that targetted parrot, where would parrot be installed such that interop would be such a big win? Embedded systems? a browser? your favorite editor? | ||
| NotFound | Apache | ||
| whiteknight | if we have Mod_Parrot up and running by the end of the summer too, even better | ||
| Mod_Parrot with full security settings, threading, and example handlers for Rakudo and JavaScript | 19:41 | ||
| PerlJam | then just do whatever trick enabled mod_php to become so ubiquitous but for mod_parrot :) | 19:42 | |
| whiteknight | And examples of JavaScript code calling Rakudo libraries and vice-versa from a web request | ||
| PerlJam | whiteknight: I agree with your end-of-summer forecast. I'm trying to get a better handle on "good shape for what exactly?" :) | 19:44 | |
| whiteknight | good shape in general | 19:46 | |
| If we can have 6model and enough of PACT by then, I will personally deliver a JS compiler by christmas | |||
| (sooner if other people want to help) | |||
| NotFound | BTW I think that the language interoperability problem these days is even worse than when parrot came to life, with several incarnations of popular languages like python. | 19:47 | |
| whiteknight | and if we can revive interest in Python and/or Ruby again at that point, we'll be golden | ||
| PerlJam | (Now I *know* I'm being pessimistic today. The first thing I though after whiteknight's "sooner" comment was "better watch out for Brook's Law") | ||
| whiteknight | PerlJam: we just won't add the new people in late November | 19:48 | |
| NotFound: yes, When python can't even interoperate with itself, you *know* there's a market for something like Parrot | |||
| We just aren't marketable yet | 19:49 | ||
| NotFound | Maybe there is only one language where all people follows only One True Version: winxed ;) | 19:51 | |
| whiteknight | Too bad that one true vision doesn't include a fancy lambda syntax :) | 19:56 | |
| NotFound | Fancyness is in the eye of the beholder. | 19:59 | |
| PerlJam | NotFound: a less-typing-required lambda syntax? :) | 20:01 | |
| NotFound | BTW I've recently seen an accepted proposal for javascript on that, and I find it ugly. | 20:02 | |
| PerlJam | regarding winxed ... | 20:03 | |
| <@Nicholas> it has the downside that the implementation is (as I understand it) very tied to PIR | |||
| true? | |||
| NotFound | Uh? Given that it generates PIR, of course is tied to it. | 20:04 | |
| benabik | Saying that "tied to PIR" is a downside for a Parrot language is wrong on the face of it. PIR is the only real way to generate bytecode at the moment. | 20:05 | |
| NotFound | Well, you can try winxedxx, but it's just an experiment. | ||
| benabik | (Yes you can muck around with the Packfile* classes, but it's more than a little unfriendly.) | 20:06 | |
| NotFound | Unfiendliness is not the problem, lack of stabiliy is. | ||
| PerlJam | NotFound: well, I was asking more if you think that's a "downside" :) | ||
| whiteknight | those PMCs are pretty stable. they haven't changed in months | 20:07 | |
| PerlJam: No, it's not a downside. Winxed is a low-level systems language for Parrot | |||
| it should be tied to Parrot | |||
| PerlJam | a follow-up comment was ... | ||
| <@Nicholas> so that it isn't going to cope well with the Parrot plan to transition to a new assembly language, M0 | |||
| NotFound | PerlJam: that depends. For people wanting to write programs that can run on bare metal, JVM and CLI from the same source, it is. | 20:08 | |
| PerlJam | (from #p5p btw) | ||
| benabik | NotFound: `if(!str) {}` seems to not work. | ||
| M0 is currently planned to be an implementation detail, not a replacement for PIR. | 20:09 | ||
| whiteknight | PerlJam: Winxed is developed by Parrot hackers, and is kept up to date with Parrot. Winxed will transition as Parrot transitions to M0 | ||
| benabik | If anything, PACT is the probable replacement for PIR. :-D | ||
| whiteknight | Yes, PACT and Winxed will be the abstraction layer that will help users avoid the hassles of the M0 transition | 20:10 | |
| NotFound | PerlJam: not a problem. Winxed generates PIR just because is (IMO) the better way right now. If that changes, winxed code generator will change. | ||
| whiteknight | If you use winxed instead of PIR, you will have far fewer headaches when M0 lands | ||
| although ideally, M0 won't cause that big a splash. If we've designed it well and rolled it out carefully | |||
| NotFound | Just like C compilers generates assembly instead of machine code when they find that way appropiate. | 20:11 | |
| benabik: str : a string ? | 20:13 | ||
| benabik | NotFound: Yes. | ||
| NotFound: string str; if (str) {} if(!str) {} | |||
| First if works, second fails to compiler PIR. | 20:14 | ||
| PerlJam | ah, the comments on #p5p stem from some tweets by chromatic | ||
| benabik | (no isfalse_i_s) | ||
|
20:17
PacoAir_ joined
|
|||
| NotFound | benabik: yes, operator ! fails with string operand. Working on it. | 20:23 | |
| benabik | NotFound: For reference, I'm converting a bit of PIR that reads `unless str goto err`. The existing PIR just seems to hand it off to if/unless. | 20:24 | |
| NotFound | benabik: yes, the problem is generic but maybe an special case optimization for if will be convenient. | 20:25 | |
| benabik wonders what the if/unless macros are actually doing... To the disasm.winxed! | 20:26 | ||
| whiteknight | heh, it's a handy tool to have laying around | 20:28 | |
| benabik | Ah. There are just if/unless opcodes. | 20:29 | |
| If we have if/unless with strings, why not istrue/isfalse? | 20:34 | ||
| Although that does raise the question: What is false for a string? | |||
| null, '', and '0', apparently. | 20:35 | ||
| NotFound | benabik: what is not true. | 20:37 | |
| benabik | NotFound: String false is any of {null, '', '0'}, true is everything else. | 20:38 | |
| (Note only the ascii character 0 works.) | |||
| dalek | p/toqast: 53d95cc | masak++ | t/qast/qast.t: [t/qast/qast.t] added a test for a unary op |
20:51 | |
| benabik | You know what's useful? Not declaring a variable the same name as a parameter. | 21:04 | |
| BTW, that's not an error in Winxed. | |||
| NotFound | benabik: is not. The scope of the function is not the same as the one of its main block. | 21:06 | |
| benabik | Interesting. | ||
| Hm. `if(str)` in Winxed isn't the same as `if str` in PIR. | 21:10 | ||
| dalek | kudo/setenv: 7845b8d | tadzik++ | src/core/terms.pm: Implement setting env variables by modifying %*ENV |
21:11 | |
| NotFound | benabik: yes, don't remember right now if it's an accident or a remaining from past problems. | 21:13 | |
| nine | msg whiteknight I now got a minimal program reproducing the bug: gist.github.com/2503294 Can't find anything I could remove anymore. Not even the .local pmc dummy2. It now most often segfaults when allocating the registers for that sub. Maybe that's a hint, maybe it's just coincidence. | 21:15 | |
| aloha | OK. I'll deliver the message. | 21:16 | |
| nine | If anyone else can help me find why current threads branch fails randomly with gist.github.com/2503294 you're very welcome! | ||
|
21:18
PacoAir joined
|
|||
| dalek | kudo/setenv: 616b622 | tadzik++ | src/core/terms.pm: Fix a braino. benabik++ for noticing |
21:22 | |
| benabik goes back and checks usages of strings in ifs. | 21:24 | ||
| dalek | nxed: 29aab83 | NotFound++ | winxedst2.winxed: several fixes and optimizations in conditions and operator ! following a report by benabik++ |
||
| NotFound | benabik: I think this fixes all, and improves generated code too. | 21:25 | |
| benabik | NotFound: Sorry for all the extra work. :-D | 21:26 | |
| NotFound | nine: if you add a return to the sub it fails the same way? | 21:28 | |
|
21:39
brambles joined
|
|||
| NotFound | PerlJam: There is a log of that channel somewhere? | 21:44 | |
| benabik | Google does not reveal a #p5p irc log to me. | 21:45 | |
| NotFound | Someone has an iphone to ask Siri? X-) | 21:49 | |
| I've been amazed by an article about "Ultra Intelligent Electronic Agents " mentioned in slashdot :D | 21:52 | ||
| The article title is: "Is Siri Smarter than Google?" Remembers me the saying: "If the title is a question, the answer is No" | 21:53 | ||
| tadzik | :D | ||
| benabik | Given that Siri's default answer is "I could google that for you"... | 21:54 | |
| NotFound | Well, that's the way some people use the chat. | 21:56 | |
| But in irc the Maybe Not So Ultra Agents can be rude. | 21:57 | ||
| benabik is testing the last bit of conversion for the night. | 22:09 | ||
| dalek | rrot/pct_winxed: b23a097 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files): PCT: PAST.Compiler.to_post in Winxed |
22:17 | |
| benabik | Sorry for spam... | ||
| rrot/pct_winxed: 0dd4cbb | benabik++ | compilers/pct/src/PAST/Compiler. (2 files): PCT: PAST.Compiler.escape in Winxed |
|||
| rrot/pct_winxed: a6000ae | benabik++ | compilers/pct/src/PAST/Compiler. (2 files): PCT: PAST.Compiler.unique in Winxed |
|||
| rrot/pct_winxed: 7fa3e9b | benabik++ | ext/winxed/compiler.pir: Update Winxed snapshot to 29aab83 This makes using strings in if statements much easier, among other improvements. |
|||
| rrot/pct_winxed: 77371b2 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files): PCT: PAST.Compiler.uniquereq in Winxed |
|||
| rrot/pct_winxed: 79d5fe3 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files): PCT: PAST.Compiler.tempreg and tempreg_frame in Winxed |
|||
| benabik | Ah, garnering karma by working in small chunks... | ||
| (Actually doing it so I can bisect easier if something starts exploding later.) | |||
| cotto | don't defend sanity. That's how you should be working. | 22:19 | |
| NotFound | At least one time I commited a one character change. | 22:20 | |
| cotto | The ideal is an infinitely long series of 0-character changesets. | 22:21 | |
| NotFound | Until the turtle beat Achiles | ||
| benabik | Maybe next I'll go back and use the lexical modifier instead of all the manual .lexes. | 22:22 | |
| Anyway, it's time for me to go home. | |||
| dalek | nxed: b36caef | NotFound++ | winxedst (2 files): clean a bit usages of genlabel and createlabel |
22:48 | |
|
22:51
davidfetter joined
|
|||
| dalek | nxed: 13a738f | NotFound++ | winxedst2.winxed: fix error report when using an undefined label in a pirop |
23:01 | |
|
23:05
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 23:06 | |
| Coke | guten abend. | ||
| whiteknight | hello Coke | 23:17 | |
| msg nine if removing dummy text from the PIR input changes things, that suggests a memory corruption problem. Something tied to memory layout. We probably need to run it through valgrind | 23:18 | ||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | Is there anybody around who knows about NQP's regex engine? | 23:23 | |
|
23:48
benabik joined
|
|||
| benabik | ~~ | 23:56 | |
| whiteknight | hello benabik | 23:58 | |
| benabik | 'lo whiteknight, how's things? | ||
| whiteknight | things would be better if I could get NQP passing tests on Parrot's eval_pmc branch | 23:59 | |