Camelia, the Perl 6 bug

IRC log for #parrot, 2011-12-12

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:30 whiteknight joined #parrot
01:02 kid51 joined #parrot
01:57 dalek Rosella/genetic: 12dc30d | Whiteknight++ | s (7 files):
01:57 dalek Rosella/genetic: Add Genetic to the build. Several fixes to make it build
01:57 dalek Rosella/genetic: review: https://github.com/Whiteknig​ht/Rosella/commit/12dc30dbdb
01:57 dalek Rosella/genetic: b16f3f0 | Whiteknight++ | src/include/Genetic.winxed:
01:57 dalek Rosella/genetic: Add in a header file for Genetic
01:57 dalek Rosella/genetic: review: https://github.com/Whiteknig​ht/Rosella/commit/b16f3f05f1
01:57 dalek Rosella/genetic: 17a8978 | Whiteknight++ | s (8 files):
01:57 dalek Rosella/genetic: Several fixes to the Genetic classes so that we can pass some basic adhoc tests.
01:57 dalek Rosella/genetic: review: https://github.com/Whiteknig​ht/Rosella/commit/17a897877e
02:41 alvis joined #parrot
02:43 JimmyZ joined #parrot
02:56 dalek Guitor: f55a6ad | NotFound++ | src/Guitor.winxed:
02:56 dalek Guitor: improve a bit the look of the menu items
02:56 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/f55a6ad337
03:05 dalek Guitor: 47d88f2 | NotFound++ | examples/pokedit.winxed:
03:05 dalek Guitor: new example pokedit, a text editor (in progress)
03:06 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/47d88f25b2
03:39 GeJ joined #parrot
03:59 dukeleto cool, rosella is getting genetic algorithms
05:23 Nol888 joined #parrot
05:27 rfw joined #parrot
05:36 dalek Guitor: 1e22980 | NotFound++ | / (3 files):
05:36 dalek Guitor: Map and Unmap notify events
05:36 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/1e22980cc3
05:37 dalek Guitor: 424f9ff | NotFound++ | examples/pokedit.winxed:
05:37 dalek Guitor: less coupling between controller and windows in example pokedit
05:37 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/424f9ff2eb
05:58 dalek Guitor: ab55756 | NotFound++ | examples/pokedit.winxed:
05:58 dalek Guitor: bigger cursor in example pokedit
05:58 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/ab557565c7
06:37 baest joined #parrot
06:46 aloha (parrot/parrot) Issues opened : 228 (A 'tools/docs/mk_pod2man.pl' script to autogen the installable binaries' POD files into *roff pages ...) by ayardley : https://github.com/parrot/parrot/issues/228
08:09 mj41 joined #parrot
09:19 dalek rakudo/ex-from-actions: f3f084c | moritz++ | src/Perl6/Actions.pm:
09:19 dalek rakudo/ex-from-actions: thinko
09:19 dalek rakudo/ex-from-actions: review: https://github.com/rakudo/rakudo/commit/f3f084cd7f
09:24 snearch joined #parrot
09:36 contingencyplan joined #parrot
09:44 nbrown joined #parrot
10:14 dalek rakudo/ex-from-actions: 602996b | moritz++ | src/core/Exception.pm:
10:14 dalek rakudo/ex-from-actions: be explicit about calling .gist
10:14 dalek rakudo/ex-from-actions:
10:14 dalek rakudo/ex-from-actions: IMHO it should work without it, but it does not. Not sure why
10:14 dalek rakudo/ex-from-actions: review: https://github.com/rakudo/rakudo/commit/602996be39
10:14 dalek rakudo/ex-from-actions: df1294a | moritz++ | src/Perl6/Actions.pm:
10:15 dalek rakudo/ex-from-actions: HLL::Compiler.lineof returns 0-based line numbers
10:15 dalek rakudo/ex-from-actions:
10:15 dalek rakudo/ex-from-actions: so add 1 to them for now
10:15 dalek rakudo/ex-from-actions: review: https://github.com/rakudo/rakudo/commit/df1294ab96
10:20 lucian joined #parrot
11:21 nbrown_ joined #parrot
11:21 particle1 joined #parrot
11:27 dalek nqp: f81b6c2 | moritz++ | src/HLL/ (2 files):
11:27 dalek nqp: return 1-based line numbers of HLL::Compiler.lineof
11:27 dalek nqp: review: https://github.com/perl6/nqp/commit/f81b6c25ba
11:27 dalek nqp: dc0ca28 | moritz++ | src/stage0/ (6 files):
11:27 dalek nqp: update bootstrap
11:27 dalek nqp: review: https://github.com/perl6/nqp/commit/dc0ca287bf
11:29 dalek rakudo/ex-from-actions: b690654 | moritz++ | / (3 files):
11:29 dalek rakudo/ex-from-actions: use a HLL::Compiler.lineof that returns 1-based line numbers
11:29 dalek rakudo/ex-from-actions: review: https://github.com/rakudo/rakudo/commit/b6906547e0
11:30 preflex_ joined #parrot
12:32 schmooster joined #parrot
12:34 mtk joined #parrot
12:46 bluescreen joined #parrot
12:55 dalek nqp: 86b9112 | moritz++ | src/HLL/Compiler.pm:
12:55 dalek nqp: backport lineof optimization from PCT
12:55 dalek nqp:
12:55 dalek nqp: This backports the binary search lineof optimization from PCTs HLLCompiler
12:55 dalek nqp: to HLL::Compiler.lineof
12:55 dalek nqp: review: https://github.com/perl6/nqp/commit/86b9112c0e
13:43 alin joined #parrot
13:51 dalek rakudo/nom: f3f084c | moritz++ | src/Perl6/Actions.pm:
13:51 dalek rakudo/nom: thinko
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f3f084cd7f
13:51 dalek rakudo/nom: 602996b | moritz++ | src/core/Exception.pm:
13:51 dalek rakudo/nom: be explicit about calling .gist
13:51 dalek rakudo/nom:
13:51 dalek rakudo/nom: IMHO it should work without it, but it does not. Not sure why
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/602996be39
13:51 dalek rakudo/nom: df1294a | moritz++ | src/Perl6/Actions.pm:
13:51 dalek rakudo/nom: HLL::Compiler.lineof returns 0-based line numbers
13:51 dalek rakudo/nom:
13:51 dalek rakudo/nom: so add 1 to them for now
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/df1294ab96
13:51 dalek rakudo/nom: b690654 | moritz++ | / (3 files):
13:51 dalek rakudo/nom: use a HLL::Compiler.lineof that returns 1-based line numbers
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b6906547e0
13:51 dalek rakudo/nom: de83900 | moritz++ | / (5 files):
13:51 dalek rakudo/nom: Merge branch 'ex-from-actions' into nom
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/de839003d1
13:51 dalek rakudo/nom: c27eb70 | moritz++ | tools/build/NQP_REVISION:
13:51 dalek rakudo/nom: bump NQP revision to get lineof optimization
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c27eb70f3d
13:51 dalek rakudo/nom: b20ab2e | moritz++ | src/core/Mu.pm:
13:51 dalek rakudo/nom: make uninitialized warnings more robust
13:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b20ab2ece6
14:11 preflex_ joined #parrot
14:24 muixirt joined #parrot
14:42 alvis joined #parrot
14:45 nbrown joined #parrot
15:30 moritz what's the right way to copy a file to a directory?
15:30 moritz File.copy doesn't accept directories as destination :/
15:31 Psyche^ joined #parrot
15:42 * moritz submits https://github.com/parrot/parrot/issues/229
15:45 dalek Rosella/genetic: 0608be1 | Whiteknight++ | s (9 files):
15:45 dalek Rosella/genetic: Several refactors for genetic.
15:45 dalek Rosella/genetic:
15:45 dalek Rosella/genetic: Add in a new Context object to hold some of the particulars, and remove all state from the Engine. Combine all the mutator logic into a Generic mutator. Remove other types. Use Queryables more in the Engine to simplify flow.
15:45 dalek Rosella/genetic:
15:45 dalek Rosella/genetic: Add basic caching to Random.default_uniform_random, to ensure we aren't creating a new one (and potentially seeding it the same in tight loops).
15:45 dalek Rosella/genetic: review: https://github.com/Whiteknig​ht/Rosella/commit/0608be174c
15:47 aloha (parrot/parrot) Issues opened : 229 (the copy method in the File dynpmc does not accept a directory as destination) by moritz : https://github.com/parrot/parrot/issues/229
15:48 dalek rakudo/parameter-perl: 9e3f3a2 | moritz++ | src/ (5 files):
15:48 dalek rakudo/parameter-perl: store the original perl source for Parameter in an attribute
15:48 dalek rakudo/parameter-perl:
15:48 dalek rakudo/parameter-perl: it turns out that there are so many cases to cover in Parameter.perl that
15:48 dalek rakudo/parameter-perl: reconstructing it from the various flags and attributes is much more
15:48 dalek rakudo/parameter-perl: complicated than simply storing the source code. At least that is
15:48 dalek rakudo/parameter-perl: my hope :-)
15:48 dalek rakudo/parameter-perl: Does not yet actually store the source
15:48 dalek rakudo/parameter-perl: review: https://github.com/rakudo/rakudo/commit/9e3f3a260d
15:48 dalek rakudo/parameter-perl: faf6af8 | moritz++ | src/Perl6/Actions.pm:
15:48 dalek rakudo/parameter-perl: try to record Parameter.perl
15:48 dalek rakudo/parameter-perl: review: https://github.com/rakudo/rakudo/commit/faf6af890f
15:58 contingencyplan joined #parrot
15:59 bluescreen joined #parrot
16:53 estrabd joined #parrot
16:53 cotto ~~
17:06 nopaste joined #parrot
17:06 TonyC joined #parrot
17:11 Tene joined #parrot
17:14 dmalcolm joined #parrot
17:31 tadzik joined #parrot
17:41 fperrad joined #parrot
17:50 dukeleto ~~
18:12 whiteknight joined #parrot
18:14 he_ joined #parrot
18:19 whiteknight good afternoon, #parrot
18:26 benabik joined #parrot
18:28 PerlJam whiteknight++ good advent to you! :)
18:29 whiteknight PerlJam: And a good advent to you too!
18:32 benabik o/ #parrot
18:32 whiteknight hello benabik
18:33 baest joined #parrot
18:33 benabik Hey whiteknight, how's things?
18:33 Hunger joined #parrot
18:39 whiteknight benabik: pretty good, actually. You?
18:40 benabik whiteknight: Pretty good, other than this stupid statement of purpose.
18:41 whiteknight statement of purpose?
18:41 benabik For PhD applications.
18:41 whiteknight oh, fun
18:42 whiteknight "I intend to use my evil powers to take over the world, all the while laughing maniacally"
18:42 benabik :-D
18:44 whiteknight benabik: what area of study do you want to pursue?
18:44 benabik Programming Language Theory / Compilers.
18:44 whiteknight heh, I was thinking the same kind of thing for myself
18:45 PerlJam whiteknight: Another post idea for you ... what are parrot's measures of success?
18:45 benabik PLT is actually pretty interesting.  Type systems and syntax derivations are fascinating strutures.
18:45 benabik And compilers are the key to making it all actually do something.  :-D
18:45 whiteknight PerlJam: I'm not sure I can answer that question myself, much less write an entire post about it :)
18:45 whiteknight benabik: I'm far more oriented towards practical applications than abstract theory
18:45 benabik whiteknight: Haven't you learned anything from academia?  An article posing a question is just as important as an answer.
18:46 atrodo benabik++
18:47 benabik whiteknight: I like playing both sides.  I like to learn enough theory to create interesting applications.  :-D
18:47 benabik (Note I didn't say _practical_ applications.  ;-)
18:47 whiteknight :)
18:48 PerlJam the whole idea of "virtual machines" didn't really have *practical* application when it was invented ;)
18:49 dalek Rosella/genetic: ca807ca | Whiteknight++ | src/unstable/genetic/ (2 files):
18:49 dalek Rosella/genetic: Add in two missing files
18:49 dalek Rosella/genetic: review: https://github.com/Whiteknig​ht/Rosella/commit/ca807cab8f
18:49 benabik genetic?
18:49 PerlJam bioparrot?
18:50 whiteknight oh, I'm playing around with a library for genetic algorithms
19:03 whiteknight nothing to look at yet
19:19 dukeleto whiteknight: let me know when the genetic stuff in rosella is ready enough to try to implement root finding, i.e. f(x) = 0
19:20 whiteknight dukeleto: It's probably capable now, just not very user-friendly
19:21 nine Good evening #parrot
19:21 benabik o/ nine
19:21 whiteknight dukeleto: I've been writing tests similar, such as searching a 2D plane for the top point of a virtual pyramid
19:21 whiteknight hello nine
19:22 dukeleto whiteknight: virtual pyramids! Obviousy root-finding is not cool anymore.
19:23 dukeleto whiteknight: i remember being very interesting in GA in skool, but I never got to actually study them in depth
19:23 nine whiteknight: low level threading works quite nicely. But namespaces give me a hard time. t/pmc/task.t fails because it can't find the ok function. Tried to use proxies there as well but I know much too little about this stuff to make it work
19:23 dukeleto s/interesting/interested/
19:23 whiteknight nine: Here there be dragons. Namespaces are one of the dirtiest parts of Parrot
19:23 dukeleto nine: gist the full error you get about ok not being found
19:23 baest joined #parrot
19:24 dukeleto nine: exporter.'import'( 'plan ok' :named('globals') )
19:24 whiteknight dukeleto: The genetic algorithm itself is pretty simple to implement. It's filling in all the details of each new problem that wants to use it which is hard
19:24 dukeleto nine: that might help
19:24 dukeleto whiteknight: yes, that is the fun part :)
19:25 whiteknight dukeleto: I'm not sure he should have to import or export. If he's in the root namespace and has read-only access to namespace in the parent interp things should just appear
19:25 dukeleto nine: exporter = new ['Exporter']
19:26 nine whiteknight: that's what I think. Using a sub for a task should work just like calling the sub. Otherwise I imagine it being...interesting for compiler writers ;)
19:27 whiteknight nine: somewhere along the line I suspect the new task isn't setting the current_namespace field of the call context
19:27 whiteknight or, is setting it incorrectly
19:28 whiteknight nine: the CallContext has a current_namespace field that should point to the current namespace, for looking up subs by name etc. Next time you're in the debugger looking at this problem, find out what that field is set to
19:28 whiteknight For the code to "just work" you want it to either point to the namespace itself or point to a proxy for the namespace
19:30 whiteknight and if that is set up correctly using a proxy, we need to make sure the proxy is correctly forwarding the necessary vtable calls to the namespace
19:32 nine vtables is a good keyword. They seem to be referenced from the interp, but not in a pmc but in a pointer array
19:32 whiteknight what are, namespaces?
19:33 dukeleto benabik: i ordered Proofs From The Book, thanks again for the recommendation!
19:33 benabik dukeleto: Let me know what it's like.  I've never actually seen it.  :-D
19:34 nine whiteknight: IIRC a Hash
19:35 whiteknight ah, I found an old quote that will be very helpful
19:35 whiteknight whiteknight> interp->HLL_namespace is a hash, not a namespace
19:35 whiteknight whiteknight> and interp->class_hash is a namespace, not a hash
19:35 whiteknight whiteknight> I love this code with all my heart
19:38 nine Another problem is parrot trying to write to namespaces. Which won't work in any case if namespaces are proxied
19:38 whiteknight right
19:38 whiteknight there are a few opcodes that write to namespaces, and the packfile loader is a jerk about it, but I don't think too many other places write to namespaces
19:42 nine So do you think it worthwhile to work at proxying namespaces? If it's mostly the packfile loader, we could simply mandate loading having to run on the main thread.
19:43 benabik We could have COW namespaces or some such.  But that sounds like work for later.
19:45 whiteknight benabik: COW is the path to madness. It makes huge numbers of optimizations impossible in a threaded environment
19:45 dukeleto benabik: will do! It just shipped, hoping to get my hands on it soon :)
19:46 whiteknight nine: disallowing packfile loading in all non-main worker threads seems like the best
19:46 whiteknight a tell_main_to_load_this_packfile_​at_the_earliest_convenient_point opcode seems like a good idea
19:46 whiteknight maybe with a shorter name
19:47 whiteknight or tell_main_to_load_packfile_and_wait_till_its_done
19:47 moritz defered_lock_packfile
19:47 moritz *load
19:48 nine Or just the same thing we do with writes to shared data: schedule a little sub on the main thread
19:48 whiteknight tell_main_to_load_packfile_while​_I_go_get_some_tea_or_something
19:48 benabik To start, probably better to just have load_packfile fail and let people use ordinary messaging to ask their main to do it.
19:48 whiteknight nine: yeah, that works too
19:48 nine Speaking of which... I think we need in addition some schedule_synchronously which only finishes when the task on the main thread actually ran.
19:48 whiteknight yes, that would be a very good idea
19:48 whiteknight very
19:49 nine async write is nice for things like writing results back to some array. But sometimes one actually needs the new value...
19:49 benabik futures are nice
19:50 nine Thought about this and I think it could simply be implemented by a mutex and a double lock in the waiting thread with an unlock in the writing thread
19:51 nine Or a bit more coplicated by letting the waiting task sleep and wake it when the write is done...
19:52 benabik sleep/wake is less certain.  Have to check to see if you were woken for the reason you think.
19:52 benabik (Speaking from my experiences in Java.)
19:52 snearch joined #parrot
19:54 whiteknight nine: putting the waiting task to sleep seems like the best idea to me. We could easily use that mechanism to implement AIO and synchronous IO
19:55 whiteknight well, depending on overhead
19:55 alin joined #parrot
19:55 nine whiteknight: oh yes, I like this!
19:56 nine Ok, I will run this a little through my head. Overhead would probably in the same range as writes to shared data themselves. Basically a schedule_immediate
20:01 dalek rakudo/nom: 92f3830 | moritz++ | src/core/Complex.pm:
20:01 dalek rakudo/nom: fix infix:<**> for 0 base and Complex numbers
20:01 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/92f3830717
20:02 nine https://gist.github.com/1468847 is the backtrace I now get
20:06 dngor Have you seen Disruptor?
20:06 lucian joined #parrot
20:09 whiteknight Disruptor?
20:10 benabik Disruptor can mean: an energy weapon in Star Trek or Star Wars. A real weapon aka the Dazzler.  A game for the PS1.  …  http://en.wikipedia.org/wiki/Disruptor
20:11 nine Much more interesting. The backtrace without cloning of classes. https://gist.github.com/1468875 Fails when trying to make a local copy of the tasks's code
20:13 nine wow...progress :) Removing the workaround for Parrot_clone not doing the Right Thing with subs actually makes the test work :)
20:14 benabik That sounds fishy.
20:14 benabik Does Parrot_clone DTRT, or is it doing the wrong thing but not exploding?
20:16 Yuki`N joined #parrot
20:16 nine Well I salvaged Parrot_thread_make_local_copy from the old threading code. The docs say: Creates a local copy of the PMC. This includes workarounds for Parrot_clone() not doing the Right Thing with subroutines (specifically, code segments aren't preserved and it is difficult to do so as long as Parrot_clone() depends on freezing).
20:17 dngor http://stackoverflow.com/questions/65593​08/how-does-lmaxs-disruptor-pattern-work
20:17 benabik Well, if Parrot_clone doesn't use freeze anymore, then it sounds golden.  :-)
20:17 nine Ah Disruptor! Yes, read about that
20:18 nine benabik: I think it still depends on freeze, but since currently I share code segments read only anyway, I actually can live with them not being cloned
20:19 nine Disruptor is http://martinfowler.com/articles/lmax.html
20:19 benabik Writable code segments is probably a Bad Idea anyway.  See all the recent work on NX bit, etc.
20:22 whiteknight bytecode really has to stay immutable. That's the only way to make things work
20:22 whiteknight once it's created and "loaded" for execution, it has to be immutable
20:25 nine Allowing only the main thread to load new bytecode also validates my current workaround in the GC. I only mark code in the main thread.
20:32 Hunger joined #parrot
20:35 lucian joined #parrot
20:38 nine Ok the rest of the task tests just test NYI stuff like send/receive
20:43 whiteknight send/receive are not implemented yet? How much effort you think that will take?
20:44 benabik aloha: Disruptor?
20:44 aloha benabik: Disruptor is http://martinfowler.com/articles/lmax.html
20:44 benabik It does pick up definitions not directed at it.  Useful.
20:47 nine whiteknight: well they are implemented for green_threads but have to be converted to using proxies. Can't imaging that being much work now that proxies and GC work in general
20:49 whiteknight okay
20:51 whiteknight if we have working locks, a simple mailbox/fifo wouldn't be hard to implement for those things
21:01 dalek Guitor: 3b722a4 | NotFound++ | examples/pokedit.winxed:
21:01 dalek Guitor: "Look, ma, I can write!"
21:01 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/3b722a4c09
21:04 nine Yep. But enough for today. Good night
21:12 whiteknight goodnight, nine
21:30 mj41 joined #parrot
21:34 wagle joined #parrot
21:34 perlite_ joined #parrot
21:53 cogno joined #parrot
22:18 alin joined #parrot
22:33 dalek Guitor: 174ba88 | NotFound++ | examples/pokedit.winxed:
22:33 dalek Guitor: paste from clipboard in example pokedit
22:33 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/174ba88007
22:45 nbrown joined #parrot
22:48 mj41 joined #parrot
23:06 dalek Guitor: ca4e75f | NotFound++ | examples/pokedit.winxed:
23:06 dalek Guitor: middle button paste in exaple pokedit, unfinished
23:06 dalek Guitor: review: https://github.com/NotFoun​d/Guitor/commit/ca4e75fd98
23:15 aloha joined #parrot
23:29 lucian joined #parrot

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

Parrot | source cross referenced