|
Parrot 4.2.0 "Ornithopter" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 21 March 2012. |
|||
|
00:32
nbrown joined
00:52
whiteknight joined
|
|||
| dalek | sella: f68937d | Whiteknight++ | s (4 files): [Xml] Break parsing out into a new file. Fix a bug where not having whitespace at the end was causing errors |
01:54 | |
| sella: 1092e15 | Whiteknight++ | / (2 files): [Xml] Add in a rudimentary test file to prove that we can parse certain strings without parse errors. Doesn't test content, only shows that we don't error out |
|||
| sella: d6c1342 | Whiteknight++ | / (4 files): [Xml] use separate EndTag objects to mark the end of a tag. Use DocumentRoot to keep track of document elements and simplify searching for the root tag. More error detection and tests |
|||
|
02:31
benabik joined
04:13
jsut joined
04:55
contingencyplan joined
06:20
brrt joined
|
|||
| nine | Good morning, #parrot | 06:42 | |
|
07:04
jsut_ joined
07:05
brrt joined
|
|||
| tadzik | high nine! | 07:54 | |
| moritz | \\9/ | ||
|
08:18
lucian joined
|
|||
| dalek | rrot: e68d18a | alvis++ | tools/release/parrot_github_release.pl: Fixed incorrect taret -- i.e., push to gh-pages not master in 'parrot-docsx' repo. |
09:21 | |
| rrot: 8762210 | alvis++ | / (5 files): Merge branch 'ayardley/parrot_github_release' |
|||
| rrot: da3ed58 | alvis++ | docs/project/release_manager_guide.pod: Added Whiteknight as the Release Manager for May 15, 2012. |
09:25 | ||
| aloha | (parrot/parrot.github.com) Issues closed : 6 (Automate publication of documents to 'parrot.github.com' and archiving of previous documentation release in the relevant repo) by ayardley : github.com/parrot/parrot.github.com/issues/6 | 09:47 | |
|
09:58
PacoAir joined
|
|||
| arnsholt | I get compilation error when trying to build Parrot (for Rakudo): "/opt/local/include/unicode/uset.h:250: error: function declaration isnāt a prototype" | 11:20 | |
| When compiling src/string/encoding/shared.c | |||
| Sounds like something's up with ICU, but not entirely sure what | 11:21 | ||
| Anyone know what's going on with this? (This is on OS X with ICU from MacPorts) | |||
|
11:35
ingy joined
11:36
lucian joined,
not_gerd joined
|
|||
| not_gerd | arnsholt: see github.com/parrot/parrot/issues/747 | 11:37 | |
| should be fixed in master (ie --gen-parrot=master) | |||
| if that doesn't work, you could also fix the ICU header | |||
| arnsholt | Awesome. Cheers! | 11:38 | |
| I'll definitely try --gen-parrot=master first | |||
| moritz | arnsholt: if that works, we should bump PARROT_REVISION | 11:41 | |
|
11:41
benabik joined
|
|||
| arnsholt | moritz: Quite. I'll keep you posted | 11:42 | |
| My laptop is currently busy whirring it fans, and possibly some other stuff as well | |||
| Into the NQP build now | 11:43 | ||
| benabik | o/ #parrot | 11:44 | |
| arnsholt | moritz: NQP and Parrot built successfully | 11:46 | |
| moritz | \\o/ | ||
| dalek | p: 55fe6c6 | moritz++ | tools/build/PARROT_REVISION: bump parrot revision to get MacOS build fixes |
11:47 | |
| benabik | Mac OS build fixes? | 11:48 | |
| dalek | kudo/nom: 2bf52d5 | moritz++ | tools/build/NQP_REVISION: bump NQP revision |
||
| moritz | benabik: see backlog (ICU header stuff) | ||
| benabik | Oh yes. Forgot about that. :-/ | ||
| My first thought was "it builds fine for me", but I keep master around, not releases. | 11:49 | ||
| dalek | kudo/nom: e047fb4 | moritz++ | tools/build/Makefile.in: t/02-embed is gone |
12:00 | |
|
12:11
not_gerd left
|
|||
| dalek | kudo/nom: be058f9 | (Carl MƤsak)++ | src/core/Range.pm: [src/core/Range.pm] removed stale comment |
12:14 | |
|
12:15
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:19 | |
| benabik | o/ whiteknight! | 12:20 | |
| whiteknight | benabik!! | ||
| dalek | rrot/m0: 9dbe056 | jimmy++ | src/m0/c/include/m0_interp_structures.h: added TODO to m0_interp_structure.h |
12:21 | |
|
12:22
Khisanth joined
12:30
hercynium joined
|
|||
| whiteknight | here's an interesting link about JITs: tirania.org/blog/archive/2012/Apr-04.html | 12:33 | |
| And here's a fun link: 0x10c.com/doc/dcpu-16.txt | 12:37 | ||
| benabik | I was very surprised to find that 0x10c was real. | 12:38 | |
| The backstory is amusing. | |||
| whiteknight | yes it is | 12:39 | |
| I would love to put together a little assembler for something like this | |||
| dalek | rrot/m0: d89a519 | jimmy++ | src/m0/c/include/m0_interp_structures.h: updated TODO |
12:40 | |
| benabik | whiteknight: GSoC applications are due tomorrow, aren't they? Have we gotten any more? | 12:43 | |
| whiteknight | We got one draft sent to parrot-dev last night, another student who said he would send me a draft this morning, and we saw a student last night who seems interested and motivated enough | 12:44 | |
| so I think we're going to get at least 2 more before tomorrow | |||
| benabik | Coolness | ||
| moritz | somebody please reply to Justin | ||
| I mean, with more details than the current reply/replies | |||
| whiteknight | moritz: I've looked at it, I don't think it's too far off | 12:45 | |
| He doesn't have a lot of prior coding experience, so the proposal really shouldn't get much more ambitious | 12:47 | ||
|
13:05
mtk joined
13:06
particle joined
|
|||
| whiteknight | brrt: ping | 13:19 | |
|
13:31
jashwanth joined
|
|||
| jashwanth | whiteknight:hello | 13:31 | |
| whiteknight | hello jashwanth | 13:32 | |
| jashwanth: are exams over? | |||
|
13:33
_mayank joined
|
|||
| jashwanth | whiteknight:no the next one is day after tomorrow so came to check the status | 13:34 | |
| whiteknight | jashwanth: no new status. Your proposal hasn't gotten any new feedback or concerns | 13:35 | |
| nine | whiteknight: especially the discussion in the comments of your linked JIT article is very interesting indeed | ||
| whiteknight | yes | 13:38 | |
| good morning _mayank | 13:40 | ||
| or, I guess it's afternoon over there | 13:41 | ||
| _mayank | good morning whiteknight | 13:43 | |
| well yes it's almost evening here | |||
| whiteknight | I'm still learning the time difference :) | ||
| jashwanth | _mayank:hello | ||
| _mayank | I am still working on the proposal, it turned out to be more engaging than expected | 13:44 | |
| jashwanth: hi! | |||
| whiteknight | _mayank: if you have any questions or concerns, let me know | ||
| jashwanth | _mayank:which college in hyd? | 13:45 | |
| _mayank | whiteknight: I am finding it difficult to write the timeline. I mean I have very broad division of tasks, I somehow need to go finer into it. | 13:46 | |
| whiteknight | _mayank: send me what you have, I'll help refine it | 13:47 | |
| _mayank | just give me a couple of minutes, let me clean up a bit. | ||
| whiteknight: Should a google doc be ok? or should I send to your email? | 13:51 | ||
| whiteknight | _mayank: either is fine. Email is probably faster | 13:53 | |
| brrt | whiteknight: i'm here | 13:55 | |
| _mayank | sent | ||
| benabik | "A simple Python-based DCPU assembly compiler":pypi.python.org/pypi/0x10c-asm/0.0.2 | 14:00 | |
| whiteknight | brrt: Are you still interested in a ModParrot project? | ||
| brrt | yes, i am | 14:01 | |
| i was going to fill in applications today, but haven't had the time for it yet | 14:02 | ||
| whiteknight | brrt: Okay, no rush! I just wanted to make sure I didn't miss anything while I was sleeping | 14:06 | |
| brrt: A working ModPerl6 would be a great thing to add at the end of the summer, if you still want to do something Rakudo-related | |||
| (Just giving ideas) | |||
| PerlJam | brrt: I agree with whiteknight about modperl6 :-) | 14:07 | |
| whiteknight | If ModParrot is flexible enough, loading in any HLL libraries can be done with an apache config file somewhere | 14:08 | |
| Setting up tests for that would be a bear | |||
| nine | Isn't mod_anything a rather outdated approach? | 14:21 | |
|
14:22
hercynium joined
|
|||
| benabik prefers fcgi. | 14:22 | ||
| atrodo prefers reverse proxy | 14:23 | ||
| benabik | I'd suggest some sort of Parrot CGI based on PWSGI/PSGI/Rack, with cgi, fcgi, server interfaces. :-) | 14:24 | |
| atrodo | I like that idea best | ||
| benabik | I think I actually did suggest that on a wiki somewhere. | ||
| github.com/parrot/parrot/wiki/Projects (under Web Services) | 14:25 | ||
| brrt | modrakudo would be awesome | ||
| benabik | The mod_ approach is definitely reasonable. Especially for things that want deeper tinkering with Apache than just CGI. | 14:26 | |
| whiteknight | *ideally* it should be as easy as a load_language("perl6") call, although I don't know if that will work | ||
| benabik | I find the WSGI/Plack/Rack approach to be more flexible. | ||
| whiteknight | benabik: I'm not too familiar with any of those things. They're CGI? | ||
| atrodo | whiteknight> Yes-ish | 14:27 | |
| benabik | whiteknight: Create a function that returns an array of [status, data]. It becomes a web page. | ||
| atrodo | much more flexible and efficient tho | ||
| whiteknight> search.cpan.org/~miyagawa/PSGI-1.10...pplication but WSGI/Rack are very similar for python/ruby | 14:28 | ||
| moritz | WSGI is an interface for dynamic web stuff, much like CGI, but the data is passed around in ordinary data structure, not in env vars/STDIN as CGI does | 14:29 | |
| Plack is an implementation thereof | |||
| mod_{perl,parrot} is basically the same, but with a different API | |||
| atrodo | and apache specific | ||
| moritz | WSGI can be used by CGI, mod_perl and lots of other mechanisms | 14:30 | |
| brrt | any mod_ would be apache specific | ||
| benabik | Using WSGI and FastCGI allows the interpreter to crash and not bring down a web server. :-D | ||
| brrt | on the other hand, dead-simple to set up, and 90% of web servers use it or so | ||
| plus, any management tools applying to apache will apply to mod_* backed websites as well | 14:31 | ||
| atrodo | brrt> are you saying 90% of webservers use apache? | ||
| nine | Also mod_anything has more possibilities. I use mod_perl for some fancy URL rewriting in static websites using information out of the apache configuration | ||
| brrt | benabik: i work with php, i have not seen apache crashes recently; although i have seen infinte loops and such | ||
| atrodo: wild exxagaration | 14:32 | ||
| it is more like 60% or so | |||
| whiteknight | 90% of most of them do | ||
|
14:32
lateau joined
|
|||
| whiteknight | depending how you select your sample | 14:32 | |
| atrodo | brrt> Okay, that's fine. I wasn't sure if you were saying apache or for the wsgi/psgi/etc side | ||
| benabik | I've seen reverse proxies or FastCGI recommended for new web apps far more than mod_*. I've even seen people recommending it for PHP. | ||
| atrodo | I like to use reverse proxies a lot more so i'm not tied to apache (or perlbal or nginx or lighttpd, or...) | 14:33 | |
| whiteknight | A FastCGI interface would be fun too | 14:34 | |
| atrodo | Arg! I don't have enough time for all these projects! | 14:35 | |
| whiteknight | Parrot really needs sandboxing and GCable packfiles before we can talk about FastCGI though. We need to be able to load in handlers, then and be able to jettison old handlers | 14:36 | |
| And we need to fix the packfile loader to not automatically dump things into the global namespaces | |||
| benabik | Well, ideally FastCGI is running a single application. | ||
| whiteknight | We could have all these things by the end of the summer, though | ||
| jashwanth | whiteknight:bye | 14:39 | |
| whiteknight | bye | ||
| benabik: yeah, maybe. I wonder how hard it would be to set up some FastCGI helpers in Rosella... | |||
| probably much easier with threads | 14:40 | ||
|
14:42
dmalcolm joined
|
|||
| brrt | haha thats funny | 14:43 | |
| i wrote a copying garbage collector once | |||
| single-threaded though | |||
| benabik | FastCGI doesn't require threading. | ||
| nine | whiteknight: the nice thing about the current threads implementation is that you get the whole worker thread management for free. No need to setup worker threads and distribute requests. Just schedule a task handling the request. | 14:44 | |
| benabik | loop { req = get_request(); res = app(req); print(res) } // More or less | ||
| whiteknight | benabik: yeah, I'm sure it's not a requirement. We just limit our bandwidth without it | 14:45 | |
| benabik | FCGI is designed so that the application is dead simple. Workers and such are handled at process level. | ||
|
14:52
alester joined
|
|||
| dalek | rrot: d054e19 | petdance++ | src/gc/gc_ (2 files): removed unnecessary casts |
14:57 | |
| kudo/nom: 8dada65 | masak++ | src/core/Range.pm: [src/core/Range.pm] remove method It had no spectest coverage, and I don't much agree with its semantics. |
15:01 | ||
| kudo/nom: 34ac9bf | masak++ | src/core/Routine.pm: [src/core/Routine.pm] add a clarifying comment |
|||
| p: aabbd0a | jnthn++ | src/6model/reprs/NativeCall.c: Fix pre-compilation of modules that use NativeCall. |
15:08 | ||
| kudo/nom: c62b90d | moritz++ | src/core/Exception.pm: throw typed exception for syntax extensions to illegal categories (RT #82984) |
|||
| p: f3ec4c5 | jnthn++ | docs/serialization_format.markdown: Add some serialization format docs. |
15:10 | ||
| nine | I removed Green Threads from the Projects wiki page. I think they are already done :) | ||
| brrt | whiteknight: i'm sorry i am so distracted | 15:12 | |
| whiteknight | it's okay | ||
| brrt | yeah, but not very nice | 15:13 | |
| whiteknight | brrt: Whereabouts do you live? | ||
| alester | brrt: Squirrel! | ||
| benabik | ADHOLAS? | ||
| brrt | not getting reference | ||
| groningen, the netherlands | |||
| benabik | Attention Deficit Hyperactivity- Oh, Look A Shiny | 15:14 | |
| brrt | :-) | ||
| no, just very busy atm | |||
| anyway, many approaches | 15:15 | ||
| atrodo | benabik> OSD: Ooooh, Shiny! Disorder | ||
| brrt | i think - personally - mod_parrot is a viable strategy | ||
| especially if you keep it simple | |||
| benabik | mod_parrot is viable. Possibly even easier because, at one point, it worked. | ||
| brrt | fastcgi, i know nothing | 15:16 | |
| benabik | That's a big point against it. :-) | ||
| moritz | as a user I don't like FastCGI much, because it's hard to debug | 15:17 | |
| whiteknight | brrt: Yes, mod_parrot is the way we want to go for this project, I think | ||
| CGI and FastCGI helpers can be done separately, and aren't at the C level | |||
| benabik | moritz: FCGI does rely more on the application to log things properly. | ||
| moritz | i had some problems with a FastCGI app hanging for 15s at a time. I didn't ever manage to find out why, or what to do against it | ||
| nine | moritz: hanging before, during or at the end of the request? | 15:19 | |
| moritz | yes | 15:20 | |
| brrt | old mod_parrot has a github? | ||
| moritz | before I saw any response in the browser | ||
| brrt | seems tricky to find the 'right language', unless you specify it with some options | ||
| in httpd.conf | |||
| otherwise you should try to find the right interpreter / compiler based on extension | 15:21 | ||
| whiteknight | Parrot has a "load_language" opcode | 15:23 | |
| you just call load_language("perl6"), ideally | |||
| brrt | ok... parrot is really rather high-level, isn't it? | 15:25 | |
| whiteknight | in Winxed, it would look like: load_language("perl6"); var c = get_compiler("perl6"); var pbc = c.compile(program); var m = pbc.main_function(); m(); | ||
| it can be, yes | |||
| brrt | sensible to ship a compiled parrot file alongside the module | 15:26 | |
| whiteknight | probably, yes | ||
| But we can talk about release and install later in the project | |||
| brrt | sure | 15:27 | |
| whiteknight | the modparrot package for debian can contain all sorts of stuff :) | ||
| brrt | right now it is all rather abstract | ||
| but... if it'd work | |||
| whiteknight | yes | ||
| brrt | main advantage for me, i'd get to know parrot better :-) | 15:30 | |
| whiteknight | yes, and a fun way to do exactly that | 15:31 | |
| dalek | rrot: bb282e3 | petdance++ | / (5 files): get the regex for cuddled elses a little broader, and then fix the cuddled elses it found |
15:38 | |
| rrot: 5de6147 | petdance++ | src/pmc/managedstruct.pmc: mark an unused INTERP |
15:40 | ||
| whiteknight | I'm not sure I like that cuddled else change | 15:44 | |
| Somewhere in the PDD I thought we had a prohibition against using brackets unnecessarily | 15:45 | ||
| moritz | is parrot specced/expected to be locale dependent? | 15:58 | |
| $ LC_ALL=C ./perl6 -e 'say "mĆøp"' | |||
| mĆĀøp | |||
| since I haven't seen anything in Rakudo that touches locales, I guess it's a parrot thing | |||
|
16:06
brrt left
|
|||
| whiteknight | Parrot is supposed to default to a local encoding | 16:07 | |
| I'm not too familiar with the process, but there is a notion of a "platform encoding" floating around. I don't know how it determines that | |||
|
16:17
Justin joined
|
|||
| Justin | good afternoon | 16:18 | |
| whiteknight | hello Justin | 16:21 | |
|
16:23
lucian_ joined
16:44
particle1 joined
17:20
Timbus joined
17:33
marcel_r joined
|
|||
| whiteknight | Justin: It doesn't look like there are many criticisms of your proposal. You can add it to google-melange.com | 17:37 | |
| oh, he's already gone | |||
| nine | whiteknight: any news about my GC problem? | 18:14 | |
| whiteknight | nine: I didn't have a chance to look at it last night | 18:24 | |
| nine | whiteknight: ok, just curious :) | 18:25 | |
| whiteknight | nine: I did clearly see that the items were ending up in the wrong lists, but haven't figured out why | ||
| I wish there was a way to make it happen faster | 18:26 | ||
| moritz: ping | 18:27 | ||
| moritz | whiteknight: pong | ||
| whiteknight | moritz: We just got a weird-looking GSOC proposal from somebody wanting to do something with mojolicious. Can you take a look at it and see if it's worth anything? | ||
| moritz | whiteknight: I have. It's got nothing to do with parrot | 18:28 | |
| whiteknight | still, is it worth anything at all in the perl world? | ||
| moritz | whiteknight: hard to tell. The goals seem worthwhile, but the proposal is not detailed enough to have any chance of being accepted | 18:31 | |
| whiteknight | okay, I just wanted to make sure | 18:32 | |
| If we end up with a surplus of slots, I'm not against giving them to adequate perl-related projects | |||
| this one did seem pretty skimpy though | |||
| We get these kinds of last-minute proposals every year, so it's no surprise | 18:36 | ||
|
18:44
preflex_ joined
18:59
brrt joined
19:00
jsut joined
|
|||
| brrt | joke: how many computer languages does it take to write one perl6 | 19:19 | |
| whiteknight | zero, you write perl6 in itself until it exists | 19:20 | |
| cotto | brrt: only one: Perl 6 | ||
| whiteknight | then you go have a beer | ||
| cotto | ... | ||
| brrt | :-) | ||
| whiteknight | or maybe, you have fewer beers. It depends how you got that far | ||
|
20:01
contingencyplan joined
|
|||
| Coke | I'm going to comment on the mojopropo. | 20:07 | |
| whiteknight | please do | ||
| Coke | Did ŠŠ½Š“ŃŠµŠ¹ Єозов ever talk to anyone on IRC/mailing list? | 20:08 | |
| whiteknight | Unless you see some serious gold worth mining in there, we probably won't accept it | ||
| Coke: no | |||
| not a peep | |||
| Coke | Added a public comment and rating. | 20:10 | |
| ironically making it the highest rated proposal. | |||
| benabik | :-( | 20:12 | |
| whiteknight | 15 minutes of fame starts.......NOQ | ||
| NOW | |||
| Coke realizes he should be careful phrasing things in #parrot. | 20:13 | ||
|
20:16
jsut_ joined
|
|||
| whiteknight | benabik: don't worry, you're in it for the long-haul | 20:17 | |
| nine | whiteknight: I got a new hint | 20:21 | |
| cotto | benabik: what whiteknight said. You'd have to a 5-word proposal, three of which were "blah" to not get accepted. You've done good work in the past and have stuck with parrot, so we know you're solid. | ||
| nine | whiteknight: I succeeded in creating a test program which does _not_ have to create new tasks but just 8 long running ones. | ||
| benabik | I'm too arrogant to be seriously worried. :-D | 20:22 | |
| brrt | so... this load_language thing | 20:23 | |
| nine | whiteknight: the tasks basically just create objects in an ever growing number. The new hint is: it's running stable as long as the main thread is calm. If I run the same code on the main thread it's blowing within seconds | ||
| brrt | how does that work? | ||
| Coke | I wouldn't overpromise to students, even if they are benabik. | 20:26 | |
| The best proposals will get the most votes. | |||
| dalek | kudo/nom: fd7f971 | moritz++ | tools/build/NQP_REVISION: bump NQP revision to get NativeCall serialization fix |
||
| kudo/nom: 2c35bdb | moritz++ | src/core/ (2 files): typed exception for failed sequence deduction |
|||
| whiteknight | nine: very interesting | 20:29 | |
| I'll narrow-down my search tonight. Can you commit this long-running example code for me to see? | |||
| nine | whiteknight: it's examples/threads/alloc_test.pir in git@github.com:niner/parrot.git threads_playground | 20:32 | |
| whiteknight | okay, awesome | ||
| I'm packing up and going home nowish, I'll look tonight | |||
| nine | bacek_at_work: got a vastly simpler and quicker test program showing my GC problem: it's examples/threads/alloc_test.pir in git@github.com:niner/parrot.git threads_playground | 20:33 | |
| dalek | p/toqast: ba5e1c1 | jonathan++ | src/QAST/Regex.nqp: Switch QAST::Regex attributes to use native types. |
20:34 | |
| p/toqast: d4db55a | jonathan++ | / (2 files): Stub in QAST::Op. |
|||
|
20:37
lucian_ joined
|
|||
| dalek | p/toqast: ff18cac | jonathan++ | src/QAST/Node.nqp: Another nativization. |
20:51 | |
|
21:07
hercynium left
|
|||
| moritz | q | 21:22 | |
| sorry | |||
| dalek | p/toqast: 3e9ecfc | jonathan++ | src/QAST/Node.nqp: Add a way to mark types on QAST nodes if known. |
21:36 | |
| p/toqast: de37dc4 | jonathan++ | / (3 files): Start sketching out compile-time known value handling and how we'll reference values in World (so common it deserves explicit support). |
|||
|
22:01
contingencyplan joined
22:08
contingencyplan joined
22:15
contingencyplan joined
22:16
schmooster joined
22:19
alvis joined
|
|||
| dalek | kudo/nom: cb61d59 | masak++ | / (2 files): [src/core/Range.pm] Range ~~ Range semantics Now by spec. \\o/ |
22:26 | |
|
22:48
araq_bnc joined
|
|||
| araq_bnc | hi nine, I come from #perl6 | 22:49 | |
| they told me you have the answers I seek | |||
| benabik | o/ araq_bnc | 22:50 | |
| araq_bnc | hi benabik; when is nine around usually? | 22:53 | |
| benabik | Not sure. He's somewhere in Europe, I think. | 22:54 | |
|
22:57
whiteknight joined
|
|||
| whiteknight | good afternoon, #parrot | 23:00 | |
| araq_bnc | good night, whiteknight | ||
| whiteknight | hello araq_bnc, how are you doing? | 23:01 | |
| araq_bnc | could be worse ;-) | ||
| so do you happen to know about parrot's threading and GC? | |||
| whiteknight | araq_bnc: yes, I know very much | 23:05 | |
| nine also knows about it. He wrote most of it | |||
| araq_bnc | if there is no shared heap how would a parallelized 'map' work? | 23:06 | |
|
23:06
nbrown joined
|
|||
| araq_bnc | copy parts of the array/list into a message for the other thread to process? | 23:06 | |
| whiteknight | At the moment sharing happens through message-passing and proxies | 23:07 | |
| In the future we could have some kind of shared-access memory | |||
| araq_bnc | ok | ||
| how is the message passing implemented? | |||
| (and where in parrot's source code) | 23:08 | ||
| whiteknight | Threading is being worked on in a separate branch, and is not in master yet | ||
| Let me look it up | |||
| github.com/parrot/parrot/tree/threads | |||
| github.com/parrot/parrot/blob/thre...c/thread.c | 23:10 | ||
| araq_bnc: what are you working on? | 23:11 | ||
| araq_bnc | sorry, nothing perl related: nimrod-code.org/ | 23:13 | |
| but I wonder if I overlooked something or if 2-way copying the only way to implement thread-safe message passing | 23:14 | ||
| if you have thread local GCs | |||
| whiteknight | it's not the only way. Our threading system is very new, and hasn't even been merged to master yet | ||
| this is a first draft. We can try new things too | |||
| benabik | My advisor had an interesting concurrent language: manticore.cs.uchicago.edu/papers/ce...-notes.pdf | 23:16 | |
| Very isolated threads, but possible to do non-copying message passing. | |||
| Although it's mostly made possible by using immutable data. | 23:17 | ||
| whiteknight | benabik: In that JIT link I posted this morning, he talked about creating new memory pools and allocating certain objects from certain pools | ||
| then it would be as easy as allocating a new pool dedicated to sharing between two threads | |||
| benabik | As soon as you have a pool that two threads are allocating from, you have to be very careful with your GC. | 23:18 | |
| whiteknight | well, if it's a limited size, limited life pool, you almost don't need GC | 23:19 | |
| allocate the pool, create items in it, then deallocate the pool | 23:20 | ||
| benabik | GTG, TTYL | 23:21 | |
|
23:21
araq_bnc_ joined
|
|||
| araq_bnc_ | if you have a GC/heap for thread A and a different GC/heap for thread B | 23:22 | |
| you need a common heap for both for communication | 23:23 | ||
| whiteknight | araq_bnc_: yes, that's as good a system as any | ||
| you want to help design such a thing? | |||
| araq_bnc_ | and if you pass simply a handle/pointer as the message | 23:24 | |
| then you need to ensure that thread A does not deallocate it | |||
| er, scenario is that thread A sends a message to thread B that contains a pointer | 23:25 | ||
| and then the data is dead wrt A | |||
| araq_bnc | so you need to mark the data as used | 23:28 | |
| so A's GC does not reclaim it | |||
| and I can only see copying as a proper way out | 23:30 | ||
| whiteknight | yeah, that's the problem. GC is unforgiving | ||
| the way to get around that is to make the memory pool manually-allocated so the GC doesn't manage it | |||
| araq_bnc | good point | 23:31 | |
| erlang does it this way too, afaik; proper copy across GC boundaries | 23:33 | ||
| whiteknight | We don't actually do copy. We use a proxy. The proxy allows read access to the object | 23:35 | |
| writing is done through messages, which may also use proxies | |||
| araq_bnc | hm, how does that work? | 23:36 | |
| how does the proxy keep the memory alive for GC A? | 23:37 | ||
| whiteknight | I don't remember how that works. We have to ask nine | 23:41 | |
| araq_bnc: ah, the Task object keeps a list of shared objects | 23:56 | ||
| araq_bnc | so when is an object added to the list? | 23:57 | |
| and when is it *removed* (the interesting part)? | |||
| whiteknight | also good questions | 23:58 | |