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