avatar

Ehsan Akhgari is a programmer living in Toronto working for Mozilla. He has over 10 years of experience on browsers and the web platform and Firefox. Learn more about him here.

Why you should switch to clang today, and how

Clang is a new C/C++/Objective-C/Objectice-C++ compiler being developed on top of LLVM. Clang is open-source, and its development is being sponsored by Apple. I'm writing this post to try to convince you that you should switch to using it by default for your local development if you're targetting Mac or Linux at least. Clang tries to act as a drop-in replacement for gcc, by trying to immitate its command line argument syntax and semantics, which means that in most cases you can switch from gcc to clang by just changing the name of the compiler you're using.

Upcoming changes to absolute positioning in tables and table margin collapsing in Firefox 10

Last week I landed a number of patches which I've been working on which fix two very old (5 digit) bugs in Gecko (bug 10209 and bug 87277) which affect rendering of web content. This point summarizes the changes to the behavior of Firefox as a result of those patches. The first behavior change is about absolute positioning of elements inside positioned tables. When you specify the CSS position: absolute style on an element in a web page, it is taken out of the flow of the web page, and its position is calculated relative to the nearest positioned ancestor in the DOM (by positioned, we mean an element which has a non-static position, i.

Submiting my first patch to Chromium

A couple of weeks ago, I submitted my first patch to the Chromium project. I was always curious to know what their patch submission process looks like to a newcomer, mainly in order to see if we can apply some of their ideas to Mozilla. Here's the story of what happened. It all started when I tried to fix bug 98160 (which also happens to be the first five digit bug that I've fixed, with the second one on the horizon now – stay tuned!

Future of editing on the web

Last week, I met with Aryeh Gregor (the editor of the HTML Editing APIs specification, among other specs), Ryosuke Niwa and Annie Sullivan (both of WebKit editing fame) and Jonas Sicking (prolific Gecko hacker) to discuss the future of HTML editing APIs on the web, and also exchange ideas on how Gecko and WebKit handle editing. The meetings were extremely productive, and we managed to discuss a lot of stuff. I'm trying to provide a summary of everything we discussed.

Resisting saying yes

We've been too used to say yes. I'd like to remind everyone about this, and ask them to reconsider this old habit of ours. Recently, what happened with bug 656120 made me feel warm and fuzzy inside. This bug potentially solves the Javascript memory usage problems introduced in Firefox 4. The feedback from the users on the Nightly branch was positive after landing this patch on trunk, so it was suggested for this patch to be backported to the Aurora branch.

Building Firefox with Address Sanitizer

Address Sanitizer is a new project based on clang which aims to provide relatively cheap memory access checking. It is capable of detecting errors such as out-of-bounds access or use-after-free at runtime. Although its functionality is a subset of what Valgrind supports, running applications built with Address Sanitizer is noticeably faster than running them under Valgrind, which can simplify the testing process. I recently got a build of Firefox with Address Sanitizer working.