Thesis, yay!

Been a bit quiet on the blog front lately. I’ve been busy get­ting my master’s the­sis off the ground.

But now it is offi­cial. I handed in all the paper­work (in six copies, what do they need all that paper for?), got the sig­na­ture from my advi­sor and every­thing else yes­ter­day. I have now offi­cially started on my the­sis. The subject?

Imple­ment­ing a Soft­ware Trans­ac­tional Mem­ory (STM) library in C++0x. (Or rather, in C++, using what­ever C++0x fea­tures cur­rent com­pil­ers have sup­port for. In par­tic­u­lar, I can see good uses of rvalue ref­er­ences and lambda expres­sions, which, luck­ily, the Visual C++ 2010 beta has sup­port for.

And I am super psy­ched up about it. The sub­ject seems a lot of fun. Of course I’ve got a lot of read­ing to do, catch­ing up on all the exist­ing research in the area (Two weeks ago, I had barely heard of STM before, so I can’t claim to be an expert on the field yet ;))

How­ever, the C++0x aspect seems to be almost untouched in pre­vi­ous work1, which is obvi­ously nice. Feels good to be able to con­tribute some­thing new.

My dead­line is March 1st, 2010, almost exactly 6 months from now. I’m going to push myself to get a pro­to­type up as early as pos­si­ble. So the first few weeks are going to be busy. Once I get started prop­erly, I’ll be able to vary the pace a bit more, tak­ing more time out for the blog, work and every­thing else.


  1. Unsur­pris­ingly, as 1) most cur­rent research has been done by peo­ple who knew a lot about STM, and not so much about mod­ern C++, 2) C++0x has seemed a long way off, and 3) com­piler sup­port for 0x fea­tures was almost nonex­is­tent. 

Share and Enjoy: These icons link to social book­mark­ing sites where read­ers can share and dis­cover new web pages.
  • Digg
  • del.icio.us
  • StumbleUpon
  • Reddit
  • Technorati

Tags: , ,

3 Responses to Thesis, yay!

  1. Ben Karel says:

    Excit­ing! I look for­ward to see­ing the end result.

    Do you plan on focus­ing how C++0x influ­ences the imple­men­ta­tion of an STM library, or on how fea­tures like lamb­das make using the library eas­ier, or …?

    I imag­ine a fair chunk of the work that went in to more pre­cisely defin­ing the C++0x mem­ory model, along with e.g. stan­dard­ized atom­ics, will be of great help for any­body inter­ested in cre­at­ing some­thing like a STM library, even if those improve­ments don’t directly alter the programmer’s expe­ri­ence of using the STM library.

  2. jalf says:

    I was think­ing of both imple­men­ta­tion and usage, actu­ally. Rvalue refs make the imple­men­ta­tion more robust and more effi­cient (since move oper­a­tions can typ­i­cally pro­duce bet­ter excep­tion guar­an­tees than copy­ing, and they’re faster as well, so that helps imple­men­ta­tion). Lamb­das are an obvi­ous way to make the usage eas­ier. If the library depends on the user sup­ply­ing func­tors to define trans­ac­tions, lamb­das make it a lot eas­ier for the user to define these.

    I’m still not sure about the prac­ti­cal value of the mem­ory model spec­i­fi­ca­tions for a few rea­sons. First, much of it is really just stan­dard­iz­ing what every com­piler already does, so it’s great on paper, but makes lit­tle dif­fer­ence in prac­tice. Sec­ond, to make use of stuff like the stan­dard­ized atom­ics I have to find a com­piler which imple­ments those as well as the other fea­tures I plan to use. But yeah, in the long run, those are obvi­ously going to be a huge help in doing stuff like this while stay­ing within the bounds of the standard.

  3. Ben Karel says:

    Oh, and I’d also very much like to know which STM papers you find interesting/worthwhile, even the ones that don’t end up in your Ref­er­ences. If you don’t mind, of course! ;-)

Leave a Reply

Name and Email Address are required fields. Your email will not be published or shared with third parties.