<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>SafeInt Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/SafeInt/Wiki/View.aspx?title=Home</link><description>SafeInt Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=13</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;Thanks to help from Jeffrey Walton of the OWASP project, we now have a very complete runtime test harness. There&amp;#39;s still a couple of files to get posted, but the files we have on the download section contain most of the new work. To avoid confusion, the test harness is now a different release than the main header.&lt;br /&gt;&lt;br /&gt;Also thanks to Jeffrey, we have extended the list of compilers that are supported to:&lt;br /&gt;&lt;br /&gt;Microsoft Visual Studio, version 7.1 through the latest.&lt;br /&gt;Reasonably new versions of gcc, including the latest version that will compile for Apple platforms.&lt;br /&gt;The Intel compiler, with some caveats - it doesn&amp;#39;t support some of the friend overloads, but does work properly with the runtime checks.&lt;br /&gt;Clang is also now supported.&lt;br /&gt;&lt;br /&gt;The most recent version is 3.0.17. The main change between minor versions 15 and 16 is that the Intel compiler will quite vigorously optimize away some of the signed addition overflow checks. Changes have been made such that intermediate calculations are done with unsigned numbers, and unsigned overflow is defined by the standard, which means the Intel compiler won&amp;#39;t optimize them away. There have been instances of the gcc compiler doing the same thing, but this hasn&amp;#39;t been demonstrated in SafeInt. As of this version, there won&amp;#39;t be a possibility of the compiler actually removing checks.&lt;br /&gt;&lt;br /&gt;Thanks to John Regehr of the University of Utah for noticing that the compiler may also become aggressive about removing things when you attempt to perform a unary negation on a signed number, and that signed number is a compile-time constant with a value of MIN_INT. I personally have a low opinion of compilers doing this sort of thing - seems like there&amp;#39;s an awful lot of code out there with some extremely subtle bugs when compiled with these compilers. Compiler warnings are your friend, and it seems like the more compilers you have, the better your coverage. As it turns out, Clang will warn about when this might happen, which enabled a more comprehensive scrub of the code than we were able to do in 3.0.16.&lt;br /&gt;&lt;br /&gt;The fix for this particular issue is to go ahead and code in a dependency on 2&amp;#39;s complement representation of negative numbers - the compiler may remove -x, but it won&amp;#39;t remove ~(unsigned)x + 1, which emits the same bit pattern (and the same assembly code).&lt;br /&gt;&lt;br /&gt;Important note - the runtime test harness does catch it when the compiler optimizes away tests. You should compile and run the runtime checks to verify that everything is working properly with your compiler. Note - as of 3.0.17, we have some work to do to update the runtime tests to account for compile-time constants. We&amp;#39;ll get this updated as soon as practical.&lt;br /&gt;&lt;br /&gt;In addition, SafeInt now compiles warning-free with all warnings enabled on both latest gcc and the Microsoft compiler. It will still emit a few warnings with the Intel compiler.&lt;br /&gt;&lt;br /&gt;Known outstanding work - I have yet to do the work to correctly annotate the class with throw() in the case of an error handler that does something other than C++ exceptions (structured exceptions, terminate the app, etc).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 23 Sep 2011 07:08:16 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110923070816A</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=12</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;Thanks to help from Jeffrey Walton of the OWASP project, we now have a very complete runtime test harness. There&amp;#39;s still a couple of files to get posted, but the files we have on the download section contain most of the new work. To avoid confusion, the test harness is now a different release than the main header.&lt;br /&gt;&lt;br /&gt;Also thanks to Jeffrey, we have extended the list of compilers that are supported to:&lt;br /&gt;&lt;br /&gt;Microsoft Visual Studio, version 7.1 through the latest.&lt;br /&gt;Reasonably new versions of gcc, including the latest version that will compile for Apple platforms.&lt;br /&gt;The Intel compiler, with some caveats - it doesn&amp;#39;t support some of the friend overloads, but does work properly with the runtime checks.&lt;br /&gt;&lt;br /&gt;The most recent version is 3.0.16, which should remain stable for a while. The main change between minor versions 15 and 16 is that the Intel compiler will quite vigorously optimize away some of the signed addition overflow checks. Changes have been made such that intermediate calculations are done with unsigned numbers, and unsigned overflow is defined by the standard, which means the Intel compiler won&amp;#39;t optimize them away. There have been instances of the gcc compiler doing the same thing, but this hasn&amp;#39;t been demonstrated in SafeInt. As of this version, there won&amp;#39;t be a possibility of the compiler actually removing checks.&lt;br /&gt;&lt;br /&gt;Important note - the runtime test harness does catch it when the compiler optimizes away tests. You should compile and run the runtime checks to verify that everything is working properly with your compiler.&lt;br /&gt;&lt;br /&gt;In addition, SafeInt now compiles warning-free with all warnings enabled on both latest gcc and the Microsoft compiler. It will still emit a few warnings with the Intel compiler.&lt;br /&gt;&lt;br /&gt;Known outstanding work - I have yet to do the work to correctly annotate the class with throw() in the case of an error handler that does something other than C++ exceptions (structured exceptions, terminate the app, etc).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Mon, 08 Aug 2011 17:40:52 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110808054052P</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=11</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;A release with 32 and 64-bit gcc support is now up as 3.0.14. See the release notes for details.&lt;br /&gt;&lt;br /&gt;The start of a runtime test harness has been created, starting with 64-bit multiplication support.&lt;br /&gt;&lt;br /&gt;Note - 3.0.15 has been released as a beta - it should be stable, but I don&amp;#39;t want to mark it as the recommended release until people have had an opportunity to check things. I&amp;#39;m also considering just folding the SafeIntGcc.hpp header into the main header due to a request for it.&lt;br /&gt;&lt;br /&gt;Update - 7/25 - see the 3.0.15 release for more details. Couple bugs fixed since yesterday, did fold the header in. If no more bugs get reported, I&amp;#39;m moving this to released.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Tue, 26 Jul 2011 05:13:06 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110726051306A</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=10</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;A release with 32 and 64-bit gcc support is now up as 3.0.14. See the release notes for details.&lt;br /&gt;&lt;br /&gt;The start of a runtime test harness has been created, starting with 64-bit multiplication support.&lt;br /&gt;&lt;br /&gt;Note - 3.0.15 has been released as a beta - it should be stable, but I don&amp;#39;t want to mark it as the recommended release until people have had an opportunity to check things. I&amp;#39;m also considering just folding the SafeIntGcc.hpp header into the main header due to a request for it.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Mon, 25 Jul 2011 00:21:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110725122115A</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=9</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;A release with 32 and 64-bit gcc support is now up as 3.0.14. See the release notes for details.&lt;br /&gt;&lt;br /&gt;The start of a runtime test harness has been created, starting with 64-bit multiplication support.&lt;br /&gt;&lt;br /&gt;Note - 3.0.15 is in progress, and contains some fixes for gcc 64-bit support, wraps Microsoft-specific pragma statements, and eliminates some existing compiler warnings.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Tue, 22 Mar 2011 18:23:23 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110322062323P</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=8</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C&lt;u&gt;&lt;/u&gt; header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows. If you are compiling for the Microsoft compiler only, a very similar version is now available with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;A release with 32 and 64-bit gcc support is now up as 3.0.13. See the release notes for details.&lt;br /&gt;&lt;br /&gt;The start of a runtime test harness has been created, starting with 64-bit multiplication support.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 12 Feb 2010 23:55:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100212115559P</guid></item><item><title>Updated Wiki: Home</title><link>http://safeint.codeplex.com/wikipage?version=7</link><description>&lt;div class="wikidoc"&gt;SafeInt is a C&lt;u&gt;&lt;/u&gt; header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt;&lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows.&lt;br /&gt;&lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt;&lt;br /&gt;An update - thanks to Niels Dekker, I&amp;#39;m going to be able to add gcc support.&lt;br /&gt;&lt;br /&gt;A release with gcc support is now up as 3.0.12p.&lt;br /&gt;&lt;br /&gt;Note - there is now a 3.0.13p under Planned releases which corrects a problem with x64 gcc support, and adds using intrinsics on x64 Microsoft compiler. Please read the release notes for details.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Thu, 04 Feb 2010 06:08:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100204060853A</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/SafeInt/Wiki/View.aspx?title=Home&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt; &lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows.&lt;br /&gt; &lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt; &lt;br /&gt;An update - thanks to Niels Dekker, I'm going to be able to add gcc support.&lt;br /&gt; &lt;br /&gt;A release with gcc support is now up as 3.0.12p. &lt;br /&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sun, 30 Nov 2008 21:48:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081130094828P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/SafeInt/Wiki/View.aspx?title=Home&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt; &lt;br /&gt;SafeInt is currently used extensively throughout Microsoft, with substantial adoption within Office and Windows.&lt;br /&gt; &lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt; &lt;br /&gt;An update - thanks to Niels Dekker, I'm going to be able to add gcc support.&lt;br /&gt; &lt;br /&gt;A proposed release with gcc support is now up as 3.0.12p. &lt;br /&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sat, 29 Nov 2008 21:58:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081129095808P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/SafeInt/Wiki/View.aspx?title=Home&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt; &lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt; &lt;br /&gt;An update - thanks to Niels Dekker, I'm going to be able to add gcc support.&lt;br /&gt; &lt;br /&gt;A proposed release with gcc support is now up as 3.0.12p. &lt;br /&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sun, 23 Nov 2008 22:13:43 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081123101343P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/SafeInt/Wiki/View.aspx?title=Home&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.&lt;br /&gt; &lt;br /&gt;It can be used with any compiler that has good template support, and is known to work on Visual Studio 7.1 or later.&lt;br /&gt; &lt;br /&gt;An update - thanks to Niels Dekker, I'm going to be able to add gcc support. Niels has given me some bug reports that I'm addressing.&lt;br /&gt;
&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 21 Nov 2008 19:44:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20081121074419P</guid></item></channel></rss>