Hi Jomy, >From a C++ programming standpoint, GCC 3.3 and GCC 4.1.2 are similar. GCC 4.1.2 is more C++ standard compliant than GCC 3.3. (GCC 3.3 is pretty standard compliant too. GCC 4.1.2 moreso.) GCC 4.1.2's C++ front end implements C++'s two phase name look up. GCC 3.3 did not. If your code writes a lot of templates, that may be some effort to get the code to be compliant (putting in the typename keyword). But would be trivial compared to porting from ostrstream to std::ostringstream, from GCC 2.8 to GCC 3.3. I moved my C++ codebase from GCC 3.1 to GCC 4.1 without much difficulty. The majority of the changes involved turning up the warning levels to ludicrously high levels, and resolving all the warnings. That was an opt-in effort. The other concern, if I recall correctly, will be that the GCC 3.3 C++ ABI is incompatible with the GCC 4.1.2 C++ ABI. That means you will need to recompile all your C++ libraries, including any third party libraries you use (if any). The C ABI did not change, assuming your C libraries did not use extensions -- such as supporting exception handling. - - - - - - - - - - - - - - - - >From a GCC internals standpoint, I believe GCC 3.3 and GCC 4.1.2 are quite different. But I'm not savvy on the GCC internals. I recommend reading the release notes for each release from GCC 3.3 to GCC 4.1.2, which will give a good synopsis of what has changed. HTH, --Eljay