, though we are rather fond of them for obvious reasons.
Submitted by tcurtis on Sun, 06/27/2010 - 08:48
Earlier this summer, when I was considering what sort of interface would be best for the PAST pattern matching and transformation I've been building, Bacek suggested an XPath-like syntax. XPath is, nominally, a language for pattern matching on XML, but it is applicable to any tree-like data structure where each node may have both attributes and children. It's a general-purpose tree-matching language.
Submitted by Chandon on Tue, 06/22/2010 - 21:00
In my work on Timers, I've concluded that the scheduler really is the right place for scheduling things (who would have guessed?). How the scheduler *should* work is described in pdd25. How the scheduler actually works is a bit different, and how I want the scheduler to work to implement green threads is a bit different from that...
Submitted by tcurtis on Fri, 06/18/2010 - 07:10
In my previous post, I described in tutorial form how to implement a very simple constant folding optimization for Integer addition. In this very brief post, I describe in greater detail how that optimization works.
Submitted by Chandon on Tue, 06/15/2010 - 21:30
The next step in green threads is to make them preemptive: after one thread has run for a while, it needs to be stopped so a waiting thread can have a turn. Parrot has a mechanism for doing things after a set time called Timers which would be perfect for this. Unfortunately, they don't really work.
Submitted by darbelo on Tue, 06/15/2010 - 17:11
Since my last post I haven't spent as much time as I'd like coding, since getting a win32 development environment setup was a bigger time sink than I expected, but I've still managed to stay pretty close to the schedule. The main feature for the next week, once I'm done with the charset-level stuff will be Iterators, which will finally enable NFG 'literals' in PIR source, for which I have added, failing, tests the past week.
Submitted by ash on Tue, 06/15/2010 - 15:15
The NCI updates using the libffi are coming along. I ran into a bit of an annoyance when I found out that there are places internally where signatures are not specified for some functions, but luckily it was easy to remedy once I had figured out the problem. All of those cases used the same signature ("vJP"), it was only hard to find the right place to add that.
Submitted by tcurtis on Mon, 06/14/2010 - 04:48
Parrot Abstract Syntax Trees(PASTs) are one of the forms code being compiled in a PCT-based compiler takes before being evaluated or compiled to bytecode. With PAST::Pattern, you can find all the sub-trees of a PAST that match a certain pattern and transform them. This can be used to perform optimizations at the PAST level.
Submitted by tcurtis on Sat, 06/12/2010 - 08:43
Wherein I dash your hopes of spending the weekend hacking on making your favorite HLL compiler generate better code only to give you hope at the end that it will not be long at all before you can:
Submitted by tcurtis on Mon, 06/07/2010 - 20:56
I noticed yesterday that I forgot to post a blog post last week. I'll try to make up for that with double the blog post goodness this week(expect a second post Thursday or Friday).
Submitted by Chandon on Tue, 06/01/2010 - 20:46
Parrot has Continuations. In fact, Parrot is *based* on Continuations: rather than having a call stack and stack frames, each sub call has a return continuation - a pointer back to the call frame and bytecode position to return to after the sub completes.
As the Scheme and Ruby users keep telling us, continuations are pretty neat stuff. In fact they're so neat that they give us light weight cooperative threads "for free".