Things to come
For some time, I've been writing notes on what I would blog about, were I to have a blog. Well, I have a blog now. Given the blog name, it should come as no surprise that forthcoming posts will bore...
View ArticleImpacts of multi-core processing on programming language design
Within the next couple of years, all modern desktop computers will have multiple CPUs, thanks to multi-core packaging. This doesn't matter very much in the context of programming languages though until...
View ArticleTransactional Memory: Panacea or Confounder?
There is a very nice review article on the subject of transactional memory (TM) as applied to programming languages in ACM Queue, Vol. 4 No. 10. The article does a reasonable job of describing the...
View ArticleDeprogramming the LALR(1) Bias
Look around for LR(1) parser generators, and you will primarily find LALR(1) parser generators. There seems to be an unspoken assumption that LALR(1) is somehow better than LR(1), but look at the...
View ArticleParser generation algorithms of a bygone era
In my most recent post, I talked about the disadvantages of LALR parser generation as compared to the more general LR method. Although I now believe even more fervently that LR parser generation is the...
View ArticleMore forgotten parser generation algorithms
When writing a grammar specification that is input to a parser generator, the most natural way of describing the grammar is often ambiguous. There are two solutions: 1) rewrite the grammar to be less...
View ArticleParsing.py parser generator is now available
The parser generator I implemented has been quite stable for over a month now. It has the potential to be of use to others, so I am making it publicly available. Parsing.py is a stand-alone pure Python...
View ArticleA simple Parsing-based parser example
As requested by several people, I have uploaded a simple example parser that uses the Parsing module. It is pretty self explanatory, so I encourage you to take a look at it, run it, and experiment with...
View ArticleWhy the overwhelming silence?
I uploaded an updated version of the Parsing module. The changes are minor, which is a good indicator of the code's maturity when you consider that I continue to use it heavily to create new parsers....
View ArticleUnicode strings for Lyken
Lyken, a programming language I am currently developing, uses Unicode for all strings. Lyken is just one of many languages that has to overcome a set of design challenges associated with Unicode,...
View ArticleTagged unboxed floating point numbers
Several modern programming language implementations employ a representation of object reference slots that is self-describing, in order to facilitate run-time type checks and automatic garbage...
View ArticleFixed-precision (n choose k) and overflow
I recently found myself needing to compute (n choose k) with 64-bit integers. Recall that (n choose k) is equal to n!/[k!(n-k)!]. Mathematically, this is not a difficult computation, but when...
View ArticleFirefox fragmentation?
As Firefox 3 nears release, some of its developers are taking a close look at memory fragmentation issues. There is good information over at pavlov.net that I won't repeat here. One recurring theme...
View ArticlePerceived jemalloc memory footprint
For the past couple of months I have been working with the Mozilla folks to integrate jemalloc into Firefox. This past week, Stuart has been doing lots of performance testing to make sure jemalloc is...
View ArticleMigrating from Subversion to Mercurial
jemalloc has settled into Firefox pretty nicely at this point, so after having mostly worked on Lyken for a few weeks while waiting for the dust to settle, I'm planning to start working on adding the...
View ArticleUsing Mercurial patch queues for daily development
I recently watched a video (slides) of Bryan O'Sullivan speaking about Mercurial. The presentation was mainly a (great) introduction to Mercurial, but I was surprised to learn that Mercurial patch...
View ArticleLeft-leaning red-black trees are hard to implement
Back in 2002, I needed balanced trees for a project I was working on, so I used the description and pseudo-code in Introduction to Algorithms to implement red-black trees. I vaguely recall spending...
View ArticleOverzealous use of my red-black tree hammer
When Firefox 3 was released, jemalloc was left disabled for the OS X version, essentially because OS X's malloc implementation did as good a job as jemalloc (in terms of both speed and memory usage),...
View ArticleTreaps versus red-black trees
In a previous blog entry, I discussed the difficulties associated with implementing left-leaning red-black trees. A couple of readers commented that treaps might be superior to red-black trees, and as...
View ArticleStand-alone jemalloc for Linux
I have received numerous requests for a version of jemalloc that is ported to various operating systems. My plan has long been to create a jemalloc distribution that supports *BSD, Linux, Solaris, OS...
View Article