Camelia, the Perl 6 bug

IRC log for #parrot, 2012-04-26

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 NotFound At least compilers don't get upset or bored every time they deal with it.
00:01 NotFound Compiler writers do, but hopely only one time for each case.
00:14 whiteknight msg Justin I wrote some notes about IO-related security a few months ago. You might be interested: https://github.com/Whiteknight/whiteknight.g​ithub.com/blob/master/drafts/io_security.md
00:14 aloha OK. I'll deliver the message.
00:18 whiteknight nine: ping
00:25 whiteknight 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 #parrot
01:23 jlaire joined #parrot
01:53 bacek_at_work joined #parrot
02:00 wendar joined #parrot
02:02 dngor_ joined #parrot
02:11 benabik joined #parrot
02:14 benabik ~~
02:15 benabik whiteknight++ # don't worry, I'll let IMCC know
04:07 bacek_at_work joined #parrot
07:11 brrt joined #parrot
07:14 lucian joined #parrot
07:27 fperrad joined #parrot
07:43 c9s joined #parrot
07:43 c9s left #parrot
08:18 lucian joined #parrot
09:16 eternaleye joined #parrot
09:17 dalek rakudo/nom: 256e1db | moritz++ | src/core/terms.pm:
09:17 dalek rakudo/nom: support RAKUDOLIB env variable in addition to PERL6LIB
09:17 dalek rakudo/nom:
09:17 dalek rakudo/nom: 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 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/256e1db7b0
09:20 he joined #parrot
10:09 brambles joined #parrot
10:22 dalek nqp/dyncall-wb: 480d22d | (Arne Skjærholt)++ | src/6model/reprs/CArray.c:
10:22 dalek nqp/dyncall-wb: [CArray] Refactor bind_pos_boxed/at_pos_boxed.
10:22 dalek nqp/dyncall-wb:
10:22 dalek nqp/dyncall-wb: Since we've added child_objs, we can cache the generated String objects as
10:22 dalek nqp/dyncall-wb: well, and eliminate the need for at/bind_pos_complex.
10:22 dalek nqp/dyncall-wb: review: https://github.com/perl6/nqp/commit/480d22de3c
10:22 dalek nqp/dyncall-wb: 3776cef | (Arne Skjærholt)++ | src/ (2 files):
10:22 dalek nqp/dyncall-wb: Check argument objects for changes after a C language call.
10:22 dalek nqp/dyncall-wb:
10:22 dalek nqp/dyncall-wb: Some refactoring of CArray to fit in with the write barriering.
10:22 dalek nqp/dyncall-wb: review: https://github.com/perl6/nqp/commit/3776cefbdf
11:04 lucian joined #parrot
11:42 benabik joined #parrot
11:42 prologic joined #parrot
11:42 benabik Good morning, #parrot
11:43 prologic heya all
11:43 prologic just wondering if there happens to be a repository of useful parrot libraries/modules/etc for re-use by others
11:44 benabik There was a packaging system for libraries, but it isn't widely used yet...
11:44 prologic ah ok
11:44 prologic just that I'm contemplating using either parrot or llvm for my toy language
11:45 prologic and well parrot seems nicer tbh and well documented
11:45 prologic but the thought of writing an object model in pir seems overwheleming :)
11:45 benabik I'd suggest you write your runtime support in Winxed instead.  Much nicer to deal with.
11:53 prologic ok I'll check it out
11:53 prologic thanks!
11:55 tadzik as for repository of libraries, look for Plumage
11:58 benabik Plumage, that was the name!
11:59 benabik The current best winxed documentation is here: http://whiteknight.github.co​m/Rosella/winxed/index.html
12:25 whiteknight joined #parrot
12:26 moritz is there some option to make parrot more valgrind-friendl?
12:26 moritz ie not have it spew out lots of "Conditional jump or move depends on uninitialised value(s)" from the GC?
12:28 whiteknight maybe
12:28 whiteknight that sounds like a warning that we need to fix
12:29 whiteknight do you know where it is happening?
12:29 Coke moritz: check out the tools directory.
12:30 moritz whiteknight: I can give you valgrinds backtraces, if that's any help
12:30 Coke tools/dev/vgp*
12:30 moritz seems to happen in all rakudo programs
12:31 Coke those should probably be renamed to "valgrind_parrot" to be less obfuscatory
12:31 whiteknight moritz: yeah, gist a few of them
12:31 moritz Coke: thanks
12:32 moritz whiteknight: http://moritz.faui2k3.org/tmp/valgrind.log
12:32 moritz whiteknight: ignore the invalid read and segfault at the end, the rest is pretty standard
12:39 whiteknight ah, trace_mem_block
12:39 whiteknight yeah, that function is a huge pain
12:39 whiteknight I can't think of any real way to prevent valgrind from crapping out about that
12:42 benabik Trickiest part so far of using Winxed: Trying to avoid it boxing and unboxing things.
12:42 benabik It assumes var return for many thing.s
12:44 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
12:44 whiteknight valgrind just doesn't seem to like the way we're doing it
12:47 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 #parrot
12:49 whiteknight benabik: yeah, I've noticed that too. I'm not sure what the solution is
12:50 whiteknight I suspect he's working around problems where null returns don't unbox well
12:51 whiteknight if I do a "return null;", then try to do an int foo = bar(), we'll get an exception
12:58 benabik Fortunitely, either :() or string() solve most of them.
13:00 benabik string target = downcase(string(adverbs['target']));
13:02 benabik At this point I'm auditing all occurrences of /set \$[INS]\d+, \$P/
13:03 whiteknight hmm
13:04 whiteknight this really seems like something the Winxed optimizers should take care of
13:05 slavorg joined #parrot
13:06 bluescreen joined #parrot
13:08 benabik That one's actually important because get_keyed_ss and get_keyed_ps may return different things.
13:08 benabik Those sorry, get_keyed_string and get_keyed_pmc
13:09 benabik It does, thankfully, DTRT for `string encoding = adverbs['encoding']`.
13:09 whiteknight yes
13:12 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:13 whiteknight yeah, I think that's definitely wrong
13:33 benabik Well, there's a weird one.
13:33 whiteknight ...?
13:33 benabik Method '!cursor_start' not found for invocant of class 'Regex;Match'
13:34 whiteknight weird
13:34 whiteknight is it a method or an attribute
13:34 moritz benabik: '!cursor_start' is a method on a cursor, not on a match
13:34 benabik No idea.  This is not code I've modified.
13:35 benabik I'm guessing I've mis-set a variable somewhere.
13:37 benabik Huh.  Succeeded this time.  :-/
13:37 benabik I'm guessing some PIR file was out of sync...  I had just finished doing an editing pass on things.
13:38 whiteknight that is weird
13:40 prologic left #parrot
13:41 preflex_ joined #parrot
13:42 JimmyZ joined #parrot
13:46 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 #parrot
14:11 prologic Hey is it possible to statically link the executable that pbc_to_exe produces?
14:12 whiteknight prologic: I don't think it exports any symbols
14:12 benabik We do provide a libparrot.a
14:12 whiteknight prologic: I think we could support that, but we've never taken the time to do it yet
14:12 prologic just wondering if it's possible at all
14:12 benabik Although parrot uses dynamically loaded libraries on a regular basis.
14:13 prologic ship the parrot vm statically along with your language
14:13 prologic just curious
14:13 prologic first time learning with parrot
14:13 prologic so far I like it :)
14:13 whiteknight prologic: if it's something you want, open a ticket and we can work on it
14:13 whiteknight we've just never had a use for that before
14:14 prologic k
14:16 PerlJam prologic: what are you using (will be using) parrot for?
14:18 smash joined #parrot
14:18 smash hello everyone
14:19 benabik Ah!  There's a difference between ${ get_hll_global p0, 'TOP' } and ${ get_hll_global top, p0, 'TOP' }
14:20 benabik o/ smash
14:21 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.
14:21 benabik *HLLCompiler
14:21 PerlJam prologic: cool.
14:21 prologic I've already implemented the lexer/parser and a lot of the runtime, have only things like looping constructs and concurrency to implement
14:22 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:23 moritz benabik: can't you just do it method by method?
14:23 moritz I mean, adding methods to existing classes isn't hard in parrot
14:25 benabik moritz: That probably would have been more sane.  :-D
14:25 benabik I'll probably just .include the generated PIR into the original PIR.
14:26 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
14:26 prologic oh good :)
14:27 prologic because I'll need that
14:27 moritz testing of the branches would be very welcome, I think
14:27 prologic I hope it includes coroutines/lightweight-threads
14:27 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.
14:27 prologic yeah I'll consider fetching the HEAD at some point
14:28 PacoAir joined #parrot
14:28 prologic you guys decided on a jit library yet?
14:28 prologic reading up on DynASM - seems nice and well suited ihmo
14:29 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
14:30 whiteknight we can definitely look at DynASM too
14:30 whiteknight We're probably about a year away from JIT at this point
14:30 prologic I've been looking at LLVM/Parrot extensively over the last few weeks
14:31 prologic 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
14:31 moritz parrot is much more high-level
14:32 knewt joined #parrot
14:34 prologic hmm btw how do you go from pir -> pasm?
14:34 prologic parrot -a -o hello.pasm hello.pir doesn't seem to do the trick
14:34 benabik prologic: You don't.
14:34 prologic oh
14:34 benabik PASM and PIR are essentially two different kinds of assembly.
14:34 prologic pbc -> pasm?
14:34 benabik PASM is not very well supported these days...
14:35 prologic oh ic
14:35 benabik There is a pbc_disassemble and `pbc_dump -d` to show the contents of PBC
14:35 prologic in that case I'll forget pasm :)
14:35 whiteknight prologic: PASM is basically deprecated. PIR is our assembly
14:35 benabik (And PACT/src/disasm.winxed, technicall)
14:36 prologic kk
14:36 prologic so parrot, pbc and friends and winxed for javascript-like syntax
14:36 whiteknight yes
14:36 prologic k well g'night :)
14:37 whiteknight goodnight
14:41 Coke if PASM is "mostly" deprecated, is there any reason not to make it fully deprecated?
14:42 Coke 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.
14:42 * Coke starts a branch.
14:42 benabik And fully removing it involves hacking IMCC which is nobody's favorite task.
14:44 tadzik to say it gently
14:44 PerlJam easy!  Just remove IMCC  :)
14:44 benabik PerlJam: That's my plan.
14:46 dalek parrot/pct_winxed: a228fda | benabik++ | / (6 files):
14:46 dalek parrot/pct_winxed: PCT: Convert PCT/HLLCompiler to Winxed
14:46 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/a228fda068
14:47 dalek parrot/pct_winxed: 07f1e60 | benabik++ | compilers/pct/src/PCT/Node.winxed:
14:47 dalek parrot/pct_winxed: PCT.Node: Avoid unneeded box/unbox
14:47 dalek parrot/pct_winxed:
14:47 dalek parrot/pct_winxed: Just using int() isn't enough to avoid a PMC register in a function
14:47 dalek parrot/pct_winxed: call, so use the :() binding syntax instead.
14:47 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/07f1e60895
14:47 dalek parrot/pct_winxed: 52b597f | benabik++ | compilers/pct/src/PCT/Grammar.winxed:
14:47 dalek parrot/pct_winxed: PCT.Grammar: Use built-in instead of unknown function
14:47 dalek parrot/pct_winxed:
14:47 dalek parrot/pct_winxed: Winxed uses indexof() for the index op.  Oops.
14:47 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/52b597f126
14:47 dalek parrot/pct_winxed: fcb1cc0 | benabik++ | compilers/pct/src/PCT/Grammar.winxed:
14:47 dalek parrot/pct_winxed: PCT.Grammar: Fix null PMC access in onload
14:47 dalek parrot/pct_winxed:
14:47 dalek parrot/pct_winxed: Error in translation, missed the get_class.
14:47 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/fcb1cc0083
14:51 Coke how to push a local branch?
14:52 moritz git push origin <branchname>
14:52 Coke git push -u <name> <name> ?
14:52 bluescreen joined #parrot
14:52 moritz you can use -u too, yes
14:52 Coke moritz: will that version do tracking for future pushes?
14:53 PerlJam ${ ... } is how you execute PIR in winxed?
14:53 dalek parrot/coke/rm_pasm: dad33fd | coke++ | docs/pdds/draft/pdd06_pasm.pod:
14:53 dalek parrot/coke/rm_pasm: Add a note about PASM deprecation
14:53 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/dad33fd0e2
14:53 dalek parrot/coke/rm_pasm: 6a9fc68 | coke++ | editor/ (6 files):
14:53 dalek parrot/coke/rm_pasm: Remove pasm help/docs from editor
14:53 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/6a9fc68009
14:53 benabik PerlJam: More or less.  The arguments get parsed as winxed expressions.
14:53 moritz Coke: with -u  a 'git pull' in that local branch will DWYM
14:53 Coke moritz: I did your version, now "git pull --rebase" complains it doesn't know what to do.
14:54 benabik (Which notably means that .get_params () calls won't work in ${})
14:54 Coke how to retro-fit it?
14:54 * benabik can never remember the command line to set these things.  He always edits .git/config
14:54 moritz Coke: edit your .git/config
14:54 Coke arglebargle. Danke.
14:54 benabik git-branch --set-upstream ?
14:55 moritz Coke: there's a section [branch "master"]. Copy-and-paste it, and replace "master" with your branch name
14:55 Coke moritz: ew!
14:55 benabik `git-branch --set-upstream <branch>` ?
14:55 benabik Oops, s/-/ /
14:55 Coke but danke.
14:56 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?
14:57 benabik PerlJam: I am deliberately attempting direct conversions at first.  Making it more "natural" Winxed can come later.
14:57 PerlJam ok
14:57 benabik I did add some inlines for bits that were more natural as functions.
14:58 benabik (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  :)
14:59 PerlJam s/iw/is/
15:02 benabik cotto: ping
15:05 benabik 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.
15:05 NotFound ~~
15:07 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++
15:07 benabik NotFound: The binding syntax works, but is somewhat kludgy.
15:08 NotFound Just like it does now for: int(a[b])
15:14 bluescreen joined #parrot
15:15 dalek PACT: eb98173 | benabik++ | TODO.mkd:
15:15 dalek PACT: TODO: Update for GSoC
15:15 dalek PACT:
15:15 dalek PACT: Now that I'm actually accepted, make note of what in the TODO I plan
15:15 dalek PACT: on doing.
15:15 dalek PACT: review: https://github.com/parrot/PACT/commit/eb9817369b
15:17 JimmyZ benabik: Is there a public url for your 6model  proposal ?
15:17 dalek winxed: b140bf9 | NotFound++ | winxedst2.winxed:
15:17 dalek winxed: special case for call expressions in typecast builtins arguments
15:17 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/b140bf9688
15:19 whiteknight JimmyZ: if there isn't, there should be
15:19 whiteknight We'll make it public, or use it to create a public TODO list
15:19 benabik I didn't originally make it public.
15:19 whiteknight JimmyZ: Do you want to get involved with 6model? We could use lots of helpers
15:21 benabik If I can still edit it, I'll rip some personal details out of the timeline and make it public.
15:22 benabik 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
15:22 JimmyZ +1 to a gist
15:23 whiteknight benabike: yes a gist would be awesome
15:24 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
15:25 NotFound whiteknight: winxed b140bf9 is potentially disruptive change, please notify me if you find any problem.
15:26 whiteknight NotFound: It shouldn't be. I'll give Rosella a test and make sure everything is fine
15:28 benabik JimmyZ, whiteknight: https://gist.github.com/2500370
15:31 hernan joined #parrot
15:32 hernan joined #parrot
15:33 hernan joined #parrot
15:34 hernan joined #parrot
15:34 JimmyZ benabik: thanks :)
15:35 hernan joined #parrot
15:36 hernan joined #parrot
15:37 hernan joined #parrot
15:38 hernan joined #parrot
15:55 contingencyplan joined #parrot
16:01 brrt left #parrot
16:06 Coke ... ok,that's weird. I rip out -a and --pasm from frontend/parrot, run make test... no failures.
16:07 benabik Yeah.
16:07 benabik Our tests are awesome.
16:07 benabik I think frontent/parrot is mini-parrot.
16:08 whiteknight yeah, that's just miniparrot
16:08 whiteknight frontend/parrot2 is regular "parrot"
16:09 whiteknight 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.
16:15 Coke ARGLEBARGLE. any file that says "# THIS IS A GENERATED FILE! DO NOT EDIT!
16:16 Coke " but does not refer to the generating file should be shot.
16:16 tadzik Oh yes
16:17 benabik GSoC Students: Don't forget to check your TODOs.
16:19 Coke whiteknight: also, why is there frontend/ and src/ and not src/frontend ?
16:21 aloha (parrot/parrot) Issues opened : 758 (frontend/parrot2/prt0.pir says "THIS IS A GENERATED FILE"...) by coke : https://github.com/parrot/parrot/issues/758
16:23 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:25 Coke 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:27 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 .
16:28 whiteknight how so?
16:29 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 Coke (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.)
16:30 whiteknight I don't have my measurements handy, but parrot/frontend2 is already about 30% faster than the old version
16:30 whiteknight so yes, we can probably optimize further, but it hasn't been an issue yet
16:31 dalek parrot/coke/rm_pasm: e00fb8a | coke++ | MANIFEST:
16:31 dalek parrot/coke/rm_pasm: fix MANIFEST
16:31 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/e00fb8adb3
16:31 dalek parrot/coke/rm_pasm: 6046747 | coke++ | frontend/parrot/main.c:
16:31 dalek parrot/coke/rm_pasm: remove -a/--pasm from miniparrot
16:31 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/604674726a
16:31 dalek parrot/coke/rm_pasm: 2954559 | coke++ | frontend/parrot2/ (3 files):
16:31 dalek parrot/coke/rm_pasm: Remove -a --pasm from main parrot executable
16:31 dalek parrot/coke/rm_pasm:
16:31 dalek parrot/coke/rm_pasm: (NOW tests break: \o/)
16:31 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/2954559146
16:31 whiteknight The bootstrapping really doesn't add as much overhead as you might thing. The generated PIR is pretty decent
16:32 Coke also: if we /have/ a way to do that, by putting it in core usage, we ensure it's heavily tested.
16:32 Coke *more heavily, anyway.
16:32 whiteknight have a way to do what, strip/optimize the pbc?
16:33 Coke yes, that.
16:34 Coke 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 Coke the more we write in higher level langauges, the more important this would be.
16:35 nine Good evening, #parrot
16:35 whiteknight hello nine
16:35 whiteknight 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
16:35 nine whiteknight: threads and chameneos_performance are equal right now
16:36 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
16:37 whiteknight 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 jashwanth joined #parrot
16:37 Timbus joined #parrot
16:40 Justin joined #parrot
16:40 Coke whiteknight: done
16:40 Justin good afternoon
16:40 Coke (wiki)
16:40 whiteknight Coke++
16:41 whiteknight Does winxed get invoked during the actual build? I think you have to explicitly make that file
16:43 whiteknight 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 whiteknight much more inclined *
16:45 Coke whiteknight: it's invoked during the bootstrap.
16:46 whiteknight hmm, I thought we checked in that generated .pir file
16:46 whiteknight I'd have to take a look at it all again, my memory is clearly very fuzzy
16:46 Coke whiteknight: yes.
16:47 Coke hence "bootstrap"
16:47 dalek nqp/dyncall-wb: e99865a | (Arne Skjærholt)++ | src/ops/nqp_dyncall.ops:
16:47 dalek nqp/dyncall-wb: No need to write barrier non-concrete objects.
16:47 dalek nqp/dyncall-wb: review: https://github.com/perl6/nqp/commit/e99865a687
16:47 Coke you don't need winxed to build parrot. You need winxed to change how parrot is built.
16:47 * Coke heads out for some lunch
16:48 * benabik finishes off his GSoC TODO list.
16:48 benabik Does dalek still announce posts on parrot.org ?
16:52 whiteknight I don't know
16:52 whiteknight I don't think I saw him do it yesterday
17:05 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:06 whiteknight okay, that's good
17:17 nine Oh and while at it I finally found my memory leak :)
17:17 whiteknight memory leak?
17:19 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:21 nine Another good reason for reducing differences between main and child threads.
17:23 whiteknight yes, a very good reason indeed
17:24 whiteknight 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 whiteknight that would aide in debugging memory errors a huge amount
17:24 nine oh yeah
17:25 whiteknight plus it would aide in all sorts of caching tasks
17:29 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:30 nine 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
17:31 whiteknight and vtable shift on namespaces does not write? Thats....terrible
17:31 nine It's misused as an iterator. Comment says so.
17:31 whiteknight hatehatehatehatehate
17:31 benabik OTOH, asking NSes to shift is probably not what you meant.
17:31 benabik There should probably be a NameSpaceIterator
17:32 whiteknight we should probably delete namespaces
17:32 benabik And replace them with...?
17:32 aloha (parrot/parrot) Issues opened : 759 (sprintf error should be more awesome) by Benabik : https://github.com/parrot/parrot/issues/759
17:32 whiteknight the void
17:32 * benabik is totally in favor of killing things we have reasonable replacements for.
17:35 alvis joined #parrot
17:37 atrodo I consider "the void" a reasonable replacement in some situations
17:37 lucian joined #parrot
17:38 benabik Oh.  I noticed a subtle difference in my Winxed PCT code...  The 'unload' functions aren't anonymous anymore.
17:39 benabik Hm.  Perhaps just [anon] works.  D'oh.
17:40 alvis NotFound++ # for 'pirado.winxed' and his example use of continuations.
17:41 benabik NotFound++ # Including the obvious solutions in Winxed, even when I don't think of them
17:41 tadzik where is that?
17:42 alvis tadzik: are you asking about 'pirado.winxed'?
17:43 tadzik yes
17:43 benabik https://github.com/NotFound/winxed/​blob/master/examples/pirado.winxed
17:43 alvis yep
17:49 cotto ~~
17:50 cotto benabik: interesting question wrt how pact should look
17:51 cotto 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:52 benabik Well, PACT assembly will deliberately be much simpler (at least to start)
17:53 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.
17:54 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?
17:54 moritz I mean, our strings are notionally imutable anyway
17:54 benabik There will probably have to be some escaping, especially if the string constants aren't in the same encoding as the main file.
17:55 benabik 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.
17:55 cotto yeah, that
17:55 moritz that's what I meant
17:57 NotFound ~~
17:57 benabik I'm imagining there will be some nods to convenience, but all optional and default to off.
17:57 cotto just the kind of thing that makes testing easier?
17:58 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.
17:59 cotto NotFound: do you have the tuits to update them?
17:59 cotto that and the test suite are where I go when I want to figure out how to do something
17:59 alvis NotFound: is there another source of winxed example code? (Other than whiteknight's docs of course.)
17:59 NotFound Yes, the test suite need improvement,
18:00 NotFound alvis: I think Rosella sources are good examples.
18:00 alvis NotFound: Yes, sorry. I forgot to add that in as well.
18:02 dalek parrot/pct_winxed: e782900 | benabik++ | / (6 files):
18:02 dalek parrot/pct_winxed: PCT: Convert PAST.Compiler.onload to Winxed
18:02 dalek parrot/pct_winxed:
18:02 dalek parrot/pct_winxed: Rather than converting the entire compiler in one shot, make the main
18:02 dalek parrot/pct_winxed: PIR file include a PIR file generated from winxed.  That way we can
18:02 dalek parrot/pct_winxed: convert one function at a time.  This one just changes onload.
18:02 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/e7829007d5
18:02 dalek parrot/pct_winxed: f4c4bcc | benabik++ | compilers/pct/src/P (5 files):
18:02 dalek parrot/pct_winxed: PCT: Make onload functions anonymous again
18:02 dalek parrot/pct_winxed:
18:02 dalek parrot/pct_winxed: This got left off of the conversion simply because I didn't try the
18:02 dalek parrot/pct_winxed: anon modifier.  It works, it's simple, and it's useful.
18:02 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/f4c4bccd3e
18:02 * Coke notes that the only time he touches parrot internals is to rip stuff out.
18:02 benabik Parrot has a lot of cruft.
18:02 Timbus joined #parrot
18:03 benabik You can chart Rakudo's development through the strata of abandoned code left behind in Parrot.
18:04 cotto Coke: we have yet to reach the point where that's a bad thing.
18:05 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 NotFound s/I/If
18:05 cotto interesting implementation of -Ofire
18:07 alvis Should we consider expanding our 'examples/' to include winxed (and maybe nqp) code examples?
18:11 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.
18:11 Coke (to avlis)
18:11 cotto benabik: if we expect to port a lot of PIR then maintaining similarity will reduce pain.
18:11 Coke *alvis
18:11 cotto Otherwise, I'm not picky
18:11 Coke cotto: we
18:12 Coke cotto: on the other hand, if we have to port at all, let's not be constrained unduly by past mistkes.
18:12 Coke *mistakes
18:12 cotto Coke: yes.  That's much of the point of pact.
18:12 * benabik has been pondering a mostly-bug-compatable port of IMCC onto PACT.
18:14 dalek parrot/coke/rm_pasm: a827975 | coke++ | config/gen/makefiles/root.in:
18:14 dalek parrot/coke/rm_pasm: Allow "make test" to get past this PASM dep.
18:14 dalek parrot/coke/rm_pasm: review: https://github.com/parrot/parrot/commit/a8279759ea
18:15 benabik I keep putting ; at the end of my PIR lines because I'm switching back and forth.
18:16 Coke there we go, now that branch can run "make test" and explode all sorts of things.
18:17 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:18 Coke alvis: winxed: See NotFound and whiteknight
18:19 Coke alvis: nqp: see https://github.com/perl6/nqp
18:19 alvis Coke: Right, *I* know that, but someone new to parrot doesn't.
18:19 Coke ... I assume you're asking that so you can write it down somewhere.
18:19 whiteknight alvis: The most complete docs that exist so far are here: http://whiteknight.github.com/Rosella/winxed/
18:19 alvis Coke: Yep
18:19 whiteknight They probably need some updating, but they aren't bad
18:20 NotFound And in http://winxed.org/ there is a FAQ than no one reads ;)
18:21 benabik parrot.github.com  should probably include a link to winxed.org
18:21 benabik And maybe github.com/perl6/nqp-rx
18:22 Coke whoops. wrong nqp I pointed you at, even.
18:23 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
18:23 whiteknight so what do you propose we do to fix it?
18:24 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.)
18:25 alvis whiteknight: I'd also like to include some winxed example code in 'examples/'.
18:25 whiteknight oka,y good idea
18:25 alvis whiteknight: And, while I'm at it, I'd like to include a link to benabik's cish and coolname's babysteps.
18:26 benabik babysteps?
18:26 whiteknight okay then
18:26 alvis benabik: It's just a rather simple, but useful tutorial on PIR.
18:26 alvis whiteknight: great! thanks.
18:26 Coke I don't think we should include winxed example code
18:27 Coke I think we should point to winxed.
18:27 cotto I'm leaning toward that too.
18:27 Coke it's developed outside out of parrot - that's where the docs live.
18:27 cotto exactly
18:28 cotto Suggestions on how to make the examples easier to find are great.
18:28 alvis ok, no winxed example code in the repo.
18:28 Coke that said, we can import any parts of winxed into ext/ we like.
18:28 cotto alvis: put on your newbie shoes.  How would you try to find winxed documentation or examples?
18:29 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:30 alvis cotto: you get taken to a lot of bad links, bad docs (or outdated docs) and misleading information.
18:30 Coke alvis: https://www.google.com/search?sourceid=chro​me&amp;ie=UTF-8&amp;q=winxed+documentation
18:30 NotFound Well, examples on how to use parrot features can be written in winxed for clarity and brevity.
18:30 Coke first link is http://winxed.org/
18:31 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.
18:31 cotto putting them on the site with nice syntax highlighting would be ideal, but that probably violates laziness
18:32 cotto alvis: quite
18:32 Coke alvis: Yup. no one is arguing with you.
18:32 NotFound I'm not a big fan of syntax highlighting.
18:33 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.
18:34 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!
18:34 Coke alvis: yes. no one is arguing with you.
18:34 Coke winxed is just one more layer on the 10 year cake here.
18:35 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"
18:36 Coke * "here is
18:39 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.
18:39 Coke alvis: welcome to the club.
18:39 alvis gotta go. baby's up and fussing and mom's away.
18:39 Coke NotFound: I don't know what you mean.
18:39 alvis afk
18:39 Coke alvis: take care.
18:40 NotFound Coke: http://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.  :-(
18:41 Coke NotFound: ah, nifty.
18:42 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."
18:42 PerlJam sure.
18:43 Coke let's at least cull the herd.
18:43 Coke (which is what I'm doing with PASM at the moment.)
18:44 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.
18:45 benabik Dynamic lexicals + tailcall = bad idea.
18:46 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?
18:46 * Coke wonders if anyone will volunteer to bring lua away from TGE/PGE
18:46 whiteknight and then jettisoning PIR, and switching most systems-related tasks to Winxed
18:47 whiteknight 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?
18:47 Coke rakudo doesn't need nqp bundled into parrot.
18:47 Coke (even the newer one.)
18:47 benabik Parrot needs nqp for ops2c.
18:47 benabik nqp-rx, rather
18:47 whiteknight Rakudo doesn't need it, no. but we probably want it
18:48 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
18:48 whiteknight Coke: so you're suggesting we don't move to the new NQP?
18:48 benabik Coke: Sure, if we can separate out the grammar engine from nqp-rx.
18:48 Coke whiteknight: so embrace the downstream project rather than bundle?
18:48 whiteknight Coke: I guess I don't understand what you're asking for
18:49 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 Coke "let's do less stuff so we can do the stuff we do better"
18:49 NotFound I'd like to just decrease the number of live nqp variants.
18:50 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. ;)
18:50 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
18:51 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 Coke whiteknight: you keep agreeing with me.
18:51 Coke we don't have enough developers to do things multiple ways.
18:52 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 :)
18:53 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
18:53 Coke (nqp, winxed... Modula-3)
18:53 benabik NQP-rx is _not_ a system language.
18:53 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
18:53 Coke benabik: define "system language"
18:54 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.
18:54 benabik NQP has too many additional dependencies to be in core, IMNSHO.  That may change over time, but at the moment, it's only diverging.
18:55 PerlJam Coke++
18:55 Coke nqp-rx or nqp-latest?
18:55 benabik -latest
18:55 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
18:56 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:57 PerlJam That strikes me as unlikely.
18:58 Coke PerlJam: what does?
18:58 PerlJam that NQP is made such that it isn't separate from parrot.
18:59 benabik It will be far less separate if we incorporate 6model into core.
18:59 PerlJam benabik: maybe.
18:59 PerlJam you will have removed some technical barriers, but those aren't the hard ones to overcome.
19:00 benabik I'm mostly concerned with the technical ones.
19:00 cotto they're necessary but not sufficient
19:00 PerlJam indeed.
19:00 Coke right. nqp handles a lot of the impedence mismatch between how parrot thinks things are and how rakudo needs them to be.
19:01 Coke 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.
19:01 Coke benabik: ah, that's easy: make parrot change. ;)
19:01 benabik Coke: I think it should
19:02 benabik 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.
19:02 benabik If they keep developing QAST and I keep building PACT, we can eject PCT in favor of QAST.
19:03 benabik (and PACT, obviously)
19:04 whiteknight the real problem is that there is an impedance mismatch between Rakudo and Parrot, and there shouldn't be
19:05 whiteknight Parrot should be the VM for Rakudo, and every supporting feature Rakudo needs should be in Parrot
19:05 whiteknight The fact that those features were implemented elsewhere is a tragedy, and we would do very well to try and reverse that trend
19:05 benabik whiteknight++
19:06 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 whiteknight We've got it, nobody uses it, Rakudo has something better, and they implemented the replacement outside our repo
19:07 whiteknight 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:08 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.
19:08 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
19:08 Coke nqp is going to eventually be agnostic, sure.
19:08 Coke 6model was originally written on nqp-clr and ported to nqp-parrot.
19:08 benabik NQP the language is heading towards agnostic.  NQP the implementation is parrot specific.
19:09 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
19:09 whiteknight All we can do is try to reverse some of the damage and keep more damage from happening in the future
19:10 whiteknight 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 whiteknight and I know NQP contains all those things, and we should get them
19:11 whiteknight 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:12 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.
19:12 whiteknight exactly. All these features already exist and have been implemented for Parrot. They've just been implemented in the wrong repo
19:12 whiteknight PerlJam: Parrot wants to be a great VM for dynamic languages.
19:12 whiteknight especially, Perl6
19:13 whiteknight there's no change in terms of our goal or mission
19:13 PerlJam ok.
19:13 Coke I think the "especially Perl 6" was not evident for a while.
19:13 PerlJam Then  winxed *and* NQP or just winxed?
19:14 PerlJam (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
19:14 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.
19:14 Coke I would say short term, just winxed.
19:14 whiteknight There was a time when "Rakudo people" and "Parrot people" worked together and were all "we"
19:14 PerlJam Coke: at least you and I agree then  :)
19:14 Coke benabik: as an HLL developer, it is hard to get parrot to move in the direction you want.
19:15 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
19:16 whiteknight obviously we can't stop all our other work just to start shuffling existing code around
19:16 whiteknight except 6model, which has the potential to decrease a lot of pain in a lot of places
19:17 PerlJam and then what?  IF Rakudo is alienated enough to not be "close" to parrot any more, who is going to use Parrot?
19:18 PerlJam (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
19:19 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:20 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 whiteknight We can attack from two angles: One by improving the performance and integration of existing features (6model) and adding new features (threads)
19:20 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.
19:21 whiteknight Yes, like I said, the damage is done
19:21 whiteknight 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
19:22 whiteknight If they do, good. If not, we'll be a better platform for other compilers for our efforts
19:23 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?
19:23 whiteknight yeah, that's the big problem, I think. Moving onto any other VM platform has certain....issues that Parrot doesn't have
19:23 whiteknight PerlJam: None, right now.
19:24 whiteknight 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.
19:25 benabik 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
19:25 whiteknight 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
19:25 whiteknight and that requires 6model
19:26 whiteknight 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:27 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:28 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?
19:29 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 PerlJam (at least that's what's in my head)
19:30 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.
19:32 PerlJam I used to think that the killer languages for Parrot would be javascript and PHP.   Now, I'm not so sure.
19:33 benabik IMO, our "2nd customer" is "new language developers".  Which makes good documentation the next priority.
19:34 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:35 NotFound Also, we need to improve plumage or some like that. There wasn't someone working on it?
19:36 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.
19:36 whiteknight 6model is the big enabler. From the user perspective, PACT is going to be an invaluable tool for "drop-dead simple" getting started
19:36 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"
19:38 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 whiteknight ideally
19:40 whiteknight 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?
19:40 NotFound Apache
19:40 whiteknight if we have Mod_Parrot up and running by the end of the summer too, even better
19:41 whiteknight Mod_Parrot with full security settings, threading, and example handlers for Rakudo and JavaScript
19:42 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
19:44 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:46 whiteknight good shape in general
19:46 whiteknight If we can have 6model and enough of PACT by then, I will personally deliver a JS compiler by christmas
19:46 whiteknight (sooner if other people want to help)
19:47 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
19:47 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")
19:48 whiteknight PerlJam: we just won't add the new people in late November
19:48 whiteknight NotFound:  yes, When python can't even interoperate with itself, you *know* there's a market for something like Parrot
19:49 whiteknight We just aren't marketable yet
19:51 NotFound Maybe there is only one language where all people follows only One True Version: winxed ;)
19:56 whiteknight Too bad that one true vision doesn't include a fancy lambda syntax :)
19:59 NotFound Fancyness is in the eye of the beholder.
20:01 PerlJam NotFound: a less-typing-required lambda syntax?  :)
20:02 NotFound BTW I've recently seen an accepted proposal for javascript on that, and I find it ugly.
20:03 PerlJam regarding winxed ...
20:03 PerlJam <@Nicholas> it has the downside that the implementation is (as I understand it) very tied to PIR
20:03 PerlJam true?
20:04 NotFound Uh? Given that it generates PIR, of course is tied to it.
20:05 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.
20:06 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.
20:06 PerlJam NotFound: well, I was asking more if you think that's a "downside"  :)
20:07 whiteknight those PMCs are pretty stable. they haven't changed in months
20:07 whiteknight PerlJam: No, it's not a downside. Winxed is a low-level systems language for Parrot
20:07 whiteknight it should be tied to Parrot
20:07 PerlJam a follow-up comment was ...
20:07 PerlJam <@Nicholas> so that it isn't going to cope well with the Parrot plan to transition to a new assembly language, M0
20:08 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)
20:08 benabik NotFound: `if(!str) {}` seems to not work.
20:09 benabik 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
20:09 benabik If anything, PACT is the probable replacement for PIR.  :-D
20:10 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.
20:10 whiteknight If you use winxed instead of PIR, you will have far fewer headaches when M0 lands
20:10 whiteknight although ideally, M0 won't cause that big a splash. If we've designed it well and rolled it out carefully
20:11 NotFound Just like C compilers generates assembly instead of machine code when they find that way appropiate.
20:13 NotFound benabik: str : a string ?
20:13 benabik NotFound: Yes.
20:13 benabik NotFound: string str; if (str) {}  if(!str) {}
20:14 benabik First if works, second fails to compiler PIR.
20:14 PerlJam ah, the comments on #p5p stem from some tweets by chromatic
20:14 benabik (no isfalse_i_s)
20:17 PacoAir_ joined #parrot
20:23 NotFound benabik: yes, operator ! fails with string operand. Working on it.
20:24 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:25 NotFound benabik: yes, the problem is generic but maybe an special case optimization for if will be convenient.
20:26 * benabik wonders what the if/unless macros are actually doing...  To the disasm.winxed!
20:28 whiteknight heh, it's a handy tool to have laying around
20:29 benabik Ah.  There are just if/unless opcodes.
20:34 benabik If we have if/unless with strings, why not istrue/isfalse?
20:34 benabik Although that does raise the question: What is false for a string?
20:35 benabik null, '', and '0', apparently.
20:37 NotFound benabik: what is not true.
20:38 benabik NotFound: String false is any of {null, '', '0'}, true is everything else.
20:38 benabik (Note only the ascii character 0 works.)
20:51 dalek nqp/toqast: 53d95cc | masak++ | t/qast/qast.t:
20:51 dalek nqp/toqast: [t/qast/qast.t] added a test for a unary op
20:51 dalek nqp/toqast: review: https://github.com/perl6/nqp/commit/53d95cc57c
21:04 benabik You know what's useful?  Not declaring a variable the same name as a parameter.
21:04 benabik BTW, that's not an error in Winxed.
21:06 NotFound benabik: is not. The scope of the function is not the same as the one of its main block.
21:06 benabik Interesting.
21:10 benabik Hm.  `if(str)` in Winxed isn't the same as `if str` in PIR.
21:11 dalek rakudo/setenv: 7845b8d | tadzik++ | src/core/terms.pm:
21:11 dalek rakudo/setenv: Implement setting env variables by modifying %*ENV
21:11 dalek rakudo/setenv: review: https://github.com/rakudo/rakudo/commit/7845b8db47
21:13 NotFound benabik: yes, don't remember right now if it's an accident or a remaining from past problems.
21:15 nine msg whiteknight I now got a minimal program reproducing the bug: https://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:16 aloha OK. I'll deliver the message.
21:16 nine If anyone else can help me find why current threads branch fails randomly with https://gist.github.com/2503294 you're very welcome!
21:18 PacoAir joined #parrot
21:22 dalek rakudo/setenv: 616b622 | tadzik++ | src/core/terms.pm:
21:22 dalek rakudo/setenv: Fix a braino. benabik++ for noticing
21:22 dalek rakudo/setenv: review: https://github.com/rakudo/rakudo/commit/616b6222cd
21:24 * benabik goes back and checks usages of strings in ifs.
21:24 dalek winxed: 29aab83 | NotFound++ | winxedst2.winxed:
21:24 dalek winxed: several fixes and optimizations in conditions and operator ! following a report by benabik++
21:24 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/29aab83c04
21:25 NotFound benabik: I think this fixes all, and improves generated code too.
21:26 benabik NotFound: Sorry for all the extra work.  :-D
21:28 NotFound nine: if you add a return to the sub it fails the same way?
21:39 brambles joined #parrot
21:44 NotFound PerlJam: There is a log of that channel somewhere?
21:45 benabik Google does not reveal a #p5p irc log to me.
21:49 NotFound Someone has an iphone to ask Siri? X-)
21:52 NotFound I've been amazed by an article about "Ultra Intelligent Electronic Agents " mentioned in slashdot :D
21:53 NotFound 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
21:54 benabik Given that Siri's default answer is "I could google that for you"...
21:56 NotFound Well, that's the way some people use the chat.
21:57 NotFound But in irc the Maybe Not So Ultra Agents can be rude.
22:09 * benabik is testing the last bit of conversion for the night.
22:17 dalek parrot/pct_winxed: b23a097 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
22:17 benabik Sorry for spam...
22:17 dalek parrot/pct_winxed: PCT:  PAST.Compiler.to_post in Winxed
22:17 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/b23a0972ad
22:17 dalek parrot/pct_winxed: 0dd4cbb | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
22:17 dalek parrot/pct_winxed: PCT: PAST.Compiler.escape in Winxed
22:17 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/0dd4cbb35c
22:17 dalek parrot/pct_winxed: a6000ae | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
22:18 dalek parrot/pct_winxed: PCT: PAST.Compiler.unique in Winxed
22:18 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/a6000ae757
22:18 dalek parrot/pct_winxed: 7fa3e9b | benabik++ | ext/winxed/compiler.pir:
22:18 dalek parrot/pct_winxed: Update Winxed snapshot to 29aab83
22:18 dalek parrot/pct_winxed:
22:18 dalek parrot/pct_winxed: This makes using strings in if statements much easier, among other
22:18 dalek parrot/pct_winxed: improvements.
22:18 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/7fa3e9b0e6
22:18 dalek parrot/pct_winxed: 77371b2 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
22:18 dalek parrot/pct_winxed: PCT: PAST.Compiler.uniquereq in Winxed
22:18 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/77371b2a27
22:18 dalek parrot/pct_winxed: 79d5fe3 | benabik++ | compilers/pct/src/PAST/Compiler. (2 files):
22:18 dalek parrot/pct_winxed: PCT: PAST.Compiler.tempreg and tempreg_frame in Winxed
22:18 dalek parrot/pct_winxed: review: https://github.com/parrot/parrot/commit/79d5fe3c23
22:18 benabik Ah, garnering karma by working in small chunks...
22:18 benabik (Actually doing it so I can bisect easier if something starts exploding later.)
22:19 cotto don't defend sanity.  That's how you should be working.
22:20 NotFound At least one time I commited a one character change.
22:21 cotto The ideal is an infinitely long series of 0-character changesets.
22:21 NotFound Until the turtle beat Achiles
22:22 benabik Maybe next I'll go back and use the lexical modifier instead of all the manual .lexes.
22:22 benabik Anyway, it's time for me to go home.
22:48 dalek winxed: b36caef | NotFound++ | winxedst (2 files):
22:48 dalek winxed: clean a bit usages of genlabel and createlabel
22:48 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/b36caef785
22:51 davidfetter joined #parrot
23:01 dalek winxed: 13a738f | NotFound++ | winxedst2.winxed:
23:01 dalek winxed: fix error report when using an undefined label in a pirop
23:01 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/13a738fdd4
23:05 whiteknight joined #parrot
23:06 whiteknight good evening, #parrot
23:06 Coke guten abend.
23:17 whiteknight hello Coke
23:18 whiteknight 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.
23:23 whiteknight Is there anybody around who knows about NQP's regex engine?
23:48 benabik joined #parrot
23:56 benabik ~~
23:58 whiteknight hello benabik
23:58 benabik 'lo whiteknight, how's things?
23:59 whiteknight things would be better if I could get NQP passing tests on Parrot's eval_pmc branch

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced