|
Parrot 3.9.0 "Archaeopteryx" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 19 October 2011. |
|||
| whiteknight | dukeleto: when do we hear back from google? | 00:34 | |
| cotto: ping | 00:44 | ||
| nine: ping | |||
| Patterner | dev-lang/nqp 2011.10 appeared on Gentoo :) | 01:11 | |
| whiteknight | nice | 01:12 | |
| dalek | rrot/green_threads: 4295769 | Whiteknight++ | src/pmc/ (2 files): Add a current_task method to ParrotInterpreter to get the current task object (if any). Add code() and data() methods to Task to get/set the code and data object |
01:40 | |
| whiteknight | msg nine I added a few helper methods in github.com/parrot/parrot/commit/4295769171. Let me know what you think about those | 01:45 | |
| aloha | OK. I'll deliver the message. | ||
| cotto | whiteknight: pong | 01:46 | |
| whiteknight: I'm heading home but will be on in 15 minutes or so | |||
| whiteknight | cotto: I want to start talking about a green_threads merge soon. Any reservations? | ||
|
02:02
bluescreen joined
02:03
bluescreen_ joined
|
|||
| cotto | d'oh | 02:09 | |
|
04:45
eternaleye_ joined
05:16
eternaleye_ joined
05:26
eternaleye_ joined
06:15
eternaleye_ joined
|
|||
| nine | msg whiteknight excellent! Makes it rather hard to forget the gc write barrier | 06:25 | |
| aloha | OK. I'll deliver the message. | ||
|
06:32
eternaleye__ joined
06:47
zby_home joined
07:32
fperrad joined
07:58
nbrown joined
09:43
mj41 joined
09:46
zby_home_ joined
09:57
nbrown joined
10:14
jsut joined
10:44
Shozan joined
11:08
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 11:14 | |
| tadzik | good morning whiteknight | ||
| whiteknight | hello tadzik, how are you doing today? | ||
| tadzik | pretty good, how about you? | 11:16 | |
|
11:16
jsut_ joined
|
|||
| whiteknight | tadzik: doing well. Woke up before everybody else to get some quiet hacking time in | 11:23 | |
| tadzik | ha | 11:24 | |
| whiteknight | I don't think I understand why Parrot has random number generation functions built in to libparrot, but those functions are only exposed through a dynop | 11:30 | |
| Either we should expose them since they are in libparrot, or we should move them out of libparrot | |||
|
11:38
Psyche^ joined
|
|||
| moritz | the whole distinction of what is an op and what is a dynop seems very arbitrary | 11:42 | |
| why is sqrt built-in but exp isn't? | 11:43 | ||
| because sqrt is taught earlier in school? | |||
| I think a better approach would be to say: we want to support perl, js, ruby, python, javascript, TCL, lua | 11:45 | ||
| does the majority of those languages need $op? | |||
| if yes, make it an ordinary op | 11:46 | ||
| if only one or two needs $feature, make it a dynop | |||
| whiteknight | moritz: I do not like, and never have liked, dynops. I don't think they are necessary | 11:58 | |
| moritz: the real question is whether a piece of functionality should be exposed as an op (relatively few, very simple) or as a PMC/Object | 11:59 | ||
| dalek | rrot: 7822dc1 | Whiteknight++ | src/pmc/integer.pmc: add a set_random method to Integer PMC to get a random number without needing to load the math dynops |
12:02 | |
| whiteknight | moritz: and for the record, most of the dynops nqp and rakudo use should probably be merged into Parrot eventually, especially the ones for 6model-related stuff | 12:03 | |
| dalek | sella: d61a7a2 | Whiteknight++ | src/query/ (3 files): Add an implementation of the knuth-fisher-yates shuffle, using the new set_random method in Parrot |
12:08 | |
|
12:33
preflex_ joined
12:35
prefle_x joined
12:42
mj41 joined
13:06
SHODAN joined
13:15
preflex_ joined
14:31
JimmyZ joined
14:49
mj41 joined
15:01
bluescreen joined
|
|||
| dukeleto | ~~ | 15:19 | |
| moritz: i agree, the distinction of what should be an op and what should be a dynop are far from clear | 15:21 | ||
| moritz: but the concept of a dynop is very useful the embedded/mobile sphere | 15:22 | ||
| in theory, a "mobile parrot" will have very little linked in by default, and individual instances of parrot can load ops at runtime via the dynop machinery | |||
|
15:38
bluescreen joined
|
|||
| dalek | rrot: 8b03f39 | dukeleto++ | ChangeLog: Update changelog |
15:45 | |
| dukeleto | PackFile_Header_validate: This Parrot cannot read bytecode files with version 10.0. | 16:20 | |
| that error message really irks me | |||
| it would be nice if it said which bc versions *were* supported | |||
| dalek | rrot-libgit2: 6b04b2f | dukeleto++ | setup.winxed: Clean up git2.pbc |
16:28 | |
| rrot-libgit2: 5a71fec | dukeleto++ | t/pir/001_load.t: Add another PIR test for git_repository_index |
|||
|
16:37
whiteknight joined
|
|||
| dukeleto | whiteknight: do you know of any examples of NCI being used from Winxed? | 16:40 | |
| whiteknight | dukeleto: plobsing's deep-clone repo does it | 16:41 | |
| dalek | rrot-libgit2: 8ae4454 | dukeleto++ | / (2 files): Refactor Git2.Repository and winxed tests |
16:42 | |
| dukeleto | whiteknight: oooh | ||
| nine | whiteknight: do I need the GC write barrier on any change of a PMC's internals or only when I change members that are PMCs themselves? | 16:49 | |
| whiteknight | nine: any time you add/change a PMC or STRING in the PMC, so the GC knows to keep track of the changes | 16:50 | |
| nine | whiteknight: ok, so not if I change an int or the private flags | 16:51 | |
| whiteknight | no, the GC doesn't care about those things | ||
| nine: what are you working on now? | 16:53 | ||
| nine | whiteknight: branched a threads branch off green_threads | 16:54 | |
| whiteknight | oh nice | ||
| I'm going to run through the green_threads code again looking for last cleanups, then I think I'm going to start merging | |||
| nine | whiteknight: brought back some of the OS threading abstractions from before kill_threads | ||
| whiteknight | nine: okay, none of the abstractions were bad, we just weren't using them | 16:55 | |
| nine | whiteknight: also moved the enable_preemption flag to a scheduler.pmc private flag | ||
| whiteknight | nine: as you go, if you accidentally fix up some of the naming conventions and other cleanups, that would be fine by me :) | ||
| nine | will do as I recognize them ;) | 16:56 | |
| oh....girlfriend called. On her way home and hungry -> me afk | 16:58 | ||
| whiteknight | nine: I am going to try to move the enable_scheduling and enable_preemption flags to be attributes of the scheduler or interp or something. Concurrency abhors global variables | 17:07 | |
| any opinions on where things move? | 17:08 | ||
|
17:14
soh_cah_toa joined
|
|||
| dukeleto | whiteknight: both seem reasonable to be put in interp. To me, at least. | 17:15 | |
| whiteknight | dukeleto: I'm putting them in the scheduler for now. | ||
| dukeleto | whiteknight: that sounds good too :) | ||
| whiteknight | because it looks like the interps share schedulers for child/parent interps | ||
| so it would be really complicated to be scheduling based on per-interp rules with a shared scheduler trying to keep up | 17:16 | ||
| dukeleto | whiteknight: wfm | ||
|
17:16
Khisanth joined
|
|||
| whiteknight | of course, the system nine puts into place eventually might be different. it's an easy move if we need | 17:16 | |
|
17:22
AzureStone joined
17:23
GodFather joined
17:26
AzureStone joined
|
|||
| dukeleto | whiteknight: what is the equivalent of Data::Dumper in winxed? | 17:28 | |
| dalek | p: d116187 | jnthn++ | src/HLL/SerializationContextBuilder.pm: Give SymbolTable::Event a more optimal constructor. |
17:29 | |
| whiteknight | dukeleto: Rosella.Dumper, though it's still in development | 17:36 | |
| dukeleto | plobsing: ping | 17:37 | |
| whiteknight | dukeleto: Rosella.Dumper.default_dumper().dump(myObj); | 17:41 | |
| dukeleto | whiteknight++ | 17:42 | |
| whiteknight: that needs an alias :) | |||
| msg NotFound github.com/NotFound/winxed/issues/14 | |||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | dukeleto: that is the alias. the default_dumper() is just a pre-configured global instance | 17:44 | |
| dalek | rrot-libgit2: 6ebe5c4 | dukeleto++ | / (4 files): Trade a 'null pmc access' error for a coredump (Movin' on up... to the east side...) |
||
|
17:47
iana joined
|
|||
| dukeleto | whiteknight: have you used StructView much? | 17:50 | |
| whiteknight | no | ||
| plobsing | dukeleto: pong | 17:52 | |
| dukeleto | plobsing: i have gotten further on github.com/letolabs/parrot-libgit2/issues/7 | 18:03 | |
| plobsing: but could use your help | |||
| plobsing | I'll look into that now | ||
| dukeleto | plobsing: it seems that structview.alloc() is returning a null pointer | ||
| dalek | rrot/green_threads: e6fa7fc | Whiteknight++ | / (7 files): rename enable_event_checking -> Parrot_runcore_enable_event_checking, disable_event_checking -> Parrot_runcore_disable_event_checking. Move the enable_preemption and enable_scheduling flags from global variables into scheduler attributes |
18:05 | |
| dukeleto | plobsing: or, somehow trying to store the result of alloc() into my ptr variable is not working | ||
| plobsing: i am using the latest parrot + rosella master | 18:07 | ||
| plobsing | I'm having winxed problems, so I'm trying to rebuild, but latest parrot/master isn't building for me. | ||
| dukeleto | plobsing: oh noes! | ||
| plobsing: what are you seeing? | |||
| plobsing | wtf. someone added random functionality to integer.pmc? | 18:08 | |
| dukeleto | plobsing: not just someone... | 18:09 | |
|
18:09
zby_home joined
|
|||
| whiteknight | plobsing: I added it | 18:09 | |
| dukeleto | plobsing: whiteknight did, by request from rakudo, methinks | ||
| whiteknight | no, no request | ||
| just me looking for a way to get it | |||
| plobsing | well it doesn't compile | 18:10 | |
| whiteknight | doesn't? | ||
| plobsing | mixed declarations and code | ||
| whiteknight | bleh | ||
| let me lok | |||
| look | |||
| dukeleto | we need distributed testing across compilers and platforms SO BADLY | 18:11 | |
| cotto++ and I attended a talk about distributed testing at the mentor summit | 18:12 | ||
| whiteknight | we need to drop g++ support, and move up to a modern C standard | ||
| dukeleto | trying very hard to decide between jenkins and buildbot | ||
| plobsing | this is gcc 4.6 | ||
| dukeleto | whiteknight: my irony-ometer went off the charts | ||
| plobsing | on linux | ||
| no excuses for exotic platforms | |||
| whiteknight | plobsing: I'm not making excuses for that failure, but in the wider sense we should move to a better C standard | 18:13 | |
| dalek | rrot: 98dcec0 | Whiteknight++ | src/pmc/integer.pmc: fix build failure |
||
| plobsing | when the company that makes the OS most people use updates to a better standard, or most people update to a better OS... | 18:14 | |
| not sure which is more likely | |||
| dukeleto: StructView.alloc() *isn't* being called | 18:21 | ||
| because your winxed-level constructor isn't being invoked | |||
| cotto | ~~ | 18:22 | |
| plobsing | dukeleto: also, it would be nice to warn about rosella not being installed when it is needed for tests | 18:23 | |
| dukeleto | plobsing: point taken | 18:25 | |
| plobsing: i used to bundle, but i had to bundle pbc and that was really dumb, so I removed that. | |||
| plobsing: obviously, i really suck at Winxed | 18:26 | ||
| dukeleto self.flagelates() | 18:27 | ||
| plobsing | whiteknight: (re: random on integer.pmc) I think a better solution would be to expose the PRNG state as a PMC and expose the functionality that way. the interp could contain one to be used to access the global PRNG state. | ||
| whiteknight | plobsing: yeah, I think there are better ways to do it, this isn't a final solution by any means | ||
| it would be easiest to just move the rand-related ops from math.dynops to core ops | 18:28 | ||
| plobsing | ok, so long as we're not setting a precedent of throwing unrelated methods on builtin PMCs as "proper design" | ||
| dukeleto | whiteknight: what about loading math.dynops by default, but make that configurable? | ||
| whiteknight | what bothered me most this morning was that we have Parrot_util_ random-related functions in libparrot, but we don't expose them to the user without dynops | ||
|
18:28
Khisanth joined
|
|||
| dukeleto | plobsing: yeah, i kind of agree with you | 18:29 | |
| sorear | why DO we have so much of libparrot's and libc/libm's functionality exiled to dynops? | ||
| dukeleto | many design issues hinge on whether the parrot being built is meant for a beefy desktop or a mobile processor | 18:30 | |
| moritz | because people were excited about a "lean core" | ||
| dukeleto | sorear: parrot is meant to be lean by default | ||
| moritz: i still am | |||
| moritz: desktops are not the future. Mobile is. | |||
| whiteknight | yes, parrot should be lean. But having the functionality in libparrot, but having the interfaces elsewhere is not lean | ||
| moritz | dukeleto: I thought parrot was meant for high-level languages | ||
| plobsing | whiteknight: I find the concept that libparrot always contains an implementation of drand48, when my stdlib contains that already, to be pretty stupid. | ||
| dukeleto | moritz: this doesn't need to be a problem | ||
| moritz: yes, HLLs on desktops and mobile | 18:31 | ||
| moritz | dukeleto: and i believe that the future is a *fat* mobile phone :-) | ||
| dukeleto | moritz: agreed | ||
| i think the parrot build system needs the concept of a "flavor" | |||
| the mobile "flavor" has only core ops, "tasty" which has most common ops+dynops that HLLs want, and perhaps a "beefy" which loads the entire kitchen sink | 18:32 | ||
| right now, you have to hack the build system to do something like that | |||
| whiteknight | that metaphore has already gone too far | ||
| dukeleto | or we have to fight over what is an op and what is a dynop | ||
| whiteknight: i can go much further :) | |||
| sorear | moritz: if we're really serious about being lean, we should make dynops and dynpmcs out of subsystems that have a _non_ neglible code footprint | ||
| whiteknight | sorear: yes. | 18:33 | |
| plobsing | like IO | ||
| whiteknight | we need a major refactor of IO before that becomes possible | ||
| dukeleto | sorear: make sure you take into account the Law of Conservation of Tuits | ||
| sorear: being serious and having the tuits to do something are orthogonal | 18:34 | ||
| plobsing: mobile apps still want IO, so that just seems to be an abstraction for abstractions sake | 18:35 | ||
| plobsing: even if it is not a lot of code | |||
| plobsing: the constraint is use, not SLOC | |||
|
18:35
GodFather joined
|
|||
| dukeleto | plobsing: so my alloc() function is not running. How am I abusing Winxed? I don't feel like this is documented. | 18:36 | |
|
18:36
alvis joined
|
|||
| plobsing | dukeleto: 'new X' doesn't call the winxed constructor. it is equivalent to 'new "X"'. use 'new X()' to get the constructor. | 18:36 | |
| dukeleto | plobsing: blarg! | 18:37 | |
| plobsing | dukeleto: there is a lot of IO code that isn't necessary to write a large class of usefull programs | ||
| dukeleto | plobsing: sure, i agree. | 18:39 | |
| # Cannot resume dead coroutine. | |||
| first time I've ever seen that. Awesome. | |||
| plobsing: thanks for unsticking me! | 18:45 | ||
| dalek | rrot-libgit2: d09f610 | dukeleto++ | src/git2.nci: Update to the fluffy unicorn deliciousness of libgit2 v0.15 |
18:53 | |
| rrot-libgit2: 0f44d93 | dukeleto++ | t/winxed/001_load.t: Actually call the Git2.Repository constructor, fixes #7, plobsing++ |
|||
| rrot-libgit2: b9988c9 | dukeleto++ | src/Git2/Repository.winxed: Fix size of the git_cache StructView |
|||
| dukeleto | plobsing: so close to getting it working | 18:56 | |
|
18:58
nbrown joined
|
|||
| dukeleto | plobsing: is "yield" in winxed documented somewhere? | 18:58 | |
| plobsing | winxed has documentation? | 19:12 | |
| I usually just RTFS | 19:13 | ||
| whiteknight | whiteknight.github.com/Rosella | ||
| whiteknight.github.com/Rosella/winxed | |||
| if a coroutine exits, it is dead and can't just be called again like a normal function | 19:14 | ||
| I protested that decision, but apparently it's better this way for whatever reason | 19:15 | ||
| dukeleto | whiteknight: good to know | ||
| whiteknight | you have to reset the coroutine, but I don't think there is a "I am dead" flag you can check before running into the exception | ||
| ...another decision I protested | |||
| dukeleto | whiteknight: your docs state that no nested namespace sugar exists, but i think that was added recently, right? I am using it | ||
| whiteknight | yeah, it was added recently. The docs are a little outdated | 19:16 | |
| Rosella uses them pretty extensively now too | |||
| cotto | How's it a bad idea to be able to know if a coroutine is callable? | ||
| whiteknight | no idea | 19:18 | |
| now would be a perfect time to re-think coroutines, if any architects in the house are open to it | |||
| cotto looks around | |||
| whiteknight | cotto: also, I want to merge green_threads. Any objections? | ||
| cotto | whiteknight, go for it | 19:19 | |
| whiteknight | you had me at "go for it" | ||
| cotto | ...ok | ||
| dukeleto | plobsing: what is the yield statement in the example you gave me supposed to do? | 19:21 | |
| plobsing | which example? | 19:25 | |
| dukeleto | plobsing: on github.com/letolabs/parrot-libgit2/issues/7 | 19:26 | |
| plobsing | that's supposed to make use of only one structview PMC. other idioms for this pattern exist (for example, using a constant). | 19:28 | |
|
19:33
Khisanth joined
19:37
contingencyplan joined
19:43
Khisanth joined
|
|||
| dukeleto | i see no docs nor tests for yield in winxed | 19:44 | |
| dukeleto sighs | |||
| dalek | rrot-libgit2: cddea6b | dukeleto++ | / (2 files): Refactor Cache and RefCache into their own winxed files |
19:45 | |
| rrot-libgit2: d91b14a | dukeleto++ | / (4 files): Add the Cache and RefCache classes |
|||
| dukeleto | cotto: this is making me lean towards jenkins ... pkg.jenkins-ci.org/debian/ | ||
| cotto | dukeleto, that's some good laziness | 19:52 | |
| dukeleto | plobsing: do you have any insight into this? github.com/letolabs/parrot-libgit2/issues/8 | 19:57 | |
| plobsing: i am stuck again | |||
|
19:58
Khisanth joined
20:01
soh_cah_toa joined
|
|||
| dalek | kudo/nom: 40f181b | moritz++ | src/Perl6/Actions.pm: fix "cannot have attributes" error message for the mainline. jnthn++ |
20:12 | |
| sella/gh-pages: 0a0bbe9 | Whiteknight++ | winxed/ (5 files): Several updates and additions to documentation |
20:13 | ||
| whiteknight | dukeleto: yield in winxed is the same as yield in Parrot. I use it several times in Rosella | 20:14 | |
| dukeleto: what do you need to know about it? | |||
| dalek | rrot: 17a6980 | Whiteknight++ | / (56 files): Merge branch 'green_threads' |
20:15 | |
| whiteknight | ladies and gentlemen, Parrot officially has green threads. nine++ | 20:16 | |
| msg nine seriously, I'm amped about threads. Tell me what you need. Point me in any direction and let me loose | |||
| aloha | OK. I'll deliver the message. | ||
| moritz | nine++ | ||
| dalek | p: b498832 | moritz++ | tools/build/PARROT_REVISION: bump PARROT_REVISION to after the green_threads merge to get some more testing |
20:17 | |
| whiteknight | nine++ indeed | 20:18 | |
| dalek | rrot: aed1bca | Whiteknight++ | ChangeLog: Add note about green_threads to ChangeLog |
||
| cotto | nine++ | 20:19 | |
|
20:20
Khisanth joined
|
|||
| whiteknight | nine has already moved on to real threads, thats where the hard work is | 20:24 | |
| I'm going to add eventing to Rosella, then I'm going to join him | 20:25 | ||
|
20:27
whiteknight left,
whiteknight joined
20:28
whiteknight joined
20:29
whiteknight joined
|
|||
| nine | woah...away for just three hours and my branch got merged :) thanks whiteknight | 20:29 | |
| whiteknight | nine: no, thank you :) | ||
| nine | whiteknight: regarding enable_preemption and enable_scheduling: I changed enable_preemption to a scheduler flag already in the threads branch | 20:30 | |
| whiteknight | nine: okay, well both are scheduler attributes in master. Feel free to change them to flags if you prefer | ||
| or, I can cargo-cult that change | 20:31 | ||
| nine | well I'm not sure what the better place is anyway. But since flags were there I thought I could as well just use them ;) | ||
| ttbot | Parrot 3fe43f82 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/55982 | ||
| whiteknight | doing the flags is much more limited, but doesn't require the extra pointer deref | 20:34 | |
| nine | well those two flags are very boolean and have a very limited purpose. So I guess limited is okay. And Parrot_cx_preemption_enabled is called twice for every alarm. | 20:37 | |
| whiteknight | ok | 20:38 | |
| nine | One other thing that came to my mind: the HLL is responsible for sharing PMCs between threads but this is not really needed for tasks. Since the HLL sees only tasks which the scheduler may move to a different thread, the HLL is missing some information to make that decision. | 20:43 | |
|
20:51
perlite joined
|
|||
| nine | On the other hand, the number of shared PMCs might give the scheduler a clue if a task is better left on the same thread or moved to it's own. Though the number of actual writes would be much more useful for that... | 21:21 | |
|
21:27
rfw joined
|
|||
| whiteknight | nine: We can have that be an option. Add a "stay on this thread" arg to the schedule op | 21:53 | |
| if 1, we always stay on the same thread. If 0, do whatever makes sense | |||
| then the HLL compiler can generate whichever code it wants | 21:54 | ||
| whiteknight actually has no idea how he wants to do eventing for Rosella | 22:11 | ||
| putting the architecture together in a way that doesn't suck is surprisingly hard | |||
| it also doesn't help that I keep trying to support more features than is reasonable or even desirable | 22:13 | ||
|
22:42
soh_cah_toa joined
23:05
kid51 joined
|
|||
| kid51 | nopaste? | 23:13 | |
| aloha, nopaste? | |||
| aloha | kid51: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) | ||
| nopaste | "kid51" at 192.168.1.3 pasted "t/pmc/nci.t: New failure on darwin" (54 lines) at nopaste.snit.ch/90961 | 23:16 | |
| dukeleto | looks like an overflow/underflow issue | 23:18 | |
| kid51 | Is the test perhaps too specific OS-wise? | 23:19 | |
| The only recent change in the test file itself was: | 23:23 | ||
| + # Need to force reschedule to see async callbacks. | |||
| + # Chandon TODO: Is this a bug? | |||
| + sleep 0.001 | |||
| The failing test is essentially unchanged since 2008 -- and appears to have been originally written by Leo in 2004! | 23:25 | ||
|
23:27
whiteknight joined
|
|||
| whiteknight | good evening, #parrot | 23:32 | |
| dukeleto | i am really impressed by jenkins | 23:36 | |
| kid51 | Hmm, it appears that my report last night that green_threads was passing on Darwin was wrong. | 23:37 | |
| This smolder report shows that failure was present in green_threads branch on Darwin: smolder.parrot.org/app/projects/rep...ails/24192 | |||