<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>SafeInt Releases Rss Feed</title><link>http://www.codeplex.com/SafeInt/Release/ProjectReleases.aspx</link><description>SafeInt Releases Rss Description</description><item><title>Updated Release: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br /&gt;&lt;br /&gt;Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;br /&gt;&lt;br /&gt;12/18/12 - Updated to normalize whitespace. No functional changes.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Tue, 18 Dec 2012 22:48:48 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.17 (Sep 23, 2011) 20121218104848P</guid></item><item><title>Released: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>
&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues
 reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br&gt;
&lt;br&gt;
Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;br&gt;
&lt;br&gt;
12/18/12 - Updated to normalize whitespace. No functional changes.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Tue, 18 Dec 2012 22:48:48 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.17 (Sep 23, 2011) 20121218104848P</guid></item><item><title>Updated Release: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br /&gt;&lt;br /&gt;Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 23 Sep 2011 17:25:15 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.17 (Sep 23, 2011) 20110923052515P</guid></item><item><title>Released: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>
&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues
 reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br&gt;
&lt;br&gt;
Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Fri, 23 Sep 2011 17:25:15 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.17 (Sep 23, 2011) 20110923052515P</guid></item><item><title>Updated Release: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br /&gt;&lt;br /&gt;Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 23 Sep 2011 14:33:25 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.17 (Sep 23, 2011) 20110923023325P</guid></item><item><title>Released: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>
&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues
 reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;br&gt;
&lt;br&gt;
Very minor update from last night - added LL and ULL 3 places to remove a few warnings.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Fri, 23 Sep 2011 14:33:25 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.17 (Sep 23, 2011) 20110923023325P</guid></item><item><title>Created Release: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases?ReleaseId=73792</link><description>&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Fri, 23 Sep 2011 07:12:09 GMT</pubDate><guid isPermaLink="false">Created Release: SafeInt 3.0.17 (Sep 23, 2011) 20110923071209A</guid></item><item><title>Released: SafeInt 3.0.17 (Sep 23, 2011)</title><link>http://safeint.codeplex.com/releases/view/73792</link><description>
&lt;div class="wikidoc"&gt;See home page for extended comments on differences between 3.0.17 and 3.0.16. This release passes all the internal verification tests, but has not yet been validated against all of the compilers we support. It does address the issues
 reported by John Regehr as of today. Once it has been verified against all of the compilers, and has been verified not to emit more warnings, we&amp;#39;ll move it to stable.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Fri, 23 Sep 2011 07:12:09 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.17 (Sep 23, 2011) 20110923071209A</guid></item><item><title>Updated Release: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>&lt;div class="wikidoc"&gt;Latest version - see home page for details.&lt;br /&gt;&lt;br /&gt;Note - updated as of 8/9/11 to remove some unneeded defines.&lt;br /&gt;8/10/11 - tweaked the decision making around defining nullptr to make it more automatic&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Wed, 10 Aug 2011 17:38:45 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.16 (Aug 08, 2011) 20110810053845P</guid></item><item><title>Released: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>
&lt;div class="wikidoc"&gt;Latest version - see home page for details.&lt;br&gt;
&lt;br&gt;
Note - updated as of 8/9/11 to remove some unneeded defines.&lt;br&gt;
8/10/11 - tweaked the decision making around defining nullptr to make it more automatic&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Wed, 10 Aug 2011 17:38:45 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.16 (Aug 08, 2011) 20110810053845P</guid></item><item><title>Updated Release: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>&lt;div class="wikidoc"&gt;Latest version - see home page for details.&lt;br /&gt;&lt;br /&gt;Note - updated as of 8/9/11 to remove some unneeded defines.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Tue, 09 Aug 2011 17:03:10 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.16 (Aug 08, 2011) 20110809050310P</guid></item><item><title>Released: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>
&lt;div class="wikidoc"&gt;Latest version - see home page for details.&lt;br&gt;
&lt;br&gt;
Note - updated as of 8/9/11 to remove some unneeded defines.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Tue, 09 Aug 2011 17:03:10 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.16 (Aug 08, 2011) 20110809050310P</guid></item><item><title>Updated Release: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>&lt;div class="wikidoc"&gt;Latest version - see home page for details.&lt;br /&gt;&lt;br /&gt;Note - updated as of 8/9/11 to remove some unneeded defines.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Tue, 09 Aug 2011 16:56:10 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.16 (Aug 08, 2011) 20110809045610P</guid></item><item><title>Created Release: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases?ReleaseId=71431</link><description>&lt;div class="wikidoc"&gt;Latest version - see home page for details&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Mon, 08 Aug 2011 17:42:24 GMT</pubDate><guid isPermaLink="false">Created Release: SafeInt 3.0.16 (Aug 08, 2011) 20110808054224P</guid></item><item><title>Released: SafeInt 3.0.16 (Aug 08, 2011)</title><link>http://safeint.codeplex.com/releases/view/71431</link><description>
&lt;div class="wikidoc"&gt;Latest version - see home page for details&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Mon, 08 Aug 2011 17:42:24 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.16 (Aug 08, 2011) 20110808054224P</guid></item><item><title>Updated Release: SafeInt Runtime Tests - 3.0.15 (Jul 30, 2011)</title><link>http://safeint.codeplex.com/releases/view/70955</link><description>&lt;div class="wikidoc"&gt;This release contains the runtime tests for SafeInt. &lt;br /&gt;&lt;br /&gt;When run, it should output:&lt;br /&gt;&lt;br /&gt;Verifying Multiplication:&lt;br /&gt;Verifying Division:&lt;br /&gt;Verifying Subtraction:&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;If it prints &amp;quot;Error in case ...&amp;quot;, then there&amp;#39;s a problem.&lt;br /&gt;&lt;br /&gt;These tests have been validated as of SafeInt version 3.0.15. You will also require SafeInt3.hpp in order to compile.&lt;br /&gt;&lt;br /&gt;Note - compiles with zero warnings at /Wall on Visual Studio 2010. We&amp;#39;re working towards few to no warnings on gcc as well.&lt;br /&gt;&lt;br /&gt;Many thanks to Jeffrey Walton of OWASP for completing MultVerify, DivVerify, and adding the addition, subtraction, increment/decrement and modulus checks. His subtraction test suite found an actual runtime bug in the case of unsigned &lt;i&gt;&lt;/i&gt;int64, signed &lt;i&gt;&lt;/i&gt;int64 when the signed portion is negative.&lt;br /&gt;&lt;br /&gt;Update - 7/31 - added increment/decrement checks.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sun, 31 Jul 2011 18:42:54 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt Runtime Tests - 3.0.15 (Jul 30, 2011) 20110731064254P</guid></item><item><title>Released: SafeInt Runtime Tests - 3.0.15 (Jul 30, 2011)</title><link>http://safeint.codeplex.com/releases/view/70955</link><description>
&lt;div class="wikidoc"&gt;This release contains the runtime tests for SafeInt. &lt;br&gt;
&lt;br&gt;
When run, it should output:&lt;br&gt;
&lt;br&gt;
Verifying Multiplication:&lt;br&gt;
Verifying Division:&lt;br&gt;
Verifying Subtraction:&lt;br&gt;
...&lt;br&gt;
&lt;br&gt;
If it prints &amp;quot;Error in case ...&amp;quot;, then there&amp;#39;s a problem.&lt;br&gt;
&lt;br&gt;
These tests have been validated as of SafeInt version 3.0.15. You will also require SafeInt3.hpp in order to compile.&lt;br&gt;
&lt;br&gt;
Note - compiles with zero warnings at /Wall on Visual Studio 2010. We&amp;#39;re working towards few to no warnings on gcc as well.&lt;br&gt;
&lt;br&gt;
Many thanks to Jeffrey Walton of OWASP for completing MultVerify, DivVerify, and adding the addition, subtraction, increment/decrement and modulus checks. His subtraction test suite found an actual runtime bug in the case of unsigned
&lt;i&gt;&lt;/i&gt;int64, signed &lt;i&gt;&lt;/i&gt;int64 when the signed portion is negative.&lt;br&gt;
&lt;br&gt;
Update - 7/31 - added increment/decrement checks.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 31 Jul 2011 18:42:54 GMT</pubDate><guid isPermaLink="false">Released: SafeInt Runtime Tests - 3.0.15 (Jul 30, 2011) 20110731064254P</guid></item><item><title>Updated Release: SafeInt 3.0.14 (Feb 15, 2010)</title><link>http://safeint.codeplex.com/releases/view/40552</link><description>&lt;div class="wikidoc"&gt;This release adds 64-bit intrinsic function support for the Microsoft x64 compiler, which makes 64-bit multiplication code much smaller and presumably faster. If something like intrinsics (e.g., _mul128) exist for gcc that we can use, please let me know, and I&amp;#39;ll work on adding them.&lt;br /&gt;&lt;br /&gt;It also corrects one more typo in the ill-fated 3.0.13 release that prevents it from compiling for one specific multiplication operation.&lt;br /&gt;&lt;br /&gt;Remaining known work items:&lt;br /&gt;&lt;br /&gt;1) Last time I checked, the version of gcc required by Apple didn&amp;#39;t have sufficiently compliant template support, and won&amp;#39;t compile. I need to merge in the changes that remove portions of the class so it will compile.&lt;br /&gt;&lt;br /&gt;2) We should have a more comprehensive and thorough test harness for all other operations.&lt;br /&gt;&lt;br /&gt;Files:&lt;br /&gt;&lt;br /&gt;SafeInt3.hpp - the main int overflow class&lt;br /&gt;SafeIntGcc.hpp - a header used to get SafeInt3.hpp compiling on gcc 4.3.2 and later&lt;br /&gt;SafeIntTest.cpp - contains the compile-time sanity checks &lt;br /&gt;TestMain.cpp - Calls main() for the run-time sanity checks&lt;br /&gt;MultVerify.cpp - checks 64-bit multiplication operations for both throwing and non-throwing implementations&lt;br /&gt;&lt;br /&gt;Version History:&lt;br /&gt;3.0.13 - contains fixes where some template specializations were overly specialized, which caused problems for the gcc x64 compiler. Also contains a fix for a runtime bug where (int)-1 * (unsigned &lt;i&gt;&lt;/i&gt;int64)0x80000000 failed when it should not have.&lt;br /&gt;3.0.12 - Public branch from the original code that is used internally at Microsoft, numerous fixes needed because the gcc comiler is picky about different things than the Microsoft compiler.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sun, 31 Jul 2011 01:13:03 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.14 (Feb 15, 2010) 20110731011303A</guid></item><item><title>Released: SafeInt 3.0.14 (Feb 15, 2010)</title><link>http://safeint.codeplex.com/releases/view/40552</link><description>
&lt;div class="wikidoc"&gt;This release adds 64-bit intrinsic function support for the Microsoft x64 compiler, which makes 64-bit multiplication code much smaller and presumably faster. If something like intrinsics (e.g., _mul128) exist for gcc that we can use,
 please let me know, and I&amp;#39;ll work on adding them.&lt;br&gt;
&lt;br&gt;
It also corrects one more typo in the ill-fated 3.0.13 release that prevents it from compiling for one specific multiplication operation.&lt;br&gt;
&lt;br&gt;
Remaining known work items:&lt;br&gt;
&lt;br&gt;
1) Last time I checked, the version of gcc required by Apple didn&amp;#39;t have sufficiently compliant template support, and won&amp;#39;t compile. I need to merge in the changes that remove portions of the class so it will compile.&lt;br&gt;
&lt;br&gt;
2) We should have a more comprehensive and thorough test harness for all other operations.&lt;br&gt;
&lt;br&gt;
Files:&lt;br&gt;
&lt;br&gt;
SafeInt3.hpp - the main int overflow class&lt;br&gt;
SafeIntGcc.hpp - a header used to get SafeInt3.hpp compiling on gcc 4.3.2 and later&lt;br&gt;
SafeIntTest.cpp - contains the compile-time sanity checks &lt;br&gt;
TestMain.cpp - Calls main() for the run-time sanity checks&lt;br&gt;
MultVerify.cpp - checks 64-bit multiplication operations for both throwing and non-throwing implementations&lt;br&gt;
&lt;br&gt;
Version History:&lt;br&gt;
3.0.13 - contains fixes where some template specializations were overly specialized, which caused problems for the gcc x64 compiler. Also contains a fix for a runtime bug where (int)-1 * (unsigned
&lt;i&gt;&lt;/i&gt;int64)0x80000000 failed when it should not have.&lt;br&gt;
3.0.12 - Public branch from the original code that is used internally at Microsoft, numerous fixes needed because the gcc comiler is picky about different things than the Microsoft compiler.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 31 Jul 2011 01:13:03 GMT</pubDate><guid isPermaLink="false">Released: SafeInt 3.0.14 (Feb 15, 2010) 20110731011303A</guid></item><item><title>Updated Release: SafeInt 3.0.15 (Jul 24, 2011)</title><link>http://safeint.codeplex.com/releases/view/70612</link><description>&lt;div class="wikidoc"&gt;This release contains several updates that make it work properly with 64-bit gcc, and also contains several fixes that will reduce the warning count on gcc - unimportant warnings were suppressed for the Microsoft compiler, but not for gcc.&lt;br /&gt;&lt;br /&gt;Notable changes - &lt;br /&gt;Some refactoring was done to eliminate compile-time constant conditionals in the various corner case methods, such as division by a SafeInt.&lt;br /&gt;More spots were found where I had over-specified the function argument when the template specialization implied a 64-bit int of some type. These issues occur because 64-bit gcc has 64-bit longs. (Thanks Ahmed for the additional testing).&lt;br /&gt;&lt;br /&gt;The test harness has been greatly extended - many thanks to Jeffrey Walton, and a runtime bug has been found (and corrected) in unsigned &lt;i&gt;&lt;/i&gt;int64, signed &lt;i&gt;&lt;/i&gt;int64 cases where the signed int is negative.&lt;br /&gt;&lt;br /&gt;Future directions - I suspect there will be more warning reduction work needed on gcc, and there should be throw() annotations that understand whether we&amp;#39;re throwing C++ exceptions, or doing something else. If we&amp;#39;re throwing Win32 exceptions, or terminating the app, then SafeInt can be properly used in non-throwing methods without causing warnings.&lt;br /&gt;&lt;br /&gt;Update - 7/25 - &lt;br /&gt;Fixed extra typename instances that didn&amp;#39;t annoy Visual Studio, but did annoy gcc. (More thanks to Ahmed)&lt;br /&gt;Got rid of yet more warnings.&lt;br /&gt;Folded SafeIntGcc.hpp into SafeInt3.hpp.&lt;br /&gt;Added a C_ASSERT to ensure that we&amp;#39;re really dealing with 2&amp;#39;s complement negative numbers.&lt;br /&gt;&lt;br /&gt;An issue that has come up is that gcc might decide at least some of the time that it can optimize away signed integer overflow checks. The source has been reviewed, and most of the addition template specializations are not affected due to a general approach of upcasting, and then checking for the result being out of bounds. Some of them may need to be checked, and we&amp;#39;ll try to create repro scenarios. If there are cases that repro, two things will happen - the first is that an update to the runtime checks will be made to cause them to fail if the compiler is optimizing away the checks. The second is that we&amp;#39;ll attempt to rewrite them in terms of unsigned numbers, which they won&amp;#39;t optimize away. Stay tuned - 3.0.16 may be coming soon.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>dcleblanc</author><pubDate>Sun, 31 Jul 2011 01:12:33 GMT</pubDate><guid isPermaLink="false">Updated Release: SafeInt 3.0.15 (Jul 24, 2011) 20110731011233A</guid></item></channel></rss>