|
Parrot 3.10.0 "Apple Pi" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 2 December 2011. |
|||
|
00:30
whiteknight joined
01:02
kid51 joined
|
|||
| dalek | sella/genetic: 12dc30d | Whiteknight++ | s (7 files): Add Genetic to the build. Several fixes to make it build |
01:57 | |
| sella/genetic: b16f3f0 | Whiteknight++ | src/include/Genetic.winxed: Add in a header file for Genetic |
|||
| sella/genetic: 17a8978 | Whiteknight++ | s (8 files): Several fixes to the Genetic classes so that we can pass some basic adhoc tests. |
|||
|
02:41
alvis joined
02:43
JimmyZ joined
|
|||
| dalek | itor: f55a6ad | NotFound++ | src/Guitor.winxed: improve a bit the look of the menu items |
02:56 | |
| itor: 47d88f2 | NotFound++ | examples/pokedit.winxed: new example pokedit, a text editor (in progress) |
03:05 | ||
|
03:39
GeJ joined
|
|||
| dukeleto | cool, rosella is getting genetic algorithms | 03:59 | |
|
05:23
Nol888 joined
05:27
rfw joined
|
|||
| dalek | itor: 1e22980 | NotFound++ | / (3 files): Map and Unmap notify events |
05:36 | |
| itor: 424f9ff | NotFound++ | examples/pokedit.winxed: less coupling between controller and windows in example pokedit |
05:37 | ||
| itor: ab55756 | NotFound++ | examples/pokedit.winxed: bigger cursor in example pokedit |
05:58 | ||
|
06:37
baest joined
|
|||
| 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 : github.com/parrot/parrot/issues/228 | 06:46 | |
|
08:09
mj41 joined
|
|||
| dalek | kudo/ex-from-actions: f3f084c | moritz++ | src/Perl6/Actions.pm: thinko |
09:19 | |
|
09:24
snearch joined
09:36
contingencyplan joined
09:44
nbrown joined
|
|||
| dalek | kudo/ex-from-actions: 602996b | moritz++ | src/core/Exception.pm: be explicit about calling .gist IMHO it should work without it, but it does not. Not sure why |
10:14 | |
| kudo/ex-from-actions: df1294a | moritz++ | src/Perl6/Actions.pm: HLL::Compiler.lineof returns 0-based line numbers so add 1 to them for now |
|||
|
10:20
lucian joined
11:21
nbrown_ joined,
particle1 joined
|
|||
| dalek | p: f81b6c2 | moritz++ | src/HLL/ (2 files): return 1-based line numbers of HLL::Compiler.lineof |
11:27 | |
| p: dc0ca28 | moritz++ | src/stage0/ (6 files): update bootstrap |
|||
| kudo/ex-from-actions: b690654 | moritz++ | / (3 files): use a HLL::Compiler.lineof that returns 1-based line numbers |
11:29 | ||
|
11:30
preflex_ joined
12:32
schmooster joined
12:34
mtk joined
12:46
bluescreen joined
|
|||
| dalek | p: 86b9112 | moritz++ | src/HLL/Compiler.pm: backport lineof optimization from PCT This backports the binary search lineof optimization from PCTs HLLCompiler to HLL::Compiler.lineof |
12:55 | |
|
13:43
alin joined
|
|||
| dalek | kudo/nom: f3f084c | moritz++ | src/Perl6/Actions.pm: thinko |
13:51 | |
| kudo/nom: 602996b | moritz++ | src/core/Exception.pm: be explicit about calling .gist IMHO it should work without it, but it does not. Not sure why |
|||
| kudo/nom: df1294a | moritz++ | src/Perl6/Actions.pm: HLL::Compiler.lineof returns 0-based line numbers so add 1 to them for now |
|||
| kudo/nom: b690654 | moritz++ | / (3 files): use a HLL::Compiler.lineof that returns 1-based line numbers |
|||
| kudo/nom: de83900 | moritz++ | / (5 files): Merge branch 'ex-from-actions' into nom |
|||
| kudo/nom: c27eb70 | moritz++ | tools/build/NQP_REVISION: bump NQP revision to get lineof optimization |
|||
| kudo/nom: b20ab2e | moritz++ | src/core/Mu.pm: make uninitialized warnings more robust |
|||
|
14:11
preflex_ joined
14:24
muixirt joined
14:42
alvis joined
14:45
nbrown joined
|
|||
| moritz | what's the right way to copy a file to a directory? | 15:30 | |
| File.copy doesn't accept directories as destination :/ | |||
|
15:31
Psyche^ joined
|
|||
| moritz submits github.com/parrot/parrot/issues/229 | 15:42 | ||
| dalek | sella/genetic: 0608be1 | Whiteknight++ | s (9 files): Several refactors for 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. 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 | |
| aloha | (parrot/parrot) Issues opened : 229 (the copy method in the File dynpmc does not accept a directory as destination) by moritz : github.com/parrot/parrot/issues/229 | 15:47 | |
| dalek | kudo/parameter-perl: 9e3f3a2 | moritz++ | src/ (5 files): store the original perl source for Parameter in an attribute it turns out that there are so many cases to cover in Parameter.perl that reconstructing it from the various flags and attributes is much more complicated than simply storing the source code. At least that is my hope :-) Does not yet actually store the source |
15:48 | |
| kudo/parameter-perl: faf6af8 | moritz++ | src/Perl6/Actions.pm: try to record Parameter.perl |
|||
|
15:58
contingencyplan joined
15:59
bluescreen joined
16:53
estrabd joined
|
|||
| cotto | ~~ | 16:53 | |
|
17:06
nopaste joined,
TonyC joined
17:11
Tene joined
17:14
dmalcolm joined
17:31
tadzik joined
17:41
fperrad joined
|
|||
| dukeleto | ~~ | 17:50 | |
|
18:12
whiteknight joined
18:14
he_ joined
|
|||
| whiteknight | good afternoon, #parrot | 18:19 | |
|
18:26
benabik joined
|
|||
| PerlJam | whiteknight++ good advent to you! :) | 18:28 | |
| whiteknight | PerlJam: And a good advent to you too! | 18:29 | |
| benabik | o/ #parrot | 18:32 | |
| whiteknight | hello benabik | ||
|
18:33
baest joined
|
|||
| benabik | Hey whiteknight, how's things? | 18:33 | |
|
18:33
Hunger joined
|
|||
| whiteknight | benabik: pretty good, actually. You? | 18:39 | |
| benabik | whiteknight: Pretty good, other than this stupid statement of purpose. | 18:40 | |
| whiteknight | statement of purpose? | 18:41 | |
| benabik | For PhD applications. | ||
| whiteknight | oh, fun | ||
| "I intend to use my evil powers to take over the world, all the while laughing maniacally" | 18:42 | ||
| benabik | :-D | ||
| whiteknight | benabik: what area of study do you want to pursue? | 18:44 | |
| benabik | Programming Language Theory / Compilers. | ||
| whiteknight | heh, I was thinking the same kind of thing for myself | ||
| 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. | ||
| And compilers are the key to making it all actually do something. :-D | |||
| whiteknight | PerlJam: I'm not sure I can answer that question myself, much less write an entire post about it :) | ||
| benabik: I'm far more oriented towards practical applications than abstract theory | |||
| benabik | whiteknight: Haven't you learned anything from academia? An article posing a question is just as important as an answer. | ||
| atrodo | benabik++ | 18:46 | |
| benabik | whiteknight: I like playing both sides. I like to learn enough theory to create interesting applications. :-D | 18:47 | |
| (Note I didn't say _practical_ applications. ;-) | |||
| whiteknight | :) | ||
| PerlJam | the whole idea of "virtual machines" didn't really have *practical* application when it was invented ;) | 18:48 | |
| dalek | sella/genetic: ca807ca | Whiteknight++ | src/unstable/genetic/ (2 files): Add in two missing files |
18:49 | |
| benabik | genetic? | ||
| PerlJam | bioparrot? | ||
| whiteknight | oh, I'm playing around with a library for genetic algorithms | 18:50 | |
| nothing to look at yet | 19:03 | ||
| 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:19 | |
| whiteknight | dukeleto: It's probably capable now, just not very user-friendly | 19:20 | |
| nine | Good evening #parrot | 19:21 | |
| benabik | o/ nine | ||
| whiteknight | dukeleto: I've been writing tests similar, such as searching a 2D plane for the top point of a virtual pyramid | ||
| hello nine | |||
| dukeleto | whiteknight: virtual pyramids! Obviousy root-finding is not cool anymore. | 19:22 | |
| 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 | ||
| dukeleto | s/interesting/interested/ | ||
| whiteknight | nine: Here there be dragons. Namespaces are one of the dirtiest parts of Parrot | ||
| dukeleto | nine: gist the full error you get about ok not being found | ||
|
19:23
baest joined
|
|||
| 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 | ||
| dukeleto | nine: that might help | ||
| whiteknight: yes, that is the fun part :) | |||
| 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'] | ||
| 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:26 | |
| whiteknight | nine: somewhere along the line I suspect the new task isn't setting the current_namespace field of the call context | 19:27 | |
| or, is setting it incorrectly | |||
| 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 | ||
| For the code to "just work" you want it to either point to the namespace itself or point to a proxy for the namespace | |||
| 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:30 | ||
| 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? | ||
| 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 | ||
| nine | whiteknight: IIRC a Hash | 19:34 | |
| whiteknight | ah, I found an old quote that will be very helpful | 19:35 | |
| whiteknight> interp->HLL_namespace is a hash, not a namespace | |||
| whiteknight> and interp->class_hash is a namespace, not a hash | |||
| whiteknight> I love this code with all my heart | |||
| 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 | ||
| 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 | |||
| 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:42 | |
| benabik | We could have COW namespaces or some such. But that sounds like work for later. | 19:43 | |
| 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 :) | ||
| whiteknight | nine: disallowing packfile loading in all non-main worker threads seems like the best | 19:46 | |
| a tell_main_to_load_this_packfile_at_the_earliest_convenient_point opcode seems like a good idea | |||
| maybe with a shorter name | |||
| or tell_main_to_load_packfile_and_wait_till_its_done | 19:47 | ||
| moritz | defered_lock_packfile | ||
| *load | |||
| 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 | ||
| benabik | To start, probably better to just have load_packfile fail and let people use ordinary messaging to ask their main to do it. | ||
| whiteknight | nine: yeah, that works too | ||
| 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. | ||
| whiteknight | yes, that would be a very good idea | ||
| very | |||
| 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 | ||
| 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:50 | |
| Or a bit more coplicated by letting the waiting task sleep and wake it when the write is done... | 19:51 | ||
| benabik | sleep/wake is less certain. Have to check to see if you were woken for the reason you think. | 19:52 | |
| (Speaking from my experiences in Java.) | |||
|
19:52
snearch joined
|
|||
| 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:54 | |
| well, depending on overhead | 19:55 | ||
|
19:55
alin joined
|
|||
| nine | whiteknight: oh yes, I like this! | 19:55 | |
| 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 | 19:56 | ||
| dalek | kudo/nom: 92f3830 | moritz++ | src/core/Complex.pm: fix infix:<**> for 0 base and Complex numbers |
20:01 | |
| nine | gist.github.com/1468847 is the backtrace I now get | 20:02 | |
| dngor | Have you seen Disruptor? | 20:06 | |
|
20:06
lucian joined
|
|||
| whiteknight | Disruptor? | 20:09 | |
| benabik | Disruptor can mean: an energy weapon in Star Trek or Star Wars. A real weapon aka the Dazzler. A game for the PS1. ⦠en.wikipedia.org/wiki/Disruptor | 20:10 | |
| nine | Much more interesting. The backtrace without cloning of classes. gist.github.com/1468875 Fails when trying to make a local copy of the tasks's code | 20:11 | |
| wow...progress :) Removing the workaround for Parrot_clone not doing the Right Thing with subs actually makes the test work :) | 20:13 | ||
| benabik | That sounds fishy. | 20:14 | |
| Does Parrot_clone DTRT, or is it doing the wrong thing but not exploding? | |||
|
20:16
Yuki`N joined
|
|||
| 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:16 | |
| dngor | stackoverflow.com/questions/6559308...ttern-work | 20:17 | |
| benabik | Well, if Parrot_clone doesn't use freeze anymore, then it sounds golden. :-) | ||
| nine | Ah Disruptor! Yes, read about that | ||
| 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:18 | ||
| Disruptor is 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. | ||
| whiteknight | bytecode really has to stay immutable. That's the only way to make things work | 20:22 | |
| once it's created and "loaded" for execution, it has to be immutable | |||
| 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:25 | |
|
20:32
Hunger joined
20:35
lucian joined
|
|||
| nine | Ok the rest of the task tests just test NYI stuff like send/receive | 20:38 | |
| whiteknight | send/receive are not implemented yet? How much effort you think that will take? | 20:43 | |
| benabik | aloha: Disruptor? | 20:44 | |
| aloha | benabik: Disruptor is martinfowler.com/articles/lmax.html | ||
| benabik | It does pick up definitions not directed at it. Useful. | ||
| 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:47 | |
| whiteknight | okay | 20:49 | |
| if we have working locks, a simple mailbox/fifo wouldn't be hard to implement for those things | 20:51 | ||
| dalek | itor: 3b722a4 | NotFound++ | examples/pokedit.winxed: "Look, ma, I can write!" |
21:01 | |
| nine | Yep. But enough for today. Good night | 21:04 | |
| whiteknight | goodnight, nine | 21:12 | |
|
21:30
mj41 joined
21:34
wagle joined,
perlite_ joined
21:53
cogno joined
22:18
alin joined
|
|||
| dalek | itor: 174ba88 | NotFound++ | examples/pokedit.winxed: paste from clipboard in example pokedit |
22:33 | |
|
22:45
nbrown joined
22:48
mj41 joined
|
|||
| dalek | itor: ca4e75f | NotFound++ | examples/pokedit.winxed: middle button paste in exaple pokedit, unfinished |
23:06 | |
|
23:15
aloha joined
23:29
lucian joined
|
|||