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