Category Archives: Uncategorized

Great work coming out of Mozilla’s Taiwan office

You knew that Mozilla has an office in Taipei now, right? We’ve got a great engineering manager and three great engineers working out of Taipei, so far mostly on Boot2Gecko. I want to briefly call out what they’ve been working on lately. They’ve all just started within the last couple of months and are already [...]

pdf.js reached its first milestone

Last Friday, pdf.js reached the state we wanted to it to be in before announcing it loudly: it renders the Tracemonkey paper perfectly*. So, we’re announcing it! Try out version 0.2. We’re very excited about the progress since the cat was let out of the bag two weeks ago. Below is a comparison of some [...]

Overview of pdf.js guts

Andreas posted a general overview of pdf.js. I’d like to briefly cover some more-technical parts of the renderer. pdf.js (currently) parses raw arrays of bytes into streams of PDF “bytecode”, compiles the bytecode into JavaScript programs, then executes the programs. (Yes, it’s a sort of PDF JIT . The side effect of those programs is [...]

Followup to: Filter your tryserver builds, a bit more easily

I made a mistake in not hosting this script from an hg repository; it’s already changed a few times since I originally posted. So, I fixed that. Now one can hg clone http://hg.mozilla.org/users/cjones_mozilla.com/tryselect cd $repo ../tryselect/tryselect Permissions and so forth should be set correctly. (Protip: I symlinked tryselect/tryselect into a directory in my $PATH.) If [...]

Filter your tryserver builds, a bit more easily

(Next in my series of posts designed to make this the most boring blog on p.m.o .) The new tryserver has the (awesome!) ability to customize builds for each platform, using mozconfig-extra-$platform scripts. For me (and most others?), the common case will be to use the extra files to disable builds for platforms I don’t [...]

Print nsTArrays in gdb

This code was shamelessly stolen and modified from the pvector command from Dan Marinescu’s et al. gdb-stl-views. ## ## nsTArray ## define ptarray if $argc == 0 help ptarray else set $size = $arg0.mHdr->mLength set $capacity = $arg0.mHdr->mCapacity set $size_max = $size – 1 set $elts = $arg0.Elements() end if $argc == 1 set $i [...]

Save yourself some license template copypasta (in emacs)

Add this to your .emacs (defun insert-mpl-tri-license () (interactive) (insert “/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-\n” ” * vim: sw=2 ts=8 et :\n” ” */\n” “/* ***** BEGIN LICENSE BLOCK *****\n” ” * Version: MPL 1.1/GPL 2.0/LGPL 2.1\n” ” *\n” ” * The contents of this file are subject to [...]

Helping ld link libxul more quickly

I used to do most of my development in a Linux virtual machine with 1.5GB of RAM. There, –enable-libxul builds were … painful: linking libxul itself took about 2 minutes and 30 seconds. Ideally, ld or gold would know how to re-link incrementally, and the problem would vanish. But until then, you can help ld [...]

Introducing porky.py: Low-fat pork

Porky.py (pronounced “porky pie”) is a simple C++ rewriting tool built on top of pork. Porky.py aims to make pork usable for a larger class of code rewriting problems by lowering pork’s high learning curve and making it easier to code up rewrite passes. If you want to skip the exposition and play with the [...]

Multi-process Firefox, coming to an Internets near you

Benjamin Smedberg recently discussed the motivation for splitting Firefox into multiple process, so I won’t recap that here. Instead, I want to demonstrate what we’ve accomplished so far. The video below shows our nearly Phase I-complete browser. (Back and Forward don’t work yet, but are relatively easy to add.) Sorry, your browser doesn’t support the [...]