Camelia, the Perl 6 bug

IRC log for #parrot, 2011-05-31

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:03 dalek parrot-gmp: 62416a1 | bubaflub++ | TODO.md:
00:03 dalek parrot-gmp: Merge remote branch 'origin/master'
00:03 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/62416a1295
00:03 dalek parrot-gmp: b753e7a | bubaflub++ | gmph2ncidef.pl:
00:03 dalek parrot-gmp: add a blacklist of functions
00:03 dalek parrot-gmp:
00:03 dalek parrot-gmp: these functions are either too complicated to be auto-generated
00:03 dalek parrot-gmp: or require functionality outside the current scope of this project
00:03 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/b753e7afac
00:03 dalek parrot-gmp: 9351ba7 | bubaflub++ | gmph2ncidef.pl:
00:03 dalek parrot-gmp: update mappings
00:03 dalek parrot-gmp:
00:03 dalek parrot-gmp: this should cover the GMP.h file
00:03 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/9351ba7eef
00:03 dalek parrot-gmp: 73ecbad | bubaflub++ | gmph2ncidef.pl:
00:03 dalek parrot-gmp: more regex magic
00:03 dalek parrot-gmp:
00:03 dalek parrot-gmp: some functions are prefixed with an underscore
00:03 dalek parrot-gmp: remove the __gmp_const macro from our processing
00:03 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/73ecbad0f2
00:09 lucian whiteknight: i've set up hg to push to both bb and gh
00:09 lucian good night
00:09 lucian left #parrot
00:12 whiteknight lucian++
00:29 whiteknight left #parrot
00:42 whiteknight joined #parrot
00:47 theory left #parrot
00:47 whiteknight left #parrot
01:01 whiteknight joined #parrot
01:03 gbacon joined #parrot
01:04 kid51 joined #parrot
01:08 whiteknight left #parrot
01:11 whiteknight joined #parrot
01:12 whiteknight anybody mind a commit bomb?
01:14 dalek Rosella/gh-pages: 941ba33 | Whiteknight++ | libraries/filesystem.md:
01:14 dalek Rosella/gh-pages: expand docs for filesystem and add a few code examples
01:14 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/941ba33715
01:14 dalek Rosella/gh-pages: 82baead | Whiteknight++ | libraries/core.md:
01:14 dalek Rosella/gh-pages: mention the global registry in core.md
01:14 dalek Rosella/gh-pages: review: https://github.com/Whiteknig​ht/Rosella/commit/82baead4d6
01:14 dalek Rosella: 967f0ba | Whiteknight++ | / (5 files):
01:14 dalek Rosella: Add an ability to register library-globals. Use this to register an OS PMC instance for the FileSystem library, so we can replace that at runtime for testing purposes
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/967f0babbc
01:14 dalek Rosella: 3dcd4cf | Whiteknight++ | / (5 files):
01:14 dalek Rosella: Fix various FileSystem tests to all pass
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/3dcd4cf1da
01:14 dalek Rosella: 76dbb71 | Whiteknight++ | / (4 files):
01:14 dalek Rosella: use mockobject to fill in some tests for Directory. We can use the global instance registry to override the OS PMC instance with a mock
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/76dbb71d49
01:14 dalek Rosella: 39cb600 | Whiteknight++ | / (2 files):
01:14 dalek Rosella: Add tests for File, using mockobject magic
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/39cb600d19
01:14 dalek Rosella: ee2051a | Whiteknight++ | t/filesystem/ (2 files):
01:14 dalek Rosella: Add stub test methods to Visitor.t
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/ee2051abd7
01:14 dalek Rosella: a84ee76 | Whiteknight++ | src/unstable/filesystem/Visitor.winxed:
01:14 dalek Rosella: Cleanup Visitor and add more docs
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/a84ee76e07
01:14 dalek Rosella: 577180f | Whiteknight++ | / (4 files):
01:14 dalek Rosella: Add stub test files for subclasses of Visitor
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/577180fa50
01:14 dalek Rosella: ad71a15 | Whiteknight++ | t/ (4 files):
01:14 dalek Rosella: Add some tests for mocking method calls with named arguments
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/ad71a15eea
01:14 dalek Rosella: 2cbfc28 | Whiteknight++ | / (2 files):
01:14 dalek Rosella: update Container.default_container to use the new global registry
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/2cbfc287f4
01:14 dalek Rosella: cfd6b94 | Whiteknight++ | src/core/Globals.winxed:
01:14 dalek Rosella: +some docs about globals
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/cfd6b9467d
01:14 dalek Rosella: 54404eb | Whiteknight++ | t/filesystem/ (4 files):
01:14 dalek Rosella: Mark FileSystem.Visitor tests as unimplemented
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/54404eb197
01:14 dalek Rosella: 2b49deb | Whiteknight++ | src/mockobject/ (3 files):
01:14 dalek Rosella: Update docs for MockObject
01:14 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/2b49deb607
01:14 cotto oh my
01:15 cotto saying whiteknight++ would be redundant, so I won't
01:15 whiteknight cotto: thanks for the restraint
01:17 cotto whiteknight, np
01:17 cotto I can avoid saying whiteknight++ with the best of them.
01:19 soh_cah_toa if i have a function in src/foo.c that i wanna call from src/runcore/cores.c, how do i do that? don't i need to change the rule for src/runcore/cores.o in the Makefile?
01:20 soh_cah_toa b/c i'm looking at it now and it doesn't have src/debug.c as a dependency yet runops_debugger_core() does use function defined in src/debug.c
01:20 cotto soh_cah_toa, the makefile rules only say what needs to be build in what order
01:20 cotto runops_debugger_core is called as a function pointer of the runcore struct, not directly
01:22 soh_cah_toa well, i meant that runops_debugger_core() uses functions defined in src/debug.c but i don't see a recipe in the Makefile like gcc -o cores.o cores.c debug.c
01:22 soh_cah_toa which is what i thought is what's needed
01:22 cotto it all gets linked into libparrot
01:23 soh_cah_toa so if i have something i wanna call from src/runcore/cores.c that's in src/hbdb.c, what do i do? i don't know where to add src/hbdb.c in the Makefile
01:24 cotto let me look at your branch
01:24 soh_cah_toa sure
01:25 cotto I think the solution is to make sure that src/hbdb.o gets linked into libparrot.  let me verify
01:25 cotto soh_cah_toa, what's the function?
01:26 cotto I don't see a src/hbdb.c
01:26 soh_cah_toa test() in src/hbdb.c. i'm just trying to get the behavior down first before i bug you about what really needs to be in that funciton. try looking again b/c i just pushed a few seconds ago
01:27 cotto is it checked in?
01:27 cotto ah
01:29 cotto that does it.  add src/hbdb$(O) to INTERP_O_FILES in config/gen/makefiles/root.in
01:30 soh_cah_toa ok. do i need a rules for it too or will it use an implicit one?
01:30 cotto the implicit rule will be fine unless you're doing something funky
01:30 cotto so far you're not
01:30 soh_cah_toa alright
01:37 soh_cah_toa wow, i'm getting a really strange error:
01:38 soh_cah_toa /usr/lib/gcc/i686-redhat-li​nux/4.4.5/../../../crt1.o: In function `_start':
01:38 soh_cah_toa (.text+0x18): undefined reference to `main'
01:41 whiteknight ...lolwat?
01:41 cotto "test" is probably a bad function name to use.
01:42 whiteknight actually, I'll have to backscroll. it's time for bed now
01:42 whiteknight goodnight
01:42 cotto try something more uniquer
01:42 whiteknight left #parrot
01:42 cotto whiteknight, 'night
01:42 soh_cah_toa i changed it to hbdb_test() for that reason
01:45 cotto nice error
01:45 cotto how did you get that?
01:45 soh_cah_toa 'make hbdb'
01:46 cotto I can get it too.  What a great party.
01:46 soh_cah_toa wonderful
01:47 soh_cah_toa does it matter that i added src/hbdb.c after the #IF(i386_has_gcc_cmpxchg)? i don't know if that's just a commented out "if" or some make directive i've never heard of but anything after it looks like it's commented. i just added src/hbdb.c to the line above src/debug.c figuring if src/debug.c was there, then it was an ok place to add it. am i wrong maybe?
01:47 cotto src/hbdb$(0) \
01:47 soh_cah_toa yeah, that's what i meant
01:48 cotto look closely at that
01:48 soh_cah_toa i know, multiline
01:48 cotto nope
01:48 cotto 0 != O
01:48 soh_cah_toa agh
01:48 soh_cah_toa wtf? why'd i do that?
01:48 cotto soh_cah_toa, easy.  to get an awesome error message
01:50 soh_cah_toa we have compilation. wow, that's such a minor difference 0/O i'm surprised you caught that
01:50 cotto soh_cah_toa, that's fine.  The #IF() only has an effect on that line in root.in
01:50 soh_cah_toa oh, is that a thing for the configure script like @ld_out@ is?
01:50 cotto soh_cah_toa, it helps to have a good font.  If you don't have one that makes 0 different from O, I recommend finding one.
01:51 cotto inconsolata is my personal favorite
01:51 soh_cah_toa i don't think i change change the font in vim though
01:51 soh_cah_toa *can change
01:51 cotto soh_cah_toa, if it's gvim you can.  If it's on the cli, you can change the font that your terminal emulator uses.
01:52 soh_cah_toa i'd like to use gvim but for some reason the key mappings i have only work in the cli version
01:53 soh_cah_toa it's weird, i gotta research it
01:53 soh_cah_toa anyway, what's the INTERP_O_FILES for? why did that fix it?
01:53 cotto That's one of a list of object files that get built into libparrot
01:54 cotto there are other *_O_FILES variables for different subsystems
01:55 soh_cah_toa does that mean i can call any function in src/* files from any other src/* file so long as they're included in the INTERP_O_FILES variable?
01:55 cotto any non-static function, yes
01:55 soh_cah_toa right
01:56 cotto it's a good idea to add headerizer directives and a header file when you add a new file.  You can find the right magic by looking at existing C files and headers.
01:57 soh_cah_toa oh right, that's what i wanted to ask about...headerizer
01:57 davidfetter joined #parrot
01:57 cotto what about it?
01:58 soh_cah_toa well, if i run 'make headerizer' it will scan all c files?
01:58 soh_cah_toa or do i have to specify which file to "headerize"?
01:59 soh_cah_toa pretty much what i want to know is...if i run headerizer, where will the declarations for the functions defined in src/hbdb.c go?
01:59 soh_cah_toa non-static ones, that is
01:59 cotto you can specify which one to scan by passing the .o file to headerizer (yes, it's odd) or you can run make headerizer and it'll rebuild everything.
01:59 cotto you have to add some headerizer comments to hbdb.c and to a new hbdb.h file in include/parrot
02:00 cotto src/pmc.c is a good example
02:00 cotto look for something like /* HEADERIZER HFILE: include/parrot/pmc.h */
02:00 soh_cah_toa oh ok. i thought those were auto-generated by headerizer
02:01 cotto nope.  Those are added by hand so that headerizer knows where to put its generated declarations
02:05 soh_cah_toa oh and another thing, not terribly important but i've always wondered...in the declarations generated by headerizer i see things like __attribute__nonnull__(1). however, i thought attributes where of the form: __attribute__((nonnull (1))). are these not gnu function attributes then?
02:06 cotto those get macroized into something platform-appropriate
02:07 soh_cah_toa so they're not the gnu attributes i'm thinking of?
02:09 cotto include/parrot/compiler.h makes them dtrt
02:10 soh_cah_toa ok
02:13 soh_cah_toa btw, remember the other i asked you if there was an easier way besides 'git grep' to find function definitions/declarations? well, have you ever used ctags?
02:13 soh_cah_toa *the other day
02:14 cotto soh_cah_toa, I played with it a bit
02:14 soh_cah_toa it's incredible. life changing. especially w/ the taglist.vim plugin
02:15 soh_cah_toa though you're a parrot master so you probably already know the location of...everything :)
02:15 cotto I can guess well.
02:18 kid51 left #parrot
02:19 cotto btw, you can do make tags-vi
02:19 theory joined #parrot
02:21 soh_cah_toa you mean the ex commands? like :ta?
02:22 cotto I don't know.  It sounded like it might be relevant.
02:22 bubaflub incoming
02:22 dalek parrot-gmp: 6648faa | bubaflub++ | gmph2ncidef.pl:
02:22 dalek parrot-gmp: formatting fixes
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/6648faaa85
02:22 dalek parrot-gmp: ea7f82b | bubaflub++ | gmph2ncidef.pl:
02:22 dalek parrot-gmp: wrap that bad boy in a function
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/ea7f82b828
02:22 dalek parrot-gmp: dd02c80 | bubaflub++ | src/GMP/template.nci:
02:22 dalek parrot-gmp: blank template for NCI output
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/dd02c8042c
02:22 dalek parrot-gmp: 7404bc1 | bubaflub++ | gmph2ncidef.pl:
02:22 dalek parrot-gmp: these really should be 'i' types
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/7404bc181b
02:22 dalek parrot-gmp: 1ca2124 | bubaflub++ | gmph2ncidef.pl:
02:22 dalek parrot-gmp: use a hash ref instead of a hash
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/1ca2124b79
02:22 dalek parrot-gmp: defed52 | bubaflub++ | gmph2ncidef.pl:
02:22 dalek parrot-gmp: print function
02:22 dalek parrot-gmp:
02:22 dalek parrot-gmp: this function will print out the functions in a format
02:22 dalek parrot-gmp: appropriate for ncidef2.pl
02:22 dalek parrot-gmp:
02:22 dalek parrot-gmp: this should be appended (>>) into the template file
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/defed52f11
02:22 dalek parrot-gmp: 1ff96c3 | bubaflub++ | src/GMP/raw.nci:
02:22 dalek parrot-gmp: NCI signatures for GMPz functions
02:22 dalek parrot-gmp:
02:22 dalek parrot-gmp: this is the ncidef2pir input file generated from gmph2ncidef.pl
02:22 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/1ff96c333b
02:22 dalek parrot-gmp: 0581b30 | bubaflub++ | src/def.pir:
02:22 dalek parrot-gmp: usable PIR NCI file
02:22 dalek parrot-gmp:
02:22 dalek parrot-gmp: this is the first output for the GMPz functions from
02:22 dalek parrot-gmp: the ncidef2pir.pl script
02:23 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/0581b30fe3
02:30 soh_cah_toa oh great! i just realized that now if i see a function i wanna use in a .c file, all i need to do to find out which header file to #include is look at the "HEADERIZER HFILE" comment. nice. though a one-to-one correlation would be nice. i ain't complaining though. this makes me happy now
02:30 cotto I'm happy when you're happy.
02:32 Kulag left #parrot
02:37 soh_cah_toa alright, now that i understand runops_*_core a little better, i see that i can call a function from there that checks if there a breakpoint that should be acknowledged. i can put that code in src/hbdb.c and call it from runops_hbdb_core(). that means i'm getting closer.
02:37 soh_cah_toa but i'm still a little stumped. i know that process must go: prompt, store line #, execute code, if entered line # == current line #, stop, back to prompt. one of the things i don't know is how do i check the line number?
02:39 Kulag joined #parrot
02:45 cotto that's tricky because imcc often produces inaccurate line numbers
02:45 Kulag left #parrot
02:46 cotto I suspect that src/runcore/profiling.c solves a few of the problems you'll run into.
02:46 Drossel joined #parrot
02:48 soh_cah_toa long ago, whiteknight recommended that i use packfile line annotations. is that not the best way then? are annotations encoded into the opcode? i mean, i only dealing w/ the opcode that pc points to so is there something like pc->line?
02:50 cotto packfile annotations are used with hll code.  If you want to debug pir, you'll need to get your information the same way the profiling runcore does.
02:50 cotto hbdb should eventually support both
02:50 soh_cah_toa i do want hll support though
02:50 soh_cah_toa yeah
02:52 Drossel left #parrot
02:58 soh_cah_toa agh, i need to use Parrot_Context. i still haven't gotten my head rapped around those yet... :\
02:58 benabik 'good even
02:59 cotto dukeleto, ping
02:59 cotto hio benabik
03:00 benabik cotto: Been away for the weekend.  Did I miss anything interesting/
03:00 cotto benabik, me too
03:00 benabik cotto: Oh, well then at least we can be confused together.
03:01 cotto benabik, I'm always good at that.
03:01 cotto or at least when I'm not I can't figure out why, so it sorts itself out
03:02 Kulag joined #parrot
03:03 dalek website: bubaflub++ | Parrot-GMP: Step #1 complete
03:03 dalek website: http://www.parrot.org/conten​t/parrot-gmp-step-1-complete
03:07 Kulag left #parrot
03:14 Kulag joined #parrot
03:15 soh_cah_toa could somebody try and clarify what a "context" is? i'm looking at the perldoc for get_line_num_from_cache() in src/runcore/profiling.c and it says that it returns the "line number for the current context."
03:15 soh_cah_toa from what i've been reading about continuations and coroutines, i'm guessing that a "context" refers to the current coninuation? the current state of the program? am i close?
03:20 cotto That refers to the CallContext PMC.
03:20 cotto interp->ctx
03:21 soh_cah_toa right, but then still...what's a context?
03:24 cotto it keeps track of interesting bits of state from a sub call
03:26 soh_cah_toa ok, that's kinda what i though. but isn't that what a continuation is? i was wondering if maybe a "context" was a special kind of continuation
03:28 cotto a Continuation PMC has a pointer to a CallSignature
03:29 dalek parrot-gmp: c60d017 | bubaflub++ | TODO.md:
03:29 dalek parrot-gmp: another one bites the dust
03:29 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/c60d0174a2
03:29 dalek parrot-gmp: fa8a1ff | bubaflub++ | src/GMP.winxed:
03:29 dalek parrot-gmp: first shot at a Winxed class - mostly empty for now
03:29 dalek parrot-gmp: review: https://github.com/bubaflub/​parrot-gmp/commit/fa8a1ff35b
03:30 bubaflub left #parrot
03:31 soh_cah_toa i'll just worry about it later. but if a context contains state information about a function, how can the profiling core use it to get the line #? to me, those two things are completely unrelated. how is a line # associated w/ a subroutine's state?
03:32 cotto you can get the line number from the pc
03:33 soh_cah_toa yeah, i think i just found it: Parrot_sub_get_line_from_pc()
03:34 cotto that's the one
03:34 soh_cah_toa i'll work w/ it for know but that's the pir line #, i don't know how i'll be able to use that for hll line #'s
03:34 soh_cah_toa *now
03:37 cotto no.  for that you'll have to dig into annotations and hope that the hll provides them
03:39 soh_cah_toa well, at what point in my work do i start concerning myself w/ hll support?
03:39 cotto dukeleto, ping
03:39 cotto soh_cah_toa, I'd worry about getting PIR support first.
03:39 cotto it's more fundamental and probably easier to test
03:40 soh_cah_toa right, i just wanna make sure that i don't end up throwing away a bunch of stuff in the future
03:41 cotto soh_cah_toa, even if you do, you'll have learned a lot just from writing it.
03:41 cotto (and I don't think you will)
03:41 soh_cah_toa i suppose you're right
03:42 cotto I love the idea of writing the first implementation of something with the intent of throwing it away.
03:43 soh_cah_toa right, b/c i'm the one writing it ;)
03:43 cotto you know how to do it correctly the second time, or at least you have a better idea
03:43 soh_cah_toa true
03:44 cotto github's getting close to 1000000 gists.
03:44 cotto I wonder who the lucky nerd will be.
03:54 soh_cah_toa btw, at what point should i begin writing some tests? once i'm actually able to set breakpoints? that's the first piece of functionality i'll have so that seems like the first place to start. am i right?
03:55 cotto soh_cah_toa, yesterday
03:55 cotto I really like writing tests before I write functionality.
03:55 soh_cah_toa oh yeah
03:55 cotto If you can't time-travel, today is good too.
03:57 gbacon left #parrot
04:07 davidfetter left #parrot
04:23 cotto incoming?
04:23 dalek parrot/m0-spec: ee1d81a | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: "contexts" are now known as "call frames"
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/ee1d81a492
04:23 dalek parrot/m0-spec: 0883e9d | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: promote alloc/free to permanent ops, add gc_alloc, add note about ffi
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/0883e9dddb
04:23 dalek parrot/m0-spec: 30476c1 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: the variables table is now the constants table, plus lots of related changes
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/30476c1eba
04:23 dalek parrot/m0-spec: ccdaec4 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: add a section on register spilling
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/ccdaec4fcf
04:23 dalek parrot/m0-spec: ce6e783 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: minor consistency changes
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/ce6e783ab5
04:23 dalek parrot/m0-spec: 2579f57 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:23 dalek parrot/m0-spec: add set_imm and deref, various cleanups
04:23 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/2579f57678
04:25 soh_cah_toa call frames is much nicer. makes me think of stack frames which is what i've been relating contexts to
04:28 cotto except there's no stack
04:28 cotto I'm glad it's easier to understand.  That was the goal.
04:36 dukeleto cotto: pong
04:38 dalek parrot/m0-spec: af0180b | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:38 dalek parrot/m0-spec: add numbers to the new op set
04:38 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/af0180b645
04:38 dalek parrot/m0-spec: 5f21f46 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
04:38 dalek parrot/m0-spec: The disclaimer that this section is no longer current is no longer current.
04:38 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/5f21f46f99
04:39 benabik left #parrot
04:40 Kulag left #parrot
04:40 cotto dukeleto, I think that I can get M0 to do everything we want by changing a couple ops.  Can you take a look at https://gist.github.com/999825 and tell me if it looks workable?
04:42 cotto I'd like to run the idea by someone before I start updating all our example M0 code.
04:47 soh_cah_toa left #parrot
04:48 kuku joined #parrot
04:48 kuku is now known as birdwindupbird
04:52 dalek parrot: 00bdcb5 | petdance++ | src/hash.c:
04:52 dalek parrot: const a pointer
04:52 dalek parrot: review: https://github.com/parrot/parrot/commit/00bdcb5c2f
04:54 dukeleto cotto: what is SPILLCF?
04:54 baest joined #parrot
04:55 dukeleto cotto: why are these new ops needed?
04:55 cotto dukeleto, SPILLCF is the overflow call frame for register spilling
04:55 cotto dukeleto, the new ops are needed because they do necessary things that the previous ops couldn't
04:56 cotto namely the examples in the gist
05:00 dukeleto cotto: i am reading the recent changes to the m0 spec and understanding more
05:02 dukeleto cotto: i see you you removed EX
05:02 cotto dukeleto, yup.  That came up at yapc::or
05:03 hudnix left #parrot
05:04 dukeleto cotto: where does that data live? inside the call frame?
05:05 cotto which data?
05:05 cotto dukeleto, SPILLCF is a pointer to the overflow call frame.  Is that what you meant?
05:05 dukeleto cotto: what used to be in EX
05:06 dukeleto cotto: also, i am on board. the new ops seem necessary
05:07 cotto dukeleto, it was the currently active exception.
05:07 cotto it'll get passed around as an argument and doesn't need a dedicated register
05:11 dukeleto cotto: wfm
05:28 dalek parrot/m0-spec: 819c3bc | cotto++ | docs/pdds/draft/pdd32_m0.pod:
05:28 dalek parrot/m0-spec: rename CONST to CONSTS
05:28 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/819c3bcb4a
05:30 theory left #parrot
05:41 dalek parrot/m0-prototype: bffc1ff | cotto++ | / (8 files):
05:41 dalek parrot/m0-prototype: move the m0 interp and assembler to a language-specific dir under src/m0
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/bffc1ff2c8
05:41 dalek parrot/m0-prototype: fa293b4 | cotto++ | .gitignore:
05:41 dalek parrot/m0-prototype: update .gitignore with .m0b files
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/fa293b4215
05:41 dalek parrot/m0-prototype: c118e24 | cotto++ | src/m0/perl5/m0_assembler.pl:
05:41 dalek parrot/m0-prototype: update the M0 assembler with recent changes to the spec
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/c118e24ce1
05:41 dalek parrot/m0-prototype: e1c3035 | cotto++ | src/m0/perl5/m0_assembler.pl:
05:41 dalek parrot/m0-prototype: update variable names in assembler to refer to the constants table
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/e1c303582b
05:41 dalek parrot/m0-prototype: 579e3b2 | cotto++ | src/m0/perl5/m0_interp.pl:
05:41 dalek parrot/m0-prototype: update m0 interp code to be less inconsistent with recent spec changes
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/579e3b20e6
05:41 dalek parrot/m0-prototype: dbf8970 | cotto++ | src/m0/perl5/m0_assembler.pl:
05:41 dalek parrot/m0-prototype: update name of CONST register to CONSTS
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/dbf8970164
05:41 dalek parrot/m0-prototype: ca60461 | cotto++ | src/m0/perl5/m0_interp.pl:
05:41 dalek parrot/m0-prototype: add stub implementations of new ops, various minor fixes
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/ca60461826
05:41 dalek parrot/m0-prototype: 0eea614 | cotto++ | src/m0/perl5/m0_interp.pl:
05:41 dalek parrot/m0-prototype: implement all the ops I trust myself to implement
05:41 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/0eea614962
05:44 dukeleto http://leto.net/perl/2011/05/what-is-m0.html
05:46 woosley joined #parrot
05:47 cotto Part of me wishes set_var didn't get removed, since every .m0 file we have uses it.
05:48 cotto dukeleto, "There will be a Parrot hackathon at YAPC::NA 2 this year,"
05:48 cotto dukeleto, what's the 2?
05:48 dalek parrot/m0-prototype: 8b5dfb4 | cotto++ | t/m0/ (12 files):
05:48 dalek parrot/m0-prototype: update all test files to use ".constants" instead of ".variables"
05:48 dalek parrot/m0-prototype:
05:48 dalek parrot/m0-prototype: many are still broken because they use set_op, which went away
05:48 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/8b5dfb4b41
05:49 cotto dukeleto, you're welcome to fill out the m0 spec on exceptions and exception handlers.
05:50 cotto I didn't meet my goal of banging out M0 fib, but it's still been a good day.
05:53 cotto dukeleto, we also need a return PC register if you have the tuits.  I'm off to bed rsn.
06:00 cotto time for sleep
06:00 cotto 'night
06:02 tadzik good night cotto
06:02 tadzik and good morning #parrot
06:02 tadzik dukeleto: excellent blag toast
06:12 dukeleto tadzik: thanks!
06:14 tadzik insightful
06:14 tadzik I'm looking forward to spying the code of the C tools
06:23 dalek nqp: 5658834 | pmichaud++ | tools/ (3 files):
06:23 dalek nqp: First version of tools/build/gen_parrot.pl and NQP::Config library.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/5658834893
06:23 dalek nqp: c5c081b | pmichaud++ | .gitignore:
06:23 dalek nqp: Update .gitignore for new install location, config.status.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/c5c081becc
06:23 dalek nqp: f412826 | pmichaud++ | / (2 files):
06:23 dalek nqp: Move Makefile.in to tools/build.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/f41282600a
06:23 dalek nqp: 290d603 | pmichaud++ | / (7 files):
06:23 dalek nqp: Refactor build/gen_how_pm.pl and build/gen_setting.pl into tools/build/gen-cat.pl.  Update to shiny new Configure.pl.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/290d603e9c
06:23 dalek nqp: ac7720e | pmichaud++ | build/ (6 files):
06:23 dalek nqp: Remove outdated build tools and directory.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/ac7720e5ec
06:23 dalek nqp: 7e4531a | pmichaud++ | Configure.pl:
06:23 dalek nqp: Restore checks for files needed to build NQP.
06:23 dalek nqp: review: https://github.com/perl6/nqp/commit/7e4531ac19
06:23 dalek nqp: 6e0ebf3 | pmichaud++ | STATUS:
06:24 dalek nqp: Remove way outdated STATUS file.
06:24 dalek nqp: review: https://github.com/perl6/nqp/commit/6e0ebf3dcb
06:24 dalek nqp: ba0fe9d | pmichaud++ | docs/6model/ (2 files):
06:24 dalek nqp: Merge branch 'master' of github.com:perl6/nqp
06:24 dalek nqp: review: https://github.com/perl6/nqp/commit/ba0fe9d4e8
06:24 he_ joined #parrot
06:36 fperrad joined #parrot
06:38 plobsing left #parrot
06:38 SHODAN joined #parrot
07:16 mj41 joined #parrot
07:42 lucian joined #parrot
07:44 lucian_ joined #parrot
07:47 lucian_ 'morning
07:49 lucian left #parrot
07:50 moritz good morning lucian_. How is GSoC going?
07:51 lucian_ moritz: alright, i guess
07:54 elmex joined #parrot
07:55 lucian_ moritz: i have a compiler that can add numbers and an incomplete object system
07:56 moritz lucian_: that's a start... is that written in python and emitting PIR?
07:56 lucian_ and i'm starting to hate the things people have been hating around here for a while (PIR, imcc, Object/Class)
07:56 lucian_ moritz: yes, the compile is PIR. object system is winxed
07:56 moritz cool
07:56 lucian_ you can have a look at it on either bitbucket or github, lucian1900/puffin
08:01 lucian__ joined #parrot
08:03 wagle left #parrot
08:05 wagle joined #parrot
08:05 lucian_ left #parrot
08:16 lucian_ joined #parrot
08:19 lucian joined #parrot
08:20 lucian__ left #parrot
08:23 lucian_ left #parrot
08:29 ligne left #parrot
08:35 lucian left #parrot
08:38 dalek nqp: af48f8f | pmichaud++ | src/HLL/Compiler.pm:
08:38 dalek nqp: Switch local %config hash to be a package-scoped %parrot_config shared by all HLL::Compilers.
08:38 dalek nqp: review: https://github.com/perl6/nqp/commit/af48f8fcf9
08:38 dalek nqp: 8dd1944 | pmichaud++ | src/HLL/Compiler.pm:
08:38 dalek nqp: Add per-compiler configuration hash, --show-config option.
08:38 dalek nqp: review: https://github.com/perl6/nqp/commit/8dd19444c2
08:38 dalek nqp: 3599a33 | pmichaud++ | / (4 files):
08:38 dalek nqp: Tools to add version configuration information (based on git-describe)
08:38 dalek nqp: to HLL::Compiler objects.
08:38 dalek nqp: review: https://github.com/perl6/nqp/commit/3599a33461
08:38 dalek nqp: bc9df6c | pmichaud++ | src/HLL/Compiler.pm:
08:38 dalek nqp: Move HLL::Compiler version string out of BUILD and into version() method.  Eliminate $!version attribute.
08:38 dalek nqp: review: https://github.com/perl6/nqp/commit/bc9df6c1b3
08:42 lucian joined #parrot
08:44 lucian i'm trying to figure out if winxed has a for-each statement
08:47 lucian ah, for(var i in iterable) works, as in js
08:51 dalek nqp: ed47aba | pmichaud++ | Configure.pl:
08:51 dalek nqp: Fix output when Configure.pl invoked with no options and parrot_config
08:51 dalek nqp: isn't located.  moritz++
08:51 dalek nqp: review: https://github.com/perl6/nqp/commit/ed47abab00
08:54 lucian_ joined #parrot
08:59 lucian left #parrot
09:25 lucian_ is now known as lucian
09:25 lucian allison: ping
09:27 allison lucian: pong
09:28 lucian allison: if you have time, i'd like a second opinion on puffin's object system
09:28 allison lucian: I was just checking in quickly before falling asleep, drop me an email with the details and I'll look at it in the morning?
09:29 allison lucian: (have to be up for meetings again in 4 hours)
09:29 lucian allison: ah, sure. sleep well
09:29 allison lucian: have a good day :)
09:31 cotto left #parrot
09:37 cotto joined #parrot
09:42 woosley left #parrot
10:01 birdwindupbird left #parrot
10:06 lucian_ joined #parrot
10:08 Kulag joined #parrot
10:10 lucian left #parrot
10:13 Kulag left #parrot
10:13 contingencyplan left #parrot
10:32 lucian_ is now known as lucian
10:32 * lucian <3 hg-git
10:34 Kulag joined #parrot
10:37 lucian_ joined #parrot
10:41 lucian left #parrot
10:42 lucian_ is now known as lucian
10:42 lucian how should i reference/include other files in winxed?
10:54 lucian_ joined #parrot
10:57 lucian__ joined #parrot
10:58 ambs joined #parrot
10:59 lucian left #parrot
11:02 lucian_ left #parrot
11:03 lucian_ joined #parrot
11:06 lucian__ left #parrot
11:07 cotto left #parrot
11:11 ligne joined #parrot
11:11 cotto joined #parrot
11:49 Kulag left #parrot
12:05 whiteknight joined #parrot
12:16 whiteknight good morning, #parrot
12:18 lucian_ is now known as lucian
12:18 lucian whiteknight: 'morning
12:22 whiteknight good morning, lucian. how's the hacking going?
12:22 lucian whiteknight: pretty well, i've pretty much boostrapped python's object msyste
12:23 lucian it's a slight approximation so far, since it has no metaclasses
12:23 lucian but otherwise, it's just correct, just incomplete
12:23 whiteknight wow. That still seems to be going rather quickly
12:23 * lucian shrugs
12:23 lucian python's object system is exceedingly simple
12:23 whiteknight "the great and mighty lucian always works this fast!"
12:24 lucian it is true that i had 2-3 days to just work on this
12:24 whiteknight still, it's not trivial to get such a fundamental piece working well enough to support the rest of your project
12:24 lucian i'll lay off later today to study for my last exam (tomorrow)
12:24 lucian it's a little mindbending, but once you get over it it's obvious
12:24 lucian also, i'm mostly ignoring parrot's object system
12:25 whiteknight I recommend you do two things: 1) think hard about a friendly interface, so later when 6model or another shiney object model infrastructure rolls around, you can reimplement without untangling a lot of garbage
12:25 whiteknight and 2) Test the crap out of it
12:25 lucian for 1), python's interface to it is pretty clear, which is why this is so easy in the first place
12:25 lucian for 2), i need tuples for proper function calls first, then tests
12:26 whiteknight because when you do go to optimize or reimplement, you're sure as hell going to want to have a lot of tests around to make sure that works
12:26 lucian yes
12:26 lucian although it pains me a little to have to do the tests in winxed
12:26 whiteknight Okay, but I would be hesitant to go too long without testability.
12:26 lucian i'd prefer to do then from python
12:26 lucian well, i have some tests for the basics
12:26 whiteknight right, but if you don't get to that point for a few weeks, you end up in very shakey territory
12:26 lucian just a handful
12:26 whiteknight ok
12:26 whiteknight any tests are better than none
12:27 lucian i guess i'll give rosella's test a try
12:27 lucian testing the object system separately from the compiler is a good idea, i just slightly dread it
12:27 whiteknight yeah, I know what you mean
12:27 lucian btw, i've put it in github as well
12:27 mtk joined #parrot
12:28 whiteknight yes, I saw that last night. Thanks
12:28 whiteknight Like I said, I wouldn't be against an exception, but not having to make the exception is always the easiest
12:29 lucian with hg-git it's really easy, when i do 'hg push' it pushes to both bitbucket and github
12:29 whiteknight that is convenient
12:31 lucian if you're curious, my functional test is objects.winxed:main
12:35 hudnix joined #parrot
12:38 lucian_ joined #parrot
12:39 lucian_ left #parrot
12:40 lucian_ joined #parrot
12:41 lucian_ whiteknight: how can i get the length of an array in winxed?
12:42 whiteknight elements(array)
12:42 lucian left #parrot
12:42 whiteknight or, if you like inline pir, ${ elements cnt, array }
12:42 lucian_ i'd used inline pir, but i prefer expressions
12:43 whiteknight everybody prefers expressions
12:43 whiteknight NotFound had to add in inline PIR for a variety of reasons, but he purposefully made it a little bit less friendly to disuade people from using it too much
12:43 whiteknight There is a pretty big list of built-in functions which are basically just wrappers around PIR ops
12:44 whiteknight if you search around the winxedst1.winxed file for "Predef" you'll stumble on them eventually
12:44 lucian_ whiteknight: ah, i asee. thanks
12:44 bubaflub joined #parrot
12:50 jnthn__ lucian_: I checked in some more 6model docs last night, but I'm going to add a couple more tonight/tomorrow that actually are walk throughs of doing a class based object system and a prototype object system.
12:50 jnthn__ whiteknight: ^^ also :)
12:50 lucian_ jnthn__: thanks, i'll have a look
12:50 whiteknight jnthn__++
12:50 whiteknight jnthn__: where at, perl6/nqp/?
12:50 jnthn__ perl6/nqp/docs/6model/
12:50 jnthn__ overview, and then a tiny FAQ. Feel free to commit/suggest more Qs. :)
12:51 whiteknight awesome
12:51 jnthn__ Overview has an initial tiny example.
12:51 jnthn__ I'll do two "fuller" ones.
12:51 jnthn__ Gradually I want to build up something maybe cookbook style
12:52 jnthn__ Recepies for certain language features.
12:52 jnthn__ er, certain OO language features...though that said, a similar thing for the compiler toolkit stuff in general could be good also :)
12:59 lucian_ jnthn__: cool, 6model is much less confusing now
13:00 lucian_ i have a question: is it straightforward to expose the implementation to the language?
13:00 lucian_ in python, you can access obj.__class__, obj.__bases__ and even obj.__dict__ (which is the hash backing all attributes)
13:00 lucian_ and all of this at app-level
13:01 JimmyZ joined #parrot
13:01 jnthn__ Yes. NQP does that sort of stuff in its meta-objects too.
13:02 JimmyZ_ joined #parrot
13:02 lucian_ nice
13:02 jnthn__ Circularity issues can get evil, that's all.
13:02 * whiteknight wants 6model in parrot really really really really badly
13:02 jnthn__ :)
13:03 lucian_ jnthn__: i think it's not that evil, you can special-case your attribute getters/setters
13:03 whiteknight The ability to specify the representation in a parrot language, and have those details exposed at runtime without extra bullshit is so amazingly important
13:03 * lucian_ nods
13:03 lucian_ jnthn__: so one would write the meta-object in nqp, primarily
13:03 jnthn__ lucian_: Yes, true.
13:03 lucian_ ok
13:04 jnthn__ lucian_: It's not too bad, it can just get a bit loopy in places.
13:04 lucian_ jnthn__: i've never used it, so i guess i'll see
13:04 jnthn__ lucian_: Well, Perl 6 is probably nastier than most languages on these kinds of issues.
13:05 lucian_ really? how so?
13:05 jnthn__ Things like, inheritance relies on multi-dispatch (for traits) which in turn relies on inheritance...
13:06 atrodo Turtles all the way down
13:06 jnthn__ There's quite a few little circularities like that.
13:06 lucian_ jnthn__: i'm not sure perl6 is special in that regard
13:06 jnthn__ lucian_: Maybe not. :)
13:06 PerlJam atrodo: but are any of them snapping turtles?
13:06 jnthn__ It's just the one I've got my head full of at the moment :)
13:06 lucian_ yeah, sure
13:07 atrodo PerlJam> Probably
13:07 * PerlJam reads jnthn's docs
13:07 JimmyZ left #parrot
13:07 JimmyZ_ is now known as JimmyZ
13:07 lucian_ for example, in python obj.__class__ is an attribute on an object, which is resolved with obj.__getattribute__, which is found with obj.__dict__['__getattribute__']
13:08 whiteknight fun fun, silly-willy
13:08 lucian_ jnthn__: yeah, 6model is very similar to what i've been doing
13:08 whiteknight so  obj.__dict__['__getattribute__']['__class__']
13:08 whiteknight ?
13:08 lucian_ whiteknight: technically, yes
13:09 whiteknight that looks less than efficient
13:09 whiteknight hence the need for very good JIT
13:09 jnthn__ JIT will only help so much here
13:10 lucian_ whiteknight: and a call is obj.__dict__['__getattribute__']('func_name'​).__dict__['__getattribute__']('__call__')()
13:10 lucian_ but it's not so bad in reality, it gets short-cirtuited earlier
13:10 lucian_ and __class__, __call__ etc are special-cased
13:10 jnthn__ (short-circuited) yeah, there's some mechanisms in 6model for that (the method cache, for example)
13:11 lucian_ is there an attribute location cache?
13:11 jnthn__ Not any kind of generic one - it's too REPR-specific.
13:11 lucian_ right
13:11 lucian_ so instead of nqp objects, i use winxed (parrot) objects
13:12 lucian_ python types are parrot class instances
13:12 lucian_ very similar to 6model indeed
13:12 lucian_ apparently the terminology had confused me a lot earlier
13:12 jnthn__ Yeah, apart from 6model hasn't really got a class equivalent.
13:12 jnthn__ meta-objects are just objects
13:12 * lucian_ nods
13:13 lucian_ oh well, it appears i've already re-invented a wheel
13:14 whiteknight I would love to do some 6model-related stuff in Winxed, maybe with Rosella. Some of the sublibraries I think would be particularly well suited to its benefits
13:14 lucian_ whiteknight: just write a better object model for winxed :)
13:14 whiteknight my proxy library for instance is an evil kludge, but with a custom REPR it could be quite nice
13:15 mikehh left #parrot
13:20 bluescreen joined #parrot
13:20 * lucian_ is building nqp
13:20 lucian_ is now known as lucian
13:24 lucian oh, nqp's building a regex engine?
13:24 whiteknight nqp has something of a regex engine already
13:24 whiteknight that's the big grammar portion of it
13:24 moritz it's good enough to parse itself :-)
13:24 tadzik real languages parse themselves!
13:25 moritz and the actual engine is pretty much language agnostic
13:25 lucian hmm. i guess i, too, really want to 6model into parrot
13:25 moritz you can compile python regexes to PAST::Regex nodes (or whatever they are called)
13:25 lucian since i'm not using PCT, this is slow for no good reason
13:25 lucian moritz: why?
13:25 lucian i don't see the connection between regexes and parsing
13:25 moritz lucian: why not? :-)
13:25 whiteknight does python use pcre?
13:25 moritz ah
13:25 lucian whiteknight: no
13:26 moritz lucian: nqp parses itself with Perl 6 regexes + grammars
13:26 lucian moritz: so it lexes with regexes, then parses with grammar?
13:26 moritz lucian: grammars are really just classes where the methods are regexes
13:26 moritz lucian: so the distinction between lexing and parsing blurs
13:27 moritz lucian: https://github.com/perl6/nqp/b​lob/master/src/NQP/Grammar.pm
13:27 lucian that looks scary
13:27 moritz only the stuff at the top
13:28 lucian hmm, odd
13:28 lucian those regexes don't appear to be regular, but i may be mistaken
13:28 moritz note that part of the parsinig is delegated to an operate precedence parser, which is set up around lines 606..714
13:29 jnthn__ They're not regular. :)
13:29 jnthn__ regex is maybe a bad name for them :)
13:29 moritz lucian: that's why we call them "regex", or not "regular expression" or "Chomsky-0" or so :-)
13:29 moritz s/or/ant/
13:29 moritz *and
13:29 moritz argl
13:29 jnthn__ :P
13:29 lucian :)
13:30 lucian regex is a bad name, yes :)
13:30 jnthn__ lucian: I've found it really pleasant to work with Perl 6 grammars, fwiw.
13:30 jnthn__ There was a learning curve of course. :)
13:30 moritz it takes some time getting used to, like all powerfull tools
13:30 PerlJam no, regex is a good name.   It give homage to their developmental history
13:30 lucian jnthn__: perhaps my disgust with perl5 is colouring my view of perl6's syntax
13:31 jnthn__ lucian: How far Perl 6 makes things better for you probably depends on what it was about Perl 5 that disgusted you. :-)
13:32 lucian jnthn__: if i read about perl6, it sounds very nice. i find the syntax bonkers, but that's subjective
13:32 lucian jnthn__: what i hate most about perl5 is the ridiculous inconsistency. also the whale guts
13:33 PerlJam jnthn__: is there some reason that nqp's Configure.pl doesn't look for parrot_config is /usr/local/bin or /usr/bin/  ?
13:33 jnthn__ PerlJam: That's true in a sense. I suspect it's the same battle I fight with TDD. People think it's all about testing, when it's actually about much more than that.
13:33 jnthn__ PerlJam: pmichaud just re-did nqp's Configure, so he's probably the person to ask that. :)
13:33 jnthn__ ask *about* that
13:33 PerlJam ah.
13:35 PerlJam jnthn__: re TDD, well the word "test" is first, so it must be the most important concept, right?  ;)
13:35 PerlJam jnthn__: seriously though, I bet if you reformulated the phrasing of the name, people might understand that TDD isn't just about testing.
13:35 PerlJam I don't know what you'd call it though
13:36 lucian invent the word spectest
13:36 mikehh joined #parrot
13:36 moritz "stepwise code iteration backed up by testing"
13:36 moritz but that's not as fancy
13:36 PerlJam moritz: now just make it concise
13:36 moritz and scibubt is hard to pronounce :-)
13:37 jnthn__ Well, some folks figured calling it BDD may help. :-)
13:38 jnthn__ And yes, TDD is very explainable if you go through the name carefully with folks. It just doesn't always lead to people making the right first guess about what it's really about.
13:39 jnthn__ And I like it when names make things obvious. :)
13:39 PerlJam jnthn__: like "regex"  :)
13:40 JimmyZ left #parrot
13:41 lucian is there a vim plugin for nqp?
13:41 PerlJam lucian: just use the perl6 one
13:41 lucian or should i just try to use perl5 syntax
13:41 lucian ah
13:42 PerlJam lucian: btw, what do you find "ridiculously inconsistent" in Perl 5?
13:42 * moritz has lots of examples
13:42 moritz PerlJam: just think of all the things that Perl 6 fixed :-)
13:43 PerlJam moritz: I'm fishing for things Perl 6 may have missed.
13:43 lucian PerlJam: things like arrays
13:43 lucian PerlJam: the way the nest is silly
13:44 lucian PerlJam: and the syntax in general, i varies wildly for no good reason
13:44 * moritz hates the dereferncing syntax
13:44 moritz @{$a->{foo}}
13:44 tadzik push, grep? I may have gotten better in 5.14
13:45 lucian i don't really know perl5 well enough to bash it effectively, but while i respect if for having a vision (unlike php), i think it's just nuts
13:45 moritz last I tried (with 5.14) it didn't throw a syntax error when I omitted the @{ ... }, but didn't autovivify either
13:47 rohit_nsit08 joined #parrot
13:49 Infinoid moritz: I do wish @$$a{foo} worked
13:50 Infinoid Somehow it stuck in my brain in such a way that $$a{foo} seems much more consistent than $a->{foo}, though
13:50 moritz why three sigils?
13:50 moritz @$a{foo} would kinda make sense to me
13:50 moritz but @$$a{foo} not
13:51 SHODAN left #parrot
13:52 Infinoid if %h is a hash, and $s{foo} accesses the field, and $s is a reference to the hash, then $$s{foo} and $h{foo} are interchangeable
13:52 Infinoid So the second one is to dereference the hash ref
13:52 Infinoid The third is to dereference the list ref
13:52 Infinoid oops
13:52 Infinoid meant to say "$h{foo} accesses the field"
13:52 moritz no wonder non-perl people call us crazy :-)
13:53 whiteknight Infinoid: howdy!
13:53 Infinoid It's consistent, it's just picky about what to be consistent with. :P
13:53 Infinoid whiteknight: hai
13:53 * moritz finds p6's $h<foo>.list to be much saner
13:55 Infinoid It does look a lot cleaner
13:55 lucian so that syntax is for a list in a hash?
13:55 moritz for a list in a hash in a scalar
13:56 moritz if you have a hash %h, it's %h<foo>.list
13:57 lucian very odd
13:57 jnthn__ odd? :)
13:58 lucian to me, at least
13:58 jnthn__ The Perl 6 one, or the Perl 5 one? :)
13:58 lucian but i find sigils in general a ba didea
13:58 * jnthn__ finds the Perl 5 one odd :)
13:58 moritz only odd if you expect lists to never flatten
13:58 cotto ~~
13:58 lucian i find both odd, to be honest. perl6 one less so
13:59 jnthn__ sigils are just noun markers. :)
13:59 * jnthn__ was amused to discover that C# "supports" the @ sigil recently :)
14:00 jnthn__ You can use it to disambiguate a keyword from a variable of the same name... :)
14:00 * moritz remembers the discussion
14:00 lucian jnthn__: yes, very bad :)
14:00 lucian doesn't matter, we won't convince each other of anything
14:00 jnthn__ :)
14:00 lucian i'd say that for disambiguation quoting is much better
14:03 whiteknight I think it's better still not to be trying to use reserved words as variable names
14:03 whiteknight in the C# case, anyway
14:04 lucian heh, i finally have ints
14:04 lucian i guess now i can retarget the compiler to use the object model
14:09 PacoLinux joined #parrot
14:10 cotto PHP "supports" @ too.
14:11 cotto It's called the shut up operator and suppresses error messages from a function call.
14:11 cotto such a lovely language
14:11 jnthn__ :@
14:11 cotto jnthn++
14:17 hercynium joined #parrot
14:18 whiteknight it suppresses error messages from built-in functions. I don't think it can be used with user-defined functions
14:19 atrodo Aye, the mark of a great language.  The ability to ignore errors, fatal or otherwise
14:20 whiteknight the first time I saw that operator was in a code example about decoding user input from query strings
14:20 whiteknight I was flabbergasted at the time, because you shouldn't want to be ignoring errors when decoding user input
14:21 Infinoid In an example, no less
14:21 whiteknight I guess since PHP doesn't run on the web and doesn't have to worry about malicious users, it's not so big a deal
14:22 whiteknight oh, wait...
14:22 cotto whiteknight, right.  I realized that after I typed it.
14:22 benabik joined #parrot
14:22 fperrad left #parrot
14:22 arnsholt PHP belongs to the "if it compiles, it's probably right" school of program design, unfortunately >.<
14:22 benabik ~~
14:27 whiteknight good morning, benabik
14:27 benabik whiteknight!  What's happening?
14:28 rohit_nsit08 left #parrot
14:28 whiteknight benabik: nothing really, not so early in the morning
14:29 benabik whiteknight: Just recovering from the holiday weekend?
14:29 lucian left #parrot
14:29 dalek parrot/m0-spec: fb75076 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
14:29 dalek parrot/m0-spec: add exceptions and handlers
14:29 dalek parrot/m0-spec:
14:29 dalek parrot/m0-spec: This section is probably a bit raw and will need a couple sets of
14:29 dalek parrot/m0-spec: eyeballs before it should be considered final.  What's there now is
14:29 dalek parrot/m0-spec: essentially what was talked about on Saturday without a lot of
14:29 dalek parrot/m0-spec: explanation.
14:29 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/fb7507603b
14:30 cotto whiteknight, do you mind eyeballing that?
14:30 whiteknight sure thing
14:30 cotto thanks
14:30 * cotto goes to ork
14:30 lucian joined #parrot
14:31 whiteknight cotto: I don't know if I like the separation of responsibilities here
14:31 whiteknight the Exception is in charge of finding a handler, but the handler is responsible to find other handlers if it can't handle it?
14:32 whiteknight it seems like a better way would be to pass the exception to an exception dispatcher somewhere, and have that dispatcher handle all the dispatch logic
14:32 whiteknight or pass it on to some other neutral third party, like the Context. Right now, it's a combination of Context and Scheduler
14:33 whiteknight a dispatcher could use MMD, so instead of asking handlers what types they accept, we simply MMDispatch  based on the Exception type
14:33 atrodo whiteknight> It probably needs to be user definable
14:35 whiteknight atrodo: That's why I say to put it into a single object. It's easier to override a single dispatcher object somewhere then to override similar logic on multiple types
14:35 atrodo whiteknight> That makes sense
14:36 whiteknight if a Context contains a reference to an ExceptionDispatcher, and each new Context inherits the one from it's caller (:outer, or whereever), the user can set the ExceptionDispatcher at program entry and have it percolate throughout
14:36 whiteknight or if we store it somewhere global, even better
14:36 whiteknight I say attach it to the Context so we can use a native one when we call into a library written in a different HLL
14:37 atrodo That seems to make the most sense for interop
14:41 whiteknight cotto: I do like the idea of chainable exceptions, but I don't think the ExceptionHandler itself should be responsible for finding the next candidate
14:44 rohit_nsit08 joined #parrot
14:49 lucian exceptions are something i've been thinking of
14:49 lucian so far for python, i was thinking of nesting its exception hierarchy in PythonException
14:49 lucian or something to that effect
14:50 lucian jnthn__: if you have time, i'd appreciate a more complex example for 6model, or an API reference of some sort
14:52 he_ left #parrot
14:52 JimmyZ joined #parrot
14:53 jnthn__ lucian: Yes, doing a more complete class one and a more complete prototype one are on my todo list for the next couple of days.
14:53 theory joined #parrot
14:53 lucian jnthn__: cool. i plan to finish the winxed object system and then try to rewrite it with 6model
14:54 jnthn__ nice :)
14:54 * jnthn__ -> home
15:13 theory left #parrot
15:20 rohit_nsit08 left #parrot
15:25 cotto_work ~~
15:42 cotto_work whiteknight: interesting idea.
15:42 bluescreen left #parrot
15:42 whiteknight cotto: I just don't like the idea of breaking it up. Either the Exception should be searching for handlers or something else should be searching
15:42 whiteknight Handlers shouldn't be searching amongst themselves
15:43 cotto_work I'm not married to any approach.
15:43 cotto_work yet
15:43 whiteknight I also don't like the idea of Exceptions doing the searching, particularly. Whoever is storing the list of active handlers (the Context) should be doing the searching or delegating it
15:44 whiteknight although it seems like yet more baggage for the Context to  be doing that
15:44 cotto_work Having exceptions do the searching also doesn't strike me as a proper separation of concerns.
15:44 whiteknight Exception is basically an error message, a payload, and a backtrace.
15:44 cotto_work "call frame" is the new context
15:44 whiteknight A handler is basically just an invokable that expects to only take an Exception argument
15:45 cotto_work allison thought that would be clearer and more consistent with existing literature.
15:45 whiteknight that's fine. Terminology doesn't concern me as much
15:48 cotto_work Having an exception dispatcher makes some sense.
15:48 cotto_work the exception invokes the dispatcher and the dispatcher dtrt
15:49 whiteknight I'm trying to look forward to a future where Classes are less expensive and we would be willing to create more of them for particular purposes
15:49 benabik +1
15:54 cotto_work I hope that future isn't too far off.  Getting 6model in core will become fairly important as we get closer to putting m0 in core.
15:54 benabik 6model+M0 = awesome Parrot
15:54 cotto_work srsly
15:55 whiteknight that's my sincere hope
15:56 whiteknight There are a pretty big number of optimization opportunities with that combination
16:06 theory joined #parrot
16:36 dukeleto ~~
16:36 cotto_work hio dukeleto
16:36 * dukeleto has been informed that our old JIT worked on x86, ppc and hppa, at least
16:36 dukeleto cotto_work: 'ello
16:36 * dukeleto updates the m0 blog post
16:36 rohit_nsit08 joined #parrot
16:42 ShaneC joined #parrot
16:46 * cotto_work is proudly displaying his copy of Modern Perl at $dayjob
16:47 ShaneC left #parrot
16:50 davidfetter joined #parrot
16:52 Coke_ .
16:53 Coke_ dukeleto: old jit never worked on ppc.
16:53 Coke_ (at least not on darwin ppc)
16:53 atrodo maybe it "worked"
16:53 Coke_ to the best of my recollection, anyway. maybe it got fixed before it was kilt.
16:57 mj41 left #parrot
16:57 hercynium_ joined #parrot
16:57 dukeleto Coke_: rafl++ informed me that it worked on x86, ppc and hppa. I don't care to attempt to verify that :)
16:57 dukeleto i suspect it "worked" for some definition of "worked"
16:58 Coke_ I would buy "linux ppc".
16:58 dukeleto Coke_: yeah, that sounds about right.
16:58 * Coke_ eagerly awaits m0.
16:59 dukeleto we may want to look into using this in Parrot's configure subsystem: https://github.com/barbie/devel-platform-info
17:02 hercynium left #parrot
17:02 hercynium_ is now known as hercynium
17:04 dukeleto actually, that seems to just be a wrapper around %Config, but I can't tell quite yet
17:04 hercynium_ joined #parrot
17:05 dukeleto actually, it isn't. It actually runs uname/et al on the machine to get the info
17:08 hercynium left #parrot
17:08 hercynium_ is now known as hercynium
17:09 JimmyZ left #parrot
17:15 cotto_work #ps today (for those of you who had Monday off and might forget)
17:25 whiteknight cotto_work: One topic I would like to see brought up today: I would like to see Winxed snapshotted into the Parrot repo
17:25 whiteknight It's becoming a necessity since several of our GSoC students and many of our regular hackers are using it
17:26 whiteknight I won't be at the meeting today, as usual. But as expect, the proposal gets a big +1 from me
17:27 atrodo whiteknight> I agree.  It's a great candidate to include by default
17:28 whiteknight atrodo: I see it as a candidate to eventually replace PIR all together
17:28 atrodo I agree.  PIR to too highlevel to be good as "asm", and too low level to be sane
17:29 whiteknight atrodo: are you sure you're not secretly me in disguise?
17:29 atrodo whiteknight> Pretty sure.  But dang, you're handsome!
17:29 whiteknight :)
17:30 atrodo is now known as no_srsly_not_whitek
17:30 no_srsly_not_whitek shoot.  I think I've blown my cover
17:30 no_srsly_not_whitek hmmm, apparently there's character limit on nicks
17:30 no_srsly_not_whitek is now known as atrodo
17:31 whiteknight oh crap, I thought that was me for a second. But then who am I?
17:32 atrodo who are any of us?
17:34 cotto_work I'm a duck.
17:34 whiteknight anyway, the point is that PIR is T3H FAILZ, and Winxed is T#H M4J0R R0XX0RS
17:35 whiteknight at least, if my English-To-Internet dictionary has anything to say about the subject
17:35 whiteknight my stragegy with PIR is that Winxed should pwn the n00b with a BANG HEADSHOT
17:36 atrodo Uh oh, looks like the whiteknight program has gotten corrupted
17:36 whiteknight I've been rewritten in LOLCODE! OH NOES!
17:39 cotto_work Whatever happens, PIR will be with us in some form for a long time.
17:39 whiteknight no question, but I think a reasonable "end" is closer than we might expect
17:40 whiteknight if benabik's project works out and we have POST -> PBC generation happening later this year, we could write a backend for Winxed that turns the parse tree into POST
17:40 whiteknight then we have Winxed -> PBC without POR
17:40 whiteknight PIR
17:40 whiteknight and since Winxed itself is written in Winxed, bootstrapped from C++ without any PIR there, we have a pretty good PIR-less ecosystem available
17:41 whiteknight I strongly suspect that if we give people two options for writing code, Winxed and PIR, they won't choose PIR
17:41 cotto_work I wouldn't.
17:41 whiteknight and luckily, we have more than two options
17:41 whiteknight we have NQP in the mix as well, which will benefit from the POST upgrades faster than Winxed will
17:41 lucian i think any writing of assembly should be strongly discouraged
17:41 whiteknight although NQP programs tend to have more inline PIR blocks than Winxed code does
17:41 cotto_work but we also have a number of existing large codebases that depend on PIR, namely Lua, Partcl, Rakudo and nqp*
17:42 whiteknight Rakudo won't use PIR in the future if it doesn't have to. They don't like PIR and are looking to minimize it. Hence all the upgrades to NQP
17:42 whiteknight NQP already bootstraps nicely, all they need is a PIR file checked in to start the cycle
17:42 lucian but i'm pretty sure PIR will have to remain for backwards compatibility
17:42 whiteknight so long as humans aren't writing PIR by hand, that's still a victory
17:43 cotto_work yes
17:43 lucian i think an announcement "PIR is hereby deprecated" might help :)
17:43 benabik The problem is that PBC doesn't seem stable enough to use checked in PBC for bootstrapping.
17:43 whiteknight lucian: Sure, but we can rename it ImStupid, move it into a separate repo, and force developers to "include 'ImStupid'" in their legacy programs
17:43 atrodo whiteknight++
17:43 whiteknight benabik: exactly
17:44 whiteknight benabik: it's better than it once was, thanks to efforts from plobsing, cotto, and others
17:44 whiteknight benabik: but still nowhere near stable enough
17:44 lucian i'd much rather use pbc for my compiler too, but i have to use pir ...
17:44 whiteknight lucian: it's a temporary matter, most likely
17:44 lucian retargeting a compiler isn't a big deal
17:44 lucian as long as no one writes PIR by hand from this moment on, it's fine
17:45 * lucian brb
17:45 lucian left #parrot
17:45 lucian joined #parrot
17:45 benabik Using pir:: from NQP isn't as much of a problem as Q:PIR blocks.
17:46 whiteknight PIR isn't terrible as a machine-generated interchange format. It's the hand-writing of PIR that sucks
17:46 whiteknight because so long as people are writing PIR, it is going to need to keep all the trappings of human ease-of-use
17:47 atrodo PIR has too much magic in it for my liking
17:47 whiteknight macros, heredocs, directives, syntactic sugar, etc
17:47 lucian whiteknight: it's still rather bad, it assumes some semantics
17:47 whiteknight lucian: right, but it's not horrible
17:47 lucian sure
17:47 benabik Do we need to resurrect PASM?
17:47 lucian it'll do for now if there's an upgrade path, which is what i think you meant
17:47 whiteknight lucian: and if the only thing generating PIR are code generators, we can start ripping out the shit that humans rely on
17:47 lucian i thought m0 was the upgrade path
17:47 whiteknight lucian: right, we don't have an upgrade path yet
17:48 lucian i'd assumed PIR was supposed to output m0
17:48 lucian instead of pbc
17:50 cotto_work lucian: that's pretty close to the plan today.  I'll be blogging about what I think the roadmap will look like this week once I have the M0 tests passing again.
17:52 dukeleto benabik: M0 is the new PASM
17:52 cotto_work whiteknight: what are your thoughts on 6model in core, especially what it'll take to get it in there.
17:52 cotto_work istr you blag about it
17:52 whiteknight cotto_work: good question. My first thought is "DO WANT"
17:53 cotto_work I'm glad to hear that.  Things you want tend to happen.
17:53 lucian i also like 6model, it's very similar to what i'd been building
17:53 cotto_work whiteknight: have you thought about a roadmap at all?  I want to make sure I know who's doing what.
17:53 whiteknight What I think we want to do is get 6model in place in parallel to the current object model
17:54 whiteknight cotto_work: yeah, I've talked with jnthn about it a little
17:54 whiteknight if we put it into Parrot along with Object/Class, we can start refactoring the later system to be defined in terms of 6model
17:55 whiteknight So Object/Class becomes something of the default offering of 6model, but we would also need to have tools for easily creating alterantes
17:55 whiteknight alternates
17:56 lucian whiteknight: i think Object/Class is too deficient to be a default, but of course i agree it should be there for compatibility
17:56 whiteknight lucian: it will make incremental changes over time
17:56 whiteknight it won't be the same garbage we have now
17:56 whiteknight we can change the internals much more quickly than we can change the external interface, but both will have to change
17:56 whiteknight and users should want both to change
17:56 cotto_work We won't get anywhere if we don't somehow support backwards compatibility.
17:57 whiteknight Class PMC does have a number of important methods which will form the core of the new object model
17:57 whiteknight .add_method, .remove_method, .add_attribute, .remove_attribute, .add_vtable_override, etc
17:58 whiteknight I want to seriously overhaul vtables at the same time. Anything which is covered by 6model (find_method, etc) should be pulled out of the vtable and relegated to the REPR
17:59 whiteknight And if all objects use a PBC-based find_method implementation, we can cut out the inner runloop there and turn the find_method op into an invoke-alike
17:59 lucian whiteknight: i'd like to see vtables deprecated instead, i guess
17:59 whiteknight get/set attributes too
18:00 whiteknight lucian: we do need a certain fundamental set of functionality, but anything 6model provides immediately makes the counterparts in the vtable redundant
18:00 lucian would they be necessary for anything, assuming 6model were implememted
18:00 lucian ?
18:00 whiteknight lucian: 6model has some slots for invokables, but not nearly so many as the vtable has
18:00 whiteknight it handles important ones like method lookup, attribute get/set, etc. Many of the rest of the vtable can be looked at with some suspicion
18:01 whiteknight Keeping in mind how inefficient crossing the C<->PIR boundary is, we can start seriously considering rewriting some fundamental types in a Parrot language instead of in C
18:02 whiteknight And anything that we're writing in a parrot language can be reduced to a method, since many operations (i_add_num, etc) are extremely specialized and only used on one or two built-in types
18:02 whiteknight it's hugely wasteful for CallContext or Env or ResizableStringArray or almost any type to have to hold an empty slot for i_add_num
18:03 whiteknight that's just one example
18:03 whiteknight er, maybe it's called i_add_float
18:03 cotto_work It'd be an interesting exercise to find out how many slots are empty in core PMCs.
18:03 whiteknight cotto_work: My best guess: "The vast majority"
18:03 lucian memory usage is gigantic in parrot, indeed
18:04 whiteknight lucian: the vtables only make up a very small portion of that, but they do set the tone for us saying that memory consumption isn't important
18:04 lucian i suppose i don't understand parrot well enough, but assuming 6model, i still don't see why anything would be needed C-side
18:04 lucian just enough to boostrap m0 and 6model
18:04 whiteknight if Integer PMC were just a thin wrapper around an INTVAL REPR, we gain a certain economy and subclassability
18:05 whiteknight lucian: There are some things where C is a legitimate performance necessity
18:05 whiteknight I don't care what PyPy is doing, GC is probably going to be written in C for a long time
18:05 whiteknight JIT too. And the runcores
18:05 whiteknight and the frontend.
18:06 lucian whiteknight: and those require such data structures? i see
18:06 cotto_work whiteknight: speaking of the GC, currently the only interaction between GC and M0 is a gc_alloc op that'll take some flags.  What else do you think will be needed?
18:07 arnsholt left #parrot
18:08 whiteknight cotto_work: that's more or less what we have now. As long as we have the ability to separate out data which is object-like (and might have destructors or pointers to other gcables) we should be fine
18:08 dalek website: benabik++ | GSoC 2: Keeping Up the Pace
18:08 dalek website: http://www.parrot.org/content/gsoc-2-keeping-pace
18:09 whiteknight cotto_work: Right now we do get a non-negligible speed boost in GC sweep by having all PMCs allocated from the same arena, for instance
18:10 whiteknight so we would like to continue that
18:10 whiteknight actually, I just had an idea that might make our GC sweep have fewer cache misses
18:10 cotto_work whiteknight: sure.  That"s what the flags would be for>
18:11 whiteknight okay, just making sure
18:13 whiteknight cotto_work: I imagine you're also going to want a flag for specifying memory that the user will explicitly manage, and then a gc_free op to return that memory
18:14 whiteknight that's especially important for embedding, where something like a string reference might be kept in memory outside Parrot
18:14 whiteknight or in data we hang on a PMC, and is freed during PMC_destroy
18:14 cotto_work whiteknight: way ahead of you.  there's sys_alloc and sys_free for that
18:15 whiteknight oh, fun
18:15 whiteknight my work here is done
18:16 hercynium left #parrot
18:18 cotto_work whiteknight: what about blocking the gc?
18:18 whiteknight ah, that's a good question
18:18 whiteknight GC block level is basically just an integer on the interp. If that was exposed we could just do inc/dec on it
18:18 whiteknight although that seems...messy
18:19 whiteknight but at the M0 level we can make the assumption that error-prone humans aren't generating the code anyway
18:20 lucian with a moving gc, how would pinning work? a flag at allocation?
18:22 arnsholt joined #parrot
18:25 pmichaud left #parrot
18:26 whiteknight we don't have a copying/compacting GC right now, so that's almost a moot point
18:27 whiteknight but if we do have it in the future we are going to want that feature, you're right
18:28 ambs left #parrot
18:28 arnsholt left #parrot
18:31 contingencyplan joined #parrot
18:36 fperrad joined #parrot
18:45 dodathome joined #parrot
18:45 arnsholt joined #parrot
18:45 hercynium joined #parrot
18:53 benabik jnthn__++ # 6model documentation
18:54 whiteknight jnthn__++ indeed
18:58 NotFound Note that winxed stage 0 can't generate post because it runs out of parrot.
19:01 lucian NotFound: that's also the case for my python compiler
19:02 whiteknight NotFound: yes, but something like stage 2 could do POST
19:02 NotFound And I'm completely sure that I'll never like to generate PBC or any other binary format from external tools.
19:02 whiteknight NotFound: or, if the backend was pluggable, we could create a new driver that injects a POST backend in instead of the current Emitter
19:03 wesjdj joined #parrot
19:03 whiteknight NotFound: I would happily help to write such a backend
19:03 whiteknight I suspect it would not be hard. Winxed has all the necessary information. At this point all we need is to generate POST
19:03 NotFound whiteknight: for stage 1 it will be relatively easy to use any tool parrot provide in the future, but stage 0 is a different beast.
19:03 lucian i believe a PAST textual format was suggested at some point
19:03 whiteknight lucian: yeah, but that really doesn't appeal to me
19:04 whiteknight I mean, I guess we could use json and use the existing json compiler or a subclass of it, but that seems like a step in the wrong direction
19:04 NotFound Not a big deal anyway, an external PIR compiler will be enough for bootstraping.
19:04 wesjdj join /android
19:05 wesjdj left #parrot
19:05 benabik whiteknight: It would be for bootstrapping and not much else.
19:05 wesjdj joined #parrot
19:05 wesjdj left #parrot
19:05 mj41 joined #parrot
19:06 lucian NotFound: i've been wondering if stage0 is even still needed at this point
19:06 whiteknight NotFound: If the emitter was pluggable, we could also start testing running winxed on 6model, by changing the way we output class definitions
19:06 whiteknight that would be extremely interesting for me
19:06 benabik I'm having a late lunch.  Will try to be back before #ps
19:09 whiteknight benabik: your "WILL DO" Section is cut off. I assume there was something in that section?
19:11 NotFound whiteknight: well, if you want winxed in the repo to make easier to people to hack with it, I want 6model in the repo for the same ;)
19:12 lucian NotFound: sounds good :)
19:12 whiteknight NotFound: we want the same things
19:13 lucian i'd also like a winxed API for 6model, but that's likely far off
19:13 NotFound lucian: stage 0 is not really needed now, but I want to keep a working way to bootstrap from ground zero.
19:13 whiteknight yes, a REPR { } defintion syntax in winxed would be the best
19:13 * whiteknight dreams a dream
19:15 NotFound Well, winxed was a dream less than two years ago.
19:16 benabik whiteknight: Shoot. Ran off too fast. Did it eventually appear or should I redo it from phone?
19:17 lucian regardless, the preferred way of interfacing with 6model will likely stay NQP. i better learn it
19:17 * benabik loves the Colloquy bouncer.
19:21 whiteknight benabik: never appeared
19:21 whiteknight benabik: you can post it later if you want
19:21 whiteknight lucian: yes, bite the bullet for now
19:22 NotFound Uh... if 6model will become the basis of parrot object models there must not be a preferred way.
19:22 whiteknight for now. It's not in Parrot yet
19:22 whiteknight eventually, it will all be easy and pretty and will make waffles for you
19:22 benabik whiteknight: It showed up in the backlog on my phone. Copy/paste fixes everything!
19:22 whiteknight benabik++
19:24 lucian left #parrot
19:27 linge joined #parrot
19:39 fperrad left #parrot
19:50 cotto_work benabik: in your blog you mentioned that you were having trouble finding time talking with me.
19:51 cotto_work benabik: did you mean bacek?
19:51 benabik cotto_work: Blarg. Yes.
19:51 benabik cotto_work: Was reading you talking on IRC while writing blog.
19:51 cotto_work benabik: ok
19:52 cotto_work funny how that works
19:53 benabik cotto_work: Fixed
19:54 cotto_work bacek's a lot tricker to get a hold of than I am, especially if you live in the US.
19:56 benabik We had planned to catch up this weekend, but I guess something came up. Havent seen him
19:59 cotto_work Fortunately there are others who can help.  Unfortunately most of us aren't magical coding robots.
20:00 lucian joined #parrot
20:01 benabik cotto_work: I'm not blocking on it. Just was looking to get a look over and help putting it parrot main repo.
20:01 soh_cah_toa joined #parrot
20:05 cotto_work soh_cah_toa: have you sent in a cla?
20:05 pjcj left #parrot
20:05 pjcj joined #parrot
20:05 soh_cah_toa cotto_work: yeah, several weeks ago actually
20:05 cotto_work soh_cah_toa: ok
20:14 cotto_work seen kid51
20:14 aloha kid51 was last seen in #parrot 19 hours 10 mins ago joining the channel.
20:14 ambs joined #parrot
20:14 cotto_work #ps in 15
20:21 pjcj left #parrot
20:21 pjcj joined #parrot
20:24 pjcj left #parrot
20:25 pjcj joined #parrot
20:25 tcurtis Is there a convenient way to send the contents of a text file to a channel in irssi?
20:28 sorear maybe something with /exec
20:29 tcurtis Indeed. -out, somewhat confusingly, sends it to the channel.
20:30 rohitnsit08 joined #parrot
20:31 cotto_work #ps time in 0 minutes
20:39 dodathome left #parrot
20:40 dalek winxed: r1025 | NotFound++ | trunk/winxedst1.winxed:
20:40 dalek winxed: look for functions in scope on non-declared symbols
20:40 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=1025
20:40 ambs left #parrot
20:41 ambs joined #parrot
20:48 dmalcolm joined #parrot
21:09 hercynium left #parrot
21:09 whiteknight left #parrot
21:28 rohitnsit08 left #parrot
21:28 rohit_nsit08 left #parrot
21:33 mj41 left #parrot
21:42 ambs left #parrot
21:46 Psyche^ joined #parrot
21:49 cotto_work dukeleto: whiteknight suggested that a better way to do M0 exceptions would be to have an exception dispatcher that took care of finding and invoking the correct exception handler, rather than making the exception handlers do the work.
21:49 cotto_work dukeleto: thoughts?
21:51 Patterner left #parrot
21:51 Psyche^ is now known as Patterner
21:53 dukeleto cotto_work: seems reasonable. but does that introduce magic into M0?
21:56 lucian are exceptions implemented underneath or on top of M0?
21:58 cotto_work lucian: exception handlers have a limited form of support in M0, but it's all userspace on top of that so far
21:58 cotto_work fsvo "user"
21:59 cotto_work dukeleto: that's my concern too
22:00 cotto_work lucian: the only support for exceptions in M0 is "here's a register to put your handler"
22:00 lucian i understand whiteknight's motivation, to make app-leve exceptions first-class
22:00 lucian but i'm not sure i dislike nesting all app-level exceptions for a particular language in one first-class exception (as is done now, mostly)
22:31 lucian hmm, winxed appears particularly tolerant with using keywords as names
22:32 benabik lucian: You can use keywords as names, or it just doesn't error if you try?
22:32 lucian benabik: apparently the first
22:40 kid51 joined #parrot
22:51 NotFound lucian: the reason is simple: there are no keywords at all.
22:51 lucian NotFound: how so?
22:52 NotFound lucian: the keyword meaning is only looked in the appropiate context, otherwise they are just identifiers.
22:52 lucian NotFound: i see. interesting
22:55 NotFound Of course, to protect yourself against future changes, you should avoid that feature.
22:55 lucian and to save sanity :)
22:56 lucian class int { var var; is very odd :)
22:56 NotFound I remember some old basic where you can write things like if if then then=else
22:57 NotFound else else=then
22:57 lucian heh
22:58 cotto_work ow
22:58 cotto_work though today we have the starry obfuscation
22:59 cotto_work ( http://perlgeek.de/blog-en/perl​-6/dissecting-starry-obfu.html )
22:59 tcurtis I am slightly amused that in Python (2, at least), True/False are actual variables.
22:59 lucian tcurtis: yes, you can do fun things with that. not in 3, though
23:02 cotto_work tcl apparently does that too
23:02 NotFound In winxed true and false are constants at root namespace scope, you can have some fun redefiining them in other scopes.
23:03 * tcurtis wonders if Python programmers ever used "while True:" loops.
23:03 NotFound I prefer: for (;;)
23:04 lucian tcurtis: yes
23:07 * tcurtis is tempted to run the tests for random Python libraries with True and False set to objects with a __nonzero__(that's the method "if" calls, right?) method that returns randomly.
23:08 NotFound You can combine that with the random function from xkcd.
23:08 lucian tcurtis: i don't think if calls __nonzero__ on them, let me check :)
23:09 lucian tcurtis: uh, can't even find a __nonzero__
23:09 NotFound http://xkcd.com/221/
23:10 lucian tcurtis: and i checked, you're right. adding __nonzero__ would affect truthiness
23:11 lucian it overrides the default
23:12 lucian_ joined #parrot
23:17 lucian left #parrot
23:17 kid51 is now known as kid51_at_dinner
23:20 jnthn__ Arrgh.
23:20 jnthn__ Parrot_pcc_invoke_from_sig_object sucks
23:20 jnthn__ Rather than blacklisting the NCI PMC as a case where it should *not* call runops after an invoke (cheap), it instead does a bunch of other checks that cost and mean I need to put a stupid hack in.
23:21 jnthn__ See do_run_ops in pcc.c
23:22 jnthn__ Please can somebody fix this?
23:26 cotto_work jnthn__: I'm looking at the code now.
23:26 jnthn__ cotto_work: thanks.
23:27 jnthn__ cotto_work: It'll be a sanity win and a (minor) speed win if fixed :)
23:27 cotto_work jnthn__: are you saying that do_ops_run should explicitly return 0 for an nci PMC?
23:28 jnthn__ cotto_work: The comment says:
23:28 jnthn__ Check should we run ops.
23:28 jnthn__ PIR Subs need runops to run their opcodes. Methods and NCI subs don't.
23:28 jnthn__ It'd be better to just look for the Method and NCI case and return 0, and return 1 otherwise.
23:29 jnthn__ Those are the weird cases. The common case is we do need to runops.
23:29 cotto_work jnthn__: I'll play with that and make sure you know when it's in master.
23:29 jnthn__ Right now if I've got an object that is meant to be invokable, I have to go and add a hack does vtable.
23:29 preflex left #parrot
23:30 cotto_work jnthn__: ok.  That makes the problem much clearer.  Thanks.
23:31 jnthn__ cotto_work: Thanks! :)
23:31 cotto_work jnthn__: do you have a test case?
23:32 preflex joined #parrot
23:32 jnthn__ cotto_work: Will soon.
23:33 dalek nqp: 970ebe2 | jonathan++ | src/pmc/sixmodelobject.pmc:
23:33 dalek nqp: Add a (hopefully quite temporary) workaround for Parrot's Parrot_pcc_invoke_from_sig_object sucks.
23:33 dalek nqp: review: https://github.com/perl6/nqp/commit/970ebe2280
23:33 jnthn__ ^^ That patch is the workaround that should be removable.
23:33 jnthn__ Still working on the thing that hit it.
23:40 cotto_work jnthn__: I'll have to wait until a little later this evening to fully understand that bit of code.
23:41 cotto_work It's part of the code I'll need to understand pretty well for the coming 6modelpocalypse though, so this'll be a good excuse.
23:42 jnthn__ cotto_work: OK. On latest Rakudo nom branch, if you can run https://gist.github.com/1001495 and it works with the nqp hack I just committed above removed, then the issue is resolved. :)
23:42 cotto_work jnthn__: perfet
23:42 cotto_work *perfect
23:42 cotto_work and the irony is not lost on em
23:42 cotto_work iF;srglhgkjlshnkgjlhakl;
23:42 cotto_work (trying to get all my typos out at once)
23:42 jnthn__ :)
23:43 sorear hey, seven digit gists
23:43 sorear \o/
23:43 cotto_work that was fast
23:43 cotto_work I guess a bunch of people tried to get 1000000
23:47 lucian_ NotFound: 223 loc for an almost correct python object system :)
23:47 lucian_ NotFound: it's missing metaclasses, exceptions and a lot of checks
23:47 lucian_ is now known as lucian
23:48 cotto_work lucian: nice
23:50 lucian cotto_work: i think i've almost reimplemented 6model :)
23:52 * cotto_work heads home
23:52 tcurtis lucian: wrong version of Perl. ;)
23:53 lucian tcurtis: yeah, has different letters two, not just numbers :)
23:54 baest left #parrot

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

Parrot | source cross referenced